
bibou1234
|
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x020
result : 1
result1 : 1
result2 : 1
Delay1
Delay2
endc
org 0x000
;detection des defauts pour la pression
Start:
movlw 0x00
movwf PORTC
movlw 0x00
movwf PORTA
movlw 0x00
movwf PORTB
bsf PORTC,7
bsf STATUS,RP0
movlw 0xFF
movwf TRISA
clrf TRISC
clrf TRISB
movlw 0x10
movwf ADCON1
bcf STATUS,RP0
bsf STATUS,RP1
movlw b'00000001' ;Configuration de AN0 comme pin analogique
movwf ANSEL
bcf STATUS,RP0
bcf STATUS,RP1
movlw 0x01
movwf ADCON0
MainLoop:
nop ;Attente de 5µs
nop ;1µs
nop ;1µs
nop ;1µs
nop ;1µs
bsf ADCON0,GO
btfss ADCON0,GO
goto $-1
movf ADRESH,w
movwf result
Mavaleur1:
movf result,w
sublw 0x0A
btfss STATUS,C
goto Mavaleur2
bsf PORTC,2
bsf PORTC,5
goto Start1
;
Mavaleur2: ;On est inférieur à 1.8V donc on détecte le défaut « ILL »
movf result,w
sublw 0x5C ;On soustrait 0x05C à « result »
btfss STATUS,C
goto Mavaleur3
bsf PORTC,2
bsf PORTC,4
goto Start1
Mavaleur3: ;On est inférieur à 2,2V donc on détecte aucun défaut
movf result,w
sublw 0x70
btfss STATUS,C
goto Mavaleur4
bsf PORTC,1
goto Start1
;
Mavaleur4: ;On est inférieur à 3.15V donc on détecte le défaut « ILL »
movf result,w
sublw 0xA1
btfss STATUS,C
goto Mavaleur5
bsf PORTC,2
bsf PORTC,4
goto Start1
Mavaleur5: ;On est inférieur à 3.55V donc on détecte le défaut « OC »
movf result,w
sublw 0xB5
btfss STATUS,C
goto Mavaleur6
bsf PORTC,2
bsf PORTC,3
goto Start1
Mavaleur6: ;On est inférieur à 4.8V donc on détecte le défaut « ILL »
movf result,w
sublw 0xF5
btfss STATUS,C
goto Mavaleur7
bsf PORTC,2
bsf PORTC,4
goto Start1
Mavaleur7: ;On est inférieur à 5V donc on détecte le défaut « SCBAT
movf result,w
sublw 0xFF ;On soustrait 0xFF à « result »
btfss STATUS,C
goto Start
bsf PORTC,2
bsf PORTC,6
goto Start1
;detection des defauts pour la temperature
Start1:
bsf STATUS,RP0
clrf TRISB
movlw 0x10
movwf ADCON1
bcf STATUS,RP0
bcf STATUS,RP0
bsf STATUS,RP1
movlw b'00000010'
movwf ANSEL
bcf STATUS,RP0
bcf STATUS,RP1
movlw 0x05
movwf ADCON0
MainLoop1:
nop
nop
nop
nop
nop
bsf ADCON0,GO
btfss ADCON0,GO
goto $-1
movf ADRESH,w
movwf result1
Mavaleur8:
movf result1,w
sublw 0x0A
btfss STATUS,C
goto Mavaleur9
bsf PORTC,0
bsf PORTC,5
goto Start2
;
Mavaleur9:
movf result1,w
sublw 0x5C
btfss STATUS,C
goto Mavaleur10
bsf PORTC,0
bsf PORTC,4
goto Start2
Mavaleur10:
movf result1,w
sublw 0x70
btfss STATUS,C
goto Mavaleur11
bsf PORTB,4
goto Start2
Mavaleur11:
movf result1,w
sublw 0xA1
btfss STATUS,C
goto Mavaleur12
bsf PORTC,0
bsf PORTC,4
goto Start2
Mavaleur12:
movf result1,w
sublw 0xB5
btfss STATUS,C
goto Mavaleur13
bsf PORTC,0
bsf PORTC,3
goto Start2
Mavaleur13:
movf result1,w
sublw 0xF5
goto Mavaleur14
bsf PORTC,0
bsf PORTC,4
goto Start2
Mavaleur14:
movf result1,w
sublw 0xFF
goto Start1
bsf PORTC,0
bsf PORTC,6
goto Start2
;signal batterie
Start2:
clrf TRISB
bsf STATUS,RP0
bcf TRISB,7
bcf STATUS,RP0
movlw 0x10
movwf ADCON1
bcf STATUS,RP0
bsf STATUS,RP1
movlw b'00000100'
movwf ANSEL
bcf STATUS,RP0
bcf STATUS,RP1
movlw b'00001001'
movwf ADCON0
MainLoop2:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
bsf PORTB,7
bsf ADCON0,GO
btfss ADCON0,GO
goto $-1
movf ADRESH,w
movwf result2
Mavaleur15:
movf result2,w
sublw 0xAD
btfss STATUS,C
bcf PORTB,7
goto Start2
goto OndelayLoop
; movlw D'255'
movwf Delay1
movlw D'255'
movwf Delay2
OndelayLoop:
decfsz Delay1,f
goto OndelayLoop
goto OndelayLoop
bcf PORTC,0
OffDelayLoop:
decfsz Delay1,f
goto OffDelayLoop
decfsz Delay2,f
goto OffDelayLoop
goto MainLoop2
goto Start
.
end
|