📄 成功-单键1224.txt
字号:
clock equ p3.2
testclock equ p3.4
todata equ p3.1
testdata equ p3.0
org 0000h
ljmp main
org 0100h
main:
mov p0,#0ffh
;mov p3,#0ffh
mov p2,#0
;调试程序,直接输出确定数字
;lcall delay7ms
;lcall delay10ms
;lcall delay40us
main3:
mov a,p0
mov b,a
cjne a,#0ffh,keyhit
ajmp main
keyhit:
lcall delay10ms
mov p0,#0ffh
mov p2,#0
mov a,p0
cjne a,b,main
rrc a
mov 30h,#0
jnc column
ljmp main
column:
mov p0,#0ffh
mov p2,#0f7h
mov a,p0
mov 40h,#0
cjne a,#0ffh,getset
ljmp main
getset: mov a,40h
add a,30h
mov dptr,#table
movc a,@a+dptr
mov 60h,a
mov 50h,a
mov r0,50h
lcall displaytocomp
keyfree:
mov p0,#0ffh
mov a,p0
cjne a,#0ffh,keyfree
mov 50h,#0F0h
mov r0,50h
lcall displaytocomp
lcall delay7ms
mov a,60h
mov 50h,a
mov r0,50h
lcall displaytocomp
ljmp main
displaytocomp:
jnb testclock,$
lcall delay40us
jb testclock,testtodata
ljmp main
;mov c,clock
;jnc main
testtodata:
;mov c,todata
;jc sendout
jb testdata,sendout
ljmp main
sendout:
;lcall delay20us
;clr c
clr todata
lcall delay20us
;clr c
;mov clock,c
clr clock
lcall delay40us
;setb c
;mov clock,c
setb clock
lcall delay20us
;jnb testclock,main
;lcall delay20us ;send start
mov r1,#8 ;可能需要修改
mov a,r0
clr c
gogogo: rrc a
mov todata,c ;send 8 bit data
lcall delay20us
;clr c
;mov clock,c
clr clock
lcall delay40us
;setb c
;mov clock,c
setb clock
lcall delay20us
;mov c,clock
;jc gonextbit
;jb testclock,gonextbit
;ljmp main
gonextbit:
djnz r1,gogogo
mov a,50h ;odd ?
mov c,psw.0
cpl c
mov todata,c
lcall delay20us
;clr c
;mov clock,c
clr clock
lcall delay40us
;setb c
;mov clock,c
setb clock
lcall delay20us
;mov c,clock
;jc sendstopbit
;jb testclock,sendstopbit
;ljmp main
sendstopbit: ;send stop bit to ps/2
;setb c
;mov todata,c
setb todata
lcall delay20us
;clr c
;mov clock,c
clr clock
lcall delay40us
;setb c
;mov clock,c
setb clock
lcall delay40us
lcall delay20us
ret
delay20us:
mov r4,#5
djnz r4,$
ret
delay40us:
mov r4,#10
djnz r4,$
ret
delay10ms: ;delay 10ms
MOV R6,#40
D1: MOV R7,#128
D2: DJNZ R7,D2
DJNZ R6,D1
RET
delay7ms:
mov r6,#23
delay7msb: mov r7,#128
djnz r7,$
djnz r6,delay7msb
ret
table: DB 45H,16H,1EH,26H,25H,2EH,36H,3DH ;通码表
DB 3EH,46H,1CH,32H,21H,23H,24H,2BH
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -