You are on page 1of 5

LE PIC 16F877

Le pic 16F877 est un circuit intégré contenu dans un boîtier « DIL 40 », il présente 40
broches.
 brochage du 16F877:

 Architecture interne du 16F877:


o L’unité de traitement CPU :
L'unité de traitement numérique
exécute les instructions du
programme (codées sur 14 bits).
o Les mémoires :
Elles se divisent en trois blocs
distincts :
- la mémoire programmes Flash
(8 k mots de 14 bits),
- la RAM (368 octets) est utilisée
pour le stockage temporaire des
données et résultats,
- l'EEPROM (256 octets) qui
peuvent être lus et écrits depuis le
programme. Ces octets sont
conservés après une coupure de
courant.
o L’horloge :
Associé à un quartz externe de 8
MHz, elle génère le signal qui
cadence l'exécution. Chacune des
instructions du programme est
traitée en un cycle machine (une
période de l'horloge avec une
division interne par 4 soit 2 MHz
effectifs). La durée
d'exécution d'une instruction est
donc de 500 ns.
o Les ports :
Pour communiquer avec l'extérieur le PIC dispose de 5 ports (PORT A, PORT B, PORT C,
PORT D et PORT E). Les ports sont bidirectionnels, ce qui signifie qu'ils peuvent être configurés
et utilisés comme des entrées ou des sorties.
o Les timers :
Le PIC 16F877 dispose de 3 timers : ce sont des modules programmables dont les fonctions
principales sont
- la génération de signaux périodiques (astable),
- la génération d'impulsions (monostable),
- le comptage d'événements (compteur),
- la génération de signaux PWM (modulation de largeur d'impulsions pour les MCC).
o Le convertisseur analogique-
numérique CAN :
Il peut convertir 8 tensions analogiques (variables entre 0 et 5V) appliquées sur ses 8 entrées
(PORT A et PORT E) en nombres binaires codés sur 10 bits. Les résultats des conversions sont
stockés dans des registres internes du µC).
 la mémoire RAM et les registres spéciaux du 16F877:
La mémoire RAM est divisée en 4 banques. Elle comprend tous les registres spéciaux
permettant de contrôler le cœur du PIC ainsi que ses périphériques. Elle contient également
des cases mémoires à usage générique dans lesquelles pourront être stockées les variables de
nos futurs programmes.
o Registre STATUS (adresse : 03h ; 83h ; 103h ; 183h) :

RP1:RP0 : bits de sélection de banque mémoire. Utilisé pour l’adressage indirect


11 = Banque 3 (180h – 1FFh)
10 = Banque 2 (100h – 17Fh)
01 = Banque 1 (80h – FFh)
00 = Banque 0 (00h – 7Fh)
o Registre OPTION_REG (adresse : 81h ; 181h) :

T0CS : bit de sélection de la source d’horloge du timer0


1 = sur transition de la pin RA4/T0CKL
0 = sur horloge interne cycle d’instruction (CLKOUT)
T0SE : bit de sélection de source de front pour Timer0
1 = incrémentation sur front descendant
0 = incrémentation sur front montant

o Registre INTCON (adresse : 0Bh ; 8Bh ; 10Bh ; 18Bh)

PEIE : PEripheral Interrupt Enable bit = bit de validation des interruptions des
périphériques.
1 = Active toutes les interruptions non masquées des périphériques
0 = Désactive toutes les interruptions des périphériques
 Les ports du 16F877:
Le PIC 16F877 est doté de 5 ports, ce qui est plutôt confortable :
- les pattes du PORTA servent également au convertisseur Analogique/Numérique,
- les pattes du PORTD au Port Parallèle Esclave, etc.
- On voit également que les ports B, C et D ont 8 lignes d’entrée/sortie, alors que le port A
n’en a que 6 et le port E que 3.
On peut configurer les entrées/sorties de chaque port en entrée ou en sortie, grâce à
un registre spécial dédié à chaque port.
 Les timers du 16F877:
o Le timer 0 : C’est un compteur 8 bits (0 à 255) simple, qui compte des impulsions
soit internes, soit d’une source externe. On peut par ailleurs lui appliquer une pré-
division programmable entre 1 et 256.
o Le timer 1 : 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. De plus, il possède un mode de
fonctionnement particulier : on peut l’utiliser en association avec un des modules CCP
(modules de capture et de comparaison).
o Le timer 2 : Le Timer2 a un fonctionnement différent des Timer0 et Timer1. C’est un
compteur 8 bits avec pré-diviseur et post-diviseur. On s’en sert pour générer des
signaux carrés, ou, en association avec le module CCP, des signaux PWM.
PWM étant l’acronyme de « Pulse Width Modulation » ou, en français, Modulation de
Largeur d’Impulsion (MLI).
 Le convertisseur analogique - numérique:
Le convertisseur A/D convertit le signal analogique présent sur une de ses 8 entrées en
son équivalent numérique, codé sur 10 bits. Les pattes AN2 et AN3 peuvent être utilisées
comme références de tension ou comme entrées analogiques standard, les références de
tension étant dans ce dernier cas prises sur les tensions d’alimentations du PIC : V DD et VSS.
(VDD pour le + et VSS pour le -). On peut donc numériser jusqu’à 8 signaux analogiques.
Pas tous en même temps, bien sûr, étant donné qu’il n’y a qu’un seul module de conversion
pour 8 signaux d’entrée multiplexés. Mais si vos signaux n’évoluent pas trop vite (fréquence
basse), vous pouvez numériser le signal sur la patte AN0, puis celui sur AN1…
o ADCON0 (adresse : 1Fh. Registre de configuration du convertisseur Analogique /
Digital

- ADCS1:ADCS0 : Bits de sélection d’horloge de conversion Analogique / Numérique


00 = FOSC / 2 ; 01 = FOSC / 8 ; 10 = FOSC / 32 ;
- CHS2:CHS0 : Bits de sélection du canal analogique
000 = canal 0 (RA0/AN0) ; 001 = canal 1 (RA1/AN1) ; 010 = canal 2 (RA2/AN2) …
- GO/ DONE : Bit de statut de conversion Analogique / Numérique
Si ADON = 1 :
1 = Conversion A/D en cours. (Mettre ce bit à 1 démarre la conversion A/D)
0 = Conversion A/D pas en cours (ce bit est automatiquement effacé par le matériel
lorsque la conversion Analogique/Digitale est terminée)
- ADON : Bit de mise en route du module A/D
1 = Le module convertisseur A/D est en service
0 = Le module convertisseur A/D est désactivé et ne consomme pas de courant.

o ADCON1 (adresse : 9Fh) Registre de configuration du convertisseur Analogique /


Digital

- ADFM : Bits de sélection du format de résultat de conversion Analogique / Numérique


1 = Justifié à droite. Les 6 bits de poids fort du registre ADRESH sont lus comme ‘0’
0 = Justifié à gauche. Les 6 bits de poids faible du registre ADRESL sont lus comme ‘0’
- PCFG3:PCFG0 : Bits de contrôle de configuration de port A/D
o ADRESL (Adresse 9Eh) Registre de résultat de conversion Analogique / Numérique
(LSB)

o ADRESH (Adresse 1Eh) Registre de résultat de conversion Analogique /


Numérique (MSB)

You might also like