⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fp888_120v_1208.asm

📁 mdt 2051demo程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;------------------------------------------------------------------------------------------------------;
		CALL		DELAY_100MS	;
;------------------------------------------------------------------------------------------------------;
		BCF		PORTB,BUZZ_OUT	;
		RETLW		00H		;
;------------------------------------------------------------------------------------------------------;
POWER_OFF_ON:
		MOVLW		0FH		;
		MOVWF		DEL_COUNT	;
;-------------------------------;
POWER_OFF_ON_CHECK:
		CLRWDT				;
		BCF		POWER_SIGN,ON_S	;
		CLRF		KEY_SIGN	;
		CALL		AD_KEY		;
		BTFSS		KEY_SIGN,ON_OFF_S
		GOTO		POWER_OFF_ON_END;
		DECFSZ		DEL_COUNT,1	;
		GOTO		POWER_OFF_ON_CHECK
;------------------------------------------------------------------------------------------------------;
POWER_OFF_ON_WAIT:
		CLRWDT				;
		CLRF		KEY_SIGN	;
		CALL		AD_KEY		;
		BTFSC		KEY_SIGN,ON_OFF_S
		GOTO		POWER_OFF_ON_WAIT
;------------------------------------------------------------------------------------------------------;
		CALL		BUZZER_RUN	;
;------------------------------------------------------------------------------------------------------;
POWER_OFF_ON_ON:
		CALL		POWER_OFF_OFF	;
		BSF		POWER_SIGN,ON_S	;
;------------------------------------------------------------------------------------------------------;
POWER_OFF_ON_END:
		RETLW           00h
;------------------------------------------------------------------------------------------------------;
POWER_OFF_OFF:
		CLRWDT				;
		BSF		PORTB,LED_POWER_OUT
		BCF		PORTB,LED_PULSE_OUT
		BCF		PORTB,LED_LOW_OUT
		BCF		PORTB,LED_HIGH_OUT
		BCF		PORTB,LOW_OUT	;
		BCF		PORTB,HIGH_OUT	;
		BCF		PORTB,COM_OUT	;
		BSF		PORTA,MOTOR_OUT	;
		RETLW		00H		;

;------------------------------------------------------------------------------------------------------;
POWER_OFF_ALL:
		CLRWDT				;
		CLRF		PORTB		;
		RETLW		00H		;
;-----------------------------------------------;
;***********************************************;
START:
		CLRWDT				;
;-------------------------------;
		BSF		STATUS,5	;
		MOVLW		0BH		;B'00001011'
		MOVWF		TRISA		;
;-------------------------------;
		BCF		STATUS,5	;
		CLRF		PORTA		;
;-------------------------------;
		BSF		STATUS,5	;
		MOVLW		00H		;B'00000000'
		MOVWF		TRISB		;
;-------------------------------;
		BCF		STATUS,5	;
		CLRF		PORTB		;
;------------------------------------------------------------------------------------------------------;
		BSF		STATUS,5	;
		MOVLW		07H		;B'00000111'
		MOVWF		OPTION_	;
;------------------------------------------------------------------------------------------------------;
		MOVLW		020H		;00100000
		MOVWF		INTCON		;
;-------------------------------------------------------------------------------------------------------;
;A0、A1 IS AD PORT
;------------------------------------------------------------------------------------------------------;
		BSF		STATUS,5	;
		MOVLW		0FFH		;
		MOVWF		ADCON1		;
;------------------------------------------------------------------------------------------------------;
		BCF		STATUS,5	;
;-----------------------------------------------;
;CLEAN ALL RAM					;
;-----------------------------------------------;
MEM_CLEAN:					;
		MOVLW 		20H		;
		MOVWF 		FSR		;
MEM_CLEAN_WAIT:					;
		CLRWDT 				;
		CLRF		INDF		;
		INCF		FSR,1 		;
		MOVLW		4FH		;
		XORWF		FSR,0		;
		BTFSS		STATUS,2	;
		GOTO		MEM_CLEAN_WAIT	;
 		CLRF		INDF		;
;-----------------------------------------------;
		GOTO 		FIRST_RUN	;
