16F877
16F877 est le nom d'un microcontrôleur Microchip de la famille PIC 16Fxxx.
Désignation
Le numéro 16 signifie qu'il fait partie de la famille "MID-RANGE". C'est un microcontrôleur de la famille 8 bits[1]. Cela veut dire que l'ALU (Arithmetic and Logique Unit ou Unit Arithmétique et Logique en français) traite naturellement des mots de 8 bits maximum.
La lettre F indique que la mémoire programme de ce PIC est de type "Flash". Chaque ligne de mémoire est un mot de 14 bits.
Les trois derniers chiffres permettent d'identifier précisément le PIC, ici c'est un PIC de type 877.
La référence 16F877 peut avoir un suffixe du type "-XX" dans lequel XX représente la fréquence d'horloge maximale que le PIC peut recevoir.
Caractéristiques
Fonctionne à 20 MHz maximum.
Possède :
- 35 instructions (composant RISC),
- 8Ko de mémoire Flash interne pour le programme,
- 368 octets de RAM,
- 256 octets de d'EEprom,
- 2 compteur/ timer de 8 bits,
- 1 compteur/ timer de 16 bits[2],
- 1 Watchdog,
- 15 sources d'interruption,
- 33 entrées/sorties numériques configurables individuellement, disposés en 5 ports nommés de A à E,
- 8 entrées configurables en entrées analogiques,
- un mode SLEEP.
Mémoire Flash
Pourquoi une ligne de cette mémoire (Mémoire flash) a 14 bits ?
L'ALU permet de faire des opérations mathématiques simples : OPERANDE_1 OPERATEUR OPERANDE_2.
- Les OPERANDE_1 et OPERANDE_2 sont des mots de 8 bits (car le 16F877 est un µC 8bits).
- L'OPERATEUR est l'une des 35 instructions disponibles (donc codable sur 6 bits)
La mémoire Flash est composée d'un mot de 8 bits (OPERANDE_1) et d'un mot de 6 bits (OPERATEUR).
Quid de l'OPERANDE_2 ? Celle-ci est :
- soit le résultat de l'opération précédente,
- soit elle n'existe pas (ex : un décalage),
- soit elle a été chargée dans le registre W lors de l'opération précédente.
Pour bien comprendre ces informations, reportez-vous à : figure 1-2 (page 7), au chapitre 3 (page 33 à 39), et au tableau 15-2 (page 160) de la documentation du PIC 16f877 donné en Notes[1].
Applications
Le microcontrôleur PIC 16F877 est devenu un microcontrôleur très populaire dans l'électronique loisir. Sa simplicité, son prix, et l'accessibilité des outils de programmation peuvent expliquer sa popularité.
Programmation
Les méthodes de programmations disponibles (il en existe peut-être d'autres) sont :
- Écrire directement un fichier en Hexadécimal (comme dans les années 1960),
- Écrire en assembleur,
- Écrire en C,
Notes
- Microchip - PIC16F87xA datasheet
- http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf Timer1: 16-bit timer/counter with prescaler, can be incremented during SLEEP via external crystal/clock