Vous êtes sur la page 1sur 16

Les variables en assembleur

1
Déclaration des variables

2
Bank0 Bank1

Déclaration des variables

SFR

A
0x0C D

0x0D
GPR
0x0E

3
Bank0 Bank1

Déclaration des variables

SFR

0x0C

GPR
0x0D C
A
0x0E

0x0F

0x10

4
La fonction d’attente

5
Horloge
• "le cycle d’instruction " est le temps nécessaire à l’exécution d’une instruction.
• Quelque soit l'oscillateur utilisé, l'horloge système dite aussi horloge instruction est obtenue en divisant la
fréquence de l’oscillateur par 4
On suppose que :
 Fréquence du µc = 4MHZ  Cycle Horloge = 1/F = 0.25µs , Cycle Instruction = 4/F = 1µs

CLK

Instructions BSF INCF Goto

1 1 2
µs µs µs

6
Comment calculer le temps d’execution d’un code?

1. Calculer la durée d’un cycle d’instruction CI (CI = 4/Fréquence)

2. Calculer le nombre de cycles d’instruction NB dans le code.

3. Calculer le Temps d’exécution : T = CI * NB

7
Exemple
Calculer le temps d’exécution du code suivant pour F = 8MHZ ?

boucle 1. CI = 4*106/8 = 0.5*10-6 s = 0.5 µs


BSF PORTA,1 ; 1cycle
2. NB = 1+1+1+1+2 = 6
MOVLW 5 ; 1cycle
MOVWF A ; 1cycle 3. T = 6 *0.5 = 3µs
BCF PORTA,1 ; 1cycle
Goto boucle ; 2cycles

8
Principe de la fonction d’attente
• Pour faire une temporisation on utilise la // attente de 256 cycles
fonction d’attente
int compteur
• La fonction d’attente permet de mettre en void attente(){
pause le programme pendant un certain
nombre de secondes. compteur =256 ;
while( compteur --) {

}
9
l’instruction DECFSZ f,d
instruction Arguments de l’instructions

• DECFSZ f,d ; Decrement File Skip if zéro


• File /registre destination décrémenter f puis tester si le résultat est égale à 0

Exemple :
Si condition est Fausse (A différent de 0) ,Exécuter la ligne suivante
 DECFSZ A,f ; A = A-1 ; si (A == 0) Exécuter PORTB.RB2=1
BSF PORTB,2 ;
BCF PORTB,2 ; Si condition est vrai (A==0) : sauter une
ligne
Exécuter PORTB.RB2=0
10
La fonction d’attente en assembleur
1. CI = 4*106/4 = 1*10-6 s = 1 µs

2. NB = 1+(1+2)*256 + 1 = 770

3. T = 770*1= 770µs

attente

Quelle est la durée de l’attente si F=4MHZ ? 11


comment créer une fonction en assembleur
• En assembleur le code de la fonction doit :
Commencer par une étiquette représentant son nom.
Finir par l’instruction RETURN
• On écrit généralement le code de la fonction à la fin avant le mot end
• L’appel de la fonction se fait par l’instruction CALL : CALL étiquette

Exemple :

Fonction (routine) TEMP: Appel deux fois de la routine


permet de faire une attente de TEMP
1028µs pour F = 4MHZ Ce code permet de clignoter
une diode connectée à RA1.

12
APPLICATION

13
Exercice
On se propose d’implémenter, sur un PIC16F84, Un feu
tricolore de croisement ayant comme entrée un capteur de
luminosité et un feu tricolore en sortie.
• il clignotera la diode orange chaque 0,5 seconde la nuit.
• Pour le mode jour, le cycle de fonctionnement est le
suivant :
 Rouge (1 seconde)
 Orange (0,5 seconde)
 Vert (1 seconde)

Utilisez la routine tempo donnée. Elle


assure une attente de 0.5s pour F = 4MHZ
14
Organigramme général Début

CONFIGURARTION
Choisir Bank1
RA0 entrée , RB0,RB1,RB2 sorties,

INITIALISATION
Choisir Bank0
Leds éteintes,

Boucle

jour

RA0 ==0
Allumer la rouge
Nuit Eteindre les autres
Attente 1s
Allumer la orange
Allumer la orange Eteindre les autres
Eteindre les autres Attente 0.5s
Attente 0.5s Allumer la verte
Eteindre orange Eteindre les autres
Attente 0.5s Attente 1s

15
la routine tempo donnée

16

Vous aimerez peut-être aussi