Sie sind auf Seite 1von 32

****** Samuel Bachelier Informatique & Systmes

2013

IEPSCF UCCLE

MICROCONTROLEUR RAPPORT FINAL

page 1 de 32

Table des matires


Introduction et description ...................................................................................................... p.3 1. Qu'est-ce qu'un microcontrleur : ........................................................................................ p.3 1.1 - Structure interne d'un microcontrleur ............................................................. p.3 1.2 - Structure d'un systme microprocesseur .......................................................... p.4 1.3 - Du microprocesseur au microcontrleur ............................................................. p.4 2. tude du microcontrleur PIC 16F84A .................................................................................. p.5 2.1 - Schma des blocs internes et brochage ............................................................... p.5 2.2 - Jeu d'instructions du PIC 16F84A ........................................................................ p.6 2.3 - Les Registres ......................................................................................................... p.11 2.4 - Organisation de la mmoire ................................................................................. p.21 2.5 - Modes d'adressages ............................................................................................. p.23 2.6 - Ports d'entres/Sorties ......................................................................................... p.24 2.7 - Interruptions ......................................................................................................... p.26 2.8 - Timers .................................................................................................................. p.27 2.9 - Horloge ................................................................................................................. p.29

3. Ralisation d'un cas pratique ........................................................................................... p.30


3.1 - Brve description .................................................................................................. p.30 3.2 - Schma Proteus Pro 8 ........................................................................................... p.30 3.3 Programme en C dvelopp avec mikroC Pro 4.15 .............................................. p.31

4. Conclusion ........................................................................................................................... p.32 5. Bibliographie .............................................................................................................. p.32

page 2 de 32

Introduction
1- Qu'est-ce qu'un microcontrleur :
Un microcontrleur est un circuit intgr rassemblant dans un mme boitier, un microprocesseur, plusieurs types de mmoires et des priphriques de communication (Entres-Sorties). Selon un arrt franais du 14 septembre 1990 relatif la terminologie des composants lectroniques: "Circuit intgr comprenant essentiellement un microprocesseur, ses mmoires, et des lments personnaliss selon l'application". 1.1 - Structure interne d'un microcontrleur :

Exemples de microcontrleurs : Ces boitiers sont composs de : 1. Un microprocesseur 2. Mmoires mortes 3. Mmoires vives 4. Bus (de contrle, dadresses et de donnes) 5. Un oscillateur 6. Circuits d'interfaces dentres / sorties 7. Priphriques intgrs

page 3 de 32

1.2 - Structure d'un systme microprocesseur : Un microprocesseur a besoin de certains lments pour fonctionner : de la mmoire morte dite ROM (principalement pour stocker le programme). de la mmoire vive dite RAM (principalement pour stocker les variables). des priphriques (principalement pour interagir avec le monde extrieur). une horloge pour le cadencer (principalement quartz)

Ces diffrents blocs sont relis par 3 bus : le bus d'adresse qui permet au microprocesseur de slectionner la case mmoire ou le priphrique auquel il veut accder pour lire ou crire une information (instruction ou donne). le bus de donnes qui permet le transfert des informations entre les diffrents blocs. Ces informations seront soit des instructions soit des donnes en provenance ou destination de la mmoire ou des priphriques. le bus de contrle qui indique si l'opration en cours est une lecture ou une criture, si un priphrique demande une interruption etc.

1.3 - Du microprocesseur au microcontrleur : Le dveloppement d'un systme base de microprocesseur se trouve pnalis par (entre autres) : La ncessit de prvoir l'interconnexion de ces composants (bus, cblage, nappes de connexion). la place occupe physiquement par les composants et les moyens d'interconnexion.; la consommation nergtique. la chaleur dgage. le cot financier.

page 4 de 32

Les microcontrleurs amliorent l'intgration et le cot (li la conception et la ralisation) d'un systme base de microprocesseur en rassemblant ces lments essentiels dans un seul circuit intgr. Un microcontrleur est donc un composant autonome, capable d'excuter le programme contenu dans sa mmoire morte ds qu'il est mis sous tension. Selon les modles et les conditions de fonctionnement, les microcontrleurs peuvent avoir besoin de quelques composants externes (quartz, quelques condensateurs, parfois une ROM), mais ceci reste trs limit. Lorsque toutes les fonctions du systme informatique sont regroupes dans un unique circuit intgr, y compris les fonctions logiques, analogiques, radiofrquence, d'interface (USB, Ethernet, etc.), on parle alors de System on Chip (systme sur puce ou systme mono-puce). Ces composants sont bass sur un ou plusieurs curs de microcontrleur, de microprocesseur ou de DSP.

2 - tude du microcontrleur PIC 16F84A :


La famille des PICs est subdivise en 3 grandes familles : La famille Base-Line, qui utilise des mots dinstructions de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits (et dont font partie la 16F84 et 16F876), et la famille High-End, qui utilise des mots de 16 bits. 2.1 - Schma des blocs internes et brochage :

