初學51單片機,試利用中斷方式實現閃爍燈,提供源程序供有興趣者試看看!
/************************************************ 顯示效果:P1燈不停的閃爍 ************************************************/ // P1口大約1s置反一次 #include<reg52.h> //包含特殊功能寄存器的定義 #define LED P1 //宏定義LED代表P1 unsigned char ucCount = 0; //定時器初始化子程序 void Init_Timer0(void) { TMOD=0x01; //不影響定時計數器 //使用定時計數器T0(GATE 0,C/T 0, M1 0, M01) //使用模式1, 16位定時器. TH0 = (65536-50000)/256; //數器計數初值設定 TL0 = (65536-50000)%256; EA = 1; //總中斷打開 ET0 = 1; //定時器中斷打開 TR0 = 1; //定時器開關打開 } void main() { Init_Timer0 (); P1 = 0x00; //LED燈亮(依電路板設置) while(1); } //中斷函數 void Timer0_isr(void) interrupt 1 using 1 { TH0 = (65536-50000)/256; //計數器計數初值 TL0 =(65536-50000)%256; ++ucCount; if(19 == ucCount) { LED =~LED; //LED反相燈滅,可以看到閃爍 ucCount = 0; } }
|