一种软件去除键抖动的方法
[09-12 17:48:42] 来源:http://www.88dzw.com 单片机学习 阅读:8335次
文章摘要:在实际应用中,1个比特表示1个键。C51中的字符变量可以处理8个键,如果系统需要更多的键,可选用整型变量、长整型变量或数组。如果系统的按键数量过多,则会占用较多单片机宝贵的内部寄存器,这是该方法的不足之处。三.应用程序实例为了进一步理解上述方法如何在编程中得以实现,在此提供了1个用C51单片机编程语言编制的8个按键的键处理程序,以供参考。该程序在KEIL C51 V6.02/uVsion2 demo编译环境下编译通过。#include<intrins.h>#include<at89x51.h>unsigned char key_value;unsigned char K
一种软件去除键抖动的方法,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com在实际应用中,1个比特表示1个键。C51中的字符变量可以处理8个键,如果系统需要更多的键,可选用整型变量、长整型变量或数组。如果系统的按键数量过多,则会占用较多单片机宝贵的内部寄存器,这是该方法的不足之处。
三.应用程序实例
为了进一步理解上述方法如何在编程中得以实现,在此提供了1个用C51单片机编程语言编制的8个按键的键处理程序,以供参考。该程序在KEIL C51 V6.02/uVsion2 demo编译环境下编译通过。
#include<intrins.h>
#include<at89x51.h>
unsigned char key_value;
unsigned char Kinput;
unsigned char Ktemp;
unsigned char Kstore;
unsigned char Kready;
unsigned char Koutput;
unsigned char bdata flag;
code unsigned char Kconst=0xaa; /*重复键和非重复键格式*/
sbit endebounce=flag^0;
sbit getkey=iag^1;
sbit kprocess=flag^2;
sbit ACC_7=ACC^7;
void main(void);
void debounce(void);
void get_key_value(void);
void main(void)
{
/*初始化*/
kinput=Ktemp=kready=Kstore=0;
endebounce=0;
getkey=0;
kprocess=0;
TMOD=0x01;
TL0=0xe0;
TH0=0xb1;
TR0=1;
ET0=1;
EA=1;
/*……*/
while(1)/*循环*/
{
debounce();/*调用去除键抖动函数*/
get_key_value();/*调用获取键值函数*/
key_processing();/*调用键处理函数*/
/*other functions*/
}
}
void debounce(void)
{
if (endebounce)
{
/*以下是去除键抖动表达式*/
Kreqdy=Ktemp & Kinput Kready & (Ktemp^Kinput);
Ktemp=Kinput;
/*以下表示式用于输出重复键和非重复键*/
Koutput=Kready &(~Kstore Kconst);
Kstore=Kready;
if (Koutput ! =0)/*如果有键按下,置标志准备获取键值*/
getkey=1;
}
}
void get_key_value(void)
- 上一篇:单片机系统中的汉字显示
《一种软件去除键抖动的方法》相关文章
- › 一种软件去除键抖动的方法
- 在百度中搜索相关文章:一种软件去除键抖动的方法
- 在谷歌中搜索相关文章:一种软件去除键抖动的方法
- 在soso中搜索相关文章:一种软件去除键抖动的方法
- 在搜狗中搜索相关文章:一种软件去除键抖动的方法