永发信息网

单片机 按键作为外部中断的输入,怎么使用软件防抖动?c语言,谢谢。

答案:4  悬赏:70  手机版
解决时间 2021-02-08 12:46
我想使用的是外部中断的方式,int0,int1,而不是查询的方式。不好意思啊,都没有我想要的答案,还是要谢谢大家了!

我通过设置下降沿触发,再在中断程序里面加入了延时(通过一次次试验确定的延时大小)解决的抖动问题,暂时就这样子了,能用。
最佳答案
进入中断后,关闭这个外部中断,同时启动一个50ms的定时器,退出这个外部中断。在那个50ms定时到时,判断这个外部中断引脚的电平 ,确定是否为抖动。
全部回答
出个偏招,一般按键时间比抖动时间长吧,你先设置为上升沿触发,中断进入后记个标志,再把中断设置为下降沿触发,这样按键松开时又触发一次,再记个标志。然后又设置上升沿。完成一次按键捕获
主要是时间延迟,一般5ms,下面是我自己写的程序,在实验板上时成功的,你看懂了的话,再在程序里面加个松手去抖,这样会更加完美 #include<reg52.h> #define uchar unsigned char #define uint unsigned int void dlm(); void scan1(); void key(uchar x); void delay(uchar z); uchar temp,num; uchar temp,num,table[17]={ 0x00, 7a64e58685e5aeb931333264643665 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x77, //"A" 0x7C, //"B" 0x39, //"C" 0x5E, //"D" 0x79, //"E" 0x71, //"F" }; void main() { while(1) { P0=0xf0; scan1(); if(num!=0) { P2=table[num]; } } } void scan1() { if(P0!=0xf0) { delay(1); if(P0!=0xf0); { temp=P0; switch(temp) { case 0xe0: {key(0);break;} case 0xd0: {key(1);break;} case 0xb0: {key(2);break;} case 0x70: {key(3);break;} default:P2=0x00; } } } } void key(uchar x) { P0=0xfe; if(P0!=0xfe) { num=1+4*x; } P0=0xfd; if(P0!=0xfd) { num=2+4*x; } P0=0xfb; if(P0!=0xfb) { num=3+4*x; } P0=0xf7; if(P0!=0xf7) { num=4+4*x; } } void delay(uchar z) { uchar x; uint y; for(x=z;x>0;x--) for(y=300;y>0;y--); }
这程序,看着眼熟。 是从那个问题,转载来的? 原题的要求,是什么了,有些忘记了,得再去看看。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泰迪能吃伊利奶片吗
白鸽的品格作文500 字
爱美丽时尚造型我想知道这个在什么地方
公司的银行服务主要分为
中石化和中国移动哪个好
苏州市远帆电器有限公司地址在哪,我要去那里
电影异形契约原声背景音乐叫什么 异形契约电
你好,我想问一下淘宝店铺的分享链接在那里找
宽是什么意思
阿洛地址有知道的么?有点事想过去
夫妻双方离婚小孩给了男方女方还能继续为小孩
烟台开发区今天几点开始赶海
求董贞的歌
一个表面很会说的,很能够讨人喜欢的女孩子,
我有一副别人车上的牌照,车型和我的一样我能
推荐资讯
华茂购物广场这个地址在什么地方,我要处理点
【溘然】溘然怎么读
梦见男朋友有小三
龙宇不锈钢铁艺地址在哪,我要去那里办事
停车场(歌风路)地址在哪,我要去那里办事
秦安县公安局叶堡派出所怎么去啊,我要去那办
调兵山市审计局(调兵山市农机监理所)地址在什
河南专修水箱怎么去啊,有知道地址的么
纸箱面积60*40*40怎么算我不知公式,谁会教我
两个烧杯中分别盛有“娃哈哈”纯净水和食盐水
下列能源资源中,全部属于化石燃料的是 A
求心理学名词解释:信号性反应、诱因、幻觉、
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?