查看完整内容
代码有问题,sec就没有赋初值。如果if(sec==2)是正确的,那么代表定时器T1是一个50ms的定时器,刚好2次进入中断处理函数void Timer1(void)后,耗时是100ms,也就是10次/s。
但是假设是11.0592MHz的晶振,一个机器周期=1/11.0592/12=1.08507us
20*1000/1.08507=18432,也就是定时器T1是20毫秒的。所以应该是
if(sec==5)
另外这条语句也要改下:
uchar sec;
uchar sec = 0;