单片机按键延时,使用定时计数器消除按键延时,求操作流程

如题所述

嘿嘿 俺来帮你解答
1 按键处理的操作流程:
当发现有键按下时, 为了消除按键的抖动 需要软件延时5~10ms
经过延时后 再读入按键的状态 如果按键有效 则进入相应的按键处理程序
否则(按键无效)可以视为干扰。
2 一般都是采用软件延时(即调用一个延时子程序 延时5ms )
不要使用定时计数器来延时 会浪费单片机的硬件资源。

呵呵 满意 就选满意回答追问

我的意思是我按一下按键液晶显示屏上的数字没反映,需要长时间按住按键才有反映,我想要得到按一下就立刻得到反映的结果该怎么处理,老师说可以用定时器,但是我不知道该怎么具体操作,求流程。

追答

不是用定时器 是用外部中断 当按键按下时 可以马上申请中断 能及时处理

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-30
按键程序中,使用计数方式可以做到:消抖、按下识别、弹起识别,连续有效等等。
好处:用时间短,可以和其它功能程序同时运行,可以实现多种功能。
缺点:需要花费内存空间。功能越多,需要内存越多。
方法:每10ms扫描一次按键状态,按键为按下状态时,计数值加1,反之,计数清零。当计数累加到3时,说明,已经连续按下30ms时间,可认为,按键按下。为防止计数值溢出,最好加到比3大1就停止加。这个计数值,就需要一个全局变量来做,即需要花费内存资源。
识别弹起状态,用同样的方法即可,需要增加一个全局变量。
第2个回答  2012-10-30
void t0_isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256; //10ms中断一次
KEYPORT=keyscan; //键盘扫描码送键盘口
keyval=KEYPORT; //读键值
num++; //中断次数+1
if(keyval==keytm) //如果该次键值与上次键值一致
{
if(num>2) //三次键值相同
{
num=0;
flag=1;//键值有效标志
}
}
keytm=keyval; //键值赋值给键值暂存
}
第3个回答  2012-10-30
不太明白意思,是指的按键长按功能吗,个人觉得这样能实现:按下按键后,启动定时器,然后while(标志位)等待就可以了。用定时器中断置位标志位即可。

单片机按键延时,使用定时计数器消除按键延时,求操作流程
1 按键处理的操作流程:当发现有键按下时, 为了消除按键的抖动 需要软件延时5~10ms 经过延时后 再读入按键的状态 如果按键有效 则进入相应的按键处理程序 否则(按键无效)可以视为干扰。2 一般都是采用软件延时(即调用一个延时子程序 延时5ms )不要使用定时计数器来延时 ...

单片机C语言延时程序,延时时间是怎样计算的
具体而言,执行前从零开始计数启动定时器,随后使用特定参数k调用delay函数,再在返回后检查定时器计数值T。公式为T = tc * k * t0,其中tc表示每次调用都包含的调用开销,t0表示k=1时去除调用开销后的循环体执行时间。通过给定两个不同的k值得到两个不同的T值,可以确定参数tc和t0。接下来,根据...

单片机按键控制LED延时比如按下按键5秒,LED在按下按键时就亮5秒,松...
我也建议用定时器计时,用中断处理按键 还有一个疑问 如果按下,LED点亮,不足5秒,比如3秒。此时释放按键的话,你需要怎么反应 是在3秒的基础上重新计时5秒后熄灭么

单片机系统的晶振频率为12mhz,分别用软件延时方法和定时器\/计数器t1实...
参考吴鉴鹰吧里面的一篇文章:延时的使用方法,讲得比较详细

51单片机实验(关于定时器计数器)
计数器设定用硬件方式,提议T0定时,T1计数T0的定时跳变信号P1.0的跳变次数,计... 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数器结合。计数器设定用硬件方式,提议T0定时,T1计数T0的定时跳变信号P1.0的跳变次数,计满五个跳变一秒,即T0定时为200ms。T0长时间定时...

51单片机LED延时闪烁delay(50000); 用定时器延时代替delay(50000)延时怎...
void init() { TMOD = 0x01; \/\/设置定时器0,GATE = 0, C\/T = 0 , M1M0 = 01(方式1,16位定时器\/计数器)\/\/赋初值 TH0 = THx;TL0 = TLx;EA = 1; \/\/中断总闸·开!ET0 = 1; \/\/定时器0中断·开!TR0 = 1; \/\/定时器0·运行!} \/\/定时器0的中断函数:由定时器中断...

51单片机中 怎么得到精确延时?
1 使用定时器\/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现...

单片机的多个延时用定时器如何处理?
用定时器,定时1ms,每当到了、中断,就把 n1、n2、n3,分别加一,然后退出中断。在主函数中,分别检测n1、n2、n3是否到了50、30、60,到了,就该干什么就干什么去。用一个定时器,基本就可以满足所有的定时需求。

单片机 编写延时一分钟程序 fosc=6Mhz
1 使用定时器\/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极...

单片机控制继电器定时开关的程序流程
同样分计数器如大于59则为时计数器加1,同时分计数器清0,时计数器如大于23则清0并转出中断服务。T0中断100次的时间刚好为1秒钟。 (2)主程序上电复位过程:首先P0~P2口全部置1,P3口高5位置1,低3位置0。设置定时器T0工作于16位计数器模式,并赋初值TH0=0DCH,TL0=00H,关闭外部中断和串行口中断,时间计数器...

相似回答