Académique Documents
Professionnel Documents
Culture Documents
Formation PIC PDF
Formation PIC PDF
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).
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.
RD\ CS\
Reg A
WR\
N bits
RD\
Reg B
CS\
WR\
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 :
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
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.
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.
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)
4
Formation sur les PIC 16Fxxx par : ATOUI Hamza
128 bytes
W REG STATUS 2k x 14bits
Registre dinstruction
14
CODE
5
Formation sur les PIC 16Fxxx par : ATOUI Hamza
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.
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.
Microchip utilise une simple astuce pour la slection du mode dadressage direct ou indirect
dans la zone DATA, dont lalgorithme est le suivant :
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
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
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.
Code :
MOVLW 0x50
MOVWF FSR Etape 1
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
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.
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).
10
Formation sur les PIC 16Fxxx par : ATOUI Hamza
Instructions de Transfert :
Groupe : MOVLW, MOVWF, MOVF.
Instructions Arithmtiques :
Groupe : ADDLW, ADDWF, SUBLW, SUBWF, DECF, INCF, DECFSZ, INCFSZ, COMF,
CLRW, CLRF.
11
Formation sur les PIC 16Fxxx par : ATOUI Hamza
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.
12
Formation sur les PIC 16Fxxx par : ATOUI Hamza
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 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 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.
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
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
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.
- 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.
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.
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
20
Formation sur les PIC 16Fxxx par : ATOUI Hamza
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
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.
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 ?
24
Formation sur les PIC 16Fxxx par : ATOUI Hamza
Begin ISR
No
Yes ISR RB
RBIF=1
No
No
No
End ISR
25
Formation sur les PIC 16Fxxx par : ATOUI Hamza
; 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.
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
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
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 :
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 :
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.
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.
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 EEADR est de 8bits utilis pour adresser un emplacement dans lEEPROM
parmi 64 emplacements (seulement les 6bits du poids faible sont utiliss).
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
34
Formation sur les PIC 16Fxxx par : ATOUI Hamza
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.
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 :
Modes de fonctionnement :
Le module TME0 fonctionne en 2 modes, mode Temporisateur et mode Compteur.
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).
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
38
Formation sur les PIC 16Fxxx par : ATOUI Hamza
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.
- 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 .
40
Formation sur les PIC 16Fxxx par : ATOUI Hamza
La srie de TP N :1
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 :
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
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 :
Temporisation
Impulsion START
Minuterie
Temporisation
Impulsion START
Retardateur
Temporisation
Impulsion START Impulsion START
Tl- rupteur
Temporisation
Impulsion START
Gnrateur
46