7) Même problème que ci-dessus avec modulation de la temporisation par donnée sur port d'entrée
Le sous programme tempo reste le même.
*Fichier ledmodul.asc
* Led dont la duree d'allumage est module par une entree.
*Equivalences registres
portb equ $04
portc equ $1003
ddrc equ $1007
* Constantes
dureet equ 10
*Variables
org $0000
duree rmb 1
*Début du programme implantation en EEPROM
org $F800
********************
* Configuration
********************
* Pile
start lds #$00ff
* Portc en entree
clr ddrc
* préparation de l'adressage indexé pour instruction
ldy #$1000
********************
*Programme principal
********************
*Allumer la led 1 et 8 sur le portb.
ldaa #$81
staa portb,y
* Attente module par c
debut ldaa portc
adda #$01
* on ajoute 1 pour eviter que C=0 correspond au temps le plus long
staa duree
bsr tempo
* Eteindre la led 1 sur le portb.
bclr portb,y,#$01
* Attente de 1 secondes
ldaa #dureet
staa duree
bsr tempo
* Allumer la led 1 sur le portb.
bset portb,y,#$01
bra debut
********************
* Sous Programmes
********************
* SP Tempo
*****************
*temporisation parametre par duree
* chargement du compteur du nombre de boucle a effectuer
tempo ldaa duree
* Chargement de la valeur permettant de faire une tempo de 0,1s
t1s ldx #$33333
*tempo basée sur le nombre de boucle à effectuer
t100ms dex
bne t100ms
* fin de la boucle de 100ms
* décomptage du nombre de boucle
deca
bne t1s
rts
***************************
* Vecteurs d'interruptions
***************************
*vecteur de reset
org $fffe
rstvect fdb start
end
DEBUT DE PAGE
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.
.
SOMMAIRE
Giampiero D'AQUINO
Enseignant en Génie Electronique