请各位大侠帮忙写一个3*4键盘消抖程序(汇编语言)

作者&投稿:林屈 (若有异议请与网页底部的电邮联系)
单片机键盘消抖,用延时消抖,汇编语言~


RESTART:
JB START,$ ;第一次检测(检测的位置在抖动的过程中)
DELAY(延时程序) ;延时消抖
JB START,RESTART;再次检测(检测位置在稳定阶段)
……
第一次检测有可能会检测到抖动的波峰“尖点”处,信号为1,此时第一条语句会原地踏步,不往下执行,直到检测到波谷“地点”处,信号为0,才开始执行第二条语句,调用延时子程序,延时子程序会持续一段时间(当然这时间自己定,大概就行),来到第三条语句,再次检测信号(稳定阶段),信号为0(前后检测一致),继续往下执行……如果第二次检测是高电平1,说明(①按键没有被按下,只是信号单纯地抖动而已)或者(②延时太短,第二次检测的位置还在前沿抖动阶段)或者(③延时太长,检测位置在后沿抖动阶段)此时就执行跳转回RESTART,继续重新扫描信号,看按键有没有被按下。
看了n多解释,没有一个是我(新手)觉得通俗易懂的,想了很久才恍然大悟,虽然是18年提出的问题,还是希望能帮助到不理解的同学。不喜勿喷,谢谢!

这个简单,我来好了:
ORG 0000H
AJMP MAIN
ORG 0010H
MAIN:MOV P0,#0FFH ;给按键接口赋高电平
MOV A,P0 ;假设P1.0是开,P1.1是关开关
SUBB A,#FE
ACALL DELAY ;去抖
JZ RUN
SUBB A,#FD
ACALL DELAY ;去抖10MS
JZ STOP
SJMP MAIN
RUN: MOV P2,#0FEH ;假设P2.0是控制口,低电平开
SJMP MAIN
STOP: MOV P2,#0FEH ;假设P2.0是控制口,高电平关
SJMP MAIN
DELAY: MOV R7,#08H
DELAY1:MOV R6,#0FFH
DELAY2:DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
END

AA: MOV DX,C8255
MOV AL,00H
OUT DX,AL ;键盘行线输出全"0"(3行)
MOV DX,B8255
IN AL,DX ;读入键盘列线(4列)
AND AL,0FH
CMP AL,0FH
JZ AA ;无键按下继续扫描
MOV CX,0000H
AA1: NOP
NOP
LOOP AA1 ;延时
IN AL,DX
AND AL,0FH
CMP AL,0FH
JZ AA ;再次判断,无键按下继续扫描


...明白了一个道理的作文。我初一。 各位大侠帮帮忙!今天下午3点前,谢...
一天,一个盲人带着他的导盲犬过马路时,一辆大卡车失去控制,直冲过来,盲人被当场撞死。他的导盲犬为了守卫主人,也一起惨死在车轮底下。 主人和狗到了天堂门前。 一位天使拦住他俩,为难地说:“对不起,现在天堂只有一个名额了,你们两个中必须有一个去地狱。” 主人一听,连忙问:“我的狗又不...

作文 我是一个XXX谜 500字 求各位大侠一定要帮帮忙啊!!!
妈妈不慌不忙地拿起一个羽毛球拍和羽毛球,给我做了一个示范:只见妈妈把球轻轻向上一抛,然后轻描淡写地挥了一下拍子,球便立即飞了出去。我看呆了,真不知道妈妈是怎么打出去的。这时,妈妈递给我另一个羽毛球拍和羽毛球,让我也学着她的样子打球。而此刻的我,才意识到看起来那么好使的拍子到...

各位路过的大侠帮忙找一个反腐倡廉的文章!
各位路过的大侠帮忙找一个反腐倡廉的文章! 最近领导逼着我去演讲,题目是什么“反腐倡廉”。还要求有煽动性的,要激昂澎湃的!我苦思冥想了两天还是寻不到章法,后天就等着比赛了。我实在是没法子只好来广阔天空下跟各位走过的... 最近领导逼着我去演讲,题目是什么“反腐倡廉”。还要求有煽动性的,要激昂澎湃的!

