Vous êtes sur la page 1sur 28

PISAK S.

Le pic16F84
LES MICROCONTROLEURS PIC16F84
I LES MICROCONTROLEURS
1) Quest ce quun micrcntr!"eur #
Cest un ordinateur mont dans un circuit intgr. Les avances tecno!ogi"ues en mati#re
dintgration$ ont permis dimp!anter sur une puce de si!icium de "ue!"ues mi!!im#tres carrs
!a tota!it des composants "ui %orment !a structure de &ase dun ordinateur. Leur pri' varie de
"ue!"ues (uros ) une di*aine d+(uros pour !es p!us comp!e'es. Comme tout ordinateur$ on
peut dcomposer !a structure interne dun microprocesseur en trois parties ,
-Les mmoires
-Le processeur
-Les pripri"ues
Cest ce "uon peut voir sur !a %igure 1 ,
%igure 1
!es mmoires sont carges de stoc.er !e programme "ui sera e'cut ainsi "ue !es
donnes ncessaires et !es rsu!tats o&tenus
!e processeur est !e c/ur du s0st#me puis"ui! est carg dinterprter !es
instructions du programme en cours de'cution et de ra!iser !es oprations "ue!!es
contiennent .Au sein du processeur$ !unit aritmti"ue et !ogi"ue interpr#te$ traduit
et e'cute !es instructions de ca!cu!.
!es pripri"ues ont pour t1ce de connecter !e processeur avec !e monde
e'trieur dans !es deu' sens . Soit !e processeur %ournit des in%ormations vers
!e'trieur 2pripri"ue de sortie 3$ soit i! en re4oit 2pripri"ue dentre 3.
$) Int%r&t 'es micrcntr!"eurs #
Les microcontr5!eurs sont de tai!!e te!!ement rduite "ui!s peuvent 6tre sans di%%icu!t
imp!ants sur !app!ication m6me "ui!s sont censs pi!oter. Leur pri' et !eurs per%ormances
simp!i%ient normment !a conception de s0st#me !ectroni"ue et in%ormati"ue. Luti!isation
des microcontr5!eurs ne conna7t de !imite "ue !ingniosit des concepteurs$ on !es trouve
dans nos ca%eti#res$ !es magntoscopes$ !es radios 8..9ne tude mene en !an :;;4 montre
"uen mo0enne$ un %o0er amricain &erge environ :4; microcontr5!eurs.
Page1<:8
PISAK S. Le pic16F84
II PRESENTATION GENERALE DU PIC 16F84
1) C"(ssi)ic(tin 'u PIC 16F84
Le PIC 16F84 est un microcontr5!eur 8 &its. I! dispose donc d+un &us de donnes de uit &its.
Puis"ui! traite des donnes de uit &its$ i! dispose dune mmoire de donne dans !a"ue!!e
ca"ue emp!acement 2d%ini par une adresse3 poss#de uit cases pouvant contenir cacune un
&it.
$) *rc+itecture interne
La structure gnra!e du PIC 16F84 comporte 4 &!ocs comme !e montre !a %igure : ,
-=moire de programme
-=moire de donnes
-Processeur
->essources au'i!iaires 2 pripri"ues 3
%igure :
La mmoire de programme contient !es instructions pi!otant !app!ication )
!a"ue!!e !e microcontr5!eur est ddi. I! sagit dune mmoire non vo!ati!e 2 e!!e
garde son contenu$ m6me en !a&sence de tension 3$ e!!e est de t0pe FLAS? cest )
dire "ue!!e peut 6tre programme et e%%ace par !uti!isateur via un programmateur
et un PC. La tecno!ogie uti!ise permet p!us de 1;;; c0c!es de%%acement et de
programmation. Pour !e PIC 16F84 cette mmoire est dune tai!!e de 1;:4@14 &its$
cest ) dire "ue!!e dispose de 1;:4 emp!acements 2 de ;;; ) AFF 3 contenant
cacun 14 cases car dans !e cas du PIC$ !es instructions sont codes sur 14 &its. Bn
peut donc stoc.er 1;:4 instructions.
La mmoire de donne est spare en deu' parties ,
-une mmoire >A= de 68 octets puis"ue !e &us de donne est de uit &its.
Cette >A= est vo!ati!e 2!es donnes sont perdues ) ca"ue coupure de
courant3. Bn peut 0 !ire et crire des donnes.
-une mmoire ((P>B= de 64 octets dans !a"ue!!e on peut !ire et crire des
donnes 2 de uit &its soit un octet 3 et "ui poss#de !avantage d6tre non
vo!ati!e 2 !es donnes sont conserves m6me en !a&sence de tension 3. La
!ecture et !criture dans cette mmoire de donnes sont &eaucoup p!us !entes
"ue dans !a mmoire de donnes >A=.
Page:<:8
PISAK S. Le pic16F84
Le processeur est %orm de deu' parties ,
-une unit aritmti"ue et !ogi"ue 2 9AL 3 carge de %aire des ca!cu!s.
-un registre de travai! not C sur !e"ue! travai! !9AL.
!es ressources au'i!iaires "ui sont dans !e cas du PIC16F84
-ports dentres et de sorties.
-temporisateur.
-interruptions
-cien de garde
-mode sommei!
Ces ressources seront ana!0ses dans !a suite du cours.
III STRUCTURE INTERNE DU PIC 16F84
1) ,rc+(-e et c(r(ct%ristiques .rinci.("es
Le PIC16F84 est un circuit intgr de 18 &roces 2 %igure A3 ,
%igure A
La!imentation du circuit est assure par !es pattes DEE et DSS. (!!es permettent )
!ensem&!e des composants !ectroni"ues du PIC de %onctionner. Pour ce!a on re!ie
DSS 2patte F3 ) !a masse 2 ; Do!t 3 et DEE 2patte 14 3 ) !a &orne positive de
!a!imentation "ui doit d!ivrer une tension continue comprise entre A et 6 Do!ts.
Le microcontr5!eur est un s0st#me "ui e'cute des instructions !es unes apr#s !es
autres ) une vitesse 2 %r"uence 3 "ui est %i'e par une or!oge interne au circuit. Cette
or!oge doit 6tre sta&i!ise de mani#re e'terne au mo0en dun crista! de "uart*
connect au' pattes BSC1<CLKIG 2patte 163 et BSC:<CLKB9H 2 patte 1F 3 . Gous
reviendrons en dtai! sur !or!oge au paragrape A.
La patte 4 est appe!e =CL>. (!!e permet !ors"ue !a tension app!i"ue est ga!e )
;D de rinitia!iser !e microcontr5!eur. Cest ) dire "ue si un niveau &as 2 ; Do!t 3 est
app!i"u sur =CL> !e microcontr5!eur sarr6te$ p!ace tout ses registres dans un tat
PageA<:8
PISAK S. Le pic16F84
connu et se redirige vers !e d&ut de !a mmoire de programme pour recommencer !e
programme au d&ut 2 adresse dans !a mmoire de programme ,;;;; 3.
Page4<:8
PISAK S. Le pic16F84
A !a mise sous tension$ !a patte =CL> tant ) *ro$ !e programme dmarre donc )
!adresse ;;;;$2 =CL>I=aster C!ear >eset 3.
Les &roces >J; ) >JK et >A; ) >A4 sont !es !ignes dentres<sorties numri"ues.
(!!es sont au nom&re de 1A et peuvent 6tre con%igures en entre ou en sortie. Ce sont
e!!es "ui permettent au microcontr5!eur de dia!oguer avec !e monde e'trieur
2pripri"ues3. Lensem&!e des !ignes >J; ) >JK %orme !e port J et !es !ignes >A; )
>A4 %orment !e port A. Certaines de ces &roces ont aussi dautres %onctions
2interruption$ timer 3.
$) Structure interne
La structure interne du PIC16F84 est donne %igure 4 , 2 structure ?A>DA>E , !a mmoire de
programme et !a mmoire de donnes sont spares contrairement ) !+arcitecture Don
Geuman "ui caractrise d+autres %a&ricants de microcontr5!eurs 3
%igure 4
Bn retrouve sur ce scma !a mmoire de programme$ !a mmoire >A= de donnes$ !a
mmoire ((P>B=$ !es ports A et J$ ainsi "ue !a partie processeur avec !9AL et !e registre
de travai! C 2 Lor. 3. Gous a!!ons tudier ) prsent p!us en dtai! !e %onctionnement du PIC.
PageF<:8
PISAK S. Le pic16F84
/) Princi.e 'e )nctinnement 'u PIC
9n microcontr5!eur e'cute des instructions. Bn d%init M !e c0c!e instruction N comme !e
temps ncessaire ) !e'cution dune instruction. Attention de ne pas con%ondre cette notion
avec !e c0c!e dor!oge "ui correspond au temps ncessaire ) !e'cution dune opration
!mentaire 2 soit un coup d+or!oge 3.
9ne instruction est e'cute en deu' pases ,
!a pase de recerce du code &inaire de !instruction stoc. dans !a mmoire de
programme
!a pase de'cution ou !e code de !instruction est interprt par !e processeur et
e'cut.
Ca"ue pase dure 4 c0c!es dor!oge comme !e montre !a %igure F ,
%igure F
Bn pourrait donc croire "uun c0c!e instruction dure 8 c0c!es dor!oge mais !arcitecture
particu!i#re du PIC !ui permet de rduire ce temps par deu'. (n e%%et$ comme !es instructions
issues de !a mmoire de programme circu!ent sur un &us di%%rent de ce!ui sur !e"ue! circu!ent
!es donnes$ ainsi !e processeur peut e%%ectuer !a pase de recerce dune instruction pendant
"ui! e'cute !instruction prcdente 2 Doir %igure 6 et K 3.
%igure 6
Page6<:8
PISAK S. Le pic16F84
%igure K
4) 0%ru"ement 'un .r-r(mme
Le drou!ement dun programme se%%ectue de %a4on tr#s simp!e. A !a mise sous tension$ !e
processeur va cercer !a premi#re instruction "ui se trouve ) !adresse ;;;; de !a mmoire de
programme$ !e'cute puis va cercer !a deu'i#me instruction ) !adresse ;;;1 et ainsi de
suite 2 sau% cas de saut ou dappe! de sous programme "ue nous a!!ons voir p!us !oin 3. Bn
par!e de %onctionnement s"uentie!. La %igure 8 va nous permettre de mieu' comprendre !e
%onctionnement ,
%igure 8
PageK<:8
PISAK S. Le pic16F84
Bn constate sur cette %igure "ue !a mmoire de programme contient 1;:4
emp!acements 2 AFF en e'adcima!e 3 contenant 14 &its 2 de ; ) 1A 3. 9ne instruction
occupe un emp!acement "ui est d%ini par une adresse. Le processeur peut a!ors
s!ectionner !+emp!acement souait gr1ce au &us dadresse et i! peut !ire son contenu 2
ici !instruction 3 gr1ce ) son &us dinstruction 2 voir %igure K 3. Cet adressage
se%%ectue ) !aide dun compteur ordina! appe! PC "ui !ors de !a mise sous tension
dmarre ) *ro puis sincrmente de 1 tous !es "uatre coups dor!oge$ on e'cute &ien
ainsi !es instructions !es unes ) !a suite des autres.
=ais i! arrive "ue dans un programme on %asse appe! ) un sous programme dont
!adresse de !instruction ne se trouve pas Ouste apr#s ce!!e "ui est en train d6tre
e'cute. Cest !e r5!e de !a pi!e "ui sert ) emmagasiner de mani#re temporaire
!adresse dune instruction. (!!e est automati"uement uti!ise ca"ue %ois "ue !on
appe!!e un sous programme et e!!e permet une %ois "ue !e'cution du sous programme
est termine de retourner dans !e programme principa! Ouste apr#s !endroit oP !on a
appe! !e sous programme. Bn constate "ue cette pi!e poss#de uit niveau'$ ce!a
signi%ie "ui! nest pas possi&!e dim&ri"uer p!us de uit sous programmes$ car au-de!)
de uit$ !e processeur ne sera p!us capa&!e de retourner ) !adresse de &ase du
programme principa!.
Ladresse ;;;; est rserve au vecteur >(S(H$ ce!a signi%ie "ue cest ) cette
position "ue !on acc#de ca"ue %ois "ui! se produit une rinitia!isation 2 ; vo!ts sur !a
patte =CL> 3. Cest pour cette raison "ue !e programme de %onctionnement du
microcontr5!eur doit touOours dmarrer ) cette adresse.
Ladresse ;;;4 est assigne au vecteur dinterruption et %onctionne de mani#re
simi!aire ) ce!!e du vecteur de >eset. Quand une interruption est produite et va!ide$ !e
compteur ordina! PC se carge avec ;;;4 et !instruction stoc.e ) cet emp!acement
est e'cute.
1) L( m%mire 'e 'nn%es R*M
Si !on regarde !a mmoire de donne >A=$ on saper4oit "ue ce!!e-ci est un peu particu!i#re
comme !e montre !a %igure R ,
Bn constate en e%%et "ue cette mmoire est spare en deu' pages 2 page ; et page 1 3. Ee
p!us$ on remar"ue "ue tant pour !a page ; "ue pour !a page 1$ !es premiers octets sont rservs
2 SF> pour Specia! Fi!e >egister 3. Ces emp!acements sont en e%%et uti!iss par !e
microcontr5!eur pour con%igurer !ensem&!e de son %onctionnement. Bn !es appe!!e registres
spci%i"ues et nous verrons au capitre suivant !eurs r5!es.
Le &us dadresse "ui permet dadresser !a >A= est compos de K %i!s ce "ui veut dire "ui! est
capa&!e dadresser 1:8 emp!acements di%%rents. Br$ ca"ue page de !a >A= est compose de
1:8 octets$ !e &us dadresse ne peut donc pas accder au' deu' pages$ cest pour"uoi on
uti!ise une astuce de programmation "ui permet de diriger !e &us dadresse soit sur !a page ;$
soit sur !a page 1. Ce!a est ra!is gr1ce ) un &it dun registre spci%i"ue 2 !e &it >P; du
registre SHAH9S 3 dont nous verrons !e %onctionnement p!us !oin.
La >A= de donnes proprement dite se rduit donc ) !a *one note SP> 2>egistre ) usage
gnra!e 3 "ui stend de !adresse ;C 2 1: en dcima!e 3 Ous"u) 4F 2 KR en dcima!e 3 soit
au tota! 68 registres en page ; et autant en page 1$ mais on constate "ue !es donnes crites en
page 1 sont rediriges en page ; ce!a signi%ie "uau %ina! !uti!isateur dispose uni"uement de
68 registres 2 donc 68 octets de mmoire vive3 dans !es"ue!s i! peut crire et !ire ) vo!ont en
sacant "u) !a mise ors tension$ ces donnes seront perdues.
Page8<:8
PISAK S. Le pic16F84
%igure R
PageR<:8
ST*TUS ST*TUS
PISAK S. Le pic16F84
6) Les re-istres
Gous avons vu au capitre prcdent "ue !a mmoire de donnes >A= contenait des registres
spci%i"ues "ui permettent de con%igurer !e PIC$ nous a!!ons !es dtai!!er un ) un et voir
comment on peut accder ) !a page ; ou !a page 1. A%in de %aci!iter !a comprension$ !es
registres !es p!us uti!iss sont encadrs.
('resse 22 et 82 3IN0F 4 Cette adresse ne contient pas de registre p0si"ue$ e!!e sert
pour !adressage indirect. 2non uti!ise dans !e proOet de cette anne 3
('resse 21 3 TMR2 . Contenu du Himer 28 &its3. I! peut 6tre incrment par
!or!oge 2%osc<43 c+est ) dire tous !es 4 coups d+or!oge ou par !a &roce >A4.
('resse 2$ et 8$ 3 PCL .8 &its de poids %ai&!es du compteur ordina! PC. Les F 21A-
83 &its de poids %orts sont dans PCLAH?.
('resse 2/ et 8/ 3 ST*TUS >egistre dtat .
!es cin" &its de poids %ai&!e de ce registre sont en !ecture seu!e $ ce sont des tmoins
2drapeau' ou %!ag en ang!ais3 caractrisant !e rsu!tat de !opration ra!ise par
!9AL. Le &it >P; est !ui en !ecture <criture et cest !ui "ui permet de s!ectionner !a
page dans !a mmoire >A= .
Si >P;I; on acc#de ) !a page ; et si >P;I1 on acc#de ) !a page 1 .
Au reset$ seu! !e &it >P; de s!ection de page est %i' 2 >P;I; , page ; 3
HB< 2Hime But3 , d&ordement du timer CEH
PE< , 2PoLer EoLn3 caractrise !activit du cien de garde CEH
T 2*ro3 rsu!tat nu! pour une opration aritmti"ue et !ogi"ue.
EC 2digit carr03 retenue sur un "uartet 2 4 &its 3
C 2carr03 retenue sur un octet 2 8 &its 3.
('resse 24 et 84 3 FSR 4 >egistre de s!ection de registre , contient !adresse dun
autre registre 2adressage indirect$ non uti!is dans !e proOet 3
('resse 21 3 PORT* . Ce registre contient !tat des !ignes du port A 2 voir capitre
sur !es ports 3.
('resse 26 3 PORT, . Ce registre contient !tat des !ignes du port J 2 voir capitre
sur !es ports 3.
('resse 28 3 EE0*T* .Contient un octet !u ou ) crire dans !((P>B= de donnes.
('resse 25 3 EE*0R . Contient !adresse de !a donne !ue ou crite dans
!((P>B= de donnes.
('resse 2* et 8*3 PCL*T6 . Doir !adresse ;: PCL.
Page1;<:8
>P; HB< PE< T EC C
PISAK S. Le pic16F84
('resse 2, et 8, 3 INTCON 4
Contr5!e des 4 interruptions
M(sques #
7IE , 2S!o&a! Interrupt (na&!e3 , mas"ue g!o&a! dinter.
EEIE , 2((Prom Interrupt (na&!e3 autorise !+interruption venant de !+((P>B=.
T2IE , 2Himer ; Interrupt (na&!e3 autorise !+interruption provo"ue par !e
d&ordement du HI=(>;
INTE, 2 Interrupt (na&!e3 autorise !interruption provo"ue par un cangement d+tat
sur &roce >J;<IGH
R,IE, 2>J Interrupt (na&!e3 autorise !es interruptions provo"ues par un cangement
d+tats sur !+une des &roces >J4 ) >JK.
Si ces &its sont mis ) 1 $ i!s autorisent !es interruptions pour !es"ue!s i!s sont ddis .
0r(.e(u8 #
T2IF , 2Himer ; Interrupt F!ag3 d&ordement du timer
INTF 2 Interrupt F!ag3 interruption provo"ue par !a &roce >J;<IGH
R,IF 2 >J Interrupt F!ag3 interruption provo"ue par !es &roces >J4->JK.
('resse 81 3 OPTION
8 &its 2tous ) 1 au >(S(H3 a%%ectant !e comportement des (<S et des timers.
R,PU9 2>J Pu!! 9p3 >sistances de tirage ) Ddd des entres du port J 2 voir !e dtai!
du %onctionnement au capitre port 3.Si >JP9<I; !es rsistances de pu!!-up sont
connectes en interne sur !+ensem&!e du port J.
INTE07 2Interrupt (dge3 s!ection du %ront acti% de !interruption sur >J;<IGH 2 1
pour %ront montant et ; pour %ront descendant 3.
RTS 2>ea! Himer Source3 s!ection du signa! a!imentant !e timer ; , ; pour or!oge
interne$ 1 pour >A4<H;CLK
RTE 2>ea! Himer (dge3 s!ection du %ront acti% du signa! timer 2 ; pour %ront
montant3.
PS* 2Presca!er assignment3 ; pour Himer ; et 1 pour cien de garde CEH.
PS$442 2Presca!er :1; 3 s!ection de !a va!eur du diviseur de %r"uence pour !es timers.
('resse 81 3 TRIS* . Eirection des donnes pour !e port A , ; pour sortir et 1 pour
entrer 2 voir capitre sur !es ports 3.
('resse 86 3 TRIS, . Eirection des donnes pour !e port J , ; pour sortir et 1 pour
entrer 2 voir capitre sur !es ports 3.
Page11<:8
SI( ((I( H;I( IGH( >JI( H;IF IGHF >JIF
>JP9< IGH(ES >HS >H( PSA PS: PS1 PS;
PISAK S. Le pic16F84
('resse 88 3 EECON1 Contr5!e !e comportement de !((P>B= de donnes.
EEIF 2((Prom Interrupt F!ag3 passe ) 1 "uand !criture est termine.
:RERR 2Crite (rror3 1 si erreur dcriture.
:REN 2Crite (na&!e3 , ; pour interdire !criture en ((P>B= de donnes.
:R 2Crite3 1 pour crire une donne. Jit remis automati"uement ) ;
R0 2>ead3 , 1 pour !ire une donne. Jit remis automati"uement ) ;
('resse 85 3 EECON$ . >egistre de scurit dcriture en ((P>B= de donnes.
9ne donne ne peut 6tre crite "uapr#s avoir crit successivement ;'FF et ;'AA dans
ce registre.
;) Les .rts 'entr%es9srties
Le PIC16F84 est "uip de 1A !ignes dentres<sorties rparties en deu' ports ,
-!e port A , >A; ) >A4
-!e port J , >J; ) >JK
Ca"ue !igne peut 6tre con%igure soit en entre$ soit en sortie$ et ceci indpendamment !une
de !autre. Pour ce!a on uti!ise !es registres H>ISA et H>ISJ . Le &it de poids %ai&!e 2 &; 3 du
registre H>ISA correspond ) !a !igne >A;$ !e &it &1 de H>ISA correspond ) >A1 et ainsi de
suite. I! en est de m6me pour !e port J et !e registre H>ISJ 2 &; de H>ISJ correspond ) >J;
&K correspond ) >JK 3. Si !on veut p!acer une !igne en sortie i! su%%it de mettre !e &it
correspond dans H>ISA ou H>ISJ ) ; 2retene* ; comme ButputIsortie 3 . Si !on veut p!acer
une !igne en entre$ i! su%%it de p!acer !e &it correspondant dans H>ISA ou H>ISJ ) 1 2retene*
1 comme InputIentre 3 .
Les &its des deu' registres PB>HA et PB>HJ permettent soit de !ire !tat dune !igne si ce!!e-
ci est en entre$ soit de d%inir !e niveau !ogi"ue dune !igne si ce!!e-ci est en sortie.
Lors dun >(S(H$ toutes !es !ignes sont con%igures en entres.
particu!arit du portA , !es &its &K ) &F des registres H>ISA et PB>HA ne
correspondent ) rien car i! n0 a "ue F !ignes 2 &; ) &4 3 . R*4 est une "i-ne <
c""ecteur u=ert$ ce!a veut dire "ue con%igure en sortie cette &roce assure ;Do!t )
!tat &as$ mais "u) !tat aut$ i! est ncessaire de %i'er !a va!eur de !a tension gr1ce )
une rsistance de tirage 2pu!! up en ang!ais3
particu!arit du portJ ,i! est possi&!e de connecter de %a4on interne sur ca"ue !igne
une rsistance de tirage 2 pu!! up 3 dont !e r5!e consiste ) %i'er !a tension de !a patte
2con%igur en entre 3 ) un niveau aut !ors"ue "uaucun signa! nest app!i"u sur !a
patte en "uestion. Pour connecter ces rsistances$ i! su%%it de p!acer !e &it >JP9< du
registre BPHIBG ) ; .
Page1:<:8
EEIF :RERR :REN :R R0
PISAK S. Le pic16F84
8) Le Timer
Eans !a maOeure partie des app!ications$ i! est ncessaire de contr5!er !e tempsU a%in de ne pas
occuper !e microcontr5!eur "u+) cette t1ce 2 &ouc!e de comptage "ui monopo!ise !e micro 3$
on !e dcarge en uti!isant un timer. Le pic 16F84 dispose de deu' timers$ un ) usage gnra! 2
!e H=>; 3 et un autre uti!is pour !e cien de garde 2 Latc dog CES 3.
Le H=>; est un compteur ascendant 2"ui compte3 de 8 &its "ui peur 6tre carg avec une
va!eur initia!e "ue!con"ue. I! est ensuite incrment ) ca"ue coup d+or!oge Ous"u+) ce "ue !e
d&ordement ait !ieu 2 passage de FF ) ;; 3U Le principe est reprsent %igure 1; ,
%igure 1;
Le H=>; peut remp!ir deu' %onctions,
-Hemporisateur ou contr5!e du temps. Son entre d+incrmentation est a!ors
!+or!oge "ui correspond au c0c!e instruction 2 Fosc<43. I! est possi&!e d+uti!iser
un pr-diviseur de %r"uence "ue nous verrons p!us !oin.
-Compteur d+vnements. Eans ce cas !es d+impu!sions d+entres du timer sont
%ournies par !a patte >A4<HBCK1
!e coi' s+e%%ectue gr1ce au &it >HS du registre BPHIBG.
Le pic 16F84 dispose d+un diviseur de %r"uence "ui peut 6tre assign soit au cien de garde$
soit au H=>; 2 uni"uement un ) !a %ois 3. L+assignation du pr diviseur se %ait gr1ce au &it
PSA du registre BPHIBG. La structure interne du H=>; est donc !a suivante 2 %igure 11 3,
%igure 11
Page1A<:8
du registre
intcon
i! se produit un retard de
deu' c0c!es avant "ue !e
timer ne commence )
compter apr#s un
cargement
>HS >H(
PISAK S. Le pic16F84
Suivant "ue !e pr-diviseur est assign au cien de garde ou au H=>;$ !a va!eur de !a pr-
division n+est pas !a m6me$ i! %aut donc 6tre vigi!ant !ors de !a programmation comme !e
montre !a %igure 1: ,
%igure 1:
(n%in$ vu "ue !e timer ne peut "ue compter$ ce!a o&!ige ) une petite g0mnasti"ue !ors de
!+introduction de !a va!eur de pr cargement ,
e8em."e #
Bn veut "ue !e timer nous indi"ue par !a mise ) un du drapeau H;IF !+cou!ement d+une dure
de :;ms 2 !a %r"uence d+or!oge tant de 4=?* 3 d+oP Fsc94>1?s
si on coisit une pr division de :F6 $ on aura donc $2222 ?s 9 $16 >;8
I! ne %aut pas carger !e H=>; avec K8 mais avec !e comp!ment ) deu' de cette va!eur 2 car
!e timer compte et ne dcompte pas 3 d+oP $16@;8>1;8
soit en e'adcima!e !a va!eur ,$+ ) carger dans !e registre H=>;.
Page14<:8
RP,U9
INTE07
RTS
RTE
RTS RTE
PISAK S. Le pic16F84
5) Mise en eu=re
Luti!isation et !a mise en /uvre tr#s simp!e des PICs !es a rendus e'tr6mement popu!aire au
point "ue !a socit "ui !es %a&ri"ue 2 =IC>BC?IP 3 est en passe de devenir !e !eader mondia!
dans !e domaine des microcontr5!eurs devant =BHB>BLA et IGH(L.
I! su%%it da!imenter !e circuit par ses deu' &roces DEE et DSS$ de %i'er sa vitesse de
%onctionnement ) !aide dun "uart* 2 %igure1A3 et d!a&orer un petit s0st#me pour permettre
de rinitia!iser !e microcontr5!eur sans avoir ) couper !a!imentation 2 %igure 14 3.
%igure 1A
%igure 14
I! su%%it ensuite dcrire !e programme en !angage assem&!eur ou en C sur un ordinateur gr1ce
au !ogicie! =PLAJ de =IC>BC?IP 2 !ogicie! gratuit 3 puis de !e compi!er pour !e
trans%ormer en !angage macine et !e trans%rer dans !e PIC gr1ce ) un programmateur. Lors
de !a mise sous tension$ tous !es registres spci%i"ues sont p!acs dans un tat dtermin
comme !e montre !a %igure 1F
Page1F<:8
PISAK S. Le pic16F84
uIuncanged U 'Iun.noLn U -Iunimp!emented 2 read as ; 3 U "Iva!ue depends on condition
%igure 1F
I! ne nous reste p!us "u) voir !e Oeu dinstruction de programmation en assem&!eur du PIC et
cest !) "ue rside tout !intr6t puis"ui! ne dispose "ue de AF instructions "ui !ui permettent
de ra!iser toutes !es t1ces.
Page16<:8
PISAK S. Le pic16F84
IV JEU DINSTRUCTIONS
A%in de comprendre !a %onction de ca"ue instruction$ !a notation adopte pour !es donnes et
adresses manipu!es par !es instructions est %ort simp!e et est !a suivante ,
-% reprsente un registre
-& reprsente un numro de &it en sacant "ue ; correspond touOours au &it de poids
%ai&!e 2 !e p!us ) droite dans !e registre 3
-. reprsente une donne aussi appe! !ittra!
9n certain nom&re dinstructions 2 AEECF $ AGECF $ etc.. 3 uti!ise une notation spcia!e
prsente sous !a %orme ,
AEECF %$d BP % indi"ue !e registre et oP d peut prendre deu' va!eurs 2; ou
13$ ce "ui cange !e comportement de !instruction . Si d est ) ;$
!e rsu!tat est p!ac dans !e registre de travai! C$ !a va!eur dans
!e registre % est a!ors incange$ a!ors "ue si d est ) 1$ !e rsu!tat
est p!ac dans !e registre %.
9n autre t0pe dinstruction mrite "ue!"ues c!aircissements$ ce sont !es instructions de
&rancement conditionne!. Prenons comme e'emp!e ,
JHFSC %$& Qui va vou!oir dire 2 Jit Hest Fi!e S.ip i% C!ear 3 "ui signi%ie
"ue !on va tester !e &it & du registre % 2 & peut prendre une
va!eur de ; ) K pour un registre 8 &its 3 .I! peut a!ors 0 avoir
deu' so!utions ,
-Soit !e &it test est ) 1$ donc !a condition teste nest pas
ra!ise$ !e programme continue a!ors son drou!ement
norma!ement en s"uence avec !instruction Ouste en
dessous.
-Soit !e &it test vaut ;$ donc !a condition teste est
ra!ise et !e programme saute !instruction "ui suit !e
JHFSC dans !e programme.
Cette %a4on de programmer peut para7tre trange$ mais avec de !a&itude$ e!!e sav#re tr#s
prati"ue et permet de ra!iser des programmes compacts et per%ormants.
Les AF instructions sont donc !es suivantes ,
*00L: A *'' Liter(" t : )
s0nta'e , AEELC .
Bpration , CV.C
Jits dtat du registre SHAH9S a%%ects , C$EC$T
on aOoute au registre de travai! !a va!eur . et on p!ace !e rsu!tat dans !e registre de travai! C
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page1K<:8
PISAK S. Le pic16F84
*00:F A*'' : t F )
s0nta'e , AEECF %$d
Bpration , CV%% si dI1 ou CV%C si dI;
Jits dtat du registre SHAH9S a%%ects , C$EC$T
on aOoute !e contenu de C et !e contenu de % et on p!ace !e rsu!tat dans % si dI1 ou dans C si
dI;
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
*N0L: A *n' Liter(" (n' : )
s0nta'e , AGELC .
Bpration , C (H .C
Jit dtat du registre SHAH9S a%%ect , T
on e%%ectue un (H !ogi"ue entre !e contenu de C et !e !ittra! . $ on p!ace !e rsu!tat dans C
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
*N0:F A *n' : Bit+ F )
s0nta'e , AGECF %$d
Bpration , C (H %% si dI1 ou C (H %C si dI;
Jit dtat du registre SHAH9S a%%ect ,T
on e%%ectue un (H !ogi"ue entre !e contenu de C et !e contenu de % $ on p!ace !e rsu!tat dans
C si dI; ou dans % si dI1
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
,CF A ,it C"e(r F )
s0nta'e , JCF %$&
Bpration , ;&2%3
Jits dtat du registre SHAH9S a%%ects ,aucuns
on met ) ; !e &it & du registre %
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page18<:8
PISAK S. Le pic16F84
,SF A ,it Set F )
s0nta'e , JSF %$&
Bpration , 1&2%3
Jits dtat du registre SHAH9S a%%ects ,aucuns
on met ) 1 !e &it & du registre %
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
,TFSC A ,it Test 3 SCi. i) C"e(r )
s0nta'e , JHFSC %$&
Bpration , saut de !instruction "ui suit si &2%3I;
Jits dtat du registre SHAH9S a%%ects ,aucuns
Si !e &it & de % est nu!$ !instruction "ui suit ce!!e-ci est ignore et traite comme un GBP.
Eans ce cas et dans ce cas seu!ement$ !instruction JHFSC demande deu' c0c!es pour
se'cuter.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3 ou : c0c!es
,TFSS A ,it Test 3 SCi. i) Set )
s0nta'e , JHFSS %$&
Bpration , saut de !instruction "ui suit si &2%3I1
Jits dtat du registre SHAH9S a%%ects ,aucuns
Si !e &it & de % est ) 1$ !instruction "ui suit ce!!e-ci est ignore et traite comme un GBP. Eans
ce cas et dans ce cas seu!ement$ !instruction JHFSS demande deu' c0c!es pour se'cuter.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3 ou : c0c!es
C*LL AsuDrutine C("")
s0nta'e , CALL !a&e!
Jits dtat du registre SHAH9S a%%ects ,aucuns
Bn sauvegarde !adresse de retour dans !a pi!e puis on appe!!e !e sous programme d%init avec
!ti"uette !a&e!
dure , : c0c!es instruction 2 8 c0c!es dor!oge 3
Page1R<:8
PISAK S. Le pic16F84
CLRF A C"e(r F )
s0nta'e , CL>F %
Bpration , ;F
Jit dtat du registre SHAH9S a%%ect ,T
Bn met !e contenu du registre % ) ; et on positionne T
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
CLR: A C"e(r : )
s0nta'e , CL>C
Bpration , ;C
Jit dtat du registre SHAH9S a%%ect ,T
Bn met !e contenu du registre C ) ; et on positionne T
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
CLR:0T A C"e(r :(tc+0- Timer )
s0nta'e , CL>CEH
Bpration , ;CEH et ;pr diviseur du Himer
Bn met !e contenu du registre du timer cien de garde ) ; ainsi "ue !e pr diviseur
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
COMF A Cm."ement F )
s0nta'e , CB=F %$d
opration , <%% si dI1 ou <%C si dI;
Jit dtat du registre SHAH9S a%%ect ,T
Bn comp!mente !e contenu du registre % &it ) &it $ !e rsu!tat est p!ac dans % si dI1 $ dans C
si dI; .
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page:;<:8
PISAK S. Le pic16F84
0ECF A 0ecrement F )
s0nta'e , E(CF %$d
opration , %-1% si dI1 ou %-1C si dI;
Jit dtat du registre SHAH9S a%%ect ,T
Bn diminue !e contenu du registre % dune unit$ !e rsu!tat est p!ac dans % si dI1$ dans C si
dI; 2 dans ce cas % reste incang 3.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
0ECFSE A 0ecrement F 3SCi. i) Eer )
s0nta'e , E(CFST %$d
opration , %-1% si dI1 ou %-1C si dI; et saut si %-1I;
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn diminue !e contenu du registre % dune unit$ !e rsu!tat est p!ac dans % si dI1$ dans C si
dI; 2dans ce cas % reste incang3.Si !e rsu!tat est nu!$ !instruction suivante est ignore et
dans ce cas$ cette instruction dure deu' c0c!es.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3 ou : c0c!es
7OTO A Dr(nc+ement incn'itinne" )
s0nta'e , SBHB !a&e!
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn e%%ectue un saut dans !e programme pour a!!er ) !adresse point par !e !a&e! prcis dans
SBHB
Eure , : c0c!es 2 8 c0c!es dor!oge 3
INCF AIncrement F)
s0nta'e , IGCF %$d
opration , %V1% si dI1 ou %V1C si dI;
Jit dtat du registre SHAH9S a%%ect ,T
Bn augment !e contenu du registre % dune unit$ !e rsu!tat est p!ac dans % si dI1 $ dans C si
dI; 2 dans ce cas % reste incang 3.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page:1<:8
PISAK S. Le pic16F84
INCFSE A Increment F 3 SCi. i) Eer )
s0nta'e , IGCFST %$d
opration , %V1% si dI1 ou %V1C si dI; et saut si %-1I;
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn augmente !e contenu du registre % dune unit$ !e rsu!tat est p!ac dans % si dI1$ dans C si
dI; 2dans ce cas % reste incang3.Si !e rsu!tat est nu!$ !instruction suivante est ignore et
dans ce cas$ cette instruction dure deu' c0c!es.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3 ou : c0c!es
IORL: A Inc"usi=e Or Liter(" Bit+ : )
s0nta'e, IB>LC .
opration, C B9 . C
Jit dtat du registre SHAH9S a%%ect ,T
Bn e%%ectue un B9 !ogi"ue entre !e contenu de C et !e !ittra! . $ !e rsu!tat est p!ac dans C .
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
IOR:F A Inc"usi=e Or : Bit+ F )
s0nta'e , IB>CF %$d
opration , C B9 %% si dI1 ou C B9 %C si dI;
Jit dtat du registre SHAH9S a%%ect ,T
Bn e%%ectue un B9 entre !e contenu de C et !e contenu de % $ on p!ace !e rsu!tat dans % si dI1$
dans C si dI;
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
MOFF A M=e F )
s0nta'e , =BDF %$d
opration , %% si dI1 ou %C si dI;
Jit dtat du registre SHAH9S a%%ect ,T
Bn dp!ace !e contenu de % dans % si dI1 ou de % dans C si dI;. Attention$ !e dp!acement de %
dans % sem&!e ) priori inuti!e$ mais i! permet en %ait de tester !e contenu de % par rapport ) ; et
de positionner !e &it T
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page::<:8
PISAK S. Le pic16F84
MOFL: A M=e Liter(" t : )
s0nta'e , =BDLC .
opration , .C
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn carge !e contenu de C avec !e !ittra! .
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
MOF:F A M=e : t F )
s0nta'e , =BDCF %
opration , C%
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn carge !e contenu de % avec !e contenu de C
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
NOP A N O.er(tin )
s0nta'e, GBP
opration, nant
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn ne %ait "ue consommer du temps macine 2 un c0c!e dans ce cas 3
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
RETFIE A Return Frm Interru.t )
s0nta'e , >(HFI(
opration , Pi!e PC
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn carge !e compteur ordina! avec !a va!eur "ui se trouve au sommet de !a pi!e pour revenir
au programme principa! !ors"ue !e'cution du sous programme est termine.
dure , : c0c!es instruction 2 8 c0c!es dor!oge 3
Page:A<:8
PISAK S. Le pic16F84
RETL: A Return Liter(" t : )
s0nta'e , >(HLC .
opration , .C $ Pi!ePC
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn carge !e contenu de C avec !e !ittra! . puis on carge !e compteur ordina! PC avec !a
va!eur "ui se trouve au sommet de !a pi!e e%%ectuent ainsi un retour de sous programme .
dure , : c0c!es instruction 2 8 c0c!es dor!oge 3
RETURN A Return )rm suDrutine )
s0nta'e , >(H9>G
opration , Pi!ePC
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn carge !e compteur ordina! PC avec !a va!eur "ui se trouve au sommet de !a pi!e e%%ectuent
ainsi un retour de sous programme. Cest un >(HLC simp!i%i .
dure , : c0c!es instruction 2 8 c0c!es dor!oge 3
RLF A Rt(te Le)t F t+ru-+ c(rrG )
s0nta'e , >LF %$d
opration ,
Jit dtat du registre SHAH9S a%%ect ,C
Bn e%%ectue une rotation ) gauce de un &it du contenu du registre % en passant par !e &it de
retenu C . Si dI1 !e rsu!tat est p!ac dans % $ si dI; $ !e rsu!tat est p!ac dans C
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page:4<:8
; 1 : A 4 F 6 K
C
>egistre %
PISAK S. Le pic16F84
RRF A Rt(te Ri-+t F t+ru-+ c(rrG )
s0nta'e , >>F %$d
opration ,
Jit dtat du registre SHAH9S a%%ect ,C
Bn e%%ectue une rotation ) droite de un &it du contenu du registre % en passant par !e &it de
retenu C. Si dI1 !e rsu!tat est p!ac dans % $ si dI;$ !e rsu!tat est p!ac dans C
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
SLEEP A S"ee. )
s0nta'e , SL((P
opration , ;PE$ 1H;$ ;CEH $ ; pr diviseur
Bn p!ace !e circuit en mode sommei! avec arr6t de !osci!!ateur. Cette commande est ) uti!iser
avec prcaution$ e!!e ncessite !a connaissance du mode sommei!.
SU,L: A SuDstr(ct : )rm Liter(" )
s0nta'e , S9JLC .
opration , .-CC
Jits dtat du registre SHAH9S a%%ects ,C$EC$T
Bn soustrait !e contenu du registre C du !ittra! . et on p!ace !e rsu!tat dans C 2 soustraction
par !a mtode du comp!ment ) : 3.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
SU,:F A SuDstr(ct : )rm F )
s0nta'e , S9JCF %$d
opration , %-CC si dI; ou %-C% si dI1
Jits dtat du registre SHAH9S a%%ects ,C$EC$T
Bn soustrait !e contenu du registre C du contenu du registre % et on p!ace !e rsu!tat dans C si
dI;$ ou dans % si dI1 2 soustraction par !a mtode du comp!ment ) : 3.
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page:F<:8
; 1 : A 4 F 6 K
C
>egistre %
PISAK S. Le pic16F84
S:*PF A SB(. F )
s0nta'e , SCAPF %$d
opration , %2;-A3%24-K3 et %24-K3%2;-A3 rsu!tat dans C ou % se!on d
Jit dtat du registre SHAH9S a%%ect ,aucun
Bn cange !es "uatre &its de poids %orts avec !es "uatre &its de poids %ai&!es et on p!ace !e
rsu!tat dans C si dI; $ ou dans % si dI1
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
HORL: A E8c"usi=e Or Liter(" Bit+ : )
s0nta'e , WB>LC .
opration , C B9 (WCL9SIF .C
Jit dtat du registre SHAH9S a%%ect ,T
Bn e%%ectue un B9 ('c!usi% entre C et !e !ittra! .$ !e rsu!tat est p!ac dans C
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
HOR:F A E8c"usi=e Or : Bit+ F)
s0nta'e , WB>CF %$d
opration , C B9 (WCL9SIF %C si dI; ou C B9 (WCL9SIF %% si dI1
Jit dtat du registre SHAH9S a%%ect ,T
Bn e%%ectue un B9 ('c!usi% entre C et !e contenu de % $ !e rsu!tat est p!ac dans C si dI;$
sinon i! est p!ac dans % .
dure , 1 c0c!e instruction 2 4 c0c!es dor!oge 3
Page:6<:8
PISAK S. Le pic16F84
IEU 0JINSTRUCTION
Page:K<:8
PISAK S. Le pic16F84
V Petite applicati! "#e$ti!%e a&' p()e$$e&($*
A%in de mettre en prati"ue des notions encore toutes %ra7ces$ i! peut 6tre intressant de
c!5turer ce cours par une sance de travau' dirigs. Commen4ons par !e commencement avec
un petit e'emp!e "ui n+a d+autre intr6t "ue d+apprender de %a4on simp!e un premier
programme crit en assem&!eur.
Doici donc un e'emp!e de programme dont !a seu!e %onction et de recopier sur !a patte
>A; 2donc programme en sortie3 !+tat de !a patte >J; 2 donc programme en
entre3. Sur ce petit e'emp!e$ on peut a!ors a&order !es notions d+a!goritme et de
structure de programmation avec !es instructions spci%i"ue au' !ogicie!s de
compi!ation 2org$ e"u$ end $ !es ti"uettes$ etc83.
Ud%inition des di%%rentes ti"uettes
Upour une structure de programme p!us c!aire
Ue"u n+est pas une instruction PIC mais sert
Uau compi!ateur
st(tus equ +J222/J Uadresse du registre 2page ;3
.rt( equ +J2221J Uadresse porta 2page;3
.rtD equ +J2226J Uadresse port & 2page ;3
tris( equ +J2281J Uadresse trisa 2page 13
trisD equ +J2286J Uadresse tris& 2page 13
R*2 equ +J2222J Urang du &it >A; dans porta
R,2 equ +J2222J Urang du &it >J; dans port&
RP2 equ +J2221J Urang du &it >P; dans status
Ud&ut du programme indi"u par !+instruction
Uorg "ui est ncessaire au compi!ateur
r- 2222 Ud&ut du programme
Uncessairement ) !+adresse
U;;;; pour tous !es PICs
Uinitia!isation de >A; en sortie
Ds) st(tus3RP2 Upassage en page 1 de
U!a mmoire de donnes
Dc) tris(3R*2 Umise ) ; de >A; 2sortie3
Uinitia!isation de >J; en entre
Ds) trisD3R,2 Umise ) 1 de >J; 2entre3
$mais inuti!e en prati"ue
Ucar ra!is apr#s un >(S(H
Uprogramme principa!
Utest de >J; et recopie en >A;
Duc Dc) st(tus3RP2 Uretour en page ;
Dt)ss .rtD3R,2 Utest >J; saute !+instruction si >J;I1
-t etein' Uva ) !+ti"uette eteint
-t (""um Uva ) !+ti"uette a!!um
Umise ) ; de >A;
eteint Dc) .rt(3R*2 Umise ) ; de >A;
-t Duc Uretour ) !a &ouc!e de test
Umise ) 1 de >A;
(""um Ds) .rt(3R*2 Umise ) 1 de >A;
-t Duc Uretour ) !a &ouc!e de test
U%in du programme
Uuti!is par !e compi!ateur
en'
Page:8<:8
d&ut
initia!isation de >A; en sortie
initia!isation du portJ en entre
>J;I;X
non
oui
>A;I; >A;I1
A!goritme du programme