部分代码参考了金沙滩宋老师的代码,如果侵权联系删除
金沙滩51开发板课后作业
4.9
5.独立完成一个左移到头接着右移,右移到头再左移的花样流水灯程序。
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char num; //定义标志位,区分左移右移
void main()
{
unsigned int i = 0; //定义循环变量 i,软件延时
unsigned char cnt = 0; //计数变量 cnt,移位控制
ENLED = 0;
ADDR3 =1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
num =1; //起始设置为左移
while(1)
{
if(num == 1)
{
P0 = ~(0X80 >> cnt); //左移
for(i =0;i<20000 ; i++);
cnt++; //左移加一
if(cnt >=8)
{
cnt=0;
num =0; //切换到右移
}
}
else if(num ==0)
{
P0 = ~(0X01 << cnt);
for(i =0;i<20000 ; i++);
cnt++; //右移加一
if(cnt >=8)
{
cnt=0;
num =1; //切换到左移
}
}
}
}