标题: 用汇编语言键盘的查询扫描程序,并用共阳极数码管显示键号,弄了一天了 [打印本页]

作者: huanx    时间: 2017-4-10 13:44
标题: 用汇编语言键盘的查询扫描程序,并用共阳极数码管显示键号,弄了一天了
用汇编语言键盘的查询扫描程序,并用共阳极数码管显示键号,弄了一天了,感觉程序有问题,想着问问大家,大家回我的时候,程序要带解释啊!!谢谢!
作者: zl2168    时间: 2017-4-10 17:30
本帖最后由 zl2168 于 2017-4-10 17:31 编辑

键盘扫描控制方式



以上摘自张志良编著《80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9, 用于学习51单片机原理,程序(双解c和汇编)语句条条有注解,便于阅读理解,便于自学。




作者: zl2168    时间: 2017-4-10 17:33
本帖最后由 zl2168 于 2017-4-10 17:35 编辑

4×4矩阵式键盘
Proteus仿真一下,确认有效。
实例62 4×4矩阵式键盘.rar (44.79 KB, 下载次数: 12)




以上摘自张志良编著《80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9
双解c和汇编程序,语句条条有注解,便于阅读理解,便于自学。





作者: huanx    时间: 2017-4-10 18:04
zl2168 发表于 2017-4-10 17:33
4×4矩阵式键盘
先Proteus仿真一下,确认有效。

       ORG    0000H
       AJMP   KEY2
       ORG    0100H
KEY2:  LCALL  KS
       JNZ    K1
       LCALL  D10ms
       AJMP   KEY2
K1:    LCALL  D10ms
       LCALL  KS
       JNZ    K2
       AJMP   KEY2
K2:    MOV    R2,#0EFH
       MOV    R4,#00H
K3:    MOV    P1,R2
L6:    JB     P1.0,L1
       MOV    A,#00H
       AJMP   LK
L1:    JB     P1.1,L2
       MOV    A,#04H
       AJMP   LK
L2:    JB     P1.2,L3
       MOV    A,#08H
       AJMP   LK
L3:    JB     P1.3,NEXT
       MOV    A,#0CH
LK:    ADD    A,R4
       PUSH   ACC
NEXT:  INC    R4
       MOV    A,R2
       JNB    ACC.7,KEY2
       RL     A
       MOV    R2,A
       AJMP   K3
K4:    LCALL  KS
       JNZ    K4
       POP    ACC
       RET
KS:    MOV    P1,#0FH
       MOV    A,P1
       XRL    A,#0FH
       RET
DISPLAY:MOV   DPTR,#TABLE
        LCALL KEY2
        MOVC  A,@A+DPTR
        MOV   P0,A
                                LJMP  DISPLAY
TABLE:  DB  03FH,006H,05BH,04FH,66H
        DB  6DH,7DH,07H,7FH,6FH
              DB  77H,7CH,039H,05EH,79H
              DB  71H
                                D10ms:         MOV R7,#25
                                D1:     MOV R6,#200
                                DJNZ    R6,$
                                RET
            END
作者: huanx    时间: 2017-4-10 18:06
huanx 发表于 2017-4-10 18:04
ORG    0000H
       AJMP   KEY2
       ORG    0100H

哥!你看我的程序,有问题,但是,我不知道怎么改!!还有就是,您能不能把您做的仿真的程序代码,给我看看啊!
作者: 51Lovers    时间: 2017-4-10 20:10
十年前做过,自己弄好了对汇编大有好处。努力呀,若出现问题出不来,可让高手指点。
作者: ahshmj    时间: 2017-4-10 20:40


你是什么电路?
     ORG    0000H
       AJMP   MAIN
       ORG    0030H
MAIN:
      MOV   A, #0              ;上电显示0
      CALL  DISPLAY
     
LOOP:
       CALL  KEY              ;调用键盘扫描程序
    CALL  DISPLAY        ;调用显示程序
    ......
       JMP  LOOP

显示程序应加上一句:
DISPLAY:MOV   DPTR,#TABLE
         MOV    DPTR,  #TABLE
      ;  LCALL KEY2
        MOVC  A,@A+DPTR
        MOV   P0,A
其余的错的或不适当的自己改一下。尽量的多学习别人的程序,看懂、吃透。                              
        

作者: huanx    时间: 2017-4-10 22:27
ahshmj 发表于 2017-4-10 20:40
你是什么电路?
     ORG    0000H
       AJMP   MAIN

[img]就这个电路
作者: zl2168    时间: 2017-4-10 23:07
本帖最后由 zl2168 于 2017-4-10 23:08 编辑
huanx 发表于 2017-4-10 18:06
哥!你看我的程序,有问题,但是,我不知道怎么改!!还有就是,您能不能把您做的仿真的程序代码,给我看 ...

仿真电路和Hex文件能在高等教育出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
作者: ahshmj    时间: 2017-4-11 14:03
huanx 发表于 2017-4-10 22:27
就这个电路

就是外设和单片机都是怎么连接的,用的是哪些I/O口?
作者: zl2168    时间: 2017-4-11 22:22
电路图都没有,也不知道有几个按键,怎么改???




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1