一种软件去除键抖动的方法

[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)

上一页  [1] [2] [3] [4]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《一种软件去除键抖动的方法》相关文章

分类导航
最新更新
热门排行