id_chang.asm

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

ASM
120
字号
;-----------------------------------------
; 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
;
;	xorwf	pad_id,W
;	andlw	0x0f	
;	btfsc	STATUS,Z
;	goto	end_update_id

	movlw	digital_id	; 41		
	btfsc	D_A_mode
	movlw	analog_id	; 73
			
	movwf	pad_id

	
id_init_parameter:	
        bcf   	PCLATH,3
       	call  	init_all_vars
        bsf   	PCLATH,3  
        
	call	set_pb
        btfsc   f_mapbad
        call    def_pb	
	call	set_auto_mask
	
end_update_id:
	bcf	STATUS,RP0
	bcf	f_44_chmode	; clr 44 set flag

	
	return
	

;-------------------------------------------	
; mode_change:
; mode change by push button
; if using slide sw, don't call this routine
;-------------------------------------------
mode_change:
	bcf	STATUS,RP0
	bcf	s_motor		;Stop Small Motor
        clrf	pwmduty      	;Stop Lager Motor

        movlw   d'4'	;TIME52MS	;SET 0.5MSEC KEY RELEASE DEBOUNCE
        movwf    dur_dbc
        movwf    tmr_dbc         ;RESET DEBOUNCE TIMER
        bcf     f_keystb        ;CLEAR KEY STABLE FLAG
mode_dbc:
	nop
	call	readport
        nop
	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

	bcf	STATUS,RP0
	btfsc	f_44_lock		; locked by 44 ?
	goto	end_mode_change		; Yes
	
	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
	btfsc	f_nmode			; which protocol is operating	
	bsf	mode_ch			; set mode change flag for 2.0

mode_release:
        bcf   	PCLATH,3
       	call  	init_all_vars
        bsf   	PCLATH,3  
        
	call	set_pb
        btfsc   f_mapbad
        call    def_pb	
	nop	
	call	set_auto_mask

	bcf	STATUS,RP0
	bcf	f_44_chmode	; clr 44 set flag

mode_lp2:
        movlw   0x00            ;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
        movwf    dur_dbc
        movwf    tmr_dbc         ;RESET DEBOUNCE TIMER

end_mode_change:	
	bcf	STATUS,RP0
        bsf	pwmctrl,7	;Enable PWM
	return

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?