Vous êtes sur la page 1sur 9

electroussafi.ueuo.

com 1/9

Assembleur PIC16F84 : Boucles de délai (retard)

Exercice 1

1. Organigramme

2. Sous-programme en assembleur

Retard movlw 0x0A (N = 10)


movwf COUNT
Delai decfsz COUNT,f
3xN-1
goto Delai
return
3.

Etiquette Instruction Durée en cycle


Retard movlw 0x0A 1
movwf COUNT 1
Delai decfsz COUNT,1
3 x 10 – 1 = 29
goto Delai
return 2

Durée en cycle = 1 + 1 + 2 9 + 2 = 33 cycles.

Un cycle dure : 4/8 Mhz = 0,5 µs Durée : T = 33 cycles x 0,5 µs =16,5 µs

4. l’instruction qui permet d’appeler un sous-programme est CALL.


N. ROUSSAFI electroussafi.ueuo.com Boucles de délai
electroussafi.ueuo.com 2/9

Exercice 2

1. Sous-programme en assembleur

wait movlw 0x0A


movwf CNT2  N2 = 10
Boucle2 clrf CNT1  N1 = 256
Boucle1 nop x N1
decfsz CNT1,f x N2
3xN1 -1
goto Boucle1
decfsz CNT2,f
3xN2 -1
goto Boucle2
return
2.
Etiquette Instruction Durée en cycle
movlw 0x0A 1
movwf CNT2 1
Boucle2 clrf CNT1 1
Boucle1 nop 1x256x10 = 2560
decfsz CNT1,f
(3x256-1) x10 = 7670
goto Boucle1
decfsz CNT2,f
3x10-1 = 29
goto Boucle2
return 2

Un cycle dure : 4/8 Mhz = 0,5 µs

Durée = T = (1 + 1 + 1 + 1 x N1 x N2 + (3N1 – 1) x N2 + 3N2 - 1 + 2) x 4 / 8MHz

T = (4 + N1 x N2 + 3N1 N2 – N2 + 3N2) x 0,5 µs = (4 + 4N1 N2 + 2N2) x 0,5 µs

T = (4 + 4x256 x 10 + 2 x 10) x 0,5 µs = 10264 x 0,5 µs = 5132 µs

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


electroussafi.ueuo.com 3/9

Exercice 3

tempo movlw 0x05


movwf cptr3  N3 = 5
b3 clrf cptr2  N2 = 256
b2 clrf cptr1  N1 = 256 1xN1
b1 decfsz cptr1, f xN2
3xN1 -1 xN3
goto b1
decfsz cptr2, f
3xN2 -1
goto b2
decfsz cptr3, f
3xN3 -1
goto b3
return

1. Durée :

Durée d’un cycle : 4 / 10Mhz = 0,4 µs

T = [1 + 1 + 1xN1xN2xN3 + (3xN1 –1) xN2xN3 + (3xN2 –1) xN3 + 3xN3 – 1 + 2] x 0,4µs

T = [4 + N1xN2xN3 + 3xN1 xN2xN3 - N2xN3 + 3xN2xN3 - N3 + 3xN3 – 1] x 0,4µs

T = [3 + 4xN1 xN2xN3 + 2xN2xN3 + 2xN3] x 0,4µs

T = [3 + ((4xN1 + 2) x N2 + 2) x N3] x 0,4µs

T = [3 + ((4x256 + 2) x256 + 2) x 5] x 0,4µs = 1313293 x 0,4µs = 525317,2 µs

T ≈ 525,32ms

2. Durée :

Durée d’un cycle : 4 / 4Mhz = 1 µs

T = [3 + ((4x256 + 2) x256 + 2) x 203] x 1µs = 53319577 x 1µs = 53319577µs

T = 53319,577ms = 53,319577s

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


electroussafi.ueuo.com 4/9

Exercice 4

1. Organigramme

2. Programme en assembleur

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


electroussafi.ueuo.com 5/9

3. Programme en mikroC

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


electroussafi.ueuo.com 6/9

Exercice 5

1. Organigramme

2. Programme en assembleur

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


electroussafi.ueuo.com 7/9

3. Programme en mikroC

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


electroussafi.ueuo.com 8/9

Exercice 6

1. Organigramme

2. Programme en assembleur

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


electroussafi.ueuo.com 9/9

3. Programme en mikroC

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