Vous êtes sur la page 1sur 1

A- Compréhension du programme :

1.Les différentes valeurs que peut prendre la variable state sont (0, 1, 2, 3) ; le but de la ligne
29 est d’incrémenter state et la mettre dans w, alors que la ligne 30 ne peut pas dépasser 0x03
(3 )
2. le sous-programme getmask lit la valeur de W et retourne l’entrée qui correspond dans le
tableau.
• pour state = 0 : l’entrée correspondante est « retlw 0x41 »
• pour state = 1 : l’entrée correspondante est « retlw 0x23 »
• pour state = 2 : l’entrée correspondante est « retlw 0x14 »
• pour state = 3 : l’entrée correspondante est « retlw 0x32 »

o « movf state,W » permet de déplacer la valeur de state dans W,


o « addwf PCL,F » permet d’ajouter la valeur de state dans le compteur du programme,
o « retlw 0x41 » permet de placer la valeur 0x41 dans W, et fait réalise un return à la ligne
suivant celle du call getmask ligne 28 : « movwf PORTB » ; permettant ainsi le ou les
feux correspondants.

3:
State = 0 W=0x41 , W=0b'01000001' Rouge1 = 1 Rouge2 = 0
Orange1 = 0 Orange2 = 0
Vert1 = 0 Vert2 = 1
State = 1 W=0x23 , W=0b'00100011' Rouge1 = 1 Rouge2 = 0
Orange1 = 1 Orange2 = 1
Vert1 = 0 Vert2 = 0
State = 2 W=0x14 , W=0b'00010100' Rouge1 = 0 Rouge2 = 1
Orange1 = 0 Orange2 = 0
Vert1 = 1 Vert2 = 0
State = 3 W=0x32, W=0b'00110010' Rouge1 = 0 Rouge2 = 1
Orange1 = 1 Orange2 = 1
Vert1 = 0 Vert2 = 0

4 . Le nombre d’exécution de la boucle composée des lignes 58-59 est :


ligne 58 w2 decfsz l2 ;1 x 255 + 2 = 257 fois
ligne 59 goto w2 ;2 x 255 = 510 fois
donc : en total le nombre d’exécution est de 767 fois.

Vous aimerez peut-être aussi