我这儿有一小段汇编程序,请大家帮我看看
(这是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