第1个回答 2010-12-28
/*该程序流水灯有两种模式,顺序左移和顺序右移,独立开关控制*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar tmp,flag;
sbit key1=P3^4;
sbit key2=P3^5;
void delay(uint z);
void led();
void keyscan();
void main()
{
tmp=0xfe;
P1=tmp;
while(1)
{
keyscan();
led();
}
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
flag=1;
while(key1==0);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
flag=0;
while(key2==0);
}
}
}
void led()
{
switch(flag)
{
case 1: {tmp=_crol_(tmp,1);P1=tmp;delay(200);break;}
case 0: {tmp=_cror_(tmp,1);P1=tmp;delay(200);break;}
default: break;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}本回答被提问者采纳