📄 hst1l.asm
字号:
OMS4 BCF NOTM,1
OMS5 BTFSS SIGN2,3 ;JUDGE IC?
BRA OMS15
CLRF WREG
CPFSEQ ICMAXH
BRA OMS7
MOVF ICMAXL,0
CPFSLT NOTIME
BRA OMS8
OMS7 BTFSC NOTM,2
BRA OMS9
BSF NOTM,2
BRA OMS12
OMS15 MOVFF ICMINH,COM1H
MOVFF ICMINL,COM1L
MOVFF II31,COM0H
MOVFF II30,COM0L
CALL FIBJ
BTFSC FLAG1,1
BRA OMS7
OMS8 BCF NOTM,2
BRA OMS12
OMS9 BSF NOTM,3
MOVLW 1EH
MOVWF SMPLE ;LOAD THE SAMPLE TIME(30ms) TO SMPLE AFTER SHUT OFF OF NO DELAY
BCF PORTB,4
BCF PORTB,5 ;SEND OUT THE ORDER OF SHUT OFF
BCF PORTF,6
BSF PDBACK,0
BSF PDBACK,1
BSF PDBACK,3
BCF PDBACK,2
BCF PORTF,2 ;BRIGHT THE LIGHTS OF SHUT OFF AND IR3
OMS10 DECFSZ SMPLE
BRA OMS12
BCF PIE1,2
BCF INTCON,7
BCF INTCON,6
BSF PORTB,4
CALL ACT12
BCF SIGN2,0
GOTO LOOP1
OMS12 RETURN
;****************WRITE EEPROM(NO TIME)************************
ACT12
MOVLB 00H
MOVLW 0FH
ANDWF PDBACK,1
MOVLW 01H
MOVWF EEADR
CALL RD_EEPROM
MOVFF EEDATA1,EPA0
MOVLW 11H
MOVWF EEADR
CALL RD_EEPROM
MOVFF EEDATA1,EPA1
MOVLW 21H
MOVWF EEADR
CALL RD_EEPROM
MOVFF EEDATA1,EPA2
MOVLW 31H
MOVWF EEADR
CALL RD_EEPROM
MOVFF EEDATA1,EPA3
MOVLW 01H
MOVWF EEADDR
MOVFF PDBACK,EEDATA1
CALL WR_EEPROM
MOVLW 11H
MOVWF EEADDR
MOVFF EPA0,EEDATA1
CALL WR_EEPROM
MOVLW 21H
MOVWF EEADDR
MOVFF EPA1,EEDATA1
CALL WR_EEPROM
MOVLW 31H
MOVWF EEADDR
MOVFF EPA2,EEDATA1
CALL WR_EEPROM
MOVLW 41H
MOVWF EEADDR
MOVFF EPA3,EEDATA1
CALL WR_EEPROM
NOP
NOP
NOP
BCF BZW,1
BSF INTCON,6
BSF INTCON,7
RETURN
;********AD INTERRUPT OF SAMPLING MANAGE INTERRUPT SUBROUTINE :1ms*********
ADINT
MOVLB 00H
BCF PIE1,6 ;SHUT OFF INTERRUPT
BCF PIR1,6 ;CLEAR FLAG BIT OF AD
MOVLW 00H
CPFSEQ CHANEL ;CHANEL:000?
BRA ADIAL1
BTFSC ADRESH,1 ;JUDGE THE HALF WAVE IS NEGATIVE?
BRA ADIAH2
COMF ADRESH
COMF ADRESL ;NEGATE THE NEGATIVE HALF WAVE
ADIAH2 BTFSS ADRESH,0 ;THE HALF WAVE IS POSITIVE
BRA TA2
MOVLW 0E0H ;IS THE POSITIVE HALF WAVE OVERFLOW?
CPFSGT ADRESL
BRA TA2
ADIAH4 INCF CHANEL ;CH NO.++
BCF PORTC,2 ;POINT TO IAL
BCF PORTC,1
BSF PORTC,0
NOP
BSF SIGN2,1
SETF IAMINL ;GIVE THE VALUE TO IAMIN
BSF IAMINH,0
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BRA TAD1
TA2 BCF SIGN2,1
MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF IAMINH,COM0H
MOVFF IAMINL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIA0
MOVFF ADRESH,IAMINH ;THE NEW VALUE REPLACE THE OLD ONE
MOVFF ADRESL,IAMINL
BRA ADIA0
ADIAL1 MOVLW 01H
CPFSEQ CHANEL ;JUDGE BE IAMAX??
BRA ADIB
BSF SIGN2,1
BTFSC ADRESH,1 ;JUDGE BE NEGATIVE OR POSITIVE HALF WAVE??
BRA ADIAL2
COMF ADRESH ;NEGATIVE HALF->ADRESH:ADRESL IS COMPLEMENT
COMF ADRESL
ADIAL2 MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF IAMAXH,COM0H
MOVFF IAMAXL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIA0
MOVFF ADRESH,IAMAXH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,IAMAXL
ADIA0 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
MOVLW 0AH
CPFSEQ COUNT4
BRA TA3
BRA ADIA1
TA3 BTFSS SIGN2,2
BRA TA4
BSF PORTC,0 ;SELECT THE CHANEL OF IBMAX
BSF PORTC,1
BCF PORTC,2
NOP
MOVLW 03H
MOVWF CHANEL ;POINT TO NEXT CHANEL:IBMAX
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
BRA TAD1
TA4
BCF PORTC,0 ;SELECT THE CHANEL OF IBMIN
BSF PORTC,1
BCF PORTC,2
NOP
MOVLW 02H
MOVWF CHANEL ;POINT TO NEXT CHANEL:IBMIN
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
TAD1 BCF PIE1,6
RETURN
ADIA1 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BCF PORTC,0 ;SELECT THE CHANEL OF IBMIN
BSF PORTC,1
BCF PORTC,2
NOP
MOVLW 02H
MOVWF CHANEL ;POINT TO NEXT CHANEL:IBMIN
BCF PIE1,6
CLRF TMR2
BSF PIE1,1
BSF T2CON,2 ;OPEN THE INTERRUPT OF CCP1
RETURN
;*********************** CHANNEL : IB *****************************
ADIB MOVLW 02H
CPFSEQ CHANEL ;CHANEL:010?
BRA ADIBL1
BTFSC ADRESH,1 ;JUDGE THE HALF WAVE IS NEGATIVE?
BRA ADIBH2
COMF ADRESH
COMF ADRESL ;NEGATE THE NEGATIVE HALF WAVE
ADIBH2 BTFSS ADRESH,0 ;THE HALF WAVE IS POSITIVE
BRA TB2
MOVLW 0E0H ;IS THE POSITIVE HALF WAVE OVERFLOW?
CPFSGT ADRESL
BRA TB2
ADIBH4 INCF CHANEL ;CH NO.++
BCF PORTC,2 ;POINT TO IBL
BSF PORTC,1
BSF PORTC,0
NOP
BSF SIGN2,2
SETF IBMINL ;GIVE THE VALUE TO IBMIN
BSF IBMINH,0
BSF T2CON,2
BSF PIE1,1
CLRF TMR2
CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BRA TBD1
TB2 BCF SIGN2,2
MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF IBMINH,COM0H
MOVFF IBMINL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIB0
MOVFF ADRESH,IBMINH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,IBMINL
BRA ADIB0
ADIBL1 MOVLW 03H
CPFSEQ CHANEL ;JUDGE BE IBMAX?
BRA ADIC
BSF SIGN2,2
BTFSC ADRESH,1 ;JUDGE BE NEGATIVE OR POSITIVE HALF WAVE??
BRA ADIBL2
COMF ADRESH ;NEGATIVE HALF->ADRESH:ADRESL IS COMPLEMENT
COMF ADRESL
ADIBL2 MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF IBMAXH,COM0H
MOVFF IBMAXL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIB0
MOVFF ADRESH,IBMAXH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,IBMAXL
ADIB0 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
MOVLW 0AH
CPFSEQ COUNT4
BRA TB3
BRA ADIB1
TB3 BTFSS SIGN2,3
BRA TB4
BSF PORTC,0 ;SELECT THE CHANEL OF ICMAX
BCF PORTC,1
BSF PORTC,2
NOP
MOVLW 05H
MOVWF CHANEL ;POINT TO NEXT CHANEL:ICMAX
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
BRA TBD1
TB4
BCF PORTC,0 ;SELECT THE CHANEL OF ICMIN
BCF PORTC,1
BSF PORTC,2
NOP
MOVLW 04H
MOVWF CHANEL ;POINT TO NEXT CHANEL:ICMIN
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
TBD1 BCF PIE1,6
RETURN
ADIB1 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BCF PORTC,0 ;SELECT THE CHANEL OF ICMIN
BCF PORTC,1
BSF PORTC,2
NOP
MOVLW 04H
MOVWF CHANEL ;POINT TO NEXT CHANEL:ICMIN
BCF PIE1,6 ;OPEN THE INTERRUPT OF AD
CLRF TMR2
BSF PIE1,1
BSF T2CON,2 ;OPEN THE INTERRUPT OF CCP1
RETURN
;*********************CHANNEL : IC ******************************
ADIC MOVLW 04H
CPFSEQ CHANEL ;CHANEL:100?
BRA ADICL1
BTFSC ADRESH,1 ;JUDGE THE HALF WAVE IS NEGATIVE?
BRA ADICH2
COMF ADRESH
COMF ADRESL ;NEGATE THE NEGATIVE HALF WAVE
ADICH2 BTFSS ADRESH,0 ;THE HALF WAVE IS POSITIVE
BRA TC2
MOVLW 0E0H ;IS THE POSITIVE HALF WAVE OVERFLOW?
CPFSGT ADRESL
BRA TC2
ADICH4 INCF CHANEL ;CH NO.++
BSF PORTC,2 ;POINT TO ICL
BCF PORTC,1
BSF PORTC,0
NOP
BSF SIGN2,3
SETF ICMINL ;GIVE THE VALUE TO ICMIN
BSF ICMINH,0
BSF T2CON,2
BSF PIE1,1
CLRF TMR2
CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BRA TCD1
TC2 BCF SIGN2,3
MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF ICMINH,COM0H
MOVFF ICMINL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIC0
MOVFF ADRESH,ICMINH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,ICMINL
BRA ADIC0
ADICL1 MOVLW 05H
CPFSEQ CHANEL ;JUDGE BE ICMAX??
BRA ADIN
BSF SIGN2,3
BTFSC ADRESH,1 ;JUDGE BE NEGATIVE OR POSITIVE HALF WAVE??
BRA ADICL2
COMF ADRESH ;NEGATIVE HALF->ADRESH:ADRESL IS COMPLEMENT
COMF ADRESL
ADICL2 MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF ICMAXH,COM0H
MOVFF ICMAXL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIC0
MOVFF ADRESH,ICMAXH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,ICMAXL
ADIC0 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
MOVLW 0AH
CPFSEQ COUNT4
BRA TC3
BRA ADIC1
TC3 BTFSS SIGN2,4
BRA TC4
BSF PORTD,3
BSF PORTC,0 ;SELECT THE CHANEL OF INMAX
BSF PORTC,1
BSF PORTC,2
NOP
MOVLW 07H
MOVWF CHANEL ;POINT TO NEXT CHANEL:INMAX
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
BRA TCD1
TC4
BCF PORTC,0 ;SELECT THE CHANEL OF INMIN
BSF PORTC,1
BSF PORTC,2
NOP
MOVLW 06H
MOVWF CHANEL ;POINT TO NEXT CHANEL:INMIN
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
TCD1 BCF PIE1,6
RETURN
ADIC1 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BCF PORTC,0 ;SELECT THE CHANEL OF INMIN
BSF PORTC,1
BSF PORTC,2
NOP
MOVLW 06H
MOVWF CHANEL ;POINT TO NEXT CHANEL:INMIN
BCF PIE1,6 ;OPEN THE INTERRUPT OF AD
CLRF TMR2
BSF PIE1,1
BSF T2CON,2 ;OPEN THE INTERRUPT OF CCP1
RETURN
;******************** CHANNEL : IN***********************************
ADIN MOVLW 06H
CPFSEQ CHANEL ;CHANEL:110?
BRA ADINL1
BTFSC ADRESH,1 ;JUDGE THE HALF WAVE IS NEGATIVE?
BRA ADINH2
COMF ADRESH
COMF ADRESL ;NEGATE THE NEGATIVE HALF WAVE
ADINH2 BTFSS ADRESH,0 ;THE HALF WAVE IS POSITIVE
BRA TN2
MOVLW 0E0H ;IS THE POSITIVE HALF WAVE OVERFLOW?
CPFSGT ADRESL
BRA TN2
ADINH4 INCF CHANEL ;CH NO.++
BSF PORTC,2 ;POINT TO INL
BSF PORTC,1
BSF PORTC,0
NOP
BSF SIGN2,4
SETF ICMINL ;GIVE THE VALUE TO INMIN
BSF ICMINH,0
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
BRA TND1
TN2 BCF SIGN2,4
MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF INMINH,COM0H
MOVFF INMINL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIN0
MOVFF ADRESH,INMINH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,INMINL
BRA ADIN0
ADINL1 MOVLW 07H
CPFSEQ CHANEL ;JUDGE BE INMAX??
BRA ADIG
BSF SIGN2,4
BTFSC ADRESH,1 ;JUDGE BE NEGATIVE OR POSITIVE HALF WAVE??
BRA ADINL2
COMF ADRESH ;NEGATIVE HALF->ADRESH:ADRESL IS COMPLEMENT
COMF ADRESL
ADINL2 MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF INMAXH,COM0H
MOVFF INMAXL,COM0L
CALL FIBJ
BTFSS FLAG1,1
BRA ADIN0
MOVFF ADRESH,INMAXH ;THE NEW VALUA REPLACE THE OLD ONE
MOVFF ADRESL,INMAXL
ADIN0 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
MOVLW 0AH
CPFSEQ COUNT4
BRA TN3
BRA ADIN1
TN3 BTFSS SIGN2,5
BRA TN4
; BCF ADCON0,5
; BSF ADCON0,4
; BCF ADCON0,3
; BCF ADCON0,2
MOVLW 11H
MOVWF ADCON0 ;SELECT AN1(IGMAX)
MOVLW 09H
MOVWF CHANEL ;POINT TO NEXT CHANEL:IGMAX
NOP
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
BRA TND1
TN4 ;BCF ADCON0,5
;BCF ADCON0,4
;BCF ADCON0,3
;BSF ADCON0,2
MOVLW 05H
MOVWF ADCON0 ;SELECT AN1(IGMIN)
MOVLW 08H
MOVWF CHANEL ;POINT TO NEXT CHANEL:IGMIN
NOP
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
TND1 BCF PIE1,6
RETURN
ADIN1 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
; BCF ADCON0,5
; BCF ADCON0,4
; BCF ADCON0,3
; BSF ADCON0,2
MOVLW 05H
MOVWF ADCON0 ;SELECT AN1(IGMIN)
MOVLW 08H
MOVWF CHANEL ;POINT TO NEXT CHANEL:IGMIN
NOP
BCF PIE1,6 ;OPEN THE INTERRUPT OF AD
CLRF TMR2
BSF PIE1,1
BSF T2CON,2 ;OPEN THE INTERRUPT OF CCP1
RETURN
;********************** CHANNEL : IG******************************************
ADIG
MOVLW 08H
CPFSEQ CHANEL ;JUDGE THE CHANEL IS IGMIN?
BRA ADIGL1
; MOVLW 03H
; MOVWF ADRESH
; MOVLW 0XFA
; MOVWF ADRESL
BTFSC ADRESH,1 ;JUDGE THE HALF WAVE IS NEGATIVE?
BRA ADIGH2
COMF ADRESH
COMF ADRESL ;NEGATE THE NEGATIVE HALF WAVE
ADIGH2 BTFSS ADRESH,0 ;THE HALF WAVE IS POSITIVE
BRA TG2
MOVLW 0E0H ;IS THE POSITIVE HALF WAVE OVERFLOW?
CPFSGT ADRESL
BRA TG2
ADIGH4
; BCF ADCON0,5
; BSF ADCON0,4
; BCF ADCON0,3
; BCF ADCON0,2
MOVLW 11H ;POINT TO AN4(IGMAX)
MOVWF ADCON0
INCF CHANEL ;POINT TO NEXT CHANEL
NOP
BSF SIGN2,5
CLRF TMR2
BSF PIE1,1
BSF T2CON,2
MOVLW 0FFH
MOVWF IGMINL
BSF IGMINH,0 ;SET THE IGMIN
CLRF ADRESH
CLRF ADRESL
BCF PIE1,6
RETURN
TG2 BCF SIGN2,5
MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF IGMINH,COM0H
MOVFF IGMINL,COM0L
CALL FIBJ ;JUDGE THE SIZE OF THE NEW VALUE ANG THE OLD ONE
BTFSS FLAG1,1
BRA ADIG9
MOVFF ADRESH,IGMINH ;THE NEW VALUE TAKE PLACE OF THE OLD ONE
MOVFF ADRESL,IGMINL
BRA ADIG9
ADIGL1 MOVLW 09H
CPFSEQ CHANEL ;BEING IGMAX
BRA AD10 ;TURN TO END
BSF SIGN2,5
BTFSC ADRESH,1 ;JUDGE BE POSITIVE OR NEGATIVE
BRA ADIGL2
COMF ADRESH ;GET COMPLEMENT OF THE AD'S RESULT
COMF ADRESL
ADIGL2 MOVLW 01H
ANDWF ADRESH
MOVFF ADRESH,COM1H
MOVFF ADRESL,COM1L
MOVFF IGMAXH,COM0H
MOVFF IGMAXL,COM0L
CALL FIBJ ;JUDGE THE SIZE OF THE NEW VALUE AND THE THE OLD ONE
BTFSS FLAG1,1
BRA ADIG9
MOVFF ADRESH,IGMAXH
MOVFF ADRESL,IGMAXL
ADIG9 CLRF ADRESH ;CLEAR THE RESULT OF AD CONVERTER
CLRF ADRESL
DECFSZ COUNT4 ;10ms COUNT DECREASE 1,JUDGE THE COUNT4 EQUAL 0?
BRA AD10
BSF SIGN2,0 ;SET THE FLAG OF 10ms
MOVLW 0AH ;SET THE ORIGINAL VALUE OF COUNT4
MOVWF COUNT4 ;READY FOR NEXT 10ms
BTFSS SIGN2,1 ;JUDGE THE HIGH/LOWER CHANEL OF IA
BRA ADI1
MOVFF IAMAXH,IAH
MOVFF IAMAXL,IAL
BRA ADI2
ADI1 MOVFF IAMINH,IAH
MOVFF IAMINL,IAL
ADI2 BTFSS SIGN2,2 ;JUDGE THE HIGH/LOWER CHANEL OF IB
BRA ADI3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -