Microcontroleur PIC16F84 II2 - Cours : Systèmes à processeurs J. Villemejane - julien.villemejane@u-pec.fr IUT Créteil-Vitry Département GEII Université Paris-Est Créteil Année universitaire 2012-2013 1/32
Plan du cours 1 Organisation générale d un système à processeur 2 Harvard / Von Neuman Unités de calcul Instructions Jeu d instructions du PIC16F84 Unité de contrôle / commande Mémoire programme Registres Organisation de la mémoire du PIC 16F84 3 Relations avec le monde extérieur Gestion des entrées/sorties Mode d interrogation programme Mode d interruption PIC16F84 4 Exercice 2/32
Organisation générale d un système à processeur Qu est-ce qu un processeur? CPU - Central Processing Unit Le processeur est un composant qui exécute des instructions séquentiellement (programme) à partir de données. Il possède (généralement) : Unité de calcul (UAL) Arithmétique Logique Unité de commande Coordination générale Lecture et décodage des instructions Registres Horloge Mémoire cache 3/32
Organisation générale d un système à processeur Système informatique type 4/32
Organisation générale d un système à processeur Micro-contrôleur PIC16F84 5/32
Organisation générale d un système à processeur Caractéristiques du PIC 16F84 Caractéristiques du PIC 16F84 35 instructions (RISC) Instructions en 1 cycle (sauf saut) Vitesse : DC - 10 MHz Mots de 14 bits Bus de données de 8 bits Mémoires Programme : 1K mots (Flash) Données : 68 octets (RAM) Données : 64 octets (EEPROM) 13 E/S indépendantes Autres périphériques (Timer, Watchdog...) 6/32
Harvard / Von Neuman Programme / Données La suite d instructions à exécuter est contenue dans une partie de la mémoire nommée mémoire-programme. Les données sur lesquelles opère le processeur sont stockées dans la partie mémoire-donnée. 7/32
Harvard / Von Neuman Programme / Données La suite d instructions à exécuter est contenue dans une partie de la mémoire nommée mémoire-programme. Les données sur lesquelles opère le processeur sont stockées dans la partie mémoire-donnée. 7/32
Harvard / Von Neuman- Micro-contrôleur PIC16F84 8/32
Unités de calcul Unités de calcul Un processeur est avant tout un organe de calcul intégrant des unités de calcul, pouvant être de plusieurs types : arithmétique et logique (ALU) flottant (FPU) autres Un processeur peut intégrer une ou plusieurs unités de type identique ou différent. Par exemple, l Athlon 64 d AMD embarque 3 ALU et 3 FPU (calculs en parallèle possibles) 9/32
Unités de calcul Unités de calcul Un processeur est avant tout un organe de calcul intégrant des unités de calcul, pouvant être de plusieurs types : arithmétique et logique (ALU) flottant (FPU) autres Un processeur peut intégrer une ou plusieurs unités de type identique ou différent. Par exemple, l Athlon 64 d AMD embarque 3 ALU et 3 FPU (calculs en parallèle possibles) 9/32
Unités de calcul- Micro-contrôleur PIC16F84 10/32
Instructions Instruction C est l opération élémentaire qu un programme demande à un processeur d effectuer. Les instructions sont codées en binaire. Un champ de l instruction appelé code opération ou opcode désigne l opération à effectuer. Puisque sa valeur numérique n a pas de sens pour les humains, le programmeur utilise une abréviation désignant le code opération fourni par le langage assembleur pour ce processeur appelée mnémonique. 11/32
Instructions Instruction C est l opération élémentaire qu un programme demande à un processeur d effectuer. Les instructions sont codées en binaire. Un champ de l instruction appelé code opération ou opcode désigne l opération à effectuer. Puisque sa valeur numérique n a pas de sens pour les humains, le programmeur utilise une abréviation désignant le code opération fourni par le langage assembleur pour ce processeur appelée mnémonique. 11/32
Instructions Instruction C est l opération élémentaire qu un programme demande à un processeur d effectuer. Les instructions sont codées en binaire. Un champ de l instruction appelé code opération ou opcode désigne l opération à effectuer. Puisque sa valeur numérique n a pas de sens pour les humains, le programmeur utilise une abréviation désignant le code opération fourni par le langage assembleur pour ce processeur appelée mnémonique. 11/32
Jeu d instructions du PIC16F84 12/32
Jeu d instructions du PIC16F84 13/32
Jeu d instructions du PIC16F84 14/32
Jeu d instructions du PIC16F84 14/32
Jeu d instructions du PIC16F84 - Exemple de l instruction ADDWF 15/32
Jeu d instructions du PIC16F84 - Exemple de l instruction ADDWF 16/32
Unité de contrôle / commande Unité de contrôle / commande Unité qui coordonne le fonctionnement des autres éléments dans le but d exécuter une séquence d instructions (le programme). Constituée de plusieurs éléments : Registre d Instruction (RI) : reçoit le code de la prochaine instruction à exécuter Décodeur : à partir du code de l instruction, détermine l opération à exécuter Horloge : pour synchroniser les éléments Compteur Ordinal (CO) : registre contenant l adresse du mot mémoire stockant le code de la prochaine instruction Séquenceur : coordonne le tout 17/32
Unité de contrôle / commande Unité de contrôle / commande Unité qui coordonne le fonctionnement des autres éléments dans le but d exécuter une séquence d instructions (le programme). Constituée de plusieurs éléments : Registre d Instruction (RI) : reçoit le code de la prochaine instruction à exécuter Décodeur : à partir du code de l instruction, détermine l opération à exécuter Horloge : pour synchroniser les éléments Compteur Ordinal (CO) : registre contenant l adresse du mot mémoire stockant le code de la prochaine instruction Séquenceur : coordonne le tout 17/32
Mémoire programme 18/32
Mémoire programme - Exemple d un programme movlw 0 x33 movwf 0 x22 r e p e r e decfsz 0x22, 1 goto r e p e r e f i n goto f i n 19/32
Mémoire programme - Exemple d un programme ; commentaire l i s t p=16 f84 org 0 goto debut debut movlw 0 x33 movwf 0 x22 r e p e r e decfsz 0x22, 1 goto r e p e r e f i n goto f i n end 20/32
Registres Registre Mot mémoire interne au processeur Plusieurs types : Registres de fonctionnement Compteur Ordinal (CO), Registre Instruction (RI)... Accumulateur (interne à l ALU) Registres généraux servent à stocker des valeurs souvent utilisées ou des résultats intermédiaires sans passer par la mémoire Registres de pile (SP : Stack Pointer) Registres d état (PSW : Program Status Word) Ensemble de bits représentant chacun un état particulier (drapeau ou flag) C : dépassement de capacité après un calcul de l ALU Z : résultat de l opération est égal à 0 21/32
Registres Registre Mot mémoire interne au processeur Plusieurs types : Registres de fonctionnement Compteur Ordinal (CO), Registre Instruction (RI)... Accumulateur (interne à l ALU) Registres généraux servent à stocker des valeurs souvent utilisées ou des résultats intermédiaires sans passer par la mémoire Registres de pile (SP : Stack Pointer) Registres d état (PSW : Program Status Word) Ensemble de bits représentant chacun un état particulier (drapeau ou flag) C : dépassement de capacité après un calcul de l ALU Z : résultat de l opération est égal à 0 21/32
Registres Registre Mot mémoire interne au processeur Plusieurs types : Registres de fonctionnement Compteur Ordinal (CO), Registre Instruction (RI)... Accumulateur (interne à l ALU) Registres généraux servent à stocker des valeurs souvent utilisées ou des résultats intermédiaires sans passer par la mémoire Registres de pile (SP : Stack Pointer) Registres d état (PSW : Program Status Word) Ensemble de bits représentant chacun un état particulier (drapeau ou flag) C : dépassement de capacité après un calcul de l ALU Z : résultat de l opération est égal à 0 21/32
Registres Registre Mot mémoire interne au processeur Plusieurs types : Registres de fonctionnement Compteur Ordinal (CO), Registre Instruction (RI)... Accumulateur (interne à l ALU) Registres généraux servent à stocker des valeurs souvent utilisées ou des résultats intermédiaires sans passer par la mémoire Registres de pile (SP : Stack Pointer) Registres d état (PSW : Program Status Word) Ensemble de bits représentant chacun un état particulier (drapeau ou flag) C : dépassement de capacité après un calcul de l ALU Z : résultat de l opération est égal à 0 21/32
Registres Registre Mot mémoire interne au processeur Plusieurs types : Registres de fonctionnement Compteur Ordinal (CO), Registre Instruction (RI)... Accumulateur (interne à l ALU) Registres généraux servent à stocker des valeurs souvent utilisées ou des résultats intermédiaires sans passer par la mémoire Registres de pile (SP : Stack Pointer) Registres d état (PSW : Program Status Word) Ensemble de bits représentant chacun un état particulier (drapeau ou flag) C : dépassement de capacité après un calcul de l ALU Z : résultat de l opération est égal à 0 21/32
Organisation de la mémoire du PIC 16F84 22/32
Organisation de la mémoire du PIC 16F84 23/32
Organisation de la mémoire du PIC 16F84 24/32
Organisation de la mémoire du PIC 16F84 25/32
Relations avec le monde extérieur Gestion des entrées/sorties Organes d interface de natures diverses : Débit d informations utile : qq bits par seconde (clavier) à qq Gbits par seconde (liaison numérique) Régularité des demandes (requêtes) : échelle de la seconde (dactylographie) à la microseconde (disque dur) Volume d informations : qq octets pour un clavier à quelques centaines de Mo pour un disque dur Un système informatique doit répondre à TOUTES les requêtes Deux modes de réponse : Interrogation programme (polling) Interruption 26/32
Relations avec le monde extérieur Gestion des entrées/sorties Organes d interface de natures diverses : Débit d informations utile : qq bits par seconde (clavier) à qq Gbits par seconde (liaison numérique) Régularité des demandes (requêtes) : échelle de la seconde (dactylographie) à la microseconde (disque dur) Volume d informations : qq octets pour un clavier à quelques centaines de Mo pour un disque dur Un système informatique doit répondre à TOUTES les requêtes Deux modes de réponse : Interrogation programme (polling) Interruption 26/32
Relations avec le monde extérieur Gestion des entrées/sorties Organes d interface de natures diverses : Débit d informations utile : qq bits par seconde (clavier) à qq Gbits par seconde (liaison numérique) Régularité des demandes (requêtes) : échelle de la seconde (dactylographie) à la microseconde (disque dur) Volume d informations : qq octets pour un clavier à quelques centaines de Mo pour un disque dur Un système informatique doit répondre à TOUTES les requêtes Deux modes de réponse : Interrogation programme (polling) Interruption 26/32
Relations avec le monde extérieur Gestion des entrées/sorties Organes d interface de natures diverses : Débit d informations utile : qq bits par seconde (clavier) à qq Gbits par seconde (liaison numérique) Régularité des demandes (requêtes) : échelle de la seconde (dactylographie) à la microseconde (disque dur) Volume d informations : qq octets pour un clavier à quelques centaines de Mo pour un disque dur Un système informatique doit répondre à TOUTES les requêtes Deux modes de réponse : Interrogation programme (polling) Interruption 26/32
Relations avec le monde extérieur Gestion des entrées/sorties Organes d interface de natures diverses : Débit d informations utile : qq bits par seconde (clavier) à qq Gbits par seconde (liaison numérique) Régularité des demandes (requêtes) : échelle de la seconde (dactylographie) à la microseconde (disque dur) Volume d informations : qq octets pour un clavier à quelques centaines de Mo pour un disque dur Un système informatique doit répondre à TOUTES les requêtes Deux modes de réponse : Interrogation programme (polling) Interruption 26/32
Relations avec le monde extérieur Gestion des entrées/sorties Organes d interface de natures diverses : Débit d informations utile : qq bits par seconde (clavier) à qq Gbits par seconde (liaison numérique) Régularité des demandes (requêtes) : échelle de la seconde (dactylographie) à la microseconde (disque dur) Volume d informations : qq octets pour un clavier à quelques centaines de Mo pour un disque dur Un système informatique doit répondre à TOUTES les requêtes Deux modes de réponse : Interrogation programme (polling) Interruption 26/32
Relations avec le monde extérieur Mode d interrogation programme Mode d interrogation programme (polling) L unité de contrôle balaye successivement tous les périphériques pour constater la présence de requêtes éventuelles. Algorithme : //programme répéter indéfiniment pour (chaque périphérique) si (requ^ete présente) alors satisfaire la requ^ete exécuter les instructions du programme... //fin du programme TEMPS PERDU INTERROGATION 27/32
Relations avec le monde extérieur Mode d interrogation programme Mode d interrogation programme (polling) L unité de contrôle balaye successivement tous les périphériques pour constater la présence de requêtes éventuelles. Algorithme : //programme répéter indéfiniment pour (chaque périphérique) si (requ^ete présente) alors satisfaire la requ^ete exécuter les instructions du programme... //fin du programme TEMPS PERDU INTERROGATION 27/32
Relations avec le monde extérieur Mode d interrogation programme Mode d interrogation programme (polling) L unité de contrôle balaye successivement tous les périphériques pour constater la présence de requêtes éventuelles. Algorithme : //programme répéter indéfiniment pour (chaque périphérique) si (requ^ete présente) alors satisfaire la requ^ete exécuter les instructions du programme... //fin du programme TEMPS PERDU INTERROGATION 27/32
Relations avec le monde extérieur Mode d interruption Mode d interruption L unité de contrôle interrompt le programme principal lorsqu une requête est présentée par un périphérique. Algorithme : //programme répéter indéfiniment exécuter les instructions //fin du programme //---routine d interruption n 1 si (interruption par périph 1) exécuter la routine n1... reprendre l exécution du programme là où il a été interrompu //------------------------------ PLUS EFFICACE MATERIEL SPECIFIQUE 28/32
Relations avec le monde extérieur Mode d interruption Mode d interruption L unité de contrôle interrompt le programme principal lorsqu une requête est présentée par un périphérique. Algorithme : //programme répéter indéfiniment exécuter les instructions //fin du programme //---routine d interruption n 1 si (interruption par périph 1) exécuter la routine n1... reprendre l exécution du programme là où il a été interrompu //------------------------------ PLUS EFFICACE MATERIEL SPECIFIQUE 28/32
Relations avec le monde extérieur Mode d interruption Mode d interruption L unité de contrôle interrompt le programme principal lorsqu une requête est présentée par un périphérique. Algorithme : //programme répéter indéfiniment exécuter les instructions //fin du programme //---routine d interruption n 1 si (interruption par périph 1) exécuter la routine n1... reprendre l exécution du programme là où il a été interrompu //------------------------------ PLUS EFFICACE MATERIEL SPECIFIQUE 28/32
Relations avec le monde extérieur PIC16F84 GIE Global Interrupt Enable EEIE EEprom write complete IE T0IE Timer0 IE INTE INTerrupt pin Enable (RB0) RBIE RB port change IE Registre INTCON T0IF Timer0 Interrupt Flag INTF INTerrupt pin Flag RBIF RB port change IF Connexion à l adresse 0x04 29/32
Exercice Adresse Code instruction Mnémonique Cycles MOVLW 0x33 MOVWF 0x22 DECFSZ 0x22,1 ;REPERE GOTO REPERE GOTO FIN ;FIN 30/32
Exercice Adresse Code instruction Mnémonique Cycles 0x000 0x3033 MOVLW 0x33 1 11 0000 1010 0010 0x001 0x00A2 MOVWF 0x22 1 00 0000 1010 0010 ;REPERE 0x002 0x0BA2 DECFSZ 0x22,1 1 (2) 00 1011 1010 0010 0x003 0x2802 GOTO REPERE 2 10 1000 0000 0010 ;FIN 0x004 0x2804 GOTO FIN 2 10 1000 0000 0100 31/32
Exercice 32/32