//功能:实现LED灯闪烁
#include "reg52.h"
#define X 50000 //宏定义一个数,方便修改时间
sbit led_1 = P1^0; //定义P1口的第1位(即P1.0)
unsigned char count; //定义全局变量,不用赋值,默认为0
void init();
void main ()
{
init();
while (1)
{
if(count == 20) //每一秒进入一次if函数
{
count = 0; //count清零,重新开始加
led_1 = ~led_1; //位取反,实现LED等的闪烁效果
}
}
}
void init()
{
EA = 1; //开启中断总开关
ET0 = 1; //开启定时器0中断开关
TMOD = 0x01; //设置定时器0为工作方式1
TH0 = (65536 - X) / 256; //给定时器赋初值
TL0 = (65536 - X) % 256;
TR0 = 1; //使定时器0工作
}
void LED0() interrupt 1 //定时器0中断服务程序
{
TH0 = (65536 - X) / 256; //每次进入中断程序要从初值开始计算,否则会导致计算错误
TL0 = (65536 - X) % 256;
count++; //每进入一次中断程序,count加一
}