Vous êtes sur la page 1sur 8

I.1.

Introduction :
la présentation du microcontrôleur tout en illustrant ces différentes caractéristiques afin de
mieux l’exploiter.
On aura à définir l’unité de contrôle et tout ce qui l’englobe de part et d’autre de sa
structure. La partie la plus importante sera celle qui traite les différents ports d’entrée/sortie.
Ainsi que le convertisseur qui jouera le rôle d’interface entre l’unité de contrôle et le capteur
de température
I.2.Les microcontrôleurs :
I.2.1.Généralités :
Un microcontrôleur se présente comme étant une unité de traitement de l’information de
type microprocesseur contenant tous les composants d’un système informatique, à savoir
microprocesseur, des mémoires et des périphériques (ports, timers, convertisseurs…).Chaque
fabricant a sa ou ses familles de microcontrôleurs.
Une famille se caractérise par un noyau commun (le microprocesseur, le jeu
d’instruction…). Ainsi les fabricants peuvent présenter un grand nombre de pins qui
s’adaptent
plus au moins à certaines tâches. Mais un programmeur connaissant une famille n’a pas
besoin
d’apprendre à utiliser chaque membre, il lui faut connaître juste ces différences par rapport au
père de la famille. Ces différences sont souvent, la taille des mémoires, la présence ou
l’absencedes périphériques et leurs nombres.
I .2.2.Les avantages du microcontrôleur :
L’utilisation des microcontrôleurs pour les circuits programmables à plusieurs points
forts et bien réels. Il suffit pour s’en persuader, d’examiner la spectaculaire évolution de
l’offre des fabricants de circuits intégrés en ce domaine depuis quelques années.
Tout d’abord, un microcontrôleur intègre dans un seul et même boîtier ce qui, avant
nécessitait une dizaine d’éléments séparés. Il résulte donc une diminution évidente de
l’encombrement de matériel et de circuit imprimé.
Cette intégration a aussi comme conséquence immédiate de simplifier le tracé du circuit
imprimé puisqu’il n’est plus nécessaire de véhiculer des bus d’adresses et de donnée d’un
composant à un autre.
Le microcontrôleur contribue à réduire les coûts à plusieurs niveaux :
- Moins cher que les autres composants qu’il remplace.
- Diminuer les coûts de main d’oeuvre.
Réalisation des applications non réalisables avec d’autres composants

. I.3.Le microcontrôleur PIC 16F84 :

PIC 16F84
I.3.1.Généralité sur PIC :
Un PIC n’est rien d’autre qu’un microcontrôleur, c’est à dire une unité de traitement de
l’information De type microprocesseur à la quelle on a ajouté des périphériques internes
permettant de réaliser des montages sans nécessiter l’ajout de composants externes.
Les Pics (Programmable Interface Controller) sont des composants dits RISC (Reduce
Instructions Set Computer), ou encore composant à jeu d’instruction réduit, sachant que plus
on réduit le nombre d’instruction plus facile et plus Rapide en est le décodage, et vite le
composant fonctionne.
Dans le marché, il existe deux familles opposées, les RISC et les CISC (Complexe
Instruction SET Computer) chez les CISC, on diminue la vitesse de traitement mais les
instructions sont plus complexes, plus puissantes, et donc plus nombreuses. Il s’agit donc d’un
choix de stratégie.
Tous les pics Mid – Range ont un jeu de 35 instructions, ils stockent chaque Instruction
dans un seul mot de programme, et exécutent chaque instruction (Sauf les sauts) en un cycle.
On atteint donc des très grandes Vitesses. L’exécution en un seul cycle est typique des
composants RISC.
L’horloge fournie au pic est pré-divisée par quatre au niveau de celle-ci. C’est Cette base
de temps qui donne le temps d’un cycle.
Si on utilise par exemple un quartz de 4 MHZ, on obtient donc100000 cycles / Secondes,
comme Le pic exécute pratiquement l’instruction par cycle hormis Les sauts, cela nous donne
une puissance de l’ordre de 1 MIPS (1 Millions d’instruction par secondes).
Les pics peuvent monter à 20 MHZ.

I.3.2.Les différentes familles des Pics :