page 5 de 32

Le 16F84A est un circuit intgr de 18 broches, que l'on peut trouver dans un botier PDIP.

Le 16F84A possde 13 entres/sorties (5 dans le port A et 8 dans le port B). Chaque entre/sortie est configurable individuellement (en entre ou bien en sortie). On peut par exemple configurer les broches RB0, RA2 et RA3 en entre et les broches RB1, RB2, RB3, RA0 et RA1 en sortie. Le choix de la configuration des entres/sorties non utilises n'a videmment aucune importance. Cas particulier de la broche RA4 configure en sortie : 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 :

page 6 de 32

Broches VDD VSS /MCLR OSC1/CLKIN, OSC2/CLKOUT RA0, RA1, RA2, RA3, RA4/T0CKI RB0/INT, RB1, RB2, RB3, RB4, RB5, RB6, RB7

Description Alimentation (2,0 V 5,5 V DC) Masse (0 V) Reset (actif au niveau bas) Circuit d'horloge Port A (5 bits) Port B (8 bits)

2.2 - Jeu d'instructions du PIC 16F84A : Les PICs sont conus selon une architecture RISC. Programmer avec un nombre d'instructions rduit permet de limiter la taille de leur codage et donc de la place mmoire et du temps d'excution. Le PIC 16F84A a un jeu d'instructions constitu de seulement 35 instructions (architecture RISC : Reduced Instruction-Set Computer). Une instruction est code par un mot de 14 bits. La mmoire programme (de type Flash) a une taille de 1792 octets, ce qui permet de stocker un programme de 1024 instructions (16F84A). Une instruction ncessite 1 cycle, ou bien 2 cycles dans le cas d'une instruction de branchement (GOTO, CALL ...).Avec une horloge quartz de 20 MHz, un cycle correspond 4/(20.10 6) = 200 nanosecondes. Le microcontrleur peut donc excuter jusqu' 5 millions d'instructions par seconde (5 MIPS) ! W : registre de travail (accumulateur), taille 8 bits. k : valeur littrale, taille 8 bits. Mnmonique , oprande MOVLW k ADDLW k Description k (8 bits) est charg dans (W) Additionne k (8 bits) et (W) et place le rsultat dans (W) Soustrait W de k (8bits) et place le rsultat dans (W) k - (W) -> (W) Bit du registre STATUS affect C, DC , Z Nombre de cycles 1 1

SUBLW k

C, DC , Z

page 7 de 32

ANDLW k

Ralise un ET logique entre k (8 bits) et (W), et place le rsultat dans (W) Ralise un OU logique (inclusif) entre k (8 bits) et (W), et place le rsultat dans (W) Ralise un OU exclusif entre k (8 bits) et (W), et place le rsultat dans (W)

IORLW k

XORLW k

L : label (tiquette) Mnmonique , oprande GOTO L CALL L RETURN Description Branchement l'adresse L Appelle un sousprogramme (subroutine) situ l'adresse L Retour de sousprogramme Retour de sousprogramme, avec chargement de la valeur littrale k (8 bits) dans (W) Retour de sousprogramme d'interruption Efface le Watchdog Place le microcontrleur en mode sommeil Bit du registre STATUS affect Nombre de cycles 2 2 2

RETLW k

RETFIE CLRWDT SLEEP

/TO, /PD /TO, /PD

2 1 1

page 8 de 32

