📄 key.asm
字号:
.include hardware.inc
.public _Key_Scan_ServiceLoop;
.DEFINE C_DebounceCnt 0x0050; //13ms 去抖
.DEFINE C_CONTINUE 0xB00; //第二次以后有效
.external _Key
.external _KeyPressFlag; //无键按下时清0;有键按下时B0=1;
//第二次以后有效B15=1
.external _SleepFlag
.ram
.var Key_Buff; //本次键值暂存单元
.var Key_Debounce; //计数单元
.var KeyScanLineBuff;
.code
.public Key_Scan_Init
Key_Scan_Init: .proc
r1=0x0000
[_Key]=r1
[Key_Buff]=r1
[_KeyPressFlag]=r1
retf
.endp
_Key_Scan_ServiceLoop: .proc
r2=[P_IOA_Data]
r2&=0x00ff
jnz F_SomeKeyIsPressed
r1=0x0000
[Key_Buff]=r1
[_KeyPressFlag]=r1 //清0
r1=1
[_SleepFlag] = r1 //置睡眠标志
retf
//-----------------------------//
F_SomeKeyIsPressed:
R3=[_KeyPressFlag] //有键按下 B0=1
R3|=0x0001
[_KeyPressFlag]=R3 //置按键标志
r3=0
[_SleepFlag] = r3 //清睡眠标志
r1=[Key_Buff] //读上次键值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -