Você está na página 1de 37

Pic16f84

SOMMAIRE
I- Introduction II- Description III- Les mmoires IV- Les registres V- Jeu dinstruction VI- Modes dadressages VII- Timers VIII- Les interruptions

I-Intorduction
Un microcontrleur est une unit de traitement de linformation de type microprocesseur laquelle on a ajout des priphriques internes permettant de raliser des montages sans ncessiter lajout de composants annexes. Un microcontrleur peut fonctionner dune faon autonome aprs programmation.

Un microcontrleur est un composant lectronique Autonome dot: dun microprocesseur, de la mmoire RAM, de la mmoire permanente, des interfaces dE/S //, srie (RS232, I2C, SPI ) des interfaces dE/S analogique- Des Timer pour grer le temps Dautres modules plus au moins sophistiqus selon la taille des C

II-Description et Structure Interne :


Un microcontrleur se prsente sous la forme dun circuit intgr runissant tous les lments dune structure base de microprocesseur .voici gnralement ce que lon trouve lintrieur dun tel composant : un microprocesseur (C.P.U) De la mmoire de donne (RAM, EEPRROM) De la mmoire programme (ROM, OTPROM, UVPROM, ou EEPROM) Des interfaces parallles pour la connexion des entres /sorties Des interfaces sries (synchrone ou asynchrone) pour le dialogue avec les autres units

II-1 Architecture interne:


Les microcontrleurs, ont des architectures trs similaires et sont constitus de modules fondamentaux assurant les mme fonctions : UAL ; ports dE/Interfaces de communications srie, interfaces dE/S analogiques , Timers et horloge temps rels; .

Architecture interne du PIC16F84

Parmi les principaux constituants, on remarque:


la mmoire de type FlashROM pour le programme; la mmoire de type RAM pour les registres; la mmoire de type EEPROM pour les donnes sauvegarder; des registres particuliers: W, FSR et d'tat; l'Unit Arithmtique et Logique (ALU) ; les ports d'entres / sorties; la pile 8 niveaux.

II-2 Les entres/sorties:


A part les cinq pins rservs au cortge des invariants devant ncessairement figurer dans tout montage, les treize autres pins du 16f84 servent dentres/sorties. Elles sont regroupes en deux ports : Port A et Port B. Le port A possde 5 lignes, nommes : RA0.pin 17 RA1.pin 18 RA2.pin 1 RA3..pin 2 RA4..pin 3(RA4/T0CK1) (NB : RA = Register A)

Le Port B possde 8 lignes, nommes : RB0..pin 6 (RB0/INT) RB1..pin 7 RB2..pin 8 RB3..pin 9 RB4..pin 10 RB5..pin 11 RB6..pin 12 RB7..pin 13 (NB: RB=Register B)

II-3 Identification des PICs :


Un PIC est gnralement identifi par une rfrence de la forme suivante : xx(L)XXyy-zz xx : famille de composant, actuellement 12,14,16,17 et 18.

L: tolrance plus importante de la plage de tension. XX: type de mmoire programme. C:EPROM ou EEPROM. CR:PROM. F:Flash yy: identificateur. zz: vitesse maximale du quartz de pilotage.

III-Les mmoires :
III-1 La mmoire de programme:
Comme son nom l'indique, c'est dans cette mmoire qu'est mmoris le programme excuter. De type Flash ROM, elle est organise en 1024 mots de 14 bits, ce qui permet de coder sur un seul mot l'instruction et l'oprande, la diffrence des microcontrleurs plus classiques 8 bits o l'instruction et l'oprande sont crits sur plusieurs adresses conscutives.

III-2 La mmoire de donnes :


une mmoire de donnes (Data Memory) EEPROM flash, de 64 emplacements 8 bits, allant de ladresse 00 ladresse 3F, auxquels on accde uniquement par lintermdiaire de quatre registres spciaux: -EEADR (EEprom ADRess) pour ce qui concerne les adresses - EEDATA (EEprom DATA) pour ce qui concerne les donnes - EECON1 et EECON2 (EEprom CONtrol) permettant de dfinir le mode de fonctionnement de cette mmoire.

III-3 La mmoire RAM:


Une mmoire RAM 8 bits, que Microchip appelle Register File, rserve aux donnes. A plus proprement parler, il sagit dune RAM statique (SRAM). Cet espace est son tour rparti en deux zones : a) une zone RAM de 24 emplacements 8 bits rserve aux registres spciaux b) une zone RAM de donnes, constitue de 68 emplacements 8 bits (adresses de 0C 4F) situs juste au dessous des registres spciaux, formant la RAM utilisateur proprement dite.

III-4 La mmoire EEPROM :


Une toute petite mmoire EEPROM, contenant seulement 8 cases, de ladresse 2000 ladresse 2007, rserves au microcontrleur. Les adresses 2000, 2001, 2002 et 2003 correspondent aux emplacements dans lesquels lutilisateur peut stocker un code didentification . Ladresse 2007 correspond au registre de configuration du microcontrleur.

IV-Les registres:
IV-1 Organisation:
La mmoire donne correspond aux registres (File Registrs) vus par lunit central. Cest registres sont de 2 types : -Registres systme :ils permettent la configuration et la surveillance de ltat du processeur et de ses priphriques; ces registres sont accessibles en lecture ou criture suivant leur fonction. -Registres dusages gnral :ils permettent le stockage de variables, ils sont accessibles en lecture et en criture par le programme. -Baptis du nom de registre usage gnral par Microchip, chacune de ces mmoires est adressable directement. - ce bloc de 68 registres usage gnral, le fabricant a associ 11 registres internes et organis les adresses selon le tableau

Adresses 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 4F EEDATA EEADR PCLATH INTCON INDF TMR0 PCL STATUS FSR PORTA PORTB

Registres INDF OPTION PCL STATUS FSR TRISA TRISB

Registres

Adresses 80 81 82 83 84 85 86 87 88 89 8A 8B 8C CF

EECON1 EECON2 PCLATH INTCON Accs aux mmes mmoires que page 0 Page 1

68 mmoires disponibles Page 0

IV-2 description des registres inernes:


- Registre INDF : Le registre INDF d'adresse 00 est utilis pour l'adressage indirect.il contient la valeur du registre point par le FSR - Registre TMRO : Le registre TMRO d'adresse 01 est lui aussi particulier puisqu'il constitue un compteur programmable incrment continuellement une cadence constante indpendante de l'excution du reste du programme. Aprs avoir atteint la valeur 255, le compteur reprend 0.
-Registre PCL et PCLATH : Le registre PCL d'adresse 02 contient les 8 bits de poids faible du PC qui est cod sur 13 bits. Lors d'oprations d'criture dans le registre PCL, le nouveau compteur programme est calcul partir des 8 bits du registre PCL et des 5 bits du registre PCLATH d'adresse OA.

- Registres PORTA et PORTB :Les registres PORTA d'adresse 05 et PORTB d'adresse 06 sont les registres des ports d'entres/sorties. Chaque broche de chaque port peut tre utilise en entre ou en sortie: le sens de fonctionnement des ports est dfini par le contenu des registres TRISA et TRISB : un bit 0 programme la broche correspondante en sortie, un bit 1 la programme en entre. - Registre INTCON :Le registre INTCON d'adresse OB, prsent dans le tableau , est utilis pour le contrle et la gestion des interruptions.

Bit 7 GIE

Bit 6 EEIE

Bit 5 T0IE

Bit 4 INTE

Bit 3 RBIE

Bit 2 T0IF

Bit 1 INTF

Bit 0 RBIF

- Registres EEDATA, EEADR, EECON1 et EECON2:

-Le registre EEDATA d'adresse 08 contient, selon l'opration, la donne lue ou la donne crire. -Le registre EEADR d'adresse 09 contient son adresse.(donne) -Le registre EECON1 d'adresse 88 dfinit le mode de fonctionnement de l'EEPROM. -Le registre EECON2 d'adresse 89 n'est pas physiquement implant et ne sert qu' la scurisation lors de la phase d'criture. L'EEPROM ne contenant que 64 octets d'adresse 00 3F, les 2 bits de poids fort de EEADR sont donc toujours 0.

- Registre STATUS Le registre STATUS, ou registre d'tat d'adresse 03.


Bit 7 IRP Bit 6 RP1 Bit 5 RP0 Bit 4 TO Bit 3 PD Bit 2 Z Bit 1 DC Bit 0 C

Registre STATUS.

galement utilis par les instructions de rotation.

-Le bit C (Carry), est mis 1 lors d'oprations avec retenue. Ce bit est

-Le bit DC(Digit Carry),est mis 1 quand une retenue apparat aprs le bit 3. -Le bit Z (Zero), est mis 1 quand un rsultat arithmtique ou logique est nul. -Le bit PD (Power Down), est mis 1 lors de la mise sous tension ou lors de l'excution de CLRWDT. Ce bit est mis 0 par l'instruction SLEEP. -Le bit TO (Time Out), est mis 1 lors de la mise sous tension ou lors de l'excution des instructions CLRWDT et SLEEP. Ce bit est mis 0 si le timer chien de garde dborde. -Le bit RP0 sert slectionner la page des registres

-Registre de travail W (Working register) et Unit Arithmtique et Logique (ALU) :

Le registre de travail est l'quivalent des accumulateurs des microcontrleurs classiques. C'est travers l'Unit Arithmtique et Logique que s'effectuent les oprations arithmtiques et boolennes entre les donnes d'un registre et le registre de travail W.

