Académique Documents
Professionnel Documents
Culture Documents
Formation PIC
Formation PIC
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.
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.
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
Horloge
RD\ WR\
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.
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.
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.
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
U.A.L
8
128 bytes
W REG
STATUS
Registre dinstruction
CODE
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.
En rsum : le schma gnral pour ladressage direct et indirect dans la zone DATA
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
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.
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.
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.
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
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
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
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
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.
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.
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
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
PC PC+1
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
TOS 1
19
Formation sur les PIC 16Fxxx 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
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
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
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
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
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
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
Yes
ISR TIMER
Yes
ISR RB
Yes
ISR INT
Yes
ISR EEPROM
End ISR
25
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
; 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
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
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
P O R T B
Brochage de circuit :
28
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
Registres spciaux : Le PIC 16F84A a 15 registres spciaux situs dans la mmoire des donnes (Data RAM).
30
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 :
RA3
31
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.
RB3
RB7
32
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
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
34
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
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).
36
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
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
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
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 :
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
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
Ecrire un programme qui ralise un compteur M10 chaque appuyer sur BP1 et un dcompteur M10 chaque appuyer sur BP2.
43
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
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
M2
T2
1 2
Sortie relais
45
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
46