Electronique Et Loisirs - Cours Microcontroleur Pic
Electronique Et Loisirs - Cours Microcontroleur Pic
Electronique Et Loisirs - Cours Microcontroleur Pic
Microcontrôleurs
Micr ocontrôleurs PIC
De la théorie
aux applications
MICROCOTRÔLEUR
Réservés il y a encore quelques années aux seuls industriels, les microcontrôleurs sont au-
jourd’hui à la portée des amateurs et permettent des réalisations aux possibilités étonnantes.
Cette utilisation des microcontrôleurs peut se concevoir de votre part de deux façons diffé-
rentes. Vous pouvez considérer que ce sont des circuits « comme les autres », intégrés à
certaines réalisations que nous vous proposerons dans la revue, et tout ignorer de leur fonc-
tionnement interne. Mais vous pouvez aussi profiter de leurs possibilités de programmation
pour concevoir vos propres réalisations ou bien encore pour modifier le comportement d’ap-
pareils existants. Pour ce faire, il faut évidemment savoir les programmer mais, contraire-
ment à une idée reçue qui a la vie dure, surtout chez les électroniciens, ce n’est pas diffici-
le.
a série d’articles que nous débutons aujourd’hui Un microcontrôleur est donc un circuit intégré qui contient
a bien évidemment pour but, vous l’avez compris, en interne, c’est-à-dire dans un seul et même boîtier, l’équi-
de vous apprendre à programmer ces fameux valent de la structure complète d’un micro-ordinateur. La fi-
microcontrôleurs mais ses ambitions ne s’arrê- gure 1 montre quels sont ces éléments dont voici les fonc-
tent pas là. Nous voulons en effet vous permettre tions :
de développer intégralement vos propres applications et,
pour cela, nous allons faire appel à de nombreuses solu- - l’unité centrale ou CPU (Central Processing Unit) est le
tions innovantes que vous découvrirez au fur et à mesure cœur du microcontrôleur. C’est l’équivalent du micropro-
que nous avancerons dans la connaissance de ces circuits. cesseur que vous trouvez dans votre ordinateur mais avec
Cette série se voulant avant tout concrète et orientée vers une puissance généralement moindre ; la vocation n’étant
les amateurs électroniciens que vous êtes, sachez dès à pas la même. C’est cette unité centrale qui exécute le pro-
présent qu’elle comprendra un minimum de théorie et beau- gramme et pilote ainsi tous les autres éléments. Elle dis-
coup de pratique mais aussi que les investissements à réa- pose généralement de deux connexions avec l’extérieur,
liser pour nous suivre seront dérisoires et se chiffreront à une pour son horloge et une pour sa ré-initialisation ou re-
quelques centaines de francs tout au plus, c’est-à-dire pas set.
plus que ce que vous dépensez habituellement pour réali-
ser des montages « classiques ». - La mémoire morte ou ROM (Read Only Memory) est une
mémoire dont le contenu a été défini une fois pour toutes ;
contenu qui est conservé même en cas de coupure de cou-
Qu’est ce qu’un microcontrôleur ? rant. Elle contient le programme que va exécuter l’unité cen-
trale. C’est donc elle en fait qui personnalise votre circuit,
Peut-être est-il bon de ne pas mettre la charrue avant les puisque c’est elle qui définit sa fonction.
bœufs et, avant de traiter de programmation et d’outils de
développement, vaut-il mieux définir clairement ce dont on - La mémoire vive ou RAM (Random Access Memory) est
va parler. une mémoire dans laquelle l’unité centrale peut lire et écri-
ELECTRONIQUE 76 magazine - n° 1
TECHNOLOGIE
re à tout instant. Elle est utilisée dans - et enfin, les outils développement leur puisse comprendre, et enfin de le
les phases de calcul du programme, (nous verrons dans un instant de quoi mettre dans la fameuse mémoire mor-
pour stocker des résultats intermé- il s’agit) doivent être aussi peu coûteux te contenue dans son boîtier.
diaires par exemple, mais elle sert aus- que possible.
si à stocker les variables de votre ap- Cet équipement minimum doit cepen-
plication. Ainsi, dans un thermostat par A l’heure actuelle, les circuits qui ré- dant, si possible, être complété par un
exemple, c’est dans cette mémoire pondent le mieux à ces critères sont moyen de test du programme car, hé-
RAM que seront stockées les tempé- les microcontrôleurs de la famille PIC las, il est assez rare qu’un programme
ratures de consigne que vous aurez de Microchip. Comble de chance, ces fonctionne du premier coup, sur tout
choisies. circuits connaissent actuellement un s’il est long et complexe. Ce sont les
succès que l’on peut, sans exagérer, fameux « bugs » (bogues si vous pré-
- Les entrées/sorties enfin constituent qualifier de planétaire et sont très lar- férez cet horrible et absurde terme fran-
le dernier élément du microcontrôleur gement utilisés dans l’industrie. En les çais) qu’il faut essayer au maximum
et peuvent revêtir des aspects très di- choisissant nous bénéficions donc des d’éliminer.
vers. Ce qu’il faut retenir c’est que ce retombées que cela implique avec, prin-
sont ces entrées/sorties qui vont per- cipalement, un très large choix de ré- L’ensemble « d’outils » que nous ve-
mettre au microcontrôleur de commu- férences, une excellente disponibilité nons d’évoquer constitue ce que l’on
niquer avec le monde extérieur. C’est et un très faible prix unitaire. appelle un outil de développement ou
donc là que vont être connectés les cla- système de développement. Il y a en-
viers, afficheurs, poussoir, moteurs, core quelques années, un tel système
relais, etc. que va utiliser votre appli- Le matériel coûtait plusieurs dizaines de milliers
cation. indispensable de francs ce qui plaçait tout dévelop-
pement à base de microcontrôleur hors
Tous ces éléments sont reliés entre Pour développer une application à base de portée des amateurs.
eux par ce que l’on appelle un bus, de microcontrôleur il faut disposer d’un
c’est-à-dire un ensemble de liaisons minimum de matériel. En effet, il faut Ce coût élevé est encore de mise
transportant des adresses, des don- tout d’abord être à même d’écrire le aujourd’hui avec certaines familles de
nées et des signaux de contrôle. Dans programme que va exécuter le micro- microcontrôleurs mais ce n’est pas le
de très nombreux microcontrôleurs, contrôleur, puis de le transformer en cas avec les PIC de Microchip que nous
dont ceux que nous utiliserons dans « quelque chose » que le microcontrô- avons choisis.
cette série d’articles, ce bus n’est pas
accessible de l’extérieur du boîtier et
nous n’aurons donc pas à nous en oc-
cuper. OUTIL UTILISÉ
ELECTRONIQUE 77 magazine - n° 1
TECHNOLOGIE
Ce micro-ordinateur et l’outil de
développement Microchip constituent
donc le seul matériel nécessaire à nos
expériences. Le reste, c’est-à-dire
essentiellement le programmateur de
PIC et les différentes maquettes d’ap-
plications, seront réalisés par nos soins
dans le courant de cette série.
ELECTRONIQUE 78 magazine - n° 1
TECHNOLOGIE
Figure 5 : Le logiciel de commande du programmateur que nous réaliserons Arrivé au terme de cet exposé, nous
très prochainement. Elégant, n’est ce pas ? savons maintenant que notre outil de
développement doit comprendre au
minimum un éditeur de programme et
un assembleur. Nous verrons que
MPLAB nous offre en fait bien plus que
cela !
Le mois prochain
Nous avons aujourd’hui dégrossi le ter-
rain en vous présentant les notions et
les termes essentiels à connaître pour
travailler avec les microcontrôleurs.
Nous aborderons la notion de pro-
gramme dans notre prochain numéro
et nous verrons de manière un peu plus
détaillée ce que contient cette fameu-
se unité centrale et comment elle fait
pour exécuter un programme.
C. TAVERNIER ◆
ADC-PWM-LCD-Timer-Interruptions-EEPROM
Claviers-Moteurs pas à pas-RS232…en BASIC
Code assembleur produit par le compilateur
Compilateur BASIC AVR. ..........................650 FF
Figure 6 : Le programme a été assemblé, il est prêt à être placé dans la AT90S1200, AT90S2313
mémoire ROM du microcontrôleur. Compilateur BASIC PIC.............................650 FF
PIC16F84 et tout PIC 14 bits largeur d’instruction.
Gère les pages programme et les pages registres.
Opérations en virgule flottante sur PIC en BASIC.
BASIC PIC + Kit PIC16F84.......................1 000 FF
Notre programme, écrit sous forme de programme qui fait partie de l’outil de Atelier 68HC11. ........................................650 FF
mnémoniques, s’appelle le program- développement et que l’on appelle l’as- Compilateur BASIC assembleur débogueur 64 K automatique.
Programmation EEPROM interne et externe (in situ).
me source, ou plus brièvement le sour- sembleur. Supports tous types de IIC11 y compris le 68HC11F1 dans les 3 modes.
ce, et son listing, c’est-à-dire son im- L’atelier + Kit 68HC11E2 ........................1 000 FF
pression sur papier, s’appelle donc ... L’assembleur lit donc en entrée un pro- Compilateur C AVR C simplifié ......................650 FF
Compilateur C PIC C simplifié ......................650 FF
le listing source. gramme sous forme de mnémoniques, PrixTTC. Mise à jour 1 an par Internet + port (Fr) compris.
ou programme source, et le traduit en Logiciels et manuels 100% en Français.
INFO… INFO… INFO… INFO… INFO…
SRC pub 02 99 42 52 73 06/99
Pour que l’unité centrale du microcon- sortie en une suite de codes binaires AT90S2313 DIP 20-15 E/S. RISC AVR. 10 MIPS. 2 Ko. FLASH sur une seule
trôleur puisse comprendre et exécuter correspondants que l’on appelle le pro- page. 128 octets RAM sur une seule page. La pile est limitée uniquement par
ce programme, il faut le traduire en une gramme objet ou plus brièvement l’ob- l’espace RAM. 32 registres. 128 EEPROM. RS232. PWM 8, 9 , 10 Bits.
Comparateur analogique. Watchdog. Timer 8 et 16 Bits… Tension de
suite de codes binaires qui, comme jet. Cette suite de codes constituant programmation 5 V. Logiciel de programmation (compatible BASIC AVR).
nous l’avons vu ci-dessus, correspon- l’objet doit ensuite être placée dans la DISPONIBLE SUR NOTRE SITE : www.digimok.com
dent aux différents mnémoniques uti- mémoire mor te ou mémoire de pro- DIGIMOK - BP 48 - 62170 MONTREUIL SUR MER
TEL: 03 21 86 54 88 - FAX: 03 21 81 03 43
lisés. Cette opération est faite par un gramme du microcontrôleur. Pour cela,
ELECTRONIQUE 79 magazine - n° 1
TECHNOLOGIE
Microcontr
Micr ocontrô
ôleurs PIC
De la thé
théorie
aux applications
2ème partie
par tie
b7 b6 b5 b4 b3 b2 b1 b0
D Q D Q D Q D Q D Q D Q D Q D Q
C C C C C C C C
horloge
b7 b6 b5 b4 b3 b2 b1 b0
i nous commençons par la notion de registre, microcontrôleurs car c’est la taille standard des mots qu’ils
c’est qu’en fait une mémoire est une accumula- savent manipuler.
tion de registres, mieux vaut donc ne pas mettre
la charrue avant les bœufs. Lorsque l’on a besoin de représenter un registre, on le des-
sine tout simplement comme une suite de petites cases
comme indiqué figure 1 ; chacune d’entre elles figurant un
Qu’est ce qu’un registre ? bit. Cette représentation ne doit cependant pas vous sem-
bler être une vue de l’esprit. Elle correspond en effet à la
Un registre est tout simplement un circuit logique capable structure physique du registre qui peut être réalisé, comme
de contenir un certain nombre de données, logiques elles indiqué dans le bas de la figure 1, par des bascules D tout
aussi bien sûr. S’il ne contient qu’un bit, c’est tout sim- à fait classiques ; des 4013 CMOS ou des 7474 TTL par
plement une bascule, comme une bascule D par exemple. exemple.
S’il contient plusieurs bits, cela devient un « vrai » registre
et le groupe de bits qu’il contient s’appelle alors un mot. Dans un tel registre, le mot binaire à mémoriser est appliqué
Si ce nombre de bits est égal à huit, cela constitue un octet, sur les entrées D des bascules et, après un coup d’horloge,
notion très largement utilisée avec nombre de « petits » il se retrouve disponible sur les sorties Q. Si plus aucun coup
ELECTRONIQUE 72 magazine - n° 2
TECHNOLOGIE
d’horloge n’est appliqué à nos bascules, beaucoup moins précise pour l’utilisa- Comme ces bits sont groupés par mots
l’état présent sur les sor ties Q est teur que celle consistant à dire que et que le binaire n’est pas vraiment
conservé indéfiniment, même si l’état c’est une mémoire de 4 mots de 8 bits pratique à manipuler dès que le nombre
des entrées D vient à changer. Notre car cette dernière façon de faire indique de bits devient important, une notation
registre a donc bien un effet mémoire. aussi l’organisation de la mémoire. particulière est utilisée et a pour nom
l’hexadécimal. Comme il est extrême-
Nous verrons que les registres sont Par principe, les mots contenus dans ment utile de connaître cette base de
nombreux dans un microcontrôleur. Cer- une mémoire constituent ce que l’on numération (puisque c’est comme cela
tains servent à définir le mode de fonc- appelle les données de la mémoire, que ça s’appelle) nous allons en dire
tionnement de ses entrées/sorties ou même si, vu de l’extérieur, ces don- quelques mots en essayant de rester
à paramétrer certaines de ses possi- nées ont une toute autre signification. accessible à tous.
bilités, d’autres sont utilisés dans les
calculs ; d’autres enfin indiquent l’état Afin d’identifier et de pouvoir accéder Lorsque nous comptons, dans notre
de cer taines par ties ou fonctions du à chaque mot contenu dans la vie de tous les jours, nous utilisons la
microcontrôleur. mémoire, ceux-ci se voient affecter ce base de numération décimale c’est-à-
que l’on appelle une adresse qui cor- dire que tous les nombres que nous
Même si nous avons vu une méthode respond en fait à leur position physique manipulons peuvent être décomposés
de réalisation d’un registre avec des dans la mémoire. Ainsi, notre mémoire comme des sommes de puissances de
bascules D ; il n’est pas important que exemple de la figure 2 comporte-t-elle 10 successives.
vous sachiez comment est fait chaque quatre adresses qui sont 0, 1, 2 et 3.
registre d’un microcontrôleur pour l’uti- Notez dès à présent que toutes les énu- Ainsi, lorsque nous utilisons le nombre
liser. Seuls comptent, en effet, les bits mérations en programmation com- 248 cela veut dire en réalité :
qu’il contient et leur signification éven- mencent à zéro sauf de très rares - 2 centaines + 4 dizaines + 8 unités.
tuelle. exceptions. Ainsi le premier bit d’un Si vous avez des enfants à l’école pri-
mot est-il toujours le bit zéro et non le maire ils ne seront pas surpris d’une
bit un. De même que la première telle décomposition puisque c’est
Du registre adresse est toujours l’adresse zéro. comme cela qu’on leur apprend à
à la mémoire C’est une simple question d’habitude. compter !
Lorsque l’on a besoin de mémoriser Même s’il existe des mémoires avec Si l’on adopte une notation faisant
plusieurs mots binaires, on n’a, pour des organisations très diverses, depuis appel aux puissances de 10, cette
l’instant, pas trouvé de meilleure solu- des mots de un bit jusqu’à des mots décomposition devient :
tion que celle consistant à les placer de 16 bits ; la majorité des mémoires - 2 x 102 + 4 x 101 + 8 x 100
dans autant de registres que néces- que nous rencontrerons dans les micro- (rappelons que n’importe quel nombre
saire, cette association de registres contrôleurs seront organisées en mots à la puissance 0 est égal à 1).
s’appelant alors une mémoire. de 8 bits car c’est la taille standard
des données que ces derniers mani- Notre nombre est donc décomposé
Une mémoire est caractérisée par deux pulent. Il est donc logique de stocker selon les puissances décroissantes de
paramètres principaux : sa taille, expri- les mots en mémoire sans devoir les la base de numération qui est, ici, 10.
mée en nombre de mots, et sa « lar- couper en morceaux ou les accoler à
geur » exprimée en nombre de bits. plusieurs à la même adresse. Et bien en binaire c’est exactement
Cette « largeur » définit en fait la taille pareil mais la base de numération est
des mots stockés dans la mémoire. La 2, ce qui conduit à des décompositions
figure 2 montre ainsi le contenu d’une Un peu d’arithmétique un peu moins naturelles et, sur tout,
mémoire for t simple de 4 mots de 8 un peu moins faciles à faire de tête.
bits. On peut évidemment exprimer Les microcontrôleurs étant des circuits Ainsi, le nombre binaire 1101 est-il tout
aussi la capacité de la mémoire en logiques, ils ne manipulent que du simplement :
nombre total de bits. Dans le cas de la binaire, c’est-à-dire des zéros et des - 1 x 23+ 1 x 22 + 1 x 21 + 1 x 20
figure 2 nous avons ainsi une mémoire uns qui correspondent respectivement soit encore :
de 32 bits, mais c’est là une définition aux niveaux logiques bas et hauts. - 1 x 8 + 1 x 4 + 1 x 2 + 1 x 1 (tout
nombre à la puissance 0 vaut 1 rap-
pelez-vous) soit encore 13 en décimal.
D7 D6 D5 D4 D3 D2 D1 D0
Si, pour les nombres binaires de petite
Adresse 3 taille, cette décomposition reste fai-
sable (même de tête quand on a l’ha-
bitude) elle devient vite pénible, pour
Adresse 2 ne pas dire plus, pour les nombres plus
importants. A titre d’exercice, essayez
donc de convertir en décimal le nombre
binaire 1110 0101 0110 1001 qui ne
Adresse 1 comporte pourtant que 16 bits.
ELECTRONIQUE 73 magazine - n° 2
TECHNOLOGIE
ELECTRONIQUE 74 magazine - n° 2
TECHNOLOGIE
Au cœur de
MÉMOIRE MÉMOIRE l’unité centrale : l’ALU
PC DE DE ÉTAT
PROGRAMME DONNÉES A ce stade de cette étude, vous en
contrôle
ELECTRONIQUE 75 magazine - n° 2
TECHNOLOGIE
décodeur d’instructions. Cet organe Ainsi, pour ajouter deux mots binaires conditionnel comme nous le verrons
logique très complexe analyse le code contenus en mémoire, il va falloir dans la suite de cette étude. Nous
binaire de chaque instruction et agit en envoyer le premier mot dans l’ALU et allons en effet en rester là pour aujour-
conséquence sur les éléments internes le second dans W. Ce n’est qu’à cette d’hui ; l’exposé que nous venons de
de l’unité centrale. Quoi que vous fas- condition qu’ils pourront s’ajouter, le vous faire ingurgiter étant assez indi-
siez, vous n’aurez jamais accès direc- résultat se retrouvant ensuite dans W geste pour un numéro d’été que vous
tement à cet organe. à la place du mot initial. êtes peut-être en train de lire sur les
plages ou en respirant l’air pur de nos
Les données manipulées par vos ins- Comme cette ALU réalise des opéra- campagnes… ◆
tructions sont, quant à elles, stockées tions arithmétiques et logiques, elle
dans la mémoire de données d’où elles peut être amenée à rencontrer des
sortent lorsque c’est nécessaire sous situations particulières : résultat trop
ADC-PWM-LCD-Timer-Interruptions-EEPROM
l’action du fameux décodeur d’instruc- grand pour sa taille, résultat nul, résul- Claviers-Moteurs pas à pas-RS232…en BASIC
tions. Elles peuvent alors aller vers deux tat négatif, etc. Et comme ces situa- IF... THEN... ELSE, variables, tableaux...
Compilateur BASIC AVR. .......................... 650 FF
destinations distinctes : l’accumulateur tions particulières peuvent nous inté- AT90S1200, AT90S2313...
appelé aussi registre de travail ou l’ALU resser au plus haut point pour prendre Compilateur BASIC PIC. ............................ 650 FF
PIC16F84 et tout PIC 14 bits largeur d’instructions.
pour unité arithmétique et logique (Arith- des décisions quant à la suite de l’exé- Gère les pages programme et les pages registres.
metic and Logic Unit). En effet, toutes cution du programme, l’ALU est inti- Opérations en virgule flottante sur PIC en BASIC.
les « opérations » que peuvent exécu- mement associée à un autre registre BASIC PIC + Kit PIC16F84. .................... 1 000 FF
Atelier 68HC11. ........................................ 650 FF
ter les instructions, que ce soient des qui est le registre d’état ou Status en Compilateur BASIC assembleur débogueur 64 K automatique.
opérations arithmétiques proprement bon anglais. Programmation EEPROM interne et externe (in situ).
Supports tous types de IIC11 y compris le 68HC11F1 dans les 3 modes.
dites ou purement logiques, ne peuvent L’atelier + Kit 68HC11E2 ........................ 1 000 FF
l’être que dans un élément particulier Ce registre contient un certain nombre Compilateur C AVR C simplifié ...................... 650 FF
qui est justement cette ALU. de bits indépendants qui ont tous une Compilateur C PIC C simplifié ...................... 650 FF
PrixTTC. Mise à jour 1 an par Internet + port (Fr) compris.
signification particulière. On trouve ainsi Logiciels et manuels 100% en Français.
PROTEK 506
PROTEK 3200 MULTIMÈTRE DIGITAL
ANALYSEUR DE SPECTRE, MESUREUR DE CHAMPS 3-3/4 digit, 4000 points
RÉCEPTEUR LARGE BANDE de 100 kHz à 2 GHz - Mode RMS
- FM bande étroite, FM bande large, AM et BLU - Double affichage pour
- Précision de fréquence assurée par PLL fréquence, CC et T° GENERALE
- Sensibilité environ 0-6 dB µV EMF - Interface RS232 ELECTRONIQUE
- Impédance 50 Ω - Décibelmètre SERVICES
- Toutes les fonctions sélectionnables par menu - Capacimètre 205, RUE DE L’INDUSTRIE
- HP intégré - Inductancemètre Zone Industrielle – B.P. 46
77542 SAVIGNY-LE-TEMPLE Cedex
- Interfaçable RS232 pour connexion PC ... - Thermomètre (C°/F°) Tél. : 01.64.41.78.88
- Continuité et diodes Télécopie : 01.60.63.24.85
- Test des circuits logiques Minitel : 3617 code GES
- Protection contre les G.E.S. – MAGASIN DE PARIS
212, AVENUE DAUMESNIL - 75012 PARIS
surtensions ... TEL. : 01.43.41.23.15
FAX : 01.43.45.40.04
ELECTRONIQUE 76 magazine - n° 2
TECHNOLOGIE
Microcontrôleurs
Micr ocontrôleurs PIC
De la théorie
aux applications
3ème partie
par tie
Le PIC 16F84
e circuit n’est certes pas le plus complet ni le miner tout à tour le rôle afin de comprendre son schéma
plus performant de la famille mais il permet déjà de mise en œuvre.
de réaliser de nombreuses applications et, sur-
tout, il dispose d’une mémoire de programme de
type EEPROM c’est-à-dire programmable et effa- L’alimentation
çable électriquement jusqu’à mille fois. C’est
donc le circuit idéal pour faire des exercices car toutes les Comme tout circuit intégré qui se respecte, un microcon-
erreurs sont permises sans coûter un sou ! trôleur a besoin d’être alimenté et c’est le rôle dévolu à VSS,
qui est la patte de masse, et à VDD qui est l’alimentation
Précisons sans plus attendre que, pour ce qui nous occupe positive. Pour les 16F84 en versions XT, RC et LP (voir ci-
ici, ce circuit est équivalent au célèbre PIC 16C84 que l’on dessous) cette alimentation peut varier de 4 volts à 6 volts
peut considérer comme étant son prédécesseur. Il va alors que pour les versions HS (idem) elle doit rester com-
d’ailleurs bientôt disparaître du catalogue Microchip au pro- prise entre 4,5 et 5,5 volts. Il existe aussi des versions L
fit du seul 16F84. Toutes les manipulations que nous vous (16LF84) qui peuvent fonctionner de 2 volts à 6 volts mais
présenterons pourront donc être réalisées indifféremment elles sont moins répandues que les versions classiques.
avec l’un ou avec l’autre de ces circuits.
Les circuits PIC étant réalisés en technologie CMOS, ils
Le PIC 16F84, dont le brochage est indiqué figure 1, est consomment fort peu et les valeurs typiques auxquelles il
présenté en boîtier 18 pattes ; pattes dont nous allons exa- faut s’attendre pour notre 16F84 sont ainsi les suivantes :
ELECTRONIQUE 77 magazine - n° 4
TECHNOLOGIE
- moins de 2 mA alimenté sous 5 volts peuvent parfois demander jusqu’à dix Lorsque le programme exécuté ne
avec une horloge (voir ci-dessous) à cycles d’horloge pour s’exécuter. nécessite aucune notion de temps pré-
4 MHz ; cise, on peut aussi utiliser avec le
- moins de 15 µA alimenté sous 2 volts Pour ce qui est des circuits PIC, nous 16F84 un oscillateur à circuit R-C, qui
avec une horloge à 32 kHz. sommes en présence de microcontrô- présente l’intérêt d’être très écono-
leurs à architecture dite RISC, ce qui, mique. Son schéma est alors celui de
Lorsqu’il est alimenté sous 5 volts, les entre autres choses, signifie qu’ils exé- la figure 4 sur lequel sont indiquées
lignes d’entrées/sorties du PIC peuvent cutent une instruction par cycle d’hor- les valeurs limites des composants
être considérées comme compatibles loge. La fréquence de l’horloge externe passifs à utiliser.
TTL alors qu’elles sont compatibles des étant divisée par quatre pour générer
circuits logiques CMOS sur toute leur l’horloge interne ; un PIC utilisant une Le tableau 1 précise, quant à lui, les
plage de tension d’alimentation. Concrè- horloge à 10 MHz exécute donc une ins- fréquences obtenues pour diverses
tement, cela signifie que vous pouvez truction en 400 ns (nanoseconde) ce valeurs des composants passifs ainsi
raccorder directement à ces lignes des qui est une vitesse assez remarquable que la variation de fréquence typique
circuits logiques de la série CMOS 4000 pour un circuit en technologie CMOS. que l’on peut rencontrer d’un boîtier à
sans aucun problème.
Cette horloge utilise les pattes OSC1
L’alimentation d’un PIC 16F84 ne et OSC2 du boîtier (voir figure 1) et peut C1
nécessite pas de précaution particu- être réalisée de diverses façons. La Osc1
lière, surtout vue la faible consomma- plus classique fait appel à un quartz
tion du circuit mais, comme pour tout ou à un résonateur céramique, ce qui
circuit logique rapide, il faut tout de est un peu moins coûteux et à peine Quartz ou
même veiller à la découpler. Cela doit moins stable. Le schéma à utiliser est résonateur 16F84
céramique
être fait au plus près du boîtier, avec alors celui de la figure 3, sachant que
un condensateur céramique de bonne l’horloge interne fonctionne à une fré-
qualité de 10 nF environ, comme cela quence égale au quar t de celle du Osc2
est rappelé figure 2. quartz ou du résonateur.
C2
En fait, les PIC 16F84 comme la majo-
L’horloge rité des autres circuits de cette famille, Mode Fréquence C1 et C2
considèrent trois modes de fonction- XT 455 kHz 47 à 100 pF
L’horloge est un élément essentiel nement différents de cet oscillateur à XT 2 MHz 15 à 33 pF
dans un microcontrôleur ou micropro- quartz : XT 4 MHz 15 à 33 pF
cesseur car c’est elle qui r ythme le HS 8 MHz 15 à 33 pF
fonctionnement de toute la logique - le mode LP pour Low Power qui est uti- HS 10 MHz 15 à 33 pF
interne et qui cadence donc l’exécution lisable avec des fréquences allant de
des instructions du programme. 32 kHz à 200 kHz environ ; C1 et C2 en fonction de la fré-
- le mode XT pour XTal qui est le mode quence pour les résonateurs céra-
Selon les circuits, leur type ou leur tech- standard lorsque l’on fonctionne avec miques
nologie, la fréquence de l’horloge visible un quartz et qui correspond à des fré-
de l’extérieur, sous forme d’un quartz quences de 100 kHz à 4 MHz environ ; Mode Fréquence C1 et C2
par exemple, n’a parfois qu’un lointain - le mode HS pour High Speed qui est LP 32 kHz 68 à 100 pF
rapport avec celle réellement utilisée destiné aux quartz de fréquences les LP 200 kHz 15 à 33 pF
en interne. Ainsi, un microprocesseur plus élevées ; typiquement de 4 MHz à XT 100 kHz 100 à 150 pF
muni d’un quartz à 10 MHz n’est pas 10 MHz. XT 2 MHz 15 à 33 pF
nécessairement plus rapide qu’un cir-
XT 4 MHz 15 à 33 pF
cuit d’un autre type muni d’un quartz Le choix entre ces différents modes
à 4 MHz. Il suffit en effet que les fac- est évidemment réalisé en partie par HS 4 MHz 15 à 33 pF
teurs de division internes diffèrent. la fréquence du quartz ou du résona- HS 10 MHz 15 à 33 pF
teur utilisé mais aussi au moyen de C1 et C2 en fonction de la fré-
Un autre paramètre affecte la vitesse deux bits d’un registre interne qu’il faut quence pour les quartz
d’un microcontrôleur, c’est le nombre de positionner correctement lors de la pro-
cycles d’horloge nécessaires pour exé- grammation du circuit. Ce sont les bits Figure 3 : Utilisation d’un quartz
cuter une instruction. Dans certains cir- FOSC1 et FOSC2 dont nous reparlerons pour piloter l’oscillateur d’horloge.
cuits, les instructions les plus complexes au moment opportun.
ELECTRONIQUE 78 magazine - n° 4
TECHNOLOGIE
Le circuit de reset
Fosc/4 Osc2
Le « reset », ou la réinitialisation en bon
français, est une opération essentielle
dans un microcontrôleur ou micropro- Figure 4 : Une horloge économique Figure 5 : Utilisation du circuit de
cesseur. Ce reset a pour effet de posi- avec une simple cellule R - C. reset interne à la mise sous tension.
tionner dans un état déterminé et
connu un certain nombre de registres
et d’éléments internes mais aussi et 0,05 volt par ms. C’est tout de même boîtier dans lequel il est contenu. Notre
surtout, il a pour fonction principale de le cas dans la majorité des situations. PIC 16F84, avec son boîtier 18 pattes,
charger le contenu du PC (voir notre n’offre ainsi que 13 pattes pour les
précédent numéro si nécessaire) avec Lorsque ce reset interne ne suffit pas ; entrées/sorties une fois enlevées les
l’adresse de la première instruction le schéma à adopter est alors celui de pattes utilisées par l’alimentation, l’hor-
exécutable du programme, déclenchant la figure 6. La résistance R doit être loge et le reset.
ainsi l’exécution de ce dernier. inférieure à 40 kΩ afin que le courant
entrant par la patte MCLR barre ne Ces entrées/sorties sont organisées
C’est pour cela que, lorsque votre PC génère pas une trop forte chute de ten- de la façon suivante :
(celui qui est sur votre bureau, pas celui sion. La résistance R1, quant à elle,
qui est dans un PIC !) est vraiment doit être comprise entre 100 Ω et 1 - 5 lignes constituent ce que l’on appelle
« planté », l’action sur le poussoir de kΩ afin de limiter le courant de le Port A et sont repérées RA0 à RA4 ;
reset de la face avant lui permet tou- décharge de C dans la patte MCLR - 8 lignes constituent ce que l’on appelle
jours de redémarrer correctement. barre lors d’un claquage électrosta- le Port B et sont repérées RB0 à RB7.
tique. La diode D enfin (1N 914, 1N
Sur une application à microcontrôleur 4148 ou similaire) permet au conden- Toutes les lignes de ces ports sont des
« normale », le reset ne doit en prin- sateur C de se décharger ailleurs que entrées/sorties dont le sens de fonc-
cipe être réalisé qu’une seule fois, lors dans la patte MCLR barre lorsque l’ali- tionnement (entrée ou sortie) est défini
de la mise sous tension de l’applica- mentation est coupée. individuellement par logiciel en posi-
tion. En ef fet, si son programme ne tionnant des bits dans un registre
comporte pas d’erreur ou « bug », il n’y La valeur de C dépend évidemment de approprié. Cela signifie qu’à un instant
a ensuite aucune raison valable de faire la vitesse de reset désirée. Hormis dans donné, dans un programme, vous pou-
à nouveau un reset. quelques cas particuliers, une valeur vez très bien programmer RA2 en
de 0,1 µF à 1 µF convient généralement. entrée et RB6 en sortie et, quelques
De ce fait, la majorité des circuits PIC instructions plus tard, faire le contraire.
- et le 16F84 est dans ce cas - dispose
d’une circuiterie interne de reset auto- Les entrées/sorties L’intérêt d’une telle manœuvre ne vous
matique à la mise sous tension ; ce semble peut-être pas évident et pour-
que l’on appelle en anglais POR pour Même si cela vous semble peu ; ce que tant il l’est, comme nous le verrons
Power On Reset. Si ce seul reset vous nous venons de voir permet de faire ultérieurement dans cette série, pour
suf fit, le schéma à utiliser pour le fonctionner un microcontrôleur PIC s’inter facer avec un clavier ou bien
mettre en œuvre est indiqué figure 5. auquel il ne reste plus qu’à ajouter un encore pour connecter un clavier et des
La patte MCLR barre est reliée à l’ali- programme bien sûr, mais aussi ce que afficheurs sur les mêmes pattes par
mentation, directement ou via une l’on désigne plus généralement sous exemple.
résistance de quelques kΩ. Il est dif- le terme d’entrées/sorties.
ficile d’imaginer un schéma plus Remarquez également, en examinant
simple. L’intérêt d’un microcontrôleur réside le brochage de la figure 1, que la ligne
tout à la fois dans le nombre d’en- RA4 est partagée avec une ligne appe-
Il existe cependant deux situations trées/sorties disponibles mais aussi lée T0CKI. Cette patte peut en effet éga-
dans lesquelles ce schéma est insuf- dans leur souplesse de programma- lement ser vir d’entrée d’horloge au
fisant : lorsque la vitesse de croissance tion. Ainsi, cer taines lignes peuvent timer interne dans certaines applica-
de la tension d’alimentation est trop n’être que des entrées, d’autres que tions. Ici aussi, c’est à un bit à posi-
faible ou lorsque l’on souhaite dispo- des sorties et d’autres encore, les plus tionner dans un registre interne
ser d’une possibilité de reset manuel, intéressantes, être des entrées ou des qu’échoit la tâche de faire la sélection.
avec un bouton poussoir par exemple. sorties au rythme du bon vouloir d’un
programme interne. Lorsque le moment sera venu, nous
Il faut en effet garder présent à l’esprit verrons en détail tous les modes de
que, pour que le circuit de reset interne Le nombre d’entrées/sorties, quant à fonctionnement de ces entrées/sorties
à la mise sous tension fonctionne cor- lui, dépend, bien sûr, de la puce du dont cer taines disposent de résis-
rectement, la tension d’alimentation microcontrôleur elle-même mais aussi, tances de rappel internes au niveau
VDD doit progresser plus vite que et dans une large mesure, du type de haut programmables, d’autres de trig-
ELECTRONIQUE 79 magazine - n° 4
TECHNOLOGIE
PROTEK 506
PROTEK 3200 MULTIMÈTRE DIGITAL
ANALYSEUR DE SPECTRE, MESUREUR DE CHAMPS 3-3/4 digit, 4000 points
RÉCEPTEUR LARGE BANDE de 100 kHz à 2 GHz - Mode RMS
- FM bande étroite, FM bande large, AM et BLU - Double affichage pour
- Précision de fréquence assurée par PLL fréquence, CC et T° GENERALE
- Sensibilité environ 0-6 dB µV EMF - Interface RS232 ELECTRONIQUE
- Impédance 50 Ω - Décibelmètre SERVICES
- Toutes les fonctions sélectionnables par menu - Capacimètre 205, RUE DE L’INDUSTRIE
- HP intégré - Inductancemètre Zone Industrielle – B.P. 46
77542 SAVIGNY-LE-TEMPLE Cedex
- Interfaçable RS232 pour connexion PC ... - Thermomètre (C°/F°) Tél. : 01.64.41.78.88
- Continuité et diodes Télécopie : 01.60.63.24.85
- Test des circuits logiques Minitel : 3617 code GES
- Protection contre les G.E.S. – MAGASIN DE PARIS
212, AVENUE DAUMESNIL - 75012 PARIS
surtensions ... TEL. : 01.43.41.23.15
FAX : 01.43.45.40.04
ELECTRONIQUE 80 magazine - n° 4
TECHNOLOGIE
Microcontrôleurs
Micr ocontrôleurs PIC
De la théorie
aux applications
4ème partie
par tie
L'architectur
L'ar chitecture
e interne
interne
du PIC 16F84
Le mois dernier nous avons décrit l’extérieur du PIC 16F84 et notamment comment
réaliser le circuit d’alimentation, d’horloge et de reset. Vous possédez donc maintenant
toutes les informations « hard » pour faire fonctionner ce microcontrôleur. Nous allons,
ce mois-ci, visiter l’intérieur de ce composant de façon à comprendre son mécanisme
de fonctionnement. Ainsi, nous pourrons, au fur et à mesure, découvrir par quel moyen
générer ou lire un état logique sur les ports d’entrées/sorties, faire du calcul, créer
des temporisations et beaucoup d’autres choses.
ELECTRONIQUE 75 magazine - n° 5
TECHNOLOGIE
Pour le PIC 16F84, chaque instruction truction. Généralement ces actions - Le bloc nommé « 8 Level Stack » ou
est codée sur 14 bits et la taille sont ef fectuées physiquement par « Pile » : il est utilisé par le microcon-
mémoire est de 1 Ko x 14 bits (soit l’ALU, en relation étroite avec le trôleur pour gérer le retour des sous-
1 024 instructions à la file ; 1 Ko = registre de travail W. programmes et des interruptions.
1 024 en informatique !). Cette taille - Le bloc « TMR0 » : il ser t au fonc-
reste suffisante pour les petites appli- tionnement du TIMER.
cations qui nous intéressent. Le Pro- Mémoire RAM - Le bloc I/O ports : il permet d’écrire
gram Counter ou « PC » (à droite de la ou de lire sur les ports A et B.
mémoire programme sur la figure 1) Pour fonctionner, un programme doit - Le bloc Timing Génération associé au
est un registre qui pointe l’instruction généralement pouvoir stocker tempo- bloc présent juste sur sa droite gère
à exécuter et permet donc au pro- rairement des données. Une zone est tous les signaux d’horloges du sys-
grammeur de ce déplacer à volonté spécialement prévue à cet effet : c’est tème.
dans cette mémoire. A la mise sous la RAM (Ramdom Acces Memor y). - Le registre FSR : utilisé pour l’adres-
tension, ce registre est mis à 0 et Contrairement à la Mémoire Pro- sage indirect de la mémoire RAM.
pointe donc la première case mémoire. gramme, cette dernière s’ef face - Le bus de donnée : il met en liaison
Durant l’exécution du programme, lorsque l’on coupe l’alimentation. Vous les blocs utilisant des données.
chaque instruction pointée transite trouverez ce bloc en haut, au centre de
dans le « registre d’instruction » afin la figure 1. On s’aperçoit que la taille Cette description interne nous a per-
qu’elle puisse être traitée par le de cette mémoire est de 68 x 8 bits. mis d’identifier les blocs principaux de
« contrôleur et décodeur d’instruc- Comme chaque donnée est codée sur ce microcontrôleur et de mieux com-
tions » (ces deux blocs se trouvent à 8 bits, il est donc possible de mémo- prendre le déroulement d’un pro-
gauche dans la figure 1). C’est ce der- riser 68 données à la file. De plus, la gramme. Nous allons maintenant nous
nier qui gère la suite d’actions internes mémoire RAM contient deux autres intéresser plus par ticulièrement aux
nécessaires à la bonne exécution de zones (appelées Bank 0 et Bank 1) différentes mémoires afin de savoir où
cette instruction. réservées aux registres de configura- et comment stocker un programme,
tion du système. Nous détaillerons la configurer les ports d’entrée/sortie et
La mémoire programme peut être de fonction de ces registres à la fin de cet utiliser la mémoire de données.
différente nature selon le microcon- article.
trôleur utilisé. Dans notre cas, la
mémoire est de type FLASH/ROM,
L’organisation
c’est-à-dire réinscriptible à volonté. Mémoire de données de la Mémoire
Mais il existe aussi des mémoires EEPROM Programme
EPROM qui sont ef façables par UV
ainsi que des mémoires OTP qui ne Une par ticularité (et aussi un grand Sur la figure 2, nous voyons que l’es-
peuvent être programmées qu’une avantage) du PIC16F84 est de possé- pace Mémoire Programme commence
seule fois. der une mémoire de 64 x 8 bits où l’on à l’adresse 0000h et finit à l’adresse
peut stocker des données qui ne dis- 3FFh. Le « h » indique que le nombre
paraissent pas lors d’une coupure d’ali- qui précède est écrit en base hexadé-
Unité de calcul – ALU mentation : c’est la mémoire EEPROM cimale. Cela permet de loger 1 024
(en haut à droite de la figure 1). Géné- instructions. Enfin, pas tout à fait, la
En bas et au centre, se trouve le cœur ralement cette zone sert à mémoriser case mémoire 0000h est réservée au
du système appelé « ALU » (Unité Arith- des paramètres d’étalonnage ou de
métique et Logique). C’est cette partie configuration. Mais attention, elle pos-
qui effectue physiquement toutes les sède un inconvénient : le temps d’ac-
actions internes dictées par le Contrô- cès est relativement long. Elle ne
leur de Décodeur d’Instructions. Par convient donc pas pour une utilisation
exemple, l’ALU peut effectuer une addi- qui demande de la rapidité (calcul,
tion, une soustraction ainsi que les opé- asservissement, etc.).
rations logiques telles que « ET »,
« OU », etc.
Rapidement,
Pour effectuer toutes ces opérations, il reste encore…
l’ALU utilise les données en prove-
nance d’un registre de travail appelé Pour finir cette description générale,
« W » (Work Register). Vous découvri- nous allons présenter succinctement
rez que ce registre est largement uti- les blocs restants.
lisé par les instructions du pro-
gramme. - Le Status Register ou Registre d’état :
ce registre donne plusieurs indications :
le résultat d’une opération effectuée
En résumé… par l’ALU (résultat égal zéro par
exemple), l’état de l’initialisation du
Le PC indique quelle instruction doit microcontrôleur (reset), etc. Il permet
être effectuée. Cette instruction est aussi de définir la zone d’accès en
transférée dans le Contrôleur de Déco- mémoire RAM Bank 0 et Bank 1 pour
deur d’Instructions qui assure l’en- accéder aux registres de configuration Figure 2 : Plan de la Mémoire
chaînement des actions internes (pas d’inquiétude nous verrons cela Programme et de la pile.
nécessaires pour accomplir cette ins- plus tard).
ELECTRONIQUE 76 magazine - n° 5
TECHNOLOGIE
vecteur de Reset (dans cette case est Les cases mémoires comprises entre niveaux de tension présents sur les
logée l’adresse du début du pro- les adresses 00h et 0Bh sont réser- pattes.
gramme) et la case mémoire 0004h vées aux registres de configuration du - TRISA et TRISB sont les registres
au Vecteur d’Interruption des péri- système (zone SFRs). Partitionnée en de configuration des por ts A et B. Ils
phériques (utilisée lorsque l’on active deux parties distinctes Bank 0 et Bank définissent quels bits seront utilisés
les interruptions). Le registre PC, qui 1, cette zone possède un double en entrée ou en sortie. Un « 1 » confi-
pointe en permanence l’instruction à accès. Si l’on active la Bank 0, les gure le bit en entrée et un « 0 » en sor-
exécuter, se compose de deux registres représentés à gauche sur la tie.
registres : l’un, de huit bits, est appelé figure 3 sont accessibles. Si par contre - EEDATA, EEADR, EECON1 et
le PCL (Program Counter Low) et la Bank 1 est activée, les registres EECON2 sont les registres à utiliser
l’autre, de 5 bits, le PCH (Program actifs seront ceux de droite. La sélec- pour la mémoire de données
Counter High), le tout formant 13 bits. tion de la Bank s’effectue à travers les EEPROM.
Le PCL est directement accessible en bits de contrôle RP0 et RP1 du registre - PCLATH permet d’écrire dans le
lecture comme en écriture. Par contre, STATUS (03h). PCH.
le PCH peut être uniquement acces- - INTCON est le registre de contrôle
sible en écriture à travers un registre La zone de mémoire comprise entre des interruptions. Il indique l’appari-
appelé PCLATH. les adresses 0Ch et 4Fh (68 cases tion d’un événement externe (par
mémoires) est utilisée pour stocker les exemple le passage d’un niveau haut
Le bloc Pile (Stack), à huit niveaux, per- données de notre programme. La zone à un niveau bas sur l’une des broches
met, d’une par t, de mémoriser partant de 8Ch allant jusqu’à CFh de d’entrée) ou interne (par exemple la
l’adresse en cours lors d’un « saut » à la Bank 1 est une zone « image » de la fin de contage du TIMER interne). Il
un sous-programme ou à un pro- zone précédente : les données y sont permet aussi de valider les interrup-
gramme d’interruption et, d’autre part, strictement identiques. Par exemple, tions : lors d’un événement le pro-
de recharger le PC avec cette adresse la valeur inscrite dans la case mémoire gramme en cours peut être arrêté pour
pour le retour (avec les instructions 0Ch sera toujours égale à celle de la laisser la place au programme d’in-
CALL, RETURN, RETFIE et RETLW). Les case mémoire 8Ch. terruption. Une fois ce dernier terminé,
huit niveaux de la pile autorisent donc le programme principal reprend son
huit sous-programmes imbriqués. Maintenant que nous savons accéder déroulement.
à la mémoire de données, voyons le
rôle de chacun des registres de confi-
L’organisation guration. Le registre d’état
de la Mémoire ou « STATUS »
de Données RAM - TMR0 et OPTION permettent de
contrôler le fonctionnement du TIMER Dans cet article, à plusieurs reprises
La mémoire RAM est organisée en un interne. nous avons parlé du registre d’état ou
bloc de 128 cases mémoires de 8 bits - PCL constitue, comme nous l’avons « STATUS ». Nous allons maintenant le
(8 bits étant le format d’une donnée). déjà vu, la partie basse du PC. décrire en détail. Situés à l’adresse
L’adresse de début étant 00h et - STATUS est un registre (contenant 03h, les 8 bits qui le composent por-
l’adresse de fin 7Fh. certains bits pouvant être lus et écrits tent les noms suivants : C, DC, Z, PD,
et d’autres pouvant seulement être RP0, RP1 et IRP. Analysons-les sépa-
lus) qui permet de contrôler certaines rément.
fonctions du microcontrôleur comme,
par exemple, la sélection de la Bank - Le bit CARRY (C) indique une retenue
de la mémoire RAM, l’indication sur lors d’une opération arithmétique. Il est
une opération ef fectuée par l’ALU, aussi utilisé lors d’une opération de
etc. rotation.
- FSR est le File Select Register. Il per- - Le bit DIGIT CARRY (DC) indique une
met de sélectionner et d’accéder aux retenue sur les quatre premiers bits du
données en RAM quand on utilise résultat d’une opération arithmétique.
l’adressage indirect. Ce bit est généralement utilisé pour la
- PORTA et PORTB sont deux registres conversion « binaire-BCD ».
permettant d’accéder aux deux por ts - Le bit ZERO (Z) passe à 1 si le résul-
du PIC. Lorsqu’un por t est utilisé tat d’une opération est nul.
comme sor tie, une écriture dans le - Le bit POWER DOWN (PD) est posi-
registre correspondant activera direc- tionné à 0 lorsque le microcontrôleur
tement les broches de sortie. Inverse- exécute l’instruction SLEEP qui permet
ment, si un por t est configuré en de mettre le PIC en « veille » en arrê-
entrée, la lecture du registre corres- tant l’horloge. Au reset, ce bit est posi-
pondant donnera l’image binaire des tionné à 1.
ELECTRONIQUE 77 magazine - n° 5
TECHNOLOGIE
- Le bit TIME OUT (TO) passe à 0 lorsque le Watch Dog Le Watch Dog, brièvement…
atteint la fin de son comptage. Au reset, ce bit est posi-
tionné à 1. Ce « chien de garde » est une sécurité pour votre programme.
- Les bits RP0 et RP1 sélectionnent la Bank RAM. Si RP0 En effet, il a pour fonction d’effectuer un Reset du micro-
= 0 et RP1 = 0 la Bank 0 est sélectionnée. Pour accéder à contrôleur si on ne le réarme pas à temps. Ainsi, son utili-
la Bank 1 il faudra RP0 = 1 et RP1 = 0. sation prévient la présence de boucles infinies et facilite la
- Le bit IRP doit être maintenu à zéro pour le PIC 16F84. mise au point des programmes.
Après avoir passé en revue l’essentiel des blocs internes Le Watch Dog est constitué d’un oscillateur interne auto-
et des registres, il nous reste à décrire les différents modes nome qui ne nécessite aucun composant externe. Le WDT,
d’adressages ainsi que les différentes sources de démar- nom donné au Watch Dog, peut être activé ou désactivé en
rage d’un programme. phase de programmation. Son cycle de comptage est de
18 ms, mais il peut être augmenté pour atteindre jusqu’à
2,3 secondes. En effet, la programmation du prédiviseur
Adressage Direct (Prescaler) permet de diviser la fréquence de l’oscillateur
et Adressage Indirect qui pilote le WDT. Le facteur de division est compris entre
1 et 128. Si une impulsion de fin de comptage (Overflow)
Les microcontrôleurs fonctionnent suivant deux modes est générée durant le fonctionnement normal du micro-
d’adressage. contrôleur, un processus de Reset est activé et le programme
recommence du début (vecteur de Reset). Il convient donc
Le premier (et le plus simple) est l’adressage direct : il uti- de réarmer le WDT de façon régulière par l’instruction
lise l’opérande de l’instruction pour désigner la case mémoire CLEARWDT.
voulue. Par exemple : MOVWF PORTA transfère directement
le contenu du registre W dans le registre de configuration Tout au long de cet article, nous avons étudié l’architec-
PORTA. ture interne de notre microcontrôleur ainsi que les prin-
cipes de fonctionnement et d’adressage, le mois prochain
L’adressage indirect, lui, est un peu plus compliqué. Il uti- nous expliquerons comment utiliser les ports A et B à tra-
lise le registre INDF (adresse 00h) et le registre FSR. Pour vers de petits exemples. Nous décrirons également la struc-
accéder à la case mémoire voulue, il faut tout d’abord char- ture interne du TIMER ainsi que les différentes sources
ger son adresse dans le FSR puis utiliser le registre INDF d’interruptions.
pour échanger les données. Pour y voir plus clair, prenons ◆ M.A.
un exemple :
ELECTRONIQUE 78 magazine - n° 5
TECHNOLOGIE
Microcontr
Micr ocontrô
ôleurs
PIC
5ème partie
par tie
ELECTRONIQUE 75 magazine - n° 6
TECHNOLOGIE
Data
bus
Nous vous recommandons de faire
D Q
Data
bus
attention lorsque vous utiliserez la
VDD D Q
WR
Port WR
patte RA4 car sa sor tie n’est pas du
CK Q
P Port
CK Q
RA4 pin
type push-pull (comme pour les autres
N
Data Latch
Data Latch pattes), mais du type collecteur
N I/O pin
D Q
ouvert. Ce qui veut dire que pour avoir
D Q VSS
WR
en sor tie un niveau logique compa-
WR VSS
TRIS
CK Q
TRIS
CK Q tible TTL ou CMOS, il vous faudra pré-
Schmitt
TRIS Latch Trigger voir une résistance de pull-up. Une
TRIS Latch Input
TTL
Input
buffer autre particularité de la patte RA4 est
buffer
qu’elle peut être utilisée comme
RD TRIS
RD TRIS entrée d’horloge pour “alimenter” le
D Q timer TMR0 intégré dans le PIC
Q D
CK
16F84.
RD PORT
CK
En ce qui concerne le Por t B, il est
TMR0 clock input
RD PORT constitué de huit lignes que vous pou-
vez configurer indépendamment en
entrée ou en sortie à travers l’initiali-
Figure 1 : Cette illustration représente le schéma synoptique des lignes d’entrées sation du registre TRISB. Les quatre
RA0 - RA3 (figure 1a) et RA4 (figue 1b) du port A. Les portes RA0 - RA3 sont
protégées par des diodes situées entre Vdd et Vss, tandis que RA4 est protégée bits RB4 à RB7 peuvent aussi être uti-
uniquement par une diode à Vss. Comme RA4 est utilisée pour l’entrée “clock” lisés comme sources d’interruption.
externe, elle présente un buffer interne de type “trigger”. Dans ce cas, un changement d’état
sur une de ces pattes peut interrompre
ELECTRONIQUE 76 magazine - n° 6
TECHNOLOGIE
ELECTRONIQUE 77 magazine - n° 6
TECHNOLOGIE
ELECTRONIQUE 78 magazine - n° 6
TECHNOLOGIE
l’une des pattes RB4 à RB7 est configurée en sortie plu- D7 GIE ; Autorise toutes les interruptions
tôt qu’en entrée, automatiquement, elle ne peut plus ;1 autorise les interruptions autorisées sur D3,
générer d’interruption. L’interruption des pattes RB4 à
RB7 permet également de “réveiller” le microcontrôleur D4, D5 et D6.
lorsqu’il se trouve dans le mode de fonctionnement ;0 désactive toutes les interruptions
“basse consommation”, que l’on obtient grâce à l’ins-
truction “Sleep” (sommeil). On utilise habituellement ce Nous vous conseillons la plus grande attention, lorsque
mode de fonctionnement dans des applications qui n’exi- vous travaillez avec les interruptions, afin d’éviter des com-
gent l’exécution d’opérations que lorsque se produit un portements imprévus par le programme. Par exemple, lors-
événement extérieur par ticulier, comme par exemple qu’une demande d’interruption se produit, le bit GIE, bit
lorsque l’on tape sur une touche du clavier. Dans ce cas, d’activation globale des interruptions, est tout de suite mis
il est intéressant de laisser le microcontrôleur en mode à 0 par le hardware du microcontrôleur, dans le but de désac-
Sleep de façon permanente, car cela réduit de façon tiver d’éventuelles interruptions successives et donc d’évi-
impor tante sa consommation de courant, et de lier son ter que se produisent des interruptions “à l’intérieur” d’autres
réveil à une demande d’interruption générée par les ports interruptions. N’oubliez cependant pas, au terme de la rou-
de I/O. tine qui répond à une interruption, de réactiver, via software,
les sources d’interruption qui vous intéressent.
Dans le PIC 16F84, il existe un registre qui permet de contrô-
ler la gestion des interruptions : le registre INITCON. Les Rappelez-vous également que lorsque l’une des sources
bits D0, D1 et D2 de ce registre permettent de constater possibles effectue une demande d’interruption, le bit cor-
si une des quatre sources d’interruption, dont nous avons respondant du registre INITCON est mis à 1. Il vous faut
parlé, a été activée. Les bits D3 à D6 permettent d’activer donc remettre ce bit à 0 une fois la routine de service de
ou de désactiver les différentes interruptions. Le bit D7 sert l’interruption terminée, afin d’éviter un cycle continu de
à activer ou désactiver toutes les sources d’interruption en demande d’interruption.
même temps. ◆ R. N.
ELECTRONIQUE 79 magazine - n° 6
TECHNOLOGIE
Microcontr
Micr ocontrô
ôleurs
PIC
6ème partie
par tie
Dans la précédente parution (n° 6), la lecture du texte d’introduction le modèle TARO ? Impossible de vous donnez une réponse. Le texte
de ce cours a dû vous laisser dans la plus totale perplexité ! En effet, d’origine est bien orthographié 16F84 alors qu’à l’impression nous
vous avez pu lire “Le mois dernier nous avons commencé à analyser avons obtenu TARO ! Probablement l’affaire d’un voyant. Nous n’avons
la structure interne d’un microcontrôleur de la famille PIC, et notam- aucune explication sérieuse à vous donner, nous pouvons seulement
ment du modèle TARO dont nous avons décrit certaines ressources vous présenter nos excuses. Merci aux très nombreux passionnés
disponibles comme…”. Il s’agit en fait du modèle 16F84 ! Pourquoi de ce cours qui nous ont signalé cette “coquille” !
ELECTRONIQUE 76 magazine - n° 7
TECHNOLOGIE
Figure 2 : Tableau des registres associés à la mémoire EEPROM avec leurs bits correspondants.
Légende : x = inconnu ; u = inchangé ; – = non implémenté, lu comme “0” ;
? = valeur dépendant des conditions.
ELECTRONIQUE 77 magazine - n° 7
TECHNOLOGIE
ELECTRONIQUE 78 magazine - n° 7
TECHNOLOGIE
HS (High Speed)
Il est possible d’arriver jusqu’à 10 MHz
– si vous utilisez le 16F84-10 – ou jus-
qu’à 4 MHz – si vous utilisez le PIC
16F84-04 – en employant, soit des
quar tz, soit des résonateurs céra-
miques. La consommation, à 10 MHz,
est d’environ 10 mA.
ELECTRONIQUE 79 magazine - n° 7
TECHNOLOGIE
Microcontr
Micr ocontrô
ôleurs
PIC
7ème partie
par tie (1/2)
ELECTRONIQUE 78 magazine - n° 8
TECHNOLOGIE
d’en écrire directement la valeur à l’in- les étiquettes doivent toujours être
Le programme : térieur du programme présente deux écrites en partant de la première ligne.
commentaires avantages essentiels :
instruction Les commentaires constituent une par-
par instruction - il sera beaucoup plus facile d’écrire tie impor tante du programme. Pour
un programme, dans la mesure où il ajouter des commentaires, il vous suf-
On insère généralement, au début de est plus simple d’utiliser un “label” fira de mettre un point-virgule avant le
chaque listing, une présentation des- qui rappelle la signification d’une cer- commentaire lui-même. Le compilateur
criptive contenant certaines informa- taine constante, plutôt que sa valeur ignorera alors automatiquement tout
tions telles que le nom du fichier, la numérique. ce qui est écrit après le point-virgule.
date de réalisation, une description Même s’ils ne servent pas directement
sommaire du contenu, l’auteur, etc. - il sera plus facile et plus rapide d’ef- au programme, les commentaires sont
fectuer des modifications au pro- cependant d’une extrême importance
Les “labels” sont des mots qui sont gramme. Dans notre cas, par exemple, pour la compréhension même de ce
utilisés comme des “renvois” dans le les deux “labels” COUNT_1 et dernier. Il est de règle d’insérer fré-
programme ou bien des constantes COUNT_2 déterminent par leur valeur quemment des commentaires, par
qui seront remplacées par le compi- la fréquence à laquelle s’allument et exemple pour les constantes utilisées
lateur dans la production du code s’éteignent alternativement les deux dans le programme, pour les routines,
machine. Généralement, la première LED. etc.
partie d’un programme écrit en assem-
bler contient différents “labels” qui Si vous devez modifier cette fréquence, Après la première partie concernant la
ser viront pour simplifier l’écriture du il suffit d’aller modifier leur valeur asso- déclaration des constantes, on trouve
programme même. Dans notre cas, ciée par la EQU, et toutes les valeurs le véritable programme, qui commence
les cinq premières lignes associent qui leur sont associées à l’intérieur du au label INIT. La première instruction
aux “labels” PORT_B, TMRO, programme seront automatiquement que vous rencontrez est ORG 0005h.
COUNT_1, COUNT_2 et PIC84, les changées. Si l’on n’avait pas utilisé Celle-ci, comme la EQU que nous avons
valeurs 06, 01, 0C, 0D et 0000, qui de tels “labels”, il aurait fallu changer déjà vue, n’est pas une instruction du
sont bien évidemment exprimées en différentes lignes du programme afin PIC, mais une directive de l’assem-
hexadécimal. Le mot EQU n’est pas d’obtenir le même résultat. bleur. En fait, elle “dit” à l’assembleur
une instruction du PIC mais une direc- que la par tie du programme qui suit
tive du compilateur, qui dit justement Les autres “labels” présents dans le devra être compilée en mémoire à par-
d’associer à un “label” une cer taine programme sont : INIT, MAIN et DELAY. tir de la position hexadécimale 0005h.
valeur. Pour générer le code final en Vous trouverez une autre directive ORG
langage machine, quand le programme Si vous parcourez le programme, vous au début du programme. Celle-ci fait
est rédigé en assembleur, le compi- découvrirez dif férentes instructions insérer l’instruction GOTO INIT, c’est-
lateur, à chaque fois qu’il rencontrera du type GOTO INIT, GOTO MAIN, CALL à-dire allez à l’étiquette INIT, qui repré-
par exemple le mot PORT_B, le rem- DELAY, etc. Ces instructions ser vent sente le début du programme, à
placera par sa valeur effective, c’est- à faire avancer le programme jusqu’au l’adresse 0000. En effet, lorsque le
à-dire O6. “label” associé. Ainsi, lorsque vous PIC est mis sous tension ou lorsqu’il
arriverez à GOTO MAIN, le programme sort d’une situation de reset, le “pro-
Dans la pratique, le fait de déclarer ira exécuter les instructions à par tir gram counter” part de la première posi-
des constantes de cette façon au lieu du “label” MAIN. Rappelez-vous que tion mémoire, qui, dans le 16F84, est
ELECTRONIQUE 79 magazine - n° 8
TECHNOLOGIE
ELECTRONIQUE 80 magazine - n° 8
TECHNOLOGIE
Microcontrôleurs
PIC
7ème partie (2/2)
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
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
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
TECHNOLOGIE
Microcontrôleurs
PIC
8ème partie (1/2)
Comme vous le voyez, en utilisant ce seul logiciel, le MPLAB, Pour créer un nouveau projet, il suffit d’exécuter la com-
vous pourrez développer toutes les phases qui mènent à la mande “New Project” du menu “Project”. Lorsque vous aurez
réalisation complète d’un programme. réalisé cette opération, il apparaîtra une fenêtre (figure 1)
qui permet de :
Ce logiciel est disponible gratuitement sur internet à
l’adresse http://www.microchip.com/10/Tools/PICmi- - définir le nom du projet et sa position dans le disque dur
cro/DevEnv/MPLABi/Software/V41212/index.htm. (“Project Path” and “Name”) ;
- définir la position des barres d’outils et du clavier (“Default
Voyons donc en détail comment fonctionne ce système. Toolbar” et “Default Key Mapping”) ;
Lorsqu’on lance le logiciel MPLAB par Windows, ce que - définir le mode du système, qui peut être : avec émulateur
ELECTRONIQUE 77 magazine - n° 10
TECHNOLOGIE
Figure 1 : La fenêtre “New Project”. (dans notre cas, laquelle il est possible de définir le nom
le PIC16C84 et le et la position du nouveau projet – le
format à utiliser nom proposé est toujours “NEW-
PICMASTER (dans le cas où l’on dis- pour le fichier .HEX qui sera généré par PROJ.PJT” (PJT étant l’extension qui
poserait de cet outil), avec simulateur l’assembleur). Une fois le programme est toujours donnée aux projets) – ainsi
software (appelé MPSIM) ou bien seu- écrit, vous pouvez le sauver grâce à la que le type de système, qui peut être
lement avec l’éditeur de texte. commande “Save” du menu “File”, en l’émulateur PICMASTER, l’émulateur
lui donnant, bien sûr, un nom et l’ex- software MPSIM ou encore le seul
Une fois le projet défini, vous pouvez tension .ASM. Dans le cas présent, mode d’éditeur de texte. Dans le cas
spécifier quels fichiers sont associés vous pourrez appeler ce fichier “PRO- qui nous intéresse, après avoir donné
à ce projet. En effet, en cliquant sur VALED.ASM” par exemple. un nom au projet, vous choisirez,
“OK” vous entrez dans une deuxième comme système, le simulateur soft-
fenêtre qui vous permet d’ajouter au Pour continuer, il faut maintenant créer ware.
projet des fichiers qui peuvent être un nouveau projet, grâce à l’utilisation
des fichiers avec extension .ASM de la commande “New Project” du Maintenant, en cliquant sur “OK”, vous
(fichier assembleur) ou avec exten- menu “Project”. Cette commande entrez dans une seconde fenêtre (figure
sion .C (fichiers pour compilateur C). active, comme nous l’avons vu, une 2), dénommée “Edit Project”, dans
Si vous souhaitez, par la suite, ajou- fenêtre de dialogue (figure 1) dans laquelle sont définis les dif férents
ter d’autres fichiers au projet, il vous
suffira d’utiliser la commande “Edit list p=16c84,f=inhx8m
Project” du menu “Project” pour acti-
ver cette même fenêtre de dialogue PORT_B EQU 06 ;Port B = registre 06h
TMR0 EQU 01 ;Registre du timer = 01h
(figure 2). COUNT_1 EQU 0C ;Compteur
COUNT_2 EQU 0D ;Compteur
Afin de rendre plus compréhensible et PIC84 EQU 0000 ;Vecteur de reset pour PIC 84
immédiate l’utilisation de MPLAB, nous
analyserons les trois phases indis- ;*** Initialisation ****************************************
INIT ORG PIC84
pensables à la réalisation d’un pro- MOVLW 00 ;Mets en W le nombre 0
gramme : TRIS PORT_B ;Port B configuré en sortie
MOVLW 050 ;Mets in W le nombre 50h
- écriture d’un programme, MOVWF COUNT_1 ;Mets W en COUNT_1
- assemblage, MOVLW 050
MOVWF COUNT_2
- simulation.
;*** Programme principal ********************************
Utilisons, comme programme d’essai, MAIN MOVLW B’00000001’ ;Led A allumée,
le listing en assembleur de la figure 1, ;Led B éteinte
MOVWF PORT_B
que nous avons déjà analysé lors de CALL DELAY ;Routine de retard
la précédente partie du cours. Ce pro- MOVLW B’00000010’ ;Led B allumée,
gramme simple permet d’allumer alter- ;Led A éteinte
nativement deux LED. Après avoir
chargé MPLAB, on active la commande MOVWF PORT_B
CALL DELAY
“New Source” du menu “File”. Une GOTO MAIN
fenêtre de dialogue (appelée “UNTIT-
LED”, puisque vous n’avez pas encore ;*** Routine de retard **************************************
donné de nom à ce fichier) est alors DELAY DECFSZ COUNT_1,1 ;Décrémente COUNT_1
ouverte et vous pouvez y écrire le pro- GOTO DELAY ;Si ce n’est pas 0, aller à DELAY
MOVLW 050
gramme. Vous pouvez maintenant taper MOVWF COUNT_1 ;Recharge COUNT_1
le listing dans cette fenêtre, exacte- DECFSZ COUNT_2,1 ;Décrémente
ment tel qu’il est donné sur le listing ;COUNT_2
1, sans oublier d’écrire au début du GOTO DELAY ;Si ce n’est pas 0, aller à DELAY
programme l’instruction suivante :
MOVLW 050
MOVWF COUNT_1 ;Recharge COUNT_1
MOVLW 050
list p=16c84,f=inhx8m MOVWF COUNT_2 ;Recharge COUNT_2
RETURN ;Reviens au programme principal
qui est nécessaire pour “dire” au com- END
pilateur le type de processeur utilisé Listing 1 : Ce programme simple permet d’allumer alternativement deux LED.
ELECTRONIQUE 78 magazine - n° 10
TECHNOLOGIE
ELECTRONIQUE 79 magazine - n° 10
TECHNOLOGIE
Si, par contre, vous souhaitez assem- tions. Par exemple, pour notre fichier, “MAIN” et “DELAY” correspondent res-
bler un seul fichier, il faudra utiliser que nous avons appelé “PROVA- pectivement aux adresses 0000h,
la commande “Compile Single File”, LED.ASM”, le fichier “PROVALED.LST”, 0006h et 000Dh. Le fichier .LST
puisqu’elle procède seulement à la que vous retrouverez sur le listing 2, reproduit également le “SYMBOL
compilation du fichier de la fenêtre est généré. TABLE”, c’est-à-dire le tableau dans
active. lequel sont indiqués les variables et
Ce fichier est par ticulièrement utile les labels.
Une fois la phase de compilation mise puisqu’il donne également, en plus des
en route, une barre apparaît pour vous instructions originales, beaucoup Une fois l’opération de compilation
informer sur la progression de ce pro- d’autres informations, que nous allons du fichier effectuée, vous pouvez pas-
cédé de 0 à 100 %. S’il n’y a pas d’er- détailler : ser à la phase de simulation qui
reur, le programme informe que la consiste à faire exécuter le pro-
compilation a été ef fectuée correc- La première colonne indique l’adresse gramme écrit pour le microcontrôleur
tement et que le fichier .HEX a donc de la case mémoire. En fait, notre pro- à travers le PC. La simulation est une
été créé. Dans le cas où il y aurait eu gramme n’occupe que 25 cases des opérations les plus impor tantes
des erreurs, une fenêtre qui liste mémoire, laissant donc 999 cases car elle permet de mettre au point un
toutes les erreurs rencontrées est libres (en effet, le PIC16F84 dispose programme avant de le “télécharger”
automatiquement ouver te (figure 3). d’une mémoire de programme de dans la mémoire du microcontrôleur.
Dans ce dernier cas, l’assembleur 1 024 mots). Les cases occupées Pour simuler l’exécution d’un pro-
crée lui-même un fichier caractérisé sont celles qui vont de l’adresse gramme, vous devrez utiliser princi-
par l’extension .ERR qui donnera la 0000h à 0017h. La deuxième colonne palement les commandes qui se trou-
liste et la typologie des erreurs ren- contient, quant à elle, le code hexa- vent dans les deux menus “Debug”
contrées. Vous pouvez donc consul- décimal relatif à l’instruction mémo- et “Window”.
ter et éventuellement imprimer ce risée dans la case mémoire corres-
fichier. pondante. Ainsi par exemple, nous A suivre… ◆ R. N.
découvrons que l’instruction “MOVLW
La phase de compilation du pro- 00”, qui est assemblée dans la case
gramme prévoit, outre la création du 0000h (puisqu’elle est la première ABONNEZ-VOUS A
fichier .HEX, la production d’un fichier instruction du programme), corres-
.LST qui contient le listing avec l’in- pond à l’hexadécimal 3000h. Toujours
dication de la position de mémoire grâce à ce fichier, nous découvrons
occupée par les différentes instruc- également que les labels “INIT”,
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
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 80 magazine - n° 10
TECHNOLOGIE
Microcontr
Micr ocontrô
ôleurs
PIC
8ème partie
par tie (2/2)
ELECTRONIQUE 78 magazine - n° 11
TECHNOLOGIE
ELECTRONIQUE 79 magazine - n° 11
TECHNOLOGIE
ELECTRONIQUE 80 magazine - n° 11
TECHNOLOGIE
Microcontrôleurs
PIC
9ème partie
Carte de test pour PIC
Afin de mettre en pratique les cours de programmation dispensés
dans la revue, nous avons pensé que la meilleure solution était celle
de réaliser une carte de test et d’associer à cette carte une série
de programmes didactiques, spécialement réalisés à cette intention.
De cette manière, partant d’une base “hardware” fiable et d’un
listing “software” déjà amplement mis au point, l’apprentissage
devient vraiment simple, rapide et, pourquoi pas, divertissant !
ELECTRONIQUE 72 magazine - n° 12
TECHNOLOGIE
à une carte spécifique. Pour cette rai- les microcontrôleurs et par-dessus tout meilleur auxiliaire didactique pour
son nous conseillons ce montage à à nos lecteurs qui voudront suivre mettre en pratique les notions fraî-
ceux qui habituellement travaillent avec notre cours. Cette carte deviendra le chement apprises.
ELECTRONIQUE 73 magazine - n° 12
TECHNOLOGIE
Les éléments
constituants
Voyons dans le détail cette carte de test
par l’analyse du schéma électrique.
Etant donné que le sujet traité n’est pas
d’une grande complexité, sa compré-
hension est plutôt facile. Il s’agit en fait
d’un microcontrôleur (U8) entouré d’une
série d’amplificateurs de lignes à trois
états (74LS244). En fonction de la
sélection (faite manuellement) de ces
amplificateurs nous pouvons appliquer
les I/O du microcontrôleur une fois à
un sous-ensemble, une fois à un autre,
etc. Ces sous-ensembles ne sont autres
que des circuits pouvant être pilotés
par l’intermédiaire du PIC16C84.
Figure 2 : Le prototype de la carte test, montage terminé.
- Un afficheur à cristaux liquides 1 ligne
16 caractères (ou 2 lignes, 16 carac- Cette carte de test a été spécialement réalisée pour apprendre, de façon simple
tères) et rapide, les techniques de programmation des microcontrôleurs PIC. La carte
dispose des ressources suivantes : 8 LED, 1 afficheur LCD alphanumérique, 1
- Deux relais RL1 et RL2 clavier matricé, 1 afficheur 7 segments, 2 boutons poussoirs, 2 relais, 1 buzzer
- Un buzzer piézo BZ piézo.
- Un afficheur 7 segments à led
- Un clavier matricé sur 4 lignes, 4
colonnes alimentées par les résis- directement les bobines des relais, le tionnés et de se placer en état “haute
tances R14, R15, R16, R17, R18, buzzer DZ ainsi que l’éclairage de l’af- impédance” (ils ne transmettent plus
R19, R20, R21 ficheur LCD. Le régulateur U6 abaisse rien) lorsqu’ils ne sont pas sélection-
- Une ligne de 8 leds LD1 à LD8 la tension à 5 volts bien stabilisés pour nés. Les sorties ne passent pas au ”0”
- Deux boutons poussoirs pour simu- alimenter toute la logique, le micro- logique ni au “1” logique, mais elles
ler des entrées et pour vérifier les contrôleur U8, l’afficheur LCD et celui sont laissées fluctuantes comme des
routines anti-rebond, de lecture des à LED, les résistances de tirage des transistors à collecteur ouvert.
fronts montants ou descendants et poussoirs P1/P2, celles des poussoirs
des niveaux logiques TTL. du clavier ainsi que les dip-switchs. Un exemple : En conditions normales
de fonctionnement le signal qui entre
Afin de permettre le fonctionnement du sur la broche 2 est transmis à la broche
Le schéma PIC16C84 tantôt avec une par tie du 18, celui de la 4 à la 16, etc. Ceci
programme, tantôt avec une autre, les lorsque la broche 1 est reliée à la
Nous pouvons dire que notre carte test divers circuits sont séparés des masse (niveau logique 0). Par contre,
est vraiment très complète. Le tout broches I/O (entrées - sorties) par des si la broche 1 est reliée au niveau 1
fonctionne avec une alimentation 12 amplificateurs de ligne trois états, des logique (+5 volts), les buffers 18, 16,
volts reliée entre +V et la masse. La 74LS244. Ces derniers ont la particu- 14, 12, etc. sont mis en état “haute
diode D1 protège le circuit des inver- larité de se compor ter comme de impédance” et se comportent comme
sions de polarité. Le +12 volts alimente simples buffers lorsqu’ils sont sélec- des transistors à collecteurs ouverts.
ELECTRONIQUE 74 magazine - n° 12
TECHNOLOGIE
Dans notre carte test, nous avons uti- des buffers 3 états par l’intermédiaire deux relais RL1 et RL2 activés par les
lisé 5 de ces drivers, parmi lesquels un des cavaliers JP1, JP2, JP3. transistors T1 et T2 avec les lignes RA1
seul (U1) est utilisé entièrement par la et RA2, le buzzer piézo BZ commandé
ligne de LED (LD1 à LD8). Un autre (U2) La fermeture de JP1 active les drivers par le transistor T3 piloté à son tour
et une partie de U4 (U4b) sont desti- de lignes U3a, U3b, U4a, ce qui, en pra- par la ligne RA0 du port A.
nés à l’interconnexion en parallèle de tique, se traduit par la possibilité d’uti-
l’afficheur 1 ligne 16 caractères. Un liser le clavier matricé dont les lignes et Il est à noter que la car te test est
autre encore (U3) est utilisé pour la ges- les colonnes sont à relier aux pastilles conçue de telle façon qu’un seul cava-
tion des lignes et des colonnes du cla- prévues sur le circuit imprimé reliées au lier peut être utilisé à la fois. Notez éga-
vier matricé. Le dernier, (U5) est utilisé por t B du microcontrôleur sur les lement que chaque cavalier est équipé
en partie (U5a) pour les boutons pous- broches RB0 à RB7. Le chiffre décimal d’une résistance (R11, R12, R13) de
soirs indépendants P1 et P2 et l’autre de l’afficheur à LED est géré par les 4 tirage afin de fixer un niveau haut et
partie (U5b) pour le contrôle des tran- bits du port A, RA0 à RA3 qui pilotent commandent directement, ou par une
sistors qui pilotent les deux relais et le le décodeur 7 segments U7 (CD4511). simple logique à diode, les broches de
buzzer piézo. validation des buffers 3 états.
L’autre moitié de U4 (U4a) est employée La fermeture de JP2 permet l’utilisation
comme buffer entre le microcontrôleur de l’afficheur LCD 1 ligne 16 caractères En fermant JP1, on sélectionne entiè-
et le décodeur BCD/7 segments relié au port B (RB0 à RB7) par le bus rement U3 et la première partie de U4
(CD4511), utilisé quant à lui, pour com- de données et la gestion des lignes de (U4a) ; à ce moment U2, U4b, U1 et
mander l’afficheur 7 segments à LED contrôle RS, RW, E est confiée au port U5 sont en sortie haute impédance car
à cathode commune. A (RA0 à RA2). Les boutons poussoir JP2 et JP3 sont ouver ts et donc les
P1 et P2 sont commandés par RA3 et résistances de tirage fixent au niveau
A ce point, nous pouvons immédiate- RA4 configurés en entrée. haut les broches de contrôle. En effet
ment voir comment sont sélectionnées R11 met au niveau “1” la broche 1 de
les différentes I/O du microcontrôleur La fermeture de JP3 permet l’utilisa- U5b et les broches 1 et 19 de U1 et
U8. Il y a trois combinaisons possibles tion de la ligne de 8 LED reliées au port bloquent aussi la diode D4. R12 agit
choisies sur la base des applications B (RB0 à RB7) par l’intermédiaire du de la même façon sur la diode D5 et
les plus courantes du PIC16C84. Elles buffer U1, les deux poussoirs P1 et P2 commande la broche 19 de U4b et les
sont toutes sélectionnées avec l’aide gérés par le por t A RA3 et RA4, les broches 1 et 19 de U5a.
ELECTRONIQUE 75 magazine - n° 12
TECHNOLOGIE
ELECTRONIQUE 76 magazine - n° 12
TECHNOLOGIE
RA1
RA2
RA3
La réalisation 8 2 4 6 F B
G
Pour ce qui concerne la partie pratique, U4A
il faut réaliser le circuit imprimé suivant E C
le dessin du cuivre proposé à l’échelle
1/1. La complexité du circuit impose 12 18 16 14
l’utilisation de la méthode photogra- D DP
phique par les moyens habituels. Après
7 1 2 6 Figure 8b : Les segments
gravure et perçage, il est prêt pour le
A B C D de l’afficheur.
câblage.
U7
Commencer comme à l’accoutumé par a b c d e f g 3, 8
insérer et souder les résistances et les 13 12 11 10 9 15 14
diodes (attention au sens, la bague
indique la cathode). Réalisez les straps R R R R R R R A B C D E F G DP
(ponts) pour les interconnexions avec 31 32 33 34 35 36 37
des fils rigides. Montez et soudez le 7 6 4 2 1 9 10 5
potentiomètre ajustable, les supports
de circuits intégrés en les positionnant Figure 8c : Correspondance des
segments et des sorties.
DISPLAY
10 9 8 7 6
1 2 3 4 5
Figure 8a : Notre carte de test
utilise également un afficheur 7
segments à cathode commune géré
par les lignes du port A (RA0, RA1, Figure 8d : Brochage de
RA2 et RA3) du PIC. l’afficheur vu de dessus.
ELECTRONIQUE 77 magazine - n° 12
TECHNOLOGIE
Abstraction faite de l’apparente complexité du circuit imprimé, la réalisation de la carte test ne présente pas de difficultés
particulières. Nous vous conseillons toutefois de réaliser le circuit imprimé en suivant uniquement la méthode photographique,
la seule permettant d’éviter les erreurs dues à la réalisation d’un nouveau typon à la main. Il suffit, pour cela, de réaliser
une photocopie sur du calque ou sur une feuille d’acétate translucide et d’insoler la plaque présensibilisée avec ce film. Le
dessin étant à l’échelle 1 cela ne présente aucune difficulté. Graver ensuite la plaque révélée dans un bain de perchlorure
de fer. Nettoyez-la et étamez-la avec de l’étain liquide à froid.
avec un couple de picots au pas de 2,54 mm, qui seront, pant le bloc secteur qui sera utilisé pour alimenter le mon-
par la suite, coiffés ou non par un petit cavalier suivant la tage. Le pôle positif est au centre. L’alimentation devra pou-
sélection souhaitée. Pour les sorties relatives aux contacts voir fournir 12 volts sous 800 mA. Un modèle genre bloc
des relais, il faut utiliser des borniers au pas de 5 mm à secteur pourra être utilisé sans problème.
vis à deux pôles pour circuit imprimé.
Si vous utilisez un autre système d’alimentation dépourvu
Pour ce qui concerne l’alimentation, nous avons monté une de prise de sortie, il vous faudra tout simplement souder
prise pour circuit imprimé du même modèle que celui équi- les fils plus et moins aux endroits indiqués sur le circuit
imprimé.
Coût de la réalisation
Tous les composants visibles sur le schéma d’implantation
de la figure 5 pour réaliser la carte de test pour PIC, avec
l’afficheur LCD, le clavier et le programme sur disquette
3,5’’ : env. 468 F.
◆ R. N.
ABONNEZ-VOUS A
ELECTRONIQUE 78 magazine - n° 12
TECHNOLOGIE
Microcontrôleurs
PIC
10ème partie
La pratique :
l'écriture de programmes
Après la théorie, indispensable mais comme toute théorie barbante,
nous allons, à partir de maintenant, commencer à voir comment
s’écrivent des programmes pour les microcontrôleurs PIC. Pour ce
faire, nous utiliserons comme support hardware, pour en vérifier le
caractère fonctionnel, la carte de test spécifique réalisée dans ce
but et qui a été largement décrite dans le précédent numéro.
Une fois mis en route, l’assembleur génère toute une série Les programmes didactiques
de fichiers, por tant tous le même nom, mais avec des
extensions différentes. Si des erreurs se produisent lors Passons maintenant à l’analyse des premiers programmes
de la phase de compilation, un fichier avec l’extension didactiques écrits pour la carte de test.
ELECTRONIQUE 70 magazine - n° 13
TECHNOLOGIE
Cette fois-ci, nous étudierons plus par- gramme pour le PIC 16F84 et nous l’in- justement le port B du PIC. Dans le pro-
ticulièrement les programmes qui formons que le format de sor tie du gramme nous définissons ensuite le
exploitent comme ressources de la fichier doit être à 8 bits. registre “STATUS”, dont l’adresse est
carte de test les huit LED connectées “03h”, et le “CARRY” qui représente
au port B, les deux boutons connectés Puis vient une partie d’initialisation, le bit de CARRY de ce registre (en effet,
au port A et les deux relais et le buz- dans laquelle sont donnés les labels le bit de carr y occupe le bit “D0” du
zer, eux aussi reliés au port A. (étiquettes) qui permettent d’associer registre STATUS).
un mot à une valeur de sor te qu’ils
La première opération à effectuer sera soient plus facilement mémorisables Il y a également “COUNT_1” et
donc de fermer avec un cavalier le pour le programmateur. “COUNT_2” que nous utiliserons dans
connecteur “JP3”, de façon à préparer la routine de retard, et “OUTPUT” (sor-
la carte de test pour travailler avec ces Ainsi, par exemple, nous avons utilisé tie) qui servira pour contrôler l’allumage
périphériques, c’est-à-dire avec les LED le label “PORT_B” pour identifier le des différentes LED.
LD1 à LD8, le buzzer BZ et les deux registre d’adresse “06h” qui représente
boutons P1 et P2. L’étiquette “PIC84” ser t,
quant à elle, à donner
Programme l’adresse de dépar t du
PIC16F84. En ef fet, lors-
pour allumer Delay
qu’on alimente le micro-
les LED PRG contrôleur, celui-ci par t de
séquentiellement Décrémente
la première position de
Initialise Count_1 mémoire.
Avec ce simple programme, Port_A et Port_B
on provoque l’allumage d’une NON Le programme véritable
Count_1 = 0 ?
seule LED à la fois, en créant Allume 1ère LED OUI commence donc au label
un ef fet de glissement de Recharge Count_1
“INIT”. Il est constitué, dans
droite à gauche. Voyons tout sa première par tie, d’une
de suite comment le pro- Appelle la routine DELAY Décrémente
série d’initialisations : on
gramme est structuré en étu- Count_2 configure le PORT_ B en sor-
diant le listing correspondant Tourne à gauche tie, en mettant dans le
NON
reproduit sur la figure 1. L’or- Count_2 = 0 ? registre “TRIS B” la valeur
ganigramme de la figure 2 NON “00”. Puis les deux
Dernière LED ? OUI
aidera également à la com- OUI Recharge registres “COUNT_1” et
préhension. Allume 1ère LED Count_1 et Count_2 “COUNT_2” sont initialisés
avec la valeur hexadécimale
La première ligne donne la “FFh” et le registre “OUT-
RET
directive “list” grâce à PUT” est initialisé à “1”.
laquelle nous communiquons
à l’assembleur notre inten- Figure 2 : Organigramme du programme DEMO1. Il convient de noter que
tion de compiler un pro- comme il est impossible
ELECTRONIQUE 71 magazine - n° 13
TECHNOLOGIE
Figure 4 : Programme DEMO2 pour allumer les LED à l’aide des boutons.
ELECTRONIQUE 72 magazine - n° 13
TECHNOLOGIE
ELECTRONIQUE 73 magazine - n° 13
TECHNOLOGIE
suivante. Par conséquent, si l’instruc- Les deux instructions “BCF Après ces deux instructions, on teste
tion “BTFSS PORT_A,3” trouve “RA3” STATUS,CARRY” et “RLF PORT_B” ser- si, par hasard, le “1” qui allume la LED
haut, c’est-à-dire que le bouton n’est vent, comme nous l’avons déjà vu dans est “sorti” du registre pour être entré
pas poussé, elle saute l’instruction le programme précédent, à faire dépla- dans la CARRY, ce qui voudrait dire que
“CALL UP” et exécute l’instruction sui- cer la LED. l’on serait déjà dans la dernière posi-
vante, “BTFSS PORT_A,4” tion. Si ce n’est pas le cas, l’instruc-
qui va tester l’état du bou- tion “RETURN” est exécutée et permet
ton P1. Si celui-ci non plus de reprendre le programme principal
n’est pas poussé, elle au point où on l’avait interrompu. Si,
RL1
saute l’instruction “CALL au contraire, on était déjà dans la situa-
DOWN” et va donc à la tion de la dernière LED allumée, on
“GOTO MAIN”. Complémente le bit rétablit la situation précédente en fai-
de RLSTATUS sant tourner à droite d’une position.
Si, au contraire, l’un des correspondant
PRG au premier relais
deux boutons a été poussé, Routine pour allumer
une des deux sous-routine
“UP” ou “DOWN” sera Initialise les ports
RET
et éteindre deux relais
effectuée et, comme nous en appuyant sur deux
le verrons, elle s’occupera OUI boutons
de faire tourner les LED Bouton P1 enclenché ? Routine RL1
NON
d’une position. Deux relais ont été prévus sur la carte
OUI de test. Ceux-ci ne sont évidemment
Obser vons, par exemple, Bouton P2 enclenché ? Routine RL2 pas reliés directement aux sorties du
le fonctionnement de la NON PIC, qui ne pourraient pas fournir suf-
routine “UP”, en tenant fisamment de courant pour les déclen-
compte du fait que la rou- Mets RLSTATUS en sortie cher, mais par l’intermédiaire de tran-
tine “DOWN” est plus ou sistors utilisés comme interrupteurs.
moins similaire, si ce n’est
qu’elle fait tourner les LED Figure 7 : Organigramme du programme DEMO3. Un premier programme pour apprendre
dans un sens opposé. à gérer ces deux relais consiste en
ELECTRONIQUE 74 magazine - n° 13
TECHNOLOGIE
ELECTRONIQUE 75 magazine - n° 13
TECHNOLOGIE
ELECTRONIQUE 76 magazine - n° 13
TECHNOLOGIE
du son, c’est-à-dire “0B9h” en “W”, ruptions en mettant à “0” le bit “2” 62 500 Hz, une interruption est géné-
puis “MOVWF” qui transfère le contenu de “INTCON” (celui qui identifie l’in- rée à la fréquence de :
de “W” en “TMRO”). terruption du Timer, qui est mis à “1”
quand l’interruption est demandée) 62 500 : 71 = 880 Hz
Il ne reste plus qu’à configurer les et en réhabilitant les interruptions en
“PORT_A” et “PORT_B” du PIC et à mettant à “1” le bit “7” de ce même Mais il ne s’agit pas encore de la fré-
habiliter les interruptions en mettant registre. quence du signal généré car, à chaque
le bit “7” du registre “INTCON” à “1” interruption, le niveau logique en sor-
(instruction “BSF INTCON,7”). Vous vous demandez maintenant tie change, ce qui signifie que la fré-
quelle sera la fréquence du son généré quence du signal généré sera effecti-
Le microcontrôleur est désormais prêt par le buzzer. Pour la connaître, il suf- vement de :
à travailler. Il entre, en effet, dans le fit de faire une simple opération
cycle compris entre l’étiquette “MAIN” mathématique en par tant de la fré- 880 : 2 = 440 Hz
et l’instruction “GOTO MAIN”. En réa- quence qui alimente le Timer et qui
lité, dans ce cycle le microcontrôleur coïncide avec celle du quar tz divisée Les amateurs de musique auront pro-
n’ef fectue aucune opération (ins- par 4. Par conséquent, si le quartz est bablement associé tout de suite cette
tructions “NOP”) si ce n’est celle d’at- de 4 MHz, la fréquence interne sera fréquence à la note “LA”. En effet, nous
tendre l’arrivée de l’interruption, de 1 MHz. avons tout simplement réalisé un dia-
quand le Timer a terminé le comp- pason électronique !
tage. Cette fréquence est ensuite divisée
par 16 par le Prescaler, descendant Rendez-vous le mois prochain. Nous
Lorsque l’interruption arrive, le pro- ainsi à : vous proposerons les listings software
gramme saute à la position “04”, où relatifs aux différentes ressources dis-
se trouve le programme qui par t de 1 000 000 : 16 = 62 500 Hz ponibles sur la carte de test.
l’étiquette “INT”. Cette routine s’oc-
cupe d’inverser le bit “0” du Le compteur est chargé avec “0B9h” ◆ R. N.
“PORT_A” grâce à l’instruction “MOVF (qui correspond à 185 en décimal) et
PORT_A”, de recharger le Timer à tra- compte à partir de ce nombre jusqu’à ABONNEZ-VOUS A
vers les deux instructions “MOVLW 255 (“FFh”) avant de générer l’inter-
SOUND” et “MOVWF TMRO”, et de ruption. L’interruption est donc géné-
préparer à nouveau le microcontrô- rée chaque 256 – 185 = 71 cycles. Si
leur à accepter les prochaines inter- la fréquence en entrée est de
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
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 06/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
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 77 magazine - n° 13
TECHNOLOGIE
Microcontrôleurs
PIC
10ème partie - Chapitre 2
La pratique :
l'écriture de programmes
ELECTRONIQUE 60 magazine - n° 14
TECHNOLOGIE
ELECTRONIQUE 61 magazine - n° 14
TECHNOLOGIE
matrice et l’afficheur sept seg- Notez bien que ces lignes d’en-
ments opérationnels. Le pro- trées sont tenues normalement
gramme est donné en figure 3 DEMO5 à un niveau logique haut par 4
et l’organigramme en figure 4. résistances (R18/R21).
Un extrait du schéma général de Interruption
la car te de test (figure 1, ELM Initialise ports timer La lecture du clavier s’effectue
numéro 12, page 73), corres- et interruptions de la façon suivante: on impose
pondant à la connexion du cla- un “0” sur une colonne, en par-
Complémente
vier au microcontrôleur est donné tant, par exemple, de la pre-
en figure 5. RA0 mière colonne, alors qu’on
SON = SON1 laisse les autres lignes à un
Charge le timer niveau haut, puis on va lire les
Le clavier matriciel Appelle DELAY avec SON 4 lignes d’entrées. Si aucune
2 fois touche n’est pressée, on lira
Le clavier matriciel est réalisé simplement 4 niveaux logiques
Rétablit
avec des boutons poussoirs hauts. S’il se trouve, cepen-
reliés au croisement d’une série SON = SON2 les interruptions dant, qu’un des boutons qui
de conducteurs disposés en croisent la première colonne
lignes et en colonnes. Par Appelle DELAY avec les 4 lignes est appuyé,
exemple, si vous voulez utiliser RET cela court-circuitera la ligne cor-
2 fois
un clavier à 16 touches, ces der- respondante avec la colonne.
nières sont disposées de façon Etant donné que la colonne se
à relier, lorsque l’on tape des- trouve à niveau logique “0”, la
sus, les croisements d’une Figure 2 : Organigramme du programme DEMO5. ligne où est positionné le bou-
matrice conductrice constituée ton sur lequel nous avons
de 4 lignes et de 4 colonnes. Ce appuyé se por tera aussi à
système se révèle être très pratique microcontrôleur sont reliées aux 4 niveau logique “0”. Nous ne lirons donc
puisqu’il limite le nombre de connexions lignes du clavier (en vert). plus sur les entrées 4 niveaux hauts
vers le microcontrôleur. mais 3 niveaux hauts et
Par exemple, si 16 1 bas. En identifiant la
touches séparées s’in- colonne que nous avons
ter facent, il faudra 32 “activée “et la ligne que
lignes d’entrées/sorties nous avons trouvée
(2 pour chaque touche). basse, nous pouvons
Le clavier matriciel n’a identifier de façon cer-
besoin, lui, que de 8 taine la touche pressée.
lignes d’entrées/sorties, Bien sûr, il faudra effec-
qui correspondent aux 4 tuer cette opération
lignes et aux 4 colonnes. pour les 4 colonnes.
En électronique, la
grande majorité des cla- Observons maintenant
viers, y compris ceux des le programme qui effec-
PC, sont réalisés de tue cette opération
cette façon. Le clavier (DEMO6). Le listing
matriciel est géré à tra- semble un peu long,
vers un procédé de scru- mais il est très facile à
tation des lignes et des comprendre. Comme
colonnes. d’habitude, la première
par tie comprend l’ini-
Pour comprendre ce qui tialisation des ports : le
se passe, analysons le port B est configuré moi-
schéma de branchement tié en entrées, moitié en
du clavier connecté à la sorties, pour réaliser la
carte test (figure 5). On lecture du clavier. Le
utilise, en pratique, tout port A est configuré en
le por t B du microcon- sortie, puisque c’est à
trôleur (8 lignes d’en- lui qu’est relié le déco-
trée/sor tie) et on va deur BCD - 7 segments
faire fonctionner 4 lignes qui nous permettra de
en sor ties (de RB0 à visualiser la touche qui
RB3) et 4 en entrées (de est pressée.
RB4 à RB7) donc :
Après cette opération,
- les 4 lignes de sor tie les 4 lignes de sortie du
du microcontrôleur sont port B sont mises à “1”
reliées aux 4 colonnes Figure 5 : Extrait du schéma général de la carte de test à travers 4 instructions
du clavier (en rouge), concernant le clavier matriciel. “BSF”. Le véritable pro-
- les 4 lignes d’entrée du gramme de lecture com-
ELECTRONIQUE 62 magazine - n° 14
TECHNOLOGIE
pour 4 colonnes
Lis la première ligne
MOVLW b’00000000’
TRIS PORT_A ;Configure le port A
BSF PORT_B,0 OUI
pour 4 lignes
BSF PORT_B,1 Touche appuyée ? W=7
BSF PORT_B,2 NON
BSF PORT_B,3 ;Met les sorties
;à l’état haut Lis la deuxième ligne
;Programma principale ***************************************
OUI
Touche appuyée ? W=4
MAIN ;——————————————————-
BCF PORT_B,0 ;RB0=0, c’est-à-dire NON
;la première colonne
ELECTRONIQUE 63 magazine - n° 14
TECHNOLOGIE
Vous noterez que même si la routine Programme vier matriciel (les nombres 0 à 9) et de
prévoit la lecture des touches [ A ], [ B ], mémoriser les touches pressées. Lors-
[ C ], [ # ] et [ * ], celles-ci ne peuvent
de mémorisation qu’on appuie sur la touche [ * ], l’affi-
être visualisées dans la mesure où le et d’affichage des cheur doit visualiser séquentiellement
décodeur utilisé (l’intégré 4511) n’ac- touches clavier les touches acquises précédemment.
cepte en entrée que des nombres BCD
de 0 à 9. Les autres caractères non Nous voulons maintenant vous propo- En observant le listing de la figure 6,
visualisables ont pour résultat ser un programme plus complet qui vous pourrez noter que ce programme
d’éteindre l’afficheur. vous permettra d’apprendre quelques est réellement plus complexe que le
fonctions impor tantes dans la pro- précédent : dans les initialisations,
Le programme que nous venons d’ex- grammation des PIC. Son listing est vous trouverez le registre “CPT-
poser est très utile pour la lecture et donné en figure 6 et l’organigramme en TOUCHE” qui vous permettra de mémo-
la visualisation immédiate de la touche figure 7. Ce nouveau programme, riser le nombre de touches qui aura
appuyée. appelé DEMO7, est chargé de lire le cla- été pressé ainsi que deux autres
ELECTRONIQUE 64 magazine - n° 14
TECHNOLOGIE
registres, “FSR” et “INDF”, utilisés Cette fois, cependant, si une touche est appelée, elle permet de visualiser
dans les microprocesseurs PIC pour est pressée, l’instruction “CALL” le chiffre 1 sur l’afficheur relié au port
mémoriser une donnée dans une case appelle une sous-routine spécifique, A et d’exécuter ces trois instructions :
de mémoire RAM. une pour chaque touche appuyée (cette MOVWF INDF
solution n’est cer tainement pas la INCF FSR
Les registres “COUNT_1” et meilleure pour réaliser la mémorisation INCF CPTTOUCHE
“COUNT_2” sont utilisés comme à l’ha- des touches mais elle se prête bien à
bitude dans la routine “DELAY”. Tou- une explication didactique). La première instruction déplace le
tefois, le “corps” du programme prin- contenu de “W”, qui est la valeur cor-
cipal est semblable au précédent, dans Analysons donc une de ces routines, respondant à la touche pressée (la
la mesure où il effectue la scrutation puisque les autres sont toutes simi- touche [ 1 ]), dans le registre “INDF” uti-
des lignes et des colonnes (notez que laires, excepté pour les valeurs mémo- lisé dans les PIC pour adresser le registre
seule la lecture des touches 0 à 9 et risées. Si l’on appuie, par exemple, sur spécifié par “FSR” qui, dans notre cas,
de la touche [ * ] est effectuée). la touche [ 1 ], la routine “TOUCHE_1” contient le nombre 10 hexadécimal.
ELECTRONIQUE 65 magazine - n° 14
TECHNOLOGIE
ELECTRONIQUE 66 magazine - n° 14
TECHNOLOGIE
Microcontrôleurs
PIC
10ème partie - Chapitre 3
La pratique :
l'écriture de programmes
Les afficheurs à cristaux liquides (LCD) de type alphanumérique,
capables de visualiser soit des chiffres, soit des nombres, sont,
aujourd’hui, utilisés dans de nombreuses applications. Cela est dû
à la disponibilité sur le marché de nouveaux modèles à des prix à la
portée de tous mais aussi parce que les afficheurs de nouvelle
conception sont fournis équipés de drivers d’interface en mesure de
piloter de façon autonome le LCD à partir de simples commandes
reçues en format digital. Quand un afficheur alphanumérique dispose
des drivers d’interface, il est dit “intelligent”. Malgré cet adjectif
qui les qualifie, les afficheurs intelligents demandent presque toujours
l’interconnexion avec un dispositif à microcontrôleur en mesure de
gérer les différents signaux qu’ils exigent.
ELECTRONIQUE 62 magazine - n° 15
TECHNOLOGIE
ELECTRONIQUE 63 magazine - n° 15
TECHNOLOGIE
avons appelées “LIGNE_1”, “LIGNE_2” facilement le deviner à la lecture du ment identique : elles positionnent la
et “CARACT”. Les deux premières rou- programme, il s’agit du tableau dans ligne “RS” à “0” pour dire à l’afficheur
tines servent à positionner le curseur lequel on place l’inscription que l’on que l’on est en train d’envoyer une com-
au début de la première ligne et au veut visualiser. mande, et transmettent ensuite la com-
début de la seconde, alors que la rou- mande qui permet de positionner le
tine “CARACT” permet d’écrire un carac- Voyons maintenant le fonctionnement curseur au début de la première ou de
tère prélevé d’un tableau qui se trouve des deux routines “LIGNE_1” et la deuxième ligne. La routine “CARACT”
au point du programme distingué par “LIGNE_2”, tout en tenant compte rappelle la routine “TABLE” à travers
l’étiquette “TABLE” et, comme on peut qu’elles sont conçues de façon totale- l’instruction “CALL” et met le contenu
Tableau 1 : Avant de pouvoir utiliser l’afficheur pour la visualisation de données, il faut lui envoyer une série de commandes
d’initialisation qui permettent de préparer l’afficheur au mode de fonctionnement désiré. C’est la raison pour laquelle il faut
se référer à ce tableau qui indique, pour chaque commande possible, la valeur logique du bus de données et des lignes de
contrôle RS et R/W.
ELECTRONIQUE 64 magazine - n° 15
TECHNOLOGIE
Appelle LIGNE_1
W=0
W = COUNT_4
PC = TABLE
W = COUNT_4 call TABLE TABLE
Appelle CARACT add WF PC ;PC TABLE + 1
RETLW “E”
Appelle CARACT W = “E”
Incrém. CONT_4
Incrém. CONT_4
Décrém. COUNT_3 W=1
PC = TABLE
Décrém. COUNT_3 NON call TABLE TABLE
COUNT_3 = 0 ?
add WF PC ;PC = TABLE + 2
NON OUI
COUNT_3 = 0 ? RETLW “E”
OUI RETLW “L”
FIN W + “L”
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
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 08/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 PRO ............................................ 2 070,00 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 65 magazine - n° 15
TECHNOLOGIE
du registre “W” sur le port B, en l’en- tir de cette position. A l’étiquette fois que la routine “TABLE” est appe-
voyant ensuite à l’af ficheur pour la “TABLE”, le contenu du “Program Coun- lée, après l’instruction “ADDWF PCL”,
visualisation. ter” est additionné à celui du registre le “Program Counter” pointera ensuite
“W” et le résultat est ensuite remis aux dif férentes instructions rencon-
L’instruction CALL qui, comme vous le dans le “Program Counter”. trées. Celles-ci sont toutes du type
savez, ser t à exécuter une sous-rou- “RETLW”, c’est-à-dire de retour à la rou-
tine, charge dans le “Program Coun- Comme nous le verrons bientôt, Le tine, chargeant dans le registre “W” à
ter” l’adresse de l’étiquette “TABLE”. registre “W” est chargé avec un nombre chaque fois une lettre différente. Ce
Le programme continue ensuite à par- de 0 à 31. Ce qui veut dire qu’à chaque sera justement le contenu du registre
ELECTRONIQUE 66 magazine - n° 15
TECHNOLOGIE
RETLW ‘ ‘
RETLW ‘ ‘
RETLW ‘ ‘
RETLW ‘C’
RETLW ‘O’
RETLW ‘U’
RETLW ‘R’
RETLW ‘S’
RETLW ‘ ‘
RETLW ‘ ‘
RETLW ‘ ‘
RETLW ‘P’
RETLW ‘I’
RETLW ‘C’
RETLW ‘ ‘
RETLW ‘ ‘
END
ELECTRONIQUE 67 magazine - n° 15
TECHNOLOGIE
Microcontrôleurs
PIC
11ème partie
Les autres PIC
et leurs ressources
Jusqu’à maintenant, nous avons toujours pris comme référence un seul circuit de
la famille des PIC de Microchip, le 16C84 (16F84). Ce microcontrôleur dispose
d’une mémoire programme du type EEPROM (programmable électriquement), il
est donc particulièrement intéressant lorsqu’il s’agit de développer et de mettre
au point rapidement des petits programmes ou des routines spéciales. Ce choix
a également été celui de Microchip dans son kit de programmation. La carte de
test que nous vous avons présentée dans ELM 12 fait également référence au
16C84. Pour des questions pratiques évidentes, nous nous sommes cantonnés à
ce seul modèle mais, en réalité, les microcontrôleurs PIC sont caractérisés par la
grande variété de périphériques que les différentes familles intègrent. Cette
remarquable disponibilité permet au concepteur de réaliser des systèmes à
microcontrôleurs qui réduisent au minimum le nombre de circuits intégrés externes.
Dans cette partie du cours, nous allons étudier rapidement les ressources offertes
par les autres modèles de PIC.
ELECTRONIQUE 76 magazine - n° 16
TECHNOLOGIE
entre différents microcontrô- Famille Timers CCP Sériel A/D Comparateurs - D6 : Non utilisé.
leurs et entre des microcon- - D7 : Non utilisé.
trôleurs et des ordinateurs. 16C54 1 - - - -
16C55 1 - - - - TMR2
- CONVERTISSEURS A/D : 16C56 1 - - - - Ce timer est alimenté par
Partout où il est nécessaire 16C57 1 - - - - l’horloge du microcontrôleur
d’acquérir des grandeurs 16C58 1 - - - - divisée par 4. Il fonctionne
analogiques pour les traiter, 16C620 1 - - - 2 comme un compteur 8 bits
un conver tisseur analo- 16C621 1 - - - 2 qui dispose cependant d’un
gique/digital (A/D) est indis- 16C622 1 - - - 2 prédiviseur (prescaler) en
pensable. La présence sur 16C61 1 - - - - mesure de diviser ultérieu-
le chip de ce périphérique 16C62 3 2 OUI - - rement une fréquence par
simplifie considérablement 16C63 3 2 OUI - - 1, par 4 ou par 16, et d’un
la réalisation des systèmes 16C64 3 1 OUI - - postscaler, qui divise la fré-
de contrôle analogiques, en 16C65 3 2 OUI - - quence en sor tie du timer
réduisant le nombre des 16C71 1 - - OUI - d’un facteur de 1 à 16. Le
composants externes à uti- 16C73 3 2 OUI OUI - mode de fonctionnement du
liser et en optimisant la fonc- 16C74 3 2 OUI OUI - timer, et les facteurs de divi-
tionnalité du système. 16C84 1 - - - - sion du prescaler et du post-
17C42 4 2 OUI - - scaler, sont définis à travers
La présence de ces péri- 17C43 4 2 OUI - - le registre T2CON. La valeur
phériques intégrés et l’ample 17C44 4 2 OUI - - du timer TMR2 est compa-
possibilité de choix parmi les rée à un registre, dénommé
microcontrôleurs qui intè- Figure 1 : Tableau des périphériques intégrés dans les PIC. PR2, et quand les deux
grent cer tains de ces péri- valeurs sont égales, une
phériques ont permis à la famille PIC pilotée par quartz (avec une fréquence impulsion est générée pour le post-
de conquérir une place de premier plan divisée par 4) ou externe. Il est inté- scaler. La sortie de celui-ci, si elle est
sur le marché, pour tant varié, des ressant de noter une caractéristique activée, génère la condition d’inter-
microcontrôleurs 8 bits. Ainsi, le particulière de TMR1 : il offre la possi- ruption du timer TMR2.
concepteur peut choisir le dispositif le bilité de réaliser un oscillateur à quartz
plus adapté à chaque application sans autour d’une porte inverseuse et d’une
devoir acquérir de nouvelles bases de résistance déjà intégrées. Il est donc Les modules CCP
programmation. possible, de cette façon, de réaliser un
oscillateur à 200 kHz en utilisant peu Le sigle CCP est l’abréviation de Cap-
Dans le tableau donné en figure 1, de composants externes. Le TMR1 peut ture/Compare/PWM. La famille 16C6x,
nous indiquons quels sont les péri- fonctionner selon deux modes : comme par exemple, intègre deux de ces
phériques intégrés pour chaque sous- timer ou comme compteur. Lorsqu’il tra- modules. Chaque CCP est formé d’un
famille de microcontrôleurs. Comme vaille comme compteur, le timer incré- registre à 16 bits qui peut fonctionner
vous pouvez l’observer, on passe des mente son propre comptage à chaque comme registre de capture, de com-
dispositifs de la famille 16C5x, qui n’in- front montant de l’horloge externe. Lors- paraison ou comme contrôle de la sor-
tègrent qu’un seul timer, aux disposi- qu’il fonctionne en mode timer, l’hor- tie PWM. Les deux modules sont pra-
tifs 16C7x qui disposent de plusieurs loge qui alimente le timer est la même tiquement identiques et sont chacun
timers, d’interfaces de communication que celle du microcontrôleur lui-même. constitués de deux registres, dénom-
sérielle et de conver tisseurs analo- Dans les deux cas, une interruption est més CCPR1L et CCPR1H pour le pre-
giques/digitaux. générée à chaque fois que l’on a un mier module et CCPR2L et CCPR2H
dépassement (overflow) du compteur. pour le second module.
Analysons maintenant en détail les dif-
férents éléments et leur mode de fonc- Le registre qui contrôle le mode de fonc- Analysons maintenant les trois diffé-
tionnement. tionnement de ce timer s’appelle rents modes de fonctionnement en
T1CON et la signification de chaque bit tenant compte du fait que ce qui a été
est la suivante : dit pour le premier module est égale-
TIMERS ment valable pour le deuxième.
- D0 (TMR1ON) : Active (1) ou désac-
Nous avons vu que le PIC 16C84 dis- tive (0) le timer. Mode CAPTURE
pose d’un timer intégré en mesure de - D1 (TMR1CS) : Sélectionne l’horloge En mode CAPTURE, les registres
générer une interruption chaque fois externe (1) ou interne (0). CCPR1L et CCPR1H capturent la valeur
qu’un comptage est terminé. Ce timer, - D2 (T1SYNC) : Sert à synchroniser (0) de 16 bits du timer TMR1 lorsque se
désigné par TMR0, est présent dans ou non (1) l’horloge externe avec l’hor- vérifie un événement déterminé sur la
tous les PIC, et fonctionne de la même loge interne du microcontrôleur. patte RC2/CCP1. Cet événement peut
manière pour tous les chips. Dans cer- - D3 (T1OSCEN) : Active (1) ou désac- être : un front montant ou descendant,
tains microcontrôleurs on peut trouver tive totalement (0) l’oscillateur. tous les 4 fronts montants, tous les
des timers supplémentaires qui sont - D4 (T1CKPS1) et 16 fronts descendants. Le mode de
alors désignés par TMR1 et TMR2. - D5 (T1CKPS2) : Etablissent la valeur l’événement est déterminé à travers
du prédiviseur : un registre de configuration.
TMR1 - 00 = divise par 1
Ce timer à 16 bits utilise deux registres: - 01 = divise par 2 Mode COMPARE
TMR1H et TMR1L. L’horloge qui ali- - 10 = divise par 4 En mode COMPARE, la valeur du
mente le compteur peut être interne, - 11 = divise par 8 registre CCPR1, de 16 bits, est conti-
ELECTRONIQUE 77 magazine - n° 16
TECHNOLOGIE
Figure 2 : Schéma synoptique du timer 16 bits TMR1. Comme vous pouvez le remarquer, ce timer est composé de deux
registres TMR1H et TMR1L qui peuvent être contrôlés par une horloge interne (piloté par quartz externe) ou par une horloge
externe.
ELECTRONIQUE 78 magazine - n° 16
TECHNOLOGIE
SCI
Le module SCI permet de communiquer de façon asynchrone
avec des périphériques comme les ordinateurs par exemple.
Il permet également de communiquer de façon synchrone
avec des périphériques comme les convertisseurs A/D, les
mémoires EEPROM sérielles, etc.
Asynchrone
Synchrone comme maître
Synchrone comme esclave
ELECTRONIQUE 79 magazine - n° 16
TECHNOLOGIE
ELECTRONIQUE 80 magazine - n° 16
TECHNOLOGIE
- D6 (C1OUT) : Sortie du premier com- Vref : bas (1) ou haut (0). Vers la fin
parateur. - D6 (VROE) : Indique si Vref se trouve du cours sur les PIC
- D7 (C2OUT) : Sor tie du deuxième sur RA2 (1) ou non (0).
comparateur. - D7 (VREN) : Informe le microcontrô- Dans le prochain numéro, nous arrive-
leur si le circuit qui génère Vref est rons à la dernière partie du cours sur
Lorsque l’état de sor tie de l’un des alimenté (1) ou non (0). les PIC de Microchip. Nous vous pré-
deux comparateurs change, une inter- senterons un puissant compilateur en
ruption est générée, en réponse à Comme vous le voyez, la valeur de la Basic, étudié spécialement pour ces
laquelle il est nécessaire d’aller lire via tension de référence est déterminée microcontrôleurs : le “PIC Basic Com-
software les deux bits D6 et D7 pour par les bits D0 à D3 avec les formules piler”. Il sera possible, avec cet ins-
savoir lequel des deux comparateurs suivantes : trument de développement, de réaliser
a réellement changé d’état. des programmes, même complexes,
Si VRR = 1 avec des instructions Basic simples et
Vref = (Vx : 24) x Vdd intuitives que le compilateur se char-
Module gera de traduire dans le langage assem-
générateur de tension Si VRR = 0 bleur des PIC.
Vref = (Vdd : 4) + (Vx : 32) x Vdd ◆ R. N.
Nous avons vu que les deux compa-
rateurs peuvent utiliser une tension Lorsque Vdd coïncide avec la tension
de référence générée par le micro- d’alimentation, Vx représente un
contrôleur lui-même. Ce module est
contrôlé par un registre dénommé
nombre compris entre 0 et 15, déter-
miné par les bits D0 à D3.
Pour vos achats,
VRCON dont les bits ont la significa- choisissez
tion suivante : Par exemple, si nous prenons en consi-
dération une Vdd de 5 V et une valeur
de préférence
- D0 (VR0), de Vx égale à 10, nous avons : nos annonceurs.
-
-
D1 (VR1),
D2 (VR2) et Si Vrr = 1
C’est auprès d’eux
- D3 (VR3) : Déterminent la valeur de Vref = 2,083 V que vous trouverez
la tension. les meilleurs tarifs et
- D4 : Non utilisé. Si Vrr = 0
- D5 (VRR) : Détermine l’échelle de Vref = 2,8125 V les meilleurs services.
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
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 08/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 PRO ............................................ 2 070,00 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 81 magazine - n° 16
TECHNOLOGIE
Microcontrôleurs
PIC
12ème partie et fin
Le Pic Basic Compiler
Nous savons que pour réaliser un programme pour les PIC, et plus généralement
pour n’importe quel microcontrôleur, nous devons suivre les instructions en format
mnémonique, puis les traduire en code machine en utilisant un programme spécial
appelé assembleur. Lorsque l’on réalise un software avec cette méthode, on parle
de programmation en assembleur ou “de bas niveau”. Mais il existe cependant
d’autres langages de programmation qui sont définis “de haut niveau” puisqu’ils
n’utilisent pas d’instructions assembleur. Ils prennent le nom de compilateurs.
Les plus célèbres de ces langages sont le Basic et le C.
ELECTRONIQUE 72 magazine - n° 17
TECHNOLOGIE
immédiatement à disposition des fonctions que seul un plus facilement utilisé à l’intérieur du programme. Ainsi, par
exper t en programmation réussit à gérer en assembleur. exemple : “Symbol LED = Pin0” donne à “Pin0” (qui, nous
vous rappelons, identifie la patte 0 du port B) le symbole
Mais surtout, il vous sera possible d’insérer des parties de “LED”. Une fois ce symbole défini, vous pourrez l’utiliser
programme en assembleur à l’intérieur de programmes dans le programme. L’instruction “LED = 1”, par exemple,
écrits en basic, en utilisant simplement la directive ASM. met un niveau logique haut sur la patte associée au sym-
bole LED (Pin0).
Pratiquement tous les microcontrôleurs des différentes
familles de PIC sont concernés, exception faite des 16C5x Etiquettes :
(16C54 à 16C58), qui sont les PIC de niveau le plus bas et Comme en assembleur, les étiquettes doivent commencer
dont la structure particulière ne permet pas l’utilisation du obligatoirement à la première colonne. Elles doivent en outre
code généré par le compilateur Basic. se terminer par deux points (:).
Avec la variable “Dirs” vous définissez en même temps Instructions pour le contrôle du flux du programme :
toutes les 8 broches du port B.
BRANCH Saut conditionnel.
CALL Appelle une sous-routine en assembleur.
Comment écrire END Termine le programme.
un programme en PBC FOR…NEXT Cycle.
GOSUB Appelle une sous-routine en Basic.
Avant d’entrer dans le vif du sujet et donc d’analyser les GOTO Saut inconditionnel.
instructions que le “PBC” prévoit, il vous faudra apprendre IF…THEN Conditionnel.
la syntaxe de ce Basic par ticulier c’est-à-dire les modes RETURN Retour de sous-routine.
génériques auxquels se tenir pendant l’écriture du pro- PAUSE Cycle d’attente pour un temps spécifié.
gramme.
Instructions pour le contrôle des pattes du port B :
Commentaires :
Les commentaires du programme peuvent être écrits après BUTTON Lit l’état d’un bouton avec anti-rebond.
avoir inséré une apostrophe (‘). Tout ce qui sera écrit après HIGH Met l’état logique haut.
ce symbole sera ignoré par le compilateur. LOW Met l’état logique bas.
INPUT Initialise une broche en entrée.
Symboles : OUTPUT Initialise une broche en sortie.
Avec la directive “Symbol” vous associez un nom, à une REVERSE Inverse entrée/sortie.
variable ou à une patte du microcontrôleur, qui peut être TOGGLE Inverse l’état logique d’une broche.
ELECTRONIQUE 73 magazine - n° 17
TECHNOLOGIE
Instructions pour la lecture et l’écriture des registres : Analysons la signification de chaque mot de l’instruction :
PEEK Lit le contenu d’un registre.
Pin = Spécifie quelle patte du port B doit être
POKE Ecrit dans un registre.
utilisée : c’est un nombre de 0 à 7.
Instructions pour la gestion des périphériques : Dowm = Détermine l’état de la patte quand on
appuie sur le bouton. Peut prendre les deux
EEPROM Initialise EEPROM. valeurs 0 ou 1.
I2CIN Lecture depuis un dispositif avec bus I2C.
I2COUT Ecriture sur un dispositif avec bus I2C. Delay = Représente le cycle de comptage avant un
PULSIN Mesure la durée d’une impulsion. “autorepeat” suivant. Si “Delay” est mis à
PULSOUT Génère une impulsion de durée spécifique. 0, l’anti-rebond n’est pas géré. S’il est mis
PWM Génère un signal PWM. à 255 l’anti-rebond est exécuté sans cycle
READ Lit un bit de l’EEPROM interne. “d’autorepeat”.
WRITE Ecrit un bit dans l’EEPROM interne.
SERIN Entrée sérielle asynchrone. Rate = Représente le nombre de fois où l’opéra-
SEROUT Sortie sérielle asynchrone. tion de lecture de l’état du bouton est répé-
SOUND Génère un son d’une fréquence tée (autorepeat).
et d’une durée déterminée.
Var = Indique la variable qui est utilisée pour
Instructions diverses : effectuer l’opération d’anti-rebond.
DEBUG Pour introduire des informations pour la Action = Indique à quel état du bouton il faut asso-
mise au point du programme. cier le saut à une étiquette (0 = le saut se
LET Associe le résultat d’une opération à une produit si le bouton n’est pas pressé. 1 = le
variable. saut se produit s’il est pressé).
LOOKDOWN Recherche d’une valeur dans un tableau.
LOOKUP Prélève d’une donnée dans un tableau. Label = Indique où saute le programme si la condi-
NAP Met le processus en mode veille pour un tion spécifiée par “Action” est vérifiée.
intervalle de temps court.
RANDOM Génère des nombres aléatoires.
SLEEP Met le processeur en veille pour un inter- CALL : Permet de rappeler des sous-routines en assembleur.
valle de temps long. Donc : “CALL Label1” exécute la sous-routine assembleur
qui se trouve à l’étiquette “Label1”.
Nous pouvons maintenant analyser en détail chaque ins-
truction donnée du compilateur Basic en examinant la syn- Syntaxe : “CALL Label”
taxe correspondante.
ELECTRONIQUE 74 magazine - n° 17
TECHNOLOGIE
VEAUTE
La variable qui compte combien de fois doit être répétée
une certaine opération est représentée par “Index” qui pren-
NOU
dra les valeurs qui vont de “Star t” à “End”, en utilisant
comme facteur d’incrémentation la variable “Inc”. Les ins- Elément sensible : CCD 1/3’’. Système : standard CCIR.
tructions qui seront répétées sont celles spécifiées par Résolution : 380 lignes TV. Sensibilité : 0,5 Lux.
“Body”. Alimentation : 12 VDC. BLC : automatique.
Sortie vidéo composite : 1 Vpp/75 Ω.
Voyons un exemple : Sortie audio et vidéo.
Microphone incorporé.
For B6 = 1 to 10 Alarme réglable (3,20 ou 60 secondes).
High 0
ELECTRONIQUE 75 magazine - n° 17
TECHNOLOGIE
exemple : “B0 = B1 * 2”, ou encore : “Pin2 = 0” qui met la OUTPUT : Sert à définir une patte du port B en sortie.
patte 2 du port B à niveau logique “0”.
Les opérations reconnues par notre compilateur Basic sont PAUSE : Cette instruction permet d’introduire un retard en
les suivantes : millisecondes défini par la variable “Period”.
A propos de l’opération de multiplication, nous vous rap- Syntaxe : “PEEK Address, Var”
pelons que la multiplication entre deux nombres à 16 bits
donne comme résultat un nombre à 32 bits.
POKE : L’instruction “POKE” sert pour écrire un nombre spé-
L’opérateur “*” restitue les 16 bits les plus bas de ce cifié par “Value” dans un registre défini par “Address”.
nombre à 32 bits.
Syntaxe : “POKE Address, Value”
Ainsi, par exemple : “W1 = W0 * 1000”, exécute la multi-
plication par 1000 de W0 et met le résultat en W1 (les
variables “W” sont en effet à 16 bits). POT : Avec cette instruction vous pouvez lire la position d’un
potentiomètre relié à une patte du port B spécifié par “Pin”.
L’opérateur “**”, par contre, restitue les 16 bits les plus Le potentiomètre doit être relié à cette broche comme le
hauts d’une multiplication à 16 bits. montre le petit schéma de ce paragraphe.
Donc, l’opération : “W2 = W1 ** 1000” met les 16 bits les De cette façon, le Basic
plus haut du résultat de la multiplication dans la variable mesure le temps de
W2. Pin 5-50 kΩ décharge du condensateur
sur le potentiomètre pour
Il est donc possible en utilisant ces deux opérateurs d’ob- relever la résistance du
tenir une multiplication entre deux variables à 16 bits en 0,1 µF potentiomètre même. Le
obtenant le résultat sur 32 bits. terme “Scale” doit être
choisi en fonction de la
constante de temps RC.
LOOKDOWN : Avec cette instruction, vous pouvez recher- Pour de petites valeurs de
cher dans une liste de valeurs (Constant) la présence de la cette constante, “Scale”
valeur “Search”. Si vous trouvez une égalité, l’index de la doit prendre une valeur élevée et vice-versa. Avec les grandes
position est redonné en “Var”. constantes de temps RC, il faudra utiliser des valeurs
basses. La donnée acquise est mémorisée dans la variable
Syntaxe : “LOOKDOWN Search, (Constant, Constant,… ), “Var”.
Var”
Syntaxe : “POT Pin, Scale, Var”
Syntaxe : “LOOKUP Index, (Constant, Constant,… ), Var” Syntaxe : “PULSIN Pin, State, Var”
où “Period”, qui peut prendre les valeurs comprises entre PULSOUT : Cette instruction permet de générer une impul-
0 et 7, met en veille le processeur pour des durées qui sion dont la durée est donnée par “Period” (exprimé en
vont de 18 ms (NAP 0) jusqu’à 2,3 secondes environ (NAP dizaines de microsecondes) sur la patte définie par “Pin”.
7). Puisque l’instruction “PULSOUT” travaille en complémentant
ELECTRONIQUE 76 magazine - n° 17
TECHNOLOGIE
l’état de la patte donnée, son niveau dépendra de l’état ini- REVERSE : Avec cette instruction, si une patte est définie
tial présent sur cette patte avant cette instruction. en entrée, elle est redéfinie en sortie, et vice-versa.
PWM : Avec cette instruction on peut générer un train d’im- SERIN : Permet de recevoir des données sérielles sur une
pulsions sur une patte donnée par “Pin”. Chaque cycle patte du microcontrôleur. La communication doit être stan-
“PWM” est constitué de 256 pas, le coefficient d’utilisa- dard asynchrone avec des données à 8 bits, sans égalité
tion (duty cycle) de ce train d’impulsion est imposé avec et avec un bit de stop.
“Duty” d’un minimum de 0 % (Duty=0) jusqu’à un maximum
de 100 % (Duty=255). La variable “Cycle” détermine com- Syntaxe : “SERIN Pin, Mode, (Qual, Qual,…) Item, Item,…”
bien de fois le cycle est répété.
“Pin” indique la patte à utiliser pour l’entrée des données.
Syntaxe : “PWM Pin, Duty, Cycle” “Mode” représente la vitesse de transmission, c’est-à-dire
le “baud rate”, qui peut varier de 300 à 9 600 bauds. “Qual”
représentent des caractères qui doivent être acquis avant
RANDOM : Cette instruction génère un nombre aléatoire qui de recevoir les véritables données. “Item” sont les variables
est positionné dans la variable “Var”. où sont chargées les données reçues.
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
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 08/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 PRO ............................................ 2 070,00 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 77 magazine - n° 17
TECHNOLOGIE
Par exemple avec : “SERIN 1, N2400, (“A”), B0”, le signal PIC BASIC PRO COMPILER qui ajoute de nombreuses fonc-
d’entrée sériel est appliqué à la patte 1 du port B. La com- tions à la version standard, comme la gestion des inter-
munication se passe à 2 400 Bauds (N2400) et, une fois ruptions, la possibilité d’utiliser un tableau, la possibilité
le caractère “A” acquis, la donnée suivante est mise en d’allouer une zone mémoire pour les variables, la gestion
“B0”. plus souple des routines et sauts conditionnels (IF… THEN…
ELSE…). La compilation et la rapidité d’exécution du pro-
gramme compilé sont bien meilleures que dans la version
SEROUT : Avec l’instruction “SEROUT”, vous pouvez trans- standard. Ce compilateur est adapté aux utilisateurs qui
mettre des données sous formes sérielles. souhaitent profiter au maximum de la puissance des PIC et
veulent développer des projets de moyenne et grande impor-
La syntaxe est la suivante : “SEROUT Pin, Mode, Item, tance.
Item…”
“Pin” et “Mode” ont la même signification que dans l’ins- Le mot de la FIN…
truction “SERIN”. “Item” représente les données à envoyer.
Le Cours sur le PIC 16C84, qui s’applique également à son
cadet plus performant mais compatible broche à broche,
SLEEP : Cette instruction met le PIC en mode veille pour un le 16F84, se termine avec cette leçon. Nous espérons vous
certain intervalle de temps donné par “Period” et exprimé avoir emmené plus loin dans la compréhension et la pro-
en secondes (“Period” est une variable à 16 bits et peut grammation de cette petite merveille qu’est le microcon-
donc prendre des valeurs comprises entre 0 et 65 535). trôleur. Certes, ce fut quelquefois ardu mais l’impression-
nant courrier que nous avons reçu prouve que vous avez
Syntaxe : “SLEEP Period” été nombreux à être tentés par l’expérience de la pro-
grammation.
SOUND : Avec cette instruction vous pouvez générer une Bien sûr, le prix d’un compilateur est assez élevé pour un
onde carrée de fréquence donnée. amateur et il n’est pas indispensable. Néanmoins, si vous
voulez développer vos propres applications, nous dirons
Syntaxe : “SOUND Pin, Note, Duration” qu’il sera une aide précieuse pour vous simplifier considé-
rablement la tâche et vous faire gagner du temps.
où “Pin” représente la patte du port B utilisé. “Note” repré-
sente la note à générer (les nombres de 0 à 127 repré- En raison du succès de ce cours, nous avons décidé de le
sentent des notes de différentes fréquences, les nombres rassembler dans un ouvrage qui se nomme tout simplement
de 128 à 255 provoquent la génération d’un bruit blanc). “Microcontrôleurs PIC, le cours” et qui est disponible dans
“Duration” représente la durée de la note générée. la librairie de la revue.
◆ R. N.
Conclusion
LA LIBRAIRIE
On dispose, avec “PBC”, d’un puissant outil de program-
mation des PIC. Le gain en temps, par rapport à l’écriture
traditionnelle est énorme. Ce programme existe en deux
versions : Réservés, il y a encore quelques années, aux seuls
industriels, les microcontrôleurs sont aujourd’hui à la
PIC BASIC COMPILER qui Permet d’utiliser des fonctions de portée des amateurs et permettent des réalisations
aux possibilités étonnantes. Vous pouvez concevoir
programmation avancées, commandes de saut (GOTO, l’utilisation des microcontrôleurs de deux façons dif-
GOSUB), de boucle (FOR… NEXT), de condition (IF… férentes. Vous pouvez considérer que ce sont des cir-
THEN…), d’écriture et de lecture d’une mémoire (POKE, cuits « comme les autres », intégrés à certaines réa-
SRC pub 02 99 42 52 73 10/2000
ELECTRONIQUE 78 magazine - n° 17