初学单片机和C语言,大佬勿喷。
#include <reg52.h>
unsigned int i = 0;
unsigned char cnt = 0; //定义移位的值
unsigned char dir = 0; //定义流水灯方向
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void left() //定义一个左流水函数
{
P0 = ~(0x80>>cnt);
for (i=0;i<30000;i++);
cnt++;
if (cnt>=8)
{
cnt = 0; //此处记得复位cnt值,否则cnt值溢出,只能单向流水
dir = 1;
}
}
void right() // 定义一个右流水函数
{
P0 = ~(0x01<<cnt);
for (i=0;i<30000;i++);
cnt++;
if (cnt>= 8 )
{
cnt = 0;
dir = 0;
}
}
void main()
{
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
if (dir == 0)
{
left() ;
}
else
{
right();
}
}
}