Vous êtes sur la page 1sur 7

25/05/2019

Ecole Nationale Polytechnique –Constantine.


Département EEA
Quatrième Année Ingénieurs –Semestre 2.
Automatique/Electrotechnique
Cours. Circuits Programmables

Chapitre III. (Partie 2)


Programmation des microcontrôleurs
Durée du Cours: 1h30
Présenté par: Dr. S. BENSEGUENI
(benskandix@gmail.com)

Année Universitaire. 2018-2019

3. Langage assembleur du PIC


Les codes en assembleur de PIC consistent en un
fichier texte ASCII comprenant les éléments suivants:
Le code machine (avec les possibles opérandes)
représentant les instructions matérielles faisant partie
du jeu d'instructions du processeur, y compris les
symboles et les opérateurs arithmétiques et logiques
reconnus par l'assembleur. Les directives
d'assemblage (y compris les macro-directives) sous la
forme de mots-clés reconnus par le programme
assembleur ou par d'autres composants du logiciel de
développement.
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


Des étiquettes indiquant un emplacement dans le
code de langue d'assemblage. Les références à
d'autres fichiers pouvant être chargés ou inclus lors
de l'assemblage. Les commentaires sous la forme de
lignes de texte, ou de parties de lignes de texte, qui
sont ignorés par l'assembleur mais qui servent à
expliciter, documenter ou organiser le code.

Circuits Programmables Dr. S. Bensegueni

1
25/05/2019

3. Langage assembleur du PIC


La programmation dans n'importe quelle langue peut
être facilitée en utilisant des fragments de code ou
des sous-programmes prédéveloppés et pré-testés
pour effectuer des opérations courantes ou
fréquentes. Plus cette bibliothèque personnelle est
organisée, codée et testée, plus il sera facile de
développer une nouvelle application.
En programmation, la réutilisabilité favorise la
productivité, comme dans beaucoup d'autres
domaines.
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Directives d’assemblage du PIC)
Les directives d’assemblage sont des mots clés reconnus par le
programme assembleur mais ils ne seront pas traduite par un code
machine. Parmi les directives d’assemblage utilisées par les
programmes en PIC, on cite :
LIST : qui indiquera le processeur ‘p’ (ou le type de microcontrôleur)
utilisé dans l’application programmée, ‘f’ le format du fichier .hex à
produire, ‘r’ la base numérique utilisée par défaut.
INCLUDE : est utilisée pour insérer un fichier source.
CONFIG : utilisée pour configurer le fonctionnement de plusieurs
paramètres du PIC, comme : le debugging, le watchdog, la protection
du programme, l’oscillateur utilisé (XS, LP, HS),…
EQU : affecte une valeur à un nom de constante.
#DEFINE : remplacer un texte plus complexe par une chaine de
caractères.
MCROS : remplacer des mots de code par une chaîne de caractères.
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Directives d’assemblage du PIC)
ORG : suivie d’une adresse pour déterminer l’adresse
du début du programme.
END : montre la fin du programme.

Exemple 3.3.
LIST p=16f877A, f=inhx8m, r=dec
INCLUDE “p16f877A.inc”
__CONFIG _CR_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF

Circuits Programmables Dr. S. Bensegueni

2
25/05/2019

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Le langage assembleur est très nécessaire, parce qu’il
permet d’optimiser les programmes et de gagner de
l’espace, qui très précieuse sur les PIC et en particularité
sur le 16F877A. Il faut noter que, quand on lit le mot
instruction sur la documentation technique de Microchip,
celle-ci fait référence à une instruction assembleur. Car
c’est le langage par défaut du PIC.
Le PIC 16F877A est caractérisé par 35 instructions
pouvant être des instructions de transfert, arithmétiques,
logiques, de saut,... Le registre (f) se comportant comme
un dossier (file : f) qui contient des fichiers (littérals : k).
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Une instruction est codée en binaire sur un mot de 14 bits
représentant un cycle d’opération ou quatre périodes ou cycles
de l’oscillateur (Q) :

Une instruction est scindée en plusieurs champs (code


opération, registre du dossier,…), comme suit :

.
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées octet du dossier :
Le code opération pour ce genre d’instruction a la
structure suivante :

addwf f,d : ajouter f à w. Si d=0 le résultat sera mis dans


w, si d=1 le résultat sera mis dans f.
andwf f,d : génere le ET logique de f et w. Si d=0 le
résultat sera mis dans w, si d=1 le résultat sera mis dans f.
clrw : efface le rgistre w.
clrf f : efface le rgistre f.
Circuits Programmables Dr. S. Bensegueni

