利用按键实现LED灯的循环移位,可根据实际情况修改

利用按键实现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;}
}
}
}
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值