找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2930|回复: 1
收起左侧

用51单片机中断方式实现闪烁灯

[复制链接]
ID:284488 发表于 2018-6-14 16:26 | 显示全部楼层 |阅读模式
初学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;
}
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:284488 发表于 2018-6-15 22:52 | 显示全部楼层
哈哈!不好意思P1 = 0x00;  //LED灯亮(依电路板设置),应修正为LED = 0x00;  //LED灯亮(依电路板设置),不过也会动作,道理就自己想吧!
另外也可不用 #define LED P1 ,直接用P1 = 0x00;后面就需改为P1=~P1;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表