📄 keyboard.dt
字号:
INCLUDE"ET44M210_REG.H"
INCLUDE"GENERAL_REG.H"
ORG 0x0000
JMP INITIAL
ORG 0x0100
INITIAL:
MOV A,#0x00
MOV IOCA,A
MOV PORTA,A //OUPUT:PORTA
MOV A,#0xF0
MOV IOCB,A
MOV A,#0xff
MOV IOCC,A
MOV A,#0x0F
MOV PUCC,A
//*****************************************************
//键盘输入扫描程序
KEY_IN:
CALL KS
JBS K_FLAG,7,KEY_P1
CALL DELAY
JMP KEY_IN
KEY_P1: CALL DELAY
CALL KS
JBS K_FLAG,7,KEY_P2
JMP KEY_IN
KEY_P2: MOV A,#4
MOV NUM,A
BC STATUS,C
MOV A,#0xFE
MOV LINE,A
MOV A,#0X00
MOV COL,A
KEY_P3: MOV A,LINE
MOV PORTB,A
NOP
COL_0: MOV A,PORTC
MOV K_VAL,A
JBS K_VAL,0,COL_1
MOV A,#1
JMP COL_PROC
COL_1: JBS K_VAL,1,COL_2
MOV A,#5
JMP COL_PROC
COL_2: JBS K_VAL,2,COL_3
MOV A,#9
JMP COL_PROC
COL_3: JBS K_VAL,3,NEXT
MOV A,#13
JMP COL_PROC
NEXT: DJZ NUM,END_KEY
INC COL
RLC LINE,#1
JMP KEY_P3
END_KEY: JMP KEY_IN
;按键处理
COL_PROC:ADD A,COL
MOV K_TEMP,A
COL_PR1: CALL KS
JBC K_FLAG,7,KEY_VAL
JMP COL_PR1
;判键盘释放否?
KEY_VAL: MOV A,K_TEMP
CALL TABLE
;显示按键值
MOV PORTA,A
JMP KEY_IN
//*****************************************
//判有键按下否?
KS: BC K_FLAG,7
MOV A,#0x00
MOV PORTB,A
NOP
MOV A,PORTC
MOV TEMP,A
JBC TEMP,3,KS_PRE
JBC TEMP,2,KS_PRE
JBC TEMP,1,KS_PRE
JBC TEMP,0,KS_PRE
JMP KS_END
KS_PRE: BS K_FLAG,7
KS_END: RET
//***************************************
DELAY: MOV A,#1
MOV DLY3,A ;1
MOV A,#20 ;1*(DLY3)
MOV DLY2,A ;1*(DLY3)
MOV A,#20 ;1*(DLY3)*(DLY2)
MOV DLY1,A ;1*(DLY3)*(DLY2)
D0: DJZ DLY1,D1 ;1*(DLY3)*(DLY2)*(DLY1)
JMP D0 ;1*(DLY3)*(DLY2)*(DLY1)
D1: DJZ DLY2,D2 ;1*(DLY3)*(DLY2)
JMP D0 ;1*(DLY3)*(DLY2)
D2: DJZ DLY3,D3 ;1*(DLY3)
JMP D0 ;1*(DLY3)
D3: RET
//***************************************
TABLE:
TBL
RETL #0x01
RETL #0x02
RETL #0x03
RETL #0x04
RETL #0x05
RETL #0x06
RETL #0x07
RETL #0x08
RETL #0x09
RETL #0x0a
RETL #0x0b
RETL #0x0c
RETL #0x0d
RETL #0x0e
RETL #0x0f
RETL #0x10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -