Chapitre 1 Introduction Aux Microcontrôleurs
Chapitre 1 Introduction Aux Microcontrôleurs
Chapitre 1 Introduction Aux Microcontrôleurs
Description externe
Le PIC16F877 est un circuit intégré de 40 broches où Certaines pattes ont plusieurs fonctions:
On dit que les fonctions sont multiplexée
Certaines pattes ont plusieurs fonctions: On dit que les fonctions sont multiplexée
L’Alimentation
L’alimentation du circuit est assurée par les pattes VDD et VSS. Elles permettent à
l’ensemble des composants électroniques du PIC de fonctionner. Pour cela on relie VSS (patte
12/31) à la masse (0 Volt) et VDD (patte 11/32) à la borne positive de l’alimentation qui doit
délivrer une tension continue comprise entre 3 et 6 Volts.
L'Horloge
L'horloge peut être soit interne soit
externe.
L'horloge interne est constituée d'un
oscillateur à quartz ou d'un
oscillateur RC.
Avec l'oscillateur a Quartz, on peut
avoir des fréquences allant jusqu'a
20 MHz selon le type de μC. Le
filtre passe bas (Rs, C1, C2) limite
les harmoniques dus à l’écrêtage et
réduit l’amplitude de l’oscillation, il
n'est pas obligatoire.
Avec un oscillateur RC, la fréquence
de l'oscillation est fixée par Vdd,
Rext et Cext. Elle peut varier
légèrement d'un circuit à l'autre.
Dans certains cas, une horloge
externe au microcontrôleur peut être
utilisée pour synchroniser le PIC sur
un processus particulier.
Quelque soit l'oscillateur utilisé,
l'horloge système dite aussi horloge
instruction est obtenue en divisant la
fréquence par 4. Dans la suite, on
utilisera le terme Fosc/4 pour
designer l'horloge système.
Note:
Le PIC 16F877A peut fonctionner en 4 modes d’oscillateur.
LP : Low Power crystal : quartz à faible puissance.
XT : Crystal/Resonator : quartz/résonateur en céramique.
HS : High Speed crystal/resonator : quartz à haute
fréquence/résonateur en céramique HF.
RC : Circuit RC (oscillateur externe).
𝐑𝐏𝟏 𝐑𝐏𝟎 . . . . . . .
𝟕𝐛𝐢𝐭𝐬
𝟗 𝐛𝐢𝐭𝐬
La RAM apparait alors organisée en 4 banks de 128 octets chacun. L'adresse instruction
permet d'adresser a l'intérieur d'un bank alors que les bits RP0 et RP1 du registre STATUS
permettent de choisir une bank. La Figure ci-dessous montre l’organisation de la RAM avec
les zones allouée au SFR et aux GPR. Les zones hachurées ne sont pas implantées
physiquement. Si on essaye d’y accéder, on est aiguille automatiquement vers la zone
[70h,7Fh] appelée zone commune.
Même si on précise une adresse supérieure a 127 (+ de 7 bits) dans une instruction, elle est
tronquée a 7 bits puis complétée par les bits RP0 et RP1 pour former une adresse 9 bis. Par
exemple, pour copier l’accumulateur W dans la case mémoire d’adresse 1EFh, il faut d’abord
placer les bits RP0 et RP1 à 1 (bank 3), ensuite on utilise soit l’instruction MOVWF 6Fh soit
l’instruction
MOVWF 1EFh, qui donne le même résultat. En effet, que l’on écrive 6Fh = 0110 1111 ou
1EFh = 0001 1110 1111, le PIC ne prend que 7 bits soit : 1101111 = 6Fh et complète avec les
bits RP1,RP0 pour obtenir 11 1101111 = 1EFh
Organisation de la RAM du 16F876/877
Donc en résumé, chaque fois que le PIC rencontre le mot INDF dans un programme, il sait
qu’il s’agit de la case mémoire dont l’adresse (9 bits) se trouve dans le registre FSR complété
par le bit IRP du registre STATUS
Le jeu d'instructions
{W,F ? d} signifie que le résultat va soit dans W si d=0 ou w, soit dans F si d= 1 ou f
Les paramètres des instructions agissant sur registre
Pour les instructions qui agissent sur registre, le paramètre F représente l’adresse du registre
considéré. Le paramètre d (destination) joue un rôle important, si on prend d = 0 ou w, le
résultat de l’opération sera placé dans l’accumulateur W, si on prend d = 1 ou f, le résultat de
l’opération sera placé dans le registre précisé par F.
Exemple:
ADDWF 70h,1 ou ADDWF 70h,f
Signifie : additionner le contenu de W avec le contenu de la case mémoire d’adresse 70h et
placer le résultat dans la case mémoire 70h
Exemple:
XORWF 35h,0 ou XORWF 35h,w
Signifie : faire un ou exclusif entre W et le contenu de la case mémoire d’adresse 35h et
placer le résultat dans l’accumulateur W
Les paramètres des instructions agissant sur bit
Pour les instructions agissant sur un bit, le paramètre F indique le registre qui contient le bit à
modifier et le paramètre b indique le numéro du bit à modifier; on compte à partir de zéro en
commençant à droite
7 6 5 4 3 2 1 0
Exemple:
BSF STATUS,2
Signifie : placer à 1 le bit 2 (3ème bit à partir de la droite) du registre STATUS .
Exemple:
BCF 45h,6
Signifie : placer à 0 le bit 6 (7ème bit à partir de la droite) du registre de la case mémoire
d’adresse 45h
Les instructions MOVWF et MOVF (Ce sont les instructions les plus utilisées)
MOVWF permet de copier l’accumulateur W dans un registre (SFR ou GPR):
Exemple:
MOVWF STATUS
Signifie : Copier le contenu de W dans le registre STATUS
Exemple:
MOVWF 55h
Signifie : Copier le contenu de W dans la case mémoire d’adresse 55h
MOVF signifie : permet de copier le contenu d’un registre (SFR ou GPR) dans
l’accumulateur W, le paramètre d doit être = 0
Exemple:
MOVF STATUS,0
Signifie : copier le contenu du registre STATUS dans l’accumulateur W
Exemple:
MOVF 35h,0
Signifie :copier le contenu de la case mémoire d’adresse 35h dans l’accumulateur W
Avec le paramètre d=1, l’instruction MOVF semble inutile car elle permet de copier un
registre sur lui-même ce qui a priori ne sert a rien.
MOVF STATUS,1
Copier le contenu du registre STATUS dans lui même
En réalité cette instruction peut s’avérer utile car, comme elle positionne l’indicateur Z, elle
permet de tester si le contenu d’un registre est égal à zéro
Les instructions btfss et btfsc
Ces instructions permettent de tester un bit et de sauter ou non une ligne de programme en
fonction de la valeur du bit.
btfsc F,b : bit test skip if clear
Signifie : teste le bit b du registre F et saute l’instruction suivante si le bit teste est nul
btfss F,b : bit test skip if set
Signifie : teste le bit b du registre F et saute l’instruction suivante si le bit teste est egal a 1
STATUS
Les indicateurs, la soustraction et la comparaison
Les instructions SUBWF et SUBLW positionne les drapeaux Z et C. Remarquons seulement
que la retenue B (Borrow) de la soustraction correspond à C,
F - W = 0 ==> Z=1 , C=1 , B=0 => pas de retenue de soustraction
F - W > 0 ==> Z=0 , C=1 , B=0 => pas de retenue de soustraction
F - W < 0 ==> Z=0 , C=0 , B=1 => il ya retenue de soustraction
Pour réaliser une comparaison entre F et W, on fait F – W et on observe Z et C
Z=1 ==> égalité
C=1 ==> F sup ou égal à W
C=0 ==> F inferieur a W