TP MicroProcesseur N°2
TP MicroProcesseur N°2
TP MicroProcesseur N°2
TP n°2 : Microprocesseur
Compilateur MPLAB pour PIC 16F84A
Elaboré par :
GE2 S3 G1
2020-2021
compte rendu tp n°2 MICROPROCESSEUR
But de ce TP :
Maitriser l’architecture interne du microcontrôleur 16F84A
Maitriser le compilateur MPLAB
Avoir un aperçu sur l’organisme du code assembleur dans la configuration du OIC et
la gestion de mémoire dans une application
Quelques définitions :
Un PIC est un microcontrôleur, c’est une unité de traitement de l’information de type
microprocesseur à laquelle on a ajouté des périphériques internes permettant de faciliter
l'interfaçage avec le monde extérieur sans nécessiter l’ajout de composants externes.
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 (et
dont font partie la 16F84 et 16F876), et la famille High-End, qui utilise des mots de 16 bits.
Pour identifier un PIC, on utilise simplement son numéro :
• Les 2 premiers chiffres indiquent la catégorie du PIC, 16 indique un PIC Mid-Range.
• Vient ensuite parfois une lettre L, celle-ci indique que le PIC peut fonctionner avec une
plage de tension beaucoup plus tolérante.
• Vient ensuite une ou deux lettres pour indiquer le type de mémoire programme :
- C indique que la mémoire programme est une EPROM ou plus rarement une
EEPROM
- CR pour indiquer une mémoire de type ROM
- F pour indiquer une mémoire de type FLASH.
• On trouve ensuite un nombre qui constitue la référence du PIC.
• On trouve ensuite un tiret suivi de deux chiffres indiquant la fréquence d’horloge
maximale que le PIC peut recevoir.
2
compte rendu tp n°2 MICROPROCESSEUR
Un 16F84-04 est un PIC Mid-Range donc la mémoire programme est de type FLASH de
référence 84 et capable d’accepter une fréquence d’horloge de 4MHz.
LE PIC 16F84
Manipulation :
1. Le Programme est :
#include <p16F84A.inc> ;
__CONFIG _CP_OFF&_WDT_OFF&_HS_OSC ;
CBLOCK 0x0C ;
mavariable : 1 ;
ENDC
org 0x000 ;
movlw 0x00
bsf STATUS,RP0 ;
movwf TRISB ;
bcf STATUS,RP0 ;
clrf mavariable
h1 ;
incf mavariable
movf mavariable,w ;
movwf PORTB ;
goto h1 ;
END
3
compte rendu tp n°2 MICROPROCESSEUR
3.
4
compte rendu tp n°2 MICROPROCESSEUR
5
compte rendu tp n°2 MICROPROCESSEUR
5.
6. Si mavariable =FF, le premier bit appelé CARRY sera représenté dans le premier bit de
STATUS
6
compte rendu tp n°2 MICROPROCESSEUR
7
compte rendu tp n°2 MICROPROCESSEUR
7.
Le temps nécessaire pour allumer toutes les LEDs est 51.25 S (à une fréquence = 100 Hz)
8. Boucle h1
Inst1 : 1 cycle machine
Inst2 : 1 cycle machine
Inst3 : 1 cycle machine
Inst4 : 2 cycles machines
Pour passer de 0 à1 Il faut donc 5 cycles machines
5*256 cycles machines
1 cycle machine = 4 cycles d’horloge
T = 4*5*256/100=51.2 s
8
compte rendu tp n°2 MICROPROCESSEUR
#include <p16F84A.inc> ;
__CONFIG _CP_OFF&_WDT_OFF&_HS_OSC ;
CBLOCK 0x0C ;
V1: 1 ;
V2: 1 ;
V3: 1 ;
ENDC
Movlw 0x00
Movwf V1;
Movlw 0x10
Mocwf V2 ;
Clrfw
Mocwf V1,w ;
Addwf V2,w ;
Movwf V3 ;
END