我这儿有一小段汇编程序,请大家帮我看看 ;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;;根据硬件线路设计的字形数据
请赐教啦!!!
用Keil单步调试一下啊,想知道结果就不要怕麻烦。
谢谢,我已经按单步调了,发现以下问题,求教
其实就算从左显示也能实现从又显示阿,我也遇到过这种问题。| 以下是引用石月在2003-9-1 9:27:11的发言: 谢谢,我已经按单步调了,发现以下问题,求教谢谢,其实我就是用单步调的,调后我发现键的确定和键值输入都正确的,而且显示的值也查表读取正确了,但显示的时候却出问题了。他有时候不显示,显示出来时显示位却是不定的,是不是8279芯片有问题?而且无论我定义左入显示还是右入显示他都是从左边开始的,为什么?还有中断跳入也有问题,有时有,有时没…… |
可是设置后还是不起作用阿
你可以用先显示高位后显示低位的办法啊| 以下是引用石月在2003-9-1 11:27:35的发言: 可是设置后还是不起作用阿 |
好吧,这个问题就这样解决。谢谢!可是中断
有些开发系统工作长时间也会出现这种问题,
是不是开发系统的问题?
谢谢,我试试
你看中断信号正常么?电平范围正确么?
不知道你有没有用过8279,我检查过第一
8279 应用[推荐]
谢谢,我按你的方法重新初始化后中断果然没
ni| 以下是引用石月在2003-9-1 11:27:35的发言: 可是设置后还是不起作用阿 |
我在程序开头写下这么一句:
是不是堆栈指针的问题?
谢谢,中断返回的时候老是跑飞了是不是也是这个原因?
很简单的问题!不过最近手上项目比较多,否