Académique Documents
Professionnel Documents
Culture Documents
; "Feux tricolores"
; Fabrice Sincère (C) décembre 2006
; IUT Nancy-Brabois
; version 1.00
; microcontrôleur PIC 16F84A
; développé avec Microchip MPLAB IDE
;xxxxxxx
; define
;xxxxxxx
;xxxxxx
; macro
;xxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxx
; déclaration de variables
;xxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxxxxxx
; démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
org H'0000'
goto initialisation
;xxxxxxxxxxxxxxx
; initialisation
;xxxxxxxxxxxxxxx
initialisation
bank0
clrf PORTA ; mise à 0 des sorties du port A
clrf PORTB ; mise à 0 des sorties du port B
bank1
movlw B'00000000'
movwf OPTION_REG
; bit 7 = 0 : activation des résistances de pull-up du port B
; (cela permet de faire l'économie d'une résistance externe sur le
port RB0)
; bits 0 à 6 : ici, options non utilisées (on les met à 0, par
exemple)
movlw B'00010000'
movwf TRISA
; bit 0 du port A (RA0) = 0 : configuration en sortie (commande de
la LED Verte Piéton Route principale)
; bit 1 du port A (RA1) = 0 : configuration en sortie (commande de
la LED Rouge Piéton Route principale)
; bit 2 du port A (RA2) = 0 : configuration en sortie (commande de
la LED Verte Piéton Route secondaire)
; bit 3 du port A (RA3) = 0 : configuration en sortie (commande de
la LED Rouge Piéton Route secondaire)
; bit 4 du port A (RA4) = 1 : non utilisé (configuration en entrée,
par exemple)
movlw B'00000011'
movwf TRISB
; bit 0 du port B (RB0) = 1 : configuration en entrée (boutons
poussoirs)
; bit 1 du port B (RB1) = 1 : non utilisé (configuration en entrée,
par exemple)
; bit 2 du port B (RB2) = 0 : configuration en sortie (commande de
la LED Verte Feu Route principale)
; bit 3 du port B (RB3) = 0 : configuration en sortie (commande de
la LED Jaune Feu Route principale)
; bit 4 du port B (RB4) = 0 : configuration en sortie (commande de
la LED Rouge Feu Route principale)
; bit 5 du port B (RB5) = 0 : configuration en sortie (commande de
la LED Verte Feu Route secondaire)
; bit 6 du port B (RB6) = 0 : configuration en sortie (commande de
la LED Jaune Feu Route secondaire)
; bit 7 du port B (RB7) = 0 : configuration en sortie (commande de
la LED Rouge Feu Route secondaire)
bank0
movlw B'00001111'
movwf PORTA ; sorties RA0 à RA3 au niveau haut
(LED éteintes)
movlw B'11111111'
movwf PORTB ; sorties RB2 à RB7 au niveau haut
(LED éteintes)
goto debut_programme
; xxxxxxxxxxxxxxxxxxxxxxxxx
; Routines de temporisation
; xxxxxxxxxxxxxxxxxxxxxxxxx
temporisation
movf duree, W
movwf compteur3
movlw H'00' ; initialisation des compteurs
movwf compteur1
movwf compteur2
;xxxxxxxxxxxxxxxxxxxxx
; programme principal
;xxxxxxxxxxxxxxxxxxxxx
debut_programme
debut2
movlw D'125' ; temporisation d'environ 5 secondes
(125*40 ms)
movwf duree
call temporisation
;xxxx
;xxx
;xxx
END
16f628
; "Feux tricolores"
; Fabrice Sincère (C) décembre 2006
; IUT Nancy-Brabois
; version 1.00
; microcontrôleur PIC 16F628A
; développé avec Microchip MPLAB IDE
__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF &
_DATA_CP_OFF & _BOREN_OFF & _MCLRE_ON
;bits de configuration :
;code protect OFF
;watchdog timer OFF
;power up timer ON
;oscillateur HS (quartz à grande fréquence)
;low voltage program OFF
;data EE read protect OFF
;brown out detect OFF
;master clear enable ON
;xxxxxxx
; define
;xxxxxxx
;xxxxxxxxxxxxxxxxxxxxxxxxx
; déclaration de variables
;xxxxxxxxxxxxxxxxxxxxxxxxx
ENDC
;xxxxxxxxxxxxxxxxxxxx
; démarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
org H'0000'
goto initialisation
;xxxxxxxxxxxxxxx
; initialisation
;xxxxxxxxxxxxxxx
initialisation
bank0
clrf PORTA ; mise à 0 des sorties du port A
clrf PORTB ; mise à 0 des sorties du port B
movlw B'00000111'
movwf CMCON ; inactivation des comparateurs
analogiques
bank1
movlw B'00000000'
movwf OPTION_REG
; bit 7 = 0 : activation des résistances de pull-up du port B
; (cela permet de faire l'économie d'une résistance externe sur le
port RB0)
; bits 0 à 6 : ici, options non utilisées (on les met à 0, par
exemple)
movlw B'00010000'
movwf TRISA
; bit 0 du port A (RA0) = 0 : configuration en sortie (commande de
la LED Verte Piéton Route principale)
; bit 1 du port A (RA1) = 0 : configuration en sortie (commande de
la LED Rouge Piéton Route principale)
; bit 2 du port A (RA2) = 0 : configuration en sortie (commande de
la LED Verte Piéton Route secondaire)
; bit 3 du port A (RA3) = 0 : configuration en sortie (commande de
la LED Rouge Piéton Route secondaire)
; bit 4 du port A (RA4) = 1 : non utilisé (configuration en entrée,
par exemple)
movlw B'00000011'
movwf TRISB
; bit 0 du port B (RB0) = 1 : configuration en entrée (boutons
poussoirs)
; bit 1 du port B (RB1) = 1 : non utilisé (configuration en entrée,
par exemple)
; bit 2 du port B (RB2) = 0 : configuration en sortie (commande de
la LED Verte Feu Route principale)
; bit 3 du port B (RB3) = 0 : configuration en sortie (commande de
la LED Jaune Feu Route principale)
; bit 4 du port B (RB4) = 0 : configuration en sortie (commande de
la LED Rouge Feu Route principale)
; bit 5 du port B (RB5) = 0 : configuration en sortie (commande de
la LED Verte Feu Route secondaire)
; bit 6 du port B (RB6) = 0 : configuration en sortie (commande de
la LED Jaune Feu Route secondaire)
; bit 7 du port B (RB7) = 0 : configuration en sortie (commande de
la LED Rouge Feu Route secondaire)
bank0
movlw B'00001111'
movwf PORTA ; sorties RA0 à RA3 au niveau haut
(LED éteintes)
movlw B'11111111'
movwf PORTB ; sorties RB2 à RB7 au niveau haut
(LED éteintes)
goto debut_programme
; xxxxxxxxxxxxxxxxxxxxxxxxx
; Routines de temporisation
; xxxxxxxxxxxxxxxxxxxxxxxxx
temporisation
movf duree, W
movwf compteur3
movlw H'00' ; initialisation des compteurs
movwf compteur1
movwf compteur2
;xxxxxxxxxxxxxxxxxxxxx
; programme principal
;xxxxxxxxxxxxxxxxxxxxx
debut_programme
debut2
movlw D'125' ; temporisation d'environ 5 secondes
(125*40 ms)
movwf duree
call temporisation
;xxxx
;xxx
;xxx
;xxx
END