
单片机应用,一个键多次按下,能够依次控制红黄蓝绿四个灯控制第一次按下亮红灯然后绿灯依次四下 10
单片机应用,一个键多次按下,能够依次控制红黄蓝绿四个灯控制第一次按下亮红灯然后绿灯依次四下再第五次按下交替闪烁,松开够都熄灭...
单片机应用,一个键多次按下,能够依次控制红黄蓝绿四个灯控制第一次按下亮红灯然后绿灯依次四下再第五次按下交替闪烁,松开够都熄灭
展开
2个回答
展开全部
#include<reg52.h>
typedef unsigned char uint8_t; //定义数据类型
sbit key0 = P3^2;//按键对应的引脚,根据实际情况修改。
sbit led0 = P1^0;//LED 对应的引脚,根据实际情况修改。
sbit led1 = P1^1;
sbit led2 = P1^2;
sbit led3 = P1^3;
#define LED_ON 0 //低电平亮灯,根据实际情况修改。
#define LED_OFF (!LED_ON)
bit changeByKey; //换灯标志位
uint8_t cnt;//亮灯状态寄存器
void delay()//短延时函数
{
uint8_t i = 200;
while(-- i);
}
main()
{
key0 = 1;
changeByKey = 0;
led0 = LED_ON;
led1 = LED_OFF;
led2 = LED_OFF;
led3 = LED_OFF;
while(1)
{
delay();
if(key0)//如果按键松开
{
changeByKey = 1;//按键控制换灯
led0 = LED_OFF; //全部熄灭
led1 = LED_OFF;
led2 = LED_OFF;
led3 = LED_OFF;
}
else//按下
{
if(changeByKey)//松开下次按下才能再次生效
{
changeByKey = 0;
cnt ++;
switch(cnt & 3)
{
case 0:
led0 = LED_ON; //亮灯
break;
case 1:
led1 = LED_ON;
break;
case 2:
led2 = LED_ON;
break;
case 3:
led3 = LED_ON;
break;
}
}
}
}
}
typedef unsigned char uint8_t; //定义数据类型
sbit key0 = P3^2;//按键对应的引脚,根据实际情况修改。
sbit led0 = P1^0;//LED 对应的引脚,根据实际情况修改。
sbit led1 = P1^1;
sbit led2 = P1^2;
sbit led3 = P1^3;
#define LED_ON 0 //低电平亮灯,根据实际情况修改。
#define LED_OFF (!LED_ON)
bit changeByKey; //换灯标志位
uint8_t cnt;//亮灯状态寄存器
void delay()//短延时函数
{
uint8_t i = 200;
while(-- i);
}
main()
{
key0 = 1;
changeByKey = 0;
led0 = LED_ON;
led1 = LED_OFF;
led2 = LED_OFF;
led3 = LED_OFF;
while(1)
{
delay();
if(key0)//如果按键松开
{
changeByKey = 1;//按键控制换灯
led0 = LED_OFF; //全部熄灭
led1 = LED_OFF;
led2 = LED_OFF;
led3 = LED_OFF;
}
else//按下
{
if(changeByKey)//松开下次按下才能再次生效
{
changeByKey = 0;
cnt ++;
switch(cnt & 3)
{
case 0:
led0 = LED_ON; //亮灯
break;
case 1:
led1 = LED_ON;
break;
case 2:
led2 = LED_ON;
break;
case 3:
led3 = LED_ON;
break;
}
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询