Microprocesseurs & Microcontrôleurs Lotfi BOUSSAID Département de Génie Électrique Ecole Nationale d’Ingénieurs de Monastir [email protected] 2016 - 2017 Les Microcontrôleurs Plan du Cours - CH 1. Codage de l’Information - CH 2. Les Portes Logiques - CH 3. Les Registres, les mémoires et les ALU - CH 4. Introduction aux Microprocesseurs - CH 5. Le Microprocesseur 8086 d’Intel - CH 6. Le Microcontrôleur PIC16F84 de Microchip - CH 7. Introduction au Microcontrôleur 16F877 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 2 CH 6. Le Microcontrôleur PIC16F84 de Microchip Introduction aux microcontrôleurs Un microcontrôleur est un composant réunissant sur un seul et même silicium plusieurs composants. On parle de "système sur une puce" (en anglais : "System On chip"). Il existe plusieurs familles de microcontrôleurs, se différenciant par la vitesse de leur processeur et par le nombre de périphériques qui les composent. Toutes ces familles ont un point commun c’est de réunir tous les éléments essentiels d’une structure à base de microprocesseur sur une même puce. Un microcontrôleur comprend : - Un microprocesseur (C.P.U.) ; Des bus; De la mémoire de donnée (RAM et EEPROM) ; 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 d’autres unités; Des Timers pour générer ou mesurer des signaux avec une grande précision temporelle. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 3 CH 6. Le Microcontrôleur PIC16F84 de Microchip Introduction aux microcontrôleurs Architecture interne d’un microcontrôleur Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 4 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip • Harvard BUS SYSTÈME BUS INSTRUCTIONS MÉMOIRE DONNÉES MÉMOIRE PROGRAMME CPU IO IO IO • • • • • BUS DONNÉES Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 5 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Qu’est-ce qu’un PIC ? Un PIC est un microprocesseur à lequel on a rajouté des périphériques Les PICs sont des composants dits RISC (Reduced Instructions Set Computer) Les familles des PICs : • La famille Base-Line : mots d’instructions de 12 bits • La famille Mid-Range, qui utilise des mots de 14 bits (16F84, 16F876, ..) • La famille High-End, qui utilise des mots de 16 bits. Tous les PICs Mid-Range ont un jeu de 35 instructions, stockent chaque instruction dans un seul mot de programme, et exécutent chaque instruction (sauf les sauts) en 1 cycle. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 6 6 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le PICs de MICROCHIP (2) Identification d’un PIC PIC16 indique un PIC Mid-Range C indique que la mémoire programme est une EPROM ou plus rarement une EEPROM CR pour indiquer une mémoire de type ROM F pour indiquer une mémoire de type FLASH Les derniers chiffres identifient le PIC -XX représente la fréquence d’horloge maximale Un composant qu’on ne peut reprogrammer est appelé O.T.P. pour One Time Programming un 16F84-04 est un PIC Mid-Range (16) donc la mémoire programme est de type FLASH (F) donc réinscriptible de type 84 et capable d’accepter une fréquence d’horloge de 4MHz. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 7 7 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Caractéristiques du processeur RISC : 16F84A Microprocesseur Seulement 35 instructions codées sur 14 bits ; Toutes les instructions ont un seul 1 cycle machine par instruction, sauf pour les sauts (2 cycles machine); Vitesse maximum 20 MHz soit une instruction en 400 ns (1 cycle machine = 4 cycles d'horloge) ; Mémoire programme de 1024 mots ; Mémoire RAM de données de 68 octets ; Mémoire EEPROM de 64 octets ; Données de 8 bits ; 15 Registres pour des fonctions spéciales ; Pile de 8 niveaux de profondeur ; Adressage direct, indirect and relatif ; 4 sources d’interruption : Broche externe RB0/INT ; Débordement du timerTMR0 ; Interruption sur transition sur les broches PORTB<7:4> ; Ecriture complète des données sur la mémoire EEPROM. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 8 8 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Caractéristiques des périphériques : 13 broches d’entrées / Sorties avec contrôle individuel de la direction ; Source de courant important pour la commande d’une LED : o 25 mA max. dissipé par broche ; o 25 mA source de courant max. par broche ; o TMR0: Timer8-bit programmable Caractéristiques spéciales : Mémoire programme FLASH à 10 000 cycles Effacement / Ecriture; Mémoire données EEPROM à 10,000,000 cycles Effacement / Ecriture, avec un maintien de données > 40 ans; Programmable par liaison série sur 2 broches (ICSP™) ; Reset à la mise sous tension [Power-on Reset (POR)] , Power-up Timer(PWRT) ; Un Timer chien de garde (WDT) avec son propre oscillateur RC ; Protection de code ; Mode SLEEP pour la sauvegarde d’énergie ; Oscillateur sélectionné au choix ; Large plage de tension de fonctionnement : Commercial: 2.0V to 5.5V Industriel : 2.0V to 5.5V Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 9 9 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Brochage et fonction des pattes - VSS, VDD : Alimentation - OSC1,2 : Horloge - RA0-4 : Port A - RB0-7 : Port B - T0CKL : Entrée de comptage - INT : Entrée d'interruption - MCLR : Reset : 0V - Choix du mode programmation : 12V - 14V - Exécution : 4.5V - 5.5V Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 10 10 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Horloge Le 16F84A peut opérer suivant 4 différents modes. L’utilisateur peut exploiter les 2 broches FOSC1 et FOSC0 pour sélectionner un de ces 4 modes : Quartz à faible puissance (LP : LowPower Crystal) Quartz XT (Crystal/Resonator) Quartz à haute vitesse (HS High Speed Crystal/Resonator) Circuit RC (Resistor/Capacitor) Avec l'oscillateur à Quartz, on peut avoir des fréquences allant jusqu'à 4, 10 ou 20 MHz selon le type de microcontrôleur. L'horloge peut être soit interne soit externe. L'horloge interne est constituée d'un oscillateur à quartz ou d'un oscillateur RC. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 11 11 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Horloge Horloge externe LP, XT ou HS Horloge interne LP, XT ou HS Horloge interne à oscillateur RC Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 12 12 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Câblage du PIC16F84A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 13 13 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Architecture interne Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 14 14 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Principe de fonctionnement Un microcontrôleur exécute des instructions. « le cycle instruction » : le temps nécessaire à l’exécution d’une instruction. Une instruction est exécutée en deux phases : - Phase de recherche du code binaire de l’instruction stocké dans la mémoire de programme. - Phase d’exécution de l’instruction. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 15 15 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Principe de fonctionnement Normalement l’exécution d’une instruction dure 8 cycles d’horloges. L’architecture particulière des PICs (Bus différents pour les données et le programme) lui permet de réduire ce temps par deux. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 16 16 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation de la mémoire programme FLASH - Program counter : 13 bits - Espace mémoire adressable : 1K x 14 bits - Les adresses 20h, 420h, 820h, C20h, 1020h, 1420h, 1820h, et 1C20h, contiennent les mêmes instructions. - Le vecteur Reset est à l’adresse 0000h - Le vecteur interruption est à l’adresse 0004h Mémoire programme 1K x 14 bits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 17 17 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation de la mémoire des Données RAM - Mémoire données 2 x 128 octets - Comprend deux zones : o Special Function Registers (SFR) zone o General Purpose Registers (GPR) zone - Les instructions MOVWF et MOVF permettent de déplacer les valeurs du registre W à n’importe quelle adresse registre (“F”), et vice-versa - Le bit RP0 du registre (STATUS) permet de passer de la banque 0 à la banque 1. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 18 18 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Mémoire de données La mémoire de données est divisée en deux espaces : RAM - Les SFR (Special Function Registers) qui permettent de contrôler les opérations sur le circuit. - La seconde partie contient des registres généraux (GPR: General Purpose Registers) , libres pour l'utilisateur. - Les deux parties de la mémoire de données sont divisées en deux banques. - Cette division est assurée par deux bits de contrôle qui se trouvent dans le registre STATUS Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 19 19 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Mémoire de données La mémoire donnée est divisée en deux banques: – La banque 0 est sélectionnée en mettant le bit RP0 du registre STATUS a 0. – La banque 1 est sélectionnée en mettant le bit RP0 du registre STATUS a 1. • Chaque banque est composée de 128 octets. • Les 12 premières ligne de chaque banques sont réservées pour les SFR. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 20 20 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Registres généraux GPR ⁻ GPR : General Purpose Registers. ⁻ La taille des GPR est de 8 bits. ⁻ Les GPR sont accessibles soit directement soit indirectement à travers les registres FSR et INDF. ⁻ Les adresses GPR dans la banques 0 et la banques 1 sont mappées. ⁻ Exemple: l’adresse 0Ch et 8Ch sont accédés par le même FSR Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 21 21 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Registres à fonction spéciale SFR SFR: Special Function Registers. •Permettent la gestion du circuit. •Certains registres ont une fonction générale, d'autres ont une fonction spécifique attachée à un périphérique donné. •L'ensemble de ces registres est souvent appelé fichier des registres. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 22 22 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Registres à fonction spéciale SFR Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 23 23 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Un programme simple pour mettre à zéro les adresses mémoires RAM de 20h-2Fh en utilisant l’adressage indirect : movlw 0x20 movwf FSR NEXT clrf INDF incf FSR btfss FSR,4 goto NEXT CONTINUE : Lotfi BOUSSAID ;initialize pointer ;to RAM ;clear INDF register ;inc pointer ;all done? ;NO, clear next ;YES, continue Microprocesseurs & Microcontrôleurs 24 24 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le registres d’état : STATUS Contient l’état des opérations arithmétiques et logiques, l’état du RESET et le choix de la banque mémoire. Comme tout les registres, le registre STATUS peut être une destination des instructions. Une instruction peut modifier les bits Z, DC et C. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 25 25 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation de la mémoire des Données EEPROM La EEPROM est une mémoire à lecture / écriture. Cette mémoire est indirectement adressée par les registres SFR. Ces registres sont : • EECON1 • EECON2 (n’est pas un registre physiquement implémenté) • EEDATA • EEADR EEDATA maintient les 8 bits de données pour le RD/WR, et le EEADR maintient les adresses des cases mémoires sélectionnées Le PIC16F84A possède 64 octets de données EEPROM dont les adresses se trouvent entre 0h à 3Fh. La EEPROM est conçue pour effectuer des cycles rapides d’effacement/écriture. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 26 26 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation de la mémoire des Données EEPROM EECON1 REGISTER (ADDRESS 88h) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 27 27 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation de la mémoire des Données EEPROM Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 28 28 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le registres d’état : STATUS Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 29 29 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Les ports d’entrées - sorties • • • 5 broches d'entrée/sortie bidirectionnelles, notées RAx avec x={0,1,2,3,4} (courant max absorbé /fourni : 25 ma) Le registre PORTA, d'adresse 05h dans la banque 0, permet d'y accéder en lecture ou en écriture. Le registre TRISA, d'adresse 85h dans la banque 1, permet de choisir le sens de chaque patte (entrée ou sortie) : un bit à 1 positionne le port en entrée, un bit à 0 positionne le port en sortie. Câblage interne d’une broche du Port A • • • • • • "Data Latch" : Mémorisation de la valeur écrite quand le port est en sortie. "TRIS Latch" : Mémorisation du sens (entrée ou sortie) de la patte. "TTL input buffer" : Buffer de lecture de la valeur du port. La lecture est toujours réalisée sur la patte, pas à la sortie de la bascule d'écriture. Transistor N : En écriture : Saturé ou bloqué suivant la valeur écrite. En lecture : Bloqué. Transistor P : Permet d'alimenter la sortie. Câblage interne d’une broche du Port A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 30 30 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le diagramme block de la broche RA4 La broche RA4 est multiplexée avec l’entrée Timer0 Clock représentée par RA4/T0CKI pin. La broche RA4/T0CKI est une entrée Trigger de Schmitt à sortie à drain ouvert. Toutes les autres broches RAi sont des entrées TTL est des sorties à driver CMOS. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 31 31 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Ports A et registre TRISA La broche RA4 est multiplexée avec l'entrée horloge du TimerTMR0 Elle peut être utilisée soit : • comme E/S normale du port A, • comme entrée horloge pour le TimerTMR0 Le choix se fait à l'aide du bit T0CS du registre OPTION_REG. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 32 32 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Ports A et registre TRISA RA4 est une E/S à drain ouvert, si on veut l'utiliser comme sortie (pour allumer une LED par exemple), il ne faut pas oublier de mettre une résistance externe vers Vdd. • Si RA4 est positionnée à 0, l'interrupteur est fermé, la sortie est reliée à la masse. • Si RA4 est placée à 1, l'interrupteur est ouvert, la sortie est déconnectée d'où la nécessite de la résistance externe. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 33 33 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Ports B 8 broches d'entrée/sortie bidirectionnelles, notées RBx avec x={0,1,2,3,4,5,6,7} Le registre PORTB, d'adresse 06h dans la banque 0, permet d'y accéder en lecture ou en écriture. Le registre TRISB, d'adresse 86h dans la banque 1, permet de choisir le sens de chaque broche (entrée ou sortie) : un bit à 1 positionne le port en entrée, un bit à 0 positionne le port en sortie. Les quatre bits de poids fort (RB7-RB4) peuvent être utilisés pour déclencher une interruption sur changement d'état. RB0 peut aussi servir d'entrée d'interruption externe. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 34 34 CH 6. Le Microcontrôleur PIC16F84 de Microchip Le Compteur (Timer) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 35 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le compteur Timer/ WatchDog Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 36 36 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le registre OPTION Le registre option est utilisé pour configurer le Timer et le Watchdog. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 37 37 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le compteur TIMER Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 38 38 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Les Fusibles du 16F84A Les bits de configuration se trouve à l’adresse 2007h Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 39 39 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Les Interruptions La16F84 est très pauvre à ce niveau, puisqu’il ne dispose que de 4 sources d’interruptions possibles (contre 13 pour la 16F876 par exemple). Les événements susceptibles de déclencher une interruption sont les suivants : TMR0 : Débordement du timer0 (tmr0). Une fois que le contenu du tmr0 passe de 0xff à 0x00, une interruption peut être générée. Nous utiliserons ces propriétés dans le chapitre sur le timer0. EEPROM: cette interruption peut être générée lorsque l’écriture dans une case EEPROM interne est terminée. Nous verrons ce cas dans le chapitre sur l’écriture en zone eeprom. RB0/INT: Une interruption peut être générée lorsque, la pin RB0, encore appelée INTerruptpin, étant configurée en entrée, le niveau qui est appliqué est modifié. Nous allons étudier ce cas ici. PORTB: De la même manière, une interruption peut être générée lors du changement d’un niveau sur une des pins RB4 à RB7. Il n’est pas possible de limiter l’interruption à une seule de ces pins. L’interruption sera effective pour les 4 pins ou pour aucune. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 40 40 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Les Interruptions Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 41 41 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Les Interruptions Les différentes sources d’interruption Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 42 42 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Le registre INTCON Le registre INTCON est utilisé pour configurer les interruptions. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 43 43 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation des instructions Quatre types d’instructions : 1- Les instructions « orientées octet » Elles sont codées de la manière suivante : - 6 bits pour l’instruction : logique, car comme il y a 35 instructions, il faut 6 bits pour pouvoir les coder toutes - 1 bit de destination(d) pour indiquer si le résultat obtenu doit être conservé dans le registre de travail de l’unité de calcul (W pour Work) ou sauvé dans l’opérande (F pour File). - Reste 7 bits pour encoder l’opérande (File) 2- Les instructions « orientées bits » Manipulation directement des bits d’un registre particulier. Elles sont codées de la manière suivante : - 4 bits pour l’instruction (dans l’espace resté libre par les instructions précédentes) - 3 bits pour indiquer le numéro du bit à manipuler (bit 0 à 7 possible), et de nouveau : - 7 bits pour indiquer l’opérande. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 44 44 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation des instructions (2) 3- Les instructions générales Instructions qui manipulent des données. Elles sont codées de la manière suivante : - L’instruction est codée sur 6 bits - Elle est suivie d’une valeur IMMEDIATE codée sur 8 bits (donc de 0 à 255). 4- Les sauts et appels de sous-routines Ce sont les instructions qui provoquent une rupture dans la séquence de déroulement du programme. Elles sont codées de la manières suivante : - Les instructions sont codés sur 3 bits - La destination codée sur 11 bits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 45 45 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 46 46 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions W : registre de travail (accumulateur), taille 8 bits k : valeur littérale, taille 8 bits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 47 47 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions L : label (étiquette) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 48 48 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions f : registre (spécial ou d'usage général) b : position du bit (0 à 7) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 49 49 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions f : registre (spécial ou d'usage général) d : registre de destination (on peut choisir entre le registre de travail W et le registre f). Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 50 50 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions f : registre (spécial ou d'usage général) d : registre de destination (on peut choisir entre le registre de travail W et le registre f). Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 51 51 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Liste des instructions f : registre (spécial ou d'usage général) d : registre de destination (on peut choisir entre le registre de travail W et le registre f). Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 52 52 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Organisation d’un programme assembleur Les de commentaires sont précédés par le symbole « ; » Les DIRECTIVES sont des commandes destinées à l’assembleur • ORG 0x000 • __CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC Les fichiers « include » • #include <p16F84.inc> Les assignations • mavaleur EQU 0x05 Les définitions • #DEFINE monbit PORTA,1 Les macros LIREIN macro comf PORTB,0 andlw 1 endm La zone des variables CBLOCK 0x00C ; début de la zone variables w_temp :1 ; Zone de 1 byte status_temp : 1 ; zone de 1 byte mavariable : 1 ; je déclare ma variable ENDC ; Fin de la Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 53 53 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip Les différents types d’adressage : Adressage immédiat movlw 0x50 Adresage direct • movf 0x10,w mémoire Adressage indirect • movlw 0x50 • movwf mavariable • movlw mavariable • movwf FSR • • movf INDF,w ; W 0x50 ; W (0x10) contenu de l’emplacement ; W 0x50 ; mavariable 0x50 ; W 0x0E ; on place l’adresse de destination dans FSR. ; FSR POINTE sur mavariable ; w 0x50 Incf f,d d : destination elle peut avoir : • f : résultat dans l’emplacement mémoire. • w : résultat est laissé dans le registre de travail, Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 54 54 CH 6. Le Microcontrôleur PIC16F84 de Microchip Les différents types d’adressage : Adressage indirect Registres FSR et INDF FSR est un registre spécial situé à l'adresse 0x04 (en banque 0) de la mémoire des données (Data RAM).Ce registre est également accessible en banque 1 (à l'adresse 0x84). Ce registre contient une adresse (de la mémoire des données). On dit queFSR est un "pointeur". Le registre spécial INDF contient la valeur du registre pointé par le registre FSR (on parle d'adressage indirect). INDF n'est pas un registre physique Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 55 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip La Programmation PC Programmateur Langage C / BASIC PIC Hexadécimal Langage Assembleur Haut niveau Bas niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 56 56 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip 1er Exemple : Allumer une LED par bouton poussoir LIST p=16F84 include "P16F84.inc“ __CONFIG _CP_ON & _WDT_ON & _PWRTE_ON & _HS_OSC org 0x0000 bsf STATUS,RP0 ; sélectionner bank 1 movlw b‘11111111' ; Port B en entrée movwf TRISB movlw b‘00000000' ; Port A en sortie movwf TRISA bcf STATUS,RP0 boucle btfsc PORTB,2 bcf PORTA,2 btfss PORTB,2 bsf PORTA,2 goto boucle end Lotfi BOUSSAID ; sélectionner bank 0 ; tester RB2, sauter si vaut 0 ; sinon on allume la LED ; tester RB2, sauter si vaut 1 ; RB2 vaut 0, donc LED Microprocesseurs & Microcontrôleurs 57 57 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip 2ième exemple : Faire clignoter une LED (Langage C) #include <16F84.h> #fuses HS,NOPROTECT,NOWDT #use delay(clock=4000000) #define LED PIN_RA2 Void main(){ while( 1 ){ Output_bit(LED,1); Delay_ms(500); Output_bit(LED,0); Delay_ms(1000); } } Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 58 58 Les Microcontrôleurs CH 6. Le Microcontrôleur PIC16F84 de Microchip 3ième exemple : Commande de moteur pas à pas La fonction avance() permet de faire tourner le moteur pas à pas de n*4 pas #include <16F876a.h> #fuses HS,NOPROTECT,NOWDT #use delay(clock=16000000) Void avance(int i){ Int j; For(j=0;j<=i;j++){ Output_b(6); //1ère position Delay_ms(5); //pause entre 2 pas Output_b(5); //2ème position Delay_ms(5); //pause entre 2 pas Output_b(9); //3ème position Delay_ms(5); //pause entre 2 pas Output_b(10); //4ème position Delay_ms(5); //pause entre 2 pas } Return; } Void main(){ Avance(4); //Fait tourner le moteur de 16 pas } Lotfi BOUSSAID 23 22 21 20 RB3 A RB2 B RB1 C RB0 D Port B Etat1 0 1 1 0 6 Etat2 0 1 0 1 5 Etat3 1 0 0 1 9 Etat4 1 0 1 0 10 Microprocesseurs & Microcontrôleurs 59 59 Les Microcontrôleurs Plan du Cours - CH 1. Codage de l’Information - CH 2. Les Portes Logiques - CH 3. Les Registres, les mémoires et les ALU - CH 4. Introduction aux Microprocesseurs - CH 5. Le Microprocesseur 8086 d’Intel - CH 6. Le Microcontrôleur PIC16F84 de Microchip - CH 7. Introduction au Microcontrôleur PIC16F877 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 60 Microcontrôleurs CH 7. LeLes Microcontrôleur PIC16F877 Le PIC 16F877A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 61 61 Microcontrôleurs CH 7. LeLes Microcontrôleur PIC16F877 Le PIC 16F877A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 62 62 Microcontrôleurs CH 7. LeLes Microcontrôleur PIC16F877 Le PIC 16F877A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 63 63 Microcontrôleurs CH 7. LeLes Microcontrôleur PIC16F877 Le PIC 16F877A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 64 64 Microcontrôleurs CH 7. LeLes Microcontrôleur PIC16F877 Le PIC 16F877A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 65 65 Microcontrôleurs CH 7. LeLes Microcontrôleur PIC16F877 Le PIC 16F877A Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 66 66