导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请各位大哥帮小弟指点一下[ruiyiqiang]

 *第38767篇: 请各位大哥帮小弟指点一下

  
楼 主:ruiyiqiang 2006年3月26日13:01
 请各位大哥帮小弟指点一下
请大家帮小弟看看,本人最近在做一个数字温度计,下面是显示和键盘程序,但是键盘按下老是没反应的,显示不了什么东西出来,显示只是闪去了一下就灭了,还自动复位。请个位帮忙分析一下,本人用的是共阳管,位选和段选都有反向驱动,谢谢


DIR:  MOV   R0,#7EH       ;指向缓冲区末地址
                   MOV   A,#FEH        ;扫描字,PA5为1,从左至右扫描
             LOOP: MOV   R2,A          ;暂存扫描字
                   MOV   DPTR,#7102H   ;指向8155的PB(位选)
                   MOVX  @DPTR,A       ;输出位选码
                   MOV   A,@R0         ;读显示缓冲区一字符
                   MOV   DPTR,#PTRN    ;指向段数据表首地址
                   MOVC  A,@A+DPTR     ;查表,得段数据
                   MOV   DPTR,#7101H   ;指向8155的PA口(段选)
                   MOVX  @DPTR,A       ;输出段数据
                   CALL  D1MS          ;延时1MS
                   DEC   R0            ;调整指针
                   MOV   A,R2          ;读回扫描
                   CLR   C             ;清进位标志
                   RLC   A             ;扫描字左移
                   JNC    PASS          ;结束
                   AJMP  LOOP          ;继续显示
             PASS: RET                 ;返回
             D1MS: MOV   R7,#02H       ;延时1ms
             DMS:  MOV   R6,#0FFH
                   DJNZ  R6,$
                   DJNZ  R7,DMS
                   RET
             PTRN:
          DB 3FH,06H,5BH,4FH,66H  ;段数据表,分别表示了0到9,-,0,C和灭
                      
                   DB 6DH,7DH,07H,7FH,6FH
                      
                   DB 40H,3FH,39H,00H
                      
             KEYI : ACALL KS1           ;调用判断是否有键闭合子程序
                    JNZ   LK1           ;有键闭合转LK1
                    ACALL DIR           ;调用8155动态显示子程序,延时6ms
                    ACALL KEYI          
             LK1:   ACALL DIR           
                    ACALL DIR           ;调用两次显示,延时12ms
                    ACALL KS1           
                    JNZ   LK2
                    ACALL KEYI
           LK2:   MOV   R2,#0FEH       ;涣猩瑁幼畹臀豢?
                    MOV   R4,#00H       
             LK3:   MOV   DPTR,#7102H
                    MOV   A,R2
                    MOVX  @DPTR,A       ;B口
                    MOV   R6,#05H       ;软件延时
             DK6:   DJNZ  R6,DK6
                    MOV   DPTR,#7103H   ;C口
                    MOVX  A,@DPTR
                    JB    ACC.0,LONE
                    MOV   A,#00H
                    AJMP  LKP
             LONE:  JB    ACC.1, NEXT     ;是第一行键?
                    MOV   A,#06H         ;1行有键闭合,首键号6进A
             LKP:   ADD   A,R4           ;键号计算
                    PUSH  ACC            ;键号保护入栈
             LK4:   ACALL DIR            ;判键是否已释放
                    ACALL KS1
                    JNZ   LK3
                    POP   ACC
                    RET
             NEXT:  INC   R4             ;修改列号
                    MOV   A,R3           ;平判是否已扫描到最后一列
                    JNB   ACC.5,  KND
                    RL    A
                    MOV   R3,A
                    AJMP  LK4            ;6列键未扫描完再扫键盘
             KND:   AJMP  KEYI
             KS1:   MOV   DPTR,#7102H    ;全0送8155B口
                    MOV   A,#00H
                    MOVX  @DPTR,A
                    MOV   R6,#05H
             DS6:   DJNZ  R6,DS6
                    MOV   DPTR,#7103H    ;读8155C口键入状态
                    MOVX   A,@DPTR
                    CPL   A
                    ANL   A,#03H          ;屏蔽高6位


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:ATMEL代理

[下一篇主题]:求ID!!!急!!!