F : registre (spcial ou d'usage gnral) b : position du bit (0 7) Mnmonique , oprande BCF f , b BSF f , b Description Mise 0 du b me bit du registre f Mise 1 du b me bit du registre f Si le b me bit du registre f est gal 0, alors l'instruction suivante est ignore, et une instruction NOP est excute la place (soit 2 cycles) Si le b me bit du registre f est gal 1, alors l'instruction suivante est ignore, et une instruction NOP est excute la place (soit 2 cycles) Bit du registre STATUS affect Nombre de cycles 1 1

BTFSC f , b

1 ou 2

BTFSS f , b

1 ou 2

f : registre (spcial ou d'usage gnral) d : registre de destination (on peut choisir entre le registre de travail W et le registre f ). Nombre de cycles 1 1 1

Mnmonique , oprande MOVWF f MOVF f , d ADDWF f , d

Description (W) est charg dans (f) (f) (8 bits) est charg dans (destination) Additionne le contenu du registre f (8 bits) et (W), et place le rsultat dans (destination) Soustrait (W) de (f) (8 bits) et place le rsultat dans (destination). (f) - (W) ->(destination)

Bit du registre STATUS affect Z C,DC,Z

SUBWF f , d

C,DC,Z

page 9 de 32

ANDWF f , d IORWF f , d XORWF f , d COMF f , d

Ralise un ET logique entre (f) (8 bits) et (W), et place le rsultat dans (destination) Ralise un OU logique (inclusif) entre (f) (8 bits) et (W), et place le rsultat dans (destination) Ralise un OU exclusif entre (f) (8 bits) et (W), et place le rsultat dans (destination) Ralise le complment logique de (f) (8 bits), et place le rsultat dans (destination) Dcrmente (f) et place le rsultat dans (destination). (f) - 1 -> (destination)

Z Z Z Z

1 1 1 1

DECF f , d

Dcrmente (f) et place le rsultat dans (destination). DECFSZ f , d Si le rsultat est 0, alors l'instruction suivante est ignore, et une instruction NOP est excute la place (soit 2 cycles) Incrmente (f) et place le rsultat dans (destination). (f) + 1 -> (destination) Incrmente (f) et place le rsultat dans (destination). Si le rsultat est 0, alors l'instruction suivante est ignore, et une instruction NOP est excute la place (soit 2 cycles) Efface le contenu du registre (f). Remarque : le bit Z est donc mis 1. Efface le contenu de l'accumulateur (W). Remarque : le bit Z est donc mis 1. 1 ou 2

INCF f , d

INCFSZ f , d

1 ou 2

CLRF f CLRW

Z Z

1 1

page 10 de 32

Ralise une rotation circulaire gauche : RLF f , d Le rsultat est plac dans (destination). Ralise une rotation circulaire droite : RRF f , d Le rsultat est plac dans (destination). Les 4 bits de poids forts et les 4 bits de poids faibles de (f) sont changs. Le rsultat est plac dans (destination). NOP Cette instruction ne fait rien (1 cycle). 1 C 1 C 1

SWAPF f , d

2.3 Les Registres : A - Registres d'usage gnral : Le PIC 16F84A possde 68 registres d'usage gnral situs dans la mmoire des donnes (Data RAM). Les registres d'usage gnral sont indiffremment accessibles en banque 0 ou en banque 1. Banque 0 (adresses 0x0C 0x4F) Banque 1 (adresses 0x8C 0xCF) B Registres spciaux : Le PIC 16F84A a 15 registres spciaux situs dans la mmoire des donnes (Data RAM). La mmoire des donnes est divise en 2 banques : Banque 0 (adresses 0x00 0x7F) Banque 1 (adresses 0x80 0xFF) Les registres : TMR0 PORTA PORTB EEDATA EEADR sont situs en banque 0.

page 11 de 32

Les registres : OPTION_REG TRISA TRISB EECON1 EECON2 Sont situs en banque 1. Les autres registres spciaux sont indiffremment accessibles en banque 0 ou en banque 1. STATUS INTCON FSR , INDF PCL PCLATH Registre TMR0 (Timer 0) Il s'agit d'un registre spcial situ l'adresse 0x01 (banque 0) de la mmoire des donnes (Data RAM). Ce registre contient un nombre de 8 bits (0 255 en numration dcimale). Le module TMR0 (Timer 0) possde deux modes de fonctionnement : 1- Le mode timer 2- Le mode compteur 1- Le mode timer. Pour configurer le module TMR0 en mode timer, il faut au pralable que : T0CS = 0 (bit 5 du registre OPTION_REG) Le contenu du registre TMR0 est alors incrment chaque cycle de l'horloge interne. 1 cycle correspond une dure de 1 s pour un oscillateur quartz de 4 MHz (1 cycle = 4 / F OSC). En conclusion, le mode timer est utilis pour mesurer des dures. 2- Le mode compteur. Pour configurer le module TMR0 en mode compteur, il faut au pralable que : T0CS = 1 (bit 5 du registre OPTION_REG) Le contenu du registre TMR0 est alors incrment chaque front du signal prsent sur la broche RA4/T0CKI : front montant si T0SE = 0 (bit 4 du registre OPTION_REG) front descendant si T0SE = 1 3 Interruption. On peut activer une interruption quand le registre TMR0 dborde (passage de 0xFF 0x00).

page 12 de 32

Registre PORTA Il s'agit d'un registre spcial situ l'adresse H'05' (banque 0) de la mmoire des donnes (Data RAM). Ce registre donne un accs en lecture ou en criture aux 5 bits du port A. Description bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 Non utilis Non utilis Non utilis Niveau logique de la broche RA4/T0CKI du port A Niveau logique de la broche RA3 du port A Niveau logique de la broche RA2 du port A Niveau logique de la broche RA1 du port A Niveau logique de la broche RA0 du port A

Registre PORTB Il s'agit d'un registre spcial situ l'adresse H'06' (banque 0) de la mmoire des donnes (Data RAM). Ce registre donne un accs en lecture ou en criture aux 8 bits du port B. Description bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 Niveau logique de la broche RB7 du port B Niveau logique de la broche RB6 du port B Niveau logique de la broche RB5 du port B Niveau logique de la broche RB4 du port B Niveau logique de la broche RB3 du port B Niveau logique de la broche RB2 du port B Niveau logique de la broche RB1 du port B Niveau logique de la broche RB0/INT du port B

Le PIC 16F84A dispose de 64 octets (64 x 8 bits) de mmoire EEPROM. L'EEPROM (Electrically Erasable Programmable Read Only Memory) est une mmoire permanente, c'est dire que les donnes sont conserves mme si le microcontrleur est longtemps hors tension (dans le cas de la mmoire RAM, les donnes sont perdues). On peut rcrire jusqu' 10 millions de fois dans la mmoire EEPROM du PIC 16F84A. L'EEPROM du PIC 16F84A est indirectement accessible travers les registres EEADR, EEDATA, EECON1 et EECON2.

page 13 de 32

Registre EEADR Il s'agit d'un registre spcial situ l'adresse 0x09 (banque 0) de la mmoire des donnes (Data RAM). Ce registre contient l'adresse de l'emplacement mmoire que l'on veut manipuler (pour une lecture ou une criture). Les 64 octets sont situs aux adresses 0x00 0x3F. Registre EEDATA Il s'agit d'un registre spcial situ l'adresse 0x08 (banque 0) de la mmoire des donnes (Data RAM). Ce registre contient la valeur (8 bits) de l'emplacement mmoire que l'on veut manipuler (pour une lecture ou une criture). Registre OPTION_REG Il s'agit d'un registre spcial situ l'adresse 0x81 (banque 1) de la mmoire des donnes (Data RAM).

Nom bit 7 NOT_RBPU

Description "Port B Pull-up Enable" Ce bit doit tre mis 0 pour activer les rsistances de pull-up du port B Ce bit doit tre mis 1 pour dsactiver les rsistances de pull-up du port B

bit 6

INTEDG

"Interrupt edge select" Ce bit doit tre mis 0 pour que l'interruption de la broche RB0/INT soit active sur un front descendant Ce bit doit tre mis 1 pour que l'interruption de la broche RB0/INT soit active sur un front montant

page 14 de 32

bit 5

T0CS

"TMR0 Clock Source Select" Ce bit doit tre mis 0 pour que l'horloge du module TMR0 soit l'horloge interne (un quart de la frquence du signal OSC1/CLKIN) Ce bit doit tre mis 1 pour que l'horloge du module TMR0 soit le signal de la broche RA4/T0CKI

bit 4

T0SE

"TMR0 Source edge select" Dans le cas o T0CS = 1, le signal d'horloge de la broche RA4/T0CKI est actif : sur front montant quand T0SE = 0 sur front descendant quand T0SE = 1

bit 3

PSA

"Prescaler assignment" Le pr-diviseur est attribu : au module TMR0 quand PSA = 0 au Watchdog quand PSA =1

bits 2, 1, 0

PS2, PS1, PS0

"Prescaler rate select" (Cf. tableau ci-dessous)

page 15 de 32

Paramtres du prescaler : Taux de pr-division du module TMR0 2 4 8 16 32 64 128 256 1 1 1 1 1 1 1 1 Taux de pr-division du Watchdog 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128

PSA 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Registre TRISA

PS2, PS1, PS0 000 001 010 011 100 101 110 111 000 001 010 011 100 101 110 111

Il s'agit d'un registre spcial situ l'adresse H'85' (banque 1) de la mmoire des donnes (Data RAM). Ce registre permet de configurer, en entre ou en sortie, les 5 bits du port A. Description Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Non utilis Non utilis Non utilis 1 : configure la broche RA4/T0CKI du port A en entre 0 : configure la broche RA4/T0CKI du port A en sortie 1 : configure la broche RA3 du port A en entre 0 : configure la broche RA3 du port A en sortie

page 16 de 32

Bit 2 Bit 1 Bit 0

1 : configure la broche RA2 du port A en entre 0 : configure la broche RA2 du port A en sortie 1 : configure la broche RA1 du port A en entre 0 : configure la broche RA1 du port A en sortie 1 : configure la broche RA0 du port A en entre 0 : configure la broche RA0 du port A en sortie

Registre TRISB Il s'agit d'un registre spcial situ l'adresse H'86' (banque 1) de la mmoire des donnes (Data RAM). Ce registre permet de configurer, en entre ou en sortie, les 8 bits du port B. Description Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 1 : configure la broche RB7 du port B en entre 0 : configure la broche RB7 du port B en sortie 1 : configure la broche RB6 du port B en entre 0 : configure la broche RB6 du port B en sortie 1 : configure la broche RB5 du port B en entre 0 : configure la broche RB5 du port B en sortie 1 : configure la broche RB4 du port B en entre 0 : configure la broche RB4 du port B en sortie 1 : configure la broche RB3 du port B en entre 0 : configure la broche RB3 du port B en sortie 1 : configure la broche RB2 du port B en entre 0 : configure la broche RB2 du port B en sortie 1 : configure la broche RB1 du port B en entre 0 : configure la broche RB1 du port B en sortie 1 : configure la broche RB0/INT du port B en entre 0 : configure la broche RB0/INT du port B en sortie

Registre EECON1 Il s'agit d'un registre spcial situ l'adresse 0x88 (banque 1) de la mmoire des donnes (Data RAM).

page 17 de 32

Registre EECON2 Il s'agit d'un registre spcial situ l'adresse 0x89 (banque 1) de la mmoire des donnes (Data RAM). Ce registre n'est pas un registre physique. Registre STATUS Il s'agit d'un registre spcial situ l'adresse 0x03 (banque 0) de la mmoire des donnes (Data RAM). Ce registre est galement accessible en banque 1 (adresse 0x83). Nom Bit 7 Bit 6 Bit 5 IRP RP1 RP0 Bit non utilis ( laisser 0) Bit non utilis ( laisser 0) Bit de slection de la banque. Il faut mettre ce bit 0 pour accder la banque 0 (bcf STATUS , RP0), et 1 pour accder la banque 1 (bsf STATUS , RP0). Bit "Time-out" (en lecture uniquement) /TO NOT_TO bit mis 1 aprs : une mise sous tension une instruction SLEEP une instruction CLRWDT un rveil (sortie du mode SLEEP) d une interruption bit mis 0 quand la temporisation du watchdog est dpasse Bit "Power-down" (en lecture uniquement) Bit 3 /PD NOT_PD bit mis 1 aprs : une mise sous tension une instruction CLRWDT bit mis 0 aprs une instruction SLEEP Bit "Zero" Bit 2 Z Cela ne concerne que les instructions qui affectent le bit Z (addwf, andlw, movf ...) Ce bit est mis 1 quand le rsultat d'une opration est 0. Ce bit est mis 0 quand le rsultat d'une opration est diffrent de 0. Bit "Digit Carry" Cela concerne les oprations arithmtiques (instructions : addwf, addlw, subwf et sublw) en systme de numration DCB (binary coded decimal). Ce bit est mis 1 quand le rsultat d'une opration gnre une retenue. Description

Bit 4

Bit 1

DC

page 18 de 32

Nom

Description Ce bit est mis 0 quand le rsultat d'une opration ne gnre pas de retenue. Bit "Carry" Cela concerne les oprations arithmtiques (instructions : addwf, addlw, subwf et sublw) en systme de numration binaire en complment 2. Ce bit est mis 1 quand le rsultat d'une opration gnre une retenue. Ce bit est mis 0 quand le rsultat d'une opration ne gnre pas de retenue

Bit 0

Registre INTCON Il s'agit d'un registre spcial situ l'adresse H'0B' (banque 0) de la mmoire des donnes (Data RAM). Ce registre est galement accessible en banque 1 (adresse H'8B'). Nom "Global Interrupt Enable" Bit 7 GIE bit mettre 0 pour dsactiver toutes les interruptions bit mettre 1 pour autoriser toutes les interruptions "EEPROM write complete interrupt enable" Bit 6 EEIE 1 : si GIE = 1, autorise l'interruption de fin d'criture de l'EEPROM 0 : dsactive l'interruption de fin d'criture de l'EEPROM "TMR0 overflow interrupt enable" Bit 5 T0IE 1 : si GIE = 1, autorise l'interruption de dbordement du registre TMR0 (H'FF' -> H'00') 0 : dsactive l'interruption de dbordement du registre TMR0 Bit "Time-out" (en lecture uniquement) bit mis 1 aprs : une mise sous tension une instruction SLEEP une instruction CLRWDT un rveil (sortie du mode SLEEP) d une interruption bit mis 0 quand la temporisation du watchdog est dpasse "RB0/INT external interrupt enable" 1 : si GIE = 1, autorise l'interruption sur la broche RB0/INT 0 : dsactive l'interruption sur la broche RB0/INT Description

Bit 4

INTE

page 19 de 32

Nom

Description "RB port change interrupt enable" 1 : si GIE = 1, autorise l'interruption sur les broches RB4, RB5, RB6, RB7 du port B (sur changement du niveau logique d'au moins une de ces broches) Attention, seules les broches configures en entre sont concernes 0 : dsactive l'interruption "RB" "TMR0 overflow interrupt flag"

Bit 3

RBIE

Bit 2

T0IF

drapeau (flag) mis 1 lors du dbordement du registre TMR0 (H'FF' -> H'00') ce drapeau ne peut tre effac que de faon logicielle (bcf INTCON, T0IF) "RB0/INT external interrupt flag"

Bit 1

INTF

drapeau (flag) mis 1 lors d'un front (montant ou descendant selon l'tat du bit INTEDG du registre OPTION_REG) sur la broche RB0/INT ce drapeau ne peut tre effac que de faon logicielle (bcf INTCON, INTF) "RB port change interrupt flag"

Bit 0

RBIF

drapeau (flag) mis 1 lors d'un changement de niveau logique d'au moins une des broches : RB4, RB5, RB6 ou RB7 (cela ne concerne que les broches configures en entre) ce drapeau ne peut tre effac que de faon logicielle (bcf INTCON, RBIF)

Registres FSR et INDF (adressage indirect) FSR est un registre spcial situ l'adresse 0x04 (en banque 0) de la mmoire des donnes (Data RAM). Ce registre est galement accessible en banque 1 ( l'adresse 0x84). Ce registre contient une adresse (de la mmoire des donnes). On dit que FSR est un "pointeur". Le registre spcial INDF contient la valeur du registre point par le registre FSR (on parle d'adressage indirect). INDF n'est pas un registre physique.

page 20 de 32

2.4 - Organisation de la mmoire : Le PIC contient de la mmoire de programme et de la mmoire de donnes. La structure Harvard des PICs fournit un accs spar chacune. Ainsi, un accs aux deux est possible pendant le mme cycle machine. Note : Larchitecture de type Harvard est une conception de microprocesseurs qui spare physiquement la mmoire de donnes et la mmoire programme. Laccs chacune des deux mmoires seffectue via deux bus distincts. 1. Mmoire de programme : La figure ci-dessous montre l'organisation de cette mmoire. Elle contient 1k "mots" de 14 bits dans le cas du PIC 16F84A, mme si le compteur de programme (PC) de 13 bits peut en adresser 8k. Il faut se mfier des adresses images ! L'adresse 0000h contient le vecteur du reset, l'adresse 0004h, l'unique vecteur d'interruption du PIC. La pile contient 8 valeurs. Comme le compteur de programme, elle n'a pas d'adresse dans la plage de mmoire. Ce sont des zones rserves par le systme. PIC16F84A

Organisation de la mmoire de programme et de la pile.

page 21 de 32

2.Mmoire de donnes : Organisation de la mmoire de donnes PIC16F84A

Elle se dcompose en deux parties de RAM (figure ci-dessus) et une zone EEPROM. La premire contient les SFRs (Special Function Registers) qui permettent de contrler les oprations sur le circuit. La seconde contient des registres gnraux, libres pour l'utilisateur. La dernire contient 64 octets.

page 22 de 32

2.5 - Modes d'adressages : On ne peut pas concevoir un programme qui ne manipule pas de donnes. Il existe trois grands types d'accs une donne ou modes d'adressage : Adressages direct et indirect la mmoire de donnes

A. Adressage immdiat : La donne est contenue dans l'instruction. Exemple : movlw 0xC4 ; Transfert la valeur 0xC4dans W B. Adressage direct : La donne est contenue dans un registre. Ce dernier peut tre un nom (par exemple W) ou une adresse mmoire. Exemple : movf 0x2B, 0 ; Transfert dans W la valeur contenue l'adresse 0x2B. C. Adressage indirect : L'adresse de la donne est contenue dans un pointeur. Dans les PIC, un seul pointeur est disponible pour l'adressage indirect : FSR. Contenu l'adresse 04h dans les deux banques, il est donc accessible indpendamment du numro de banque. En utilisant l'adressage direct, on peut crire dans FSR l'adresse du registre atteindre. FSR contenant 8bits, on peut atteindre les deux banques du PIC 16F84. Pour les PIC contenant quatre banques, il faut positionner le bit IRP du registre d'tat qui sert alors de 9 me bit d'adresse (figure ci-dessus).

page 23 de 32

2.6 - Ports d'entres/Sorties : Le PIC 16F84A est dot de deux ports d'entres/Sorties appels PortA et PortB. Port A Il comporte 5 pattes d'entre/sortie bi-directionnelles, notes RAx avec x={0,1,2,3,4} sur le brochage du circuit. Le registre PORTA, d'adresse 05h dans la banque 0, permet d'y accder en lecture ou en criture. Le registre TRISA, d'adresse 85h dans la banque 1, permet de choisir le sens de chaque patte (entre ou sortie) : un bit 1 positionne le port en entre, un bit 0 positionne le port en sortie. La figure ci-dessous donne le cblage interne d'une patte du port A : - "Data Latch" : Mmorisation de la valeur crite quand le port est en sortie. - "TRIS Latch" : Mmorisation du sens (entre ou sortie) de la patte. - "TTL input buffer" : Buffer de lecture de la valeur du port. La lecture est toujours ralise sur la patte, pas la sortie de la bascule d'criture. - Tansistor N : En criture : Satur ou bloqu suivant la valeur crite. En lecture : Bloqu. - Transistor P : Permet d'alimenter la sortie.

BLOC DIAGRAMME DES PINS RA3 RA0

BLOC DIAGRAMME DU PIN RA4

La patte RA4 peut aussi servir d'entre de comptage pour le timer0.

page 24 de 32

Port B Il comporte 8 pattes d'entre/sortie bi-directionnelles, notes RBx avec x={0,1,2,3,4,5,6,7} sur le brochage du circuit (figure ci-dessous). Le registre PORTB, d'adresse 06h dans la banque 0, permet d'y accder en lecture ou en criture. Le registre TRISB, d'adresse 86h dans la banque 1, permet de choisir le sens de chaque patte (entre ou sortie) : un bit 1 positionne le port en entre, un bit 0 positionne le port en sortie. Le cblage interne d'une porte du port B ressemble beaucoup celui du port A . On peut noter la fonction particulire pilote par le bit RBPU (OPTION_REG.7) qui permet d'alimenter (RBPU=0) ou non (RBPU=1) les sorties. Les quatre bits de poids fort (RB7-RB4) peuvent tre utiliss pour dclencher une interruption sur changement d'tat. RB0 peut aussi servir d'entre d'interruption externe.

BLOC DIAGRAMME DES PINS RB7 RA4

BLOC DIAGRAMME DES PINS RB3 RB0

page 25 de 32

2.7 - Interruptions : Une interruption provoque larrt du programme principal pour aller excuter une procdure d'interruption. A la fin de cette procdure, le microcontrleur reprend le programme lendroit o il stait arrt. Le PIC16F84 possde 4 sources d'interruption. A chaque interruption sont associs deux bits: un bit de validation et un drapeau. Le premier permet d'autoriser ou non l'interruption, le second permet au programmeur de savoir de quelle interruption il s'agit. Tous ces bits sont dans le registre INTCON part le drapeau EEIF de l'interruption EEI qui se trouve dans le registre EECON1. Dans le cas du PIC 16F84, il existe 4 sources d'interruption : - INT : Interruption externe, broche RB0/INT - TMR0 : Fin de comptage - PORTB : Changement dtat du port B (RB7-RB4) - EEPROM : Fin d'criture en EEPROM Lorsque l'vnement dclencheur d'une interruption intervient, alors son drapeau est positionn 1 (lev). Si l'interruption correspondante a t valide, elle est alors dclenche : le programme arrte ce qu'il est en train de faire et va excuter la procdure d'interruption qui se trouve l'adresse 4 en excutant les tapes suivantes : L'adresse contenue dans le PC (Program Counter)est sauvegarde dans la pile, puis remplace par la valeur 0004 (adresse de la routine d'interruption). Le bit GIE est plac "0" pour inhiber toutes les interruptions (afin qu'on ne soit pas drang pendant l'excution de la procdure d'interruption). A la fin de la procdure d'interruption (instruction RETFIE) : o le bit GIE est replac l'tat haut (autorisant ainsi un autre vnement) o le contenu du PC est recharg partir de la pile ce qui permet au programme de reprendre l o il s'est arrt Deux remarques importantes sont faire : Le drapeau reste ltat haut mme aprs le traitement de linterruption. Par consquent, il faut toujours le remettre "0" la fin de la routine d'interruption sinon l'interruption sera dclenche de nouveau juste aprs l'instruction RETFI Seul le PC est empil automatiquement. Si cela est ncessaire, les registres W et STATUS doivent tre sauvegards en RAM puis restaurs la fin de la routine pour que le microcontrleur puisse reprendre le programme dans les mmes conditions o il l'a laiss. L'interruption INT (Entre RB0 du port B) Cette interruption est provoque par un changement d'tat sur l'entre RB0 du port B quand elle est programme en entre. Elle est gre par les bits : - INTE : bit de validation (1 = oui, 0 = non) - INTF : drapeau - INTEDG : front de dclenchement, 1=montant, 0=descendant (registre OPTION_REG)

page 26 de 32

L'interruption RBI (RB4 A RB7 du port B) Cette interruption est provoque par un changement d'tat sur l'une des entres RB4 RB7 du port B, Le front n'a pas d'importance. Les bits associs sont RBIE (validation) et RBIF (drapeau). L'interruption T0I : Dbordement du Timer TMR0 Cette interruption est provoque par le dbordement du timer TMR0. Les bits associs sont T0IE (validation) et T0IF (drapeau). L'interruption EEI : Fin d'criture dans l'EEPROM Cette interruption est dclenche la fin d'une criture russie dans l'EEPROM. Les bits associs sont EEIE (validation) et EEIF (drapeau).

2.8 - Timers : A - Le Timer TMR0 : Cest un compteur 8 bits ayant les caractristiques suivantes : Il est incrment en permanence soit par lhorloge interne Fosc/4 (mode timer) soit par une horloge externe applique la broche RA4 du port A (mode compteur). Le chois de l'horloge se fait l'aide du bit T0CS du registre OPTION_REG. o TOCS = 0 --> horloge interne. o TOCS = 1 --> horloge externe applique RA4. Dans le cas de l'horloge externe, on peut choisir le front sur lequel le TIMER s'incrmente. o TOSE = 0 --> incrmentation sur fronts montants. o TOSE = 1 --> incrmentation sur fronts descendants. Quelque soit l'horloge choisie, on peut la passer dans un diviseur de frquence programmable (prescaler) dont le rapport est fixs par les bits PS0, PS1 et PS2 du registre OPTION_REG (tableau ci-contre). L'affectation ou non du pr-diviseur se fait l'aide du bit PSA du registre OPTION_REG o PSA = 0 --> on utilise le pr-diviseur o PSA = 1 --> pas de pr-diviseur (affect au chien de garde)

page 27 de 32

Le contenu du timer TMR0 est accessible par le registre qui porte le mme nom. Il peut tre lu ou crit n'importe quel moment. Aprs une criture, l'incrmentation est inhibe pendant deux cycles instruction. Au dbordement de TMR0 (FF --> 00), le drapeau T0IF est plac 1. Ceci peut dclencher l'interruption T0I si celle-ci est valide.

B - Le Watchdog Timer WDT (Chien de garde) : Cest un compteur 8 bits incrment en permanence (mme si le C est en mode sleep) par une horloge RC intgre indpendante de l'horloge systme. Lorsquil dborde, (WDT TimeOut), deux situations sont possibles : Si le C est en fonctionnement normal, le WDT time-out provoque un RESET. Ceci permet dviter de rester plant en cas de blocage du microcontrleur par un processus indsirable non contrl. Si le C est en mode SLEEP, le WDT time-out provoque un WAKE-UP, l'excution du programme continue normalement l o elle s'est arrte avant de rentrer en mode SLEEP. Cette situation est souvent exploite pour raliser des temporisations. L'horloge du WDT est ajuste pour que Le Time-Out arrive toutes les 18 ms. Il est cependant possible d'augmenter cette dure en faisant passer le signal Time-Out dans un pr-diviseur programmable (partag avec le timer TMR0). L'affectation se fait l'aide du bit PSA du registre OPTION_REG. o PSA = 1 --> on utilise le pr-diviseur o PSA = 0 --> pas de pr-diviseur (affect TMR0) Le rapport du pr-diviseur est fix par les bits PS0, PS1 et PS2 du registre OPTION_REG (voir tableau ci-contre) L'utilisation du WDT doit se faire avec prcaution pour viter la rinitialisation (inattendue) rpte du programme. Pour viter un WDT TimeOut lors de l'excution d'un programme, on a deux possibilits : page 28 de 32

Inhiber le WDT d'une faon permanente en mettant 0 le bit WDTE dans l'EEPROM de configuration. Remettre le WDT 0 priodiquement dans le programme l'aide de l'instruction CLRWDT pour viter qu'il ne dborde.

2.9 - Horloge :

L'horloge peut tre soit interne soit externe. L'horloge interne est constitue d'un oscillateur quartz ou d'un oscillateur RC. Avec l'oscillateur Quartz, on peut avoir des frquences allant jusqu' 4, 10 ou 20 MHz selon le type de C. Le filtre passe bas RS, C2 limite les harmoniques dus lcrtage et Rduit lamplitude de loscillation. (Il n'est pas obligatoire). Avec un oscillateur RC, la frquence de l'oscillation est fixe par Vdd, Rext et Cext. Elle peut varier lgrement d'un circuit l'autre. Dans certains cas, une horloge externe au microcontrleur peut tre utilise pour synchroniser le PIC sur un processus particulier.

Quelque soit l'oscillateur utilis, l'horloge systme dite aussi horloge instruction est obtenue en divisant la frquence par 4.

Avec un quartz de 4 MHz, on obtient une horloge instruction de 1 MHz, soit le temps pour excuter une instruction de 1s.

page 29 de 32

3 - Ralisation d'un cas pratique.

3.1 - Brve description : Dans cette ralisation, il s'agira de programmer un PIC 16F84A dans le but de simuler le fonctionnement de 4 feux de signalisation, un carrefour routier. On pendra bien soin de programmer tous les cas possibles. Enfin, on ralisera une simulation grce Porteus Pro 8, par importation du programme en C, ralis avec mikroC Pro v4.15. 3.2 - Schma Proteus Pro 8 (Feux de signalisation) :

page 30 de 32

3.3 - Programme en C dvelopp avec mikroC Pro 4.15 :

page 31 de 32

4 - Conclusions

Comme nous avons pu le voir tout au long de ces chapitres, le PIC16F84A, bien que vieillissant un peu, dispose encore de nombreuses ressources et risque de faire parler de lui encore un certain temps. Difficile apprhender au dbut, celui-ci simpose comme llment indispensable pour de nombreux montages, tant par son rapport qualit/prix, que par ses capacits, son principal handicap tant le nombre limit de ses entres/sorties. Il est programmable avec un minimum de difficults, ce qui fait de lui le microcontrleur parfait pour les amateurs dbutants. Quand aux utilisateurs confirms, ils apprcient lensemble de ses fonctions leurs justes valeurs, et savent repousser les limites du PIC par de petites astuces, toutes plus ingnieuses les unes que les autres. De mme, le matriel de programmation et de test, requiert le minimum de connaissances que lon peut demander un amateur. Pour conclure, nous pouvons dire que dans bien des cas, le PIC 16F84A nous permettra darriver nos fins avec un minimum de difficults, et un maximum de simplicit.

5 - Bibliographie
PIC16F84A datasheet

page 32 de 32

Das könnte Ihnen auch gefallen