La famille des pics est divisée à l’heure actuelle en trois grandes familles :
La famille Base - Line, qui utilise des mots d’instructions de 12 bits.
La famille Mide –Range, qui utilise des mots de 14 bits (et dont font partie
Les 16F84 et 16F876).
La famille High – End, qui utilise des mots de 16 bits.
I.3.3.Identification d’un Pic :
Pour identifier un pic, on utilise simplement son numéro.
Les deux premiers chiffres indiquent la catégorie du pic, 16 indique un pic Mid – Range,
vient ensuite une lettre L : celle – ci indique que le pic peut
Fonctionner avec une plage de tension beaucoup plus tolérante, ensuite on trouve.
C indique que la mémoire programme est une EEPROM.
CR pour indiquer une mémoire de type ROM.
F pour indiquer une mémoire de type FLASH.
Notons à ce niveau que seule une mémoire FLASH ou EEPROM est Susceptible d’être
effacée,donc n’espérons pas reprogrammer les pics de type CR.
Un composant qu’on ne peut reprogrammer est appelé O. T. P (One Time
Programming) : composant à programmation unique.
Puis viennent les derniers chiffres identifient précisément le pic.
Finalement on voit sur les boîtiers le suffixe « XX » dans lequel XX représente la
fréquence d’horloge maximale que le pic peut recevoir. Par Exemple -04- pour un 4MHZ.
Une dernière indication qu’on trouve est le type de boîtier.
Nous utilisons pour nos expériences le boîtier PDIP, qui est un boîtier Dil40 broches avec
un écartement entre les rangées de 0.3. La version 4MHZ sera simplement suffisante.
Notons que les pics sont des composants STATIQUES, C'est-à-dire la fréquence
d’horloge peut être abaissée jusqu’à l’arrêt complet Sans perte des données et sans
dysfonctionnement, ceci par opposition aux Composants DYNAMIQUES (comme les
microprocesseurs de l’ordinateur) Donc la fréquence d’horloge doit rester dans des limites
précises.

I.3.4.Le 16f84 :

16F84 dont le numéro 16 signifie qu'il fait partie de la famille "MID-RANGE". C'est la


famille de PIC qui travaille sur des mots de 14 bits.
La lettre F indique que la mémoire programme de ce PIC est de type "Flash".
Les deux derniers chiffres permettent d'identifier précisément le PIC, ici c'est
un PIC de type 84.
La référence 16F84 peut avoir un suffixe du type "-XX" dans lequel XX représente la
fréquence d'horloge maximal que le PIC peut recevoir
I.4.Architecture du PIC 16F84 :
I.4.1.Organisation externe :

Le μC 16F84 est un circuit intégré de 18 broches : voir figure 1.

Figure 1 :

- Vss et Vdd : broches d’alimentation.


RA2 1 18 RA1
RA3 RA0 - Osc1 et Osc2 : broches du circuit horloge.
RA4/T0CKI Osc1 - MCLR : Reset (Master Clear).
MCLR Osc2 - RA0..RA4 : 5 entrées/sorties du port A.
Vss µC 16F84 Vdd
RB0/INT RB7
- RB0..RB7 : 8 entrées/sorties du port B.
RB1 RB6 - T0CKI : entrée d’horloge externe du timer.
RB2 RB5
RB3 RB4 INT : entrée d’interruption externe

La tension nominale de l’alimentation du μC 16F84 est +5 V : Vdd=+5 V et Vss=0 V.


Le Reset du μC 16F84 peut avoir plusieurs causes :
 Une mise sous tension POR (Power On Reset) : voir figure 2a
 Une mise à 0 de la broche MCLR (Reset manuelle) : voir figure 2b.
 Un débordement du timer du chien de garde WDT : voir plus tard.

Figure 2 :
Le fonctionnement du μC 16F84 nécessite une horloge qui rythme l’exécution des
instructions du programme.
On distingue trois modes d’horloge :
 Horloge interne à quartz (Figure 3a) : Avec l’oscillateur à quartz, on peut avoir
des fréquences allant de
4 MHz jusqu’à 20 MHz selon le type du μC.
 Horloge interne à circuit RC (Figure 3b) : Avec un oscillateur à circuit RC, la
fréquence de l’oscillation
dépend de la tension Vdd et des éléments Rext et Cext.
 Horloge externe (Figure 3c) : Application d’un signal horloge externe .

Figure 3 :

I.4.2.Organisation intern
La structure interne simplifiée du μC 16F84 peut être donnée par la figure 4.

I.5.1.JEU D’INSTRUCTIONS DU PIC 16F84 :

Afin de comprendre la fonction de chaque instruction, la notation adoptée pour


les données et adresses manipulées par les instructions est fort simple et est
la suivante :
- f représente un registre
- b représente un numéro de bit en sachant que 0 correspond toujours au
bit de poids faible (le plus à droite dans le registre)
- k représente une donnée aussi appelée littérale
Un certain nombre d’instructions (ADDWF, ANDWF, etc..) utilise une notation
spéciale présentée sous la forme :
ADDWF f, d Où f indique le registre et où d peut prendre deux valeurs (0 ou
1), ce qui change le comportement de l’instruction. Si d est à 0, le
résultat est placé dans le registre de travail W, la valeur dans le
registre f est alors inchangée, alors que si d est à 1, le résultat
est placé dans le registre f.
Un autre type d’instruction mérite quelques éclaircissements, ce sont les
instructions de branchement conditionnel. Prenons comme exemple :
BTFSC f, b Qui va vouloir dire (Bit Test File Skip if Clare) qui signifie que l’on
va tester le bit b du registre f (b peut prendre une valeur de 0 à 7
pour un registre 8 bits) .Il peut alors y avoir deux solutions :
-Soit le bit testé est à 1, donc la condition testée n’est pas
réalisée, le programme continue alors son déroulement
normalement en séquence avec l’instruction juste en dessous.
-Soit le bit testé vaut 0, donc la condition testée est réalisée et le
programme saute l’instruction qui suit le BTFSC dans le
programme.

Les 35 instructions sont donc les suivantes:

I.6.Modes d'adressages :
On ne peut pas concevoir un programme qui ne manipule pas de données. Il existe
trois grands types d'accès à une donnée ou modes d'adressage : - Adressage
immédiat : La donnée est contenue dans l'instruction. - Adressage direct : La
donnée est contenue dans un registre. - Adressage indirect : L'adresse de la donnée
est contenue dans un pointeur.

. I.6.1.Adressage immédiat ;
La donnée est contenue dans l'instruction.

Exemple : movlw 0xC4 ; Transfert la valeur 0xC4 dans W

. I.6.2.Adressage direct :
La donnée est contenue dans un registre. Ce dernier peut être par un nom (par exemple W)
ou une adresse mémoire.

Exemple : movf 0x2B, 0 ; Transfert dans W la valeur contenue à l'adresse 0x2B. ! L'adresse
0x2B peut correspondre à 2 registres en fonction de la banque choisie . Le bit RP0 permet ce
choix, le bit RP1 étant réservé pour les futurs systèmes à 4 banques

. I.6.3 Adressage indirect :


L'adresse de la donnée est contenue dans un pointeur. Dans les PIC, un seul
pointeur est disponible pour l'adressage indirect : FSR. Contenu à l'adresse 04h dans
les deux banques, il est donc accessible indépendamment du numéro de banque. En
utilisant l'adressage direct, on peut écrire dans FSR l'adresse du registre à atteindre.
FSR contenant 8 bits, on peut atteindre les deux banques du PIC 16F84. Pour les
PIC contenant quatre banques, il faut positionner le bit IRP du registre d'état qui sert
alors de 9ème bit d'adresse .
Figure : Adressages direct et indirect à la mémoire de données.

L'accès au registre d'adresse contenue dans FSR se fait en utilisant le registre INDF.
Il se trouve à l'adresse 0 dans les deux banques. Il ne s'agit pas d'un registre
physique. On peut le voir comme un autre nom de FSR, utilisé pour accéder à la
donnée elle-même, FSR servant à choisir l'adresse.

I.7. Organisation de la mémoire :

I.7.1. Mémoire Flash ROM


Cette mémoire de 1024 mots de 14 bits stocke le programme. Elle est permanente et
reprogrammable à
souhait. Chaque position contient une instruction. Suite à un Reset ou lors d’une
mise sous tension, le μC
commence l’exécution du programme à l’adresse 0. De plus, lorsqu’il y a une
interruption, il va à l’adresse 4.

. I.7.2. Mémoire EEPROM de données


Cette mémoire est constituée de 64 octets que l'on peut lire et écrire depuis un
programme. Ces octets
sont conservés même après une coupure de l’alimentation et sont très utiles pour
conserver des paramètres
semi permanents : code d’accès, version du programme, message d’accueil, valeur
invariable, etc.

I.7.3. .Mémoire RAM


La mémoire RAM est constituée de deux parties : voir figure 5.
 Une zone mémoire de 68 octets réservée à l’utilisateur pour
stocker ses variables. Elle adressable de l’@ 0x0C à l’@ 0x4F ou
de l’@ 0x8C 0xCF.
 Un fichier de 16 registres de contrôle répartis en 2 banques :
 Une banque 0 adressable de l’@ 0x00 à l’@ 0x0B.
 Une banque 1 adressable de l’@ 0x80 à l’@ 0x8B.
L’accès à un registre s’effectue en se plaçant dans la banque où
il se trouve. Ceci est réalisé en positionnant le bit RP0 du registre
d’état STATUS :

Registre STATUS :
RP0=0  banque 0 et RP0=1  banque 1.