📄 fp888_120v_1208.asm
字号:
;*********************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 + -