单片机流水灯问题_C编程

来源:百度知道 编辑:UC知道 时间:2024/05/19 18:49:08
我有8个发光2级管,我想让两边的灯亮,然后间隔一秒后2个灯望中间流动3次,然后再从中间望两边流动3次,怎么弄?
用C来编
怕没人答,回答好了一定再追50分!!
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay();
void main()
{
uchar temp1,temp2,a,b,c,d;
temp1=0x77;
temp2=0xee;
c=0xf0;
d=0x0f;
P1=0x7e;
delay();
while(1)
{
temp1=_cror_(temp1,1);
a=temp1&c;
temp2=_crol_(temp2,1);
b=temp2&d;
P1=a+b;
delay();
}
}

void delay()
{
uint x,y;
for(x=100;x>0;x--)
for(y=600;y>0;y--);
}

我把我以前写的给你,你自己调试一下看
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uint) ;
uchar temp,i;

void main()
{

while(1)
{
for(b=0;b<2;b++)
{
if(temp!=0x00)
{
temp=0x7f;
P1=temp;
delay(1000);
temp=0x80;

for(i=0;i<7;i++)
{
temp=~_iror_(temp,1);
delay(1000);
P1= temp;
delay(1000);
temp=~temp;
}

}
temp=0xfe;
P1=temp;
delay(1000);
temp=0x01;
for(i=0;i<7;i++)
{
temp=~_irol_(temp,1);
delay(1000);
P1= temp;
delay(1000);
temp=~temp;
}

}

temp=0xff;
P1=temp ;
delay(8000);
temp=0;
delay(1000);
temp=