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