Microcontroleur PIC - Part 07b

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

TECHNOLOGIE

Microcontrôleurs
PIC
7ème partie (2/2)

Le mois dernier, nous avons vu les premières instructions destinées


à faire tourner notre module d’essai à LED. Nous continuons par la
routine CALL et nous passons ensuite au jeu d’instruction des PIC.

Voyons qu’il est donc possible


d’écrire dans un pro-
comment gramme assembleur. Ce
fonctionne jeu varie entre les micro-
la routine CALL contrôleurs de la série
16CXX (ou 16F84) et ceux
Lors de la phase d’initialisation, de la série 17CXX. Etant
une certaine valeur (dans notre cas donné que nous utilisons
50h) est chargée dans les mémoires comme exemple le PIC
COUNT_1 et COUNT_2. Après quoi, 16F84, nous ferons réfé-
lorsque la routine est sollicitée, le rence, pour l’instant, au jeu
microcontrôleur exécute une boucle dans de la série 16C (ou 16F), en laissant
lequel ces deux compteurs sont décrémentés de côté l’analyse détaillée de la série
à chaque cycle. C’est seulement lorsque ceux- 17C, qui n’est autre que l’élargisse-
ci seront mis à zéro que la routine s’arrêtera, ment des instructions de la série 16C
et que le programme, à travers l’instruction RETURN, revien- (ou 16F).
dra à son programme normal, là où il avait été interrompu.
Etant donné que les deux cycles relatifs à la décrémenta- Le jeu d’instructions du 16F84 est constitué de 35 ins-
tion de COUNT_1 et COUNT_2 sont “imbriqués” entre eux, tructions qui peuvent être regroupées ainsi : instructions
en fait le microcontrôleur doit exécuter un total de cycles littérales et de contrôle, instructions “byte (octet) orien-
égal au produit des deux : 50 hexadécimal étant égal au ted”, instructions “bit oriented”.
décimal 80, on obtient donc que le microcontrôleur exécute
un total de 6 400 boucles (80 x 80) avant de revenir au pro- Voyons maintenant en détail la signification de ces trois
gramme principal. Même si cela peut sembler un nombre groupes et les instructions qu’ils contiennent.
très grand, il convient de se rappeler que le microcontrôleur
est capable d’exécuter une instruction en un temps de l’ordre
de la microseconde. Instructions
littérales et de contrôle
Maintenant que nous avons vu dans ses grandes lignes
comment structurer un programme en assembleur, et com- Ce sont 13 instructions qui permettent d’exécuter des
ment le représenter à l’aide d’un organigramme, nous allons opérations en utilisant des constantes et des étiquettes,
analyser le jeu d’instructions des PIC. par exemple, pour charger une valeur numérique dans le
registre W.

Le jeu ADDLW k
d’instructions des PIC Cette instruction additionne le contenu du registre de tra-
vail W et k et met le résultat de l’opération en W. k peut
Le jeu d’instructions représente l’ensemble des instruc- être un nombre ou bien une étiquette. Elle est effectuée en
tions que le microcontrôleur est en mesure d’exécuter et un cycle machine. Mettons, par exemple, que l’on ait W qui

ELECTRONIQUE 75 magazine - n° 9
TECHNOLOGIE

