Académique Documents
Professionnel Documents
Culture Documents
Université de Carthage
ﺟﺎﻣﻌـﺔ ﻗﺮﻃﺎج
M I
Travaux pratique N°1 de MICROCONTROLEURS :
KI
Accès à la mémoire RAM du PIC 16F877
HA
Enseignant responsable : Walid HAKIMI
ID
AL
W
1. Objectifs visés :
Le but de ce TP est de programmer des applications simples avec le microcontrôleur 16F877. Ces
différentes applications visent la maîtrise de la gestion d’accès à la mémoire RAM de ce microcontrôleur
sous les deux modes direct et indirect. La simulation des applications seront réalisées à l’aide de MPLAB
SIM..
I
2. Le microcontrôleur 16F877 :
M
2.1. Définition :
Un microcontrôleur est une unité de traitement de l'information de type microprocesseur à laquelle
on a ajouté des périphériques internes permettant de réaliser des montages sans être obligé d’ajouter des
composants annexes Un microcontrôleur peut donc fonctionner de façon autonome après sa programmation.
En ce sens, les PIC sont particulièrement bien dotés, car ils intègrent plusieurs mémoires : de programme et
KI
de données, des ports d'entrée-sortie (numériques, analogiques, PWM, UART, bus I²C, etc.), et une horloge
même si des bases de temps externes puissent être employées. Certains modèles disposent de port et unités
de traitement de l’USB.
d’instructions réduit.
Familles de Pics :
En réalité les Pics se divisent en trois grandes familles:
Les Base-Line qui utilisent des instructions à 12 bits.
Les Mid-Range qui utilisent des instructions à 14 bits.
Les High-End qui utilisent des instructions à 16 bits.
W
M I
KI
Figure 1: Brochage du microcontrôleur 16F877.
3. La manipulation :
3.1. Mode d’adressage direct : HA
On donne la fonction suivante:
Tempo_1s :
movlw X1; 1 cycle
movwf CMPT1; 1 cycle
dec1 : movlw X2; 1 cycle
movwf CMPT2; 1 cycle
ID
Q1- Déterminer les valeurs des constantes X1, X2 et X3 pour avoir une durée 1 seconde de
temporisation sachant que Fosc=4MHz.
Q2- Déclarer les constantes X1, X2, X3 et N=0x10 ainsi que sept variables Var0, Var1, Var2,
Var3, CMPT1, CMPT2 et CMPT3 respectivement aux adresses 0x20, 0xA1, 0x122, 0x1A3,
0x30, 0x31 et 0x32.
Q3- Déterminer les valeurs des fusibles à placer dans la directive __CONFIG sous format
hexadécimal pour avoir les options suivantes:
Fusibles de Définition de la fonction des fusibles Mode à choisir
configurations
CP1/CP0 : Protection mémoire programme (Code Protection) → _CP_OFF
Debug : Validation du mode debug en circuit → _DEBUG_ON,
I
WRT : Autorisation d’écriture en flash → _WRT_ENABLE_ON
M
CPD : Protection en lecture de la mémoire EEPROM de → _CPD_OFF
données (Data Code Protection):
LVT : Utilisation de la pin RB3/PGM comme broche de → _LVP_OFF
programmation 5V (Low Voltage Programming)
BODEN : provoque le reset du PIC en cas de chute de tension → _BODEN_ON
KI
(Brown-out Reset) :
PWRTE Délai de démarrage à la mise en service (Power up → _PWRTE_ON
Timer)
WDTE Validation du Watchdog timer → _WDT_OFF
FOSC1/FOSC0 Sélection du type d’oscillateur
HA → _XT_OSC
Début
Var0←0, Var1←0,
Var2←0 et Var3←0
ID
Tempo_1s
Var0=N
Fin
Figure 3 : Organigramme 1
W
Début
CMPT ← N1
I
Pointer sur le registre d’adresse 0x120
M
en utilisant la constante Adr et le
registre FSR et le bit IRP
INDF ← 0
KI
Incrémenter FSR
Décrémenter CMPT
HA CMPT=0
Tempo_1s
CMPT ← N1
ID
Incrémenter INDF
AL
Incrémenter FSR
Décrémenter CMPT
W
CMPT=0
Décrémenter FSR
INDF=N2
Fin
Figure 4 : Organigramme 2
Walid HAKIMI Page 5
Travaux pratiques n°1 de microcontrôleurs
Accès à la mémoire RAM du PIC 16F877
M I
KI
HA
ID
AL
W