8) Gestion d'un feu tricolore.
Elaboration d'une tempo de base de 1s et modulable par paramètre selon la durée des 3 feux.
Trois boucles imbriquées.
presentation du probleme
Séquence d'allumage :
Au démarrage :
![]()
Feu rouge 36s Feu vert 32s Feu Orange 4s ![]()
Pour une souplesse des temps de temporisation on se servira d'une base de temps de 1 seconde avec une sous base de 0,1s.
* fichier feux.asc * gestion d'un feu tricolore * Gestion D'un seul feu * Feu tricolore sur portB Feu rouge bit 2, orange bit 1 et vert bit 0. * R O V * 7 6 5 4 3 2 1 0 ;Equivalences registres portb equ $1004 *Constantes dureer equ 36 dureev equ 32 dureeo equ 4 pile equ $ff *Variables org $0000 duree rmb 1 ;Début du programme implantation en EEPROM org $F800 ;******************* ; Configuration ;******************* *initialisation de la pile start lds #pile ; ;******************* ;Programme principal ;******************* * allumage du feu rouge et extinction du feu orange debut ldaa #$04 staa portb * tempo de 36 secondes ldaa #dureer staa duree bsr tempo * allumage du feu vert et extinction du feu rouge ldaa #$01 staa portb * tempo de 3 secondes ldaa #dureev staa duree bsr tempo * alumage du feu orange et extinction du feu vert ldaa #$02 staa portb * tempo de 4 secondes ldaa #dureeo staa duree bsr tempo bra debut ***************** * Sous programmes * ***************** *Sous programme tempo* ******************** * lecture du paramètre duree determinant la duree de la tempo en seconde tempo ldaa duree * on effectue 10 boucles de 100 ms tduree ldab #10 * Duree de base de 100ms par decrementation de X qui dure 3µs*33333=99999µs t1s ldx #33333 t100ms dex bne t100ms * fin de la boucle 100ms decb bne t1s *fin de la boucle 1s deca bne tduree *fin de la duree fois 1s rts ;************************** ; Vecteurs d'interruptions ;************************** ;vecteur de reset org $fffe rstvect fdb start end9- Gestion de 2 feux de carrefour
Giampiero D'AQUINO
Enseignant en Génie Electronique