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

📄 fp888_120v_1208.asm

📁 mdt 2051demo程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;*********************FP8888********************;
	;
;						;
;Type: MDT2051P			EXT_OSC: 4MHz	;
;						;
;	Add safety swhite off delay 90 second output
;	Chip port one


;***********************************************;
;FSR DEFINE
;***********************************************;
;INDF			EQU		00H             ;
;TMR0			EQU		01H             ;
;PCL				EQU		02H		;
;STATUS			EQU		03H             ;
;FSR				EQU		04H             ;
;PORTA			EQU		05H		;
;PORTB			EQU		06H		;
;INTCON			EQU		0BH		;
;TRISA			EQU		85H		;
;TRISB			EQU		86H		;
;OPTION_			EQU		81H		;
;;;-------------------------------;
;;;PIC16F711
;;;-------------------------------;
;ADCON1			EQU		88H		;
;ADCON0			EQU		08H		;
;ADRES			EQU		09H		;
;;;-------------------------------;
;;;PIC16F716
;;;-------------------------------;
;ADCON1			EQU		9FH		;
;ADCON0			EQU		1FH		;
;ADRES			EQU		1EH		;
;***********************************************;
;PORT DEFINE
;***********************************************;
;-----------------------------------------------;
;PORTA
;-----------------------------------------------;
KEY_IN			EQU		0		;
CURRENT_IN		EQU		1		;
MOTOR_OUT		EQU		2		;
POWER_IN		EQU		3		;
;NC_OUT			EQU		4		;
;-----------------------------------------------;
;PORTB
;-----------------------------------------------;
COM_OUT		EQU		2	;0	;
LOW_OUT		EQU		0	;1	;
HIGH_OUT		EQU		1	;2	;
BUZZ_OUT		EQU		3	;3	;
LED_PULSE_OUT		EQU		6	;4	;
LED_POWER_OUT		EQU		7	;5	;
LED_LOW_OUT		EQU		4	;6	;
LED_HIGH_OUT		EQU		5	;7	;
;-----------------------------------------------;
;***********************************************;
;REGISTER DEFINE
;***********************************************;
W_TEMP			EQU		33H		;
;***********************************************;
STATUS_TEMP		EQU		32H		;
;***********************************************;
FAN_SIGN		EQU		31H
init_start_sign		EQU		0
stop_sign			EQU		1
fan_90s_sign		EQU		2
;***********************************************;
FAN_90S			EQU		30H
;***********************************************;
POWER_COUNT		EQU		2FH		;
;***********************************************;
STATUS_SIGN		EQU		2EH		;
R_CURRENT_S		EQU		0		;
;***********************************************;
KEY_COUNT		EQU		2DH		;
;***********************************************;
CURRENT_COUNT		EQU		2CH		;
;***********************************************;
INT_DEL_COUNT		EQU		2BH		;
;***********************************************;
AD_DATA			EQU		2AH		;
;***********************************************;
ADC_SIGN		EQU		29H		;
;***********************************************;
TIME_DATA		EQU		28H		;
;***********************************************;
TIME_SIGN		EQU		27H		;
T_100MS			EQU		0		;
T_1S			EQU		1		;
T_2S			EQU		2		;
T_3S			EQU		3		;
T_4S			EQU		4		;
T_5S			EQU		5		;
T_10S			EQU		6		;
T_FIRST			EQU		7		;
;***********************************************;
CURRENT_SIGN		EQU		26H		;
HI_S			EQU		0		;
MI_S			EQU		1		;
LI_S			EQU		2		;
;***********************************************;
POWER_SIGN		EQU		25H		;
ON_S			EQU		0		;
OFF_S			EQU		1		;
TIME_S			EQU		2		;
;***********************************************;
RUN_SIGN		EQU		24H		;
RUN_S			EQU		0		;
ERROR_S		EQU		1		;
R_OFF_ON_S		EQU		2		;
R_PULSE_S		EQU		3		;
R_LOW_S		EQU		4		;
R_HIGH_S		EQU		5		;
R_FIRST_S		EQU		6		;
;***********************************************;
KEY_SIGN		EQU		23H		;
ON_OFF_S		EQU		0		;
PULSE_S			EQU		1		;
LOW_S			EQU		2		;
HIGH_S			EQU		3		;
USER_S			EQU		4		;
;***********************************************;
DEL_COUNT2		EQU		22H		;
;***********************************************;
DEL_COUNT1		EQU		21H		;
;***********************************************;
DEL_COUNT		EQU		20H		;
;***********************************************;
			ORG		0000H		;
RESET:
		nop
		GOTO		START		;
;***********************************************;
		ORG		0004H		;
INTI_RUN:
		MOVWF		W_TEMP		;
		MOVF		STATUS,0	;
		MOVWF 		STATUS_TEMP	;
		BTFSS		INTCON,2	;	;2
		GOTO		INTI_RUN_END	;
		BCF		INTCON,2	;	;3
		MOVLW		00EH		;	;4
		MOVWF		INT_DEL_COUNT	;	;5
INTI_RUN_WAIT:
		CLRWDT				;	;1
		DECFSZ		INT_DEL_COUNT,1	;	;3
		GOTO		INTI_RUN_WAIT	;
;------------------------------------------------------------------------------------------------------;
		INCF		TIME_DATA,1	;	;1
;------------------------------------------------------------------------------------------------------;
		BTFSC		TIME_DATA,0	;	;2
		BSF		TIME_SIGN,T_100MS	;3
;------------------------------------------------------------------------------------------------------;
		MOVLW		014H		;	;4
		XORWF		TIME_DATA,0	;	;5
		BTFSC		STATUS,2	;	;6
		goto		set_1
		goto		next_1
set_1:
		BSF		TIME_SIGN,T_1S	;	;7
;------------------------------------------------------------------------------------------------------;
next_1:
		MOVLW		28H		;	;8
		XORWF		TIME_DATA,0	;	;9
		BTFSC		STATUS,2	;	;0
		BSF		TIME_SIGN,T_2S	;	;1
;------------------------------------------------------------------------------------------------------;
		MOVLW		3CH		;	;2
		XORWF		TIME_DATA,0	;	;3
		BTFSC		STATUS,2	;	;4
		BSF		TIME_SIGN,T_3S	;	;5
;------------------------------------------------------------------------------------------------------;
		MOVLW		50H		;	;6
		XORWF		TIME_DATA,0	;	;7
		BTFSC		STATUS,2	;	;8
		BSF		TIME_SIGN,T_4S	;	;9
;-------------------------------------------------------------------------------------------------------;
		MOVLW		64H		;	;0
		XORWF		TIME_DATA,0	;	;1
		BTFSC		STATUS,2	;	;2
		goto		set_5
		goto		next_5
set_5:
		BSF		TIME_SIGN,T_5S	;	;3
		decfsz		fan_90s,1
		goto		next_5
		goto		fan_stop_init
next_5:
		BTFSS		TIME_SIGN,T_5S	;	;8
       		goto       		 next_11
		CLRF		TIME_DATA	;	;9
		clrf        		time_sign

;------------------------------------------------------------------------------------------------------;
;		MOVLW		0C8H		;	;4
;		XORWF		TIME_DATA,0	;	;5
;		BTFSC		STATUS,2	;	;6
;		goto		set_10
;		goto		next_10
;set_10:
;		BSF		TIME_SIGN,T_10S	;	;7
;		decfsz		fan_90s,1
;		goto		next_10
;		goto		fan_stop_init
;-------------------------------------------------------------------------------------------------------;
;next_10:
;		BTFSS		TIME_SIGN,T_10S	;	;8
;      		goto       		 next_11
;		CLRF		TIME_DATA	;	;9
;      		 clrf        		time_sign
;------------------------------------------------------------------------------------------------------;
next_11:
		NOP				;	;0
		NOP				;	;1
;-------------------------------;
INTI_RUN_END:
		MOVF		STATUS_TEMP,0	;
		MOVWF		STATUS		;
		SWAPF		W_TEMP,1	;
		SWAPF		W_TEMP,0	;
		RETFIE				;
;--------------------------------;
fan_stop_init:
		bsf			fan_sign,stop_sign
		clrf			time_sign
		clrf			time_data
		goto			INTI_RUN_END
;***********************************************;
		ORG		050H		;
;***********************************************;
;-----------------------------------------------;
DELAY_50uS:
		MOVLW		0CH						;3	12 * 4 = 48
		MOVWF		DEL_COUNT1				;4
DELAY_50uS_WAIT:							;
		CLRWDT								;1
		DECFSZ		DEL_COUNT1,1			;2
		GOTO		DELAY_50uS_WAIT	;
		RETLW		00H		;
;-----------------------------------------------;
;-----------------------------------------------;
DELAY_10MS:
		MOVLW		08H		;1	8 * 1245 +80 * 5 = 10MS
		MOVWF		DEL_COUNT1	;2
DELAY_10MS_WAIT1:				;
		MOVLW		0F9H		;3	249 * 5 = 1245
		MOVWF		DEL_COUNT2	;4
DELAY_10MS_WAIT2:				;
		CLRWDT				;1
		NOP				;2
		DECFSZ		DEL_COUNT2,1	;5
		GOTO		DELAY_10MS_WAIT2;
		DECFSZ		DEL_COUNT1,1	;1
		GOTO		DELAY_10MS_WAIT1;
		RETLW		00H		;
;-----------------------------------------------;
DELAY_100MS:
		MOVLW		050H		;1	80 * 1245 +80 * 5 = 100MS
		MOVWF		DEL_COUNT1	;2
DELAY_100MS_WAIT1:				;
		MOVLW		0F9H		;3	249 * 5 = 1245
		MOVWF		DEL_COUNT2	;4
DELAY_100MS_WAIT2:				;
		CLRWDT				;1
		NOP				;2
		DECFSZ		DEL_COUNT2,1	;5
		GOTO		DELAY_100MS_WAIT2
		DECFSZ		DEL_COUNT1,1	;1
		GOTO		DELAY_100MS_WAIT1
		RETLW		00H		;
;-----------------------------------------------;
DELAY_300MS:
		MOVLW		0F0H		;1	240 * 1245 +240 * 5 = 300MS
		MOVWF		DEL_COUNT1	;2
DELAY_300MS_WAIT1:				;
		MOVLW		0F9H		;3	249 * 5 = 1245
		MOVWF		DEL_COUNT2	;4
DELAY_300MS_WAIT2:				;
		CLRWDT				;1
		NOP				;2
		DECFSZ		DEL_COUNT2,1	;5
		GOTO		DELAY_300MS_WAIT2
		DECFSZ		DEL_COUNT1,1	;1
		GOTO		DELAY_300MS_WAIT1
		RETLW		00H		;
;-----------------------------------------------;
;-----------------------------------------------;
TIME_FIRST_RUN:
		CLRWDT				;
		CLRF		TIME_SIGN	;
		BSF			TIME_SIGN,T_FIRST
		CLRF		TIME_DATA	;
		MOVLW		3CH		;
		MOVWF		TMR0		;
		MOVLW		020H		;00100000
		MOVWF		INTCON		;
		BSF			INTCON,7	;
		RETLW		00H		;
;-----------------------------------------------;
;-----------------------------------------------;
TIME_END_RUN:
		CLRWDT				;
		CLRF		TIME_SIGN	;
		BCF		INTCON,7	;
		RETLW		00H		;
;-----------------------------------------------;
;-----------------------------------------------;
AD_SAMPLE:
		BSF		STATUS,5					;1
		MOVLW		02H						;1
		MOVWF		ADCON1					;1
		BCF		STATUS,5					;1
;-------------------------------;
		MOVLW		0FFH					;1
		MOVWF		ADRES					;1
		MOVLW		0C0H					;1
		MOVWF		ADCON0					;1
;-------------------------------;
		BTFSC		ADC_SIGN,3				;1
		BSF		ADCON0,3				;1
		BTFSC		ADC_SIGN,4				;1
		BSF		ADCON0,4				;1
;--------------------------------------------------------------------------------------------------;
		BSF		ADCON0,0				;1
;---------------------------------------------------------------------------------------------------;
		CALL		DELAY_50uS				;2+50
;-----------------------------------------------------------------------------------------------------;
		BSF		ADCON0,2				;1
;-------------------------------;
AD_SAMPLE_WAIT:
		CLRWDT								;1
		NOP									;1
		NOP									;1
		BTFSC		ADCON0,2				;1
		GOTO		AD_SAMPLE_WAIT			;2
;-------------------------------;
		MOVF		ADRES,0					;1
		MOVWF		AD_DATA					;1
;-------------------------------;
		MOVLW		0C0H					;1
		MOVWF		ADCON0					;1
;-------------------------------;
AD_SAMPLE_END:
		BSF			STATUS,5					;1
		MOVLW		0FFH					;1
		MOVWF		ADCON1					;1
		BCF			STATUS,5					;1
		RETLW		00H						;2
;-----------------------------------------------;
;READ KEY VALUE
;-----------------------------------------------;
AD_KEY:
		CLRWDT								;		1
		BCF		ADC_SIGN,3				;CH = 1	1
		BCF		ADC_SIGN,4				;		1
;-------------------------------------------------------------------------------------------------;
		CALL		AD_SAMPLE				;		2+100
;-------------------------------------------------------------------------------------------------;
		CLRF		KEY_SIGN				;		1
;--------------------------------------------------------------------------------------------------;
AD_KEY_ALL:
		MOVLW		0B4H		;>3.53V				1
		SUBWF		AD_DATA,0	;					1
		BTFSC		STATUS,0	;						1
		GOTO		AD_KEY_END	;					2
;-------------------------------;
AD_KEY_LOW:
		MOVLW		8CH		;>2.75V
		SUBWF		AD_DATA,0	;
		BTFSS		STATUS,0	;
		GOTO		AD_KEY_HIGH	;
		BSF			KEY_SIGN,LOW_S	;
		GOTO		AD_KEY_END	;
;-------------------------------;
AD_KEY_HIGH:
		MOVLW		5AH		;>1.76V
		SUBWF		AD_DATA,0	;
		BTFSS		STATUS,0	;
		GOTO		AD_KEY_PULSE	;
		BSF			KEY_SIGN,HIGH_S	;
		GOTO		AD_KEY_END	;
;-------------------------------;
AD_KEY_PULSE:
		MOVLW		1EH		;>0.59V
		SUBWF		AD_DATA,0	;
		BTFSS		STATUS,0	;
		GOTO		AD_KEY_OFF	;
		BSF			KEY_SIGN,PULSE_S;
		GOTO		AD_KEY_END	;
;-------------------------------;
AD_KEY_OFF:
		MOVLW		1EH		;<0.59V
		SUBWF		AD_DATA,0	;
		BTFSC		STATUS,0	;
		GOTO		AD_KEY_OFF	;
		BSF			KEY_SIGN,ON_OFF_S
;-------------------------------;
AD_KEY_END:
		RETLW		00H		;2
;-----------------------------------------------;
;READ CURRENT VALUE
;-----------------------------------------------;
AD_CURRENT:
		CLRWDT				;1
;---------------------------------------------------------------------------------------------------;
		BSF		ADC_SIGN,3	;CH = 2	1
		BCF		ADC_SIGN,4	;1
;-----------------------------------------------------------------------------------------------------;
		CALL		AD_SAMPLE	;2+100
;-------------------------------;
AD_CURRENT_END:
		RETLW		00H		;	2
;-----------------------------------------------;
;CURRENT MAX I > 10.6A ?
;-----------------------------------------------;
AD_CURRENT_MAX:
		CLRWDT				;
		CLRF		CURRENT_SIGN	;
;------------------------------------------------------------------------------------------------------;
		MOVLW		84H		;2.6V	10.6A
		SUBWF		AD_DATA,0	;
		BTFSC		STATUS,0	;
		BSF		CURRENT_SIGN,HI_S
;------------------------------------------------------------------------------------------------------;
		RETLW		00H		;
;------------------------------------------------------------------------------------------------------;
AD_CURRENT_1_4A:
		CLRWDT				;
		CLRF		CURRENT_SIGN	;
;-----------------------------------------------------------------------------------------------------;
AD_CURRENT_1_4A_H:
		MOVLW		44H		;>1.37V	5.6A
		SUBWF		AD_DATA,0	;
		BTFSS		STATUS,0	;
		GOTO		AD_CURRENT_1_4A_L
;------------------------------------------------------------------------------------------------------;
		BSF			CURRENT_SIGN,MI_S
		BCF		CURRENT_SIGN,LI_S
		GOTO		AD_CURRENT_1_4A_END
;------------------------------------------------------------------------------------------------------;
AD_CURRENT_1_4A_L:
		MOVLW		3EH		;<1.15V	4.7A
		SUBWF		AD_DATA,0	;
		BTFSC		STATUS,0	;
		GOTO		AD_CURRENT_1_4A_END
		BCF		CURRENT_SIGN,MI_S
		BSF		CURRENT_SIGN,LI_S
;------------------------------------------------------------------------------------------------------;
AD_CURRENT_1_4A_END:
		RETLW		00H		;
;------------------------------------------------------------------------------------------------------;
;OUT 100MS SECOND BUZZER
;------------------------------------------------------------------------------------------------------;
BUZZER_RUN:
		BSF		PORTB,BUZZ_OUT	;

⌨️ 快捷键说明

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