;***********************************************;
FIRST_RUN:
;--------------------------------------------;
		movlw		00eh		;test is 1, practicality is 9
		movwf		fan_90s
		call		fan_delay_start
;---------------------------------------------;
first_run_1:
		btfsc		fan_sign,stop_sign
		call		fan_stop
		CLRF		KEY_COUNT	;
		CLRWDT				;
FIRST_RUN_WAIT:
		BTFSC		PORTA,POWER_IN	;
		GOTO		first_run_1	;
		CALL		DELAY_50uS	;
		BTFSC		PORTA,POWER_IN	;
		GOTO		first_run_1	;
		INCF		KEY_COUNT,1	;
		MOVLW		0FAH		;
		SUBWF		KEY_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		FIRST_RUN_WAIT	;
		CALL		POWER_OFF_OFF	;
;-----------------------------------------------;
;OUT ONE SECOND BUZZER
;-----------------------------------------------;
		BSF		PORTB,BUZZ_OUT	;
;-------------------------------;
		MOVLW		0AH		;
		MOVWF		DEL_COUNT	;
;-------------------------------;
BUZZER_RUN_WAIT:
		CALL		DELAY_100MS	;
		DECFSZ		DEL_COUNT,1	;
		GOTO		BUZZER_RUN_WAIT	;
;-------------------------------;
		BCF		PORTB,BUZZ_OUT	;
;-------------------------------;
		call		fan_delay_start
;--------------------------------;
		GOTO		MAIN_RUN	;
;***********************************************;
;-----------------------------------------------;
MAIN_RUN:
		CLRWDT				;
;-----------------------------------------------;
		CALL		AD_KEY		;110
;-------------------------------;
		BTFSC		KEY_SIGN,ON_OFF_S		;1
		GOTO		POWER_OFF_S			;
		BTFSC		KEY_SIGN,PULSE_S;		;1
		GOTO		POWER_PULSE_S	;
		BTFSC		KEY_SIGN,LOW_S	;		;1
		GOTO		POWER_LOW_S	;
		BTFSC		KEY_SIGN,HIGH_S	;		;1
		GOTO		POWER_HIGH_S	;
		BTFSC		PORTA,POWER_IN	;
		GOTO		POWER_RUN_S	;
		btfsc		fan_sign,stop_sign
		call		fan_stop
		GOTO		MAIN_RUN	;			2

;-----------------------------------------------;
fan_stop:
		bcf		intcon,7
		bcf		porta,motor_out
		bcf		fan_sign,stop_sign
		retlw		00h

fan_delay_start:
		movlw		00eh		;	test is 1 practicality is 14(14*5=70s)practicality 93s
		movwf		fan_90s
		bcf		status,5
		movlw		03CH		;
		movwf		TMR0		;
		movlw		020H		;00100000
		movwf		INTCON		;
		bsf		intcon,7
		retlw		00h
;-----------------------------------------------;
POWER_OFF_S:
		CALL		TIME_END_RUN	;
		CALL		POWER_OFF_ON	;
		BTFSS		POWER_SIGN,ON_S	;
		GOTO		POWER_OFF_S_END	;
;-------------------------------;
		CALL		BUZZER_RUN	;
;-------------------------------;
		BTFSS		RUN_SIGN,RUN_S	;
		GOTO		POWER_OFF_S_RUN	;
;-------------------------------;
POWER_OFF_S_RUN_OFF:
		CLRF		RUN_SIGN        ;
		CALL		POWER_OFF_OFF	;
		GOTO		POWER_BRAKE_RUN	;
;-------------------------------;
POWER_OFF_S_RUN:
		CLRF		RUN_SIGN        ;
		CALL		POWER_OFF_OFF	;
		CLRF		POWER_SIGN	;
;-------------------------------;
POWER_OFF_S_END:
		call		fan_delay_start
		GOTO		MAIN_RUN	;
;-----------------------------------------------;
;-----------------------------------------------;
POWER_PULSE_S:
		CALL		TIME_END_RUN	;
		MOVLW		1FH		;
		MOVWF		DEL_COUNT				;
