书接上回。http://t.csdnimg.cn/4wSSW
目录
一.按下灭,松开亮
二.两个按键控制两个灯
三.点一下灯开,在按一下关
四。优化按键消抖
1.加入bit变量
一.按下灭,松开亮
代码
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^1; // 独立按键
sbit LED = P0^0; // 独立按键
void main()
{
while (1)
{
if(KEY1 ==0)
{
LED = 1;
}
else
{
LED = 0;
}
}
}
实机图
这里用的是K1按钮,想用哪个按钮,就切换到哪个按钮引脚就行。
二.两个按键控制两个灯
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^1; // 独立按键1
sbit KEY2 = P3^2; // 独立按键2
sbit LED1 = P0^0; // 灯1
sbit LED2 = P0^1; // 灯2
void main()
{
while (1)
{
if(KEY1== 0)
{
LED1 = 0;
}
else if(KEY2== 0)
{
LED2 = 0;
}
else{
LED1 = 1;
LED2 = 1;
}
}
}
按住K1,第一个灯亮,按住K2,第二个灯亮。
三.点一下灯开,在按一下关
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^1; // 独立按键1
// sbit KEY2 = P3^2; // 独立按键2
sbit LED1 = P0^0; // 灯1
//sbit LED2 = P0^1; // 灯2
void main()
{
while (1)
{
if(KEY1== 0)
{
LED1 = ~LED1;
}
// else if(KEY2== 0)
// {
// LED2 = 0;
// }
// else{
// LED1 = 1;
// LED2 = 1;
// }
}
}
四。优化按键消抖
解决按键点击过快等问题,
1.加入bit变量
如 bit firstIn = 1;
按下的时候赋值为0,抬起的时候赋值为1
例子如下
if (KEY1 == 0 && firstIn == 1)
{
firstIn = 0;
LED1 =~LED1;
}
if (KEY1 == 1)
{
firstIn = 1;
}
2.加入布尔变量
先引入头文件,我的路径是这样的
-
#include <SiLABS\shared\si8051Base\stdbool.h>
剩下的就同上
bool firstIn = 1;
while (1)
{
if (KEY1 == 0 && firstIn)
{
firstIn = false;
LED1 =~LED1;
}
if (KEY1 == 1)
{
firstIn = true;
}
}