导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→我这儿有一小段汇编程序,请大家帮我看看

* 41154: 我这儿有一小段汇编程序,请大家帮我看看

   石月 
石月发表的帖子 

 我这儿有一小段汇编程序,请大家帮我看看
(这是8279键盘和显示的编码程序,单片机用的是89C51。/INT0中断输入。CS接P2.7,A0接P2.0。现在我在调试时可以判断中断,且键值也正确写入片内ROM,却没有显示,是怎么回事啊???)
        ORG 0000H
        AJMP START
        ORG 0003H
        SJMP PKEYI
        ORG 0030H
START:  MOV TCON,#0CH
        LCALL INI79
        SJMP $

;8279初始化程序
        ORG 0060H
INI79:  MOV DPTR,#7FFFH ;清除8279命令
        MOV A,#0DDH
        MOVX @DPTR,A
WNDU:   MOVX A,@DPTR    ;等待8279清除结束
        JB ACC.7,WNDU
        MOV A,#10H      ;设置键盘扫描方式为双键互锁
        MOVX @DPTR,A
        MOV A,#34H      ;时钟100KHz
        MOVX @DPTR,A
        MOV IE,#81H     ;允许8279中断
        RET
 ;;键输入中断服务程序
PKEYI:  CLR EA
        PUSH PSW
        PUSH DPL
        PUSH DPH
        PUSH ACC
        PUSH B
        SETB PSW.3       ;选工作寄存器区1
        MOV DPTR,#7FFFH  ;读FIFO状态字
        MOVX A,@DPTR
        ANL A,#0FH
        JZ PKYR          ;判FIFO中是否有数据
        MOV A,#40H       ;读FIFO命令—〉8279
        MOVX @DPTR,A
        MOV DPTR,#7EFFH
        MOVX A,@DPTR     ;读数据
        MOV 50H,#0
        MOV R2,A
DATA0: CJNE R2,#38H,DATA1;判断键代码,确定键值
 MOV R0,#0
                AJMP RDIR
                AJMP PKYR
DATA1:  CJNE R2,#30H,DATA2
 MOV R0,#1
                AJMP RDIR
                AJMP PKYR
DATA2: CJNE R2,#28H,DATA3
 MOV R0,#2
                AJMP RDIR
                AJMP PKYR
DATA3: CJNE R2,#20H,DATA4
 MOV R0,#3
                AJMP RDIR
               AJMP PKYR
DATA4: CJNE R2,#18H,DATA5
 MOV R0,#4
                AJMP RDIR
                AJMP PKYR
DATA5: CJNE R2,#10H,DATA6
 MOV R0,#5
                AJMP RDIR
                AJMP PKYR
DATA6: CJNE R2,#08H,DATA7
 MOV R0,#6
                AJMP RDIR
                AJMP PKYR
DATA7: CJNE R2,#00H,DATA8
 MOV R0,#7
                AJMP RDIR
                AJMP PKYR
DATA8: CJNE R2,#39H,DATA9
 MOV R0,#8
                AJMP RDIR
                AJMP PKYR
DATA9: CJNE R2,#31H,RDIR1
 MOV R0,#9
                AJMP RDIR
PKYR:   POP B
        POP ACC
        POP DPH
        POP DPL
        POP PSW
        RETI
RDIR1:  MOV DPTR,#7FFFH
        MOV A,#90H     ;写显示RAM命令
        MOVX @DPTR,A
        MOV DPTR,#7EFFH
        MOV A,#79H     ;显示E,表示出错
        MOVX @DPTR,A
        SETB EA
        LJMP PKYR
;;显示器更新程序
RDIR:   MOV DPTR,#7FFFH ;写显示RAM命令—〉8279
        MOV A,#90H
        MOVX @DPTR,A
        MOV A,#16H      ;设显示工作方式为右入8位显示
        MOVX @DPTR,A
        MOV A,#0DFH     ;清除命令,使IRQ复位
        MOVX @DPTR,A
        MOV DPTR,#7EFFH
        MOV 50H,R0
        MOV R0,#50H
RDLO:   MOV A,@R0       ;取显示数据
        ADD A,#6
        MOVC A,@A+PC   ;查表转换为段码数据—〉8279
        MOVX @DPTR,A
        SETB EA
        LJMP PKYR
SEG:    DB 04H,9FH,42H,03H,91H,21H,20H,8FH,00H,01H;;根据硬件线路设计的字形数据



发表时间:2003年8月31日9:27:19

  
回复该帖

本主题共有 29 帖,分页:>>>>>该主题的所有内容[29]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  41158.[详细]请赐教啦!!!
摘要:请赐教啦!!!......(14字)
- [石月][1033次] 2003年8月31日

  41169.[详细]用Keil单步调试一下啊,想知道结果就不要怕麻烦。
摘要:其实你应该养成软件调试的习惯,别人也不知道你要干什么,也没时间研究这些程序啊,自己多一些耐心,认真调试一下,如软件没问题再看硬件啊!......(132字)
- [guantingwei][1102次] 2003年8月31日

  41188.[详细]谢谢,我已经按单步调了,发现以下问题,求教
摘要:谢谢,其实我就是用单步调的,调后我发现键的确定和键值输入都正确的,而且显示的值也查表读取正确了,但显示的时候却出问题了。他有时候不显示,显示出来时显示位却是不定的,是不是8279芯片有问题?而且无论我定义左入显示还是右入显示他都是从左边开始......(288字)
- [石月][1065次] 2003年9月1日

[上一篇帖子]:小弟,有事求教:超声波传感器T40-16如何使用?望赐教!
[下一篇帖子]:请问建五和摩托罗拉的车载对讲机能不能匹配?有一个建五的和一个摩托罗拉的对讲机,放着觉得可惜,问下能不