contiennent le nombre 20. En exécu- A première vue, cette instruction pour- SLEEP
tant l’instruction “ADDLW 10”, on rait sembler similaire à l’instruction Met le processeur en mode SLEEP, en
obtiendra que le registre W contienne CALL, mais il y a une différence essen- fermant l’oscillateur et en bloquant
le nombre 30. Imaginons maintenant tielle : l’instruction CALL prévoit tou- ainsi le déroulement du programme.
que l’on ait écrit la directive suivante : jours, à travers l’instruction RETURN, Comme nous l’avons déjà vu, pour sor-
le retour au point où le programme a tir de cette situation, il faut un signal
COUNT EQU 05 été abandonné. Dans l’exemple de du “watchdog” ou une interruption
ADDLW COUNT notre programme, la routine DELAY ser- extérieure. Elle dure un cycle machine.
vait seulement à introduire un certain
Dans la première ligne, comme nous retard, mais une fois son but atteint, SUBLW k
l’avons vu, on associe à l’étiquette le programme devait continuer dans Cette instruction exécute la soustrac-
COUNT le nombre 05. Dans la son cycle d’alternance d’allumage et tion entre le registre W et k, et met le
deuxième ligne, le résultat obtenu sera d’extinction. Par contre, l’instruction résultat en W. Elle dure un cycle
que l’on trouvera en W la somme de GOTO prévoit un abandon complet machine.
la valeur que W avait précédemment sans retour. Elle est normalement uti-
et le nombre 05. lisée avec d’autres instructions pour XORLW k
effectuer ce que l’on appelle les sauts Cette instruction exécute une opéra-
ANDLW k conditionnels. En réalité, il faut par- tion de OU exclusif (EXOR) entre le
Cette instruction exécute une opéra- fois faire exécuter des opérations dif- registre W et k. Elle met le résultat en
tion de ET logique entre le contenu de férentes selon qu’un événement se W. Elle nécessite un cycle machine.
W et k, et met le résultat en W. Elle vérifie ou non. Toujours en nous réfé-
est effectuée en un cycle machine. rant à l’exemple précédent, dans la
routine DELAY on doit décrémenter des Instructions
CALL k registres pour obtenir le retard. Quand “byte oriented”
Cette instruction sert à aller exécuter cette décrémentation a complètement
une sous-routine et s’effectue en deux mis les registres à zéro, il faut donc Ce sont 18 instructions qui permet-
cycles machine. Si nous faisons réfé- revenir au programme. Il faut, par tent d’agir avec les octets des registres
rence à l’exemple du programme pour conséquent, faire suivre deux “che- “file” : ceux d’utilisation spéciale et
allumer les deux LED, on y trouve une mins” différents au programme selon ceux d’utilisation générale.
sous-routine qui commence à l’éti- que la décrémentation a produit ou
quette DELAY. Ainsi, quand l’instruc- non un résultat égal à zéro. ADDWF f,d
tion “CALL DELAY” est exécutée le Cette instruction permet d’additionner
microcontrôleur charge dans le “pro- IORLW k le contenu du registre W avec un
gram counter” (le compteur des posi- Cette instruction réalise une opération registre identifié par son adresse f. Le
tions de mémoire) l’adresse du “label” de OU logique entre le registre W et k résultat sera mis en W ou dans le
DELAY, faisant ainsi continuer le pro- et met, comme toujours, le résultat registre f, selon la valeur de d, qui peut
gramme à partir de l’étiquette DELAY. dans W. Il lui faut un cycle machine. être ou 1 ou 0. Si d vaut 0, le résultat
A la fin de chaque sous-routine, il est sera mis dans le registre W, s’il vaut
nécessaire d’introduire une instruction MOVLW k 1, il sera mis dans le registre f. Si d
RETURN pour faire revenir le pro- Cette instruction charge la valeur de est omis, la valeur que l’on utilisera
gramme au point où il avait été aban- k dans le registre W. La valeur précé- sera 1 et donc le registre utilisé
donné. dente de W est donc évidemment per- comme destination du résultat sera f
due. L’instruction est effectuée en un (un cycle machine). Mettons par
CLRWDT cycle machine. Ainsi, par exemple, exemple que l’on veuille ajouter au
Cette instruction, sert à mettre à zéro l’instruction “MOVLW 14” charge dans registre d’adresse 0C, qui est un des
le “watchdog”, de telle sorte qu’il ne le registre W le nombre 14. Le contenu registres d’utilisation générale, le
puisse pas effectuer un reset du micro- précédent de W est perdu. nombre 10 et mettre le résultat dans
contrôleur. Elle nécessite un cycle ce même registre. La séquence d’ins-
machine. RETFIE tructions à écrire sera :
Sert à effectuer le retour depuis une
GOTO k interruption. Il faut deux cycles MOVLW 10 ;cette instruction
Cette instruction, en deux cycles machine. Nous parlerons de cette ins- ;met le nombre 10
machine, ser t à faire avancer le pro- truction lorsque nous analyserons en ;dans le registre W
ADDWF 0C,1 ;cette instruction
gramme jusqu’à un point différent. Si, détail le mode de gestion via software ;additionne le contenu
par exemple, on écrit l’instruction sui- des interruptions. ;du registre d’adresse
vante : ;0C avec le registre W
RETLW k ;et met le résultat
...... Cette instruction ressemble beaucoup ;dans le registre
GOTO SALTO à RETURN, et sert donc à fermer une ;d’adresse 0C.
...... sous-routine et à revenir au programme
au point où il avait été abandonné. De ANDWF f,d
SALTO ......
...... plus, cette instruction charge la valeur Cette instruction exécute une opéra-
de k dans le registre W. Il faut deux tion de ET entre le registre W et le
cycles machine. registre d’adresse f. Comme ci-des-
Arrivée à l’instruction GOTO, l’adresse
de l’étiquette SALTO est chargée dans sus, si d vaut 1, le résultat est mis
le “program counter”, ce qui force le RETURN dans ce registre, si d vaut 0, le résul-
programme à continuer depuis ce Sert justement pour fermer une sous- tat est mis dans le registre W (un cycle
point. routine. Il faut deux cycles machine. machine).