V-Jeu d'instructions :
V-1definition:
Les PICs sont conus selon une architecture RISC( reducd instruction set computer). Une architecture RISC propose un jeu d'instructions relativement rduit. Les modes d'adressage sont plus simples que dans une architecture CISC. L'architecture propose en gnral un nombre important de registres gnraux. Ces caractristiques favorisent une utilisation optimale du pipeline au niveau de la micro-architecture.

Oprations sur des octets.


Mnmonique ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF

Oprande f,d f,d f f,d f,d f,d f,d f,d f,d f,d f f,d f,d f,d f,d f,d

Description Add W and F AND W with f Clear f Clear W Complement f Decrement f Decrement f, Skip if 0 Increment f Increment f, Skip if 0 Inclusive OR W with f Move f Move W to f No Operation Rotate Left throogh Carry Rotate Right throogh Carry Subtract W from f Swap nibbles in f Exclusive OR W with f

Cycles 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1

Bits affects C, DC, Z Z Z Z Z Z Z Z Z

C C C, DC, Z Z

Oprations des bits:

Mnmonique Oprande BCF BSF BTFSC BTFSS f,b f,b f,b f,b Bit Clear f Bit Set f

Description

Cycles 1 1 1(2) 1(2)

Bits affects

Bit Test f, Skip if Clear Bit Test f, Skip if Set

Oprations de contrle et oprations sur les littraux.

VI- Modes d'adressages :


Il existe trois grands types d'accs une donne ou modes d'adressage :
- Adressage immdiat : La donne est contenue dans l'instruction. - Adressage direct : La donne est contenue dans un registre. - Adressage indirect : Ladresse de la donne est contenue dans un pointeur.

VII-Le timers
Il sagit dun compteur/temporisateur,le microcontroleur le PIC16F84 ne comporte quun seul timer sur 8 bits. Les diffrents modes de fonctionnement: -on peut compter les impulsions recues sur la pin RA4/TOKI. -on peut compter les cycles dhorloge du PIC meme. Objectifs : Les Timers ou compteurs de temps coul permettent : -De raliser des temporisations prcises puisquils utilisent des oscillateurs de rfrence quartz. -De gnrer des signaux lectriques 0V / 5V. -De mesurer des dures. -De compter des vnements extrieurs sur des fronts montants ou descendants.

VIII-Les 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 principal lendroit o il la laiss. 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.

Ralisation dun projet laide de microcontrleur

Dans cette exprience on va essayer dallumer les LEDs relis au pins B0 B7 et les teindre dans un premier temps de la faon suivante :

Apres on va essayer de faire un jeu de lumire de la faon suivante :

Et la dernire tape consiste allumer et teindre tout les LEDs.

Explication du programme

Pour commencer on doit mettre tout les pins comme sortie en utilisant le TRISB=0; Et vu quon va allumer tout les LEDs on doit crire les 2commandes suivantes : PORTB=0B11111111; PORTB=0; permet davoir une tension de 5V

permet de faire la liaison la masse

On doit insrer la commande delay_ms(1000) pour quon puisse voire lallumage des LEDs car le microcontrleur excute les 2 premires commande tellement vite quon saura pas voire les 2 actions

Code programme 1 partie

void main() { TRISB=0;PORTB=0; loop: PORTB=0B00000001;delay_ms(500); //L0 ON PORTB=0B00000011;Delay_ms(500); //L0,L1 ON PORTB=0B00000111;delay_ms(500); //L0,L1,L2 ON PORTB=0B00001111;delay_ms(500); //L0,L1,L2,L3 ON PORTB=0B00011111;delay_ms(500); //L0,L1,L2,L3,L4 ON PORTB=0B00111111;delay_ms(500); //L0,L1,L2,L3,L4,L5 ON

PORTB=0B01111111;delay_ms(500); //L0,L1,L2,L3,L4,L5,L6 ON

Code programme 2 partie

PORTB=0B11111111;delay_ms(500); //L0,L1,L2,L3,L4,L5,L6,L7 ON
PORTB=0B00000000;delay_ms(500); //ALL LEDs OFF

Cest la partie ou tout les LEDs sallument et seteignent

Code programme partie 3


PORTB=0B11111111;delay_ms(500); //ALL LEDs ON PORTB=0B00000000;delay_ms(500); //ALL LEDs OFF goto loop; } Partie final du programme qui demande lallumage de tout les LEDs ainsi que leur extinction. La reptition du prgramme en continu cest du a linstruction: loop: -- - - - - - - -- - - - - - - goto; commande qui permet daller ladresse loop et commencer refaire les instructions code programme

FIN

Você também pode gostar