求助[求助]
求助:
我想用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
此主题相关图片如下:
发表时间:2003年7月30日13:34:14