Professional Documents
Culture Documents
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.
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.
Il existe 14 sources d'interruptions possibles (non détaillé ici, reportez-vous à la doc officielle).
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.
● 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
La plupart des logiciels nécessaires à la programmation des PIC sont disponibles sur internet.
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.
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 ».
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 ».
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 :
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 :
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.
Vérification de la
programmation.
Exécution du programme.
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 ».
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. 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.
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 »
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 :
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
Présentation de
l'encodeur rotatif
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 »
NAPPE HE10-26
NAPPE HE10-10
Carte LCD+Encodeur
BLOC ALIMENTATION
CABLE USB
Page 12
TEln