Cours Pic Temporisation PIC16F84

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

1/5 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG

SOUS PROGRAMME DE TEMPORISATION


Il arrive souvent qu'on désire introduire des temporisations pendant l'exécution d'un programme.
Plusieurs méthodes pour réaliser des temporisations.
Le tableau ci-dessous récapitule les méthodes classiques

nop Boucle Timer Timer + interruption

Temporisation très courte X


Temporisation moyenne et longue X
sans le Timer
Temporisation précise X
Temporisation précise, X
accompagnée de boucles longues

A. Temporisation avec boucle :


1 – Principe :
L'idée est d'initialiser une variable à une valeur donnée et ensuite la décrémenter en boucle jusqu'a ce
qu'elle atteint 0. Connaissant le temps d'exécution de chaque instruction, on peut calculer le temps que
mettra le processeur pour terminer la boucle de décrémentation.
2 - Temporisation avec une seule boucle :
Algorigramme :
Tempo Sous-programme de Tempo

Label Instruction Commentaire Nombre


decompt N1 de cycle
Tempo MOVLW N1 ; W ← N1 1

MOVWF decompt ; decompt ← W 1


decompt decompt- 1
DECFSZ decompt,f ; decompt ← decompt -1 1(2)
avec test si 0
TEST GOTO TEST ; Boucle 2
Non
Si
RETURN ; Retour 2
decompt= 0

Retour
Calcule de la temporisation :

Tempo = [ 2 +1 +1 + ( N1 -1). (1 +2) + 2 +2 ] cycles = [ 8 + 3. ( N1 -1) ] cycles = [ 8 +3 N1 -3] cycles


Tempo = [ 5 +3 N1] cycles .
2/5 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG
6 6
Si la fréquence du quartz est égale à 4 Mhz : Fc = 4 .10 /4 = 1 .10 hz = 1 Mhz
6 -6
→ Tc = 1/(1 .10 ) = 10 s = 1µs .
La temporisation est maximale, pour N1max = 255 = FFH = 111111112
-6
Tempo.max = [ 5 +3 N1max ] cycles = [ 5 +3 .255] .10 = 770µs
Remarques:
• Il faut rajouter 2 cycles pour l'instruction CALL.
• La précision peut être améliorée en y insérant l’instruction NOP.

3 - Temporisation avec deux boucles :


Algorigramme :
Tempo Sous-programme de Tempo

decompt2 N2
Label Instruction Commentaire Nombre
de cycle
decompt1 N1 Temp MOVLW N2 ; W←N2 1
MOVWF decompt2 ; decompt2←W 1

Lab2 MOVLW N1 ; W←N1 1


Decompt1 decompt1 - 1
1
MOVWF decompt1 ; decompt1←W
1(2)
Lab1 DECFSZ decompt1,f ;decomp1←decomp -1
Si avec test si 0.
Non
Decompt1= 0 2
GOTO LAB1 ; Boucle1

DECFSZ decompt2,f ; decomp2←decomp2 -1 1(2)


avec test si 0.
decompt2 decompt2 - 1 GOTO LAB2 ; Boucle2 2
RETURN ; Retour 2

Non Si
decompt2 = 0

Retour
3/5 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG
Calcule de la temporisation :

Tempo = [ 2 +1 +1 + ( N2-1).[1 +1+(N1-1).( 1 + 2) +2 +1+2] +2 +2 ] cycles .

Tempo = [ 8 + ( N2-1).[7 + 3.(N1-1)] ] cycles

Tempo= [8+ ( N2-1).[7 +3. N1 -3]] cycles

Tempo = [8+ ( N2-1).[4 +3. N1 ]] cycles .

Tempo = [8+ 4 N2+3N2N1-4 -3N1] cycles

Tempo = [4+ 4 N2+3N2N1 -3N1] cycles

Si la fréquence du quartz est égale à 4 Mhz : Fc = 4 .106 /4 = 1 .106hz = 1 Mhz → Tc = 1/(1 .106) = 10-6 s = 1µs .

La temporisation est maximale, pour N1max = N2max = 255 = FFH = 111111112 .

Tempo.max = [4 + 4 N2max + 3 N2max N1max - 3 N1max ] cycles.

Tempo.max = [ 4 + 4.255 +3.255.255 -3.255] .10-6 = 195334µs .

Tempo.max = 195,334ms = 0,195334s .


4/5 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG
4 - Temporisation avec 3 boucles :
Algorigramme : Sous-programme de Tempo
Tempo
Label Instruction Commentaire Nombre
de cycle
decomp3 N3
Tempo ………………………….. ……………………… ………. 1

………………………….. ………………………………. 1
Decomp2 N2
Lab3 ……………………………. ……………………………… 1

decom1 N1 …………………………… ………………………………. 1

Lab2 ………………………….. ……………………………….. 1

decomp1 decomp1 - 1 …………………………. ……………………………….. 1

Lab1 …………………………… ………………………………. 1(2)


…………………………… ………………………………..
2
Non Si
decomp1 = 0 ……………………………. …………………………………
1(2)
…………………………… ……………………………….
2
decomp2 decomp2- 1 …………………………… ……………………………….
1(2)
……………………………. ……………………………….
2
…………………………… …………………………………
Si 2
Non
decomp2=0

decomp3 decomp3 - 1

Non Si
decomp3= 0

Retour
5/5 2 ème STE CHAINE D’INFORMATION : TRAITER AZNAG
Calcule de la temporisation :

Tempo =

Si la fréquence du quartz est égale à 4 Mhz : Fc = 4 .106 /4 = 1 .106hz = 1 Mhz → Tc = 1/(1 .106) = 10-6 s = 1µs
.

La temporisation est maximale, pour N1max = N2max = N3max = 255 = FFH = 111111112 .

Tempo.max =

Vous aimerez peut-être aussi