;-------------------------------;
POWER_PULSE:
		CLRWDT								;
		CALL		AD_KEY					;
		BTFSS		KEY_SIGN,PULSE_S		;
		GOTO		POWER_PULSE_END		;
		DECFSZ		DEL_COUNT,1				;
		GOTO		POWER_PULSE			;
;-------------------------------;
		CALL		BUZZER_RUN				;
;-------------------------------;
		CALL		TIME_FIRST_RUN			;
;-------------------------------;
;PULSE OUT STATUS
;-------------------------------;
POWER_PULSE_OUT:
		CLRF		RUN_SIGN				;
		BSF		PORTB,LED_POWER_OUT
		BSF		PORTB,LED_PULSE_OUT
		BCF		PORTB,LED_LOW_OUT
		BCF		PORTB,LED_HIGH_OUT
		BCF		PORTB,LOW_OUT	;
		BSF		PORTB,HIGH_OUT	;
		BCF		PORTB,COM_OUT	;
		bsf		porta,motor_out
;-------------------------------;
		CLRF		KEY_COUNT	;
;-------------------------------;
POWER_PULSE_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,LOW_S;
		BSF		KEY_SIGN,USER_S	;
		BTFSC		KEY_SIGN,HIGH_S	;
		BSF		KEY_SIGN,USER_S	;
		BTFSS		KEY_SIGN,USER_S	;
		GOTO		POWER_PULSE_KEY_END
;-------------------------------;
		INCF		KEY_COUNT,1	;
		MOVLW		0FH		;
		SUBWF		KEY_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		POWER_PULSE_KEY_SAMPLE
;-------------------------------;
		BTFSC		KEY_SIGN,ON_OFF_S
		GOTO		POWER_OFF_S	;
		BTFSC		KEY_SIGN,LOW_S	;
		GOTO		POWER_LOW_S	;
		BTFSC		KEY_SIGN,HIGH_S	;
		GOTO		POWER_HIGH_S	;
;-------------------------------;
POWER_PULSE_KEY_END:
		CLRF		CURRENT_COUNT	;
;-------------------------------;
;WAIT 1S CURRENT CHECK
;-------------------------------;
		BTFSC		STATUS_SIGN,R_CURRENT_S
		GOTO		POWER_PULSE_CURRENT_MAX
		BTFSS		TIME_SIGN,T_1S	;
		GOTO		POWER_PULSE_RUN	;
		CALL		TIME_END_RUN	;
		BSF		STATUS_SIGN,R_CURRENT_S
;-------------------------------;
POWER_PULSE_CURRENT_MAX:
		CALL		AD_CURRENT	;
;-------------------------------;
;CURRENT MAX I > 10.6A ?
;-------------------------------;
		CALL		AD_CURRENT_MAX	;
		BTFSS		CURRENT_SIGN,HI_S
		GOTO		POWER_PULSE_RUN	;
;-------------------------------;
		INCF		CURRENT_COUNT,1	;
		MOVLW		0FH		;
		SUBWF		CURRENT_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		POWER_PULSE_CURRENT_MAX
		GOTO		POWER_PROTECT_RUN
;-------------------------------;
POWER_PULSE_RUN:
		CLRWDT				;
		CALL		AD_KEY		;
		BTFSC		KEY_SIGN,PULSE_S;
		CLRF		DEL_COUNT	;
;-------------------------------;
		INCF		DEL_COUNT,1	;
		MOVLW		1FH		;
		SUBWF		DEL_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		POWER_PULSE_OUT	;
;-------------------------------;
		BSF		PORTB,LED_POWER_OUT
		BCF		PORTB,LED_PULSE_OUT
		BCF		PORTB,LED_LOW_OUT
		BCF		PORTB,LED_HIGH_OUT
		BCF		PORTB,LOW_OUT	;
		BCF		PORTB,HIGH_OUT	;
		BCF		PORTB,COM_OUT	;
		GOTO		POWER_BRAKE_RUN	;
;-------------------------------;
POWER_PULSE_END:
		call		fan_delay_start
		GOTO		MAIN_RUN	;