3
25/05/2019

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées octet du dossier :
comf f,d : complémentaire du registre f. Si d=0 le résultat sera
mis dans w, si d=1 le résultat sera mis dans f.
decf f,d : décrémenter le registre f d’une unité. Si d=0 le
résultat sera mis dans w, si d=1 le résultat sera mis dans f.
decfsz f,d : décrémenter le registre f d’une unité et ignorer
l’instruction suivante si le résultat est nul. Si d=0 le résultat sera
mis dans w, si d=1 le résultat sera mis dans f.
incf f,d : incrémenter le registre f d’une unité. Si d=0 le résultat
sera mis dans w, si d=1 le résultat sera mis dans f.
incfsz f,d : incrémenter le registre f d’une unité et ignorer
l’instruction suivante si le résultat est nul. Si d=0 le résultat sera
mis dans w, si d=1 le résultat sera mis dans f.

Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées octet du donssier :
iorwf f,d : génère un OU (inclusif) logique de f et w. Si
d=0 le résultat sera mis dans w, si d=1 le résultat sera mis
dans f.
movf f,d : copier le registre f dans w si d=0, ou copier le
registre w dans f si d=1.
movwf f : copier le registre w dans le registre f.
nop : pas d’opération.
rlf f,d : rotation d’un bit à gauche du registre f à travers
le carry. Si d=0 le résultat sera mis dans w, si d=1 le
résultat sera mis dans f.
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées octet du dossier :
rrf f,d : rotation d’un bit à droite du registre f à travers le
carry. Si d=0 le résultat sera mis dans w, si d=1 le résultat
sera mis dans f.
subwf f,d : soustraire le registre w du registre f et mettre
le résultat dans w si d=0, et mettre le résultat dans f si
d=1.
swapf f,d : échanger le digit de poids fort avec le digit de
poids faible de f. Si d=0 le résultat sera mis dans w, si d=1
le résultat sera mis dans f.
xorwf f,d : génère un OU logique exclusif de f et w. Si
d=0 le résultat sera mis dans w, si d=1 le résultat sera mis
dans f.
Circuits Programmables Dr. S. Bensegueni

4
25/05/2019

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées bit du dossier :
Le code opération pour ce genre d’instruction a la structure
suivante :

addlw k : ajouter une littéral k à w et mettre le résultat dans w.


andlw k : générer un ET logique d’une littéral k et w et mettre
le résultat dans w.
clrwdt : effacer le chien de garde.
call k : appeler un sous-programme se trouvant à l’étiquette k.

Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées bit du dossier :
goto k : saut non-conditionnelle à l’étiquette k.

iorlw k : génère un OU (inclusif) logique de la littéral


k et le registre w.
movlw k : copier la littéral k dans le registre w.

Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations orientées bit du dossier :
retfie : retour de de sous-programme d’interruption.
retlw k : retour du sous-programme avec la mis de k dans
w.
return : retour du sous-programme.
sleep : mettre le microcontrôleur en mode de veille (sleep
mode).
sublw k : sustraire le registre w de la littéral k et mettre
le résultat dans w.
xorlw k : génère un OU logique exclusif de la littéral k et
w.
Circuits Programmables Dr. S. Bensegueni

5
25/05/2019

3. Langage assembleur du PIC


(Jeu d’instruction en assembleur du PIC)
Opérations sur les littérals et de contrôle :
Le code opération pour ce genre d’instruction a la
structure suivante :
bcf f,b : mettre à zéro le bit b du registre f.
bsf f,b : mettre à un le bit b du registre f.
btfsc f,b : tester le bit b du registre f, s’il est nul,
ignorer l’instruction suivante.
btfss f,b : tester le bit b du registre f, s’il est égal à
un, ignorer l’instruction suivante.
Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Types d’adressage du PIC)
Avant de définir les types d’adressage, il faut décrire
le registre INDF. Ce registre est physiquement
inexistant, mais pour réaliser un adressage indirect, il
faut adresser le registre INDF. Chaque instruction
utilisant le registre INDF va pointer l’adresse mémoire
ayant comme valeur le contenu du FSR (File select
register).

Circuits Programmables Dr. S. Bensegueni

3. Langage assembleur du PIC


(Types d’adressage du PIC)
Exemple.
Le programme suivant utilise un adressage indirect pour effacer
la zone mémoire de 20h à 2Fh :
MOVLW 0x20 ;initialization du pointeur
MOVWF FSR ;mettre 0x20 dans FSR
NEXT CLRF INDF ;clear INDF register c.a.d. la case memoire
pointée par 0x20
INCF FSR,F ;incremente le pointeur
BTFSS FSR,4 ;si égal toutes les cases sont effacées
GOTO NEXT ;non effacées reboucler à next

Circuits Programmables Dr. S. Bensegueni

6
25/05/2019

3. Langage assembleur du PIC


(Types d’adressage du PIC)
Donc, la différence entre l’adressage direct et indirect est
que pour le direct on utilise la valeur directe du code
opération avec la présélection des RP1 et RP0, alors que
pour l’indirect on va concaténer les 8 bits du registre FSR
et IRP, de la manière schématisée dans la figure suivante :

.
Circuits Programmables Dr. S. Bensegueni

Vous aimerez peut-être aussi