📄 a20_key_led.asm
字号:
;****************************************************************************************
;****************************************************************************************
;========================按键扫描,以及处理和LED闪烁======================================
;1. 实现的功能:
; 按键功能执行
;2. 包含函数:
; 1.MLED_FLASH ;LED闪动
; 2.MKEY_SCAN ;按键扫描
; 3.MKEY1_Record_ISD ;K1处理,依据gChoose_SEG,录音ISD相应的段
; 4.MKEY2_PLAY_ISD ;K2处理,依据gChoose_SEG,播放ISD相应的段
; 5.MKEY3_Choose_SEG ;K3处理,gChoose_SEG加一,在1-45之间循环
; 6.MKEY4_Choose_SEG ;K4处理,gChoose_SEG减一,在1-45之间循环
; 7.MDIP_NUM ;显示
; 8.MDELAY_500MS ;延时500s,并检查按键是否松开
; 9.MCHECK_Record ;在录音过程中,检查录音是否结束,录音按键是否松开
;3. 修改日期: 2008/08/21
;========================================================================================
Mac_KEY_Port EQU IP0
Mac_KEY_NUM EQU FDH
Mac_KEY1_NUM EQU 01H
Mac_KEY2_NUM EQU 04H
Mac_KEY3_NUM EQU 08H
Mac_KEY4_NUM EQU 10H
Mac_SYSLED_Port EQU BP0
Mac_SYSLED_NUM EQU 04H
;========================================================================================
;1.LED闪动
;-----------------------------------------------
MLED_FLASH:
LDA !Mac_SYSLED_Port ;取接口数值
EOR #Mac_SYSLED_NUM
STA !Mac_SYSLED_Port
RTS
;========================================================================================
;2. 按键扫描
; 键盘属性: 一般的键盘,一个端口对应一个按键
;========================================================================================
MKEY_SCAN:
LDA #80H
TRB !BP2
LDA Mac_KEY_Port ;按键端口
AND #Mac_KEY_NUM ;总按键对应的数值
CMP #Mac_KEY_NUM
BCS SKEY_SCAN_END
;------------------------------------------------有键按下
INC gKEY_Filter
LDA gKEY_Filter ;滤波处理
CMP #3 ;数值可调
BCC SKEY_SCAN_RTS
STZ gKEY_Filter
;--------------------------------------------
LDA Mac_KEY_Port
AND #Mac_KEY_NUM ;总按键对应的数值
STA gKEY_NUM ;传送键值
TRB gKEY_Process
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
BRA SKEY_SCAN_RTS
SKEY_SCAN_END:
;------------------------------------------------没键按下
STZ gKEY_Filter
LDA #Mac_KEY_NUM
TRB gKEY_Process
TSB gKEY_NUM
SKEY_SCAN_RTS:
RTS
;========================================================================================
;3. K1处理,依据gChoose_SEG,录音ISD相应的段
; K1对应的端口:BP12
;----------------------------------------------
MKEY1_Record_ISD:
LDA gKEY_NUM
BIT #Mac_KEY1_NUM
BNE SKEY1_Record_ISD_RTS
LDA gKEY_Process
BIT #Mac_KEY1_NUM
BNE SKEY1_Record_ISD_RTS
;-------------------------------------------确定有键按下
LDA #Mac_KEY1_NUM
TSB gKEY_Process
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
MACRO_ISD17XX_COMM_RD_STATUS
LDA gISD_Receive_DATA+2 ;检测ISD是否在播放声音
BIT #04H
BEQ SKEY1_Record_ISD_Record_RUN
JSR MISD17XX_STOP
SKEY1_Record_ISD_Record_RUN:
;--------------------------------------------
JSR MDELAY_500MS
LDA !Mac_KEY_Port ;延时1S,检测按键是否还在按下
BIT #Mac_KEY1_NUM
BEQ SKEY1_Record_ISD_Record_RUN_CH
RTS ;没键按下就退出
SKEY1_Record_ISD_Record_RUN_CH:
;----------------------------
MACRO_TurnOn_MIC ;打开MIC
;----------------------------
LDA gChoose_SEG
;------------------------------
BNE SKEY1_Record_ISD_Record_RUN_START
LDA #1
STA gChoose_SEG
BRA SKEY1_Record_ISD_Record_RUN_START_RUN
SKEY1_Record_ISD_Record_RUN_START:
CMP #45
BCC SKEY1_Record_ISD_Record_RUN_START_RUN
LDA #1
STA gChoose_SEG
SKEY1_Record_ISD_Record_RUN_START_RUN:
LDA gChoose_SEG
STA gISD_SGEBuff
JSR MISD17XX_SET_Erase_SEG
JSR MISD17XX_SET_REC_SEG
;----------------------------
JSR MCHECK_Record
;----------------------------
SKEY1_Record_ISD_RTS:
RTS
;========================================================================================
;4. K2处理,依据gChoose_SEG,播放ISD相应的段
; K2对应的端口:BP13
;------------------------------------------------
MKEY2_PLAY_ISD:
LDA gKEY_NUM
BIT #Mac_KEY2_NUM
BNE SKEY2_PLAY_ISD_RTS
LDA gKEY_Process
BIT #Mac_KEY2_NUM
BNE SKEY2_PLAY_ISD_RTS
;--------------------------------------------确定有键按下
LDA #Mac_KEY2_NUM
TSB gKEY_Process
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
MACRO_ISD17XX_COMM_RD_STATUS
LDA gISD_Receive_DATA+2
BIT #04H
BEQ SKEY2_PLAY_ISD_PLAY
;-----------------------------
JSR MISD17XX_STOP
LDA gChoose_SEG
CMP gISD_SGEBuff
BEQ SKEY2_PLAY_ISD_RTS
SKEY2_PLAY_ISD_PLAY:
;-----------------------------
LDA gChoose_SEG
BNE SKEY2_PLAY_ISD_PLAY_START
LDA #1
STA gChoose_SEG
BRA SKEY2_PLAY_ISD_PLAY_START_RUN
SKEY2_PLAY_ISD_PLAY_START:
CMP #45
BCC SKEY2_PLAY_ISD_PLAY_START_RUN
LDA #1
STA gChoose_SEG
SKEY2_PLAY_ISD_PLAY_START_RUN:
LDA gChoose_SEG
STA gISD_SGEBuff ;播放所选择的段
JSR MISD17XX_SET_PLAY
SKEY2_PLAY_ISD_RTS:
RTS
;========================================================================================
;5. K3处理,gChoose_SEG加一,在1-45之间循环
; K3对应的端口:IP03
;------------------------------------------------
MKEY3_Choose_SEG:
LDA gKEY_NUM
BIT #Mac_KEY3_NUM
BNE SKEY3_Choose_SEG_RTS
LDA gKEY_Process
BIT #Mac_KEY3_NUM
BNE SKEY3_Choose_SEG_RTS
;--------------------------------------------确定有键按下
LDA #Mac_KEY3_NUM
TSB gKEY_Process
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
INC gChoose_SEG
LDA gChoose_SEG
CMP #45
BCC SKEY3_Choose_SEG_RTS
LDA #1
STA gChoose_SEG
SKEY3_Choose_SEG_RTS:
RTS
;========================================================================================
;6. K4处理,gChoose_SEG减一,在1-45之间循环
; K4对应的端口:IP04
;------------------------------------------------
MKEY4_Choose_SEG:
LDA gKEY_NUM
BIT #Mac_KEY4_NUM
BNE SKEY4_Choose_SEG_RTS
LDA gKEY_Process
BIT #Mac_KEY4_NUM
BNE SKEY4_Choose_SEG_RTS
;--------------------------------------------确定有键按下
LDA #Mac_KEY4_NUM
TSB gKEY_Process
;--------------------------------------------
STZ gSTOP_Counter ;清SLEEP计数器
;--------------------------------------------
DEC gChoose_SEG
LDA gChoose_SEG
BNE SKEY3_Choose_SEG_RTS
LDA #44
STA gChoose_SEG
SKEY4_Choose_SEG_RTS:
RTS
;========================================================================================
;7.显示
;-----------------------------------------------
MDIP_NUM:
LDA FSYS_FlAG
BIT #MACRO_SYS_FLAG_DIP
BNE SDIP_NUM_RTS
LDA gChoose_SEG
STA !BP0
SDIP_NUM_RTS:
RTS
;========================================================================================
;8. 延时500s,并检查按键是否松开
;-----------------------------------------------
MDELAY_500MS:
STZ gTime100ms
STZ gTime500ms
LDA #MACRO_SYS_500MS
TRB FSYS_Time_Flag
SRecord_Delay_Check_LOOP:
LDA #01H
STA !WDTC
LDA !Mac_KEY_Port
BIT #Mac_KEY2_NUM ;按键是否松开
BNE SDELAY_500MS_RTS
;---------------------------------------------
LDA FSYS_Time_Flag
BIT #MACRO_SYS_500MS
BEQ SRecord_Delay_Check_LOOP
SDELAY_500MS_RTS:
RTS
;========================================================================================
;9. 在录音过程中,检查录音是否结束,录音按键是否松开.
; 并闪动LED
;-----------------------------------------------
MCHECK_Record:
LDA #MACRO_SYS_FLAG_DIP
TSB FSYS_FlAG
STZ gTime500ms
LDA #MACRO_SYS_500MS
TRB FSYS_Time_Flag
SCHECK_Record_LP:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_10MS
BEQ SCHECK_Record_100MS
LDA #MACRO_SYS_10MS
TRB FSYS_Time_Flag
;------------------------------------------------------10MS
LDA #01H
STA !WDTC
SCHECK_Record_100MS:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_100MS
BEQ SCHECK_Record_500MS
LDA #MACRO_SYS_100MS
TRB FSYS_Time_Flag
;------------------------------------------------------100MS
LDA !Mac_KEY_Port
BIT #Mac_KEY1_NUM
BNE SCHECK_Record_END
;---------------------------------------------
MACRO_ISD17XX_COMM_RD_STATUS
LDA gISD_Receive_DATA+2
BIT #08H
BEQ SCHECK_Record_END
SCHECK_Record_500MS:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_500MS
BEQ SCHECK_Record_LP
LDA #MACRO_SYS_500MS
TRB FSYS_Time_Flag
;------------------------------------------------------500MS
LDA !BP0
AND #7FH
CMP #7FH
BNE SCHECK_Record_LED_OFF
;---------------------------------------------
LDA gChoose_SEG ;打开LED
STA !BP0
BRA SCHECK_Record_LP
SCHECK_Record_LED_OFF:
;---------------------------------------------
LDA #7FH
TSB !BP0 ;turn off LED
BRA SCHECK_Record_LP
;---------------------------------------------
SCHECK_Record_END:
MACRO_ISD17XX_COMM_RD_STATUS
LDA gISD_Receive_DATA+2
BIT #08H
BEQ SCHECK_Record_RTS
JSR MISD17XX_STOP
SCHECK_Record_RTS:
MACRO_TurnOff_MIC ;关闭MIC
LDA #MACRO_SYS_FLAG_DIP
TRB FSYS_FlAG
RTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -