projet microcontrleur presentation final craft1
TRANSCRIPT
Pic16f84
Projet microcontrôleur
I- Introduction
II- Description
III- Les mémoires
IV- Les registres
V- Jeu d’instruction
VI- Modes d’adressages
VII- Timers
VIII- Les interruptions
SOMMAIRE
Un microcontrôleur est une unité de traitement de
l’information de type microprocesseur à laquelle on a
ajouté des périphériques internes permettant de
réaliser des montages sans nécessiter l’ajout de
composants annexes. Un microcontrôleur peut
fonctionner d’une façon autonome après
programmation.
I-Intorduction
Un microcontrôleur est un composant électronique Autonome doté:
• d’un microprocesseur,
• de la mémoire RAM,
• de la mémoire permanente,
• des interfaces d’E/S //, série (RS232, I2C, SPI …)
• des interfaces d’E/S analogique- Des Timer pour gérer le temps
• D’autres modules plus au moins sophistiqués selon la taille des µC
Un microcontrôleur se présente sous la forme d’un circuit intégré réunissant tous les éléments d’une structure à base de microprocesseur .voici généralement ce que l’on trouve à l’intérieur d’un tel composant :
• un microprocesseur (C.P.U)
• De la mémoire de donnée (RAM, EEPRROM)
• De la mémoire programme (ROM, OTPROM, UVPROM, ou EEPROM)
• Des interfaces parallèles pour la connexion des entrées /sorties
• Des interfaces séries (synchrone ou asynchrone) pour le dialogue avec les autres unités
II-Description et Structure Interne :
II-1 Architecture interne:
Les microcontrôleurs, ont des architectures très similaires et sont constitués de modules fondamentaux assurant les même fonctions :
• UAL ;• ports d’E/Interfaces de
communications série, • interfaces d’E/S analogiques , • Timers et horloge temps réels;……….
Architecture interne du PIC16F84
• la mémoire de type FlashROM pour le programme;
• la mémoire de type RAM pour les registres;
• la mémoire de type EEPROM pour les données à sauvegarder;
• des registres particuliers: W, FSR et d'état;
• l'Unité Arithmétique et Logique (ALU) ;
• les ports d'entrées / sorties;
• la pile à 8 niveaux.
Parmi les principaux constituants, on remarque:
A part les cinq pins réservés au cortège des invariants devant nécessairement figurer dans tout montage, les treize autres pins du 16f84 servent d’entrées/sorties.
Elles sont regroupées en deux ports : Port A et Port B.
Le port A possède 5 lignes, nommées :
RA0………….pin 17
RA1………….pin 18
RA2………….pin 1
RA3………..pin 2
RA4………..pin 3(RA4/T0CK1) (NB : RA = Register A)
II-2 Les entrées/sorties:
Le Port B possède 8 lignes, nommées :
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)
Un PIC est généralement identifié par une référence de la forme suivante : xx(L)XXyy-zz
xx : famille de composant, actuellement « 12,14,16,17 et 18».
L: tolérance plus importante de la plage de tension.
XX: type de mémoire programme.• C:EPROM ou EEPROM.• CR:PROM.• F:Flash
yy: identificateur.
zz: vitesse maximale du quartz de pilotage.
II-3 Identification des PICs :
III-1 La mémoire de programme:Comme son nom l'indique, c'est dans cette mémoire qu'est mémorisé le programme à exécuter. De type Flash ROM, elle est organisée en 1024 mots de 14 bits, ce qui permet de coder sur un seul mot l'instruction et l'opérande, à la différence des microcon trôleurs plus classiques à 8 bits où l'instruction et l'opérande sont écrits sur plusieurs adresses consécutives.
III-2 La mémoire de données :une mémoire de données (Data Memory) EEPROM flash, de
64 emplacements à 8 bits, allant de l’adresse 00 à l’adresse 3F, auxquels on accède uniquement par l’intermédiaire de quatre registres spéciaux:
-EEADR (EEprom ADRess) pour ce qui concerne les adresses
- EEDATA (EEprom DATA) pour ce qui concerne les données
- EECON1 et EECON2 (EEprom CONtrol) permettant de définir le mode de fonctionnement de cette mémoire.
III-Les mémoires :
III-3 La mémoire RAM: Une mémoire RAM à 8 bits, que Microchip appelle Register File, réservée aux données.A plus proprement parler, il s’agit d’une RAM statique (SRAM). Cet espace est à son tour réparti en deux zones :a) une zone RAM de 24 emplacements à 8 bits réservée aux
registres spéciauxb) une zone RAM de données, constituée de 68 emplacements à 8 bits (adresses de 0C à 4F) situés juste au dessous des registres spéciaux, formant la RAM utilisateur proprement dite.
III-4 La mémoire EEPROM :Une toute petite mémoire EEPROM, contenant seulement 8 cases, de l’adresse 2000 à l’adresse 2007, réservées au microcontrôleur.Les adresses 2000, 2001, 2002 et 2003 correspondent aux emplacements dans lesquels l’utilisateur peut stocker un code d’identification .L’adresse 2007 correspond au registre de configuration du microcontrôleur.
IV-1 Organisation:La mémoire donnée correspond aux registres (File Registrs) vus par l’unité central. C’est registres sont de 2 types :
-Registres système :ils permettent la configuration et la surveillance de l’état du processeur et de ses périphériques; ces registres sont accessibles en lecture ou écriture suivant leur fonction.
-Registres d’usages général :ils permettent le stockage de variables, ils sont accessibles en lecture et en écriture par le programme.
-Baptisé du nom de registre à usage général par Microchip, chacune de ces mémoires est adressable directe ment.
-À ce bloc de 68 registres à usage général, le fabricant a associé 11 registres internes et organisé les adresses selon le tableau
IV-Les registres:
Adresses Registres Registres Adresses
00 INDF INDF 80
01 TMR0 OPTION 81
02 PCL PCL 82
03 STATUS STATUS 83
04 FSR FSR 84
05 PORTA TRISA 85
06 PORTB TRISB 86
07 87
08 EEDATA EECON1 88
09 EEADR EECON2 89
0A PCLATH PCLATH 8A
0B INTCON INTCON 8B
0C à 4F 68 mémoires disponibles
Accès aux mêmes mémoires que page 0
8C à CF
Page 0 Page 1
- Registre INDF : Le registre INDF d'adresse 00 est utilisé pour l'adressage indi rect.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 incrémenté continuelle ment à une cadence constante indépendante de l'exécution du reste du programme. Après avoir atteint la valeur 255, le comp teur 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'opérations 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.
IV-2 description des registres inernes:
- Registres PORTA et PORTB :Les registres PORTA d'adresse 05 et PORTB d'adresse 06 sont les registres des ports d'entrées/sorties. Chaque broche de chaque port peut être utilisée en entrée ou en sortie: le sens de fonction nement des ports est défini par le contenu des registres TRISA et TRISB : un bit à 0 programme la broche correspondante en sortie, un bit à 1 la programme en entrée.
- Registre INTCON :Le registre INTCON d'adresse OB, présenté dans le tableau , est utilisé pour le contrôle et la gestion des interruptions.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
- Registres EEDATA, EEADR, EECON1 et EECON2:
-Le registre EEDATA d'adresse 08 contient, selon l'opération, la donnée lue ou la donnée à écrire.
-Le registre EEADR d'adresse 09 contient son adresse.(donnée)
-Le registre EECON1 d'adresse 88 définit le mode de fonctionnement de l'EEPROM.
-Le registre EECON2 d'adresse 89 n'est pas physiquement implanté et ne sert qu'à la sécurisation 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.
-Le bit C (Carry), est mis à 1 lors d'opérations avec retenue. Ce bit est également utilisé par les instructions de rotation.
-Le bit DC(Digit Carry),est mis à 1 quand une retenue apparaît après le bit 3.
-Le bit Z (Zero), est mis à 1 quand un résultat arithmétique ou logique est nul.
-Le bit PD (Power Down), est mis à 1 lors de la mise sous tension ou lors de l'exécution 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'exécution des instructions CLRWDT et SLEEP. Ce bit est mis à 0 si le timer chien de garde déborde.
-Le bit RP0 sert à sélectionner la page des registres
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
IRP RP1 RP0 TO PD Z DC C
Registre STATUS.
-Registre de travail W (Working register) et Unité Arithmétique et Logique (ALU) :
Le registre de travail est l'équivalent des accumulateurs des microcontrôleurs classiques. C'est à travers l'Unité Arithmétique et Logique que s'effectuent les opérations arithmétiques et booléennes entre les données d'un registre et le registre de travail W.
V-1definition:
Les PICs sont conçus selon une architecture RISC( reducd instruction set computer).
Une architecture RISC propose un jeu d'instructions relativement réduit. Les modes d'adressage sont plus simples que dans une architecture CISC. L'architecture propose en général un nombre important de registres généraux. Ces caractéristiques favorisent une utilisation optimale du pipeline au niveau de la micro-architecture.
V-Jeu d'instructions :
Mnémonique OpérandeDescription CyclesBits affectés
ADDWF f,d Add W and F 1 C, DC, Z
ANDWF f,d AND W with f 1 ZCLRF f Clear f 1 ZCLRW Clear W 1 ZCOMF f,d Complement f 1 ZDECF f,d Decrement f 1 ZDECFSZ f,d Decrement f, Skip if 0 1(2) INCF f,d Increment f 1 ZINCFSZ f,d Increment f, Skip if 0 1(2) IORWF f,d Inclusive OR W with f 1 ZMOVF f,d Move f 1 ZMOVWF f Move W to f 1 NOP No Operation 1 RLF f,d Rotate Left throogh Carry 1 CRRF f,d Rotate Right throogh Carry 1 CSUBWF f,d Subtract W from f 1 C, DC, ZSWAPF f,d Swap nibbles in f 1 XORWF f,d Exclusive OR W with f 1 Z
Opérations sur des octets.
Mnémonique
Opérande DescriptionCycles
Bits affectés
BCF f,b Bit Clear f 1
BSF f,b Bit Set f 1
BTFSC f,b Bit Test f, Skip if Clear 1(2)
BTFSS f,b Bit Test f, Skip if Set 1(2)
Opérations des bits:
Opérations de contrôle et opérations sur les littéraux.
Il existe trois grands types d'accès à une donnée ou modes d'adressage :
- Adressage immédiat : La donnée est contenue dans l'instruction.
- Adressage direct : La donnée est contenue dans un registre.
- Adressage indirect : L’adresse de la donnée est contenue dans un pointeur.
VI- Modes d'adressages :
Il s’agit d’un compteur/temporisateur,le microcontroleur le PIC16F84 ne comporte qu’un seul timer sur 8 bits.
Les différents modes de fonctionnement:
-on peut compter les impulsions recues sur la pin RA4/TOKI.
-on peut compter les cycles d’horloge du PIC meme.
Objectifs :
Les Timers ou compteurs de temps écoulé permettent :
-De réaliser des temporisations précises puisqu’ils utilisent des oscillateurs de référence à quartz.
-De générer des signaux électriques 0V / 5V.
-De mesurer des durées.
-De compter des évènements extérieurs sur des fronts montants ou descendants.
VII-Le timers
Une interruption provoque l’arrêt du programme principal pour aller exécuter une procédure d'interruption.
A la fin de cette procédure, le microcontrôleur reprend le programme principal à l’endroit où il l’a laissé. A chaque interruption sont associés 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.
VIII-Les interruptions
Dans cette expérience on va essayer d’allumer les LEDs reliés au pins B0 à B7 et les éteindre dans un premier temps de la façon suivante :
Réalisation d’un projet à l’aide de microcontrôleur
Apres on va essayer de faire un jeu de lumière de la façon suivante :
Et la dernière étape consiste à allumer et éteindre tout les LEDs.
Pour commencer on doit mettre tout les pins comme sortie en utilisant le TRISB=0;
Et vu qu’on va allumer tout les LEDs on doit écrire les 2commandes suivantes :
PORTB=0B11111111; permet d’avoir une tension de 5V
PORTB=0; permet de faire la liaison à la masse
On doit insérer la commande delay_ms(1000) pour qu’on puisse voire l’allumage des LEDs car le microcontrôleur exécute les 2 premières commande tellement vite qu’on saura pas voire les 2 actions
Explication du programme
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 programme1 partie
PORTB=0B11111111;delay_ms(500); //L0,L1,L2,L3,L4,L5,L6,L7 ON
PORTB=0B00000000;delay_ms(500); //ALL LEDs OFF
C’est la partie ou tout les LEDs s’allument et s’eteignent
Code programme 2 partie
PORTB=0B11111111;delay_ms(500); //ALL LEDs ON
PORTB=0B00000000;delay_ms(500); //ALL LEDs OFF
goto loop;
}
Partie final du programme qui demande l’allumage de tout les LEDs ainsi que leur extinction.
La repétition du prgramme en continu c’est du a l’instruction:
loop:
-- - - - - - - - code programme
-- - - - - - - -
goto; commande qui permet d’aller à l’adresse loop et commencer à refaire les instructions
Code programmepartie 3
FIN