Vous êtes sur la page 1sur 7

list p=16f84a

#include <p16f84a.inc>
UNIT EQU 0X10
DIZ EQU 0X11
CENTS EQU 0X12
MIL EQU 0X13
CMPT1 EQU 0X14
CMPT2 EQU 0X15
CMPT3 EQU 0X16
ORG 0x000
BSF STATUS ,RP0
CLRF TRISA
CLRF TRISB
BCF STATUS,RP0
CLRF UNIT
CLRF DIZ

AFFICH:

MOVLW 0X50
MOVWF CMPT2
ENC2:
MOVLW 0X10
MOVWF CMPT3

ENC1:
MOVF UNIT,0
MOVWF PORTB
MOVLW 0X01
MOVWF PORTA
CALL TEMPO
MOVLW 0XFF
MOVWF PORTA

MOVF DIZ,0
MOVWF PORTB
MOVLW 0X02
MOVWF PORTA
CALL TEMPO
movlw 0XFF
movwf PORTA

DECFSZ CMPT3,1
GOTO ENC1
DECFSZ CMPT2,1
GOTO ENC2
INCF UNIT,1
MOVF UNIT,0
SUBLW 0X0A
BTFSS STATUS,Z
GOTO AFFICH
CLRF UNIT

INCF DIZ,1
MOVF DIZ,0
SUBLW 0X0A
BTFSS STATUS,Z
GOTO AFFICH
CLRF UNIT
CLRF DIZ

TEMPO:
MOVLW 0x40
MOVWF CMPT1
ENCORE:
decfsz CMPT1,1
GOTO ENCORE
RETURN
END

list p=16f84a
#include <p16f84a.inc>

STATUS EQU 0X03


PORTB EQU 0X06
TRISB EQU 0X86
CMPT1 EQU 0X10
CMPT2 EQU 0X11
CMPT3 EQU 0X12
C8 equ 0X13
RP0 EQU 0X05
EEADR EQU 0X09
EEDATA EQU 0X08
EECON1 EQU 0X88

;xxxxxxxxxxxxxxxxxxxx
; Démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
; faire clignoter une LED sur la ligne RB2 avec une fréquence de 1Hz. (1/2,1/2)
ORG 0X2100
DE 0XFF,0X8F,0X0F,0X3B

org 0x000
; initialisation
;programmer RPORTB en sortie = TRISB = 0X00

BSF STATUS,RP0 ;banque 1


CLRF TRISB
BCF STATUS,RP0 ;banque 0
; fin de l'initialisation
DEBUTVRAI:
MOVLW 0X04
MOVWF C8
MOVLW 0X00 ; adresse est une valeur entre 00 et 3F.
MOVWF EEADR ; écriture adresse dans registre Adresse.
DEBUT:
BSF STATUS,RP0 ; accès page 1.
BSF EECON1,0 ; bit RD = 1 pour débuter lecture.
BCF STATUS,RP0 ; Accès page 0.
MOVF EEDATA,0 ; lecture Data et mise dans W.
MOVWF PORTB
CALL tempo
INCF EEADR,1
decfsz C8,1
GOTO DEBUT
GOTO DEBUTVRAI

tempo: ; Temporisation logicielle 0,5 S


MOVLW 0X02
MOVWF CMPT3
ENCORE3:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT2 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE2:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT1 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE1: ;
DECFSZ CMPT1,1 ; 1/2 : 1 X (FF -
1)+ 2 X 1 = FF + 1
GOTO ENCORE1 ; 2 X (FF - 1)
= 2xFF - 2
DECFSZ CMPT2,1
GOTO ENCORE2
DECFSZ CMPT3,1
GOTO ENCORE3
RETURN ; 2 X 1
= 2
; DT = 3+ 3xFF = (1+ FF)x3 x T (T = 1/F), F fréquence du microcontroleur = 1 MHz
==> T = 1 MLICRO S
; T = 768 microS

end
list p=16f84a
#include <p16f84a.inc>

STATUS EQU 0X03


PORTB EQU 0X06
TRISB EQU 0X86
CMPT1 EQU 0X10
CMPT2 EQU 0X11
CMPT3 EQU 0X12
C8 equ 0X13
RP0 EQU 0X05
EEADR EQU 0X09
EEDATA EQU 0X08
EECON1 EQU 0X88

;xxxxxxxxxxxxxxxxxxxx
; Démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
; faire clignoter une LED sur la ligne RB2 avec une fréquence de 1Hz. (1/2,1/2)
ORG 0X2100
DE 0XFF,0X8F,0X0F,0X3B

org 0x000
; initialisation
;programmer RPORTB en sortie = TRISB = 0X00
BSF STATUS,RP0 ;banque 1
CLRF TRISB
BCF STATUS,RP0 ;banque 0
; fin de l'initialisation
DEBUTVRAI:
MOVLW 0X04
MOVWF C8
MOVLW 0X00 ; adresse est une valeur entre 00 et 3F.
MOVWF EEADR ; écriture adresse dans registre Adresse.
DEBUT:
BSF STATUS,RP0 ; accès page 1.
BSF EECON1,0 ; bit RD = 1 pour débuter lecture.
BCF STATUS,RP0 ; Accès page 0.
MOVF EEDATA,0 ; lecture Data et mise dans W.
MOVWF PORTB
CALL tempo
INCF EEADR,1
decfsz C8,1
GOTO DEBUT
GOTO DEBUTVRAI

