|
發布時間: 2022-11-16 15:49
正文摘要:定時器及中斷設計電路如圖所示,可以看到使用兩個數碼管來顯示。實現百秒之內的正計時器(如17秒),到達17秒LED閃一下計時結束,數碼管實時顯示正計時值。 仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載 ... |
|
用定時器中斷計數可以實現任意時間定時,無論是秒、分鐘、小時、天、月都沒有問題的。這是基本功。 例如: void T0INTinit() //定時器T0初始化 { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; //50ms EA=1; //開總中斷 ET0=1; //開定時器0 TR0=1; //開始計時 } void T0INT() interrupt 1//50ms定時器中斷 { static unsigned int m,s0,fen0,h0,day0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; m++;// if(m>=20) { s0++; s++;//秒變量,需要定義成全局變量 m=0; } if(s0>=60) { fen0++; fen++;//分鐘變量,需要定義成全局變量 s0=0; } if(fen0>=60) { h0++; h++;//小時變量,需要定義成全局變量 fen0=0; } if(h0>=24) { day0++; day++;//天變量,需要定義成全局變量 h0=0; } if(day0>=30) { yue++;//月變量,需要定義成全局變量 day0=0; } } |