查看完整內容
代碼有問題,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;