You are on page 1of 12

Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Présentation des microcontrôleurs PIC16F87X


Vous devez avoir avec vous la photocopie de présentation des µC PIC.

La dénomination PIC est sous copyright de MicroChip, les autres fabricants sont dans l'impossibilité
d'utiliser ce terme. Les deux premiers chiffres indiquent la catégorie du PIC : ici 16 indique un PIC de la
famille Mid-Range (milieu de gamme) qui utilise des mots de 14 bits. Ensuite vous pouvez trouvez la
lettre « L » qui indique que le PIC peut fonctionner avec une plage de tension beaucoup plus tolérante.
Ensuite vous trouverez les lettres suivantes :
• « C » : la mémoire programme est une EPROM ou plus rarement une EEPROM,
• « CR » : la mémoire programme est de type ROM,
• « F » : la mémoire programme est de type FLASH.

Brochage du PIC16F876
Le micro contrôleur PIC16F876 appartient à la famille 16F87X de MICROCHIP. Les caractéristiques du
PIC16F876 sont dans la troisième colonne.

Il existe deux types d'architectures pour les microcontrôleurs :


1. Architecture de type Von NeuMann (68HC11)
La ROM contient les codes des instructions et les constantes. Par exemple, l'instruction
LDAA #10 (charger la constante 10 dans l'accumulateur A) occupe deux adresses en ROM pour y
loger le code hexadécimal de l'instruction ou opérande (ici $96) et la constante (ici 10).
Le décodage d'une telle instruction nécessite plusieurs cycles d'horloge :
- adresse AD sur le bus d'adresse, code $96 sur le bus de données,
- adresse AD+A sur le bus d'adresse, valeur 10 sur le bus de données.
2. Architecture de type Harvard (PIC16F876)
L'opérande est intégré à l'instruction. Un seul cycle d'horloge par instruction sauf pour les sauts et les
branchements qui nécessitent deux cycles. Par exemple, l'instruction
MOVLW 10 (charger le registre de travail W avec la constante 10) se décompose en code de
l'opérande sur 6 bits et la constante 10 codée sur 8 bits. Le tout forme donc en mémoire programme un
mot de 14 bits :
instruction movlw -> 110000 00001010 <- constante 10
Le jeu d'instructions est réduit (Reduced Instructions Set Computer : RISC) mais la vitesse de
fonctionnement est élevée.

Le PIC16F876 est un microcontrôleur RISC d'architecture de type Harvard. Les mémoires programme et
données et les bus correspondants sont séparés. Ceci permet au même instant d'exécuter l'instruction à
l'adresse courante et de décoder l'instruction suivante (structure de type « pipeline »).

En interne l'horloge est quadriphasée, ce qui signifie que le temps d'exécution d'une instruction est égale à
Fosc/4. Si vous utilisez un quartz à 4Mhz, la période sera donc de 250ns et le temps d'exécution pour une
instruction sera de 4x250ns = 1us.

Schéma bloc du PIC16F876 et description de chaque broche


Organisation de la mémoire
Il existe trois blocs de mémoire dans un PIC : la mémoire programme, la mémoire de données et la
mémoire EEPROM. Deux adresses sont réservées aux vecteur RESET (adresse $0000) et
INTERRUPTION (adresse $0004).

Olivier DARTOIS Page 1


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Le reset peut être provoqué par :


• la mise sous tension (POR : Power On Reset),
• un niveau bas sur la broche MCLR (Master CleaR),
• le chien de garde en cas de plantage du programme (WDT : Watch Dog Timer),
• en cas de baisse de la tension d'alimentation (BOR : Brown-Out Reset).

Il existe 14 sources d'interruptions possibles (non détaillé ici, reportez-vous à la doc officielle).

Le registre d'options (Option_Reg register)


Ce registre sert à positionner un certain nombre d'élément à l'initialisation du PIC. C'est très important car
si le PIC est mal initialisé, il ne fonctionnera pas comme vous le souhaitez.
Bit 7 : active ou désactive les résistances internes de tirage vers le haut (pull-up).

Les ports d'entrées/sorties et les registres de direction (PORTx et TRISx)


Le PIC16F876 est équipé de 22 lignes d'entrées/sorties reparties en trois ports parallèles bidirectionnels :

