📄 fp888_120v_1208.asm
字号:
BTFSS TIME_SIGN,T_3S ;
GOTO POWER_LOW_OUT ;
CALL TIME_END_RUN ;
;-------------------------------;
BCF STATUS_SIGN,R_CURRENT_S
CALL TIME_FIRST_RUN ;
;-------------------------------;
;LOW OUT AUTO STATUS
;-------------------------------;
POWER_LOW_OUT_AUTO:
BSF PORTB,LED_POWER_OUT
BCF PORTB,LED_PULSE_OUT
BSF PORTB,LED_LOW_OUT
BCF PORTB,LED_HIGH_OUT
BCF PORTB,LOW_OUT ;
BSF PORTB,HIGH_OUT ;
BCF PORTB,COM_OUT ;
;-------------------------------;
CLRF KEY_COUNT ;
;-------------------------------;
POWER_LOW_AUTO_KEY_SAMPLE:
CALL AD_KEY ;
;-------------------------------;
CALL POWER_S ;
SUBLW 55H ;
BTFSC STATUS,2 ;
GOTO POWER_S_BREAK ;
;-------------------------------;
BTFSC KEY_SIGN,ON_OFF_S
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,PULSE_S;
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,HIGH_S ;
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,LOW_S ;
BSF KEY_SIGN,USER_S ;
;-------------------------------;
BTFSS KEY_SIGN,USER_S ;
GOTO POWER_LOW_AUTO_KEY_END
;-------------------------------;
INCF KEY_COUNT,1 ;
MOVLW 0FH ;
SUBWF KEY_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_LOW_AUTO_KEY_SAMPLE
;-------------------------------;
BTFSC KEY_SIGN,ON_OFF_S
GOTO POWER_OFF_S ;
BTFSC KEY_SIGN,PULSE_S;
GOTO POWER_PULSE_S ;
BTFSC KEY_SIGN,HIGH_S ;
GOTO POWER_HIGH_S ;
;-------------------------------;
BTFSC KEY_SIGN,LOW_S ;
GOTO POWER_LOW_WAIT ;
;-------------------------------;
POWER_LOW_AUTO_KEY_END:
CLRF CURRENT_COUNT ;
;-------------------------------;
;WAIT 1S CURRENT CHECK
;-------------------------------;
BTFSC STATUS_SIGN,R_CURRENT_S
GOTO POWER_LOW_CURRENT_MAX2
BTFSS TIME_SIGN,T_1S ;
GOTO POWER_LOW_RUN_AUTO
CALL TIME_END_RUN ;
BSF STATUS_SIGN,R_CURRENT_S
;-------------------------------;
POWER_LOW_CURRENT_MAX2:
CALL AD_CURRENT ;
;-------------------------------;
;CURRENT MAX I > 10.6A ?
;-------------------------------;
CALL AD_CURRENT_MAX ;
BTFSS CURRENT_SIGN,HI_S
GOTO POWER_LOW_OUT_AUTO_END
;-------------------------------;
INCF CURRENT_COUNT,1 ;
MOVLW 0FH ;
SUBWF CURRENT_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_LOW_CURRENT_MAX2
GOTO POWER_PROTECT_RUN
;-------------------------------;
POWER_LOW_OUT_AUTO_END:
CLRF CURRENT_COUNT ;
;-------------------------------;
;CURRENT I < 4.7A ?
;-------------------------------;
POWER_LOW_RUN_AUTO:
CALL AD_CURRENT ;
;-------------------------------;
CALL AD_CURRENT_1_4A ;
BTFSS STATUS_SIGN,R_CURRENT_S
GOTO POWER_LOW_OUT_AUTO
BTFSS CURRENT_SIGN,LI_S
CALL TIME_END_RUN ;
BTFSS CURRENT_SIGN,LI_S
GOTO POWER_LOW_OUT_AUTO
;-------------------------------;
INCF CURRENT_COUNT,1 ;
MOVLW 0FH ;
SUBWF CURRENT_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_LOW_RUN_AUTO
;-------------------------------;
;TIME FIRST ?
;-------------------------------;
BTFSS TIME_SIGN,T_FIRST
CALL TIME_FIRST_RUN ;
;-------------------------------;
;TIME > 3S ?
;-------------------------------;
POWER_LOW_RUN_AUTO_END:
BTFSS TIME_SIGN,T_3S ;
GOTO POWER_LOW_OUT_AUTO
CALL TIME_END_RUN ;
GOTO POWER_LOW_OUT ;
;-------------------------------;
POWER_LOW_END:
call fan_delay_start
GOTO MAIN_RUN ;
;-----------------------------------------------;
;-----------------------------------------------;
POWER_HIGH_S:
CALL TIME_END_RUN ;
MOVLW 0FH ;
MOVWF DEL_COUNT ;
;-------------------------------;
POWER_HIGH:
CALL AD_KEY ;
BTFSS KEY_SIGN,HIGH_S ;
GOTO POWER_HIGH_END ;
DECFSZ DEL_COUNT,1 ;
GOTO POWER_HIGH ;
;-------------------------------;
POWER_HIGH_WAIT:
CALL AD_KEY ;
BTFSC KEY_SIGN,HIGH_S ;
GOTO POWER_HIGH_WAIT ;
;-------------------------------;
CALL BUZZER_RUN ;
;-------------------------------;
CALL TIME_FIRST_RUN ;
;-------------------------------;
;1S LOW OUT STATUS
;-------------------------------;
SOFT_START:
CLRF RUN_SIGN ;
BSF RUN_SIGN,RUN_S ;
BSF RUN_SIGN,R_HIGH_S
;-------------------------------;
BSF PORTB,LED_POWER_OUT
BCF PORTB,LED_PULSE_OUT
BCF PORTB,LED_LOW_OUT
BSF PORTB,LED_HIGH_OUT
BSF PORTB,LOW_OUT ;
BCF PORTB,HIGH_OUT ;
BCF PORTB,COM_OUT ;
bsf porta,motor_out
;-------------------------------;
CLRF KEY_COUNT ;
;-------------------------------;
SOFT_START_KEY_SAMPLE:
BTFSC TIME_SIGN,T_1S ;
GOTO SOFT_START_KEY_END
;-------------------------------;
CALL AD_KEY ;
;-------------------------------;
CALL POWER_S ;
SUBLW 55H ;
BTFSC STATUS,2 ;
GOTO POWER_S_BREAK ;
;-------------------------------;
BTFSC KEY_SIGN,ON_OFF_S
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,PULSE_S;
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,HIGH_S ;
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,LOW_S ;
BSF KEY_SIGN,USER_S ;
BTFSS KEY_SIGN,USER_S ;
GOTO SOFT_START_KEY_END
;-------------------------------;
INCF KEY_COUNT,1 ;
MOVLW 0FH ;
SUBWF KEY_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO SOFT_START_KEY_SAMPLE
;-------------------------------;
CALL TIME_END_RUN ;
BTFSC KEY_SIGN,ON_OFF_S
GOTO POWER_OFF_S ;
BTFSC KEY_SIGN,PULSE_S;
GOTO POWER_PULSE_S ;
BTFSC KEY_SIGN,LOW_S ;
GOTO POWER_LOW_S ;
BTFSC KEY_SIGN,HIGH_S ;
GOTO POWER_HIGH_WAIT ;
;-------------------------------;
SOFT_START_KEY_END:
;-------------------------------;
;TIME > 1S ?
;-------------------------------;
BTFSS TIME_SIGN,T_1S ;
GOTO SOFT_START ;
;-------------------------------;
POWER_HIGH_OUT:
;-------------------------------;
;HIGH OUT STATUS
;-------------------------------;
CLRF RUN_SIGN ;
BSF RUN_SIGN,RUN_S ;
BSF RUN_SIGN,R_HIGH_S
BSF PORTB,LED_POWER_OUT
BCF PORTB,LED_PULSE_OUT
BCF PORTB,LED_LOW_OUT
BSF PORTB,LED_HIGH_OUT
BCF PORTB,LOW_OUT ;
BSF PORTB,HIGH_OUT ;
BCF PORTB,COM_OUT ;
;-------------------------------;
CLRF KEY_COUNT ;
;-------------------------------;
POWER_HIGH_KEY_SAMPLE:
CALL AD_KEY ;
;-------------------------------;
CALL POWER_S ;
SUBLW 55H ;
BTFSC STATUS,2 ;
GOTO POWER_S_BREAK ;
;-------------------------------;
BTFSC KEY_SIGN,ON_OFF_S
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,PULSE_S;
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,HIGH_S ;
BSF KEY_SIGN,USER_S ;
BTFSC KEY_SIGN,LOW_S ;
BSF KEY_SIGN,USER_S ;
BTFSS KEY_SIGN,USER_S ;
GOTO POWER_HIGH_KEY_END
;-------------------------------;
INCF KEY_COUNT,1 ;
MOVLW 0FH ;
SUBWF KEY_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_HIGH_KEY_SAMPLE
;-------------------------------;
BTFSC KEY_SIGN,ON_OFF_S
GOTO POWER_OFF_S ;
BTFSC KEY_SIGN,PULSE_S;
GOTO POWER_PULSE_S ;
BTFSC KEY_SIGN,LOW_S ;
GOTO POWER_LOW_S ;
BTFSC KEY_SIGN,HIGH_S ;
GOTO POWER_HIGH_WAIT ;
;-------------------------------;
POWER_HIGH_KEY_END:
CLRF CURRENT_COUNT ;
;-------------------------------;
;WAIT 1S CURRENT CHECK
;-------------------------------;
BTFSC STATUS_SIGN,R_CURRENT_S
GOTO POWER_HIGH_CURRENT_MAX
BTFSS TIME_SIGN,T_1S ;
GOTO POWER_HIGH_RUN ;
CALL TIME_END_RUN ;
BSF STATUS_SIGN,R_CURRENT_S
;-------------------------------;
POWER_HIGH_CURRENT_MAX:
CALL AD_CURRENT ;
;-------------------------------;
;CURRENT MAX I > 10.6A ?
;-------------------------------;
CALL AD_CURRENT_MAX ;
BTFSS CURRENT_SIGN,HI_S
GOTO POWER_HIGH_RUN ;
;-------------------------------;
INCF CURRENT_COUNT,1 ;
MOVLW 0FH ;
SUBWF CURRENT_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_HIGH_CURRENT_MAX
GOTO POWER_PROTECT_RUN
;-------------------------------;
POWER_HIGH_RUN:
GOTO POWER_HIGH_OUT ;
;-------------------------------;
POWER_HIGH_END:
call fan_delay_start
GOTO MAIN_RUN ;
;-----------------------------------------------;
POWER_RUN_S:
CLRF KEY_COUNT ;
POWER_RUN_S_WAIT:
CLRWDT ;
BTFSS PORTA,POWER_IN ;
GOTO MAIN_RUN ;
CALL DELAY_50uS ;
BTFSS PORTA,POWER_IN ;
GOTO MAIN_RUN ;
INCF KEY_COUNT,1 ;
MOVLW 05FH ;
SUBWF KEY_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_RUN_S_WAIT;
CLRF RUN_SIGN ;
CLRF POWER_SIGN ;
CALL POWER_OFF_ALL ;
GOTO FIRST_RUN ;
;-----------------------------------------------;
POWER_S:
CLRF POWER_COUNT ;
POWER_S_WAIT:
CLRWDT ;
BTFSS PORTA,POWER_IN ;
GOTO POWER_S_END ;
CALL DELAY_50uS ;
BTFSS PORTA,POWER_IN ;
GOTO POWER_S_END ;
INCF POWER_COUNT,1 ;
MOVLW 0FEH ;
SUBWF POWER_COUNT,0 ;
BTFSS STATUS,0 ;
GOTO POWER_S_WAIT ;
CLRF RUN_SIGN ;
CLRF POWER_SIGN ;
CALL POWER_OFF_ALL ;
RETLW 55H ;
POWER_S_END:
RETLW 00H ;
;-----------------------------------------------;
POWER_S_BREAK:
BCF PORTB,HIGH_OUT ;
BCF PORTB,LOW_OUT ;
CALL DELAY_10MS ;
BSF PORTB,COM_OUT ;
CALL DELAY_100MS ;
BSF PORTB,HIGH_OUT ;
CALL DELAY_100MS ;
CALL DELAY_100MS ;
CALL DELAY_100MS ;
CALL DELAY_100MS ;
BCF PORTB,HIGH_OUT ;
CALL DELAY_100MS ;
BSF PORTB,HIGH_OUT ;
CALL DELAY_100MS ;1
CALL DELAY_100MS ;
CALL DELAY_100MS ;
CALL DELAY_100MS ;
CALL DELAY_100MS ;2
;-------------------------------;
BCF PORTB,HIGH_OUT ;
BCF PORTB,LOW_OUT ;
CALL DELAY_300MS ;
CALL DELAY_300MS ;
BCF PORTB,COM_OUT ;
;-------------------------------;
CLRF PORTB ;
GOTO FIRST_RUN ;
;-----------------------------------------------;
POWER_BRAKE_RUN:
BCF PORTB,HIGH_OUT ;
BCF PORTB,LOW_OUT ;
CALL DELAY_10MS ;
BSF PORTB,COM_OUT ;
CALL DELAY_100MS ;
BSF PORTB,HIGH_OUT ;
CALL DELAY_100MS ;
call delay_100ms
call delay_100ms
call delay_100ms
BCF PORTB,HIGH_OUT ;
CALL DELAY_100MS ;
BSF PORTB,HIGH_OUT ;
CALL DELAY_100MS ;1
CALL DELAY_100MS ;2
call delay_100ms
call delay_100ms
GOTO POWER_BRAKE_RUN_END
;-------------------------------;
POWER_BRAKE_RUN_END:
BCF PORTB,HIGH_OUT ;
BCF PORTB,LOW_OUT ;
CALL DELAY_300MS ;
CALL DELAY_300MS ;
BCF PORTB,COM_OUT ;
;-------------------------------;
POWER_BRAKE_END:
;-------------------------------;
BSF PORTB,LED_POWER_OUT
BCF PORTB,LED_PULSE_OUT
BCF PORTB,LED_LOW_OUT
BCF PORTB,LED_HIGH_OUT
BCF PORTB,COM_OUT ;
BCF PORTB,LOW_OUT ;
BCF PORTB,HIGH_OUT ;
;------------------------------------------------------;
call fan_delay_start
;------------------------------------------------------;
GOTO MAIN_RUN ;
;-----------------------------------------------;
;EXCEPTION HANDLES
;-----------------------------------------------;
POWER_PROTECT_RUN:
CLRWDT ;
;-------------------------------;
POWER_PROTECT_RUN_ON:
CLRWDT ;
BSF PORTB,BUZZ_OUT ;
BSF PORTB,LED_POWER_OUT
BSF PORTB,LED_PULSE_OUT
BSF PORTB,LED_LOW_OUT
BSF PORTB,LED_HIGH_OUT
BCF PORTB,COM_OUT ;
BCF PORTB,LOW_OUT ;
BCF PORTB,HIGH_OUT ;
;-------------------------------;
MOVLW 0AH ;
MOVWF DEL_COUNT ;
;-------------------------------;
POWER_PROTECT_RUN_ON_WAIT:
CALL DELAY_100MS ;
DECFSZ DEL_COUNT,1 ;
GOTO POWER_PROTECT_RUN_ON_WAIT
;-------------------------------;
POWER_PROTECT_RUN_OFF:
CLRWDT ;
BCF PORTB,BUZZ_OUT ;
BCF PORTB,LED_POWER_OUT
BCF PORTB,LED_PULSE_OUT
BCF PORTB,LED_LOW_OUT
BCF PORTB,LED_HIGH_OUT
BCF PORTB,COM_OUT ;
BCF PORTB,LOW_OUT ;
BCF PORTB,HIGH_OUT ;
;-------------------------------;
MOVLW 0AH ;
MOVWF DEL_COUNT ;
;-------------------------------;
POWER_PROTECT_RUN_OFF_WAIT:
CALL DELAY_100MS ;
DECFSZ DEL_COUNT,1 ;
GOTO POWER_PROTECT_RUN_OFF_WAIT
GOTO POWER_PROTECT_RUN_ON
;-----------------------------------------------;
;***********************************************;
ORG 03FFH ;
GOTO RESET ;
;***********************************************;
END ;
;***********************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -