Formation sur la programmation du PIC16F84A .pdf
À propos / Télécharger Aperçu
Nom original: Formation sur la programmation du PIC16F84A.pdf
Ce document au format PDF 1.6 a été envoyé sur fichier-pdf.fr le 22/11/2014 à 02:29, depuis l'adresse IP 105.190.x.x.
La présente page de téléchargement du fichier a été vue 979 fois.
Taille du document: 789 Ko (24 pages).
Confidentialité: fichier public
Aperçu du document
m
T E C H N IQ U E
COLE TECHMOUE
Agr&e par I’Elat
INITIATION A LA PROG
DES MICROCONTROLEURS
©
M
ic r o c h ip
P I C 16F 84a
U1
o«c\»:icn
oxscuw
UEOI
vc
U*1
RC'
«->
MW
wIIit
m
H
8e» ±
HI!.
>aa
m
PROTEUS
T.i>«*<r N.
www.E-cours.com
fchiborc et Enseiane p a r :
M moi - i o i ' D i k— —
<(
1 ne 5
aPPren<* sans 'e concours de / emotion »
Lntissem cnt A m evoud, Rue dca frcrcs Bcggaz, Tizi-O uxou
T e l/F a x : 026 21 23 35 / Mob: 0550 23 03 03 / site web: w w w .ecolc-tcchniquc.com
m
www.E-cours.com
Initiation a la n r o » r a m m a t i o n des M i c r o c o n t r o l e u r | P I C 16F84a
1)- L e s s y s te m e s d e n u m e r a tio n :
a - 1 )- L e s v s te m e d e c im a l :
D ecim al, pourquoi ? Parce q u 'il utilise une num eration a 10 ch iffres. N ous dirons
que c 'e s t u n system e en BA SE 10. Pour la petite histoire. on a utilise u n systfcme base
10 car nos ancetres ont com m ence a co m p ter sur leurs 10 doigts.
M ais la position dcs chi fires a egalem ent une grande im portance.. En effet, dans le
nom bre 432, le 4 a une plus grande im portance que le 2. En rdalitd, chaque chiffre. que
Ton peut appeler D IG IT , a une valeur qui depend de son R A N G . Q uel est le
m ultiplicateur a appliquer a un chiffre en fonction de sa position (rang) ? II s'a g it tout
sim plem ent de P61evation de la B A SE utilisec a la puissancc de son R A N G .
Ie com ptage du rang s ’effectue tou jo u rs de droite a gauche et en commen<;ant par 0.
Pour notre nom bre 432, sa valeur est done en r£alite :
432 = 2*10° + 3*10 + 4 * 1 0 \ ( * est utilise pour indiquer « m ultiplie ». Et rappelezvous que 10° = (10/10) = I , que 10 1= 10. et que 102 = 10* 10 = 100 etc.
a -2 )- L e s v s te m e b in a ir e :
C e system e ne com porte done que 2 ch iffres. h savoir 0 et 1. Les prem iers
ordinateurs (et les PIC ® ) travaillent avec des nom bres de 8 chiffres binaires, on a done
appele ces nom bres des octets (ou bytes en anglais). Le chiffre 0 ou 1 est appele un
B IT (unit£ binaire, ou B inary u n iT ) .
T out nom bre d e cim al est ecrit tel quel, ou en utilisant la notation D ’x x x ’ ; lout
nom bre b in a ire esi ecrit suivant la form e B’x x x xxxxx’ dans lesquels les V valent ? ...
0 ou 1.
A nalysons m aintenant un nom bre binaire, soit Poctet : B ' 10010101*. Q uelle est
done sa valeur en decim al ?
Et bicn, c ’est tres sim ple, on applique le m cm c algorithm e que po u r le decim al.
Partons de la droite vers la gauche, on trouve done :
B ’ lO O lO lO l’ = 1*2° + 0*21 + I *22 + 0*23 + 1* 24 + 0*25 + 0 * 2 6 + 1*27
C om m e. cvidem rncnt 0 m ultiplie p ar quelque chose = 0 et que 1 m ultiplie par un
chiffre = le chiffre en question, on peut ram ener le calcul precedent a :
B M O O I O l O r - 1+4+ 16+ 1 2 8 = 149.
a -3 )- L e s v s te m e h e x a d e c i m a l :
Pour trouvcr une solution plus pratique pour representor les nom bres binaires. On a
done decide de couper chaque octet en 2 (Q U A R T E T ) et de representer chaque partie
par un chiffre.
C om m e un q u a r te t peut v arier de b'0000" a b ’l l l l 1, on constate que Pon obticnt
une valeur com prise entre 0 et 15. C ela fail 16 com binaisons. L es 10 chiffres du
system e decim al ne suffisaient done pas pour coder ces valeurs.
Plut6t que d ’inventer 6 nouvcaux sym boles, il a etc decide d 'u liliser les 6 prem ieres
lettres de P alphabet com m e C H IFFR E S. Ce system e de num eration en b ase 16 a done
ete logiquem ent appele system e h e x ad ecim al
N otez que ce system e est sim plem ent une representation plus efficace des nom bres
binaires. D ans la suite de ces lemons, nous noterons un nom bre hexadecim al en le
faisant preccder de Ox.
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 1
www.E-cours.com
Initiation a la p ro g ra m m a tio n dcs M ic ro c o n t ro lc u r | P I C 16F84a
Tableau dc conversion des ditTcrcms quartets (un dem i octet)
B in a ire
B ’0 0 0 0 ’
iv o o o r
iro o io B ’o o i r
IV 0100’
B ’o i o r
B ’0 1 10’
B ’o i i r
B ’ lOOO’
B ’lo o r
B ’ 1010’
B M O ll’
B ’ 1100’
B ’l i o r
B ’ 1110’
B ’l i i r
H ex ad ecim al
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
0x8
0x9
OxA
OxB
OxC
OxD
OxE
OxF
D ecim al
0
1
7Am
3
4
5
6
7
8
9
10
11
12
13
14
15
Pour representor un octet il taut done 2 digits hexadecim aux. Par exem ple, notre
nom bre B ’10010101* est repr£sent£ en h ex ad ecim al p ar 0x95. Si v ous faites la
conversion de 1’hexadecim al vers le decim al, vous utilise/, le m em e principe que
precedem m ent, et vous obtenez 0x95 = 9* 161 + 5*16° = 149.
Pour preuve. quel est le plus grand nom bre hexadecim al de 2 digits pouvant etrc
represents ? R eponse : OxFF, soil 15*16 + 15 - 255.
b - l ) L a fo n e tio n « E T » oil « A N D » :
A ppelee egalem ent m ultiplication bit a bit. ou « AND ». et souvent notee « *& ».
Elle consiste a appliquer un m ot su r un autre m ot et & m ultiplier chaque bit par le
bit de m em e rang. Pour faire une operation « ET », il laut done toujours 2 octets.
Prem idre ligne : 0 A N D 0 = 0. C e type de tableau s'appelle « table de verite »
O n voit done que la seule possibility pour obtenir un « I »
Bitl
Bit2 AND
est que le B itl ET le Bit2 soient a « 1 ». C eci correspond a une
0
0
0
m ultiplication. 1*1 = 1,0*1 = 0 , 1*0 = 0.
0
0
1
L xem ple ;
1
0
0
Soit B T 1001100’ A N D B ‘ 11110000' donne B T 1000000’
1
1
1
A quoi sert cette instruction ? F.t bien, elle est utilisee pour
M A S Q U E R des bits qui ne nous interessent pas.
Prencz P exem ple ci-dessus : Le 2em e octet contient 4 b its a 1 et 4 b its a 0. R egardez le
resultat obtenu : Les 4 prem iers bits de Poctet I sont conserves (1100), n Pem placem ent des 4
autrcs nous trouvons des 0.
O n p eu t d o n e a I’a id e de cette in s tru c tio n p o s itio n n e r un ou p lu sic u rs bits d a n s un m o t a 0
sa n s c o n n a itre son c o n ten d p re c e d e n t.
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 2
www.E-cours.com
Initiation a la n r o g r a n i n i a t i o n des M i c r o c o n t r o l e u r | P I C !6FS4a
b-2) La fonction « O U » on « O R » :
E ncore appelee O R . souvent notee « | » elle perm et, com m e son nom rin d iq u e , de
posiuonner un bit a 1 si le B itl OU le Bit2 est a 1.
La table de verite suivante explique le fonctionnem ent de cette fonction :
Bitl
0
0
1
1
Bit2
0
1
0
1
OR
0
1
1
1
E x em p le :
B ’ 10001000’ O R B ’ 11000000’ donne B’ 11001000’
Dans cet exem ple. les 2 prem iers bits ont ete forces au niveau 1. independam m ent
de leur niveau precedent.
A quoi scrt cette instruction ? Et bien. tout sim plem ent elle p e rm e t d e fo rc e r
n 'im p o rte quel b it d ’un m ot & 1 sa n s c o n n a itre son c o n te n u p re c e d e n t.
b -3 ) L a fo n c tio n « O U E X C L U S I F » o n « E x c ln s if O R » o n « X O R » ;
V o id la dcm icrc fonction que nous allons aborder dans cette m ise a niveau. Elle est
souvent appelee X O R (eX eln sif O R ). E lle se com porte com m e la fonction O R , & un
detail prds.
Pour obtenir I, il faut que le B itl soit a I OU que le Bit2 soit a 1 a TEX C L U SIO N
des deux bits ensem ble. Si les 2 bits sont a 1, alors le rdsultat sera 0.
Voici done la table de verite :
B it!
B it2
XOR
0
0
0
0
1
1
1
0
1
1
1
0
e x e m p le :
B ’10001000’
XOR
B’ l 1000000’
donne
B’0 1 0 01000’
Dans cet exem ple, les 2 bits du le r octet ont et£ inverses.
A quoi sert cette instruction ? Et bien tout sim plem ent & in v e rs e r uii ou p lu sie u rs
b its d a n s un m ot sa n s to u c h e r a u x a u tre s.
Si vous ne m a itrise z pas p n rfa ite m e n t ce q u i v ien t d ’e tre e x p liq u ^ d a n s ce
p re m ie r c h a p itre , v o u s ne p o u rr e z p as re a lise r e o rre c te m e n t vos p ro p re s
p ro g ra m m e s .
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 3
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des M i c r o c o n t r o l e u r | P I C !6FS4a
2)- Co m p ositio n et f o n e tio n n e m e n t des P I C S ® :
- Ou ’est-ce nu un PIC® ?
Un P IC ® n ’est rien d 'a u tre q u 'u n m ic ro c o n tro le u r, c*est a dire une unite de
traicem ent de P infonnation de type m ic ro p ro c e s s e u r a laquelle on a ajoui6 des
p e rip h e riq u e s in te rn e s perm ettant de realiser des m ontages sans n eeessiter P ajoul de
com posants extem es.
Tous les PIC ® M id -R an g e ont un je u de 35 in s tru c tio n s , stockent ehaque
instruction dans un seul mot de program m e, et exdeutent chaque instniction (s a u f les
sauts) en 1 cycle.
L ’horloge foum ie au PIC ® est predivisde par 4 au niveau de celle-ci. C 'e s t cette
base de tem ps qui donne la duree d 'u n cycle. Si on utilise par exem ple un q u a r tz de
4M H z. on obtient done 1000000 de cyclcs/seconde, or, com m e le PICK* execute
pratiquem ent 1 instruction par cycle, cela vous donne une puissance de P ordre de
I M IP S (1 M illion d*Instructions Par Seconde).
- Identification d 'un PIC <§>:
Pour identifier un PIC® , vous utiliserez sim plem ent son num ero.
P IC
16 F 84 -04
"■PIC16F84 - 0 4 / P
991ZCAW
- 16 : Indique la c a te g o rie du PIC ® , 16 indique un P IC ® M id -R an g e.
- F : Indique une mtfmoirc de type FL A SH (Le 16C84 peut etre rcprogram m e).
- 84 : les d em iers ehiffres identifient preeisem em le PIC ® . (84)
- le suffixe « -X X » dans lcquel XX represente la frequence d 'h o rlo g e m axim ale que le
PIC® peut recevoir. Par exem ple - 0 4 pour un 4M H z.
D one, un I6 F 84-04 est un P IC ® M id -R an g e (16) done la m em oire program m e
est de type F L A S H (F ) done reinscriptible de type 84 et capable d ’accepter une
frequence d 'h o rlo g e de 4 M H z en theorie (probablem ent : lO M hz pour un 16F84 et
2 0 M h z pour un I6F 84A ).
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 4
www.E-cours.com
Initiation a la n r o g r a n i n i a t i o n des M i c r o c o n t r o l e n r | P I C 16K84a
- La composition du P / C ® :
L a m e m o ir e
P ro g ra m m e
IK x 14 b its
L a m e m o ir e
L a m e m o ir e
RAM
6 8 x 8 B its
EEPRO M
6 4 x 8 B its
/
w>-
UAL
t
\\
> I. a memo ire programme :
La m em oire program m e est constituee de IK m o ts de 14 bits. C ’est dans cette
zone que vous allez ecrire votre program m e. En effet, il faut 2 o ctets p o u r co d er 14
bits. Ccci explique egalem ent pourquoi. lorsque vous lisez un PICS) vierge, v ous allez
lire des 0 x 3 F F F . C ela donne en binaire B ' 111111 111 11111 \ soit 14 bits.
>
La memoire EEPRO M :
La m em oire E E P R O M (E lectrical E rasable Program m able Read O nly M em ory),
est constituee de 64 octets que vous pouvez lire et dcrire depuis votre program m e. Ces
octets so n t conserves aprcs une coupurc de courant et sont trds utiles pour conserver
des param etres sem i-perm anents. C ar ce n 'e st pas de la R A M . m ais bien une ROM de
type special. II est done plus rapide de la lire que d ’y ecrire.
V.
r' La memoire Ram :
La m dm oire R A M (R andom A ccess M em ory). T outes les donnees qui y sont
stockces sont perdues lore d ‘une coupure de courant.
La m em oire RAM est organisce en 2 banques pour le 16F84. La RAM est
subdivisee de plus en deux parties. D ans chacune des banques nous allons trouvcr des
« cases m dm oires spdciales » appeldes R E G 1 S T R E S S P E C IA U X et des cases
m em oires « libres » dont vous pouvez vous serv-ir a votre guise.
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 5
www.E-cours.com
Initiation a la n r o g r a m m a t i o n des M i c r o c o n t r o l e u r | P I C 16F84a
Pour ie eas du 16F84, vous disposcrcz d c 68 octets libres. L ’organisation de la
RAM est m ontree dans le tableau ci-dessous.
RAM et R egistrcs du 16F84a :
A dr.
OOh
Olh
02h
BanqucO
Indirect addr.
TMRO
PCL
03 h
04h
05h
STATUS
FSR
PORTA
PORTB
—
06h
07h
08h
09h
OAh
OBh
EEDATA
EEADR
B anquet
Indirect addr.
OPTION REG
A dr.
80h
PCL
STATUS
FSR
TRISA
TRISB
82h
84 h
86h
—
EECON1
88h
PC LATH
INTCON
EECON2
PCLATH
INTCON
8Ah
OCh - 4Fh
68 eases m&noires
idem banque 0
8Ch - CFH
5Oh - 71 h
inutilise
inutilise
D O H -FFH
> Les Ports d'enfrees/sorties
•
Le P O R T A:
Le PO R T A est un des deux Ports du PIC !6F84a, et com prend 5 lignes
E n tre e s/S o rtie s. Sa configuration et sa program m ation passent par ('utilisation de
deux registres qui sont P O R T A et T R IS A .
L e registre PO R TA (B ank 0) est une copie des lignes R A 0..R A 4. tant en entree
qu*en sortie.
Le registre TR ISA (B ank 1) est le registre qui perm ettra de placer les pins
independam m ent en entree ou en sortie.
M ettre un bit de TR ISA a 1 plaeera la pin correspondante du PO R TA en entree.
M ettre un bit de TRISA a 0 plaeera la pin correspondante du PO R TA cn sortie.
•
L e P O R I B:
L e P O R I B est un des deux Ports du PIC 161*84a. et co m prend 8 lignes
E n tre e s/S o rtie s. Sa configuration et sa program m ation passent p ar ('utilisation de
deux registres qui sont P O R T B et T R IS B .
Le registre PO RTB (B ank 0) est une copie des lignes R B 0..R B 7, tant en entree
q u ’en sortie.
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 6
www.E-cours.com
Initiation a la n r o g r a n i n i a t i o n des M i c r o c o n t r o l e n r
P I C 16F84a
Le rcgistre TR1SB (B ank 1) est le registre qui perm ettra de placer les pins
independam m ent en entree ou en sortie.
M ettre un bit de TR1SB & 1 placera la pin corrcspondante du PO R TB en entree.
M ettre un bit de TR1SB a 0 placera la pin corrcspondante du PO R TB cn sortie.
3 V L e s d e b u ts a v e c M P L A B :
Les differents flchiers necessaires a M PLA B lors d 'u n developpcm ent pour
m icrocontroleur sont repertories dans un projet.
a)- La prem iere action a effectuer est done la creation d 'u n nouveau tlchier
« ex em lp eO l.asm » dans un nouveau dossier.
M PLAB IDE
hle E J T3
E x e m p le : C:\MonDossier\exemple01.asm
rw"in pIC5TARTF** options
^ N e w Project.
b)- A pres avoir lance M PLA B . choisir dans
le m enu « P r o j e c t » Poption « New P ro je c t »
|Sew Project
1 1
Fie NameCjcwtmlpc pjt
Directories:
^
1
C ^ T |
c:\mondot ”1
c y Indiquer le nom du projet ainsi
que son em placem ent.
Cancel
--------------- 1
1
/
I& ..3 T T .
C liqucr ensuite sur « O K ».
Help
-------- 1
D evelopm ent Mode:
d)- C liqucr sur « A dd N ode » et
ajouter un ficliier source existant.
selectionner le llchier
« e x em p leO l.asm » puis cliqucr sur le
bouton « O K »
L a n guage Tool S uite:
MPLAB SIM Sim u la to r-^ o t all pe:ipheials~have support for *
simulation.
Serial I/O is not simulated
n ick D etails' lor additional
PIC M A ST E R Enultilui
hr
m p l a ii
J
c)- C liqucr sur « change »
seleetionner « M P L A B SIM
S im u lato r)) et choisir le
proeesseur « 16F84A » puis
cliqucr sur le bouton « O K »
IDE - C:\MONDO
biect
a
M icrochip
P ro je cl Files
Nnnf* |Fd#oiOnly)
M P IA B ICE Emulator
|MPLAB S IM PIC16F84
Open...
Fdfl: Debug
a
a
IV Lnfin cliqucr sur File => O pen
et seleetionner le llchier
« ex em p leO l.asm » a ouvrir.
del
P a r : Mr MOULOUDJ.K
Ecole Technique
Page 7
www.E-cours.com
Initiation a la n r o g r a m n i a t i o n des M i c r o c o n t r o l e u r | PIC 16FS4a
4 )- O r g a n is a tio n cT un f ic h ie r « .a sm » :
5 )- C r e a ti o n d u p r e m ie r p r o g r a m m e :
; Ce tlchier est la base d e d ep an pour une programmation avec I e PIC 16181a. II contiem
; les informations de base pour demarrer.
L IS T
p = !6 F 8 4
^ in c lu d e < p l6 F 8 4 .in c >
__C O N F IG
•
•
: D efinition de processeur
; D efinitions de variables
C P O F F & _W D T _O F F & _P W R T E _O F E & _X T_O SC
_C O N FIG » precise les parametres encodes dans le processeur au moment de
programmation (flashage). Les definitions sont dans le fichier include.
oici les valeurs et leurs definitions
C P ON
CPO FF
_I>W RTE_O N
PW R T E O FF
W D T ON
W D T OFF
LP OSC
X TO SC
IIS OSC
RC OSC
C ode protection ON : im possible de relire
C ode protection O FF
T im er reset sur pow er on en service
T im er reset hors-service
W atch-dog en service
W atch-dog hors serv ice
O scillateur quartz basse vitesse
O scillateur quartz m oyenne vitesse
O scillateur quartz grande vitesse
O scillateur a reseau RC
D E C L A R A T I O N S DF. VARI ABL ES
C B L O C K OxOOC
m a v a ria b le : 1
ENDC
; d£but de la zone variables
; je declare ma variable
; Fin de la zone
D E M A R R A G E S U R RESET
ORG
0x000
goto d e b u t
; A drcsse de depart aprds reset
; A drcsse 0: initialiser
PROGRAMME PRINCIPAI
- 4 debut
c lr f
m a v a ria b le
; effacer m avariable
in c f
goto
m a v a ria b le , f
bouclc
; increm enter m avariable
; boucler
—►
) bonclc
EN D
P a r : Mr MOULOUDJ.K
Ecole Technique
|
Page 8
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des M i c r o c o n t r o l e u r I P I C I6 F 8 4 a
L ’ in s t r u c t i o n « G O T O » ( a llc r a) :
C ette instruction effectue ce q u ’on appelle un saut inconditionnel.
S v n ta x e :
goto etiquette
E x e m p le :
debut
goto plusloin
: le program m e saute a I'instruction qui suit l ’& iquette
; « plusloin »
xxxxxxxxx
plusloin
xxxxxxxxx
-
: instruction exeeutee apres le s a u t : le program m e sc poursuit ici
R em arquez que vous pouvez sauter en avant ou en arriere.
goto necessite 2 cycles d'h o rlo g e. com m e pour tous les sauts
[/in s tr u c tio n « C L R F » (C L e a R F ) :
C ette instruction efface l'em placem ent m em oire spScifte
S v n ta x e :
c lrf f ; ( 0 “ 0
B it d u r e c i s t r e S T A T U S a f f e c te :
Z : V aut done toujours 1 apres cette operation.
E x e m p le :
C lrf
m avariable ; (m avariable) = 0
[ / i n s t r u c t i o n « C’L R W » ( C L e a R W ) :
C ette instruction e fta ce w.
S v n ta x e
clrw ; (vv) - 0
C 'e s t une instruction qui n 'est pas v raim ent indispensable, car on pourrait
utiliser 1*instruction « m ovhv 0 ». C epcndant. a la difference de m ovlw 0. clrvv
positionne le bit Z .
B it d u r e g is tr e S T A T U S a ffe c te
Z : Vaut done toujours 1 apres cette operation.
P a r : Mr MOULOUDJ.K
F.cole Technique
|
Page 9
www.E-cours.com
Initiation a hi p r o n r a m m a t i o n des IVIicimontrolciir | P IC 16F84a
I / i n s t r u c t i o n « I N C F » ( I N C r e in e n t F ile) :
C elle instruction provoque 1*increm entation de Vem placem ent specific (encore appele
File).
Sv n ta x e :
ln c f
f,d
;< f)+ i-> (d )
C om m e pour toutes les instructions, « f » rcprdsentc « File ». c ’est a dire
re m p la cc m c n i m em oire concerne pour cette operation. « d », quant a lui: represente la
D estination.
S a u f specification contra ire, d vaut tou jours, au choix :
- f (la lettrc 0 : dans cc cas le rcsultat est sto ck e dans Vem placem ent m em oire.
- W (la lettre w ) : dans c e cas, le resultat est laisse dans le registre de travail, et le
contenu de Vem placem ent m em oire n ’est p as m odi fie.
B it d u r e s i s t re S T A T U S a ffe c te :
Le seul bit affecte par cette operation est le bit Z.
E xem ples :
in c f
m avariablc . f
in c f
m avariablc . w
; le contenu de m a v ariab le est augm ents de 1
; le rcsultat est stocke dans m avariablc.
: Le contenu de m avariablc est charge dans w et
; augm ent^ de I . W contient done le contenu dc
; m avariable + 1. m avariablc n 'e s t pas m odi lice
L " in s tr u c tio n « D E C T » ( l ) E C R e m c n t F ile ):
D ecrem entc ('em placem ent specific. Le fonctionnem ent est strictem ent identique a
I’instruction precedente.
S v n ta x e :
decf
f, d
; (f) - 1 -> (d)
B it d n r e s i s t re S T A T U S a f f e c te :
Le seul bit affecte par cette operation est le bit Z.
Si avant Y instruction, (f) vaut 1, 7. vaudra I aprcs I'execution (1-1 - 0)
E x e m p le s :
decf
decf
m avariablc . f
m avariablc . w
P a r : Mr MOULOUDJ.K
; ddcrcm ente m avariablc, rcsultat dans m avariablc
: prends (m avariable) - I e t place le rcsultat dans w
Ecole Technique
| Page 10
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des M i c r o c o n t r o l e u r | P I C !6F84a
6 )- C r e a ti o n d u D c u x ic m c p r o g r a m m e :
L IS T
p= 16F 84
//in clu d e < p I6 F 8 4 .iu c >
C P O FF &
C O N F IG
;
: D efinition de processeur
; D efinitions de variables
W DT OFF &
PW RTE O FF &
D E C L A R A T IO N S D E V A R IA B L ES
..* * * * * * * * . *
*
XT OSC
*
******* * * * * * * * * * . K* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C B L O C K OxftOC
m avariable : 1
ENDC
; d£but de la zone variables
; jc declare m a variable
; Fin de la zone
.*********************************************************************
j
O RG 0x000
: A dresse de depart apres reset
: A dresse 0: initialiser
.I ********************************************************************
:
Initialisation
BSF
STA TU S. RP0
M ovlw
M ovw f
M ovlw
M ovw f
B 'O O O lllir
TR ISA
B’00000000'
TR ISB
BCF
ST A TU S. RP0
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PR O G R A M M E PR IN C IPA L
*
*********************************************************************
debut
c lrf
c lrf
PO R TB
m avariable
;effacer le PortB “ 0
;effacer m avariable
boucle
in c f m avariable.f
m o v f m avariable.w
m ovw f
PO RTB
goto
boucle
; increm enter m avariable
: charge le contenu de m avariable dans w.
: charge le contenu de W sur le PO R T B
; boucler
EN D
P a r : Mr MOULOUDJ.K
Ecole Technique
| Page 11
www.E-cours.com
Initiation a la n r o a r a m m a t i o n des M i c r o c o n t r o l e n r | P IC !6F 84a
L e re g is t re « VV » :
C c registre est un registre utilise par les P I C # pour realiser toutes sortcs de
calculs. Souvenez-vous que la destination d ’un rcsultat (d) peut en general etre un
em placem ent RAM (f) ou lc registre de travail (\v). C 'c s t done un registre
ibndam enlal.
L c r c g is tr c « S T A T U S » :
C ?est un registre dont chaque hit a une signification particuliere. II est
principalem ent utilise pour tout ce qui concerne les tests. II est done Ig alem en t d 'u n e
im portance fo n d a m e n ta le :
h2: Z
Z ero
- C e hit est posilionne a 1 si le resultat de la d cm icrc operation vaut 0.
R appelez-vous cependant que ces llags ne sont posit ionnes q u e pour les
instructions qui lc preciscnt (Status bit affected).
b > : RPO
- Perm et d ’indiquer dans quelle banque de RAM on travaille.O - banquc 0.
L 'i n s t r u e t i o n « B S F » (B it S e t F) :
C 'c st une instruction qui perm et tout sim plem ent de forcer directem ent un bit d ’un
em placem ent m em oire a 1.
S v n ta x e
B sf
f,b
: le bit n° b est positionne dans la case m em oire (f)
; b est evidem m ent com pris entre 0 et 7
B it d u r c g is tr c S T A T U S a ffe c te
A ucun
E x e m p le s
B sf
bsf
ST A Tl IS , C
m avariable . 2
; positionne le bit C a I dans le registre STA TU S
: positionne bit 2 de (m avariablc) a 1
L * in s tr u c tio n « B C F » (B it C l e a r F)
C 'e s t une instruction qui perm et tout sim plem ent de forcer directem ent un bit d un
em placem ent m em oire a 0.
S v n ta x e
bef
f.b
; le bit n° b cst m is h 0 dans la ease m em oire (f)
; b est evidem m ent com pris entre 0 et 7
P a r: MrMOULOUDj.K
EcoleTechnique
| Page 12
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des IVIicrocontrolenr | PIC. 16F84a
B it d u r e g is tr e S T A T U S a f f e c te :
A ucun
E x e m p le s :
bef
bef
STA TU S , C
m avariable . 2
: positionne le bit C a 0 dans le registre STA TU S
: positionne b2 de (m avariable) a 0
[ / i n s t r u c t i o n « M O V L W » (M O V e L ite r a l to \V ):
C ette instruction charge la valeur specifiee (valeur litterale. ou encore valeur
im m ediate), dans le registre de travail W
S v n ta x e :
M ovlw
k
; k-> w : k represente u n e v aleur d e 0x00 & OxFK
B it (hi r e g is tr e S T A T U S a f f e c te :
A ucun
( done m em e si vous chargez la valeur *0‘.)
E x e m p le
M ovlw
0x25
; charge 0x25 dans le registre w
I / i n s t r u c t i o n « M O V F » (M O V e F ile) :
C harge le contenu de Vem placem ent sp ecille dans la destination
S v n ta x e :
M ovf
r .d
; (1) -> (d)
B it d u r e g is tr e S T A T U S a ffc c tc
U ne fois de plus, seul le bit X est affecte (si fv a u t 0. /. vaut I ).
E x e m p le 1 :
m ovf
m avariable,w ’
; charge le contenu de m avariable dans w.
E x e m p le 2 :
M ovf
m a v a ria b le , f
I-He place le C O N T E N U de m avariable dans m avariable. D ire que cela ne s e tt a rien,
le contenu de m avariable reste bicn inchangc, par contre le bit / est positionne & I .
C ette instruction pcrm et done de verifier si (m avariable) = 0.
P a r : Mr MOULOUDJ.K
Ecole Technique
| Page 13
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des M i c r o c o n t r o l e u r | P IC !6 F 8 4 a
L ’in s tr u e tm n « M O V W F » (M O V e W
to F ile ):
Perm et d c sauvegarder 1c contenu du registre de travail W dan s un em placem ent
m em oirc.
S v n ta x e :
M ovw f
f
; (W ) -> (f)
B it d u r e g is tr e S T A T U S a f f e c te :
A ucun
E x e m p le
m ovlw
m ovw f
0x50
m avariable
: charge 0x50 dans W
; « m avariable » contienl m aintenant 0x50.
7 )- C r e a ti o n d u 3 tmr p r o g r a m m e :
L IST
p= 16F84a
^include <p l6F 84.inc>
; D efinition de processeur
; D efinitions de variables
_ C O N F IG
W D T O FF & PW R T E O FF & _X T _O SC
C P _O F F &
;
D E C L A R A T IO N S DE V A R IA B L E S
*
.****.***********************«*****************************************
CBLOCJC OxOOC
m avariable : 1
cont 1 : 1
cont2 : 1
cont3 : 1
EN D C
: debut de la zone variables
: je declare m es variables
; Fin dc la zone
.*********************************************************************
;
D E M A R R A G E SU R R E SE T
*
.************************************************** *******************
y
O R G 0x00 ; A drcsse de depart apres reset
: A dressc 0: initialiser
goto IN ITPIC
;
Initialisation
*
.************************************************************ *********
IN ITPIC
BSF
M ovlw
M ovw f
ST A TU S.R P0
B 'O O O IIlir
TR ISA
P a r : Mr MW.IL0UD1.K
Ecole Technique
| Page 14
www.E-cours.com
Initiation a la n r o g r a n i n i a t i o n des M i c r o c o n t r o l e n r | P I C !6F84a
M ovlw
M ovw f
B CF
IVOOOOOOOO'
TR ISB
STATUS.RPO
.*********************************************************♦***********
;
PR O G R A M M E PR IN C IPA L
*
.*********************************************************************
debut
c lr f
c lr f
PO R TB
m avariablc
;effacer le PortB - 0
;efTacer m avariable
in c f
m ovf
m ovw f
m av ariab le,f ; increm enter m avariable
m avariable,w
; charge le contenu d e m avariable dans vv.
PORTB
; charge le contenu de W su r le PO R T B
boucle
call
tem po
goto
boucle
; appel de la s o u s-ro u tin e a P adresse tem po
; bonder
. *********************************************** **********************
;
T em porisation dc Lsecondes
.*********************************************************************
tem p o
nop
m ovlw
m ovw f
B3 movivv
m ovw f
B2 m ovlw
m ovw f
Bl deefsz
goto
Bl
deefsz
B2
goto
deefsz
goto
B3
r e tu rn
;pas d ’operation
0x2L
cont3
OxBD
cont2
0x25
cont 1
c o n tl,f
c o n t2 .f
cont3.f
HND
L 1in s tr u c tio n « N O P » (N o O p e r a t io n ) :
Je vous presente I’instruction qui ne fait rien. qui ne positionne rien. et qui ne
modi lie rien. On pourrait croire q u 'e llc ne sort b rien. Ln fait elle est surtout utilisee
pour perdrc du tem ps.
Sv n ta x e ;
nop
; ne fait rien
P a r: MrMOULOUDJ.K
Ecole Technique
| Page 15
www.E-cours.com
In itia tion a la p r o g r a n i m a t i o n des M i c r o c o n t r o l e n r | P IC !6FH4a
L 'i n s t r u c t i o n « C A L L » ( C A L L s u b r o u tin e ) :
C ette operation effectue un saut inconditionnel vers un sous-program m e.
S v n ta x e
call
etiquette
; appel de la sous-routine h I'adresse etiquette.
B it d u r e g is tr e S T A T U S a ffe c te :
A ucun
L ’ in s tr u c tio n « R FTU R 1N » (R E T U R N f r o m s u b r o u tin e ) :
R etour de sous-routine. R appelez-vous que pour chaque instruction « call »
rcncontr^e, votre program m e devra rencontrer une instruction « return ».
S v n ta x e :
re tu rn
; fin de sous-routine.
: Program m e poursuit a I’adresse qui suit la ligne call.
B it d u r e g is tr e S T A T U S a f f e c te :
A ucun
l / i n s t r n c t i o n « D E C F S Z » ( l ) E C r e i n e n t F , S k ip if Z e r o ) :
N ous poursuivons les sauts conditionnels avec une instruction tres utilisec pour
cr<$cr des boucles. C ette instruction decrem ente un em placem ent m em oire et saute
r instruction suivante si le rcsultat de la decrem entation donne une v aleu r nulle
S v n ta x e :
D eefsz
f, d
; ( 0 -1 -> (d). Saut si (d) = 0
B it d u r e g is tr e S T A T U S a ffe c te :
A ucun
L 'i n s t r u c t i o n « I N C F S Z » ( I N C r e m e n t F , S k ip if Z e r o )
Je ne vais pas detailler cette instruction, c a r elle est strictem cnt identique a la
precedcnte. horm is le fait q u ’on incrdm ente la variable au lieu de la d6cr6m enter.
S v n ta x e
Incfsz
f .d
: ( 0 + I -> ( d ) : saut si (d) = 0
B it d u r e g is tr e S T A T U S a ffe c te
A ucun
Par : Mr MOULOUDJ.K
Ecole Technique
| Page 16
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des M i c r o e o n t r o l c u r | IMC !6FS4a
S )- C r e a ti o n d u 4 lllt p r o g r a m m e : ( A f f ic h e u r 7 S e g m e n ts )
L IST
p - 161 84a
^include <p 16F84.inc>
C O N FIG
C P O FF &
; D efinition d e processeur
: D efinitions de variables
W D T O FF &
PW R TE O FF &
X T OSC
.*********************************************************************
;
D E C L A R A T IO N S DE V A R IA B L E S
C B L O C K OxOOC
m avariable : I
c o n tl : 1
cont2 : 1
cont3 : 1
EN D C
*
; debut dc la zone variables
; jc declare m es variables
; Fin dc la zone
.*********************************************************************
:
D E M A R R A t.l SI !!< R1 SI I
*
.**************************************#*******#**********************
O RG 0x00
; A drcsse de depart apres reset
.*****************************************##**********************#***
;
Initialisation
*
.*******#####**********************************#**********************
IN ITPIC
BSF
M ovlw
M ovw f
Movlw
M ovw f
BCF
STATUS.RPO
B’O O O l l l i r
TRISA
B’OOOOOOOO'
TR ISB
STA TU S. RPO
.************************************#********************************
PR O G R A M M I PR IN C IPA L
♦
,***#***###*#*#*******************************************************
debut
c lrf
c lrf
PO RTB
m avariable
;effaccr le PortB =0
;effacer m avariable
boucle
stop
b liss
goto
P O R T A ,0
stop
m ovlw
m ovw f
call tem po
B '0 0 1 1 1111' : charge le contenu de m avariable dans w.
PO R TB
: charge le contenu de W sur le PO R T B
P a r : Mr MOULOUDI.K
Ecole Technique
| Page 17
www.E-cours.com
Initiation a la p r o g r a m m a tio n des M i c r o c o n t r o l e u r 1 P I C 16F84a
m ovlw
m ovw f
call tem po
B '0 0 0 0 110'
PO R TB
; charge lc contenu de m avariablc dans w.
; charge lc contenu de W sur le PO R T B
m ovlw
m ovw f
call tem po
bioi
i oi r
PO R TB
; charge le contenu de m avariable dans w.
; charge le contenu de \V sur le PO R T B
m ovlw
m ovw f
call tem po
B* 1001 111*
PO RTB
; charge le contenu de m avariable dans w.
; charge lc contcnu de W sur le PO R T B
m ovlw
m ovw f
call tem po
B l 100110’
PO RTB
; charge le contenu de m avariable dans w.
; charge le contenu de W sur le PO R T B
m ovlw
inovw 1
call tem po
B i io i i o r
PO R TB
; charge le contcnu d e m avariable dans w.
, charge le contenu de W sur le PO R T B
m ovlw
m ovw f
call tem po
B’l l l l l O r
PO RTB
; charge le contenu de m avariable dans w.
; charge le contenu de W sur le PO R T B
m ovlw
m ovw f
call tem po
B'ooo 11 r
PO R TB
; charge le contcnu de m avariable dans w .
; charge le contenu dc W sur lc PO R T B
m ovlw
m ovw f
call tem po
B'lllllir
PO R TB
; charge le contenu de m avariable dans w.
; charge le contenu de W sur le PO R T B
m ovlw
m ovw f
call tem po
B'liomr
PORTB
: charge le contenu de m avariable dans vv.
; charge le contenu de W sur le PO R T B
m ovlw
m ovw f
call tem po
B'OOOOOOOO' ; charge le contenu de m avariablc dans w.
PORTB
: charge le contenu de W sur le POR I B
goto
boucle
P a r: Mr MOULOUDj.K
: boucler
Ecole Technique
| Page 18
www.E-cours.com
Initiation a hi p r o g r a m m a t i o n des M i c r o e o n t r o l c u r | P I C !6F 84a
.I*********************************************************** *********
;
Tcm porisation dc l.scco n d es
*
.*********************************************************************
tem p o
nop
m ovlw
m ovw f
B3 m ovlw
m ovw f
B2 m ovlw
m ovw f
B1 deefsz
goto
B1
deefsz
B2
goto
deefsz
goto
B3
re tu rn
;pas d ’operation
0x2 f;
cont3
OxBD
cont2
0x25
cont 1
c o n tl, f
co n t2 ,f
co n t3 .f
END
[ / i n s t r u c t i o n « B T F S S » ( Bi t T e s t F , S k ip if S e t)
Traduit littdralem cnt, cela donne : Teste le bit de ^em p lacem en t m em oire et saute
s*il vaut 1.
S v n ta x e
B tfss
f. b
; on teste le bit b dc la m em oire (f).
: si cc bit vaut 1. on saute (’instruction
; suivante, sinon
; on execute Finstruction suivante.
B it d u r e g is tr e S T A T U S a ffe c te
A ucun
1 / in s tr u c tio n « B T F S C » ( Bi t T e s t F« S k ip if C le a r )
T raduit litteralem ent. cela donne : T este le bit de I’cm placem ent m em oire el saute
s 'il vaut 0.
S v n ta x e
B tfsc
f, b
; on teste le bit b de (a m em oire (f).
; si ce hit vaut 0, on saute 1'instruction suivante, sinon
; on execute V instruction suivante.
B it d u r e g is tr e S T A T U S a ffe c te
Aucun
P a r : Mr MOULOUD|.K
Ecole Technique
| Page 19
www.E-cours.com
Initiation a la p r o g r a n i m a t i o n des M i c r o c o n t r o l e u r | P I C !6 F 8 4 a
8 )- C r e a ti o n d u 5 l,u p r o g r a m m e :
( C o m m a n d e r u n A f f i c h e u r 7 S E G (P la y , P a u s e , S t o p ) ).
LIST
p=16F84a
"include <p 16F84.inc>
; D efinition de proccsscur
; D efinitions de variables
C O N FIG
C P O FF & _W D T O FF & PW R T E O FF & XT OSC
.********** * * * * **•-** ** ******* *** ********* ************ **** ***** *********
;
D E C LA R A TIO N S DE V A R IA B L E S
*
»
C B L O C K OxOOC ; debut de la zone variables
c o n tl : 1
<*A l/e p p j : 4 _
cont2 : 1
cont3 : 1
c o n tl 2 : 1
cont22 : I
cont32 : 1
V arPause :1
EN D C
; Fin de la /o n e
.*************************************************
;
D EM A R R A G E SU R R ESE T
*
.*************************************************
•>
O RG 0x00
.********* 4^
*
; A dresse de depart aprcs reset
+
****************** *******************
;
Initialisation
.*********************************************************************
STA TU SJRP0
BSF
M ovlw
B '0 0 0 1 1111’
M ovw f
TR ISA
B '00000000'
M ovlw
TRISB
M ovw f
ST A T U S,R P0
BCF
VarPause.O
BCF
.*********************************************************************
%
;
PR O G R A M M E PR IN C IPA L
*
.*********************************************************************
debut
stopB l
btfsc
goto
PO R TA ,0
stopB I
btfsc
goto
PO R TA , 1
stopB2
c lrf
PO R TB
stopB2
boucle
P a r: Mr MOULOUDJ.K
;effacer le PortB - 0
Ecole Technique
| Page 20
www.E-cours.com
Initiation a la o r o e r a n i m a t i o n des M i c r o c o n t r o l e u r 1 P I C l 6 F 8 4 a
slop
btfss
goto
PO R T A ,0
stop
btfsc
goto
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
movlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call tem po
m ovlw
m ovw f
call
goto
PO R T A ,0
stopc
stopc
B 'o o iim i'
PO RTB
; charge le contenu de m avariable dans w.
; charge le contenu de W sur le PO RT B
B '0 0 0 0 1 10’
PORTB
; charge le contenu dc m avariable dans w.
; charge le contenu de W sur le PO RT B
B' l Ol l Oi r
PORTB
; charge le contenu de m avariable dans w.
; charge le contenu de W sur le PO R T B
B’l O O I l i r
PO RTB
; charge le contenu de m avariable dans w.
; charge lc contenu de W sur le PO RT B
BT 100110'
PO RTB
; charge le contenu dc m avariable dans w\
; chargc le contenu dc W sur lc PO R T B
B T ionor
PORTB
; charge le contenu dc m avariable dans w.
; charge le contenu de W sur le PO RT B
BTIlllOr
PORTB
; charge lc contenu dc m avariable dans w.
; charge le contenu de W sur le PO R T B
B'0(KJ 111*
PO RTB
BTl l l l i r
PORTB
BTiomr
PORTB
tem p o
boucic
charge le contenu dc m avariable dan s w.
; charge le contenu de W sur lc PO R T B
; charge le contenu dc m avariable d ans w.
; charge le contenu de W sur le PO R T B
: charge le contenu de m avariable dans w.
; charge le contenu de W sur le PO RT B
; boucler
te m p o
; T em porisation de l.sccondes
nop
m ovlw 0x2E
m ovw f cont3
B3 m ovlw OxBD
m o v w f cont2
B2 m ovlw OxOF
m o v w f contl
P a r : Mr MUULOUDJ.K
Ecole Technique
| Page 21
www.E-cours.com
Initiation a la p r o g r a m m a t i o n des M i c r o c o n t r o l e u r | P IC 16FS4a
PORTA.O
p au se
PO RTA J
debut
com 1.f
Bl
btfsc
call
btfsc
goto
deefsz
goto
NOP
NOP
NOP
NOP
NOP
NOP
deefsz
goto
deefsz
goto
r e tu rn
co n t2 ,f
B2
co n t3 ,f
B3
p a u se
stop BPS
btfsc
goto
B SF
m ovf
m ovw f
boucle pause
PC)RTA,0
stopBPS
VarPausc.O
PORTB.vv
savePB
c lrf
PORTB
call
tem p « 2
m ovlw
B'l 1110011'
m ovw f
PO RTB
call
te m p o 2
btfsc
PO R TA ,0
BCF
V arPause,0
btfsc
V arPause,0
goto boucle_pause
m ovf
m ovw f
savePB ,w
PORTB
stopB PF
btfsc
goto
r e tu rn
PORTA.O
stopBPF
P a r : Mr MOULOUDJ.K
Ecole Technique
| Page 22
www.E-cours.com
Initiation a la p r o & r a m m a t io n (les M i c r o c o n t r o l e u r 1 P IC 16F84a
te m p o 2
; Tem porisation Pause
nop
m ovlw OxOE
m ovw f cont32
B32
m ovlw 0x30
m o v w f cont22
B22
m ovlw OxAO
m o v w f c o n tl2
B12
btfsc PORTA.O
goto FINP
deefsz c o n tl2 ,f
goto B12
deefsz e o n t2 2 ,f
goto B22
deefsz c o n t3 2 .f
goto B32
FIN P
r e tu rn
EN D
P a r : Mr MOULOUD|.K
Ecole Technique
| Page 23
www.E-cours.com
Sur le même sujet..
charge
contenu
program
16f84a
ecole
mouloudj
technique
instruction
avariable
placem
portb
avariablc
registre
initiation
cours