在KEIL软件中建立51单片机工程,要求每隔500ms点亮上题中1个led灯,依次完成8个led灯点亮过程

如题所述

第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;
}
}
*/

个人自写,亲试有效。欢迎交流本回答被提问者和网友采纳
相似回答