C - PIC16F883计时器不起作用



我目前正在编程带有3.2768 MHz振荡器的PIC16F883。我需要让一些LED在正确的时间闪烁,但这在这里真的不相关。

问题是已经设置了Timer0,但是它不工作。我将在这里发布我的代码和初始化,以便您可以看到:)。顺便说一下,我在MpLap IDE编程,在普通C与高科技C编译器。

初始化:

T0CS = 0x00;            //Set Timer0 to Timer-Mode
GIE = 0x01;             //Enable all interrupts
PSA = 0x00;             //Prescaler enable
PS0 = 0x01;             //Prescaler set
PS1 = 0x00;             //Prescaler set
PS2 = 0x01;             //Prescaler set

中断服务程序本身:

void interrupt timer()
{
    T0IF = 0x00;             //Reset timer
    millicounter++;          //Add one to the helper variable
    PORTA = 0x00;
    if (millicounter == 25)  //Check if one second has passed.
    {
        millicounter = 0;    //Reset helper variable
        seconds++;           //Add one to elapsed seconds.
    }
}

问题是它看起来不像计时器正在运行。我现在已经用不同的设置模拟了该程序的不同时间,最新的是在中断运行时使引脚打开,然后在主电路中再次打开。问题是这种情况从未发生过。我想计时器坏了。为什么?

已设置全局中断使能位。但是要使定时器中断工作,还需要设置定时器中断使能位(T0IE)。

根据您的定时器寄存器值和晶体频率,"秒"变量将每秒增加256次。也就是说,如果你使用这个"秒"变量来提供闪烁延迟,你的LED点亮时间将大约为3.9毫秒。人眼无法察觉这种快速的闪烁

谢谢你的帮助,我把计时器修好了。我删除了我的整个配置并重写了计时器,现在它工作得很好。我确实有另一个问题,我已经写了一个新的帖子:)如果你想看看它。

新职位

相关内容

  • 没有找到相关文章

最新更新