PIC12F509中的TMR0程序计数器,用以下写法(C语言)
...
OPTION=0xC3;/250*16=4MS/
...
IF (TMR0>250)
COUNT++;
...
IF (COUNT>250)
{SECOND++;
COUNT=0;}
...
按照4MS*250=1S则程序实现的是1秒的计时.
但如果在下面程序的情况下:
...
OPTION=0xC3;/250*16=4MS/
...
VOID TM()
{IF (TMR0>250)
COUNT++;
IF (COUNT>250)
{SECOND++;
COUNT=0;}}
...
VOID DELAY()
{UNSIGNED INT I;
I=255;
WHILE(I--);
}
...
VOID MAIN()
{WHILE(1);
{ DELAY();
TM();
DELAY();}}
会出现因为DELAY的时间长而忽略掉某个TMR0的溢出,从而使得SECOND的定时出现误差,这种情况下应该如何处理?特别是当这个DELAY()必须的时候.