Vous êtes sur la page 1sur 48

Centre de Formation **HBM Corporation**

Formation sur les C PIC 16Fxxx chez


Microchip dArizona

Support de formation premire partie (ver 1.01)

Pour les spcialits : Electronique & Micro-Informatique.


Informatique industrielle.

Par : Mer ATOUI Hamza


Magistre en TELECOM & Traitement numrique,
Ingnieur en lectronique option contrle industriel.

Email : HBMVIPH@hotmail.com

2009-2010
Sommaire de la formation

- Un peu dhistorique.
- Dfinition dun P.
- Le squenceur de P.
- Le Micro-ordinateur.
- Les C PIC chez Microchip.
- Architecture de la CPU MID-RANGE .
- Les modes dadressage.
- Jeu dinstructions et leur codage.
- Organisation de la zone CODE, STACK & gestion des interruptions.
- La structure dun fichier source en assembleur chez Microchip.
- Le PIC 16F84A.
- Synoptique de larchitecture PIC 16F84A.
- Brochage de circuit.
- Organisation de la zone DATA.
- Registres spciaux.
- Priphriques de PIC 16F84A.
o Les ports E/S (PORTA et PORTB).
o LEEPROM de 64 bytes.
o Le TIMER (TMR0)
o Le WDT et le mode mise en veille.
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Un peu dhistorique :
Lapparition du P est due lvolution de lindustrie lectronique. Elle rpond au
besoin dun circuit intgr LSI (Large Scale Integration) ou VLSI (Very LSI).

En effet, la technologie permet dintgrer des centaines de milliers de transistors sur


une puce de silicium de quelques mm2.

Le concept du P a t cr par la socit INTEL. Cette socit cre en 1968, tait


spcialise dans la conception et la fabrication des puces mmoires. A la demande de deux ses
clients, fabricants des calculatrices et de terminaux. INTEL tudia une unit de calcul
implmente sur une seule puce. Ceci donna naissance en 1971 au premier P le 4004 qui
tait une unit de calcul de 4 bits fonctionnant 108 KHz. Il rsultait de lintgration
denviron de 2300 transistors.

Dfinition dun P :
Le P est un ou plusieurs circuits LSI/VLSI qui ralisent des fonctions de traitement.
Dont le noyau de P est le squenceur.

Le squenceur de P :
Cest en ensemble de circuits logique squentiel pour dcoder une instruction puis
gnrer les diffrents signaux ncessaires pour excuter cette dernire.

Dans ce qui suit, on va raliser un squenceur qui excute lopration de transfert entre 2
registres de N bits.

Synoptique des registres :

RD\ CS\
Reg A
WR\

N bits

RD\
Reg B
CS\
WR\

Description des signaux :


RD\ : signal de lecture.
WR\ : signal dcriture.
CS\ : signal de slection registre.

On appel ses signaux, les signaux du contrle, ainsi que un bus commun entre le REGA et
REGB de N bits pour le transfert de donnes.

1
Formation sur les PIC 16Fxxx par : ATOUI Hamza

La question qui se pose est comment raliser une logique de contrle pour transfrer le
contenue du REGA vers le REGB ?

Pour raliser cette logique, il faut dabord suivre lvolution des signaux du contrle de
chaque registre pour le transfert. On donne la table suivante :

Temps Reg A Reg B Commentaires


CS\ RD\ WR\ CS\ RD\ WR\
T 1 1 1 1 1 1 Etat de repos
T+1 0 1 1 1 1 1 Activer le reg A
T+2 0 0 1 1 1 1 Lecture de reg A
T+3 0 0 1 0 1 1 Activer le reg B
T+4 0 0 1 0 1 0 Ecriture dans le reg B

Daprs cette table, lopration de transfert se fait sur 4 tapes. Donc la ralisation de ce
squenceur ncessite un compteur. A chaque incrmentation, on excute une ligne de la table
des signaux du contrle.
Vcc
Le circuit de squenceur :
R

D
E
C
O
Compteur D
E
U
R

Horloge Point de
Connexion
Entre la
RD\ RD\ Ligne et
CS\ WR\ CS\ WR\
La colonne

Vers les signaux Vers les signaux


de contrle de Reg A de contrle de Reg B

A chaque incrmentation, le dcodeur slectionne une ligne de contrle. On appel lensemble


de lignes de contrle le micro code de linstruction de transfert de REGA vers REGB.

2
Formation sur les PIC 16Fxxx par : ATOUI Hamza

On conclure que le P est un lment trs important dans le dveloppement Soft/Hard. Dont
la domaine dapplication est illimit.

Question : est ce que le P tout seule rsoudre un problme ?


Rponse : tout simplement, cest impossible par ce que le P est un composent qui sert
raliser un micro-ordinateur.

Le micro-ordinateur :
Cest une carte lectronique compose de P ou plusieurs, de circuits mmoires, et des
circuits E/S.
- le P ou la CPU pour excuter un traitement.
- Les circuits mmoires pour le stockage de donnes (Code, Data).
- Les circuits E/S pour raliser des interfaces de manipulation du monde externe (HDD,
Clavier, Ecran, Souris, ).
Regardez larchitecture en gnral dun micro-ordinateur de type VON NEUMAN dans la
figure suivante.

Horloge

DATA CODE

P
(CPU) Bus systme

E/S

On gnral les micro-ordinateur sont fabriqus pour rsoudre des problmes de grandes
complexits, mais pour des problmes de moyennes et faibles complexits comment faire ?
Est ce que cest pratique dutiliser un micro-ordinateur pour les rsoudre ?

Eh bien, ou est la solution ? La solution est de raliser des micro-ordinateurs de taille rduite
dans un seul botier, quon appel mono-chip, constitu de CPU, de mmoires, et des E/S du
faible capacit. Ce mono-chip est appel dans lindustrie par le nom microcontrleur .

Les microcontrleurs sont des micro-ordinateurs en version compacte trs utilise dans
lindustrie, ces circuits sont fabriqus par plusieurs socits comme INTEL, MOTOROLA,
ST, ATMEL, PHELIPS, PARALAXE et Microchip

Daprs cette introduction sur les P et les micro-ordinateurs (C), on va tudier seulement
les C chez Microchip dArizona.

3
Formation sur les PIC 16Fxxx par : ATOUI Hamza

MICROCHIP
ICROCHIP est un fabricant de semi-conducteurs fond en 1989 partir dune division de
GENEREL INSTRUMENTS. Microchip produit les microcontrleurs PIC, des composants
radiofrquences, de gestion des batteries, des interfaces analogiques etc.

Les C PIC chez Microchip :


Les C PIC sont bass sur une architecture de type HARVARD, il y a une sparation
entre les bus de la partie mmoire CODE et DATA comme indique cette figure :

DATA CPU CODE

Et une CPU de type RISC (Reduce Instruction Set Computer). Tous les C PIC de la srie
12C 18C ce base sur 1 de ces 3 CPUs de 8bits BASE-LINE MID-RANGE
HIGH-END .

