微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于矩阵键盘的问题,求给位高手给我解答下问题所在。。

关于矩阵键盘的问题,求给位高手给我解答下问题所在。。

时间:10-02 整理:3721RD 点击:
做了一个矩阵键盘程序,要求是当按下对应的键时数码管显示对应的数值0到F,问题在按下按键时数码管无反应
                   ORG 0000H
                   AJMP MAIN
                   NOP
MAIN:           LCALL KEY
                  LCALL DIS
                   AJMP MAIN
KEY:           LCALL KEYY //调扫描键盘
                   JNZ KEY1          //有键按下转KEY1
                   LCALL DEL
                   AJMP MAIN
KEY1:           LCALL DEL  //去抖
                   LCALL KEYY //再检测
                   JZ MAIN          //无键按下转回主程序
KEY0:           JNZ KEY0          //等待释放按键
                   CPL A
                   MOV R3,A
                   LCALL KEY2
KEYY:           MOV P1,#0FH
                   MOV A,P1
                   MOV 30H,A
                   MOV P1,#0F0H
                   MOV A,P1
                   MOV 31H,A
                   ANL 30H,#0FH
                   MOV A,30H
                   ANL 31H,#0F0H
                   ADD A,31H
                   CPL A
                   RET
KEY2:           CJNE R3,#0EEH,KEY3
                   MOV R2,#00H
                   AJMP DIS
KEY3:           CJNE R3,#0EDH,KEY4
                   MOV R2,#01H
                   AJMP DIS
KEY4:           CJNE R3,#0EBH,KEY5
                   MOV R2,#02H
                   AJMP DIS
KEY5:           CJNE R3,#0E7H,KEY6
                   MOV R2,#03H
                   AJMP DIS
KEY6:           CJNE R3,#0DEH,KEY7
                   MOV R2,#04H
                   AJMP DIS
KEY7:           CJNE R3,#0DEH,KEY8
                   MOV R2,#05H
                   AJMP DIS
KEY8:           CJNE R3,#0DEH,KEY9
                   MOV R2,#06H
                   AJMP DIS
KEY18:           AJMP MAIN
KEY9:           CJNE R3,#0DEH,KEY10
                   MOV R2,#07H
                   AJMP DIS
KEY10:           CJNE R3,#0DEH,KEY11
                   MOV R2,#08H
                   AJMP DIS
KEY11:           CJNE R3,#0DEH,KEY12
                   MOV R2,#09H
                   AJMP DIS
KEY12:           CJNE R3,#0DEH,KEY13
                   MOV R2,#0AH
                   AJMP DIS
KEY13:           CJNE R3,#0DEH,KEY14
                   MOV R2,#0BH
                   AJMP DIS
KEY14:           CJNE R3,#0DEH,KEY15
                   MOV R2,#0CH
                   AJMP DIS
KEY15:           CJNE R3,#0DEH,KEY16
                   MOV R2,#0DH
                   AJMP DIS
KEY16:           CJNE R3,#0DEH,KEY17
                   MOV R2,#0EH
                   AJMP DIS
KEY17:           CJNE R3,#0DEH,KEY18
                   MOV R2,#0FH
                   AJMP DIS
DIS:           MOV A,R2
                   MOV DPTR,#DUAN
                   MOVC A,@A+DPTR
           MOV P0,A
                   SETB P2.3
                   CLR P2.3
                   MOV P0,#0FEH
                   SETB P2.2
                   LCALL DEL
                   CLR P2.2
                   RET
DEL:           MOV R7,#50
DEL2:           MOV R6,#100
                   DJNZ R6,$
                   DJNZ R7,DEL2
                   RET
DUAN: DB   3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h
                   END

KEY0:           JNZ KEY0          //等待释放按键
上面这句话会不会就在这里死循环了呀?我看都没有调用什么子程序呢

除了这里,觉得还有什么问题不这程序?

还没太仔细看,你先把这改了吧,没准就对了呢

屏蔽了这句的确对了,这是为什么?等待释放的程序该怎么写,我上一个程序也是像这样去掉这句就对了。能给我写个,检测 去抖 再检测 等待释放的程序参考下不

这句话的意思你明白吗?不等于0就在这死循环了啊
汇编的我没弄过,不过这样也可以了,
更科学的方法是连续取值两次,两次的结果相同才计算

还有这么多人用汇编来写单片机

可能是一开始就找到汇编的程序了,现成的没准

太难了 等高手来         

我是用汇编初学的,前辈多指教

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top