;-----------------------------------------------;
;-----------------------------------------------;
POWER_LOW_S:
		CALL		TIME_END_RUN	;
		MOVLW		0FH		;
		MOVWF		DEL_COUNT	;
;-------------------------------;
POWER_LOW:
		CLRWDT				;
		CALL		AD_KEY		;
		BTFSS		KEY_SIGN,LOW_S	;
		GOTO		POWER_LOW_END	;
		DECFSZ		DEL_COUNT,1	;
		GOTO		POWER_LOW	;
;-------------------------------;
POWER_LOW_WAIT:
		CLRWDT				;
		CALL		AD_KEY		;
		BTFSC		KEY_SIGN,LOW_S	;
		GOTO		POWER_LOW_WAIT	;
;-------------------------------;
		CALL		BUZZER_RUN	;
;-------------------------------;
		CALL		TIME_FIRST_RUN	;
;-------------------------------;
POWER_LOW_OUT:
		CLRWDT				;
;-------------------------------;
;LOW OUT STATUS
;-------------------------------;
		CLRF		RUN_SIGN	;
		BSF		RUN_SIGN,RUN_S	;
		BSF		RUN_SIGN,R_LOW_S;
		BSF		PORTB,LED_POWER_OUT
		BCF		PORTB,LED_PULSE_OUT
		BSF		PORTB,LED_LOW_OUT
		BCF		PORTB,LED_HIGH_OUT
		BSF		PORTB,LOW_OUT	;
		BCF		PORTB,HIGH_OUT	;
		BCF		PORTB,COM_OUT	;
		bsf		porta,motor_out
;-------------------------------;
		CLRF		KEY_COUNT	;
;-------------------------------;
POWER_LOW_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_KEY_END
;-------------------------------;
		INCF		KEY_COUNT,1	;
		MOVLW		0FH		;
		SUBWF		KEY_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		POWER_LOW_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_KEY_END:
;-------------------------------;
		CLRF		CURRENT_COUNT	;
;-------------------------------;
;WAIT 1S CURRENT CHECK
;-------------------------------;
		BTFSC		STATUS_SIGN,R_CURRENT_S
		GOTO		POWER_LOW_CURRENT_MAX1
		BTFSS		TIME_SIGN,T_1S	;
		GOTO		POWER_LOW_RUN	;
		CALL		TIME_END_RUN	;
		BSF		STATUS_SIGN,R_CURRENT_S
;-------------------------------;
POWER_LOW_CURRENT_MAX1:
		CALL		AD_CURRENT	;
;-------------------------------;
;CURRENT MAX I > 10.6A ?
;-------------------------------;
		CALL		AD_CURRENT_MAX	;
		BTFSS		CURRENT_SIGN,HI_S
		GOTO		POWER_LOW_OUT_END
;-------------------------------;
		INCF		CURRENT_COUNT,1	;
		MOVLW		0FH		;
		SUBWF		CURRENT_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		POWER_LOW_CURRENT_MAX1
		GOTO		POWER_PROTECT_RUN
;-------------------------------;
POWER_LOW_OUT_END:
		CLRF		CURRENT_COUNT	;
;-------------------------------;
;CURRENT 3.2 > I > 1.4A ?
;-------------------------------;
POWER_LOW_RUN:
		CALL		AD_CURRENT	;
;-------------------------------;
		CALL		AD_CURRENT_1_4A	;
		BTFSS		CURRENT_SIGN,MI_S
		CALL		TIME_END_RUN	;
		BTFSS		CURRENT_SIGN,MI_S
		GOTO		POWER_LOW_OUT	;
;-------------------------------;
		INCF		CURRENT_COUNT,1	;
		MOVLW		0FH		;
		SUBWF		CURRENT_COUNT,0	;
		BTFSS		STATUS,0	;
		GOTO		POWER_LOW_RUN	;
;-------------------------------;
;TIME FIRST ?
;-------------------------------;
		BTFSS		TIME_SIGN,T_FIRST
		CALL		TIME_FIRST_RUN	;
;-------------------------------;
;TIME > 3S ?
;-------------------------------;

⌨️ 快捷键说明

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