tempo: ; Temporisation logicielle 0,5 S


MOVLW 0X02
MOVWF CMPT3
ENCORE3:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT2 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE2:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT1 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE1: ;
DECFSZ CMPT1,1 ; 1/2 : 1 X (FF -
1)+ 2 X 1 = FF + 1
GOTO ENCORE1 ; 2 X (FF - 1)
= 2xFF - 2
DECFSZ CMPT2,1
GOTO ENCORE2
DECFSZ CMPT3,1
GOTO ENCORE3
RETURN ; 2 X 1
= 2
; DT = 3+ 3xFF = (1+ FF)x3 x T (T = 1/F), F fréquence du microcontroleur = 1 MHz
==> T = 1 MLICRO S
; T = 768 microS

end
list p=16f84a
#include <p16f84a.inc>

STATUS EQU 0X03


PORTB EQU 0X06
TRISB EQU 0X86
CMPT1 EQU 0X10
CMPT2 EQU 0X11
CMPT3 EQU 0X12
RP0 EQU 0X05
;xxxxxxxxxxxxxxxxxxxx
; Démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
; faire clignoter une LED sur la ligne RB2 avec une fréquence de 1Hz. (1/2,1/2)
org 0x000
; initialisation
;programmer RPORTB en sortie = TRISB = 0X00

BSF STATUS,RP0 ;banque 1


CLRF TRISB
BCF STATUS,RP0 ;banque 0
; fin de l'initialisation
DEBUT:
MOVLW 0X01;00000001
MOVWF PORTB
CALL tempo
RLF PORTB,1
GOTO DEBUT

tempo: ; Temporisation logicielle 0,5 S


MOVLW 0X02
MOVWF CMPT3
ENCORE3:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT2 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE2:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT1 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE1: ;
DECFSZ CMPT1,1 ; 1/2 : 1 X (FF -
1)+ 2 X 1 = FF + 1
GOTO ENCORE1 ; 2 X (FF - 1)
= 2xFF - 2
DECFSZ CMPT2,1
GOTO ENCORE2
DECFSZ CMPT3,1
GOTO ENCORE3
RETURN ; 2 X 1
= 2
; DT = 3+ 3xFF = (1+FF)x3 x T (T = 1/F), F fréquence du microcontroleur = 1 MHz
==> T = 1 MLICRO S
; T = 768 microS

end

list p=16f84a
#include <p16f84a.inc>

STATUS EQU 0X03


PORTB EQU 0X06
TRISB EQU 0X86
CMPT1 EQU 0X10
CMPT2 EQU 0X11
CMPT3 EQU 0X12
C8 equ 0X13
RP0 EQU 0X05
EEADR EQU 0X09
EEDATA EQU 0X08
EECON1 EQU 0X88

;xxxxxxxxxxxxxxxxxxxx
; Démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
; faire clignoter une LED sur la ligne RB2 avec une fréquence de 1Hz. (1/2,1/2)
ORG 0X2100
DE 0XFF,0X8F,0X0F,0X3B

org 0x000
; initialisation
;programmer RPORTB en sortie = TRISB = 0X00

BSF STATUS,RP0 ;banque 1


CLRF TRISB
BCF STATUS,RP0 ;banque 0
; fin de l'initialisation
DEBUTVRAI:
MOVLW 0X04
MOVWF C8
MOVLW 0X00 ; adresse est une valeur entre 00 et 3F.
MOVWF EEADR ; écriture adresse dans registre Adresse.
DEBUT:
BSF STATUS,RP0 ; accès page 1.
BSF EECON1,0 ; bit RD = 1 pour débuter lecture.
BCF STATUS,RP0 ; Accès page 0.
MOVF EEDATA,0 ; lecture Data et mise dans W.
MOVWF PORTB
CALL tempo
INCF EEADR,1
decfsz C8,1
GOTO DEBUT
GOTO DEBUTVRAI

tempo: ; Temporisation logicielle 0,5 S


MOVLW 0X02
MOVWF CMPT3
ENCORE3:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT2 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE2:
MOVLW 0XFF ; CHARGE W PAR 0XFF 1 X 1 = 1
MOVWF CMPT1 ;STOCKE W DANS L'adresse 0X10 1 X 1 = 1
ENCORE1: ;
DECFSZ CMPT1,1 ; 1/2 : 1 X (FF -
1)+ 2 X 1 = FF + 1
GOTO ENCORE1 ; 2 X (FF - 1)
= 2xFF - 2
DECFSZ CMPT2,1
GOTO ENCORE2
DECFSZ CMPT3,1
GOTO ENCORE3
RETURN ; 2 X 1
= 2
; DT = 3+ 3xFF = (1+ FF)x3 x T (T = 1/F), F fréquence du microcontroleur = 1 MHz
==> T = 1 MLICRO S
; T = 768 microS

end

Vous aimerez peut-être aussi