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\ WR\

Reg A

CS\

N bits

RD\ WR\

Reg B

CS\

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.

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 T T+1 T+2 T+3 T+4 CS\ 1 0 0 0 0 Reg A RD\ WR\ 1 1 1 1 0 1 0 1 0 1 CS\ 1 1 1 0 0 Reg B RD\ WR\ 1 1 1 1 1 1 1 1 1 0 Commentaires Etat de repos Activer le reg A Lecture de reg A Activer le reg B 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

Compteur

D E C O D E U R Point de Connexion Entre la Ligne et La colonne

Horloge

RD\ CS\ WR\ CS\

RD\ WR\

Vers les signaux de contrle de Reg A

Vers les signaux 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.

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)
E/S

Bus systme

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.

Formation sur les PIC 16Fxxx

par : ATOUI Hamza

MICROCHIP est un fabricant de semi-conducteurs fond en 1989 partir dune division de ICROCHIP 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.

Formation sur les PIC 16Fxxx Architecture de la CPU MID-RANGE :


DATA
7

par : ATOUI Hamza

CPU

STACK

128 bytes
9 M U X 9 9 2 1 8 8 8 8 INTCON PIE1 RP0 IRP FSR RP1 PCH PCLATH

8 level Stack
PC PCL 13 2k x 14bits 8

128 bytes

PIE2 PIR1, 2

2k x 14bits

128 bytes

Registres des interruptions 2k x 14bits

U.A.L
8

Unit de dcodage et De contrle 2k x 14bits 14

128 bytes

W REG

STATUS

Registre dinstruction

CODE

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 Sinon (les 7bits dadresse dans linstruction = 0) Le bus dadresse FILE de 9bits = IRP Fin-Si.

7bits dadresse dans linst

8bits de registre FSR

Formation sur les PIC 16Fxxx

par : ATOUI Hamza

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

7bits dadresse dans linstruction 7 9 RP1 RP0 2

Bank0

Bank1

Bank2

Bank3

FSR 8 9 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

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 MOVLW 0x55 MOVWF INDF

Etape 1 Etape 2

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.

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.

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 Instructions de Transfert : Groupe : MOVLW, MOVWF, MOVF.

par : ATOUI Hamza

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 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.

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 Les instructions de contrle : Groupe 1: GOTO, CALL, RETURN, RETLW, RETFIE.

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. 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 8 12 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 0 3

par : ATOUI Hamza 12) par les bits

10 du PC par ladresse indique par linstruction, et le reste (bits 11 4 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 3 4 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 Ladresse de retour Main Program ---------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 MIDRANGE fait le mme travail que RETURN plus renvoyer une valeur immdiate de 8bits prsente par linstruction dans le W reg. Syntaxe : RETURN RETLW Nombre de cycle : 2. STATUS : rien. k ; 0 k 255.

18

Formation sur les PIC 16Fxxx TOS PC+1 Ladresse de retour

par : ATOUI Hamza

PC PC+1

Main Program ---------------------------------------------CALL SOMME -------------------------------------

SOMME ---------------------------------------------------------------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 GIE 1 (Autorisation de la rception dune nouvelle interruption par ce que le branchement vers le ISR met le GIE 0 pour ne pas gner le traitement de linterruption en cours). TOS Main Program GIE ---------------------------------------------SUBLW 0x50 ------------------------------------PC GIE PC+1 0
2

Interruption
1

PC PC+1

ISR (vecteur 4) ---------------------------------------------------------------RETFIE

TOS 1

Nombre de cycle : 2. STATUS : rien.

19

Formation sur les PIC 16Fxxx Groupe 2 : NOP, CLRWDT, SLEEP. Linstruction NOP : aucune opration. Syntaxe : NOP Nombre de cycle : 1. STATUS : rien.

par : ATOUI Hamza

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 La srie des exercices N :1

par : ATOUI Hamza

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 (0x30 0x40) 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 (0x50 rsultat dans le FILE dadresse (0x10) situ la banque 1. 0x60) et mettre le

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

0x35) dans

Exercice 6 : Ecrire un programme qui fait la recherche de la premire occurrence de la valeur 0x00 dans la zone mmoire (0x60 0x70) 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 : H 0; 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 R B Q

R 0; Q A; 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 Main Program GIE ---------------------------------------------SUBLW 0x50 ------------------------------------PC GIE PC+1 0
2

Interruption Si GIE=1
1

PC PC+1

ISR (vecteur 4) ---------------------------------------------------------------RETFIE

TOS 1

Remarque : vous remarquez que chaque fois si on a une demande dinterruption le MIDRANGE 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 RB4 RB7. 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

T0IF=1 No RBIF=1 No INTF=1 No EEIF=1 No

Yes

ISR TIMER

Yes

ISR RB

Yes

ISR INT

Yes

ISR EEPROM

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 ; inclusion des bibliothques ; Config des fusibles

#include <P16F84.INC> __CONFIG

_CP_OFF & _PWRTE_OFF &

; 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 Project Project 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 View Project (elle apparaisse la fentre de votre projet dans linterface principale de MPLAB IDE). Aller vers le menu File New (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 Project Save Project. Compiler le projet par le menu Project Build 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 1Kx14bits

CPU MID-RANGE

RAM 68 bytes

P O R T A

TMR0 (8bits) WDT EEPROM 64 bytes

P O R T 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 Priphriques de PIC 16F84A :

par : ATOUI Hamza

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 : RA0 RA1 en sortie. RA2 RA4 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 RA0 RA3 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 RB0

RB3

Schma des pins RB4

RB7

32

Formation sur les PIC 16Fxxx

par : ATOUI Hamza

Les pins RB4 RB7 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 (INTEDG 1 sur , INTEDG 0 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

Bloc de 64 bytes. De ladresse 0x00 0x3F.


E E D A T A

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 7 5 : 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 8 1 slectionner par les bits PS2 PS0 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 prdiviseur 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

Source

Compteur de 8 bascules
1

8 Mux 8 1 3 PS2/PS0

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 Mise sous tension MCLR\ MCLR\ (SLEEP) Dbordement WDT Dbordement WDT (SLEEP) Interruption (SLEEP avec GIE=0) Interruption (SLEEP avec GIE=1) U : il garde la valeur prcdente.

Branchement 0x000 0x000 0x000 0x000 PC+1 PC+1 PC+1 puis 0x004

TO\ 1 1 1 0 0 U U

PD\ 1 1 0 1 0 U U

40

Formation sur les PIC 16Fxxx La srie de TP N :1 But : manipulation de PIC 16F84A et leurs priphriques. Exercice 1 : Soit le montage suivant :

par : ATOUI Hamza

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 Exercice 2 : Soit le montage suivant :

par : ATOUI Hamza

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 Exercice 3 : Soit le montage suivant :

par : ATOUI Hamza

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 (0 9999) 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 Relais programmable base de PIC T1 Mmoriser

M2

T2

1 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 00 01 10 11 Fonction Minuterie Retardateur Tl- rupteur Gnrateur T2T1 00 01 10 11 Temporisation Temporisation 1s 2s 3s 4s

Minuterie

Impulsion START

Retardateur

Impulsion START

Temporisation

Temporisation Tl- rupteur Impulsion START Impulsion START

Temporisation Gnrateur Impulsion START

Timing de chaque mode avec limpulsion START

46

Vous aimerez peut-être aussi