Une simple question qui se pose est : pourquoi cette volution ? Tous simplement, pour des
besoins demands par le march industriel Traitement en temps rel, lintgration dun
RTOS premptif (Preempted Real Time Operating System)

Dans cette formation, on va tudier la CPU MID-RANGE de la srie 16Fxxx.

4
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Architecture de la CPU MID-RANGE :

DATA CPU STACK


7 8 level
Stack
128 bytes
PC
9 RP0 RP1
M 9 2 PCH PCL
U
X 13
IRP
9 1 PCLATH
2k x 14bits
128 bytes
FSR
8 8
8
2k x 14bits
8 INTCON PIE2
8
PIE1 PIR1, 2
128 bytes
Registres des interruptions
2k x 14bits
U.A.L Unit de dcodage et
3 3 De contrle
8

128 bytes
W REG STATUS 2k x 14bits
Registre dinstruction
14

CODE

5
Formation sur les PIC 16Fxxx par : ATOUI Hamza

On remarque facilement larchitecture de type HARVARD sur la CPU MID-RANGE . La


partie CODE a un espace de 8k x 14bits segmente en 4 pages de 2k chacune ; La partie
DATA a un espace de 512 x 8bits segment en 4 banques de 128 chacune ; et une PILE
STACK de 8 niveaux contrler par la CPU.

Un ensemble de registres pour contrler les interruptions (INTCON, PIE1 & 2, PIR1 & 2),
un accumulateur sur 8bits W reg , un registre dtat STATUS ,un registre pointeur
FSR File Select Register sur 8bits avec un ensemble de 3 bits RP0, RP1, IRP pour
laccs DATA, une U.A.L pour raliser doprations logiques & arithmtiques sur 8bits, un
compteur programme PC sur 13 bits pour balayer un espace de 8k, un buffer PCLATH
utilis pour le mode pagin code (on explique plus tard), et un registre dinstruction sur 14bits
pour la rception des instructions partir de la zone CODE.

Les modes dadressage :


Le MID-RANGE utilise 3 modes dadressage sont :
- Adressage immdiat.
- Adressage direct.
- Adressage indirect.
Dans ladressage immdiat le MID-RANGE fait une opration de W reg avec une constante
sur 8bits ou le transfert dune constante sur 11bits vers le PC.

Mais dans le cas dadressage direct & indirect le MID-RANGE fait une opration entre un
FILE case mmoire de lespace DATA et le W reg.

On distingue partir de larchitecture MID-RANGE que ce P utilise un bus dadresse de


7bits partir de registre dinstruction avec les 2bits RP0, RP1 de STATUS pour raliser un
bus ladresse de 9bits dun FILE dans la zone DATA (adressage direct), et un autre chemin
dadressage par le FSR et le bit IRP de STATUS pour raliser le mme bus de 9bits
(adressage indirect).

Daprs le jeu dinstruction de MID-RANGE, ce P utilise le mode dadressage direct, Eh


bien, comment slectionnez lautre mode indirect ?

Microchip utilise une simple astuce pour la slection du mode dadressage direct ou indirect
dans la zone DATA, dont lalgorithme est le suivant :

Si les 7bits dadresse dans linstruction 0 alors


Le bus dadresse FILE de 9bits =
RP1 RP0 7bits dadresse dans linst

Sinon (les 7bits dadresse dans linstruction = 0)


Le bus dadresse FILE de 9bits =
IRP 8bits de registre FSR
Fin-Si.

6
Formation sur les PIC 16Fxxx par : ATOUI Hamza

En rsum : le schma gnral pour ladressage direct et indirect dans la zone DATA

0 1
7bits dadresse
dans linstruction FSR
Bank0 Bank1 Bank2 Bank3
7 8

9 9
RP1 RP0 2 1 IRP

00 01 10 11

Exemple sur les modes dadressage :

Adressage Immdiat : chargement de W reg par la constante 0x59.

Code :
MOVLW 0x59 ; W 0x59

Adressage Direct :
Exemple 1 : Transfert de contenue de W reg vers le FILE dadresse (0x30).

Code :
MOVWF 0x30 ; (0x30) W reg

0x30

W reg

Exemple 2 : Transfert de contenue de FILE dadresse (0x40) vers le W reg.

Code :
MOVF 0x40,W ; W (0x40)

0x40

W reg

7
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Adressage Indirect : charger le FILE dadresse (0x50) par la valeur 0x55 dont le mode
dadressage est indirect.

Cet exercice se fait en 2 tapes :


1- On met ladresse de FILE dans le registre FSR (pointeur mmoire).
2- On utilise ladresse 0x00 pour lopration de transfert ou le registre virtuel INDF
indiqu par Microchip par ce que INDF = 0x00.

Code :
MOVLW 0x50
MOVWF FSR Etape 1

MOVLW 0x55 Etape 2


MOVWF INDF

FSR 0x50

W reg

0x55

N.B: vous remarquez que je nai pas utilis les bits RP1, RP0 et IRP pour ladressage direct et
indirect, tous court, on na pas tudi jusqu prsent le jeu dinstructions et la structure de
registre STATUS.

8
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Jeu dinstructions & leur codage :


Le fonctionnement de MID-RANGE est de type RISC 35 instructions ; elle est constitue de
3 entits :
- lU.A.L et le registre STATUS.
- Le W reg Accumulateur .
- La RAM FILE registers .

Schma fonctionnel de lunit dexcution de MID-RANGE :

La majorit des oprations ralises par le MID-RANGE passe par le W reg et lU.A.L affect
seulement 3 bits de STATUS sont : (C, DC, Z).

La structure de STATUS : ce registre contient les bits dtat de lU.A.L, les bits de slection
des banques DATA, et les bits dtat de C.

IRP : bit de slection de banque mmoire dans le mode dadressage indirect.


- 1 : banque 2, 3.
- 0 : banque 0, 1.
RP1 :RP0 : bits de slection de banque mmoire dans le mode dadressage direct.
- 11 : banque 3.
- 10 : banque 2.
- 01 : banque 1.
- 00 : banque 0.
TO\ : Time-out bit.
PD\ : Power-down bit.
Z: le flag zro de lU.A.L
- 1 : le rsultat de lopration est nul.
- 0 : le rsultat diffrent de zro.
DC : le flag Digit-carry ou demi-retenue. Aprs une opration daddition ou soustraction ce
flag positionne sil y a un dbordement sur les 4 bits du faible.
C : le flag carry ou retenue. Aprs une opration daddition ou soustraction ce flag positionne
sil y a un dbordement sur 8bits.

9
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Chaque instruction de MID-RANGE est code sur 14bits, ces instructions regroupes en 3
groupes selon le codage :
- Orient mmoire (FILE).
- Orient bit sur FILE.
- Orient constante (valeur immdiate).

Mais selon la fonction, on a 5 groupes :


- Transfert : MOVLW, MOVWF, MOVF.
- Arithmtique : ADDLW, ADDWF, SUBLW, SUBWF, DECF, INCF, DECFSZ,
INCFSZ, COMF, CLRW, CLRF.
- Logique : ANDLW, ANDWF, IORLW, IORWF, XORLW, XORWF, RLF, RRF,
SWAPF.
- Orient bit : BCF, BSF, BTFSC, BTFSS.
- Contrle : GOTO, CALL, RETFIE, RETLW, RETURN, CLRWDT, NOP, SLEEP.

10
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Instructions de Transfert :
Groupe : MOVLW, MOVWF, MOVF.

Linstruction MOVLW : Charge une constante de 8bits dans le registre W reg.


Syntaxe : MOVLW k
0 k 255.
Nombre de cycle : 1.
STATUS : rien.

Linstruction MOVWF : Charge le registre W dans un FILE.


Syntaxe : MOWWF FILE
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
Nombre de cycle : 1.
STATUS : rien.

Linstruction MOVF : Copier le FILE dans une destination.


Syntaxe : MOVF FILE, D
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE lui mme).
Nombre de cycle : 1.
STATUS : Z.

Instructions Arithmtiques :
Groupe : ADDLW, ADDWF, SUBLW, SUBWF, DECF, INCF, DECFSZ, INCFSZ, COMF,
CLRW, CLRF.

Linstruction ADDLW : Additionner le registre W et une valeur immdiate, la somme est


stocke en W reg.
Syntaxe : ADDLW k
0 k 255.
k + W W.
Nombre de cycle : 1.
STATUS : C, DC, Z.

Linstruction ADDWF : Additionner le registre W reg et un FILE, la somme est stocke


dans la destination (le W reg ou le FILE).
Syntaxe : ADDWF FILE, D
FILE + W Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : C, DC, Z.

11
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Linstruction SUBLW : Soustraction entre une valeur immdiate et le registre W reg.


Syntaxe : SUBLW k
0 k 255.
k - W W.
Nombre de cycle : 1.
STATUS : C, DC, Z.

Linstruction SUBWF : Soustraire le contenu du registre W reg du contenu du FILE, rsultat


dans la destination (le W reg ou le FILE).
Syntaxe : SUBWF FILE, D
FILE - W Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : C, DC, Z.

Linstruction DECF : Dcrmente un FILE et range le rsultat dans la destination (le W reg
ou le FILE).
Syntaxe : DECF FILE, D
FILE -1 Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : Z.

Linstruction INCF : Incrmente un FILE et range le rsultat dans la destination (le W reg
ou le FILE).
Syntaxe : INCF FILE, D
FILE +1 Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : Z.

Linstruction DECFSZ : Dcrmente un FILE et sauter linstruction suivante si la


destination = 0.
Syntaxe : DECFSZ FILE, D
FILE -1 Destination puis sauter linstruction suivante si la destination = 0.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1 ou 2.
STATUS : rien.

12
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Linstruction INCFSZ : Incrmente un FILE et sauter linstruction suivante si la destination


= 0.
Syntaxe : INCFSZ FILE, D
FILE +1 Destination puis sauter linstruction suivante si la destination = 0.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1 ou 2.
STATUS : rien.

Linstruction COMF : Stocke dans la destination le complment 1 de FILE.


Syntaxe : COMF FILE, D
FILE\ Destination. (Inversion de tous les bits de FILE).
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : Z.

Linstruction CLRW : Efface le contenu du registre W reg.


Syntaxe : CLRW
0 W reg.
Nombre de cycle : 1.
STATUS : Z = 1.

Linstruction CLRF : Efface le contenu du FILE.


Syntaxe : CLRF FILE
0 FILE.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
Nombre de cycle : 1.
STATUS : Z = 1.

Instructions Logiques :
Groupe : ANDLW, ANDWF, IORLW, IORWF, XORLW, XORWF, RLF, RRF, SWAPF.

Linstruction ANDLW : Opration "ET" entre le contenu du registre W reg et une valeur
immdiate, le rsultat dans W reg.
Syntaxe : ANDLW k
0 k 255.
k ET W W.
Nombre de cycle : 1.
STATUS : Z.

13
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Linstruction ANDWF : Opration "ET" entre le contenu du registre W et un FILE, le


rsultat dans la destination.
Syntaxe : ANDWF FILE, D
FILE ET W Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : Z.

Linstruction IORLW : Opration logique "OU" entre le registre W reg et une valeur
immdiate, le rsultat dans le W reg.
Syntaxe : IORLW k
0 k 255.
k OU W W.
Nombre de cycle : 1.
STATUS : Z.

Linstruction IORWF : Opration "OU" entre le contenu du registre W et un FILE, le


rsultat dans la destination.
Syntaxe : IORWF FILE, D
FILE OU W Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : Z.

Linstruction XORLW : Opration logique XOR (ou exclusif) entre le contenu de W reg et
une valeur immdiate, le rsultat dans le W reg.
Syntaxe : XORLW k
0 k 255.
k XOR W W.
Nombre de cycle : 1.
STATUS : Z.

Linstruction XORWF : Opration "XOR" entre le contenu du registre W et un FILE, le


rsultat dans la destination.
Syntaxe : XORWF FILE, D
FILE XOR W Destination.
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : Z.

14
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Linstruction RLF : Rotation gauche dun FILE au travers du bit carry, le rsultat va dans
la destination.
Syntaxe : RLF FILE, D
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : C Bit7 du FILE.

C 7 0

Linstruction RRF : Rotation droite dun FILE au travers du bit carry, le rsultat va dans la
destination.
Syntaxe : RRF FILE, D
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : C Bit0 du FILE.
C 7 0

Linstruction SWAPF : change de quartet du poids faible et le quartet du poids fort dun
FILE, le rsultat dans la destination.
Syntaxe : SWAPF FILE, D
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
D est un bit indique la destination (D = 0 la destination est le W reg, D = 1 la destination est le
FILE).
Nombre de cycle : 1.
STATUS : rien.

15
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Les instruction Orient bit :


Groupe : BCF, BSF, BTFSC, BTFSS.

Linstruction BCF : Efface le bit spcifi dun FILE.


Syntaxe : BCF FILE, Bit
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
0 Bit 7.
FILE {bit} 0.
Nombre de cycle : 1.
STATUS : rien.

Linstruction BSF : Positionne le bit spcifi dun FILE 1


Syntaxe : BSF FILE, Bit
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
0 Bit 7.
FILE {bit} 1.
Nombre de cycle : 1.
STATUS : rien.

Linstruction BTFSC : Vrifier l'tat du bit spcifi dun FILE et sauter l'instruction suivante
si le bit = 0.
Syntaxe : BTFSC FILE, Bit
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
0 Bit 7.
Sauter si (FILE {Bit}=0) linstruction suivante.
Nombre de cycle : 1 ou 2.
STATUS : rien.

Linstruction BTFSS : Vrifier l'tat du bit spcifi dun FILE et sauter l'instruction suivante
si le bit = 1.
Syntaxe : BTFSS FILE, Bit
FILE est une adresse sur 7 bits (128 emplacements possible banque-).
0 Bit 7.
Sauter si (FILE {Bit}=1) linstruction suivante.
Nombre de cycle : 1 ou 2.
STATUS : rien.

16
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Les instructions de contrle :


Groupe 1: GOTO, CALL, RETURN, RETLW, RETFIE.

Avant dtudier ce groupe, il faut dabord parler sur le registre compteur ordinal PC . Ce
registre de longueur 13 bits (balayage de 8k emplacements), et daprs larchitecture de
MID-RANGE ce dernier divis en 2 registres (PCL et PCH) avec le PCL est adressable
par le bus interne de la zone DATA (vous pouvez manipuler comme un FILE), mais le PCH
est adressable partir du buffer PCLATH seulement les 5bits du poids faible par ce que le
PCH est un registre de 5bits.

Dans la manipulation de PCL comme destination le MID-RANGE ralise lopration


suivante :

- Transfert du rsultat de lU.A.L vers le PCL et au mme temps, charger le PCH par les
5bits du poids faible de PCLATH dans les bits 812 du PC.
- Noublie pas que nimporte quelle modification dans le PC simplique un changement
de chemin dexcution du programme en cours.

Linstruction GOTO : Branchement inconditionnel ladresse prsente par linstruction.


Syntaxe : GOTO ADR
ADR est une valeur immdiate sur 11bits.
Le PC sera modifie par la faon suivante :

Vous remarquez que ADR est de 11bits un espace de 2k (une page du code), mais pour
faire un saut vers une autre page comment faire ? Daprs le schma de la figure au dessus, on
distingue le mcanisme rel de lexcution dinstruction GOTO par : le chargement des bits

17
Formation sur les PIC 16Fxxx par : ATOUI Hamza

010 du PC par ladresse indique par linstruction, et le reste (bits 11 12) par les bits
34 de PCLATH.

Eh bien, avant de faire un saut vers une adresse, il faut dabord slectionner la page du saut
par la modification des bit 34 de PCLATH (00 : page0, 01 : page1, 10 : page2, 11 :page3).

Nombre de cycle : 2.
STATUS : rien.

Linstruction CALL : appel dun sous-programme (soit une procdure ou une fonction).
Syntaxe : CALL ADR
ADR est une valeur immdiate sur 11bits.
La modification de PC est identique comme linstruction GOTO.

Mais, dans cette instruction le MID-RANGE excute les oprations suivantes :


- sauvegarde ladresse de retour (PC+1) dans le TOS (Top Of Stack) de la pile systme
de 8 niveaux et le pointeur de la pile incrmente de 1.
- Puis sauter vers ladresse indique par linstruction.
Nombre de cycle : 2.
STATUS : rien.
TOS PC+1
Main Program Ladresse de retour
----------
SOMME
----------
----------
----------
----------
----------
----------
----------
----------
PC CALL SOMME
----------
PC+1 ----------
----------
----------
----------
----------
RETURN
----------

Les instructions de retour sous programme RETURN, RETLW: ces instructions sont
utilises pour complter un sous-programme (ajouter la fin dun sous-programme) comme
indique la figure au dessus.
Le mcanisme dexcution de linstruction RETURN est le retour vers le programme
principal quon a quitt prcdemment par linstruction CALL est le chargement du PC par le
TOS (Top Of Stack) et dcrmente le pointeur de la pile par 1. Mais pour RETLW, le MID-
RANGE fait le mme travail que RETURN plus renvoyer une valeur immdiate de 8bits
prsente par linstruction dans le W reg.

Syntaxe : RETURN
RETLW k ; 0 k 255.
Nombre de cycle : 2.
STATUS : rien.

18
Formation sur les PIC 16Fxxx par : ATOUI Hamza

TOS PC+1
Ladresse de retour
Main Program
----------
SOMME
----------
----------
----------
----------
----------
----------
----------
----------
PC CALL SOMME
----------
PC+1 ----------
----------
----------
----------
----------
RETURN
----------
PC TOS

Linstruction RETFIE : cette instruction est utilise pour complter le ISR (Interrupt Service
Routine) (ajouter la fin de lISR).
Le travail a ralis par linstruction RETFIE est le retour vers le programme principal quon a
quitt prcdemment par :
- Le chargement du PC par le TOS (Top Of Stack).
- Dcrmente le pointeur de la pile par 1.
- Mettre le GIE1 (Autorisation de la rception dune nouvelle interruption par ce que
le branchement vers le ISR met le GIE0 pour ne pas gner le traitement de
linterruption en cours).

TOS PC+1
Main Program
GIE 0
----------
ISR (vecteur 4)
----------
----------
Interruption ---------- 2
----------
----------
----------
----------
----------
1 PC SUBLW 0x50
----------
PC+1 ----------
----------
----------
----------
---------- 3
RETFIE
----------
PC TOS
GIE 1

Nombre de cycle : 2.
STATUS : rien.

19
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Groupe 2 : NOP, CLRWDT, SLEEP.

Linstruction NOP : aucune opration.


Syntaxe : NOP
Nombre de cycle : 1.
STATUS : rien.

Linstruction CLRWDT : Rinitialise le temporisateur du chien de garde.


Syntaxe : CLRWDT
Nombre de cycle : 1.
STATUS : TO\, PD\.

Aprs lexcution de cette instruction le MID-RANGE fait le travail suivant :


- WDT 0.
- Prescaler WDT 0.
- TO\ 1.
- PD\ 1.

Linstruction SLEEP : Mise en veille du microcontrleur (Power Down mode).


Syntaxe : SLEEP
Nombre de cycle : 1.
STATUS : TO\, PD\.

Aprs lexcution de cette instruction le MID-RANGE fait le travail suivant :


- WDT 0.
- Prescaler WDT 0.
- TO\ 1.
- PD\ 0.
- Arrte loscillateur du microcontrleur.

20
Formation sur les PIC 16Fxxx par : ATOUI Hamza

La srie des exercices N :1

But : manipulation des modes dadressage & le jeu dinstructions du MID-RANGE.

Exercice 1 :
Ecrire un programme qui fait le travail suivant :
- Mettre dans le FILE dadresse (0x30) la valeur 0x55.
- Mettre dans le FILE dadresse (0x40) la valeur 0x34.
- Calculer la somme de ces 2 FILES puis ranger le rsultat dans le FILE dadresse
(0x50).

Exercice 2 :
Ecrire un programme qui initialise la zone mmoire (0x300x40) dans la banque 2 par zro.

Exercice 3 :
Ecrire un programme qui calcul la parit arithmtique de FILE (0x55), sil est pair, mettre
dans le FILE (0x30) dans la banque 3 le caractre P, sinon mettre le caractre I.

Exercice 4 :
Ecrire un programme qui calcul la somme de la zone mmoire (0x500x60) et mettre le
rsultat dans le FILE dadresse (0x10) situ la banque 1.

Exercice 5 :
Ecrire un programme qui fait la multiplication par 2 de tous les FILES de (0x250x35) dans
la banque2.

Exercice 6 :
Ecrire un programme qui fait la recherche de la premire occurrence de la valeur 0x00 dans la
zone mmoire (0x600x70) et mettre ladresse dans le FILE (0x10).

Exercice 7 :
Ecrire un sous programme qui ralise la multiplication de 2 FILES (M1 et M2) et mettre le
rsultat dans les 2 FILES (H et L) par ce que la multiplication de 2 FILES de 8bits donne un
rsultat sur 16bits.

M1*M2 (HL)
Avec M1 : le FILE1, M2 : le FILE2, HL : 2 FILES de rsultat, dont lalgorithme est le
suivant :
H0;
L M1 ;
Compteur 8 ;
Tant que (Compteur >0)
Dbut
Si ( L {0} = 1 ) alors
H H+M2 ;
FinSi.
Dcalage droite de la paire (HL) ;
Compteur Compteur -1 ;
FinTantQue.

21
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Exercice 8 :
Ecrire un sous programme qui ralise la division entre 2 FILES et mettre le quotient dans un
FILE et le reste dans un autre FILE.

A B

R Q

R0;
QA;
Compteur 8 ;
Tant que (Compteur > 0)
Dbut
Dcalage gauche de la paire (RQ) ;
Si (R < B) alors
Q {0} 0 ;
Sinon
R R-B ;
Q {0} 1 ;
FinSi.
Compteur Compteur-1 ;
FinTantQue.

22
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Organisation de la zone CODE, STACK & gestion des interruptions :


Si on rappel bien larchitecture de MID-RANGE, la zone CODE est un bloc mmoire
reli la CPU par un bus dadresse de 13bits et un bus de donnes de 14bits (la taille dune
instruction), et le zone STACK (la pile) est une mmoire de 8 niveaux, chaque niveau a une
taille de 13bits, la CPU utilise cette pile pour empiler et dpiler les adresses de retour a
chaque fois quon a un appel dun sous programme ou un traitement dune interruption, cette
zone est contrler par la CPU seulement, on na pas dinstructions de manipulation de pile
comme le P 8086 chez INTEL (PUSH, POP).

Microchip appel un emplacement mmoire dans la zone CODE par le nom


vecteur , un vecteur porte une instruction complte (OPCODE & OPERANDES). Cette
zone est configure par 2 vecteurs essentiels, le vecteur de RESET ladresse 0x000 (le
premier emplacement), et le vecteur dinterruption ladresse 0x004 (vecteur numro 4).

23
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Gestion des interruptions : le MID-RANGE gre les interruptions gnres par leurs
priphriques. La gestion dune interruption sous MID-RANGE se fait par :
- complter lexcution de linstruction en cours.
- Vrifier si GIE = 1 (Global Interrupt Enable).
- Si le cas, empiler ladresse de retour dans le TOS.
- Mettre GIE 0 pour ne pas gner le traitement de linterruption en cours.
- Brancher vers le vecteur numro 4 (0x004), dans cette adresse en trouve le dbut de
lISR.

Le retour vers le programme interrompu prcdemment se fait par linstruction RETFIE


situe la fin de l ISR, cette instruction excute le travail suivant :
- mettre GIE 1 pour donne la main une autre demande dinterruption.
- Dpiler ladresse de retour partir du TOS dans le PC.

Comme indique la figure suivante :

TOS PC+1
Main Program
GIE 0
----------
ISR (vecteur 4)
Interruption ----------
----------
Si GIE=1 ---------- 2
----------
----------
----------
----------
----------
1 PC SUBLW 0x50
----------
PC+1 ----------
----------
----------
----------
---------- 3
RETFIE
----------
PC TOS
GIE 1

Remarque : vous remarquez que chaque fois si on a une demande dinterruption le MID-
RANGE branche toujours vers le mme vecteur (vecteur 4) ladresse CODE 0x004.
Comment identifiez le priphrique qui gnre cette demande dinterruption et excutez le
ISR correspondant ?

Pour rpondre cette question, on revient lensemble de registres dinterruptions dans le


MID-RANGE, leur nombre augmente et diminue selon le nombre de priphriques intgrs
dans le C, ces registres contient les bits dautorisation de la demande dinterruption et les
bits indicateurs dinterruptions (flag). Le registre le plus important est le INTCON, la
structure de ce dernier diffrent dun C lautre, et le bit le plus important dans ce registre
est le bit 7 GIE (Global Interrupt Enable).

24
Formation sur les PIC 16Fxxx par : ATOUI Hamza

On prend lexemple de PIC16F84, ce C gre 4 sources dinterruptions sont :


- dbordement du TIMER0.
- Changement de ltat de la ligne RB0/INT.
- Fin de lcriture dans lEEPROM.
- Changement dtat des pins RB4RB7.
Les 2 registres responsables sur les bits dautorisation et flag sont : INTCON, EECON1. Dont
la synoptique de gnration dune demande dinterruption est la suivante :

Pour excuter le ISR correspondant la demande dinterruption dun priphrique, on fait le


test des bits flag aprs le branchement vers le vecteur dinterruption (vecteur 4). Le premier
flag qon va tester, cest linterruption de la plus haute priorit, la priorit sera fixe par le
programmeur lui-mme, on appel cette gestion par la mthode de SOFTWARE POLLING.

Organigramme de gestion SOFTWARE POLLING pour le PIC16F84 :

Begin ISR

Yes ISR TIMER


T0IF=1

No

Yes ISR RB
RBIF=1

No

Yes ISR INT


INTF=1

No

Yes ISR EEPROM


EEIF=1

No

End ISR

25
Formation sur les PIC 16Fxxx par : ATOUI Hamza

La structure dun fichier source en assembleur chez Microchip :


Dans cette partie du cours, on va tudier comment crer un projet sous
lenvironnement MPLAB IDE de Microchip (ver 7.6 8.03) ? Avant de commencer, il faut
connue la structure dun fichier source en assembleur. Microchip propose une structure simple
pour crire un fichier source, on commence par :
- Dclaration de C.
- Inclusion des bibliothques.
- Configuration des fusibles de C.
- Dfinitions des constantes & les macro codes sil existe.
- Dclaration des variables
- Rdaction de la partie CODE.
- Et finir le fichier source par ltiquette END .
Exemple sur le PIC16F84 :

LIST P=16F84 ; dclaration de C

#include <P16F84.INC> ; inclusion des bibliothques

__CONFIG _CP_OFF & _PWRTE_OFF & ; Config des fusibles

; Dfinition des constantes


#define ISR 0x004
#define Reset 0x000

; Dclaration des variables


CBLOCK 0x0C
Var1 :1
Var2 :1
Tab1 :5
ENDC

; partie CODE
ORG Reset
GOTO MAIN

ORG ISR
RETFIE

MAIN
------
------
------

END

Maintenant, on passe vers la cration dun projet sous MPLAB IDE. A partir de la version
6.xx les choses sont simplifies, on suit les tapes suivantes pour le crer (ver 8.02):
- double click sur licne de logiciel MPLAB IDE sur votre bureau.
- Aller vers le menu ProjectProject Wizard
- elle apparaisse la fentre Project Wizard puis cliquer sur le bouton suivant .
- Slectionner le C par exemple le PIC16F84 puis cliquer sur le bouton suivant .
- Slectionner le langage de programmation dans ce cas, on choisi Microchip
MPASM Toolsuite puis cliquer sur le bouton suivant .

