Vous êtes sur la page 1sur 6

electroussafi.ueuo.

com 1/6

Assembleur PIC16F84 : Boucles de délai (retard)

Rappel :

Durée en cycle des instructions de sauts conditionnels

BTFSC f,b BTFSS f,b DECFSZ INCFSZ

1 cycle s’il n’y a pas de saut et 2 cycles s’il y a saut

Durée en cycle des instructions de sauts inconditionnels

GOTO k CALL k RETURN RETLW RETFIE

Toujours 2 cycles

N. ROUSSAFI electroussafi.ueuo.com Boucles de délai


electroussafi.ueuo.com 2/6

Exercice 1

Soit un sous-programme (appelé : retard) dont l’algorithme est le suivant :

1) COUNT = 10
2) Décrémenter COUNT de 1 (COUNT = COUNT -1)
3) Test COUNT = 0 ?
4) Réponse : non, aller à 2
5) Réponse : oui, retour de sous-programme

1. Donner l’organigramme de ce sous-programme


2. Ecrire le sous-programme en assembleur
3. Combien de cycles, dure ce sous-programme ? et quelle est la durée de ce sous-
programme si le PIC utilisé est piloté par un quartz de 8 Mhz ?
4. Quelle est l’instruction qui permet d’appeler un sous-programme ?

Exercice 2

Soit un sous-programme (wait) dont l’algorithme est le suivant :

1) CNT2 = 10
2) CNT1 = 0
3) Pas d’opération
4) Décrémenter CNT1 de 1 (CNT1 = CNT1 -1)
5) Test CNT1 = 0 ?
6) Sinon, aller à 3
7) Si oui, décrémenter CNT2
8) Test CNT2 = 0 ?
9) Sinon, aller à 2
10) Si oui, retour de sous-programme

N. ROUSSAFI electroussafi.ueuo.com Boucles de délai


electroussafi.ueuo.com 3/6

1. Ecrire le sous-programme en assembleur


2. Quelle est la durée de ce sous-programme si le PIC utilisé est piloté par un quartz de
8 Mhz ?

Exercice 3

Soit le sous-programme de temporisation suivant :

tempo movlw 0x05


movwf cptr3
b3 clrf cptr2
b2 clrf cptr1
b1 decfsz cptr1, f
goto b1
decfsz cptr2, f
goto b2
decfsz cptr3, f
goto b3
return

1. Quelle est la durée de ce sous-programme si le PIC utilisé est piloté par un


quartz de 10 Mhz ?
2. Quelle est la durée de ce sous-programme si le PIC utilisé est piloté par un
quartz de 4 Mhz et cptr3 = 203 = 0xCB?

N. ROUSSAFI electroussafi.ueuo.com Boucles de délai


electroussafi.ueuo.com 4/6

Exercice 4

Soit le montage suivant :

On désire faire clignoter la led (allumer la led et éteindre la led d’une façon continue).

On donne l’algorithme est le suivant :

1) Allumer la led
2) Attendre (wait) (utiliser le sous-programme de l’exercice 3)
3) Eteindre la led
4) Attendre (wait)
5) Aller à 1

1. Donner l’organigramme
2. Ecrire un programme en assembleur
3. Ecrire un programme en mikroC

N. ROUSSAFI electroussafi.ueuo.com Boucles de délai


electroussafi.ueuo.com 5/6

Exercice 5

Soit le montage suivant :

On désire faire clignoter les leds de la façon suivante :

D1, D3, D5 et D7 allumées les autres éteintes

D2, D4, D6 et D8 allumées les autres éteintes

On donne l’algorithme est le suivant :

1) Allumer les leds D1, D3, D5 et D7 et éteindre D2, D4, D6 et D8


2) Attendre (wait) (utiliser le sous-programme de l’exercice 3)
3) Allumer les leds D2, D4, D6 et D8 et éteindre D1, D3, D5 et D7
4) Attendre (wait)
5) Aller à 1

1. Donner l’organigramme
2. Ecrire un programme en assembleur
3. Ecrire un programme en mikroC

N. ROUSSAFI electroussafi.ueuo.com Boucles de délai


electroussafi.ueuo.com 6/6

Exercice 6

Soit le montage suivant :

On désire réaliser un compteur binaire qui compte de 0x00 à 0xFF.

On donne l’algorithme est le suivant :

1) PORTB = 0
2) Attendre (wait) (utiliser le sous-programme de l’exercice 3)
3) Incrémenter PORTB
4) Aller à 2

1. Donner l’organigramme
2. Ecrire un programme en assembleur
3. Ecrire un programme en mikroC

N. ROUSSAFI electroussafi.ueuo.com Boucles de délai