Sie sind auf Seite 1von 2

Programmation PIC

Calcul temporisation
Page 1 / 2

Programme de temporisation:
Structure du programme:

Sous-programme tempo
Initialisation compteur3
Initialisation compteur2
Initialisation compteur1
compteur1 = compteur1-1
Jusqu compteur1 = 0
compteur2 = compteur2-1
Jusqu compteur2 = 0
compteur3 = compteur3-1
Jusqu compteur3 = 0
Retour

call

tempo

;appel de la temporisation

2 cycles

tempo
movlw
movwf

d'10'
cmpt3

; initialiser compteur3

1 cycle
1 cycle

movlw
movwf

d'100'
cmpt2

; initialiser compteur2

1 cycle
1 cycle

movlw
movwf

d'249'
cmpt1

; initialiser compteur1

1 cycle
1 cycle

nop
decfsz
goto
decfsz
goto
decfsz
goto
return

cmpt1 , f
boucle1
cmpt2 , f
boucle2
cmpt3 , f
boucle3

; perdre 1 cycle
; dcrmenter compteur1
; si pas 0, boucler
; si 0, dcrmenter compteur 2
; si cmpt2 pas 0, recommencer boucle1
; si 0, dcrmenter compteur 3
; si cmpt3 pas 0, recommencer boucle2
; retour de la sous-routine

1 cycle
1 ou 2 cycles
2 cycles
1 ou 2 cycles
2 cycles
1 ou 2 cycles
2 cycles
2 cycles

boucle3
boucle2
boucle1

EPAI Fribourg Herv Page / Calcul Temporisation.odtCalcul Temporisation.odtCalcul Temporisation.odt

Programmation PIC
Calcul temporisation
Page 2 / 2
Calcul de la dure du sous-programme pour un PIC tournant avec un quartz de 4MHz:
Un cycle processeur dure 4 cycles d'horloge, soit 1s.
Les instructions durent presque toutes 1 cycle.
Dans le programme ci-avant, certaines instructions durent 2 cycles: call, return, goto, decfsz si on saute l'instruction
suivante (qui est alors traite comme un nop).
Calcul du nombre de cycles:
La boucle la plus l'intrieur:
movlw
movwf

d'249'
cmpt1

; initialiser compteur1

1 cycle
1 cycle

nop
decfsz
goto

cmpt1 , f
boucle1

; perdre 1 cycle
; dcrmenter compteur1
; si pas 0, boucler

1 cycle
1 ou 2 cycles
2 cycles

boucle1

Dure: 1 + 1 + (1+1+2)x248 + (1+2)x1 = 997 cycles.


248 fois, on a un cycle avec nop (1), decfsz (1) et goto (2). Au dernier cycle, le decfsz dure 2 cycles, mais il n'y a pas le
goto.
Sur le mme principe, la deuxime boucle dure:
1 + 1 + (997+1+2)x99 + (997+2) = 100'001 cycles.
Sur le mme principe, la troisime boucle dure:
1 + 1 + (100001+1+2)x9 + (100001+2) = 1'000'041 cycles.
Si on ajoute le call et le return, la boucle dure au total 1'000'045 cycles.
A 4 Mhz, la dure sera donc de 1,000 seconde.

EPAI Fribourg Herv Page / Calcul Temporisation.odtCalcul Temporisation.odtCalcul Temporisation.odt

Das könnte Ihnen auch gefallen