本帖最后由 不亦心 于 2009-11-10 12:10 编辑
被这个问题折磨的受不了,
问题是:不管定时器初值是什么,second的值是什么,程序每运行131S,second就被赋值为1,(定义second的时候,是赋值为1的)
配置中关了WDT。
配置位见下图,p18f4520的片子,MCC18编译器。
大致程序就像下面。
void timr0 (void)//定时器tmr0中断函数
{
TMR0H=0x0b;
TMR0L=0xdd;
INTCONbits.TMR0IF=0;
++second;
if(second>60) second=1;
}
void main(void)
{
tmr0_init();//初始化
while(1)
{
sec=second;
flag=sec&0x01;
if(sec<=22)
//下面全是对sec等其他变量的操作,没有动过second
}
}
|