方法一:
#include<reg52.h>
sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
unsigned int i = 0;
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while(1)
{
P0 = 0xFE;//流水灯倒数第一个亮
for(i=0;i<30000;++i);
P0 = 0xFD;//流水灯倒数第二个亮
for(i=0;i<30000;++i);
P0 = 0xFB;//流水灯倒数第三个亮
for(i=0;i<30000;++i);
P0 = 0xF7;//流水灯倒数第四个亮
for(i=0;i<30000;++i);
P0 = 0xEF;//流水灯倒数第五个亮
for(i=0;i<30000;++i);
P0 = 0xDF;//流水灯倒数第六个亮
for(i=0;i<30000;++i);
P0 = 0xBF;//流水灯倒数第七个亮
for(i=0;i<30000;++i);
P0 = 0x7F;//流水灯倒数第八个亮
for(i=0;i<30000;++i);
}
}
方法二:
#include<reg52.h>
sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
unsigned int i = 0;
unsigned char cnt = 0;
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while(1)
{
P0 = ~(0x01 << cnt)//左移
for(i=0;i<30000;++i);
++cnt;
if(cnt >= 8)
{
cnt = 0;
}
}
}