📄 a3_key_led.asm
字号:
;********************************************************************
;********************************************************************
;==================按键扫描,以及处理和LED闪烁========================
;>>包含函数:1. MLED_FLASH_SLOW ;LED闪动
; 2. MKEY_SCAN ;按键扫描
; 3. MKEY1_PRO ;K1处理
; 4. MKEY2_PRO ;K2处理
; 5. MKEY3_PRO ;K3处理
; 6. MKEY4_PRO ;K4处理
; 7. MKEY5_PRO ;K5处理
; 8. MKEY6_PRO ;K6处理
; 9. MKEY7_PRO ;K7处理
; 10.MKEY8_PRO ;K8处理
; 11.MKEY9_PRO ;K9处理
;====================================================================
;修改日期:2008/1/8
;程序员:Wangbo
;====================================================================
Mac_KEY_Port1 EQU BP1
Mac_KEY_Port2 EQU BP0
Mac_KEY_NUM1 EQU FFH
Mac_KEY_NUM2 EQU 01H
Mac_SYSLED_Port EQU BP2
Mac_SYSLED_NUM EQU E0H
Mac_KEY_BIT0 EQU 01H
Mac_KEY_BIT1 EQU 02H
Mac_KEY_BIT2 EQU 04H
Mac_KEY_BIT3 EQU 08H
Mac_KEY_BIT4 EQU 10H
Mac_KEY_BIT5 EQU 20H
Mac_KEY_BIT6 EQU 40H
Mac_KEY_BIT7 EQU 80H
;====================================================================
;系统运行标志,控制一LED不断地灯闪烁
;接口:BP27
;接口定义: Mac_SYSLED_Port EQU BP2
; Mac_SYSLED_NUM EQU 80H
;====================================================================
;1.LED闪动
;-----------------------------------------------
MLED_FLASH:
LDA !Mac_SYSLED_Port ;取接口数值
BIT #Mac_SYSLED_NUM
BEQ SLED_ON
LDA #Mac_SYSLED_NUM
TRB !Mac_SYSLED_Port ;清接口
BRA SLED_FLASH_RTS
SLED_ON:
LDA #Mac_SYSLED_NUM
TSB !Mac_SYSLED_Port ;置位接口
SLED_FLASH_RTS:
RTS
;====================================================================
;2. 按键扫描
; 键盘属性: 一般的键盘,一个端口对应一个按键
; 按键接口: BP00,BP10,BP11,BP12,BP13,BP14,BP15,BP16,BP17,
; 接口定义: Mac_KEY_Port EQU BP1
; Mac_KEY_NUM EQU 1CH
;-------------按键处理过程中所定义变量------------------
; gKEY_NUM1 DS 1 ;按键扫描值。
; gKEY_NUM2 DS 1 ;按键扫描值。
; gKEY_Process1 DS 1 ;按键按下标志
; gKEY_Process2 DS 1 ;按键按下标志
; gKEY_Filter DS 1 ;滤波计数
;====================================================================
MKEY_SCAN:
;--------------------------------------------
LDA Mac_KEY_Port1 ;按键端口
AND #Mac_KEY_NUM1 ;总按键对应的数值
CMP #Mac_KEY_NUM1
BCC SKEY_SCAN_RUN
SKEY_SCAN_Port2:
LDA Mac_KEY_Port2 ;按键端口
AND #Mac_KEY_NUM2 ;总按键对应的数值
CMP #Mac_KEY_NUM2
BCS SKEY_SCAN_END
SKEY_SCAN_RUN:
;------------------------------------------------有键按下
INC gKEY_Filter
LDA gKEY_Filter ;滤波处理
CMP #5 ;数值可调
BCC SKEY_SCAN_RTS
STZ gKEY_Filter
;--------------------------------------------
LDA Mac_KEY_Port1
AND #Mac_KEY_NUM1 ;总按键对应的数值
STA gKEY_NUM1 ;传送键值
TRB gKEY_Process1
;------------------
LDA Mac_KEY_Port2
AND #Mac_KEY_NUM2 ;总按键对应的数值
STA gKEY_NUM2 ;传送键值
TRB gKEY_Process2
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
BRA SKEY_SCAN_RTS
SKEY_SCAN_END:
;------------------------------------------------没键按下
STZ gKEY_Filter
LDA #Mac_KEY_NUM1
TRB gKEY_Process1
TSB gKEY_NUM1
;-----------------
LDA #Mac_KEY_NUM2
TRB gKEY_Process2
TSB gKEY_NUM2
SKEY_SCAN_RTS:
RTS
;====================================================================
MKEY_Manager:
LDA gKEY_NUM1
ORA gKEY_Process1
CMP #FFH
BCC SKEY_Manager_RUN
LDA gKEY_NUM2
ORA gKEY_Process2
BIT #01H
BNE SKEY_Manager_RTS
;-----------------------
SKEY_Manager_RUN:
JSR MKEY1_PRO
JSR MKEY2_PRO
JSR MKEY3_PRO
JSR MKEY4_PRO
JSR MKEY5_PRO
JSR MKEY6_PRO
JSR MKEY7_PRO
JSR MKEY8_PRO
JSR MKEY9_PRO
SKEY_Manager_RTS:
RTS
;====================================================================
;3. K1处理
; K1对应的端口:BP10
;----------------------------------------------
MKEY1_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT0
BNE SKEY1_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT0
BNE SKEY1_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT0
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY1_PRO_RTS:
RTS
;====================================================================
;2. K2处理
; K2对应的端口:BP11
;----------------------------------------------
MKEY2_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT1
BNE SKEY2_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT1
BNE SKEY2_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT1
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY2_PRO_RTS:
RTS
;====================================================================
;2. K3处理
; K3对应的端口:BP12
;----------------------------------------------
MKEY3_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT2
BNE SKEY3_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT2
BNE SKEY3_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT2
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY3_PRO_RTS:
RTS
;====================================================================
;. K4处理
; K4对应的端口:BP13
;----------------------------------------------
MKEY4_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT3
BNE SKEY4_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT3
BNE SKEY4_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT3
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY4_PRO_RTS:
RTS
;====================================================================
;. K5处理
; K5对应的端口:BP14
;----------------------------------------------
MKEY5_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT4
BNE SKEY5_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT4
BNE SKEY5_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT4
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY5_PRO_RTS:
RTS
;====================================================================
;. K6处理
; K6对应的端口:BP15
;----------------------------------------------
MKEY6_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT5
BNE SKEY6_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT5
BNE SKEY6_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT5
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY6_PRO_RTS:
RTS
;====================================================================
;. K7处理
; K7对应的端口:BP16
;----------------------------------------------
MKEY7_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT6
BNE SKEY7_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT6
BNE SKEY7_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT6
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY7_PRO_RTS:
RTS
;====================================================================
;. K8处理
; K8对应的端口:BP17
;----------------------------------------------
MKEY8_PRO:
LDA gKEY_NUM1
BIT #Mac_KEY_BIT7
BNE SKEY8_PRO_RTS
LDA gKEY_Process1
BIT #Mac_KEY_BIT7
BNE SKEY8_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT7
TSB gKEY_Process1
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY8_PRO_RTS:
RTS
;====================================================================
;. K9处理
; K9对应的端口:BP00
;----------------------------------------------
MKEY9_PRO:
LDA gKEY_NUM2
BIT #Mac_KEY_BIT0
BNE SKEY9_PRO_RTS
LDA gKEY_Process2
BIT #Mac_KEY_BIT0
BNE SKEY9_PRO_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY_BIT0
TSB gKEY_Process2
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
SKEY9_PRO_RTS:
RTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -