📄 jianpanxianshi.bak
字号:
org 0000h
ajmp main
org 0030h
main:
mov r2,#45
mov r3,#0
mov r4,#2
mov r5,0
keyscan: ;键盘扫描程序
MOV P1, #0FFH ; 置P1口为输入状态
CLR P1.3 ;扫描第一行(第一行为0)
mov r0,#00h ;ro为行号
MOV A,P1 ;读入P1口值
ANL A,#0F0H ;低四位为0
CJNE A,#0F0H,KEYCON ;高四位不为全1(有键按下)转KEYCOON
SETB P1.3 ; 扫描第二行(第二行为0)
CLR P1.2 ;
mov r0,#01h
MOV A,P1 ; 读入P1口值
ANL A,#0F0H ; 低四位为0
CJNE A,#0F0H,KEYCON ; 高四位不为全1(有键按下)转KEYCOON
SETB P1.2 ; 扫描第三行(第三行为0)
CLR P1.1
mov r0,#02h
MOV A,P1 ; 读入P1口值
ANL A,#0F0H ; 低四位为0
CJNE A,#0F0H,KEYCON ; 高四位不为全1(有键按下)转KEYCOON
SETB P1.1 ; 扫描第四行(第四行为0)
CLR P1.0 ;
mov r0,#03h
MOV A,P1 ; 读入P1口值
ANL A,#0F0H ; 低四位为0
CJNE A,#0F0H,KEYCON ; 高四位不为全1(有键按下)转KEYCOON
SETB P1.3 ;结束行扫描
ajmp keyscan ;子程序返回
KEYCON: LCALL delay ;消抖处理
MOV A,P1 ;再读入P1口值
ANL A,#0F0H ; 低四位为0
CJNE A,#0F0H,KEYCHE ; 高四位不为全1,确有键按下,转KEYCHE
ajmp keyscan ;干扰,子程序返回
KEYCHE: MOV A,P1 ;读P1口值
anl a,#0f0h
cjne a,#70h,l1
mov a,r0
mov b,#04h
mul ab
mov 31h,a
ajmp keyfuntab
l1: cjne a,#0b0h,l2
mov a,r0
mov b,#04h
mul ab
inc a
mov 31h,a
ajmp keyfuntab
l2: cjne a,#0d0h,l3
mov a,r0
mov b,#04h
mul ab
inc a
inc a
mov 31h,a
ajmp keyfuntab
l3: cjne a,#0c0h,l4
mov a,r0
mov b,#04h
mul ab
inc a
inc a
inc a
mov 31h,a
ajmp keyfuntab
l4: ajmp keyscan
KEYFUNTAB:
mov a,31h
cjne a,#00h,ll1
ljmp KEYFUN00
ll1: cjne a,#01h,ll2
ljmp KEYFUN01
ll2: cjne a,#02,ll3
ljmp KEYFUN02
ll3: cjne a,#03h,ll4
ljmp KEYFUN03
ll4: cjne a,#04h,ll5
ljmp KEYFUN04
ll5: cjne a,#05h,ll6
ljmp KEYFUN05
ll6: cjne a,#06h,ll7
ljmp KEYFUN06
ll7: cjne a,#07h,ll8
ljmp KEYFUN07
ll8: cjne a,#08h,ll9
ljmp KEYFUN08
ll9: cjne a,#09,ll10
ljmp KEYFUN09
ll10: cjne a,#0ah,ll11
ljmp KEYFUN10
ll11: cjne a,#0bh,ll12
ljmp KEYFUN11
ll12: cjne a,#0ch,ll13
ljmp KEYFUN12
ll13: cjne a,#0dh,ll14
ljmp KEYFUN13
ll14: cjne a,#0eh,ll15
ljmp KEYFUN14
ll15: cjne a,#0fh,ll16
ljmp KEYFUN15
ll16: ajmp keyscan
KEYFUN00: mov a,#00h
lcall send
sjmp goon
KEYFUN01: mov a,#01h
lcall send
sjmp goon
KEYFUN02: mov a,#02h
lcall send
sjmp goon
KEYFUN03:
sjmp goon
KEYFUN04: mov a,#03h
lcall send
sjmp goon
KEYFUN05: mov a,#04h
lcall send
sjmp goon
KEYFUN06: mov a,#05h
lcall send
sjmp goon
KEYFUN07:
sjmp goon
KEYFUN08: mov a,#06h
lcall send
sjmp goon
KEYFUN09: mov a,#07h
lcall send
sjmp goon
KEYFUN10: mov a,#08h
lcall send
sjmp goon
KEYFUN11: mov a,#09h
lcall send
sjmp goon
KEYFUN12:
sjmp goon
KEYFUN13:
sjmp goon
KEYFUN14:
sjmp goon
KEYFUN15:
sjmp goon
goon: ljmp keyscan
delay: mov r7, #18h
d1: mov r6, #0ffh
djnz r6, $
djnz r7, d1
ret
send: mov scon,#00h
mov dptr,#tab
mov r2,#04h
sendloop: push acc
movc a,@a+dptr
mov sbuf ,a
pop acc
jnb ti,$
clr ti
djnz r2,sendloop
ret
tab :db 03h,9fh,25h,0dh,99h,49h
db 41h,1fh,01h,09h,0ffh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -