初学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; } }
|