单片机实现4颗灯流水4颗灯闪烁

这个是4颗灯流水的程序 4颗灯闪烁的程序 怎么加进去?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint x)
{
uint y;
for(;x>0;x--)
{
for(y=0;y<125;y++);
}
}
void main()
{
unsigned int j;
while(1)
{
P1=0xfe;
for(j=0;j<8;j++)
{
delay(100);
P1<<=1;
}
P1=0x7f;
for(j=0;j<8;j++)
{
delay(100);
P1>>=1;
}
P1=0xfe;
for(j=0;j<8;j++)
{
delay(100);
P1<<=1;
P1=P1 |0x01;
}
P1=0x7f;
for(j=0;j<8;j++)
{
delay(100);
P1>>=1;
P1=P1|0x80;
}
delay(500);
{
P1=0xaa;
delay(500);
P1=0x55;
delay(500);
}

}
}

你这程序有点复杂了,建议你用这个头文件里的循环左移和循环右移程序;
#include <intrins.h>
_crol_(a, b);和_cror_();
那个闪烁的很简单,希望你仔细想想,不要老想着别人帮,那样学不到东西的,希望对你有帮助吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-21
你的这个是8位流水灯,和8位闪烁啊。我不知道你是不是要这个意思,延时什么的没给你动就主程序动了下,高4位,左右移动,低4位一直同时亮和灭
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uint x)
{
uint y;
for(;x>0;x--)
{
for(y=0;y<125;y++);
}
}

void main()
{
unsigned char i, j;
while(1)
{
/*这部分是P1高4位左移,低4位闪烁*/
i=0xe0;
for(j=4;j>0;j--)
{
i<<=1;
if (P1^0==0)
{
P1=(i|0x0f);
}
else
{
P1=(i&0xf0);
}
delay(100);//延时你自己看着设吧
}
/*这部分是P1高4位右移,低4位闪烁*/
i=0x70;
for(j=4;j>0;j--)
{
i>>=1;
if (P1^0==0)
{
P1=(i|0x0f);
}
else
{
P1=(i&0xf0);
}
delay(100);//延时你自己看着设吧
}
}
}
相似回答