# // 包含51單片機寄存器定義的頭文件
sbit D1=P2^0; //將D1位定義為P2.0引腳
char ; //設置全局變量,儲存定時器T0中斷次數
/**************************************************************
函數功能:主函數
**************************************************************/
void main(void)
{
EA=1; //開總中斷
ET0=1; //定時器T0中斷允許
TMOD=0x01; //使用定時器T0的模式2
TH0=(65536-46083)/256; //定時器T0的高8位賦初值
TL0=(65536-46083)%256; //定時器T0的高8位賦初值
TR0=1; //啟動定時器T0
=0; //從0開始累計中斷次數
while(1) //無限循環等待中斷
;
}
/**************************************************************
函數功能:定時器T0的中斷服務程序
**************************************************************/
void Time0(void) 1 using 0 //“”聲明函數為中斷服務函數,其后的1為定時器T0的中斷編號;0表示使用第0組工作寄存器
{
++; //中斷次數自加1
if(==20) //若累計滿20次單片機定時器里寫程序,即計時滿1s
{
D1=~D1; //按位取反操作,將P2.0引腳輸出電平取反
=0; //將清0,重新從0開始計數
}
TH0=(65536-46083)/256; //定時器T0的高8位重新賦初值
TL0=(65536-46083)%256; //定時器T0的高8位重新賦初值
}
為了方便大家更好的學習單片機定時器里寫程序,暢學電子網特別增加了針對單片機和EDA的公眾號,每天推送相關知識,希望能對你的學習有所幫助!