Vous êtes sur la page 1sur 24

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 vc
U*1
oxscuw RC'
UEOI «->
MW
wIIit
m
H8e» ±
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

m
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 r£alite :
432 = 2*10° + 3*10 + 4 * 1 0 \ ( * est utilise pour indiquer « m ultiplie ». Et rappelez-
vous 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 H ex ad ecim al D ecim al


B ’0 0 0 0 ’ 0x0 0
iv o o o r 0x1 1
iro o io - 0x2 7Am
B ’o o i r 0x3 3
IV 0100’ 0x4 4
B ’o i o r 0x5 5
B ’0 1 10’ 0x6 6
B ’o i i r 0x7 7
B ’ lOOO’ 0x8 8
B ’lo o r 0x9 9
B ’ 1010’ OxA 10
B M O ll’ OxB 11
B ’ 1100’ OxC 12
B ’l i o r OxD 13
B ’ 1110’ OxE 14
B ’l i i r OxF 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 1 0
L xem ple ;
Soit B T 1001100’ A N D B ‘ 11110000' donne B T 1000000’ 1 0 0
A quoi sert cette instruction ? F.t bien, elle est utilisee pour 1 1 1
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 Bit2 OR
0 0 0
0 1 1
1 0 1
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.

"■PIC16F84 - 0 4 / P
991ZCAW
P IC 16 F 84 -04

- 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 L a m e m o ir e L a m e m o ir e
P ro g ra m m e RAM EEPRO M
IK x 14 b its 6 8 x 8 B its 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. BanqucO B anquet A dr.


OOh Indirect addr. Indirect addr. 80h
Olh TMRO OPTION REG
02h PCL PCL 82h
03 h STATUS STATUS
04h FSR FSR 84 h
05h PORTA TRISA
06h PORTB TRISB 86h
07h — —

08h EEDATA EECON1 88h


09h EEADR EECON2
OAh PC LATH PCLATH 8Ah
OBh INTCON INTCON

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

E x e m p le : C:\MonDossier\exemple01.asm hle E J T3 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 Name- Directories:
C ^ T |
c y Indiquer le nom du projet ainsi
Cjcwtmlpc pjt ^ 1 c:\mondot ”1 que son em placem ent.
Cancel
--------------- 1
/
1
I& ..3 T T . Help
C liqucr ensuite sur « O K ».
-------- 1

d)- C liqucr sur « A dd N ode » et D evelopm ent Mode: |MPLAB S IM PIC16F84

ajouter un ficliier source existant. L a n guage Tool S uite: M icrochip


selectionner le llchier
P ro je cl Files
« e x em p leO l.asm » puis cliqucr sur le
bouton « O K »

Nnnf* |Fd#oiOnly) c)- C liqucr sur « change »


MPLAB SIM Sim u la to r-^ o t all pe:ipheials~have support for * seleetionner « M P L A B SIM
simulation.
M P IA B ICE Emulator
Serial I/O is not simulated J S im u lato r)) et choisir le
PIC M A ST E R Enultilui n ick D etails' lor additional proeesseur « 16F84A » puis
cliqucr sur le bouton « O K »
hr m p l a ii IDE - C:\MONDO
biect Fdfl: Debug IV Lnfin cliqucr sur File => O pen
a et seleetionner le llchier
a Open... a « 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 : D efinition de processeur
^ in c lu d e < p l6 F 8 4 .in c > ; D efinitions de variables

__C O N F IG 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 C ode protection ON : im possible de relire
CPO FF C ode protection O FF
_I>W RTE_O N T im er reset sur pow er on en service
PW R T E O FF T im er reset hors-service
W D T ON W atch-dog en service
W D T OFF W atch-dog hors serv ice
LP OSC O scillateur quartz basse vitesse
X TO SC O scillateur quartz m oyenne vitesse
IIS OSC O scillateur quartz grande vitesse
RC OSC 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 ; d£but de la zone variables


m a v a ria b le : 1 ; je declare ma variable
ENDC ; Fin de la zone

D E M A R R A G E S U R RESET

ORG 0x000 ; A drcsse de depart aprds reset


goto d e b u t ; A drcsse 0: initialiser

PROGRAMME PRINCIPAI

- 4 debut
c lr f m a v a ria b le ; effacer m avariable
—►
) bonclc
in c f m a v a ria b le , f ; increm enter m avariable
goto bouclc ; boucler

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 ; le contenu de m a v ariab le est augm ents de 1


; le rcsultat est stocke dans m avariablc.
in c f m avariablc . w : 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 m avariablc . f ; ddcrcm ente m avariablc, rcsultat dans m avariablc