26
Formation sur les PIC 16Fxxx par : ATOUI Hamza

- Cliquer sur le bouton Browse , nommer votre projet, puis cliquer sur le bouton
suivant .
- Cliquer sur le bouton suivant .
- Cliquer sur le bouton Terminer .
- Aller vers le menu ViewProject (elle apparaisse la fentre de votre projet dans
linterface principale de MPLAB IDE).
- Aller vers le menu FileNew (elle apparaisse une fentre blanche pour crire le
fichier source en assembleur MPASM).
- Aprs lcriture du code source, sauvegarder ce dernier sous lextension .asm dans
le mme rpertoire que le projet.
- Aller vers la fentre de votre projet puis cliquer sur menu Source Files par le click
droite de la souris.
- Il apparaisse un sous menu, cliquer sur Add Files .
- Slectionner votre source sous lextension .asm .
- Sauvegarder le projet par le menu ProjectSave Project.
- Compiler le projet par le menu ProjectBuild All.
- Sil y a des erreurs, corriger les puis rpter ltape de compilation.

27
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Le PIC 16F84A :
Cest un C de la srie 16Fxxx avec un noyau de type MID-RANGE, et des fonctionnalits
E/S qui permettent de raliser des montages avec un minimum de composants externes.
Daprs le DATA SHEET, on distingue particulirement :
- une CPU de type MID-RANGE (35 instructions, codage sur 14bits).
- Partie CODE de 1Kx14bits (1024 instructions = page).
- Partie DATA compose de 2 banques, seulement 68 bytes sont utilises comme RAM.
- Un ensemble de priphriques sont :
o 2 ports E/S (PORTA de 5 lignes, PORTB de 8 lignes).
o TIMER de 8 bits.
o EEPROM de 64 bytes.
o Un chien de garde (WDT).
- compatible avec les PIC 16CR84, 16C84, 16F84.

Synoptique de larchitecture PIC 16F84A :

CODE CPU RAM


1Kx14bits MID-RANGE 68 bytes

P TMR0 (8bits) P
O O
R
EEPROM R
5 T WDT 64 bytes T 8
A B

Brochage de circuit :

28
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Organisation de la zone DATA :


La zone DATA du PIC 16F84A est divise en 2 banques, compose de lespace RAM (68
bytes) et les registres spciaux de configuration et de manipulation de priphriques et le C
lui-mme.

29
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Registres spciaux :
Le PIC 16F84A a 15 registres spciaux situs dans la mmoire des donnes (Data RAM).

30
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Priphriques de PIC 16F84A :

Les ports dE/S :


Le 16F84A possde 13 entres/sorties (5 dans le port A et 8 dans le port B). Chaque E/S est
configurable individuellement (en entre ou bien en sortie).

Le PORTA : est port dE/S possde 5 lignes, configurable par le registre spcial TRISA ,
ce dernier responsable sur la direction des lignes (TRISA {i} = 1 la ligne en entre,
TRISA {i} = 0 la ligne en sortie), seule les 5bits du poids faible sont utiliss.
Exemple de configuration :
RA0RA1 en sortie.
RA2RA4 en entre.
Dans ce cas le TRISA sera effectu par la valeur 0x1C.
N.B : partir de la table des registres spciaux, le TRISA situ la banque1 il faut passer
vers cette banque avant deffectuer ce registre.
Code :
; Passage vers la banque 1
BSF STATUS, RP0
; Chargement de TRISA par la valeur 0x1C
MOVLW 0x1C
MOVWF TRISA

Vous pouvez configurer les pins RA0RA3 soit en entre ou en sortie sans aucun problme
la particularit de la pin RA4, par ce que cette ligne est configure en drain ouvert et en plus
utilise comme entre horloge externe de module TMR0, comme indique la figure suivante :

Schma des pins RA0 RA3 Schma de la pin RA4/T0CKI

31
Formation sur les PIC 16Fxxx par : ATOUI Hamza

La broche RA4 possde une sortie de type drain ouvert. Cela veut dire qu'elle ne peut pas
fournir de courant. Par contre, elle peut en consommer :

Les registres responsables de manipulation/configuration du PORTA sont :


- Le registre PORTA situ dans la banque 0, utilis pour la lecture et lcriture vers
leurs pins.
- Le registre TRISA situ dans la banque 1, utilis pour la configuration de la direction
des pins.

Le PORTB : est port dE/S possde 8 lignes, configurable par le registre spcial TRISB ,
ce dernier responsable sur la direction des lignes (TRISB {i} = 1 la ligne en entre,
TRISB {i} = 0 la ligne en sortie), avec une rsistance de PULL-UP chaque ligne du
PORTB et activable par le bit7 RBPU\ de registre OPTION_REG , ces rsistances de
PULL-UP sont dsactives si les lignes en sortie. Ces dernires sont dsactives
automatiquement lor dun Power-On Reset.

Schma des pins RB0RB3 Schma des pins RB4RB7

32
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Les pins RB4RB7 gnre une interruption lor dun changement dtat dune de ces lignes
par rapport la dernire lecture du PORTB, le flag qui indique cette interruption est le bit0
RBIF de registre INTCON . Cette interruption est gnre si ces lignes configures en
entre, avec une activation des rsistances de PULL-UP pour la stabilit de ltat des lignes.

La pin RB0/INT est une autre source dinterruption, dclanche sur front mentant ou
descendant selon le bit6 INTEDG de registre OPTION_REG , le flag qui indique cette
interruption est le bit1 INTF de registre INTCON . Toujours si la ligne est configure
en entre.

Les registres responsables sur la manipulation/configuration du PORTB sont :


- Le registre PORTB situ dans la banque 0, pour la lecture et lcriture.
- Le registre TRISB situ dans la banque 1, pour la configuration de la direction des
lignes.
- Le registre OPTION_REG situ dans la banque 1 (bit7 RBPU\ et bit6 INTEDG), pour
lactivation de PULL-UP et le type front (INTEDG1 sur , INTEDG0 sur ).
- Le registre INTCON situ dans la banque 0 ou la banque 1(bit4 INTE, bit3 RBIE, bit1
INTF et bit0 RBIF), pour autoriser et indiquer les interruptions (INT, RB).

33
Formation sur les PIC 16Fxxx par : ATOUI Hamza

L EEPROM de 64 bytes :
Cest une mmoire accessible en lecture/criture. Cette mmoire est implante en dhors de la
zone DATA RAM et adresser sparment par leurs registres spciaux. Ces registres sont :
- Le registre EECON1 situ la banque 1.
- Le registre EECON2 situ la banque 1 (registre virtuel).
- Le registre EEADR situ la banque 0.
- Le registre EEDATA situ la banque 0.

Le registre EEDATA est de 8bits utilis pour la lecture/criture de donnes dans


lEEPROM.

Le registre EEADR est de 8bits utilis pour adresser un emplacement dans lEEPROM
parmi 64 emplacements (seulement les 6bits du poids faible sont utiliss).

Lopration de lcriture se fait aprs une opration deffacement automatique de