ELECTRONIQUE 76 magazine - n° 9
TECHNOLOGIE

CLRF f DECF et DECFSZ, à la différence près valeur précédente de la “Carry” (nous


Cette instruction sert à mettre à zéro qu’au lieu d’être décrémenté, le vous rappelons que la “Carry” est un
le contenu du registre d’adresse f (un registre f est incrémenté d’une unité des bits du registre STATUS, qui est
cycle machine). (de un à deux cycles machine). mis à 1 lorsqu’il se produit un report).
La signification de d est la même que
CLRW IORWF f,d pour les autres instructions (un cycle
Cette instruction met à zéro le contenu XORWF f,d machine).
du registre W (un cycle machine) Les deux instructions IORWF et XORWF
effectuent respectivement l’opération Admettons, par exemple, que le
COMF f,d de OU logique entre le registre W et le registre COUNT contienne le nombre
L’instruction COMF ser t à ef fectuer registre d’adresse f (IORWF) et l’opé- 11100110 et que la “Carry” contienne
l’opération de complément, c’est-à-dire ration de OU exclusif entre les mêmes 0.
que les 0 sont remplacés par des 1 et opérandes (XORWF). Il faut deux cycles
vice-versa. Par exemple, le complément machine. Si nous suivons l’instruction “RLF
du nombre binaire 00101011 est COUNT”, le registre COUNT contien-
11010100. Bien sûr, cette opération MOVF f,d dra le nombre binaire 11001100,
est exécutée sur le registre d’adresse Cette instruction permet de déplacer ayant été tourné d’un bit à gauche, la
f, et le résultat sera mis dans ce le contenu du registre de valeur f sur “Carr y”, après l’instruction, contien-
registre ou dans le registre W selon la lui-même ou bien sur le registre W, dra 1 puisque le bit à l’extrême gauche
valeur de d, comme pour les instruc- selon la valeur de d. Même, si à pre- est mis dans la “Carr y”. Le bit à l’ex-
tions précédentes (un cycle machine). mière vue, la copie d’un “file” sur lui- trême droite contient, par contre, 0,
même peut sembler une opération c’est-à-dire la valeur que la “Carr y”
DECF f,d inutile, il faut rappeler que cette opé- avait avant l’exécution de l’instruction.
Cette instruction ser t à décrémenter ration va modifier le bit de zéro du L’instruction “RRF COUNT”, par tant
le contenu du registre d’adresse f (un registre d’état, qui peut donc être testé de la même situation que précédem-
cycle machine). pour vérifier le contenu du “file” (un ment, verra, par contre, le registre
cycle machine). COUNT contenir le nombre binaire
DECFSZ f,d 01110011, alors que la “Carry” sera
Cette instruction exécute la même opé- MOVWF f mise à 0.
ration que la DEFC mais si l’opération Cette instruction ser t à transférer le
de décrémentation a donné pour résul- contenu du registre W dans le registre SUBWF f,d
tat 0, alors, l’instruction qui suit immé- d’adresse f (un cycle machine). Cette instruction exécute la soustrac-
diatement n’est pas exécutée (en effet, tion entre le registre W et le registre
SZ veut dire “Skip of Zero”, c’est-à- NOP d’adresse f, puis met le résultat en f
dire “éviter si le résultat est 0”). Cette Cette instruction n’exécute aucun type ou en W selon la valeur de d (un cycle
instruction est normalement utilisée d’opération. On l’utilise habituellement machine).
conjointement avec les instructions pour introduire des retards (un cycle
GOTO (de un à deux cycles machine). machine). SWAPF f,d
Reprenons le programme de l’exemple L’instruction SWAPF ser t à échanger
et voyons les premières instructions RLF f,d entre eux les quatre bits de poids fort
de la routine DELAY : RRF f,d avec les quatre bits de poids faible
Les deux instructions de “Rotate Left d’un registre d’adresse f (un cycle
DELAY DECFSZ COUNT_1,1 through Carry” (RLF) et “Rotate Right machine). Si, par exemple, le registre
GOTO DELAY through Carry” (RRF) exécutent la rota- COUNT contient le nombre binaire
tion des registres d’adresse f à gauche 01101010, en exécutant l’instruction
La première instruction DECFSZ (voir figure 4a) “SWAPF COUNT,1” nous obtiendrons
COUNT_1,1 décrémente le registre que le registre COUNT contienne le
d’adresse COUNT_1 qui avait été défini nombre binaire 10100110.
par un EQU comme registre d’adresse
0C. C registre f
Instructions
Si cette opération de décrémentation “bit oriented”
n’a pas porté à 0 le contenu du registre
Figure 4a : Rotation à gauche.
COUNT_1, l’instruction suivante sera Ce sont quatre instructions qui per-
exécutée normalement. Il s’agit de mettent d’aller modifier ou tester la
GOTO DELAY qui, comme nous l’avons ou à droite (voir figure 4b), valeur d’un bit d’un registre.
vu, reporte le programme à l’étiquette
DELAY. Cependant, quand COUNT_1 BCF f,b
atteint la valeur 0, l’instruction suivante Avec cette instruction vous pouvez
est sautée, et donc le programme peut C registre f mettre à zéro (Clear) un bit d’un
continuer à l’instruction qui suit immé- registre. L’adresse du registre se
diatement le GOTO DELAY, sortant ainsi trouve, comme d’habitude, en f, alors
de la boucle. que b, qui peut prendre une valeur
Figure 4b : Rotation à droite. entre 0 et 7, représente le bit à mettre
INCF f,d à zéro (un cycle machine). Admettons,
INCFSZ f,d en mettant le bit qui “sort” du registre par exemple, que le registre COUNT
Ces deux instructions se comportent dans la “Carry” et en plaçant, dans le contienne le nombre binaire
exactement comme les instructions bit resté pour ainsi dire “libre”, la 01110101.