...括号里填“一个古人的名字”,各位大侠帮帮忙!小弟在这里感激不尽...
我对( )的尊敬 | 一篇作文 , 括号里填“一个古人的名字”,各位大侠帮帮忙!小弟在这里感激不尽!1个回答 #热议# 孩子之间打架 父母要不要干预?425482623 2012-02-03 · TA获得超过6.6万个赞 知道大有可为答主 回答量:5778 采纳率:46% 帮助的人:2757万 我也去答题访问个人页 关注 展开全部 ...

...想写一首藏头诗(我觉得春桃挺好的)。各位大侠。拜托
我思全盛际 觉欣欣桃李 得意正当年 春风会人意 桃李学仙家 挺身卫金璧 好景得天然 的确有见地 我心情悠悠 觉海名善泅 得时为鸣凤 春风海上楼 桃花芳意嫩 挺子逐溪流 好景从来少 的可认真修 我生雅志泉石间 觉海波深浸白蟾 得意何殊少年乐 春风佳丽好盘桓 桃花已作东风笑 挺挺霜松傲岁寒 ...

小华上课时突然晕倒,为此展开想象写一篇600字作文,各位大侠帮帮忙...
小华虽然明白不吃早餐不好,但是,每天三元钱,两个月就是一百多块啊!最近,小华在报纸上了解到了贫困山区的情况,参加了报纸上的“手拉手,一帮一”的活动。小华帮助的人是一个和他一般大小的小男孩,小男孩家里很穷,冬天到了,他们连一双保暖的鞋子、一件保暖的衣服都没有,他们的手都生了很...

跪求各位大侠帮帮忙,明天就要交英语作文了,可是还没有头绪,求各位帮帮...
很辛苦的,忘多加点分 A strong commitment to technological progress will not of necessity cause a society to neglect other values. Historical analysis coupled with that of current societal trends bear witness to this fact.During the 18th and 19th centuries Great Britain drastically ...

...老师让我们写一份不玩电脑的保证书,请各位大侠给我一份,给分_百度...
做为学生本应该听从老师教导,服从老师的安排,尊师重教.而我这种表现,给同学们带了一个坏头,不利于学校学风建设 老师是多么关心我们.爱护我们!而我却给老师找烦恼,添麻烦,所以我今后要遵守学校规定,听老师的话,充分领会理解老师对我的要求,并保证不会(有类似)的事情发生.希望老师给我改过自新的...

我想写首诗,但有几个词不会用,希望各位大侠不吝赐教!谢谢…
更被夕阳江岸上,断肠烟柳一丝丝。远望 【唐】元稹 满眼伤心冬景和,一山红树寺边多。仲宣无限思乡泪,漳水东流碧玉波。和三乡诗 【唐】高衢 南北千山与万山,轩车谁不思乡关。独留芳翰悲前迹,陌上恐伤桃李颜。乡思 【唐】薛涛 峨嵋山下水如油,怜我心同不系舟。何日片帆离锦浦,棹声齐唱发...

