第1个回答 2016-06-02
#include <reg52.h>
//点亮八位共阳
unsigned char led=0xfe; //8个bit位的数
unsigned int counter=0;
void time_init()
{
TMOD=0x01;//定时器0,工作模式1,16位定时器
TH0=0xb4;
TL0=0x00; //定时器初始值46080,定时50ms;
EA=1;//开总中断
ET0=1;//开定时器中断
TR0=1;//运行定时器
}
void main()
{
time_init();
for(;;)
{
P1=led;
}
}
void time_inter() interrupt 1
{
IT0=1;//清除中断标志
TH0=0xb4;
TL0=0x00;
counter++;
if(counter==10) //500ms延时
{
counter=0;
led=led<<1;//点亮下一个灯
}
}
//点亮八位共阴
/*
unsigned char led=0x01,led1=0x01; //8个bit位的数
unsigned int counter=0;
void time_init()
{
TMOD=0x01;//定时器0,工作模式1,16位定时器
TH0=0xb4;
TL0=0x00; //定时器初始值46080,定时50ms;
EA=1;//开总中断
ET0=1;//开定时器中断
TR0=1;//运行定时器
}
void main()
{
time_init();
for(;;)
{
P1=led;
}
}
void time_inter() interrupt 1
{
IT0=1;//清除中断标志
TH0=0xb4;
TL0=0x00;
counter++;
if(counter==10) //500ms延时
{
counter=0;
led1=led;
led1=led1<<1;//点亮下一个灯
led=led|led1;
}
}
*/
个人自写,亲试有效。欢迎交流本回答被提问者和网友采纳