Vous êtes sur la page 1sur 51

Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

Plan du cours

1 Organisation générale d’un système à processeur

2 Architecture du PIC16F84
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
Intro Architecture E/S Exercice

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)
I Arithmétique
I Logique
Unité de commande
I Coordination générale
I Lecture et décodage des instructions
Registres
Horloge
Mémoire cache

3/32
Intro Architecture E/S Exercice

Organisation générale d’un système à processeur


Système informatique type

4/32
Intro Architecture E/S Exercice

Organisation générale d’un système à processeur


Micro-contrôleur PIC16F84

5/32
Intro Architecture E/S Exercice

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
I Programme : 1K mots (Flash)
I Données : 68 octets (RAM)
I Données : 64 octets (EEPROM)
13 E/S indépendantes

Autres périphériques (Timer, Watchdog...)

6/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Harvard / Von Neuman- Micro-contrôleur PIC16F84

8/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Unités de calcul- Micro-contrôleur PIC16F84

10/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Jeu d’instructions du PIC16F84

12/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Jeu d’instructions du PIC16F84

13/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Jeu d’instructions du PIC16F84

14/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Jeu d’instructions du PIC16F84

14/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Jeu d’instructions du PIC16F84 - Exemple de l’instruction ADDWF

15/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Jeu d’instructions du PIC16F84 - Exemple de l’instruction ADDWF

16/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Mémoire programme

18/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Mémoire programme - Exemple d’un programme

movlw 0 x33
movwf 0 x22
repere decfsz 0 x22 , 1
goto repere
fin goto fin

19/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Mémoire programme - Exemple d’un programme

; commentaire
list p=16 f 8 4
org 0
goto debut

debut
movlw 0 x33
movwf 0 x22
repere decfsz 0 x22 , 1
goto repere
fin goto fin
end

20/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Registres

Registre
Mot mémoire interne au processeur

Plusieurs types :
Registres de fonctionnement
I Compteur Ordinal (CO), Registre Instruction (RI)...
I Accumulateur (interne à l’ALU)
Registres généraux
I 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)
I 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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Registres

Registre
Mot mémoire interne au processeur

Plusieurs types :
Registres de fonctionnement
I Compteur Ordinal (CO), Registre Instruction (RI)...
I Accumulateur (interne à l’ALU)
Registres généraux
I 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)
I 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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Registres

Registre
Mot mémoire interne au processeur

Plusieurs types :
Registres de fonctionnement
I Compteur Ordinal (CO), Registre Instruction (RI)...
I Accumulateur (interne à l’ALU)
Registres généraux
I 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)
I 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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Registres

Registre
Mot mémoire interne au processeur

Plusieurs types :
Registres de fonctionnement
I Compteur Ordinal (CO), Registre Instruction (RI)...
I Accumulateur (interne à l’ALU)
Registres généraux
I 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)
I 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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Registres

Registre
Mot mémoire interne au processeur

Plusieurs types :
Registres de fonctionnement
I Compteur Ordinal (CO), Registre Instruction (RI)...
I Accumulateur (interne à l’ALU)
Registres généraux
I 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)
I 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
Intro Architecture E/S Exercice

Architecture du PIC16F84
Organisation de la mémoire du PIC 16F84

22/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Organisation de la mémoire du PIC 16F84

23/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Organisation de la mémoire du PIC 16F84

24/32
Intro Architecture E/S Exercice

Architecture du PIC16F84
Organisation de la mémoire du PIC 16F84

25/32
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

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 TEMPS PERDU
du programme INTERROGATION
....................
//fin du programme

27/32
Intro Architecture E/S Exercice

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 TEMPS PERDU
du programme INTERROGATION
....................
//fin du programme

27/32
Intro Architecture E/S Exercice

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 TEMPS PERDU
du programme INTERROGATION
....................
//fin du programme

27/32
Intro Architecture E/S Exercice

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 PLUS EFFICACE
....................
reprendre l’exécution du programme MATERIEL
là où il a été interrompu SPECIFIQUE
//------------------------------

28/32
Intro Architecture E/S Exercice

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 PLUS EFFICACE
....................
reprendre l’exécution du programme MATERIEL
là où il a été interrompu SPECIFIQUE
//------------------------------

28/32
Intro Architecture E/S Exercice

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 PLUS EFFICACE
....................
reprendre l’exécution du programme MATERIEL
là où il a été interrompu SPECIFIQUE
//------------------------------

28/32
Intro Architecture E/S Exercice

Relations avec le monde extérieur


PIC16F84

GIE Global Interrupt Enable Registre INTCON


EEIE EEprom write complete IE T0IF Timer0 Interrupt Flag
T0IE Timer0 IE INTF INTerrupt pin Flag
INTE INTerrupt pin Enable (RB0) RBIF RB port change IF
RBIE RB port change IE
Connexion à l’adresse 0x04

29/32
Intro Architecture E/S Exercice

Exercice

Adresse Code instruction Mnémonique Cycles


MOVLW 0x33

MOVWF 0x22

;REPERE
DECFSZ 0x22,1

GOTO REPERE

;FIN
GOTO FIN

30/32
Intro Architecture E/S Exercice

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
Intro Architecture E/S Exercice

Exercice

32/32

Vous aimerez peut-être aussi