我是一名学生,目前在学习郭天祥老师单片机的视频,第一次发帖,请教各位大侠:
Q:8个发光二极管组成流水灯,要求每个管亮100ms,从左往右,从右往左,以此循环,流动时让蜂鸣器发出“滴滴”声,自己写了个程序,能够运行,但是感觉很复杂,请教各位大侠能否更简练?(原理图在附件里面)
程序如下:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit lfm=P3^3; //蜂鸣器定P3.3
uchar num;
void delay(uint z);
void main()
{
num=0xfe; //二极管共阳极
while(1)
{
P1=num;
num=_crol_(num,1);
lfm=0;
delay(100);
lfm=1;
delay(100);
if(num==0x7f)
{
num=0x7f;
while(1)
{
P1=num;
num=_cror_(num,1);
lfm=0;
delay(100);
lfm=1;
delay(100);
if(num==0xfe)
break;
}
}
}
}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
} |