以中斷方式實(shí)現(xiàn)1s定時(shí)
中斷方式比較特殊,需要使用單片機(jī)內(nèi)部的中斷處理機(jī)制,同時(shí)指定中斷函數(shù)。
#include
sbit LED = P0^2;
unsigned int vT = 0;
void main()
{
LED = 0;
TMOD = 0x01;
TH0 = 0x3C; // 計(jì)數(shù)初值3CB0H = 15536 (65536-15536=50000 * 1us = 50ms)
TL0 = 0xB0;
ET0 = 1; // EA即IE^1 等于1時(shí)申請(qǐng)中斷定時(shí)器0中斷打開(kāi)
EA = 1; // 總中斷打開(kāi)
TR0 = 1; // 啟動(dòng)定時(shí)器0
while(1);
}
void MyInterrupt(void) interrupt 1 // 中斷服務(wù)程序
{
vT++;
if (vT == 20) // 20 * 50ms = 1000ms = 1s
{
LED = !LED;
vT = 0;
TH0 = 0x3C; // 恢復(fù)計(jì)數(shù)初值
TL0 = 0xB0;
}
}