ELECTRONIQUE 77 magazine - n° 9
TECHNOLOGIE

L’instruction “BCF COUNT,5” fera suit (BTFSC veut dire “Bit Test File, Skip OPTION qui, comme nous l’avons vu,
qu’après l’exécution le registre COUNT if Clear”, c’est-à-dire “tester le bit du est un registre spécial pour la confi-
vaudra 01010101, étant donné qu’elle registre et s’il est égal à 0, sauter l’ins- guration du timer et du prescaler (un
met à zéro le bit D5 qui représente le truction suivante”). cycle machine).
sixième bit en par tant de la droite,
c’est-à-dire le bit le moins significatif. L’instruction BTFSS fonctionne de la TRISf
même façon, sauf que l’instruction qui L’instruction TRIS sert à transférer le
BSF f,b suit immédiatement est sautée si la contenu du registre W dans un des
Cette instruction fonctionne exacte- valeur du bit est 1 (un ou deux cycles registres TRIS qui, nous vous le rap-
ment comme la précédente, mais au machine). pelons, sont des registres qui per-
lieu de mettre le bit à 0, elle le met à mettent de configurer les por ts du
1 (Set). Elle a besoin d’un cycle microcontrôleur en entrée ou sortie. f
machine. Avec la même valeur de Instructions spéciales ne peut prendre que les valeurs 5, 6
COUNT, c’est-à-dire 01110101, après ou 7, pour accéder aux trois registres
l’instruction “BSF COUNT,3”, le registre Outre les instructions que nous avons des por ts A, B et C dans le cas où
COUNT vaudra 01111101. vues jusqu’à présent, il existe deux ceux-ci sont tous les trois présents (un
instructions qui sont spécifiques à cer- cycle machine). Dans l’exemple de
BTFSC f,b tains PIC de la série 16. Si vous dési- notre programme, parmi les instruc-
BTFSS f,b rez écrire un programme qui soit com- tions d’initialisation, on trouvait ces
Ces deux instructions sont particuliè- patible avec d’éventuels autres deux instructions :
rement importantes, puisqu’elles per- microcontrôleurs de la famille, nous
mettent, après avoir testé la valeur vous conseillons de ne pas utiliser ces MOVLW 00 ;Mets en W le nombre 0
d’un bit, identifié par b, dans le registre instructions. Si, toutefois, vous écri- TRIS PORT_B ;Le port B est configuré
d’adresse f et en fonction de la valeur vez le code qui sera utilisé toujours et ;en sortie
de celui-ci, d’exécuter ou non l’ins- seulement sur un microcontrôleur spé-
truction suivante. cifique (par exemple le 16F84), vous Ces instructions sont utilisées pour ini-
pourrez utiliser normalement ces deux tialiser le port B du microcontrôleur en
En particulier, avec l’instruction BTFSC, instructions. Etudions-les. sortie (nous vous rappelons, en effet,
si la valeur du bit est 1, l’instruction sui- qu’un 0 dans le registre configure le
vante sera normalement exécutée alors OPTION bit correspondant du por t en sor tie
que s’il est à 0, l’instruction suivante Cette instruction ser t à transférer le alors qu’un 1 le configure en entrée).
sera sautée, pour exécuter celle qui la contenu du registre W dans le registre ◆ R. N.