decf m avariablc . w : prends (m avariable) - I e t place le rcsultat dans w

P a r : Mr MOULOUDJ.K 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 : D efinition de processeur


//in clu d e < p I6 F 8 4 .iu c > ; D efinitions de variables

C O N F IG C P O FF & W DT OFF & PW RTE O FF & XT OSC

; D E C L A R A T IO N S D E V A R IA B L ES *
..* * * * * * * * . * ******* * * * * * * * * * . K* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
C B L O C K OxftOC ; d£but de la zone variables
m avariable : 1 ; jc declare m a variable
ENDC ; 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 B 'O O O lllir


M ovw f TR ISA
M ovlw B’00000000'
M ovw f TR ISB

BCF ST A TU S. RP0

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

PR O G R A M M E PR IN C IPA L *
*********************************************************************
debut
c lrf PO R TB ;effacer le PortB “ 0
c lrf m avariable ;effacer m avariable
boucle
in c f m avariable.f ; increm enter m avariable
m o v f m avariable.w : charge le contenu de m avariable dans w.
m ovw f PO RTB : charge le contenu de W sur le PO R T B

goto boucle ; 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 ST A Tl IS , C ; positionne le bit C a I dans le registre STA TU S


bsf m avariable . 2 : 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 STA TU S , C : positionne le bit C a 0 dans le registre STA TU S


bef m avariable . 2 : 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 0x50 : charge 0x50 dans W


m ovw f m avariable ; « 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 ; D efinition de processeur


^include <p l6F 84.inc> ; D efinitions de variables

_ C O N F IG C P _O F F & W D T O FF & PW R T E O FF & _X T _O SC

; D E C L A R A T IO N S DE V A R IA B L E S *
.****.***********************«*****************************************
CBLOCJC OxOOC : debut de la zone variables
m avariable : 1 : je declare m es variables
cont 1 : 1
cont2 : 1
cont3 : 1
EN D C ; 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 ST A TU S.R P0
M ovlw B 'O O O IIlir
M ovw f 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 IVOOOOOOOO'
M ovw f TR ISB
B CF STATUS.RPO

.*********************************************************♦***********

; PR O G R A M M E PR IN C IPA L *
.*********************************************************************
debut
c lr f PO R TB ;effacer le PortB - 0
c lr f m avariablc ;efTacer m avariable
boucle
in c f m av ariab le,f ; increm enter m avariable
m ovf m avariable,w ; charge le contenu d e m avariable dans vv.
m ovw f PORTB ; charge le contenu de W su r le PO R T B

call tem po ; appel de la s o u s-ro u tin e a P adresse tem po

goto boucle ; bonder

. *********************************************** **********************
; T em porisation dc Lsecondes
.*********************************************************************

tem p o
nop ;pas d ’operation
m ovlw 0x2L
m ovw f cont3
B3 movivv OxBD
m ovw f cont2
B2 m ovlw 0x25
m ovw f cont 1
Bl deefsz c o n tl,f
goto Bl
deefsz c o n t2 .f
goto B2
deefsz cont3.f
goto B3
r e tu rn

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 ; D efinition d e processeur


^include <p 16F84.inc> : D efinitions de variables

C O N FIG C P O FF & 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 ; debut dc la zone variables


m avariable : I ; jc declare m es variables
c o n tl : 1
cont2 : 1
cont3 : 1
EN D C ; 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 STATUS.RPO
M ovlw B’O O O l l l i r
M ovw f TRISA
Movlw B’OOOOOOOO'
M ovw f TR ISB
BCF STA TU S. RPO

.************************************#********************************

PR O G R A M M I PR IN C IPA L ♦
,***#***###*#*#*******************************************************

debut
c lrf PO RTB ;effaccr le PortB =0
c lrf m avariable ;effacer m avariable
boucle
stop
b liss P O R T A ,0
goto stop

m ovlw B '0 0 1 1 1111' : charge le contenu de m avariable dans w.


m ovw f PO R TB : charge le contenu de W sur le PO R T B
call tem po

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 B '0 0 0 0 110' ; charge lc contenu de m avariablc dans w.


m ovw f PO R TB ; charge lc contenu de W sur le PO R T B
call tem po

m ovlw bioi i oi r ; charge le contenu de m avariable dans w.


m ovw f PO R TB ; charge le contenu de \V sur le PO R T B
call tem po

m ovlw B* 1001 111* ; charge le contenu de m avariable dans w.


m ovw f PO RTB ; charge lc contcnu de W sur le PO R T B
call tem po

m ovlw B l 100110’ ; charge le contenu de m avariable dans w.


m ovw f PO RTB ; charge le contenu de W sur le PO R T B
call tem po

m ovlw B i io i i o r ; charge le contcnu d e m avariable dans w.


inovw 1 PO R TB , charge le contenu de W sur le PO R T B
call tem po

m ovlw B’l l l l l O r ; charge le contenu de m avariable dans w.


m ovw f PO RTB ; charge le contenu de W sur le PO R T B
call tem po

m ovlw B'ooo 11 r ; charge le contcnu de m avariable dans w .


m ovw f PO R TB ; charge le contenu dc W sur lc PO R T B
call tem po

m ovlw B'lllllir ; charge le contenu de m avariable dans w.


m ovw f PO R TB ; charge le contenu de W sur le PO R T B
call tem po

m ovlw B'liomr : charge le contenu de m avariable dans vv.


m ovw f PORTB ; charge le contenu de W sur le PO R T B
call tem po

m ovlw B'OOOOOOOO' ; charge le contenu de m avariablc dans w.


m ovw f PORTB : charge le contenu de W sur le POR I B
call tem po

goto boucle : boucler

P a r: Mr MOULOUDj.K 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 ;pas d ’operation
m ovlw 0x2 f;
m ovw f cont3
B3 m ovlw OxBD
m ovw f cont2
B2 m ovlw 0x25
m ovw f cont 1
B1 deefsz c o n tl, f
goto B1
deefsz co n t2 ,f
goto B2
deefsz co n t3 .f
goto B3
re tu rn

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 ; D efinition de proccsscur


"include <p 16F84.inc> ; 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 ; A dresse de depart aprcs reset
.********* 4^ + ****************** *******************
*
; Initialisation
.*********************************************************************
BSF STA TU SJRP0
M ovlw B '0 0 0 1 1111’
M ovw f TR ISA
M ovlw B '00000000'
M ovw f TRISB
BCF ST A T U S,R P0
BCF VarPause.O
.*********************************************************************
%

; PR O G R A M M E PR IN C IPA L *
.*********************************************************************
debut
stopB l
btfsc PO R TA ,0
goto stopB I
stopB2
btfsc PO R TA , 1
goto stopB2
boucle
c lrf PO R TB ;effacer le PortB - 0

P a r: Mr MOULOUDJ.K 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 PO R T A ,0
goto stop
stopc
btfsc PO R T A ,0
goto stopc
m ovlw B 'o o iim i' ; charge le contenu de m avariable dans w.
m ovw f PO RTB ; charge le contenu de W sur le PO RT B
call tem po
m ovlw B '0 0 0 0 1 10’ ; charge le contenu dc m avariable dans w.
m ovw f PORTB ; charge le contenu de W sur le PO RT B
call tem po
m ovlw B' l Ol l Oi r ; charge le contenu de m avariable dans w.
m ovw f PORTB ; charge le contenu de W sur le PO R T B
call tem po
m ovlw B’l O O I l i r ; charge le contenu de m avariable dans w.
m ovw f PO RTB ; charge lc contenu de W sur le PO RT B
call tem po
movlw BT 100110' ; charge le contenu dc m avariable dans w\
m ovw f PO RTB ; chargc le contenu dc W sur lc PO R T B
call tem po
m ovlw B T ionor ; charge le contenu dc m avariable dans w.
m ovw f PORTB ; charge le contenu de W sur le PO RT B
call tem po
m ovlw BTIlllOr ; charge lc contenu dc m avariable dans w.
m ovw f PORTB ; charge le contenu de W sur le PO R T B
call tem po
m ovlw B'0(KJ 111* charge le contenu dc m avariable dan s w.
m ovw f PO RTB ; charge le contenu de W sur lc PO R T B
call tem po
m ovlw BTl l l l i r ; charge le contenu dc m avariable d ans w.
m ovw f PORTB ; charge le contenu de W sur le PO R T B
call tem po
m ovlw BTiomr : charge le contenu de m avariable dans w.
m ovw f PORTB ; charge le contenu de W sur le PO RT B
call tem p o
goto boucic ; 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

btfsc PORTA.O
call p au se
btfsc PO RTA J
goto debut
deefsz com 1.f
goto Bl
NOP
NOP
NOP
NOP
NOP
NOP
deefsz co n t2 ,f
goto B2
deefsz co n t3 ,f
goto B3
r e tu rn

p a u se
stop BPS
btfsc PC)RTA,0
goto stopBPS
B SF VarPausc.O
m ovf PORTB.vv
m ovw f savePB
boucle pause
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 savePB ,w
m ovw f PORTB

stopB PF
btfsc PORTA.O
goto stopBPF
r e tu rn

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

Vous aimerez peut-être aussi