标题: 用51单片机中断方式实现闪烁灯 [打印本页]

作者: lon7085    时间: 2018-6-14 16:26
标题: 用51单片机中断方式实现闪烁灯
初学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;
}
}


作者: lon7085    时间: 2018-6-15 22:52
哈哈!不好意思P1 = 0x00;  //LED灯亮(依电路板设置),应修正为LED = 0x00;  //LED灯亮(依电路板设置),不过也会动作,道理就自己想吧!
另外也可不用 #define LED P1 ,直接用P1 = 0x00;后面就需改为P1=~P1;





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1