lemplacement crire par la logique du contrle. Le temps dcriture dpend de la tension
dalimentation (Vdd) et la temprature de CI, en gnral est une opration lente dpasse 4ms.

Synoptique de lEEPROM :

E
E
A
D
R 6
Bloc de 64 bytes.
De ladresse
0x00 0x3F.
E
E
D 8
A
T
A

8 Logique du contrle de
lEEPROM
EECON1 EECON2

Bus interne de la zone DATA

34
Formation sur les PIC 16Fxxx par : ATOUI Hamza

La structure de registre EECON1 : cest le registre de contrle/tat de lEEPROM


(seulement les 5bits du poids faible sont utiliss).

Les bits 75 : non utiliss.


EEIF : flag dinterruption pour lopration dcriture dans lEEPROM.
- EEIF = 1 indique le fin de lcriture dans lEEPROM (Effacement Soft).
- EEIF = 0 lopration de lcriture nest pas fini ou on a pas lanc.
WRERR : flag dindication dune erreur lor dune opration dcriture.
- WRERR = 1 arrt prmatur sur lopration dcriture (MCLR\, Time-out WDT).
- WRERR = 0 lopration de lcriture est termin sans aucun problme.
WREN : bit dautorisation de lcriture dans lEEPROM.
- WREN = 1 Ecriture autorise.
- WREN = 1 Ecriture non autorise.
WR : bit de contrle de lcriture.
- WR = 1 initialisation de cycle dcriture, ce bit est effac par le HARDWARE si
lopration de lcrite est termine.
- WR = 0 lopration de lcriture dans lEEPROM est termine.
RD : bit de contrle de la lecture.
- RD = 1 initialisation de cycle de lecture, ce bit est effac par le HARDWARE si
lopration de la lecture est termine.
- RD = 0 rien.

Opration de lecture dun byte de lEEPROM : pour lire un emplacement EEPROM, il


faut passer par les tapes suivantes :

- mettre ladresse lire dans le registre EEADR .


- activer la lecture par RD 1.
- Finalement le contenue de cette case est situe dans le registre EEDATA .

Exemple : mettre le contenue de ladresse 0x10 dans lEEPROM vers le PORTB.


N.B : noublie pas le basculement vers la banque de chaque registre chaque accs.
Code :
; Basculer vers la banque 0
BCF STATUS, RP0
; mettre ladresse 0x10 dans EEADR
MOVLW 0x10
MOVWF EEADR
; Basculer vers la banque 1 (EECON1)
BSF STATUS, RP0
; Lancer lopration de lecture
BSF EECON1, RD
; Basculer vers la banque 0 (EEDATA & PORTB)
BCF STATUS, RP0
; PORTB EEDATA
MOVF EEDATA, W
MOVWF PORTB

35
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Opration dcriture dun byte dans lEEPROM : toujours, il faut passer par un ensemble
des tapes pour la faire.

- Mettre ladresse crire dans EEADR.


- Mettre la donne crire dans EEDATA.
- Dsactiver les interruptions GIE 0 (si le programme fonctionne sous interruption).
- Autoriser lcriture par WREN 1.
- Ecrire la valeur 0x55 dans EECON2 puis la valeur 0xAA dans le mme registre.
- Activer lopration dcriture par WR 1.
- Activer les interruptions GIE 1 (si le programme fonctionne sous interruption).

Exemple : mettre le contenue du PORTB dans ladresse 0x20 EEPROM.


; Basculer vers la banque 0
BCF STATUS, RP0
; mettre ladresse 0x20 dans EEADR
MOVLW 0x20
MOVWF EEADR
; mettre PORTB EEDATA
MOVF PORTB, W
MOVWF EEDATA
; Basculer vers la banque 1 (EECON1)
BSF STATUS, RP0
; Dsactiver les interruptions
BCF INTCON, GIE
; Autoriser lcriture
BSF EECON1, WREN
; Ecriture de la squence 0x55, 0xAA dans EECON2
MOVLW 0x55
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
; Activer lcriture par WR 1
BSF EECON1, WR
; Basculer vers la banque 0
BCF STATUS, RP0

36
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Le TIMER de 8bits (TMR0): est un TIMER libre (Free Timer) contient les caractristiques
suivantes :
- 8 bits Temporisateur/Compteur.
- Accessible en Lecture/Ecriture.
- Pr-diviseur (PRESCALER) programmable sur 8 bits.
- Source horloge slective Interne/Externe.
- Gnre une interruption lor de dbordement, passage de 0xFF vers 0x00.
- Front dincrmentation slectif pour la source externe.

Synoptique du TMR0 :

Vous remarquez que ce module constitu de 3 entits sont :


- La logique de gnration de lhorloge TMR0.
- Le registre TMR0.
- Le flag T0IF, indicateur de dbordement.

Modes de fonctionnement :
Le module TME0 fonctionne en 2 modes, mode Temporisateur et mode Compteur.

Mode Temporisateur : Pour configurer ce mode, il faut mettre T0CS 0 le bit5 de


OPTION_REG. Dans ce mode le TMR0 compte les impulsions de lhorloge systme
(Fosc/4).

Mode Compteur : Pour configurer ce mode, il faut mettre T0CS 1, ce mode utilise la
ligne RA4/T0CKI comme source (il faut configurer cette ligne en entre dans TRISA).

Le Pr-diviseur (PRESCALER) : est une logique de division de frquence constitu par un


compteur de 8 bascules et un MUX 81 slectionner par les bits PS2PS0 dans
OPTION_REG, avec un autre bit PSA situ dans le mme registre pour slectionner lattaque
du TMR0 (la source en direct, ou par le Pr-diviseur).

On distingue que, je peut diviser la frquence source sur 2, 4, 8, 16, 32, 64, 128 et 256, et
daprs la synoptique du module TMR0, on remarque que ce pr-diviseur nest pas accessible
soit en lecture ou en criture, la CPU toute seule fait un effacement automatique du pr-
diviseur dans le cas si le registre TMR0 est une destination par lUAL (cette limite va crer un
problme par la suite), ce pr-diviseur est composant commun entre le TMR0 et le WDT.

37
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Compteur de 8 bascules
Source
1

8 0

Mux 81
PS2/PS0
3

PSA

Les registres responsables la manipulation/configuration du module TMR0 sont :


- Le registre TMR0 situ la banque 0.
- Le registre INTCON contient les bits T0IE, T0IF.
- Le registre OPTION_REG situ la banque 1, pour configurer le TMR0.
- Le registre TRISA pour mettre la ligne RA4 en entre si le module fonctionne en
mode compteur (situ la banque 1).

Structure de registre OPTION_REG : cest le registre de configuration du mode TMR0


responsable la slection du mode de fonctionnement, type du front pour la source externe et
la configuration de pr-diviseur.

38
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Le chien de garde (WDT) et le mode mise en vielle :

Le chien de garde (WDT) : est un TIMER libre dmarre linstant de lalimentation de C


