论坛中常见的是8位流水灯程序,4位的很少见,而本人近期波及到这种设计,特分享以下程序,大佬飘过,一般学习者请笑纳:
/*****************************************
*实验效果:程序运行后,实现流水灯图形
*****************************************/
#include <REGX52.H> //包含单片机寄存器的头文件
#include<intrins.h>
#define uchar unsigned char
uchar j, num;
void delay(unsigned int xms) //延时x毫秒(ms)
{
unsigned int i, j;
for(i = xms; i > 0; i--)
for(j = 112; j > 0; j--);
}
void main()
{
num = 1;
P0 = 0x01; //P0=0000 0001,对应第1个灯亮
delay(1000); //延迟1秒
while(1) //无限循环,以使led灯持续闪烁,并防止程序跑飞
{
if(num == 1)
{
for(j = 0; j < 3; j++)
{
P0 = _crol_(P0, 1); //左移函数,依次是00000010,00000100,00001000
delay(1000); //延迟1秒
if(P0 == 0x08)
num = 0;
}
}
else
{
for(j = 0; j < 3; j++)
{
P0 = _cror_(P0, 1); //左移函数,依次是0000 0100,0000 0010,0000 0001
delay(1000); //延迟1秒
if(P0 == 0x01)
num = 1;
}
}
}
}
|