日语问题 到了毕业的季节,求各位大侠帮忙用日语写几句临别赠言吧,拜托...
1.多谢你一直以来的照顾 今(いま)まで本当(ほんとう)にお世话(せわ)になりました。2.祝你前程似锦(就表达这个意思就行了,美好的未来之类的)绝対(ぜったい)良(い)い未来(みらい)が待(ま)っているよ。3、保持联系呀 连络(れんらく)しようね。4.别忘了我呀 私(わ...

雁江区15870641016: 单片机中4x4键盘如何消抖 -
鬱枫盐酸: 加延时程序 if(k1 == 0) { delay(10); if(k1 == 0) { //加入要执行主体就行了 } }

雁江区15870641016: 单片机消抖延时程序 -
鬱枫盐酸: #include<reg52.h>bit KEYFlag = 1; //指示按键状态,'1'为弹起态,'0'按下态/********************************按键去抖 *********************************/ void KEYDelay() {unsigned char i = 200;while(i--); } /********************************键翻译 *******...

雁江区15870641016: 按键消抖 请大侠帮帮忙!帮我写个消抖的程序!非常的感谢! -
鬱枫盐酸: /********************************************* 名称:键盘扫描子函数 功能:在按键稳定期内判断键值,并返回键值**********************************************/ uchar keyscan(void) { static char key_state = 0; static char key_value = 0; uchar key_press, key_...

雁江区15870641016: 求C51编程的键盘消抖代码优化: 以下键盘扫描方式该如何消抖? - --> Delay(ms)要放在哪里呢? 谢过~~~! -
鬱枫盐酸: if(P3!=0x0f) //如果有键按下了 { ****************************** delay(10); //10ms消抖 if(P3!=0x0f) //如果确实有键按下了 { while(P3!=0x0f); //判断按键是否弹起来,弹起来了就继续执行下面的语句,否则则一直循环到弹起来 temp = P3^0x0f; //异或,把相异的一行变成1,其它全为0 switch(temp) //判断是哪行有键按下了(0-3行) ... } }

雁江区15870641016: 各位大神、谁能给解释下如何实现按键消抖(verilog语言实现),最好给发个按键控制数码管显示程序. -
鬱枫盐酸: 首先要知道什么是按键抖动,按键有很多种的,比如按一次高低电平变换一次或者按下去是一个电平放开是另一个电平,不管哪种情况,在电平从一个状态转换程另一个状态时,在很短的时间内并不是从0(1)直接变成1(0)这么简单,这中间会有抖动,就是在这两个状态中来回的转变的过程,这个时间普遍被认为是10ms(还是10us?),所以为了消除这个抖动才设计的按键消抖,更具不同的需要,时钟的精度,有很多种消抖的方法,主要的思想都是排除这短暂时间内电平变换的,如果时钟要求不高的话,可以在第一个电平抖动的时候触发一个计数器(计时10ms后),在判断电平状态,如果和之前的相同表示是抖动,电平不变,如果和之前的相反表示按键,这是一个很简单的方法

雁江区15870641016: 单片机矩阵键盘有消抖感觉没有消抖一样是怎么回事? -
鬱枫盐酸: 消抖只能消去“沿”的抖动,如果你的键盘处理方式是检测低电平的话,延时消抖效果不是很好的,你需要加一个“键抬起”处理,即当消抖完成后判定有键按下,那么就等键抬起,才认为键有效的处理方式.

雁江区15870641016: 我想做一个按键消抖,那个朋友方便进来给说下 -
鬱枫盐酸: 用状态机+定时器的方法吧.我前几天还一直在研究这个按键消抖的问题呢.贴一小段程序你看看吧#include<reg52.h>#include"const.h"#include"Timer.h"#include"Display.h" sbit key1=P3^4; uchar GetKey() { uchar keyRetu=0; //返回的按...

雁江区15870641016: 单片机按键消抖无延时的算法 -
鬱枫盐酸: 这个运用了状态机.、状态转移.状态1,是否有按键按下,有则转到状态2 状态2,判断按键值,并转移到状态3 状态3,等待按键释放,释放完毕则转回状态1,等待按键按下!

雁江区15870641016: 设计一个3 行*4列的矩阵键盘,采用行扫描法编写程序,当有按键动作时,能够获得按键 -
鬱枫盐酸: 坚决拿下这200分!这是个完整的程序,包括输入和输出部分.#include<iostream> using namespace std; int main() { int a[4][5]=; int i,j,temp,*p; //输入 cout<<"请输入一个4行5列的矩阵:"<<endl; for(i=0;i<4;i++) for(j=0;j<5;j++) cin>>a[i][j]; //冒...

雁江区15870641016: 懂单片机的大侠请进. 下面是单片机按键的消抖方法.没有看懂,麻烦大家讲解一下 -
鬱枫盐酸: #include<AT89X51.h> //包含AT89X51头文件#define uchar unsigned char #define uint unsigned int //宏定义,不多说..sbit key=P3^3;//定义键盘按键key,连接在P3.3引脚上 void main(void) {uint n=0; bit flag; while(1) { if(P1_7==0) { n++; if(n>300) { flag=1;} } else n=0; if(flag&P1_7==1) { flag=0; P3_7=~P3_7 老板来了不多说了,回头你追问我..

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网