单片机STC89C52学习——12 独立按键
汇总:00 单片机STC89C52学习
参考教程:普中科技
1 工作原理
1.1 按键介绍
轻触开关是一种电子开关,按下则开关导通,松开则开关断开。距离长的初始导通,距离短的初始不导通,按下后相反。

1.2 独立按键原理
单片机管脚与GND是距离长的,初始不导通,按下导通。(图中,TXD是P30,RXD是P31)




2 程序:独立按键——K1控制LED指示灯翻转
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led = P2^0;// D1
sbit k1 = P3^1;// K1
void delay (u16 i)
{
while (i --);
}
void key()
{
if (k1 == 0)// 判断是否按下
{
delay(1000);// 约10ms,简单的消抖方法
if (k1 == 0)// 再判断一次
{
led = ~led;
}
while (!k1);// 直到松开按键才继续,不过一直要判断,很占CPU
}
}
void main()
{
while (1)
{
key();
}
}
效果:按下K1,LED1状态翻转。但若以较短时间间隔连续按下两次,有时第二下没反应。
网友评论