利用按键实现LED灯的循环移位,可根据实际情况修改
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;//全局变量
uchar flag1=0;flag2=0;flag3=0;
sbit key1=P3^5;
sbit key2=P3^4;
sbit key3=P3^3;
//毫秒级延时函数定义
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=114;y>0;y–);
}
void keyscan() //按键扫描
{
if(!key1) //按键1按下
{ //延时消抖
delay(10);
if(!key1)
flag1=1;
}
if(!key2) //按键2按下
{
delay(10);
if(!key2)
flag2=1;
}
if(!key3) //按键3按下
{
delay(10);
if(!key3)
flag3=1;
}
}
void main()
{
temp=0xfe;
P1=temp;
while(1)
{
keyscan(); //按键扫描
if(flag1)
{
while(1)
{temp=cror(temp,1); //循环右移
delay(100);
P1=temp;
delay(50) ;
keyscan();
if(flag2||flag3){flag1=0;break;} //若有其它按键按下 ,响应其它按键
}
}
if(flag2)
{
while(1)
{ temp=crol(temp,1); //循环左移
delay(100);
P1=temp;
delay(50);
keyscan();
if(flag1||flag3){flag2=0;break;}
}
}
if(flag3)
{
while(1)
{ P1=0xff; //亮灭闪烁
delay(200);
P1=0x00;
delay(120);
keyscan();
if(flag1||flag2){flag3=0;break;}
}
}
}
}
利用按键实现LED灯的循环移位,可根据实际情况修改
最新推荐文章于 2024-06-05 15:05:46 发布