独立按键控制单颗LED灯位移
烧录后只有D1LED灯亮;按按键没有反应
#include <REGX52.H>
unsigned char LEDNum;
void Delay(int t)
{
while(t--)
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
}
void mian()
{
P2=~0x01;
while (1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
if(LEDNum>=8)
LEDNum=0;
P2=~(0x01<<LEDNum);
}
if(P3_0==0)
{
Delay(20);
while(P3_0==0);
Delay(20);
if(LEDNum==00)
LEDNum=7;
else
LEDNum--;
P2=~(0x01<<LEDNum);
}
}
}
#include "STC12C5A60S2.h"//改你的单片机头文件
#include "intrins.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit key_a=P3^1;//定义按键(从左向右)
sbit key_b=P3^0;
#define LED P2//宏定义,把整个P2口定义为LED
void delay(uchar i)
{
while(i--);
}
void main()
{
LED = 0xfe;//如果你的LED灯位高电平发亮,值就是0x01
while(1)
{
if(key_a!=1)//判断
{
delay(500);
if(key_a!=1)//再次判断
{
delay(5000);//
LED = _crol_(LED,1);//LED左移1位,根据LED和管脚匹配,灯右移
while(!key_a);
}
}
if(key_a!=1 || key_b!=1)
{
delay(500);
if(key_a!=1 || key_b!=1)
{
if(key_a!=1)
{
delay(5000);
LED = _crol_(LED,1);
while(!key_a);
}
if(key_b!=1)
{
delay(5000);
LED = _cror_(LED,1);//灯左移
while(!key_b);
}
}
}
}
}
你一个代码太多bug了,没有位定义,也没有按键检测,语法也有错误,构思就不好,一会我给你写这个项目我发你