• 6 lignes sur le port A : RA0 à RA5,


• 8 lignes sur le port B : RB0 à RB7,
• 8 lignes sur le port C : RC0 à RC7.

La plupart de ces lignes ont une double fonction suivant leur programmation.
Le sens de direction des données (entrée ou sortie) est mémorisé dans des registres TRIS (TRansfert Input
Set). TRISA est dédié au port A, TRISB au port B et TRISC au port C. Chaque ligne peut être configurés
individuellement en entrée ou en sortie.
La mise à « 1 » d'un bit du registre TRIS configure la ligne correspondante en entrée, un « 0 » configure la
ligne en sortie.
Au RESET, toutes les lignes sont configurées en entrées.

Le PORTA et le registre de direction TRISA


Le port A est un port bidirectionnel à 6 fils. Il cumule les fonctions d'E/S numériques, d'entrées
analogiques et entrée du Timer0. Au reset, ces lignes sont en mode analogique.

Le PORTB et le registre de direction TRISB


Le port B est un port bidirectionnel à 8 fils. Les lignes RB3,RB6 et RB7 peuvent être utilisées en E/S ou
pour la programmation in-situ. Toutes les lignes du port B peuvent être reliées à une résistance de tirage
vers le haut (voir registre Option_Reg). Les lignes RB4 à RB7 peuvent déclencher une interruption.

Le PORTC et le registre de direction TRISC


