AnnexeA PIC
AnnexeA PIC
AnnexeA PIC
I Le PIC16F877A
Le PIC (Programmable Interface Controller) c’est la famille de microcontrôleurs µC de
constructeur Microchip Technology Inc. Un microcontrôleur c’est un circuit intégré IC inclut
une unité de traitement d’information c’est le microprocesseur µP, des mémoires, des registres plus
des interfaces de communication (entrées/sorties, ports séries . . .). Les PICs sont des composants
dits RISC (Reduced Instructions Set Computer), ou encore (composant à jeu d’instruction réduit).
Ces microcontrôleurs sont conçus sur une architecture dite HAVARD, elle est basée sur deux bus,
un pour les données (bus de données) et l’autre pour les instructions (bus de programme).
La figure au-dessus décrit l’architecture externe du 16F877 qui comprend 40 pins dont :
33 pins d’entrées/sorties multiplexées avec d’autres fonctions.
4 pins pour l’alimentation : VDD et VSS.
2 pins pour l’oscillateur : OSC0 et OSC1
1 pin pour le RESET : MCLR
I.4 Fonctionnement
Une fois le programme est stocké dans la mémoire (Program Memory) et le µC est initialisé,
l’instruction à exécuter est désignée par le PC (Program Counter) et sera chargée dans le registre
d’instruction (Instruction reg) au moyen d’un bus de programme sur 14-bits, puis elle sera décodée
dans le décodeur et le contrôleur d’instruction (Instruction De code & Control) et ensuite dirigée
vers l’UAL (ALU) avec les données chargées à partir des pins configurées comme entrées, l’UAL
fera l’opération nécessaire et sauvegardera le résultat temporairement dans le registre de travail
(Wreg) sur 8-bits, ce résultat sera aussi mit dans la RAM à l’aide d’un bus de données sur 8-bit
Organisation de la mémoire du PIC : La mémoire du PIC 16F877A est divisée en 3 parties :
1). La mémoire programme est constituée de 8k mots de 14 bits. C’est dans cette zone que nous
allons écrire notre programme. Le PIC exécute une à une les instructions logées dans la mémoire de
programme.
2). La mémoire EEPROM « Electrical Ecrasable Programmable Read Onlay Memory », est
constitué de 256 octets, ces octets sont conservés après une coupure de courant et sont très utiles
pour conserver des paramètres semi-permanents.
3). La mémoire RAM est celle qui est sauvant utilisée. Toutes les données qui y sont stockées sont
perdues lors d’une coupure de courant. La mémoire RAM disponible du 16F877A est de 368 octets.
Le PIC 16F877A possède une unité arithmétique et logique « UAL » et un registre de travail
W. L'UAL effectue des fonctions arithmétiques booléennes entre les données se trouvant dans le
registre de travail et n'importe quel registre. Pour les instructions à deux opérandes, typiquement
une donnée est dans le registre de travail«W» et l'autre opérande dans un autre registre ou se trouve
une valeur immédiate constante. Pour les instructions à un seul opérande, la donnée se trouve soit
dans le registre de travail «W» soit dans un autre registre. Le registre de travail «W» possède 14bits,
utilisé pour les opérations avec l'UAL, ce n'est pas un registre adressable. Elle « UAL » est
composée :
▪ D'un accumulateur 8 bits W : WORKING «travail », c'est lui qui effectue toutes les opérations
arithmétiques et logiques.
▪Un registre d'état 8bits STATUS.
Bit 0 ou bit C Carry c'set le bit de retenue en addition ou soustraction sur un octet. Il
positionné a 1 si une retenue set générée depuis le bit de poids fort
▪ Bit 1 ou bit DC comme Digit Carry0 il est positionné à 1 si une retenue est générée du bit 3 « Bit
de poids fort du quartet inférieur » vers le bit 0 du quartet supérieur. Il se utile pour corriger le
résultat d'opérations effectuées en code BCD
ANNEXE A PIC16F877A
b. Le Timer1 : Le Timer1 fonctionne sur le même principe que le Timer0, mais avec un registre de
comptage plus gros : 16 bits au lieu de 8, ce qui étend notablement ces capacités de comptage. Il est
accessible en lecture/écriture par l'intermédiaire des registres 8 bits TMR1H et TMR1L, On le
configure à l'aide du registre T1CON. On peut l'utiliser en association avec un des modules CCP
(modules de capture et de comparaison)
ANNEXE A PIC16F877A
Une interruption externe, action sur la Fin d'émission d'une information sur
broche INT/RB0. la liaison série
Débordement du Timer0. Interruption SPI ou I2C du module
Changement d'état logique sur une des MSSP
broches du PORTB (RB4 à RB7). interruption du registre de capture
Fin de programmation d'une case et/ou de comparaison 1
mémoire de l'EEPROM. Interruption du registre de capture
Changement d'état sur le PORTD et/ou de comparaison 2
Fin de conversion analogique Débordement du Timer 1
numérique Débordement du Timer2
Réception d'une information sur la
liaison série
ANNEXE A PIC16F877A
Le PORT A « 5 bits » I/O pure et/ou convertisseur analogique et/ou TIMER0. La broche
RA4 du PORT A « Entrée du TIMER T0CKI » est du type DRAIN OUVERT
Ces deux modules peuvent fonctionner dans l'un des trois modes ci-dessous :
Mode capture « CAPTURE »: ce mode permet en autre d'effectuer des mesures de temps.
Mode comparaison « COMPARE »: ce mode permet en autre de générer des évènements
périodiques.
Mode PWM signifie «Pulse Width Modulation», ce qu'on pourrait traduire par modulation
de largeur d'impulsion, il s'agit d'un signal binaire de fréquence fixe dont le rapport cyclique
peut être modulé par logiciel. Le rapport cyclique d'un signal binaire à fréquence fixe peut
être défini comme étant le rapport entre le temps ou il se trouve à l'état «1» par rapport au
temps total d'un cycle.
Ces modules sont associés aux broches RC2/CCP1 et RC1/T1OSI/CCP2 suivant le mode choisi,
les timer 1 ou 2 vont être utilisés. Les modes capture et comparaison utilisent le
timer 1, tandis que le mode PWM utilise le timer 2.