求助[求助]求助:
我想用8279做一个键盘,程序代码如下,不知错在什么地方,请各位大侠指教。
线路图与原理图接法是一致的。晶振用12m,我暂时未进行显示器部分的调试,但键盘处总觉得8279好象未起作用似的,读不出键来。
4脚irq输出观察不到(只是在中断方式下才能有的么???)
kd
equ
60h
st
equ
61h
poc
equ
0a001h
pod
equ
0a000h
dirn
equ
6
;显示位数
kmd
equ
1
;8279初始化命令
译码扫描键盘
org
0
ajmp
main
org
100h
main:
mov
sp,#30h
;调试主程序
mov
st,#0
mov
kd,#0
lcall
dl2
lcall
prmk
ml0:
nop
lcall
key
;读键
mov
50h,kd
lcall
dir0
;显示
lcall
dl2
ddd:
sjmp
ml0
dir0:mov
dptr,#poc
;显示子程序
mov
a,#90h
;写显示ram地址0,地址自动加1方式
inc
dptr
mov
r3,#dirn
;显示位数
mov
r0,#50h
;显示缓冲区首地址
drl:mov
a,@r0
;取显示数据
mov
dptr,#tdb
movc
a,@a+dptr
;查显示段码
mov
dptr,#pod
movx
@dptr,a
;写8279显示ram
inc
r0
djnz
r3,drl
ret
tdb:db
77h,41h,3bh,6bh,4dh
;0--9
db
6eh,7eh,43h,7fh,6fh
dl2:mov
r6,#200
;延时
dl1:lcall
dl
djnz
r6,dl1
ret
dl:mov
r7,#0ffh
djnz
r7,$
ret
key:mov
dptr,#poc
;读8279状态
movx
a,@dptr
;注:应该有键按下此处a内应有数值,但我总得到的是0x00这是什么原因?
anl
a,#07h
jnz
kld
;有键闭合转kld
lcall
prmk
;8279初始化
ret
kld:mov
dptr,#pod
;读键码
movx
a,@dptr
anl
a,#0fh
mov
kd,a
ret
prmk:mov
dptr,#poc
;8279命令口
mov
a,#kmd
;模式字
movx
@dptr,a
mov
a,#34h
;clk分频倍数
20分频
movx
@dptr,a
ret
end


此主题相关图片如下:
