PIC16F883 定时器不工作

PIC16F883 timer won't work

我目前正在编写 PIC16F883 with a 3.2768 MHz oscilator. I need to make some LED 在正确时间眨眼的程序,但这与此处无关。

问题是设置了Timer0,但是不工作。我将 post 我的代码和初始化在这里,所以你可以看到:)。顺便说一下,我在 MpLap IDE 中编程,使用 Hi-Tech 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.
    }
}

问题是计时器看起来不像 运行ning。我现在已经用不同的设置多次模拟程序,最近一次是在中断 运行 时打开一个引脚,然后在主程序中再次打开。问题是它从未发生过。我认为计时器不是 运行ning。为什么?

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

根据您的定时器寄存器值和 crystal 频率,"seconds" 变量每秒递增 256 次。即,如果您使用此 "seconds" 变量来提供闪烁延迟,则您的 LED 点亮时间约为 3.9 毫秒。人眼无法察觉这种快速眨眼。

谢谢你的帮助,我的计时器开始工作了。我删除了我的整个配置并重写了计时器,现在它工作正常。我还有另一个问题,我已经为 :) 写了一个新的 post