Z I d e s P a l u d s - B P 1 2 4 1 - 1 3 7 8 3 AU B AG N E C e d e x
Tél. : 04 42 82 96 38 - Fax 04 42 82 96 51
I n t e r n e t : h t t p : / / w w w. c o m e l e c . f r

… SPÉCIAL PIC… SPÉCIAL PIC… SPÉCIAL PIC…


* Offre promotionnelle valable jusqu’à fin février 2000
PROGRAMMATEUR UNIVERSEL POUR PIC.
Permet de programmer tous Développé par MICROCHIP, le PICSTARTPLUS vous permet
les microcontrôleurs d’éditer et d’assembler le programme source des PIC 12c5xx,
MICROCHIP, à l’exception PIC 14000, PIC 16Cxx, PIC 17Cxx. Le starter kit comprend, en
des PIC16C5x et des plus du programmateur proprement dit, un CD de programmes
PIC17Cxx. (MPLAB, MPASM, MPLAP-SIM) avec toute la documentation
FT284 (Kit complet + câble PC + SFW 284) ......455 F technique nécessaire, un câble RS232 pour le raccordement à
un PC, une alimentation secteur et un échantillon de
390 F* microcontrôleur PIC.
MF284 (PIC 12C508 programmé seul) ..............82 F PICSTARTPLUS ...... 1 690,00 F .......... 1 590 F*
Un compilateur sérieux est enfin disponible (en Basic par rapport au langage assembleur sont
deux versions) pour la famille des microcontrôleurs COMPILATEUR BASIC POUR PIC évidents : l'apprentissage des commandes est
8 bits. Avec ces softwares il est possible "d'écrire" un quelconque immédiat ; le temps de développement est considérablement réduit ; on
programme en utilisant des instructions Basic que le compilateur peut réaliser des programmes complexes avec peu de lignes
transformera en codes machine, ou en instructions prêtes pour être d'instructions ; on peut immédiatement réaliser des fonctions que seul
simulées par MPLAB ou en instructions transférables directement dans un expert programmateur pourrait réaliser en assembleur. (pour la liste
la mémoire du micro. Les avantages de l'utilisation d'un compilateur complète des instructions basic : www.melabs.com)
SRC pub 02 99 42 52 73 02/2000

PIC BASIC COMPILATEUR : Permet d'utiliser des fonctions de PIC BASIC PRO COMPILATEUR : Ajoute de nombreuses autres
programmation avancées, commandes de saut (GOTO, GOSUB), de fonctions à la version standard, comme la gestion des interruptions, la possibilité
boucle (FOR… NEXT), de condition (IF… THEN…), d'écriture et de lecture d’utiliser un tableau, la possibilité d’allouer une zone mémoire pour les variables,
d'une mémoire (POKE, PEEK) de gestion du bus I2E (I2CIN, I2COUT), la gestion plus souple des routines et sauts conditionnels (IF… THEN…
de contrôle des liaisons séries (SERIN, SEROUT) et naturellement de ELSE…). La compilation et la rapidité d’exécution du programme compilé sont
toutes les commandes classiques du BASIC. La compilation se fait très bien meilleures que dans la version standard. Ce compilateur est adapté aux
rapidement, sans se préoccuper du langage machine. utilisateurs qui souhaitent profiter au maximum de la puissance des PIC.
PBC (Pic Basic Compiler) ...................... 932,00 F PBC PBC PRO ........ 2 070,00 F ........ 1 870 F*
DEMANDEZ NOTRE NOUVEAU CATALOGUE 32 PAGES ILLUSTRÉES AVEC LES CARACTÉRISTIQUES DE TOUS LES KITS NUOVA ELETTRONICA ET COMELEC
Expéditions dans toute la France. Moins de 5 kg : Port 55 F. Règlement à la commande par chèque, mandat ou carte bancaire. Bons administratifs acceptés.
Le port est en supplément. De nombreux kits sont disponibles, envoyez votre adresse et cinq timbres, nous vous ferons parvenir notre catalogue général.

ELECTRONIQUE 78 magazine - n° 9

Vous aimerez peut-être aussi