📄 system.asm
字号:
.include hardware.inc
.public _system
.external _flag
.external _num
.external _line
.public _key_scan
.ram
.var newkey
.code
_system: .proc //系统设置
INT OFF
r1=0xfff0 //IOA0-A7接键盘
[P_IOA_Attrib] = r1
[P_IOA_Dir] = r1
r1=0x0000
[P_IOA_Data] = r1
r1=0x00ff //IOB0-B10接LCD
[P_IOB_Attrib] = r1
[P_IOB_Dir] = r1
r1=0
[P_IOB_Data] = r1
r1=0x0004
[P_INT_Ctrl]= r1
r1=0
[_num]=r1
r1=0x0010
[_line]=r1
int irq
retf
.endp
.data
keytable:
.DW 0x0011, 0x0021, 0x0041, 0x0081
.DW 0x0012, 0x0022, 0x0042, 0x0082
.DW 0x0014, 0x0024, 0x0044, 0x0084
.DW 0x0018, 0x0028, 0x0048, 0x0088
.code
_key_scan: .proc //键盘扫描
r1=[_line]
[P_IOA_Data]=r1
r3=0
r4=0
r2=[P_IOA_Data]
CMP R1,r2
JE endloop
[newkey]=r2
add:
r3+=1
round1:
r4+=1
r1=[_line]
[P_IOA_Data]=r1
CMP r3,4000 //键盘单击灵敏度调节
JAE save
CMP r4,8000
JE endloop
r2=[P_IOA_Data]
CMP r2,[newkey]
JE add
JMP round1
save:
bp=keytable
r3=0
round2:
r3+=1
r2=[bp++]
CMP r2,[newkey]
JE save_end
JMP round2
save_end:
[_flag]=r3
endloop:
r1=r1 lsl 1
r1&=0x00f0
CMP R1,0x0000
JNE goon
r1=0x0010
goon:
[_line]=r1
retf
.endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -