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

📄 fp888_120v_1208.asm

📁 mdt 2051demo程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		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 + -