Professional Documents
Culture Documents
Spcialit : InfoTronique
V.TOURTCHINE
BOUMERDES - 2009
-0-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
I. LES MICROCONTROLEURS
1.1 Quest ce quun microcontrleur (C):
Cest un ordinateur mont dans un circuit intgr. Les avances
technologiques en matire dintgration, ont permis dimplanter sur une puce de
silicium de quelques millimtres carrs la totalit des composants qui forment la
structure de base dun ordinateur.
Comme tout ordinateur, on peut dcomposer la structure interne dun
microprocesseur en trois parties :
-Les mmoires
-Le processeur
-Les priphriques
Les mmoires sont charges de stocker le programme qui sera excut
ainsi que les donnes ncessaires et les rsultats obtenus.
Le processeur est le cur du systme puisquil est charg dinterprter les
instructions du programme en cours dexcution et de raliser les oprations
quelles contiennent .Au sein du processeur, lunit arithmtique et logique
ALU interprte, traduit et excute les instructions de calcul.
Les priphriques ont pour tche de connecter le processeur avec le
monde extrieur dans les deux sens. Soit le processeur fournit des
informations vers lextrieur (priphrique de sortie), soit il en reoit
(priphrique dentre).
Les PICs sont des composants RISC (Reduce Instructions Construction Set),
ou encore composant jeu dinstructions rduit. L'avantage est que plus on rduit le
nombre dinstructions, plus facile et plus rapide en est le dcodage, et plus vite le
composant fonctionne.
La famille des PICs est subdivise en 3 grandes familles : La famille BaseLine, qui utilise des mots dinstructions 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 (18FXXX).
Pour identifier un PIC, on utilise simplement son numro :
Les 2 premiers chiffres indiquent la catgorie du PIC, 16 indique un PIC MidRange.
Vient ensuite parfois une lettre L, celle-ci indique que le PIC peut fonctionner
avec une plage de tension beaucoup plus tolrante.
Vient en suite une ou deux lettres pour indiquer le type de mmoire programme :
- C indique que la mmoire programme est une EPROM ou plus rarement une
EEPROM
- CR pour indiquer une mmoire de type ROM
- F pour indiquer une mmoire de type FLASH.
-1-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.1
La mmoire de donne est spare en deux parties :
-une mmoire RAM de 68 octets puisque le bus de donne est de huit bits.
Cette RAM est volatile (les donnes sont perdues chaque coupure de courant). On
peut y lire et crire des donnes.
-une mmoire EEPROM de 64 octets dans laquelle on peut lire et crire des
donnes (de huit bits soit un octet) et qui possde lavantage dtre non volatile (les
donnes sont conserves mme en labsence de tension). La lecture et lcriture
dans cette mmoire de donnes sont beaucoup plus lentes que dans la mmoire de
donnes RAM.
Le processeur est form de deux parties :
-une unit arithmtique et logique (ALU) charge de faire des calculs.
-un registre de travail not W sur lequel travail lALU.
Les ressources auxiliaires qui sont dans le cas du PIC16F84
- ports dentres et de sorties.
- temporisateur.
- interruptions
- chien de garde
- mode sommeil
Ces ressources seront analyses dans la suite du cours.
-3-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.2
Lalimentation du circuit est assure par les pattes VDD et VSS. Elles
permettent lensemble des composants lectroniques du PIC de fonctionner.
Pour cela on relie VSS (patte 5) la masse (0 Volt ) et VDD (patte 14) la
borne positive de lalimentation qui doit dlivrer une tension continue comprise
entre 3 et 6 Volts.
Le microcontrleur est un systme qui excute des instructions les
unes aprs les autres une vitesse (frquence) qui est fixe par une horloge
interne au circuit. Cette horloge doit tre stabilise de manire externe au
moyen dun cristal de quartz connect aux pattes OSC1/CLKIN (patte 16) et
OSC2/CLKOUT (patte 15).
La patte 4 est appele MCLR. Elle permet lorsque la tension
applique est gale 0V de rinitialiser le microcontrleur. Cest dire que si
un niveau bas (0 Volt) est appliqu sur MCLR le microcontrleur sarrte,
place tout ses registres dans un tat connu et se redirige vers le dbut de la
mmoire de programme pour recommencer le programme au dbut (adresse
dans la mmoire de programme : 0000).
A la mise sous tension, la patte MCLR tant zro, le programme dmarre
donc ladresse 0000,( MCLR=Master CLear Reset ).
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.3
-5-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
lUAL et le registre de travail W (World). Nous allons tudier prsent plus en dtail
le fonctionnement du PIC.
Fig.4
On pourrait donc croire quun cycle instruction dure 8 cycles dhorloge mais
larchitecture particulire du PIC lui permet de rduire ce temps par deux.
En effet, comme les instructions issues de la mmoire de programme circulent
sur un bus diffrent de celui sur lequel circulent les donnes, ainsi le processeur peut
effectuer la phase de recherche dune instruction pendant quil excute linstruction
prcdente (voir les figure 5 et 6).
Fig.5
-6-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.6
Fig. 7
-7-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
-8-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig. 8
On constate en effet que cette mmoire est spare en deux pages (page 0 et
page 1). De plus, on remarque que tant pour la page 0 que pour la page 1, les
premiers octets sont rservs pour SFR (Special File Registre). Ces emplacements
sont en effet utiliss par le microcontrleur pour configurer lensemble de son
fonctionnement. On les appelle registres spcifiques et nous verrons au chapitre
suivant leurs rles.
Le bus dadresse qui permet dadresser la RAM est compos de 7 fils ce qui
veut dire quil est capable dadresser 128 emplacements diffrents. Or, chaque page
de la RAM est compose de 128 octets, le bus dadresse ne peut donc pas accder
aux deux pages, cest pourquoi on utilise une astuce de programmation qui permet
de diriger le bus dadresse soit sur la page 0, soit sur la page 1. Cela est ralis
grce un bit dun registre spcifique (le bit RP0 du registre STATUS) dont nous
verrons le fonctionnement plus loin.
La RAM de donnes proprement dite se rduit donc la zone note GPR
(Registre usage gnrale ) qui stend de ladresse 0Ch (12 en dcimale jusqu
-9-
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
4Fh (79 en dcimale soit au total 68 registres en page 0 et autant en page 1, mais
on constate que les donnes crites en page 1 sont rediriges en page 0 cela
signifie quau final lutilisateur dispose uniquement de 68 registres (donc 68 octets de
mmoire vive) dans lesquels il peut crire et lire volont en sachant qu la mise
hors tension, ces donnes seront perdues.
TO/
PD/
DC
Au reset, seul le bit RP0 de slection de page est fix (RP0=0 : page 0)
TO/ (Time Out) : dbordement du timer WDT
PD/ : (Power Down) caractrise lactivit du chien de garde WDT
Z
DC
C
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
T0IF INTF
RBIF
Masques :
GIE : (Global Interrupt Enable) : masque global dinter.
EEIE : (EEProm Interrupt Enable) autorise l'interruption venant de l'EEPROM.
T0IE : (Timer 0 Interrupt Enable) autorise l'interruption provoque par le
dbordement du TIMER0
INTE: (Interrupt Enable) autorise linterruption provoque par un changement
d'tat sur broche RB0/INT
RBIE: (RB Interrupt Enable) autorise les interruptions provoques par un
changement d'tats sur l'une des broches RB4 RB7. Si ces bits sont mis 1,
ils autorisent les interruptions pour lesquels ils sont ddis.
Drapeaux :
T0IF : (Timer 0 Interrupt Flag) dbordement du TIMER
INTF ( Interrupt Flag) interruption provoque par la broche RB0/INT
RBIF ( RB Interrupt Flag) interruption provoque par les broches RB4-RB7.
adresse 81 , OPTION
8 bits (tous 1 au RESET) affectant le comportement des E/S et de TIMER.
RBPU INTEDG RTS RTE PSA PS PS1
2
1
PS
0
RBPU/ (RB Pull-Up) Rsistances de tirage Vdd des entres du port B (voir
le dtail du fonctionnement au chapitre port). Si RBPU=0 les rsistances de
Pull-Up sont connectes en interne sur l'ensemble du port B.
- 11 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
WRERR WREN WR
RD
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Si lon veut placer une ligne en sortie il suffit de mettre le bit correspond dans
TRISA ou TRISB 0 ( retenir : 0 comme Output = sortie).
Si lon veut placer une ligne en entre, il suffit de placer le bit correspondant
dans TRISA ou TRISB 1 ( retenir : 1 comme Input = entre).
Les bits des deux registres PORTA et PORTB permettent soit de lire ltat
dune ligne si celle-ci est en entre, soit de dfinir le niveau logique dune ligne si
celle-ci est en sortie.
Lors dun RESET, toutes les lignes sont configures en entres.
Important :
Particularit du PORTA :
les bits b7 b5 des registres TRISA et PORTA ne correspondent rien car il ny
a que 5 lignes (b0 b4). RA4 est une ligne collecteur ouvert, cela veut dire
que configure en sortie cette broche assure 0 Volt ltat bas, mais qu ltat
haut, il est ncessaire de fixer la valeur de la tension grce une rsistance de
tirage (pull up en anglais)
Particularit du PORTB :
il est possible de connecter de faon interne sur chaque ligne une rsistance de
tirage (pull up) dont le rle consiste fixer la tension de la patte (configur en
entre) un niveau haut lorsque quaucun signal nest appliqu sur la patte en
question. Pour connecter ces rsistances, il suffit de placer le bit RBPU/ du
registre OPTION 0.
3.8 Le Timer
Dans la majeure partie des applications, il est ncessaire de contrler le
temps; afin de ne pas occuper le microcontrleur qu' cette tche (boucle de
comptage qui monopolise le micro), on le dcharge en utilisant un timer. Le pic
16F84 dispose de deux timers, un usage gnral (le TMR0) et un autre utilis pour
le chien de garde (watch dog WDG).
Le TMR0 est un compteur ascendant (qui compte) de 8 bits qui peur tre
charg avec une valeur initiale quelconque. Il est ensuite incrment chaque coup
d'horloge jusqu' ce que le dbordement ait lieu (passage de FF 00).
Le principe est reprsent figure 9 :
Fig.9
Le TMR0 peut remplir deux fonctions:
-Temporisateur ou contrle du temps. Son entre d'incrmentation est
alors l'horloge qui correspond au cycle instruction (Fosc/4). Il est
possible d'utiliser un prdiviseur de frquence que nous verrons plus
loin.
- 13 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.10
Suivant que le prdiviseur est assign au chien de garde ou au TMR0, la
valeur de la prdivision n'est pas la mme, il faut donc tre vigilant lors de la
programmation comme le montre la figure 11.
Fig.11
- 14 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.12
Fig.13
Il suffit ensuite dcrire le programme en langage assembleur sur un
ordinateur grce au logiciel MPLAB de MICROCHIP (logiciel gratuit) puis de le
compiler pour le transformer en langage machine et le transfrer dans le PIC grce
un programmateur.
Lors de la mise sous tension, tous les registres spcifiques sont placs dans
un tat dtermin comme le montre la figure 14
Fig.14
- 15 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
-k
reprsente une donne aussi appele littrale
Un certain nombre dinstructions (ADDWF, ANDWF, etc..) utilise une notation
spciale prsente sous la forme :
ADDWF
f, d
f, b
Qui va vouloir dire (Bit Test File Skip if Clare) qui signifie que lon
va tester le bit b du registre f (b peut prendre une valeur de 0 7
pour un registre 8 bits) .Il peut alors y avoir deux solutions :
-Soit le bit test est 1, donc la condition teste nest pas
ralise, le programme continue alors son droulement
normalement en squence avec linstruction juste en dessous.
-Soit le bit test vaut 0, donc la condition teste est ralise et le
programme saute linstruction qui suit le BTFSC dans le
programme.
SYNTAXE
OPERATION
dtat
du registre
STATUS
affectes
dure
CYCLE
W+kW
ADDLW
(Add Literal to W)
ADDLW
On ajoute au registre de
travail la valeur k et on
place le rsultat dans le
registre de travail W
- 16 -
C, DC, Z
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
BITS
INSTRUCTION
SYNTAXE
OPERATION
W+ff si d=1
W+fW si d=0
ADDWF
(Add W to F)
ADDWF
f, d
dtat
du registre
STATUS
affectes
dure
CYCLE
ou
On ajoute le contenu de
W et le contenu de f et on
place le rsultat dans f si
d=1 ou dans W si d=0
C, DC, Z
C, DC, Z
aucuns
aucuns
W ET k fW
ANDLW
(And Literal and W)
ANDLW
On effectue un ET logique
entre k et et le contenu de
W, et on place le rsultat
dans le registre de travail
W
W ET ff si d=1 ou W
ET fW si d=0
ANDWF
( And W with F )
ANDWF
f, d
BCF
(Bit Clear F)
BCF
f, b
BSF
(Bit Set F)
BSF
On effectue un ET logique
entre le contenu de W et
le contenu de f , on place
le rsultat dans W si d=0
ou dans f si d=1
0b (f)
On met 0 le bit b du
registre f
1b (f)
f, b
On met 1 le bit b du
registre f
BTFSC
Skip
f, b
if
aucuns
1 ou 2
aucuns
1 ou 2
BTFSS
(Bit Test, Skip if Set)
BTFSS
f, b
Si le bit b de f est 1,
linstruction qui suit celleci est ignore et traite
comme un NOP. Dans ce
cas et dans ce cas
- 17 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------seulement,
linstruction
BTFSS demande deux
cycles pour sexcuter.
BITS
INSTRUCTION
SYNTAXE
OPERATION
dtat
du registre
STATUS
affectes
dure
CYCLE
appeler
un
sou
programme (label)
CALL
(subroutine Call)
CLRF
(Clear F)
CALL
label
CLRF
On sauvegarde ladresse
de retour dans la pile puis
on appelle le sous
programme dfinit avec
ltiquette label
aucuns
aucun
1 ou 2
0F
On met le contenu du
registre f 0 et on
positionne Z
0W
CLRW
(Clear W)
On met le contenu du
registre W 0 et on
positionne Z
CLRW
0WDT et 0pr
diviseur du Timer
CLRWDT
(Clear Watch Dog
Timer)
On met le contenu du
registre du timer chien de
garde 0 ainsi que le pr
diviseur
CLRWDT
COMF
f, d
On
complmente
le
contenu du registre f bit
bit , le rsultat est plac
dans f si d=1 , dans W si
d=0.
DECF
f, d
On diminue le contenu du
registre f dune unit, le
rsultat est plac dans f si
d=1, dans W si d=0 (dans
ce cas f reste inchang).
DECFSZ
DECFSZ
f, d
On diminue le contenu du
registre f dune unit, le
rsultat est plac dans f si
- 18 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
(Decrement F, Skip if
Zero)
BITS
INSTRUCTION
GOTO
(branchement
inconditionnel)
SYNTAXE
GOTO
label
f+1f si d=1
f+1W si d=0
INCF
(Increment F)
INCF
f, d
dtat
du registre
STATUS
affectes
OPERATION
dure
CYCLE
aucun
aucun
1 ou 2
ou
On augment le contenu
du registre f dune unit,
le rsultat est plac dans f
si d=1, dans W si d=0
(dans ce cas f reste
inchang).
f+1f si d=1 ou
f+1W si d=0 et saut
si f-1=0
INCFSZ
(Increment F, Skip if
Zero )
INCFSZ
f, d
On augmente le contenu
du registre f dune unit,
le rsultat est plac dans f
si d=1, dans W si d=0
(dans ce cas f reste
inchang).Si le rsultat
est
nul,
linstruction
suivante est ignore et
dans ce cas, cette
instruction dure deux
cycles.
W OU k W
IORLW
IORLW
(Inclusive
with W )
Or
literal
On effectue un OU
logique entre le contenu
de W et le littral k, le
rsultat est plac dans W.
W OU ff si d=1 ou W
OU fW si d=0
IORWF
(Inclusive Or W with F)
IORWF
f, d
On effectue un OU entre
le contenu de W et le
contenu de f , on place le
rsultat dans f si d=1,
dans W si d=0
- 19 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------ff si d=1 ou fW si
d=0
MOVF ( Move F )
MOVF
f,d
On dplace le contenu de
f dans f si d=1 ou de f
dans W si d=0, a permet
en fait de tester le
contenu de f par rapport
0 et de positionner le bit Z
BITS
INSTRUCTION
SYNTAXE
OPERATION
dtat
du registre
STATUS
affectes
dure
CYCLE
kW
MOVLW
(Move Literal to W )
MOVLW
MOVWF
(Move W to F )
MOVWF
On charge le contenu de
W avec le littral k
aucun
aucun
aucun
aucun
aucun
aucun
Wf
On charge le contenu de f
avec le contenu de W
nant
NOP
(No Operation)
NOP
On
ne
fait
que
consommer du temps
machine (un cycle dans
ce cas)
Pile PC
RETFIE
(Return From
Interrupt )
On charge le compteur
ordinal avec la valeur qui
se trouve au sommet de
la pile pour revenir au
programme
principal
lorsque lexcution du
sous
programme
est
termine.
RETFIE
kW, PilePC
RETLW
(Return Literal to W)
RETLW
On charge le contenu de
W avec le littral k puis on
charge
le
compteur
ordinal PC avec la valeur
qui se trouve au sommet
de la pile effectuent ainsi
un
retour
de
sous
programme.
PilePC
RETURN
(Return
RETURN
On charge le compteur
ordinal PC avec la valeur
qui se trouve au sommet
de la pile effectuent ainsi
- 20 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------un
retour
de
sous
programme. Cest un
RETLW simplifi.
from subroutine)
SLEEP ( Sleep )
0PD,
0WDT,
prdiviseur
SLEEP
1T0,
0
On place le circuit en
mode sommeil avec arrt
de loscillateur. Cette
commande est utiliser
avec
prcaution,
elle
ncessite la connaissance
du mode sommeil.
BITS
INSTRUCTION
SYNTAXE
OPERATION
dtat
du registre
STATUS
affectes
dure
CYCLE
k-WW
SUBLW
(Substract
Literal)
SUBLW
W
On soustrait le contenu du
registre W du littral k et
on place le rsultat dans
W (soustraction par la
mthode du complment
2).
from
C, DC, Z
C, DC, Z
aucun
SUBWF
f, d
On soustrait le contenu du
registre W du contenu du
registre f et on place le
rsultat dans W si d=0, ou
dans f si d=1 (soustraction
par la mthode du
complment 2).
SWAPF
f, d
W
OU
kW
XORLW
(Exclusive Or Literal
with W )
XORLW
EXCLUSIF
k
On effectue un OU
Exclusif entre W et le
littral k, le rsultat est
plac dans W
W OU EXCLUSIF fW
si d=0 ou W OU
EXCLUSIF ff si d=1
- 21 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------XORWF
(Exclusive Or W with
F)
XORWF
f, d
On effectue un OU
Exclusif entre W et le
contenu de f, le rsultat
est plac dans W si d=0,
sinon il est plac dans f.
RLF
f,d
C
Opration :
Registre f
1 cycle
RRF
f, d
Opration :
7
C
Registre f
1 cycle
- 22 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
- 23 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Base
Dcimal
Binaire
Prfixe
D'nnn'
.nnn
H'nn'
0xnn
nnh
B'.'
Octal
O'nnn'
Hexadci
mal
Exemple
D'36'
.36
H'24'
0x24
24h
B'0010010
0'
O'44'
- 24 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
p=16f84
"p16f84.inc"
H'3FF9'
Led
X
cblock
y,z
u,v,w
endc
equ
equ
0x0D
0
0x0C
0X4
- 25 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
5.5 Rfrences
[1] PIC16F8X, document DS30430C, www.microchip.com
[2] PIC16F84a, document DS35007A, www.microchip.com
[3] Programmation des PIC, Premire partie-PIC16F84-Rvision 5, par BIGONOFF,
http://www.abcelectronique.com/bigonoff/organisation.php?2654c
- 26 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Prsentation de MPLAB:
MPLAB est un outil de dveloppement pour les PIC 16F84 et autres.
Il contient
un diteur
un assembleur
un simulateur
Il permet
Fig.1
- 27 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Lassistant de cration
de projet saffiche.
(Fig.2)
Cliquez sur Suivant
Fig.2
La premire tape
(Fig.3) consiste indiquer
la
rfrence
du
microcontrleur qui sera
utilis (dans notre cas
cest le PIC 16F84A).
Cliquez ensuite sur
Suivant
Fig.3
- 28 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.4
Indiquer le nom
souhait pour le projet
Spcifier le rpertoire
(Projets MPLAB) et
sous rpertoire
(manip_1)
Cliquer pour
slectionner
Fig.5
- 29 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------La troisime tape (voir la figure 5) consiste indiquer le nom du projet ainsi que son emplacement.
Indiquez dans la case Project Name le nom souhait pour le projet (par exemple : manip_1)
Spcifiez le rpertoire dans la case Project Directory en utilisant le bouton Browse pour
parcourir larborescence des rpertoires. Dans notre cas cest le rpertoire Projet MPLAB et sous rpertoire manip_1 (voir la figure 5). Cliquer Select
Cliquez ensuite sur Suivant
La dernire tape 4
permet dajouter au projet un
fichier source existant (fig.6).
Dans le cas o aucun fichier
source nest incorporer au
projet, cliquez directement
sur Suivant .
Fig.6
Lassistant de cration de
projet (fig.7) affiche un rsum
de celui-ci : contrler les
diffrentes
informations
prsentes :
a) Rfrence du
microcontrleur ;
b) Outil utilis en fonction du
langage ;
c) Rpertoire du projet.
Cliquez sur Terminer
pour valider la cration du
projet.
Fig.7
- 30 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
ltape
4
prcdente. Un double clic
sur celui-ci permet de louvrir
en vue de lditer.
Si aucun fichier existant na
t incorpor au projet
ltape 4, choisir dans le
menu
File
loption
New ou cliquer sur licne.
Une
fentre
ddition
apparat. Taper le texte du
programme
source
(en
assembleur) puis enregistrer
le fichier dans le mme
rpertoire que celui du
projet.
Incorporer ce nouveau
fichier
au
projet
en
choisissant loption Add
Files dans le menu
contextuel (obtenu par un clic
du bouton droit de la souris)
de la rubrique Source
Files .
Rechercher
puis
slectionner
le
fichier
sauvegard prcdemment.
MPLAB affiche, en plus de la fentre du projet, une fentre ddition dans laquelle on peut aisment
modifier le programme source grce la coloration syntaxique.
- 31 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.8
- 32 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------Les diffrentes icnes disponibles dans la barre doutils de MPLAB sont dfinies sur la figure 8.
Remarque : en fonction du mode de fonctionnement choisi (mode simple, mode Dbuggage ,
mode programmation), les icnes de la partie droite ne sont pas les mmes. La barre doutils
reprsente sur la figure 8 correspond au mode Dbuggage .
Fig.9
Certaines fentres quil est utile dafficher dans certains cas (voir la figure 10) :
- Watch : permet dafficher le contenu de registres du microcontrleur ou de variables (choisir dans
le menu View loption Watch ).
- Special Fonction Registers : permet dafficher le contenu des registres particuliers du
microcontrleur (choisir dans le menu View loption Special Fonction Registers ).
- File Registers : permet dafficher le contenu des registres particuliers du microcontrleur (choisir
dans le menu View loption File Registers ).
- Disassembly listing : permet dafficher le listing du programme en assembleur la suite de la
compilation, associ au code objet gnr (choisir dans le menu View loption Disassembly
listing ).
- 33 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.10
- 34 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------destin tre excut par un microcontrleur comporte systmatiquement une boucle infinie qui sera
signale par un message davertissement.
Le Message BUILD SUCCEEDED indique une compilation russie (comportant ventuellement
des avertissements).
Les principales icnes utilises pour le dbuggage apparaissent dans la partie droite de la barre
doutils de MPLAB :
Fig.11
- 35 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
- 36 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
4. Exercice
4.1 Crez votre source
Une fois le projet entirement dfini, vous pouvez commencer dvelopper le code de votre
application.
Slectionnez File ->New. Vous obtenez une fentre de lditeur. Saisir le fichier ci-dessous
(fig.12) en exemple (joint sous le nom de votre projet).
- 37 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
- 38 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------Sil y a eu un problme de compilation celui-ci est indiqu dans la fentre pour permettre de
retrouver les erreurs. Un double cloc sur lerreur pointe directement la ligne du programme sur laquelle
se situe lerreur.
Une fois la compilation termine le fichier debug (*.cod ou *.cof) gnr par MPLAB sera
charg. Ce fichier permet de dbouguer le code source et de visualiser les variables symboliques
dans les fentres dobservation.
4.4.3
4.4.4
4.4.5
Vous pouvez aussi excuter le programme pas pas : faites Debugger -> Step
Info ou touche F7. A ce moment la flche verte pointe linstruction qui va tre
excute. A tout instant vous pouvez voir le contenu dune variable en plaant le
pointeur de la souris sur le nom de la variable.
File Rejister
Programme Memory
EEPROM
Sp. Fct. Registers
Watch
Hardware Stack
Disassembly Listing
Simulator Trace
- 39 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------Faite View -> Watch pour ouvrir une fenetre dobservation (Watch Windows).
Deux menu droulants vous permettent de
slectionner soit le contenu des registres (Add
SFR) soit le contenu des variables utiliss (Add
Symbol).
Slectionnez par exemple PORTB puis cliquez sur
Add SFR.
Faites la mme chose pour slectionner TRISB,
retard_1 et retard_2.
Vous obtenez ainsi une fentre qui vous indique le
nom, ladresse et la valeur des quatre symboles
slectionns. Laffichage de la valeur se fait par
dfaut en hexadcimal, ce mode peut tre modifi
en faisant un clic droit dans la fentre. Vous
pouvez afficher les informations sur 8, 16, 24 ou 32
bits dans les formats hexadcimaux, binaires,
dcimaux ASCII ou en nombre flottant.
Slectionnez Properties en cliquant par bouton
droit de souris sur le registre intress (retard_1).
4.6.2
PORTB,0
; on allume la LED
4.6.3
Faite avancer le programme dun pas de plus et observez le changement dtat du bit 0 du
PORTB.
4.6.4
4.6.5
La temporisation est ralise par dcrmentation de deux variables ; pour raccourcir la dure
vous pouvez modifier directement les valeurs de retard_1 et retard_2 en cliquent deux fois sur
la valeur et en saisissant la nouvelle valeur (par exemple : 0x02).
4.6.6
4.6.7
PORTB,0
; on teint la LED
Pour continuer utilisez le bouton 5 Step Over (fig.11) ceci permet dexcuter tout le sousprogramme en mode Run et de pointer linstruction suivante.
- 40 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
Fig.13
4.7.1 Utilisation dun point darrt
Il est souvent intressant dexcuter un programme et de larrter un endroit bien
dtermine ; ceci est possible en utilisant les points darrt.
4.7.1.1 Effectuez un Reset de lapplication.
4.7.1.2 Effectuez un clic droit sur la ligne suivante
bcf
PORTB,0
; on teint la LED
4.7.1.3 Dans le menu contextuel qui apparat choisissez Set Breakpoint. Un signal stop doit
apparatre en face de la ligne indique (fig.14).
Fig.14
- 41 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
Fig.15
4.7.1.5 Effectuez un Reset du programme. Selectionnez Debugger -> Stopwatch. La
fentre Stopwatch doit tre apparatre (fig.15).
4.7.1.6 Lancez la simulation en mode Run ; lexcution sarrte lemplacement du point
darrt pr dfini et dans la fentre Stopwatch vous pouvez consulter le nombre de
cycles machines et le temps dexcution en s (fig.15).
Deux cases cocher contrlent la manire dont seffectue la collecte des donnes. Si seule le
premire case est coche (Trace Enable) le simulateur enregistre les donnes en mode Run jusqu
ce quil rencontre un point darrt ou quil soit arrt manuellement. Il permettra ensuit de visualiser les
8192 dernires cycles. Si la deuxime case est aussi coche (Break Trace Buffer Full) le simulateur
enregistre les 8192 cycles dexcution et arrte la mmorisation et lexcution du code.
- 42 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------4.7.2.2 Faites View -> Simulator Trace. La trace du simulateur montre pour chaque cycle
machine linstruction excute plus les donnes qui ont t lues ou crites dans les
registres. Pour chaque instruction la trace donne ladresse du Compteur de
Programme, le code opration (Op) en hexadcimal, ltiquette sil y a lieu et
linstruction dsassemble. Les quatre colonnes suivantes montrent les donnes lues
ou crites (fig.16):
SA
Adresse Source
adresse du registre o a t lue la donne
SD
Source Data
donne lue
DA
Destination Adresse adresse du registre o a t crite la donne
DD
Data Destination
donne crite
Fig.16
La dernire colonne donne le nombre de cycles. Cela peut permettre de mesurer la
dure dexcution dune parte du programme. Si vous cliquez avec le bouton droit de
la souris dans la ligne grise du haut vous obtenez un menu qui vous permet de choisir
les colonnes afficher.
- 43 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
Fig.17
Longlet Pin Stimulus permet de dfinir les pseudo signaux que lon veut crer ; ils peuvent
tre de type :
Soit synchrones et ils sont dfinis comme des horloges dont on donne la dure ltat haut et
bas
Soit comme des signaux asynchrone actionns par clic sur le bouton Fire , ce clic
produisant leffet indiqu dans la colonne Action
Longlet File Stimulus permet de crer des fichiers de simulus qui peuvent tre
mmorises et rejous.
- 44 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
R2
B_P
1k
0.1%
10uF
C4
U1
17
18
1
2
3
R3
RA0
RA1
RA2
RA3
RA4T0CKI
4
MCLR
16 OSC1CLKIN
1k
0.1%
VSS
VDD
RB0INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
OSC2CLKOUT
14
6
7
8
9
10
11
12
13
15
PIC16F84A
C1
5V
R1
220
0.1%
LED
1uF
VDD
U2
C3
C2
15pF
15pF
Fig.1
Remarque important :
Pour programmer en langage ASSEMBLEUR il faut non seulement connatre le fonctionnement de chaque
instruction, mais aussi larchitecture interne du microcontrleur, la structure de sa mmoire, les adresses des
registre spciaux, le fonctionnement de chacune de ses ressources internes, etc..
La programmation en langage ASSEMBLEUR sappuie sur des organigrammes plus travaills, et requiert plus de
rigueur et de minutie.
- 45 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
Toujours Il faut tenir en compte les rgimes transitoires des priphriques (bouton_poussoir, clavier etc..)
branchs sur le microcontrleur
De la ligne 1 la ligne 13 vous voyez un cadre. Le premier caractre de chaque ligne, vous
verrez le symbole ; . Tout ce qui suit tant considr comme zone de commentaire, vous pouvez y
mettre ce que vous voudrez. Ce commentaire vous aiderais de vous rappellerez ce que vous voulu
faire. Les commentaires vous seront alors dune grande utilit si vous dcidez de modifier votre
programme.
A la ligne 19, nous trouverons une DIRECTIVE destine MPASM pour indiquer quel type de
processeur est utilis dans ce programme.
3.2.2 Les directives
Les DIRECTIVES ne font pas partie du programme, elles ne sont pas traduites en OPCODE,
elles serrent indiquer lassembleur de quelle manire il doit travailler. Ce sont donc des
COMMANDES destines lassembleur en lui-mme.
- 46 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------EXPLICATION
Directives pour MPASM
On utilisera les registres :
retard_ms , mmo et les
constantes B_P et LEDs
Le portA et le portB seront
programms daprs le schma
de principe
On
vrifie
que
le
Bouton_Poussoir est appuy
pour lancer le programme
On appelle du sous-programme
de temporisation
On appelle du sous-programme
de gestion des LEDs
On
vrifie
que
le
Bouton_Poussoir est relch
pour revenir au dbut du
programme.
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; Ce programme assure la gestion des LEDs en mode
; de tlcommande :un appui sur un des
; Boutons-Poussoirs allume les LEDs tendis que
; lappui suivante fait teindre ces LEDs
;
; Nom du projet : TELERUPTEUR
; Auteur : V.Tourtchine
; Date : 09/2009
; Microcontrleur : Microchip PIC 16F84A
; Langage : Assembleur
; IDE : Microchip MPLAB
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxxxxxxx
; Processeur
;xxxxxxxxxxxxxxxx
List p=16F84A
#include <p16F84A.inc>
- 47 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------21)
22)
23)
24)
25)
26)
27)
28)
29)
30)
31)
32)
33)
34)
35)
36)
37)
38)
39)
40)
41)
42)
43)
44)
45)
46)
47)
48)
49)
50)
51)
52)
53)
54)
55)
56)
57)
58)
59)
60)
61)
62)
63)
64)
65)
66)
67)
68)
69)
70)
71)
72)
73)
74)
75)
76)
77)
78)
79)
80)
81)
82)
83)
84)
85)
86)
87)
88)
;xxxxxxxxxxxxxxxxxxxxxx
; Bits de configuration
;xxxxxxxxxxxxxxxxxxxxxx
__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;code protect OFF
;watchdog timer OFF
;power up timer ON
;xxxxxxxxxx
; Macro
;xxxxxxxxxx
bank1 macro
bsf
endm
STATUS,RP0
; passage en banque 1
bank0 macro
bcf
endm
STATUS,RP0
; passage en banque 0
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;
Dfinition des constantes
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#DEFINE
B_P
PORTA,0
#DEFINE
LEDs
PORTB
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;
Dclaration des registres temporaires
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CBLOC
0x00c
retard_ms : 1
; retard_ms l'adresse 0x0c
mmo : 1
; mmo l'adresse 0x0d
compte_1 : 1
compte_2 : 1
;xxxxxxxxxxxxxxxxxxxxxxx
; Dmarrage sur reset
;xxxxxxxxxxxxxxxxxxxxxxx
org
goto
0x0000
start
;xxxxxxxxxxxxxxxxxxxx
; Initialisation
;xxxxxxxxxxxxxxxxxxxx
start
bank1
movlw
B'00000001'
movwf
TRISA
movlw
B'00000000'
movwf
TRISB
bank0
clrf
PORTA
clrf
PORTB
clrf
mmo
movlw
D10
movwf
retard_ms,f
goto
dbut
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;
Programme principal
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dbut
btfss
B_P
; tester si B_P est appuy?
goto
dbut
; non -> dbut
- 48 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------89)
90)
91)
92)
93)
94)
95)
96)
97)
98)
99)
100)
101)
102)
103)
104)
105)
106)
107)
108)
109)
110)
111)
112)
113)
114)
115)
116)
117)
118)
119)
120)
121)
122)
123)
124)
125)
call
call
call
goto
tempo
gestion
appui
dbut
;
;
;
;
; fin du programme
La ligne 25, commence par __ CONFIG . Cette ligne contient les fameux fusibles qui
fixent le fonctionnement du PIC.
Les valeurs crites ici seront intgres dans le fichier .hex pour signaler au
programmateur les valeurs encoder aux adresses spcifiques du PIC.
3.2.5 Les macros
macro
bsf
endm
; passage en banque 1
STATUS,RP0
La macro se compose dun nom crit en premire colonne, suivi par la directive macro .
Commence alors la ligne suivante la portion de code qui constitue la macro. La fin de la macro est
dfinie par la directive endm .
Une macro remplace donc un morceau de code que nous utilisons souvent. La macro
fonctionne galement uniquement comme un simple traitement de texte. Chaque fois que la macro
sera rencontre, elle sera remplace au moment de lassemblage par la ligne (dans notre cas) :
bsf
STATUS,RP0
La macro simplifie donc lcriture, mais ne raccourci pas la taille du fichier .hex obtenu,
puisque la ligne sera crites dans le PIC.
- 49 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
PORTA,0
soit autrement :
bouton
#DEFINE
equ
B_P
0
PORTA,bouton
puis
#DEFINE B_P
PORTA,4
soit autrement :
bouton
#DEFINE
equ
B_P
4
PORTA,bouton
puis
equ
equ
0x0c
0x0d
Toute zone dfinie par lutilisateur commence avec la directive CBLOCK, suivie par ladresse
du dbut de la zone. Ensuit, nous pouvons utiliser 68 emplacements mmoire, qui rpondront la
syntaxe suivant : nom de la variable suivi du signe : suivi de la telle utilise. Dans notre exemple
on peut dfini des registres temporaire comme suit :
CBLOCK 0x0c
retard_ms : 1
mmo
: 1
Vous trouverez dans les programmes en 1re colonne ce quon a lappel des ETIQUETTES.
Ce sont des noms que vous choisissez et qui sont des REPERES pour le programme.
Lassembleur les remplacera par ladresse du programme , lendroit o elles sont
positionnes. Ceci vous vite de devoir calculer les emplacements programme.
3.2.10 La directive ORG
La directive ORG, suivie de ladresse, prcise quelle adresse les instructions qui suivent
seront places dans le PIC.
Aprs un reset ou mise sous tension, le PIC dmarre toujours ladresse 0x00. Le dbut du
programme doit donc se situer l.
Ladresse 0x04 est ladresse utilise par les interruptions (nous verrons dans le prochain
sance de TD). Il ne vous reste donc pas grande place pour placer votre programme. Nous
commencerons donc par un saut vers lemplacement du programme principal o nous aurons plus de
place. Allons donc voir ligne 68 comment tout ceci fonctionne :
org
goto
0x00
start
- 50 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------La premire ligne est une DIRECTIVE qui indique que la ligne suivante sera place
ladresse 0x00.
La seconde ligne est une INSTRUCTION qui indique au PIC que le programme doit sauter
ladresse start . start est une ETIQUETTE.
Aprs le reset, le PIC excute donc linstruction goto start qui se trouve ladresse 0x00,
suivie par linstruction qui se trouve ladresse start plus bas dans le programme (donc juste en
dessous de ltiquette start).
3.2.11 La routine dinitialisation
Les instructions contenues partir de ltiquette start (de la ligne 70 la ligne 81) vous
devriez avoir comprise.
3.2.12 Le programme principal
A partir de la ligne 86 la ligne 123 cest le programme principal. Dans notre cas ce
programme peut tre reprsent sans utiliser lappelle des sous-programmes et de macro. Le choix
dpend de la frquence dutilisation dans le programme des sous-programmes et des macro. Vous
pouvez choisir la mthode que vous prfrez. Trs important, cest davoir compris les deux
mthodes.
3.2.13 La directive END
Cette directive prcise lendroit o doit cesser lassemblage de votre programme. Elle est
obligatoire dans tout programme.
Toutes les instructions situes aprs la directive END seront tout simplement ignores.
- 51 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
IV. Exercices
Exercice 1. Une minuterie
Le schma dapplication est reprsent sur la figure 1.
Le fonctionnement du circuit est suivant.
De que le montage sera aliment et le bouton-poussoir B_P appuy, la LED devra sallumer et
y restera durant un priode pralablement tabli (180 ms ).
Lorganigramme est reprsent sur la figure 4.
Pour la temporisation on utilisera une fonction tempo de lexemple prcdent.
crire en assembleur le programme pour le PIC 16F84A.
Exercice 2. Le clignotant
Le schma dapplication est reprsent sur la figure 1.
Le fonctionnement du circuit est suivant.
De que le montage sera aliment, et le bouton_poussoir B_P sera constamment appuy la
LED devra clignoter indfiniment (priode de 400 millisecondes)
crire en assembleur le programme pour cette application en utilisant PIC 16F84A.
Exercice 3. Les feux tricolores
Le but de cet exercice est de simuler le fonctionnement de deux feux tricolores.
Le schma de principe est reprsent sur la figure 5.
- 52 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
+5 v
1k
Inter 0
1
Inter 1
R1
Alimentation
stabilise 5 V
R6
+
C1
R2
1k
R3
1k
1uF
R5
R4
3 X 470
U1
17
18
1
2
3
16
15
4
Q1
14
RA0
RB0/INT
RA1
RB1
RA2
RB2
RA3
RB3
RA4/T0CLK
RB4
RB5
OSC1/CLK
RB6
OSC2/CLKOUT RB7
6
7
8
9
10
11
12
13
LV
LJ
LR
MCLR
VDD
PIC16F84
R7
4 MHz
+
C3
15pF
C4
15pF
C2
10uF
R8
LR
R9
LJ
0
0
3 X 470
Fig.5
- 53 -
LV
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------COMMENTAIRES
Etat initial
Le bouton
marche-arrt
est appuiy ?
NON
OUI
OUI
Le bouton
clignotant est
appuiy ?
NON
Fonctionnement normal
Fonctionnement en clignotant
Passage des feux 1 et 2 lorange.
Fig. 6
- 54 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; Nom du projet : tricolor
;
; Auteur : V.TOURTCHINE
; Date : 09/2009
; Microcontrleur : Microchip PIC 16F84A
; Langage : Assembleur
; IDE : Microchip MPLAB
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;xxxxxxxxxxx
; Processeur
;xxxxxxxxxxx
List p=16F84A
#include <p16F84A.inc>
;xxxxxxxxxxxxxxxxxxxxxx
; Bits de configuration
;xxxxxxxxxxxxxxxxxxxxxx
__config _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC
;xxxxxx
; Macro
;xxxxxx
bank1 macro ; passage en banque 1
bsf STATUS,RP0
endm
bank0 macro ; passage en banque 0
bcf STATUS,RP0
endm
LRon_1 macro
bsf
LR_1
endm
LJon_1 macro
bsf
LJ_1
endm
LVon_1 macro
bsf
LV_1
endm
LRon_2 macro
bsf
LR_2
endm
LJon_2 macro
bsf
LJ_2
endm
LVon_2 macro
bsf
LV_2
endm
;xxxxxxxxxxxxxxxxxxxxxxxxxxx
; Dclaration des variables
;xxxxxxxxxxxxxxxxxxxxxxxxxxx
CBLOCK 0x0C
retard_ct : 1
retard_lg : 1
compte_1 : 1
compte_2 : 1
ENDC
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
; Dfinition des consrantes
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#DEFINE
LR_1
PORTB,0
- 55 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
#DEFINE
LJ_1
LV_1
LR_2
LJ_2
LV_2
Inter0
Inter1
PORTB,1
PORTB,2
PORTB,3
PORTB,4
PORTB,5
PORTA,0
PORTA,1
;xxxxxxxxxxxxxxxxxxxx
; Dmarrage sur reset
;xxxxxxxxxxxxxxxxxxxx
org 0x0000
goto start
;xxxxxxxxxxxxxxx
; Initialisation
;xxxxxxxxxxxxxxx
start
bank0
clrf
clrf
bank1
movlw
movwf
movlw
movwf
bank0
clrf
clrf
movlw
movwf
movlw
movwf
clrf
clrf
goto
PORTA
PORTB
B'00000011'
TRISA
B'00000000'
TRISB
PORTA
PORTB
d'6'
retard_lg
d'2'
retard_ct
compte_1
compte_2
dbut
;xxxxxxxxxxxxxxxxxxxx
; Programme principal
;xxxxxxxxxxxxxxxxxxxx
dbut
btfss Inter0
goto
dbut
btfsc Inter1
goto
clignote
call
STOP
call
route_1avert
call
route_1
call
J_1
call
STOP
call
route_2avert
call
route_2
call
J_2
goto
dbut
;=========== s/p tempo_lg ================
tempo_lg
movlw
d'250'
movwf
compte_1
movf
retard_lg,w
movwf
compte_2
boucle_1lg
nop
decfsz
compte_1
goto
boucle_1lg
movlw
d'250'
movwf
compte_1
- 56 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
-------------------------------------------------------------------------------------------------------------------------------------boucle_2lg
decfsz
goto
return
compte_2,f
boucle_1lg
=============
tempo_ct
movlw
movwf
movf
movwf
d'100'
compte_1
retard_ct,w
compte_2
nop
decfsz
goto
movlw
movwf
compte_1,f
boucle_1ct
d'100'
compte_1
boucle_1ct
boucle_2ct
decfsz
goto
return
compte_2,f
boucle_1ct
- 57 -
V.Tourtchine. Microcontrleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
END
- 58 -