2017.07.26 程序笔记
今天思考一个关于按键的程序:结构体如下
if(PC_Get_Key(&key)==TURE)
{
if(key==0x1B)
{
PC_DOSReturen();
}
}
思考了一下,这个可以作为电堆按键检测的一个大体的框架,结合基本的按键处理程序,就可以实现功能
If(0 == io_KeyEnter) //如果有键按下了
{
Delayms(20) ; //先延时20ms避开抖动时期
If(0 == io_KeyEnter) //然后再检测,如果还是检测到有键按下
{
return KeyValue ; //是真的按下了,返回键值
}
else
{
return KEY_NULL //是抖动,返回空的键值
}
while(0 == io_KeyEnter) ; //等待按键释放
}
下面是基本的C51处理按键的一部分
因为51单片机I/O口内部结构的限制,在读取外部引脚状态的时候,
需要向端口写1,在51单片机复位后,不需要进行此操作也可以进行读
取外部引脚的操作。因此,在按键的端口没有复用的情况下,可以省略此
步骤。而对于其它一些真正双向I/O口的单片机来说,将引脚设置成输入
状态,是必不可少的一个步骤。
//初始化引脚为输入
void KeyInit(void)
{
io_key_1 = 1;
io_key_2 = 1;
io_key_3 = 1;
io_key_4 = 1;
}
//根据按键硬件连接定义按键键值
#define KEY_VALUE_1 0x0e
#d

这篇博客记录了2017年7月26日作者对于一个按键程序的思考,涉及程序结构体的设计和实现。
最低0.47元/天 解锁文章
2966

被折叠的 条评论
为什么被折叠?



