led灯实现跑马灯效果,达到设定时间(2秒)两LED灯全部亮起,持续时间1秒,而后重新恢复跑马灯效果;
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
void delay(u16 i) //延时函数
{
u16 x,y;
for(x=i;x>0;x--)
for(y=110;y>0;y--);
}
void Timer0Init() //定时器0初始化
{
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
void main()
{
u16 i;
Timer0Init(); //定时器0初始化
while(1)
{
P0=0x00; //流水灯
for(i=0;i<8;i++)
{
P2=~(0x01<<i);
delay(200);
}
}
}
void Timer0() interrupt 1
{
static u16 i;
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
i++;
if(i>=2000 && i<=3000)
P2=0x00;
}