TP MicroProcesseur N°2

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 9

Ecole Nationale d’ingénieurs de Sfax

TP n°2 : Microprocesseur
Compilateur MPLAB pour PIC 16F84A

Elaboré par :

BEN ALI IMEN

GE2 S3 G1
2020-2021
compte rendu tp n°2 MICROPROCESSEUR

TP N°2 : Compilateur MPLAB pour -PIC 16F84A

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

2. Rôle de chaque instruction :


#include : bibliothèque qui contient des constantes
# CP_OFF : non sécurisé, on peut donc écraser le programme existant et le remplacer d’un
nouveau programme (Remarque : si on a # CP_ON on ne peut supprimer le programme existant)
# WDT_OFF : horloge qui provoque un reset lors de fonctionnement normal du microcontrôleur
# HS_OSC : oscillateur ou horloge à grande vitesse
#CBLOCK 0x0C : définit un bloc de variable
#org 0x000 : définit la position dans la zone mémoire
#Movlw 0x00 : charger la valeur spécifié 0x00 dans la zone mémoire de travail « w »
#bsf STATUS, RPO : mise à 1 dans le bank 1
#Movwf TRISB : recopier le contenu du registre de travail « w » dans TRISB
#bcf STATUS, RPO : mise à 0 du bit RBO du registre STATUS
#h1 : c’est un compteur
# incf mavariable : incrémentation de mavariable
#movf mavariable, w : charger le contenu de mavariable dans w
#Movwf PORTB : charger le contenu du registre de travail w dans le registre PORTB

3.

4
compte rendu tp n°2 MICROPROCESSEUR

Instruction OPCODE Adresse

11 0000 0000 0000 000h


Movlw 0x00 3 0 0 0

01 0110 1000 0011 001h


Bsf STATUS, RP0 1 6 8 3
00 0000 1000 0110 002h
Movwf TRISB 0 0 8 6

01 0010 1000 0011 003h


Bcf STATUS, RPO 1 2 8 3
00 0001 1000 1100 004h
Clrf mavariable 0 1 8 C

00 1010 1000 1100 005h


Incf mavariable 0 A 8 C

00 1000 0000 1100 006h


Movf mavariable, w 0 8 0 C

00 0000 1000 0110 007h


Movwf PORTB 0 0 8 6
10 1000 0000 0101 008h
Goto h1 2 8 0 5

4. Vérification avec ISIS :

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

Test programme : Calcul d’une somme de deux valeurs données :

#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

Vous aimerez peut-être aussi