求51单片机按键中断消抖程序 50

我要实现的功能是第一,int0口中断作为按键3个数码管输出显示,按一下显示值加1;第二,由P3.7口输出一个100周期高电平300ms低电平30ms的脉冲。我的硬件与软件... 我要实现的功能是 第一,int0口中断作为按键 3个数码管输出显示,按一下显示值加1;第二,由P3.7口输出一个100周期高电平300ms低电平30ms的脉冲。我的硬件与软件基本做好,差一个消抖功能不行,硬件防抖也做了效果不错但是还是会出现错误,所以加个软件防抖程序:帮我改改下面的程序!谢谢!
我的程序已经写好了,硬件也做好了,就差一个按键防抖功能不知道怎么写,硬件防抖效果不好!帮我改改程序:(防抖延时时间也在里面了)

MOV B,#100
DIV AB
MOV 22H,A
DISPY1:MOV A,22H
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV B,#10
DIV AB
MOV 20H,A
MOV 21H,B
DISPY2:MOV A,20H
MOVC A,@A+DPTR
MOV P2,A
DISPY3:MOV A,21H
MOVC A,@A+DPTR
MOV P1,A
AJMP DISPY
IN0: MOV A,R4
CJNE A,#200,ADD1
AJMP JP1
ADD1: ADD A,#01H
MOV R4,A
JP1: NOP
RETI
DELAY_10MS: ;中断按键防抖时间10MS
MOV R5,#03H
DJNZ R5,$
RET
DELAY_30MS: ;延时30ms
MOV R5,#60 ;1T
D30_1: MOV R6,#248 ;1T
DJNZ R6,$ ;2T
DJNZ R5,D30_1 ;2T
RET ;2T
DELAY_300MS: ;延时300ms
MOV R5,#3
D300_1:
MOV R6,#200
D300_2:
MOV R7,#230
D300_3:
DJNZ R7,D300_3 ;第一层循环
DJNZ R6,D300_2 ;第二层循环
DJNZ R5,D300_1 ;第三层循环
RET
TABLE: DB 0c0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H;0到9译码
RET
END
展开
 我来答
后寻春2B
2013-12-13
知道答主
回答量:4
采纳率:0%
帮助的人:5624
展开全部
用if语句判断一下呗比如
{
if(按键1按下)
{
延时10毫秒;
if(按键1按下)
{
这里写你按键1按下要执行的程序
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长河梦诉
2015-07-27
知道答主
回答量:12
采纳率:0%
帮助的人:4.8万
展开全部
兄弟,学C吧。。。。很多东西包括unity游戏脚本的C#都是和C有共通的,有了C的基础在学C++和C#都是很好上手的。JAVA 除外,JAVA那货和C是反的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tony_sgt
2018-04-09 · TA获得超过8423个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1216万
展开全部
软件消抖就是延时而已,基本上10ms算稍差的,可以再加几次10ms,你的程序虽然是30ms但是确定是30ms吗?现在1T的芯片很多呢,执行效率快,防抖延时都要加大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
q1210274981
2013-12-17
知道答主
回答量:32
采纳率:0%
帮助的人:18.1万
展开全部
建议你做一个松手检测,判断按键松开后再跳出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式