【发布时间】:2015-09-04 11:50:35
【问题描述】:
我目前正在使用 3.2768 MHz 振荡器对 PIC16F883 进行编程。我需要在正确的时间让LED 闪烁,但这在这里真的不相关。
问题是已经设置了 Timer0,但它不起作用。我将在这里发布我的代码和初始化,以便您查看:)。顺便说一句,我在 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.
}
}
问题在于它看起来不像计时器正在运行。我现在已经用不同的设置对程序进行了多次模拟,最近一次是在运行中断时打开一个引脚,然后在主程序中再次打开。问题是它从未发生过。我认为计时器没有运行。为什么?
【问题讨论】:
-
如果我没记错你必须设置
T0IE = 1; -
我找到了THIS很好的教程
-
在正确的时间让 LED 闪烁真的是相关的。构建代码时 - 这是您的第一个参考点。在这种情况下,让定时器中断闪烁它。如果看得太快,请使用计数器掩码或从慢速计时器开始。
标签: c timer embedded pic mnemonics