si le module est en service par le mot de configuration du C. A cause de lhorloge RC
sparer de lhorloge systme, le WDT aprs son dbordement soit fait un reset de C ou
rveille le C aprs lexcution de linstruction SLEEP , jai indiqu prcdemment que le
pr-diviseur est un module commun entre le TMR0 et le WDT, pour associer le pr-diviseur
au WDT, on met PSA = 1, et le pr-diviseur devient un post-diviseur pour le WDT.

Le post-diviseur et le WDT sont effacs aprs lexcution de linstruction CLRWDT , la


priode de WDT est 18ms sans post-diviseur (min 7ms, max 33ms).

39
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Le mode mise en vielle : pour entrer dans cette situation, on excute linstruction SLEEP
qui fait le travail suivant :
- WDT 0.
- Post-diviseur 0.
- TO\ 1.
- PD\ 0.
- Arrt lhorloge systme.
Cette situation arrte le C et leurs priphriques fonctionnant sous lhorloge systme, et pour
sortir de cette situation, il faut rceptionner un vnement indpendant de lhorloge systme
comme :
- Un reset par la ligne MCLR\.
- Dbordement de WDT.
- Dclanchement dune interruption par un priphrique.

Dans le cas de PIC 16F84A, les interruptions rveillent le C sont :


- Evnement sur la ligne RB0/INT.
- Changement dtat des lignes RB4:RB7.
- Fin dcriture dans lEEPROM.
Vous remarquez que le dbordement de TME0 ne rveille pas le C, cause du bloc de
synchronisation avant lattaque de TMR0, par ce que cette partie utilise lhorloge systme.

Jai une question, quest ce qui se passe aprs le rveille de C ?

Daprs le DATA SHEET la rponse est la suivante :

- aprs un reset sur la ligne MCLR\, la CPU excute linstruction situe ladresse
0x000.
- Aprs un TIME-OUT (dbordement WDT), la CPU excute linstruction qui suit
linstruction SLEEP .
- Aprs une interruption, on a 2 situations :
o Si GIE = 0, la CPU excute linstruction qui suit linstruction SLEEP .
o Si GIE = 1, excute linstruction qui suit linstruction SLEEP puis branche
vers le vecteur dinterruption situ ladresse 0x004.

Remarque trs importante : le mode mise en veille est impossible si GIE=0 et tous les flag
et autorisateurs dinterruptions gal 1 avant lexcution de linstruction SLEEP ,
la CPU excute SLEEP comme NOP puis excute linstruction qui suit linstruction
SLEEP .

On rsum, on donne la table suivante :


Evnement Branchement TO\ PD\
Mise sous tension 0x000 1 1
MCLR\ 0x000 1 1
MCLR\ (SLEEP) 0x000 1 0
Dbordement WDT 0x000 0 1
Dbordement WDT (SLEEP) PC+1 0 0
Interruption (SLEEP avec GIE=0) PC+1 U U
Interruption (SLEEP avec GIE=1) PC+1 puis 0x004 U U

U : il garde la valeur prcdente.

40
Formation sur les PIC 16Fxxx par : ATOUI Hamza

La srie de TP N :1

But : manipulation de PIC 16F84A et leurs priphriques.

Exercice 1 :
Soit le montage suivant :

1- Ecrire un programme qui affiche ltat de DIPSW sur le PORTA dans les 4 Leds relies
aux PORTB (RB0:RB3).
2- Ecrire le mme programme de la question 1 avec laffichage de ltat inverse de
DIPSW dans le reste du PORTB (RB4:RB7).

41
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Exercice 2 :
Soit le montage suivant :

Ecrire un programme qui ralise le travail suivant :


- chaque appuyer sur le BP (impulsion), afficher la squence suivante les Leds relies
aux PORTB (0x81 0x7E 0x55 0xAA 0x3C C3 0x0F 0xF0).

42
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Exercice 3 :
Soit le montage suivant :

Ecrire un programme qui ralise un compteur M10 chaque appuyer sur BP1 et un dcompteur
M10 chaque appuyer sur BP2.

43
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Exercice 4 :
Raliser le montage & crire le programme qui fait le travail suivant :
- Initialiser le FILE dadresse (0x30) par zro.
- A chaque impulsion sur RB0, le ISR incrmente cet FILE puis affiche son contenue
sur les 8 Leds relies aux pins du PIC.

Exercice 5 :
Raliser le montage & crire le programme qui fait le travail suivant :
- Initialiser le TMR0 par la valeur 0xFA.
- Compter les impulsions arrives de la ligne RA4 par le TMR0, et afficher le contenue
du TMR0 sur le PORTB (8 Leds).
- A chaque dbordement, le ISR initialise le TMR0 par la valeur 0xFA, puis change le
Pr-diviseur par : 1:1 1:2 1:4 1:1

Exercice 6 :
Raliser un compteur M10 (affichage sur DIGIT) avec une temporisation chaque 200ms se
fait par le TMR0.

Exercice 7 :
On donne le montage de jeu de lumire suivant :

Utiliser le TMR0, l EEPROM, & les PORTA, B pour raliser le menu suivant :
DIPSW2 Travail a effectu
00 Clignement de toutes les Leds chaque 300ms
01 Dfilement de droite gauche chaque 300ms
10 Basculement 4 Leds par 4 chaque 300ms
11 Dfilement de lintrieur vers lextrieur chaque 300ms

44
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Exercice 8 :
Raliser un compteur BCD M10000 (09999) avec lincrmentation se fait chaque
impulsion sur RB0 dans l ISR (manipulation de laffichage multiplex).

Exercice 9 :
Raliser un dcodeur dun clavier matriciel 4x4 et afficher la touche dcode sur un ensemble
de 4 Leds.
- Dans le mode normal.
- Dans le mode conomique.

Exercice 10 :
Relais programmable base de PIC

Soit le montage suivant :

START Reprogrammer

M1

L1
M2

Relais programmable
base de PIC

T1 Mmoriser

T2

2
Sortie relais

45
Formation sur les PIC 16Fxxx par : ATOUI Hamza

Fonctionnement :
- Si le bouton Reprogrammer est appuy le PIC est donc dans le mode
programmation, ce dernier attend une impulsion sur le bouton Mmoriser pour
sauvegarder la fonction et la temporisation slectionnes par le clavier (M2M1T2T1),
la LED L1 doit allumer 200ms pour indiquer la mmorisation du mode de
relais demand dans l EEPROM de PIC, aprs la programmation de relais, le PIC
attend une impulsion sur le bouton START pour dclancher le relais.
- Si le bouton Reprogrammer nest pas appuy, le PIC dclanche le mode mmoris
dans l EEPROM.
Les fonctions et les temporisations possibles par le clavier :

M2M1 Fonction T2T1 Temporisation


00 Minuterie 00 1s
01 Retardateur 01 2s
10 Tl- rupteur 10 3s
11 Gnrateur 11 4s

Temporisation
Impulsion START
Minuterie

Temporisation
Impulsion START
Retardateur

Temporisation
Impulsion START Impulsion START
Tl- rupteur

Temporisation
Impulsion START
Gnrateur

Timing de chaque mode avec limpulsion START

46

Vous aimerez peut-être aussi