id_chang.asm

来自「VCP201_CODE is a FPGA source code.」· 汇编 代码 · 共 118 行

ASM
118
字号
;-----------------------------------------
; 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 + =
减小字号Ctrl + -
显示快捷键?