Le port C est un port bidirectionnel à 8 fils. Toutes les entrées du port C sont des entrées trigger de
schmitt. Ce port peut aussi servir pour le Timer1, la réalisation de signaux PWM (Pulse Width
Modulation : modulation à largeur d'impulsions), la communication avec des périphériques I2C et enfin à
dialoguer par voie série.

Olivier DARTOIS Page 2


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

TP sur les microcontrôleur PIC16F87X

Pour réaliser ce TP, vous avez besoin :

- du matériel suivant (disponible dans la boite du TP) :

● une carte de développement pour PIC16F876 avec un bloc alimentation ou une pile 9V
● une carte interrupteurs et DELs avec une nappe HE10-26
● un module ICD-U40 avec un câble USB et un câble RJ12
● un module de conversion USB-Série avec un câble USB et une nappe HE10-10
● une carte écran LCD graphique monochrome (écran LCD de Nokia 3310) avec boutons, DELs et
encodeur rotatif

- des logiciels suivants :

● PIC C Compiler : édition et compilation de programme en langage C pour les µC PIC,


● TinyBootLoader : permet de dialoguer par voie série entre le PC et le PIC. Vos pouvez aussi
utiliser le logiciel HyperTerminal livré en standard avec Windows.

La plupart des logiciels nécessaires à la programmation des PIC sont disponibles sur internet.

Une version de démonstration du compilateur C est disponible à :


http://www.ccsinfo.com/picc.shtml

Le programme TinyBootLoader est disponible ici :


http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm

Méthode générale pour la programmation d'un PIC

1. Reliez le module ICD-U40 et le PC par l'intermédiaire du câble USB. Connectez le module ICD-U40 à
la carte de test par l'intermédiaire du câble RJ12. Connectez si nécessaire la carte inters + dels avec une
nappe et les connecteurs HE10-26, enfin alimentez la maquette en 9V (attention à la polarité) et
allumez votre PC.
Si vous devez dialoguer avec un PC par voie série, connectez le module de conversion USB-Série à la
maquette (câble HE10-10) et le PC (câble USB).
2. Saisissez votre code source en langage C dans le logiciel « PIC C Compiler » et sauvegardez-le (Ex:
test.c).
3. Compilez votre code source en langage C. Corrigez vos éventuelles erreurs. Si la compilation de votre
code source se passe sans problème, vous obtenez un fichier au format HEX (Ex: test.hex).
4. Programmez votre PIC depuis l'environnement de développement.
5. Débranchez le câble RJ12. Faire un « reset » du PIC en coupant l'alimentation et en la remettant. Votre
programme s'exécute de manière totalement autonome sinon vérifiez votre code source.

Olivier DARTOIS Page 3


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Utilisation de l'environnement de développement intégré (EDI) du


compilateur C pour PIC de CCS

Nous allons présenter dans les pages suivantes l'utilisation de l'environnement intégré de développement
en langage C pour PIC de l'éditeur CCS. La référence complète du langage C pour PIC est disponible sur
le réseau dans le répertoire « Documents Eleves » puis « TEln » puis « PIC ». Une aide en ligne est aussi
intégré au logiciel (en anglais bien sur :-).
Pour lancer l'EDI, cliquez sur l'icône « PIC C Compiler » dans le dossier « Réseau Electronique » qui se
trouve sur le bureau de Windows. Au lancement, vous obtenez la fenêtre suivante :

Vous remarquez que ce logiciel fonctionne avec un système d'onglet permettant d'accéder aux différentes
fonctions de l'environnement de développement.

Cliquez sur la première icône qui représente un dossier ouvert. Puis choisissez « New » puis « Source
File ». Vous obtiendrez une fenêtre qui vous demande d'enregistrer un nouveau fichier. Vérifiez que vous
êtes bien dans votre répertoire personnel puis tapez le nom de votre programme dans la zone « Nom du
fichier » (par ex: test.c) puis validez avec le bouton « Enregistrer ».

Vous obtenez alors la fenêtre suivante :

1. Vérifiez que le nom de votre fichier source apparaît bien (ici : test.c).
2. Vous pouvez alors commencer à taper votre code source C dans la zone d'édition. Remarquez que
les lignes sont numérotées automatiquement.
3. Quand vous avez fini votre saisie, sauvegardez votre fichier en cliquant sur « Save ».

Olivier DARTOIS Page 4


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Il faut ensuite compiler votre programme, c'est-à-dire convertir le fichier texte en langage C en une suite
d'instructions compréhensible par le µC PIC :

Vous cliquez alors sur l'onglet « Compile » puis :

1. Vous vérifiez que vous compilez votre code source pour un PIC 16F (PCM 14 bit),
2. Vous lancez la compilation en cliquant sur l'icône « Compile »,
3. Si la compilation s'est déroulée correctement (sans erreur donc), vous pouvez programmer votre
PIC en cliquant sur l'icône « Program Chip ». et en sélectionnant « ICD ».

Si la compilation de votre code source se passe correctement vous obtiendrez alors la fenêtre ci-dessous :

1. Ce rectangle rappelle le nom de votre fichier et son emplacement.


2. Ce rectangle indique le nombre d'erreurs (errors) et d'avertissements (warnings)

Olivier DARTOIS Page 5


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Dans le cas contraire vous obtiendrez la fenêtre ci-dessous avec un message d'erreur qui apparaitra en bas
de la fenêtre (flèche 1), la ligne contenant l'erreur apparaitra d'elle-même (flèche 2):

Lorsque vous lancez la programmation de votre PIC, vous obtenez successivement les écrans suivants
(attention ces écrans peuvent défiler trés rapidement) :

Programmation du
PIC.

Connexion vers l'ICD.

Vérification de la
programmation.

Exécution du programme.

Olivier DARTOIS Page 6


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Déverminage de vos programmes


Grâce au module ICD-U40, vous pouvez exécuter votre programme dans un mode spécial appellé mode
« pas à pas ». Ce mode permet d'examiner à n'importe quel instant l'état des registres internes du PIC,
d'avoir la valeur d'une variable, de lire le contenu de l'eeprom, etc...

Ce mode sert à analyser le fonctionnement d'un programme et suivre son déroulement lorsque celui-ci ne
fonctionne pas de la manière attendu. Pour activer ce mode, suivez la procédure suivante :

1. La ligne suivante doit apparaitre dans votre code source en langage C : #DEVICE ICD=TRUE
sinon le logiciel vous proposera de le rajouter automatiquement.
2. Cliquez sur l'onglet « Debug » puis sur l'icône « Enable Debbugger ». Patientez jusqu'à ce que tous
les icônes soient actives.
3. Cliquez alors sur l'icône « Debug Window » puis sur l'option « Show All ». Vous devriez alors
obtenir la capture ci-dessous :

1. Cette fenêtre permet de suivre l'évolution des différentes variables en cliquant sur les différents
onglets disponibles.
2. L'icône « Run » permet d'exécuter le programme de manière « normale ». Recliquez sur ce même
icône pour arrêter le programme.
3. L'icône « Single Step » vous permet d'exécuter votre programme en mode pas à pas. Chaque ligne
du programme en langage C est exécuté puis le programme s'arrête jusqu'à ce que vous re-cliquiez
sur cet icône.
4. Cette petite flèche verte vous indique la ligne qui va être exécuté lorsque vous êtes en mode pas à
pas. Cette flèche change donc de ligne à chaque fois que vous cliquez sur l'icône « Single Step ».
5. En cas de problème, vous pouvez réinitialiser le PIC en cliquant sur l'icône « Reset ».
6. Enfin il faut toujours quitter le mode de déverminage en cliquant sur l'icône « Disable ».

Olivier DARTOIS Page 7


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Utilisation du logiciel TinyBootLoader


TinyBootLoader est disponible sur le bureau de Windows dans le dossier « Réseau Electronique ».
Au lancement vous obtenez la fenêtre suivante :

1. Vous vérifiez que la vitesse de dialogue sur la voie série est de 19200 bauds ou celle que vous
avez programmé dans votre programme (commande #use RS232).
2. Vous choisissez le port de communication auquel est relié votre maquette.

Les étapes 3 et 4 ne sont pas nécessaire car vous ne programmerez pas le PIC avec TinyBootLoader.
Si votre µC PIC envoie des informations ou doit recevoir des informations par la voie série, vous ne
quittez pas le logiciel TinyBootLoader. Vous suivez les étapes ci-dessous :

1. Cliquez sur l'onglet « Terminal ».


2. Cliquez sur le bouton « Open ». Si la communication s'effectue correctement les messages venant
du PIC s'affiche dans la fenêtre centrale. Pour arrêter la communication il suffit de cliquer sur le
bouton « Close ».
3. Pour préparer des données à envoyer au PIC. Cliquez dans la zone pointée puis tapez votre texte.
4. Pour l'envoyer au PIC, cliquez sur le bouton « Send ».

Olivier DARTOIS Page 8


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Simulation des PIC16F87X avec Isis


Lorsque vous avez compilé votre code source en langage C, vous pouvez le tester avec Isis 6.7. Pour cela,
il faut saisir dans Isis votre schéma (prendre un PIC16F87X pour tester). Ensuite faites apparaître les
caractéristiques du PIC, vous obtiendrez la fenêtre suivante :

Suivez la procédure suivante :

1. Appuyez sur le bouton « ? » pour récupérer votre programme en code hexadécimal (ici essai2.hex),
2. Précisez la fréquence du quartz du PIC (pas besoin de quartz sur le schéma Isis) (ici 4MHz).
3. Enfin vérifiez que le mot de programmation vaut 0x3D31. Validez vos choix en cliquant sur le bouton
« OK ».

Vous pouvez alors lancez une simulation active et tester votre programme.

Olivier DARTOIS Page 9


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Présentation des maquettes


Schéma et implantation carte de développement:
+5V VDD

J5
1
U2
7805

VI VO
3 S1 R1
+5V

J3
Implantation des composants:
ST 1
220
GND

PIN 2
3
C4 C5 C6 C7 L1 4
2

5
0.22µF 47µF 0.1µF 0.1µF LED
J6 6

VSS
7
8
PIN 9
10
11
12
13
S2
14
+5V PB3_EXT
15
ST
16
PB3uC
17
PB3_ICD
18
ST
P2_VREF- 19
S3
C2 C1 PB3_EXT
20
22pF 22pF 21
22
X1 23
24
25

+5V
POT H U1 26 Programmation
CRYST AL
9 21 6E/S Déverminage
10
OSC1/CLKIN RB0/INT
22 HE10-26 6
J2
OSC2/CLKOUT RB1 PB3_ICD
1 23
VPP MCLR/Vpp/T HV RB2 5
24 PB6
RB3/PGM PB3uC
P1_VREF+ 2
RA0/AN0 RB4
25
PB7
4
3 26
RA1/AN1 RB5 3
4 27
RA2/AN2/VREF- RB6/PGC PB6
5 28 2
RA3/AN3/VREF+ RB7/PGD PB7 +5V
6
RA4/T 0CKI 1
7 11 6 sorties VPP
RA5/AN4/SS RC0/T 1OSO/T 1CKI
12 EMBRJ12T URG
RC1/T 1OSI/CCP2
POT H 13
RC2/CCP1
14
RC3/SCK/SCL
15
RC4/SDI/SDA
16
RC5/SDO +5V
17 Communication
J_MASSE RC6/T X/CK
18 Voi e Série
RC7/RX/DT
PIN J1
PIC16F876A 1
2
3
J_AN0 J_AN1 J_AN4 4
PIN PIN PIN
5
6
7
8
9
10

HE10-10
+5V
turgot
R2
10K Maquette TP PIC
TEln - Oct 2006 Échelle 70%
Implantation carte inter+dels:
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

26 25
PB0 PC0
PB1 PC1
PB2
PB3
PC2
PC3
Carte Inters + DELs – Manip PIC 16F876
PB4 PC4
PB5 PC5
PB6 PC6
PB7 PC7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

« 1 »
GND GND
VCC VCC « 0 »

2 1 Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7

Implantation convertisseur USB-Série:


+5V
Convertisseur USB-Série

CUSB1
14 1
R1
RTS SLP
10K
13
CTS RXL
2 J1
1
Série vers USB

12 3 2
Convertisseur

DTR T XL
3
11 4 4
DSR PEN
5
10

9
DCD TEN
5

6
S2
6
7
8
Implantation :
RI TXD
9
8 7
S1 ST
10
GND RXD
ST
CONV_USB HE10-10

BP_RESET

Typon :

Olivier DARTOIS Page 10


Microcontrôleur PIC – Présentation et Méthode de programmation TEln

Carte Ecran LCD graphique Nokia 3310, Encodeur rotatif avec bouton, boutons et DELs:
Cette carte dispose :
● d'une DEL verte (D2) reliée à la sortie PIN_C4,
● d'une DEL rouge (D1) reliée à la sortie PIN_B3,
● de deux boutons : K1 relié à PIN_B1 et K2 relié à PIN_B2,
● d'un encodeur rotatif avec bouton sur l'axe, les sortie de l'encodeur sont reliées à
PIN_B4 et PIN_B5, le bouton est relié à PIN_B1.
+5V

PB0 J_LPH
1
+5V

LPH7779 - NOKIA3310
2
PC3 SCLK
3

3
PC5
4
SDIN
SW E1 PC1 DATA/COMMAND
COM

5
ENCOD_BTN_20 PC0
6
CS
A & B => Interruption INT_RB (RB4, RB5) 7
MASSE
SW => Interruption INT_EXT (RB0) 8
OSC (+CONDO)
Encodeur PC2
9
RESET
10
HP1
HP2
LPH7779
A B
C1
4.7uF
1

R4 R3 +5V

10K 10K J1
RES5 RES5
1
C3 PB4 PB5 C4 2
10nF 10nF 3
CF21 CF21 4
Resistances Pull-Up PortB activées
C2 5
100nF 6
PC4
PB3

CF21 7
PB1

PB2

8
9
10
11
12
13
R1 R2 14
330 330 15
K1 K2 PC5
16
RES5 RES5 PB5
BPT BPT 17
PC4
18
PB4
19
PC3
20
PB3
21
PC2
D1 D2 PB2
22
LED LED 23
PC1
24
PB1
25
PC0
26
PB0
HE10-26

Nokia3310 - Encodeur - BPs pour TP PIC


Olivier DARTOIS 09/2008

Présentation de
l'encodeur rotatif

Olivier DARTOIS Page 11


Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

26 25

Olivier DARTOIS
PB0 PC0
PB1 PC1
PB2 PC2
CABLE USB PB3 PC3
Carte Inters + DELs – Manip PIC 16F876
CABLE PB4 PC4
PB5 PC5
RJ12 PB6 PC6
PB7 PC7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

« 1 »
GND GND
VCC VCC « 0 »

2 1 Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7


Plan de câblage de l'ensemble:
Microcontrôleur PIC – Présentation et Méthode de programmation

NAPPE HE10-26

NAPPE HE10-10
Carte LCD+Encodeur

BLOC ALIMENTATION
CABLE USB

Page 12
TEln

You might also like