Vous êtes sur la page 1sur 24

m

T E C H N IQ U E

COLE TECHMOUE
Agr&e par IElat

INITIATION A LA PROG
DES MICROCONTROLEURS

ic r o c h ip

P I C 16F 84a
U1
oc\: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

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 ralite :
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 Bx 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 reprsent en h ex ad ecim al p ar 0x95. Si v ous faites la
conversion de 1hexadecim 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 Ia 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

e x e m p le :
B 10001000

XOR

B l 1000000

donne

B0 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:

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

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

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

; dbut 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 CL 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
Iinstruction 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

; dbut de la zone variables


; jc declare m a variable
; Fin de la zone

.*********************************************************************

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
B00000000'
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-> 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

; (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
*
.************************************************** *******************

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 Iinstruction 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 Iadresse 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
BO O O l l l i r
TRISA
BOOOOOOOO'
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

Bl 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 Icm 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

Bl 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