单片机C语言,求帮助,用一个开关控制单一灯的左移右移,开关按下灯右移,正常左移

如题所述

char ledmove[]={0x01,0x02,0x04,0x08};
void set_led(char p,char mode)
{
char ip;
ip = ledmove[p&0x03];
if((ip&0x01)==0) deng1 = 0;//管脚置o置1
else deng1 = 1;
if((ip&0x03)==0) deng2 = 0;
else deng2= 1;
if((ip&0x01)==0) deng3= 0;
else deng3 = 1;
if((ip&0x01)==0) deng4 = 0;
else deng4 = 1;
}
void main()
{
int i;
while(1)
{
for(i=0;i<4;i++)
{ if(anjian==0)//判断按键
setled(i);
else setled(3-i);
delay(1);//移动的速度
}
if(i>=4) i = 0;
}
}
应该是可以实现的吧,你去试试看
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-16
特意帮你写的~~还试过
#include<reg51.h>
unsigned char i,flag,flag1;
sbit zuoyi=P1^0;
sbit youyi=P1^1;
void delay(unsigned int a)
{
while(a--);
}
void keyscan()
{
if(zuoyi==0)
{
delay(500);
if(zuoyi==0)
{
while(!zuoyi);
flag++;
flag1=0;
if(flag>2) flag=0;
}
}
if(youyi==0)
{
delay(500);
if(youyi==0)
{
while(!youyi);
flag1++;
flag=0;
if(flag1>2) flag1=0;
}
}
}
void main()
{
flag=0;
flag1=0;
while(1)
{
keyscan();
if(flag==1)
{
P2=0xfe;
for(i=0;i<8;i++)
{
P2<<=1;
delay(10000);
keyscan();
}
}
if(flag1==1)
{
P2=0x7f;
for(i=0;i<8;i++)
{
P2>>=1;
delay(10000);
keyscan();
}
}
}
}
第2个回答  2013-01-16
一个灯怎么移动