; 176 LIGNES DE LISTING
;
; MEMOIRE PROGRAMME UTILISEE 30%
; MEMOIRE RAM UTILISEE       20%
;
W		EQU	H'000'
F		EQU	H'001'
C		EQU	H'000'
Z		EQU	H'002'
TMR0		EQU	H'001'
STATUS		EQU	H'003'
OSCCAL		EQU	H'005'
GPIO		EQU	H'006'
TEMPO1		EQU	H'007'
TEMPO2		EQU	H'008'
MEMO		EQU	H'009'
GRAFCET1	EQU	H'00A'
GRAFCET2	EQU	H'00B'
; Déclarations
		__CONFIG	H'001A'
; 
; Initialisation
		ORG	H'0000'
		MOVWF	OSCCAL
		CLRF	GPIO
		MOVLW	H'05'
		OPTION
		MOVLW	H'30'
		TRIS	GPIO
		MOVLW	H'0A'
		MOVWF	TEMPO1
		BSF	MEMO,1
		BSF	GPIO,0
		MOVLW	H'0A'
		MOVWF	GRAFCET1
		MOVLW	H'0A'
		MOVWF	TEMPO2
		BSF	MEMO,2
		BSF	GPIO,1
		MOVLW	H'0A'
		MOVWF	GRAFCET2
; 
;
; décrémente les tempos 1 et 2
; toutes les 0.01s
BOUCLE		MOVLW	H'9C'
		SUBWF	TMR0,W
		BTFSS	STATUS,C
		GOTO	$+.12
		CLRF	TMR0
; si tempo active (t1dn=1) décrémente
		BTFSS	MEMO,1
		GOTO	$+.4
		DECFSZ	TEMPO1,F
		GOTO	$+.2
; si on atteint zéro, désactive tempo
		BCF	MEMO,1
; si tempo active (t2dn=1) décrémente
		BTFSS	MEMO,2
		GOTO	$+.4
		DECFSZ	TEMPO2,F
		GOTO	$+.2
; si on atteint zéro, désactive tempo
		BCF	MEMO,2
; 
;
; déroulement du grafcet de la led1
CLIGNOTE1	MOVF	GRAFCET1,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	GPIO,5
		GOTO	$+.8
		MOVLW	H'0A'
		MOVWF	TEMPO1
		BSF	MEMO,1
		BSF	GPIO,0
		MOVLW	H'0A'
		MOVWF	GRAFCET1
		GOTO	CLIGNOTE2
		MOVLW	H'0A'
		SUBWF	GRAFCET1,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	MEMO,1
		GOTO	$+.8
		MOVLW	H'0F'
		MOVWF	TEMPO1
		BSF	MEMO,1
		BCF	GPIO,0
		MOVLW	H'14'
		MOVWF	GRAFCET1
		GOTO	CLIGNOTE2
		MOVLW	H'14'
		SUBWF	GRAFCET1,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	MEMO,1
		GOTO	$+.8
		MOVLW	H'0A'
		MOVWF	TEMPO1
		BSF	MEMO,1
		BSF	GPIO,0
		MOVLW	H'1E'
		MOVWF	GRAFCET1
		GOTO	CLIGNOTE2
		MOVLW	H'1E'
		SUBWF	GRAFCET1,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	MEMO,1
		GOTO	$+.8
		MOVLW	H'28'
		MOVWF	TEMPO1
		BSF	MEMO,1
		BCF	GPIO,0
		MOVLW	H'28'
		MOVWF	GRAFCET1
		GOTO	CLIGNOTE2
		MOVLW	H'28'
		SUBWF	GRAFCET1,W
		BTFSS	STATUS,Z
		GOTO	$+.6
		BTFSC	MEMO,1
		GOTO	$+.4
		BTFSS	GPIO,5
		GOTO	$+.2
		CLRF	GRAFCET1
;
; déroulement du grafcet de la led2
CLIGNOTE2	MOVF	GRAFCET2,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	GPIO,4
		GOTO	$+.8
		MOVLW	H'0A'
		MOVWF	TEMPO2
		BSF	MEMO,2
		BSF	GPIO,1
		MOVLW	H'0A'
		MOVWF	GRAFCET2
		GOTO	BOUCLE
		MOVLW	H'0A'
		SUBWF	GRAFCET2,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	MEMO,2
		GOTO	$+.8
		MOVLW	H'0F'
		MOVWF	TEMPO2
		BSF	MEMO,2
		BCF	GPIO,1
		MOVLW	H'14'
		MOVWF	GRAFCET2
		GOTO	BOUCLE
		MOVLW	H'14'
		SUBWF	GRAFCET2,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	MEMO,2
		GOTO	$+.8
		MOVLW	H'0A'
		MOVWF	TEMPO2
		BSF	MEMO,2
		BSF	GPIO,1
		MOVLW	H'1E'
		MOVWF	GRAFCET2
		GOTO	BOUCLE
		MOVLW	H'1E'
		SUBWF	GRAFCET2,W
		BTFSS	STATUS,Z
		GOTO	$+.10
		BTFSC	MEMO,2
		GOTO	$+.8
		MOVLW	H'28'
		MOVWF	TEMPO2
		BSF	MEMO,2
		BCF	GPIO,1
		MOVLW	H'28'
		MOVWF	GRAFCET2
		GOTO	BOUCLE
		MOVLW	H'28'
		SUBWF	GRAFCET2,W
		BTFSS	STATUS,Z
		GOTO	$+.6
		BTFSC	MEMO,2
		GOTO	$+.4
		BTFSS	GPIO,4
		GOTO	$+.2
		CLRF	GRAFCET2
		GOTO	BOUCLE
; 
		END
