专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

用查询定时器0溢出标志位的方式实现LED灯闪烁

作者:佚名   来源:本站原创   点击数:  更新时间:2009年06月21日   【字体:

接下来几篇文章,我来给大家一些单片机控制led灯的程序,都有详细的注释,有错误的话请大家指点。
用查询定时器0溢出标志位的方式实现LED灯闪烁。
用定时器0实现P2_0所接LED灯每60ms亮或灭一次,设系统晶振为12MHz。该例子中采用查询定时器0溢出标志位的方法,若是溢出标志位为1,则执行P2_0引脚取反的语句,使LED灯闪烁。源程序如下:
//程序出自51hei单片机
#include "reg51.h"  //头文件
sbit P2_0=P2^0;    //定义P2_0为P2口的0引脚
void main()  //主函数
{P2=0xff;   //熄灭所有LED灯
TMOD=0x01;  //定时器模式1,16位计数
TH0=0x15;   //设置计数初值5536,则计数值为60000,对于12M时钟,相当于60ms
TL0=0xa0;   //设置定时器低8位
TR0=1;    //启动定时器0
for(;;)   //无限循环
{if(TF0)  //查询定时器0溢出标志位,如果溢出标志位为1,则执行如下语句
{TF0=0;   //清零标志位
TH0=0x15; //重置定时器高8位
TL0=0xa0; //重置定时器低8位
P2_0=!P2_0;  //将P2_0引脚取反,LED灯闪烁
}}}

--
P3.4~7引脚相连的按键控制P2.0~3连接的LED灯。
#include <AT89X51.H>
unsigned char temp;   //定义变量temp
void main(void)      //主函数
{
while(1)    //无限循环
{temp=P3>>4;  //将P3口右移4位
temp=temp | 0xf0;  //将P3口的低4位送temp
P2=temp;           //将P3口的低4位送P2口
} }

关闭窗口

相关文章