📄 id_chang.asm
字号:
;-----------------------------------------
; update_id:
; update the pad id according to D_A_mode;
; D_A_mode may be changed by 44 or switch.
; have to check mode_ch by switch first.
;-----------------------------------------
update_id:
btfss f_44_chmode ; change by 44?
goto end_update_id
; goto id_not_44_ch
movlw digital_id ; 41
btfsc D_A_mode
movlw analog_id ; 73
movwf pad_id
bcf f_44_chmode ; clr 44 set flag
; goto id_init_parameter
;
;id_not_44_ch:
; btfss mode_ch
; goto end_update_id
id_init_parameter:
call set_pb
btfsc f_mapbad
call def_pb
bcf all_intr
bsf STATUS,RP0
clrf m_reset
bcf STATUS,RP0
update_wait_200ms: ; wait for
call p_timer
bsf STATUS,RP0
movf m_reset,W
bcf STATUS,RP0
sublw 0x20
btfsc STATUS,C
goto update_wait_200ms
; bcf f_time_reset
bsf all_intr
end_update_id:
return
;-------------------------------------------
; mode_change:
; mode change by push button
; if using slide sw, don't call this routine
;-------------------------------------------
mode_change:
movlw DBC26MS ;SET 0.5MSEC KEY RELEASE DEBOUNCE
movw dur_dbc
movw tmr_dbc ;RESET DEBOUNCE TIMER
bcf f_keystb ;CLEAR KEY STABLE FLAG
mode_dbc:
;$$$$$$$$$$$$$$$$$
call readport
;$$$$$$$$$$$$$$$$$
call p_timer ;DEBOUCE MODE KEY FOR 0.5 SECOND
btfss f_keystb ;IF MODE RELEASES WITHIN THE DEBOUNCE TIME
goto mode_dbc ;THE ROUTINE WILL EXIT WITHOUT DOING
btfsc mode_bit ;ANYTHING
goto end_mode_change
btfsc f_44_lock ; locked by 44 ?
goto end_mode_change ; Yes
bcf all_intr
btfsc D_A_mode
goto mode_ch_to_41
bsf D_A_mode
movlw analog_id ; change to 73
goto mode_ch_set
mode_ch_to_41:
bcf D_A_mode
movlw digital_id ; change to 41
mode_ch_set:
movwf pad_id
call id_init_parameter
; call set_pb
; btfsc f_mapbad
; call def_pb
; btfsc f_nmode ; which protocol is operating
; bsf mode_ch ; set mode change flag for 2.0
mode_release:
movlw DBC100MS ;SET 0.1S PROGRAM KEY RELEASE DEBOUNCE
movw dur_dbc
movw tmr_dbc ;RESET DEBOUNCE TIMER
mode_lp2:
movlw 0x0 ;WAIT FOR MODE KEY OFF BEFORE EXIT
call waitkey
btfss mode_bit
goto mode_lp2
movlw DBC100MS ;SET DEBOUNCE TIME BACK TO 0.1 SECOND
movw dur_dbc
movw tmr_dbc ;RESET DEBOUNCE TIMER
end_mode_change:
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -