Vous êtes sur la page 1sur 9

INTRODUCTION AU PIC 16F877

1. Introduction

Un PIC n’est rien d’autre qu’un microcontrôleur, c’est à dire une unité de traitement
de l’information de type microprocesseur à laquelle on a intégré des périphériques internes
permettant de réaliser des montages sans nécessiter l’ajout de composants externes.
La dénomination PIC est sous copyright de Microchip, donc les autres fabricants ont été dans
l’impossibilité d’utiliser ce terme pour leur propre microcontrôleurs.

Les PICs sont des composants à jeu d’instructions réduit dits RISC (Reduce
Instructions Construction Set) ; cette réduction du jeu d’instructions facilite et augmente la
vitesse de décodage d’ou l’augmentation de la vitesse de fonctionnement.

Touts les PICs Mid-Range possèdent un jeu de 35 instructions, stockent chaque


instruction dans un seul mot de programme, et exécutent chaque instruction (sauf les sauts) en
1 cycle. On atteint donc de très grandes vitesses.

L’horloge fournie au PIC est prédivisée par 4 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 4MHz , on
obtient donc 1000000 de cycles/seconde, or, comme le pic exécute pratiquement 1 instruction
par cycle, hormis les sauts, ce qui donne une puissance de l’ordre de 1MIPS (1 Million
d’Instructions Par Seconde).

1.1 Les différentes familles des PICs

La famille des PICs est subdivisée en 3 grandes familles : La famille Base-Line, qui
utilise des mots d’instructions de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits
(par exemple le 16F84 et 16F876), et la famille High-End, qui utilise des mots de 16 bits.
Les PICs 16F628 et 16F877 sont des 16F84 améliorés. Chaque PIC dispose des
fonctionnalités des modèles inférieurs, augmentées de nouvelles fonctions (voir tableau 1.1).

1
Tableau 1.1 : Spécifications des PIC 16F87x

1.2 Identification d’un PIC

Un PIC peut être identifié tout simplement par son numéro.


Les 2 premiers chiffres indiquent la catégorie du PIC, 16 indique un PIC Mid-Range. Ces
deux chiffres sont suivis parfois d’une lettre « L » indiquant que le PIC peut fonctionner avec
une plage de tension beaucoup plus tolérante. Une autre lettre indique le type de mémoire
utilisée.

- C indique que la mémoire programme est une EPROM ou EEPROM.


- CR pour indiquer une mémoire de type ROM
- ou F pour indiquer une mémoire de type FLASH.

Seule une mémoire FLASH ou EEPROM est susceptible d’être effacée.


Les deux derniers chiffres identifient précisément le PIC. Les deux chiffres « -XX » sur le
boîtier qui suivent le ‘-‘ représente la fréquence d’horloge maximale que le PIC peut recevoir
( par exemple –04 pour une fréquence de 4MHz ).

Exemple : 16F877-20

C’est un PIC Mid-range avec une mémoire programme de type Flash (réinscriptible) de
type 877 cadencé avec une horloge de fréquence maximale de 20MHz.
Les PICs sont des composants statiques, c’est à dire que la fréquence d’horloge peut être
abaissée jusque l’arrêt complet sans perte de données et sans dysfonctionnement. Ceci par
opposition aux composants dynamiques, dont la fréquence d’horloge doit rester dans des
limites précises.

2
1.3 Organisation du 16F877

Le PIC 16F877 appartient à la famille des microcontrôleurs à 8 bits, il est composé des
parties essentielles suivantes :
- une unité centrale de traitement (arithmétique et logique)
- une mémoire programme de type flash (8K mots)
- une mémoire EEPROM (256bytes)
- une mémoire RAM
- cinq ports d’entrés / sorties
- 3 timers
- un convertisseur analogique / numérique à plusieurs canaux
- un port série synchrone (SSP) avec SPI (master mode) et I2C ( master / slave)
- un port esclave parallèle (PSP) à 8 bits
- un module de transmission et réception synchrone / asynchrone universel (USART)
- et des modules supplémentaires (PWM, Capture, Compare)

Figure 1.1: Architecture de base d’un microcontrôleur

2. Architecture interne du pic 16F877

Le pic 16F87x est composé d’un certain nombre de registres spéciaux, montés autour
de l’unité centrale, nécessaires pour accomplir des taches micro-programmées. La figure
suivante montre les différents registres intégrés dans ce circuit ainsi que l’interconnexion
entre les différentes parties.

3
Figure 2.1: Architecture interne des PIC16F87X

4
Le tableau 2.1 donne la description des différentes pins du PIC 16F877.

5
Légende: I= input O = output I/O = Input/Output P = Alimentation
— = non utilise TTL = entré TTL ST =entré Trigger de Schmitt
Note 1: Le buffer est un Trigger de Schmitt si l’entrée est configuré comme interruption
externe.
2: Le buffer d’entré est un Trigger de Schmitt quand il est utilisé en mode de programmation série.
3: Le buffer d’entré est un Trigger de Schmitt en mode oscillateur RC ou entrée CMOS.

Tableau 2.1 : Description des pattes du 16F877

6
Brochage du PIC

Le PIC16F877 se présente comme un circuit intégré de type DIP (Dual In Package) à


40 pattes. Il existe aussi sous forme d’un circuit intégré monté en surface SMD (Surface
Mount Devices).

Figure 2.2 : Brochage du PIC

2.1 Unité centrale de traitement

l’unité centrale de traitement (CPU) possède un rôle de connectivité entre tous les
éléments internes du microcontrôleur. En plus des opérations arithmétiques et logiques qu’elle
réalise, elle permet d’avoir une coordination entre les différents blocs du PIC et d’exécuter un
programme développé par un programmeur pour effectuer une tache bien précise.

2.2 Horloge et cycle d’instruction

Le fonctionnement du PIC est cadencé par un signal d’horloge externe à partir d’un
composant appelé « oscillateur », via les entrées OSC1 et OSC2. Un circuit interne ce signal
d’horloge par 4 en Q1, Q2, Q3, et Q4 ; ces signaux forment un cycle d’instruction ou « cycle
machine » pendant lequel une instruction est exécutée.

7
L’exécution commence par l’appel de l’instruction pendant Q1 puis écrite dans le registre
d’instruction pendant Q4. Le décodage de l’instruction se fait entre les cycles Q1 et Q4
suivants. La figure 2.3 montre la relation entre le cycle machine et l’horloge de l’oscillateur
(OSC1). le compteur de programme (PC) mémorise l’adresse de la prochaine instruction.

Horloge / cycle d’instruction

Figure 2.3 : Diagramme des cycles d’horloge

2.3 Phases de recherche et d’exécution

Le cycle d’instruction nécessite les cycles Q1, Q2, Q3 et Q4. Les cycles de recherche
et d’exécution sont reliés entre eux de telle sorte que le recherche prend un cycle, et un autre
cycle pour le décodage et l’exécution. Puisque la technique du pipelining est utilisée, chaque
instruction est effectivement exécutée en un cycle. Le cycle de recherche commence en Q1 en
écrivant dans le registre d’instruction ; cependant le décodage et l’exécution commencent en
Q1, Q2 et Q3.

Toutes les instructions prennent 1 cycle d’horloge sauf les instructions de branchement ( 2
cycles ).

Fetch : Recherche
Execute : Executer

Figure 2.4 : Phases de recherche et d’exécution

8
TCY0 recherche de l’instruction MOVLW 55h , pas d’exécution.

TCY1 exécution de l’instruction MOVLW 55h et recherche de MOVWF PORTB.

TCY2 exécution MOVWF PORTB et recherche de CALL SUB_1.

TCY3 exécution de call du sous programme CALL SUB_1, recherche de l’instruction BSF
PORTA, BIT3. dans cette phase une autre recherche est indispensable pour sauter à la
première instruction du sous programme SUB_1 ( cette instruction prend 2 cycles).

TCY4 ce cycle est totalement utilisé pour la recherche de la première instruction du sous
programme SUB_1.

TCY5 exécution de la première instruction du sous programme SUB_1 et recherche de la 2ième


instruction.