单片机LED流水灯程序精简 #include<reg52.h> #include<intrins.h> unsigned void delay(i) i=50000;

while(i){i--}
while(1){
P0=0xdf;
delay();
P0=0xef;
delay();

P0=0x7f;
delay();
P0=0xbf;
delay();
P0=0xf7;
delay();
P0=0xfb;
delay();
P0=0xfd;
delay();
P0=0xfe;
delay();

第1个回答  2012-10-02
//实例6:使用P3口流水点亮8位LED
#include<reg51.h> //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/

void delay(void)
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
;
}
/*******************************************************
函数功能:主函数
********************************************************/
void main(void)
{
while(1)
{
P3=0xfe; //第一个灯亮
delay(); //调用延时函数
P3=0xfd; //第二个灯亮
delay(); //调用延时函数
P3=0xfb; //第三个灯亮
delay(); //调用延时函数
P3=0xf7; //第四个灯亮
delay(); //调用延时函数
P3=0xef; //第五个灯亮
delay(); //调用延时函数
P3=0xdf; //第六个灯亮
delay(); //调用延时函数
P3=0xbf; //第七个灯亮
delay(); //调用延时函数
P3=0x7f; //第八个灯亮
delay(); //调用延时函数
}

}

网上找一下:
单片机宝典从硬件到软件 可以参考一下里面的很多例子
第2个回答  2012-10-02
贴个完整的,看起来太乱了
第3个回答  2012-10-02
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uint x)
{
uint i;
for(i=0;i<x;i++);
}
main()
{
uchar led,i;
while(1)
{
led=0xef;
for(i=0;i<8;i++)
{
P0=led;
led=led>>1;
led&=0x80;
delay(50000);
}
}追问

精简

追答

这还不够精简?这已经是最少的代码了。

追问

用“>>”或“<<”精简

追答

上面程序不就是用的“>>”吗?
led=led>>1;

本回答被提问者和网友采纳
相似回答