Vous êtes sur la page 1sur 4

LIST p=16F84 ; D�finition de processeur

#include <p16F84.inc> ; D�finitions de variables

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC


;time .61
TIME EQU .61
MAX EQU .9
;--------------------------------------------------------------------
CBLOCK 0x00C
w_temp : 1
status_temp : 1
cmp : 1
varH : 1
varT : 1
varO : 1
varH1 : 1
varT1 : 1
varO1 : 1
cmpt1: 1
cmpt2 : 1
cmpt3 : 1
ENDC
;--------------------------------------------------------------------
org 0x000
goto init
;--------------------------------------------------------------------
org 0x004
movwf w_temp
swapf STATUS,w
movwf status_temp

call temps

swapf status_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
retfie

inc1
movlw MAX
SUBWF varO,w
btfsc STATUS,Z
goto inc10
INCF varO
return
inc10
clrf varO
movlw MAX
SUBWF varT,w
btfsc STATUS,Z
goto inc100
INCF varT
return
inc100
clrf varT
movlw MAX
SUBWF varH,w
btfsc STATUS,Z
goto inc1000
INCF varH
RETURN
inc1000
clrf varH
;clrf varT
;clrf varO
return

temps
bcf INTCON,T0IF
DECFSZ cmp,f
return
call inc1
movF varH,w
movwf varH1
movf varT,w
movwf varT1
movf varO,w
movwf varO1
movlw TIME
movwf cmp
;bsf valide,0
return

;--------------------------------------------------------------------
;--------------------------------------------------------------------
init
clrf PORTA ; Sorties portA � 0
clrf PORTB ; sorties portB � 0
clrf EEADR ; permet de diminuer la consommation
bsf STATUS,RP0 ; s�lectionner banque 1
movlw b'10000101' ; charger masque
movwf OPTION_REG ; initialiser registre option

; Effacer RAM
; ------------
movlw 0x0c ; initialisation pointeur
movwf FSR ; pointeur d'adressage indirec
init1
clrf INDF ; effacer ram
incf FSR,f ; pointer sur suivant
btfss FSR,6 ; tester si fin zone atteinte (>=40)
goto init1 ; non, boucler
btfss FSR,4 ; tester si fin zone atteinte (>=50)
goto init1 ; non, boucler

; initialisations sp�cifiques
; ---------------------------
movlw b'00000000'
movwf TRISA
movlw b'00000001'
movwf TRISB ; LED en sortie (banque1)
bcf STATUS,RP0 ; repasser banque 0
movlw b'10110000'
movwf INTCON
clrf varH
clrf varT
clrf varO

clrf varH1
clrf varT1
clrf varO1

movlw TIME
movwf cmp
; clrf valide
goto start ; sauter au programme principal

;--------------------------------------------------------------------
afficheur
addwf PCL,f
retlw b'01111110'
retlw b'00001100'
retlw b'10110110'
retlw b'10011110'
retlw b'11001100'
retlw b'11011010'
retlw b'11111010'
retlw b'00001110'
retlw b'11111110'
retlw b'11011110'
retlw b'11101110'
retlw b'11111000'
retlw b'01110010'
retlw b'10111100'
retlw b'11110010'
retlw b'11100010'
;____________________________________________________________________
;--------------------------------------------------------------------

start

;btfsc valide,0
;goto pg

movF varO1,w
call afficheur

clrf PORTA
movwf PORTB
bsf PORTA,0

movF varT1,w
call afficheur

clrf PORTA
movwf PORTB
bsf PORTA,1
;------------
movF varH1,w
call afficheur

clrf PORTA
movwf PORTB
bsf PORTA,2

goto start

END