Vous êtes sur la page 1sur 106

Université Hassan Premier

Ecole Nationale des Sciences Appliquées


Berrechid

Microprocesseurs – microcontrôleurs
Cycle d’ingénieur – Ingénierie de L'Aéronautique – S6

Présenté par :
Pr. FANNAKH Mhamed

mhamed.fannakh@uhp.ac.ma
1 Rappel (système de numération …)

2 Architecture des systèmes à base des µP

3 Architecture du microcontrôleur PIC 16F84

4 Programmation du PIC en assembleur

5 Architecture du microcontrôleur PIC 16F877

6 Programmation du PIC en langage C

7 Protocoles de communication série (UART, I2C, SPI,...)


Rappel (système de numération …)
❑ Introduction
Dans le monde des humains, nous avons 10 chiffres (allant de 0 à 9), c'est ce qui

s'appelle le codage décimal. Cependant, dans le monde électronique, il n'y a que 2

chiffres (le 0 et le 1). Et ça, c'est ce qui s'appelle le codage binaire.

Si il n'y a que deux chiffres en électronique, c'est parce qu'il n'y a que 2 états

électriques possible. En effet, dans les systèmes électroniques soit il y a un signal

ou alors il n'y en a pas.


Rappel (système de numération …)
❑ Principe des système de numérotation
D'une façon générale, soit une base B, donc associée à B symboles :
S0 , S1 ,..., S B −1
Un nombre N, a les caractéristiques suivantes :
➢ Il s'écrit : An −1... Ai ... A1 A0 avec Ai  S0 , S1 ,..., S B −1
➢ Il a pour valeur : N = An −1.B n −1 + ... + Ai .B i + ... + A1.B1 + A0 .B 0
(forme polynomiale)
➢ Ai est le chiffre (digit) de rang i et de poids B i
➢ An-1 est le chiffre le plus significatif (MSD : Most Significant Digit).
➢ A0 est le chiffre le moins significatif (LSD : Less Significant Digit).
Rappel (système de numération …)
❑ Code Décimal (base 10)
Le système usuel de numération utilise le code décimal. Dans ce système, le
nombre de symboles utilises est 10 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Ces symboles
s’appellent des chiffres. Le nombre (10) représente la base (B) du code décimal.
Le nombre décimal 2023 peut être représente sous la forme suivante :
2023 = 2000 + 0 + 20+ 3 ou :

( 2023)10 = 2.103 + 0.102 + 2.101 + 3.100


Rappel (système de numération …)
❑ Code Binaire (base 2)
L'homme connaît la base 10 ; il fait alors ses calculs dans cette base. Alors,
puisque les systèmes numériques ne reconnaissent que 2 états 0 ou 1, ils seront très
aptes de faire les calculs dans la base 2.
D’une façon générale un nombre binaire s’écrit comme suit :

➢ Mot binaire : ce nombre (b7 b6 b5 b4 b3 b2 b1 b0)2 est généralement appelé


mot binaire.
➢ Poids ou pondération : coefficient attache au rang d'un chiffre dans un
système de numération.
➢ LSB et MSB : en numération binaire, on parle du bit de plus faible poids
(LSB) qui est la position binaire la plus à droite dans un mot et du bit de plus
fort poids (MSB) qui représente le bit situe le plus à gauche dans un mot.
Rappel (système de numération …)
❑ Code Hexadécimal (base 16)
Le code hexadécimal est le résultat d’une opération de conversion permettant de
traduire un nombre quelconque, en un nombre ne comportant que les signes de 0 à
9, A, B, C, D, E et F.
A chaque nombre en décimal correspond un seul nombre (code) en
hexadécimal.

❑ Code Octal (base 8)


Dans ce système, la base vaut 8 et il y a 8 digits: 0,1,2,3,4,5,6 et 7. Il n'y a pas
de chiffres 8 et 9.
Rappel (système de numération …)
❑ Conversion d’un nombre décimal en un nombre binaire
L’opération de conversion d’un nombre décimal en binaire est appelée
"codage". Pour écrire un nombre décimal (N)10 en binaire, on utilise la méthode
des divisions successives par 2 jusqu’à un quotient égal à 0. Les restes successifs
pris de bas en haut forment le nombre binaire recherche.
Exemple : codage en binaire du nombre
décimal 88

(88)10 = (1011000 )2
Rappel (système de numération …)
❑ Conversion d'un nombre décimal en un nombre hexadécimal
Pour écrire un nombre décimal en hexadécimal, on utilise la méthode des

divisions successives par 16 jusqu'à un quotient égal à 0. Les restes successifs, pris

de bas en haut, forment le nombre code en hexadécimal recherché.


❑ Conversion d'un nombre décimal en un nombre octal
Pour écrire un nombre décimal en octal, on utilise la méthode des divisions

successives par 8 jusqu'à un quotient égal à 0. Les restes successifs, pris de bas en

haut, forment le nombre code en octal recherché.


Rappel (système de numération …)
❑ Conversion d’un nombre de base B en un nombre décimal
La conversion d’un nombre de base B en un nombre décimal appelée aussi le
décodage. D’une façon générale un nombre quelconque écrit en base B peut être
converti en base 10 de la façon suivante :
i = n −1
(Y )10 = i =0
Ai .B i
Avec :
(Y)10 : nombre écrit en base 10.
n : nombre de symboles.
i : rang.
Ai : symbole de la base de rang i.
B : base.
Bi : poids de rang i
Rappel (système de numération …)
❑ Conversion binaire ↔ hexadécimal et binaire ↔ octal
➢ Pour convertir un nombre binaire
en hexadécimal. Il suffit de
regrouper les bits par quatre (en
commençant depuis Le LSB)
➢ Pour convertir un nombre binaire
en octal. Il suffit de regrouper les
bits par trois (en commençant
depuis le LSB)
Rappel (système de numération …)
❑ Codes : binaire pur, GRAY, BCD et ASCII
➢ Binaire pur (binaire naturel)
C’est le code binaire sans aucune codification,
c'est à dire qui découle directement du principe
général de la numération.
• Chaque chiffre ou digit d’un nombre binaire
est appelé BIT (Binary Digit).
• Un groupe de 8 bits (Ex: 11010010) est
appelé un OCTET (Byte en anglais).
• n bits permettent de représenter 2n valeurs
différentes
Rappel (système de numération …)
❑ Codes : binaire pur, GRAY, BCD et ASCII
➢ Code Gray
Il permet de coder chaque état de façon que les valeurs de états successives ne
différent que d'un seul bit. Il est appelé aussi "code binaire réfléchi" parce que pour
le construire, on procède par réflexion comme l'indique la figure suivante:
Rappel (système de numération …)
❑ Codes : binaire pur, GRAY, BCD et ASCII
➢ Code Gray
Passage du binaire pur vers le code Gray :
• Le bit MSB dans le code Gray est le même que le MSB correspondant dans la
représentation binaire
• En allant de gauche à droite, ajoutez chaque paire adjacente de bits de code
binaire pour obtenir le prochain bit de code Gray. Eliminer les retenues.
Exemple : 10110 1 -+- 0 -+- 1 -+- 1 -+- 0

1 1 1 0 1

(10110 )2 = (11101)Gray
Rappel (système de numération …)
❑ Codes : binaire pur, GRAY, BCD et ASCII
➢ Code Gray
Passage du code Gray vers le binaire pur :
• Le MSB dans le code Gray est le même que le bit correspondant dans le code
binaire naturel
• Ajoutez chaque bit de code binaire généré au bit de code Gray dans la position
adjacente suivante. . Eliminer les retenues.
Exemple : 11101
1 1 1 0 1
-

-
-+

-+

-+

-+
1 0 1 1 0

(11101)Gray = (10110 )2
Rappel (système de numération …)
❑ Codes : binaire pur, GRAY, BCD et ASCII
➢ Code ASCII
• Le code ASCII (American Standard
Code for Information Interchange)
permet de présenter chaque caractère par
un code numérique.
• Le code ASCII de base représentait les
caractères sur 7 bits (128 caractères
possibles).
• Pour coder plus caractère, le code ASCII
a été étendu à 8 bits
Rappel (système de numération …)
❑ Codes : binaire pur, GRAY, BCD et ASCII
➢ Code BCD
• Le code BCD (Binary Coded Decimal) est la
traduction en binaire des 9 premiers chiffres
des systèmes décimal.
• Si on a un nombre décimal N à m chiffres, il
sera codé en BCD sur (m x 4) bits : chaque
chiffre décimal est traduit en code BCD sur 4
bits.
Rappel (système de numération …)
❑ Notions d'arithmétique binaire
➢ Addition
Table d’addition binaire exemple

➢ La multiplication
La multiplication binaire s’effectue selon le principe des multiplications décimal,
on multiplie donc le multiplicande par chacun des bits du multiplicateur. On décale
les résultats intermédiaires obtenus et on effectue ensuite l’addition de ses résultats
partiels.
Rappel (système de numération …)
❑ Notions d'arithmétique binaire
➢ La multiplication
Les règles de calcul de la multiplication binaire sont pratiquement les mêmes qu'en
décimal. Nous avons ainsi:
• 0 0 = 0 • 0 1 = 0 • 1 0 = 0 • 1 1 = 1
➢ La division
La division d'un nombre binaire (le dividende) par un autre (le diviseur) est
identique à la division de deux nombres décimaux.
Application:
Réalisez dans la base binaire les opérations suivantes :
• 42  5 • 36  6
• 17  8 • 120  4
Rappel (système de numération …)
❑ Notions d'arithmétique binaire
➢ Représentation des nombres négatifs par complément à 2
Soit un nombre binaire A sur n bits et son complément ( nommé aussi
complément à 1 de A), on a :
An −1 An − 2 ... A1 A0
A + A = 2n − 1  − A = A + 1 − 2n +
Comme le (2^n) ne rentre pas dans le An −1 An − 2 ... A1 A0
format défini (n bit), il sera ignoré. __________________
On a alors = 1 1 ... 1 1
− A = A +1 = 2n − 1
Rappel (système de numération …)
❑ Les nombres fractionnaires
La partie entière d’un nombre fractionnaire se traduit en mettant en œuvre des
puissances positives de 2. Sa partie décimale se traduit en mettant en œuvre des
puissances négatives de 2, le nombre binaire obtenu se présente sous la forme
d’une partie entière situé à gauche de la virgule et d’une partie fractionnaire situé à
droite de la virgule.
Exemple :

(1101,10011)2 = (1 23 ) + (1 22 ) + ( 0  21 ) + (1 20 ) +


(1 2 ) + ( 0  2 ) + ( 0  2 ) + (1 2 ) + (1 2 )
−1 −2 −3 −4 −5

=13,59375
Rappel (système de numération …)
❑ Les nombres fractionnaires
La conversion décimale→ binaire se fait de la manière suivante : La partie entière
est obtenue par la division successive par ‘’2’’. En ce qui concerne la partie
fractionnaire, il suffit de la multiplier par ‘’2’’, la partie entière obtenu représentant
le poids binaire ‘’1’’ ou ‘’0’’. La partie fractionnaire restante est à nouveau
multiplié par ‘’2’’ et ainsi de suite jusqu’à ce qu’il n’y ait plus de partie
fractionnaire ou que la précision obtenue soit jugé suffisante.
Exemple :
12, 6875 = (1100,1011)2

N.B : Il existe des nombres dont l’écriture binaire sera infinie (et périodique). Par
exemple, 1,2 = (1,001100110011 … )2, le cycle « 0011 » se répétant à l’infini.
Rappel (système de numération …)
❑ Représentation des nombres réels en virgule flottante
Dans un ordinateur, les nombres à virgule (réels) sont codés en virgule flottante.
On parle de nombres flottants. La représentation binaire en machine d’un nombre
flottant s’inspire de l’écriture scientifique des nombres décimaux.
L’écriture scientifique :
D’une manière générale, l'écriture scientifique d'un nombre décimal est :
 Un signe (+ ou -)

 m  10n : On distingue dans cette écriture :  Un nombre decimal, appelé mantisse m  1;10

 Un entier relatif n, appelé exposant

Exemple :

• − 8765 = −8, 765 103 • 0, 0123 = +1, 23 10−2


Rappel (système de numération …)
❑ Représentation des nombres réels en virgule flottante
La norme IEEE 754 :
La norme IEEE 754 est la plus utilisée pour représenter les nombres flottants. Ils
sont représentés sur 32 bits ( simple précision) ou sur 64 bits (double précision)
sous la forme :
• 𝑠 est le signe du nombre;
s.m  2n où : • 𝑛 est l’exposant en puissance de 2 ;
• 𝑚 est la mantisse

Format 32 bits Format 64 bits


Rappel (système de numération …)
❑ Représentation des nombres réels en virgule flottante
Le codage des bits ce fait comme suit :
Le signe : Le bit de signe (s) est 0 pour + et 1 pour −

Codage de la mantisse: La mantisse (m) est un nombre binaire de la forme

m = 1, xx  xx avec x  [0;1]
Comme cette mantisse commence toujours par le chiffre 1, il a été choisi de ne pas
coder ce « 1 » mais uniquement les chiffres après la virgule.
Codage de l’exposant : L’exposant est codé sur 8 bits ou 11 bits selon le format
utilisé. Sur 8 bits on peut coder les entiers compris entre −127 et 128. Sur 11 bits
on peut coder les entiers compris entre −1023 et 1024.
Rappel (système de numération …)
❑ Représentation des nombres réels en virgule flottante
Exemple :
Représentation en virgule flottante de 3,425

3, 425 ⎯codage
⎯⎯→11, 01101101 = +1,101101101 21

s = 0 (signe positif)
m = 101101101
n = (1 + 127 )10 = (128 )10 = (1000 0000 )2

Signe Exposant Mantisse


0 1000 0000 101 1011 0100 0000 0000 0000
Rappel (système de numération …)
❑ Circuits logiques
➢ Décodeur BCD/7 segments
Le décodeur BCD / 7 segments: On désire afficher, sur un afficheur 7 segments,
les chiffres de 0 à 9. Nous allons donc réaliser pour cela un décodeur recevant en
entrée un code BCD (Décimal Codé Binaire) sur 4 bits (compris entre 0000 et
1001), et fournissant en sortie 7 signaux qui permettront d’alimenter les segments
de l’afficheur
Afficheur à cathode commune
Si une sortie du décodeur est à 1, le segment
correspondant à cette sortie est allumé, et si une
sortie est à 0, le segment correspondant est éteint.
Rappel (système de numération …)
❑ Circuits logiques
➢ Décodeur BCD/7 segments

Exemple de décodeur, C.I 74LS47


Rappel (système de numération …)
❑ Circuits logiques
➢ L’additionneur :
Le demi-additionneur : C'est un circuit permettant d'effectuer l'addition de deux
bits A et B pour générer leur somme ∑ et leur retenue C (Carry) comme le
montre le schéma et la table de vérité ci-dessous :

 = AB C = A.B
Rappel (système de numération …)
❑ Circuits logiques
➢ L’additionneur :
Le circuit précédent, le demi-additionneur, ne prend pas en compte une
éventuelle retenue provenant de l’addition des chiffres An-1 et Bn-1.
Pour effectuer une addition de deux nombres binaires de n bits, on additionne
successivement les bits du même poids en tenant compte de la retenue de
l'addition précédente comme le montre l'exemple suivant
Rappel (système de numération …)
❑ Circuits logiques
➢ L’additionneur :
L’additionneur complet : permet de réaliser l'addition des bits Ai et Bi en plus de
la retenue Ci-1 de l'addition précédente

Si = A i  Bi  Ci −1 Ci = A i .Bi + ( A i  Bi ) .Ci −1
Rappel (système de numération …)
❑ Circuits logiques
➢ L’additionneur :
Logigramme d’additionneur complet :

Structure de l’additionneur complet sur 4 bits


Rappel (système de numération …)
❑ Circuits logiques
➢ Comparateur :
Un comparateur est un circuit permettant de détecter l’égalité de deux nombres et
éventuellement d’indiquer le nombre le plus grand ou le plus petit

S1 = A.B S2=A.B S3=A  B


Rappel (système de numération …)
❑ Circuits logiques
➢ Multiplexeur
Un multiplexeur ou sélecteur de données est un commutateur qui va pouvoir, à
l’aide de n bits d’adresse, sélectionner une de ses 2n entrées et la mettre en
communication avec sa sortie. Le schéma ci-dessous représente un multiplexeur 4
voies (E3 à E0) vers une (S) sélectables à l’aide des bits d’adresse A1 et A0.

S = V.A1.A 0 .E0 + V.A1.A 0 .E1 + V.A1.A 0 .E2 + V.A1.A 0 .E3


Rappel (système de numération …)
❑ Circuits logiques
➢ Multiplexeur
Logigramme du multiplexeur 4 vers 1 :
Multiplexeur de 2 mots de 4 bits chacun
(circuit 74LS153)
Rappel (système de numération …)
❑ Circuits logiques
➢ Démultiplexeur :
Un démultiplexeur ou répartiteur de données est un commutateur qui va pouvoir, à
l’aide de n bits d’adresse, aiguiller la donnée présente sur son entrée vers l’une de
ses 2n sorties. Le schéma ci-dessous représente un démultiplexeur une entrée (E)
vers 4 sorties (S3 à S0) sélectables à l’aide des bits d’adresse A1 et A0.

S0 = V.A1.A 0 .E S2=V.A1.A 0 .E
S1 = V.A1.A 0 .E S3=V.A1.A 0 .E
Architecture des systèmes à base des µP
❑ Structure matérielle des systèmes à µP
➢ Introduction :
Les structures matérielles des systèmes de traitement de l’information sont
pratiquement toutes organisées autour d’architectures à base de microprocesseur.
Le principal intérêt du microprocesseur est sa polyvalence : Il suffit simplement de
changer le programme pour réaliser des tâches différentes. C’est un gros avantage
par rapport à la technologie « câblée ».
Gain au niveau du coût, de la maintenance (plus fiable car moins de composants =
moins de risques de pannes), gain de temps énorme au niveau de la conception des
systèmes (c’est plus rapide de faire un programme que de concevoir des cartes
électroniques …).
Architecture des systèmes à base des µP
❑ Structure matérielle des systèmes à µP
➢ Introduction :
Le système à microprocesseur est constitué de plusieurs éléments montés sur une
carte de circuit imprimé ou dans un circuit intégré :
Architecture des systèmes à base des µP
❑ Structure matérielle des systèmes à µP
➢ Introduction :
L'élément de base d’un calculateur est constitué par l’unité centrale de traitement
(UCT, CPU : Central Processing Unit). L’UCT est constitué :
▪ d’une unité arithmétique et logique (UAL, ALU : Arithmetic and Logic Unit) :
c’est l’organe de calcul ;
▪ de registres : zones de stockage des données de travail de l’UAL (opérandes,
résultats intermédiaires) ;
▪ d’une unité de contrôle (UC, CU : Control Unit) : elle envoie les ordres (ou
commandes) à tous les autres éléments du calculateur afin d’exécuter un
programme.
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
➢ Définition :
L'unité arithmétique et logique, est l'organe de l'ordinateur chargé d'effectuer les
calculs. Le plus souvent, l'UAL est incluse dans le microprocesseur.
Les UAL élémentaires calculent sur des nombres entiers, et peuvent effectuer les
opérations communes :
• Les opérations arithmétiques : addition, soustraction ...
• Les opérations logiques : compléments à un, à deux, ET, OU, NON ...
• Les comparaisons : test d'égalité, supérieur, inférieur...
• Les décalages et les rotations…
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
Certaines UAL sont spécialisées dans la manipulation des nombres à virgule
flottante (floating point unit (FPU)). Typiquement, ces unités savent accomplir les
opérations suivantes : multiplications, divisions, comparaisons, modulos, inverse
(1/x), racine carrée, logarithmes, sin, cos …
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
L’unité logique et l’unité arithmétique sont intégrées au sein d’une même unité
dédiée au traitement des entiers.
L’unité logique et l’unité arithmétique sont
intégrées au sein d’une même unité dédiée
au traitement des entiers. Pour chacune des
unités, le choix de la fonction se fait par les
commandes C0 et C1. Les deux unités
fonctionnent en parallèle, et la sélection de la
sortie d’une unité (logique ou arithmétique)
se fait par la commande de multiplexage C2 .
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
Structure d'une unité arithmétique :
La valeur de commande C0, C1 permet de réaliser, au choix, l’opération
d’addition, de soustraction, voire de comparaison
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
Structure de l’unité logique :
L’unité logique doit permettre de réaliser au choix plusieurs opérations logiques
élémentaires telles que le OU, le ET, le OU EXCLUSIF et le NON. Ceci doit être
réalisé sur des mots de n bits.

Il est assez aisé de comprendre que la juxtaposition de cette unité 1 bit permet de
réaliser une unité logique n bits
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
Structure de l’unité de décalage :
Le circuit de décalage (shifter) permet les opérations de décalage. Ces opérations
sont réalisées au moyen d’un multiplexeur situé à la sortie de l’unité arithmétique
et logique. Plusieurs types de décalages sont possibles :
Architecture des systèmes à base des µP
❑ Unité Arithmétique et Logique (UAL)
Exemple d’unité de traitement
Architecture des systèmes à base des µP
❑ Les registres internes :
Les registres peuvent être plus ou moins nombreux dans le microprocesseur. Un
grand nombre de registres permet un maximum du traitement des données à
l’intérieur du microprocesseur.
Un minimum de registres internes est indispensable au fonctionnement de l’unité
centrale et est nécessaire à la programmation :
Architecture des systèmes à base des µP
❑ Les registres internes :
Le compteur ordinal PC est le registre qui pointe dans la mémoire l’adresse de
la prochaine instruction à traiter par l’unité de commande.
Le pointeur de pile SP est le registre qui pointe l’adresse du dernier élément de la
pile. La pile est utilisée pour stocker des données intermédiaires ou l’adresse de
retour des sous programmes.
Le registre d’index X est un registre qui pointe l’adresse en cours de lecture dans
une table de données.
Le registre indicateur CC contient des indications sur le résultat après chaque
traitement de l’unité arithmétique et logique. Il est se modifie automatiquement
quand elle effectue une opération.
Architecture des systèmes à base des µP
❑ Les registres internes :
Le registre indicateur CC :
- Le bit indicateur Z : Cet indicateur est mis à 1 lorsque le résultat de la dernière
opération est zéro. Lorsque l’on vient d’effectuer une fonction logique, Z=1
indique que le résultat bit à bit est nul pour chaque couple

- Le bit de retenue C : C’est l’indicateur de report (retenue), qui intervient dans les
opérations d’addition et de soustractions sur des entiers naturels. C = 1 s’il y a une
retenue après l’addition ou la soustraction du bit de poids fort des opérandes
Architecture des systèmes à base des µP
❑ Les registres internes :
- Le bit indicateur N : Cet indicateur est mis à 1 lorsque le résultat de l’opération
est négatif

- Le bit V : (overflow) mis à 1 si dépassement de la capacité de codage

- Le bit I : masque d’interruption

- Le bit H : Half Carry : demi-retenue : retenue sur la somme des bits 3.


Architecture des systèmes à base des µP
❑ Les bus :
Ils sont les liaisons électriques qui véhiculent les informations entre les différents
composants du système.
Bus de données : c’est sur ces lignes que circulent les données du programme.
Exemple sur un bus de données de 8bits = 8 fils on fera circuler qu’un octet à la
fois. Il est bidirectionnel
Bus d’adresse : Il est parcouru par des informations qui permettent de localiser le
ou les boîtiers concernés par l’échange d’information. On parle alors de l’adresse
de l’information. Il est unidirectionnel (le microprocesseur impose sa valeur), il
transporte une adresse produite par le microprocesseur. Cette adresse spécifie
l’origine ou la destination des données qui transitent.
Architecture des systèmes à base des µP
❑ Les bus :
Bus d’adresse :
Pour un bus de 16 bits, le microprocesseur peut accéder à 2^16 = 65 535 adresses
différentes.
Un seul composant (ROM, RAM …) est sélectionné (par son adresse) à la fois. Le
décodage du bus d’adresse permet de valider le composant sélectionné. (Rôle du
décodeur d’adresse)
Bus de contrôle : C’est un ensemble de lignes « relativement indépendantes » qui
permettent de :
- synchroniser le système : Horloge
- réaliser l’initialisation (Reset)
- contrôler les échanges (lecture, écriture)
- provoquer des exécutions de programmes particuliers (interruptions)
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Introduction : Une mémoire est un circuit à semi-conducteur permettant
d’enregistrer, de conserver et de restituer des informations. C’est cette capacité
de mémorisation qui explique la polyvalence des systèmes numériques et leur
adaptabilité à de nombreuses situations. Les informations peuvent être écrites
ou lues. Il y a écriture lorsqu'on enregistre des informations en mémoire, lecture
lorsqu'on récupère des informations précédemment enregistrées.
➢ Organisation de la mémoire : Une mémoire peut être représentée comme une
armoire de rangement constituée de différents tiroirs. Chaque tiroir représente
alors une case mémoire qui peut contenir un seul élément : des données. Le
nombre de cases mémoires pouvant être très élevé, il est alors nécessaire de
pouvoir les identifier par un numéro. Ce numéro est appelé adresse. Chaque
donnée devient alors accessible grâce à son adresse.
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Organisation de la mémoire :
Avec une adresse de n bits il est possible de référencer au plus 2n cases mémoire.
Chaque case est remplie par un mot de données. Le nombre de fils d’adresses d’un
boîtier mémoire définit donc le nombre de cases mémoire que comprend le boîtier.
Le nombre de fils de données définit la taille des données que l’on peut
sauvegarder dans chaque case mémoire.
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Organisation de la mémoire :
En plus du bus d’adresses et du bus de données, un boîtier mémoire comprend une
entrée de commande qui permet de définir le type d’action que l’on effectue avec
la mémoire (lecture/écriture) et une entrée de validation.

Une opération de lecture ou d’écriture de la mémoire suit toujours le même cycle :

1. sélection de l’adresse 2. choix de l’opération à effectuer (R/W)

3. sélection de la mémoire (CS = 0) 4. lecture ou écriture de la donnée


Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Caractéristiques des mémoires :
La capacité : c’est le nombre total de bits que contient la mémoire. Elle s’exprime
souvent en octet.
Le format des données : c’est le nombre de bits que l’on peut mémoriser par case
mémoire. On dit aussi que c’est la largeur du mot mémorisable.
Le temps d’accès : c’est le temps qui s'écoule entre l'instant où a été lancée une
opération de lecture/écriture en mémoire et l'instant où la première information est
disponible sur le bus de données.
Le temps de cycle : il représente l'intervalle minimum qui doit séparer deux
demandes successives de lecture ou d'écriture.
Le débit : c’est le nombre maximum d'informations lues ou écrites par seconde.
Volatilité : elle caractérise la permanence des informations dans la mémoire.
L'information stockée est volatile si elle risque d'être altérée par un défaut
d'alimentation électrique et non volatile dans le cas contraire.
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Différents types des mémoires :
Les mémoires vives (RAM) :
Une mémoire vive sert au stockage temporaire de données. Elle doit avoir un
temps de cycle très court pour ne pas ralentir le microprocesseur. Les mémoires
vives sont en général volatiles : elles perdent leurs informations en cas de coupure
d'alimentation. Il existe deux grandes familles de mémoires RAM (Random Acces
Memory : mémoire à accès aléatoire) :
Les RAM statiques (utilise des bascules)
Les RAM dynamiques (utilise des condensateurs).
Les mémoires mortes (ROM) :
Pour certaines applications, il est nécessaire de pouvoir conserver des informations
de façon permanente même lorsque l'alimentation électrique est interrompue. On
utilise alors des mémoires mortes ou mémoires à lecture seule (ROM : Read Only
Memory). Ces mémoires sont non volatiles. Ces mémoires, contrairement aux
RAM, ne peuvent être que lue.
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Différents types des mémoires :
L’écriture en mémoire des données (nouvelles générations ROM) est possible par
programmation. Suivant le type de ROM, la méthode de programmation changera.
Il existe donc plusieurs types de ROM :
• ROM • PROM • EPROM
• EEPROM • FLASH EPROM

➢ Choix des mémoires :


Les principaux critères à retenir sont :
• Capacité • Consommation

• Vitesse • Coût
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Décodage d’adresses :
• A0 … Ax : bus d’adresse de n lignes n=x+1
• D0 … Dy : bus de données de m ligne m=y+1
• Capacité mémoire : C = 2n.m bits
• Taille (longueur) de mot mémoire : m bits
• Espace adressable : C’est le nombre de mots mémoire adressables par un bus
d’adresses de n bits = 2n mots mémoire (adresses)
• Plage d’adresses : c’est le champ
d’adresses occupé par un circuit (boîtier)
mémoire de l’adresse minimale (adresse
basse) à l’adresse maximale (adresse haute)
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Décodeur d’adresse :
Le décodeur d’adresses a pour fonction de générer des signaux pour la sélection
des différents boîtiers avec lesquels le processeur doit communiquer. Pour éviter
que deux boîtiers répondent simultanément et créent alors un conflit sur les bus,
chaque boîtier doit répondre à une plage d’adresses différente des autres boîtiers
(on affecte à chaque boîtier une plage d’adresses différente des autres boîtiers).
Pour sélectionner un boîtier on utilise CS (Chip Select) ou CE (Chip Enable)
Exemple 1:
Architecture des systèmes à base des µP
❑ Les mémoires :
➢ Décodage d’adresses :
Exemple 2 :
On désire construire une mémoire de 1Ko à partir de 2 boîtiers de 512 octets
chacun. Pour les 2 circuits; on aura donc une capacité totale de 1024 (210) octets
c'est à dire une plage d'adresses de 0 (adresse minimale) à 1023 (adresse
maximale). Pour adresser toute la plage d'adresses il nous faut un bus d'adresses de
10 lignes (A0 - A9). La ligne d'adresse (A9) servira à sélectionner un boîtier parmi
les deux.
Architecture des systèmes à base des µP
▪ Architecture de Von Neumann :
Il s'agit d'une conception théorique basée sur le concept d'ordinateurs à programme
enregistré, dans lesquels les données de programme et les données d'instruction
sont stockées dans la même mémoire. L'idée derrière les architectures Von
Neumann est la possibilité de stocker des instructions dans la mémoire avec les
données sur lesquelles elles fonctionnent. L'architecture Von Neumann ne possède
qu'un seul bus utilisé à la fois pour les extractions d'instructions et les transferts de
données. Les opérations doivent être planifiées car elles ne peuvent pas être
effectuées en même temps.
L'architecture Von Neumann est
principalement utilisée sur toutes les
ordinateurs de bureau, les ordinateurs
portables et les stations de travail hautes
performances...
Architecture des systèmes à base des µP
▪ Architecture de Harvard :
Il s’agit d’une architecture informatique avec des voies de stockage et de
signalisation physiquement séparées pour les données de programme et les
instructions.
L’idée de l’architecture de Harvard est de scinder la mémoire en deux parties:
l’une pour les données et l’autre pour les programmes. Les termes étaient basés sur
le premier ordinateur à relais de Harvard Mark I, qui utilisait un système
permettant à la fois les transferts de données et les transferts d’instructions..
Le développement de l’unité de contrôle dans
l’architecture de Harvard est plus coûteux
que l’ancien en raison de l’architecture
complexe qui utilise deux bus pour les
instructions et les données. Elle est utilisée
principalement dans les microcontrôleurs et
le traitement du signal numérique (DSP)..
Architecture des systèmes à base des µP
▪ Notion de Jeu d’instructions :
➢ Le jeu d’instructions décrit l’ensemble des opérations élémentaires que le µP
peut exécuter. Les instructions peuvent être classées en 4 groupes :
• Transfert de données (charger ou sauver en mémoire, etc…)
• Opérations arithmétiques (addition, soustraction, etc…)
• Opérations logiques (ET, OU, comparaison, etc…)
• Contrôle de séquence (branchements, tests, etc…)
➢ Chaque instruction peut être associée à un ou plusieurs modes d’adressage, par
exemple: Adressage de registre, Adressage immédiat…
➢ Chaque instruction nécessite un certain nombre de cycles d’horloges pour
s’effectuer.
Architecture des systèmes à base des µP
▪ Notion de Jeu d’instructions :
➢ Il existe deux grandes familles au niveau des jeux d’instructions :
• L’architecture CISC (Complex Instruction Set Computer)
• L’architecture RISC (Reduced Instruction Set Computer)
➢ La conception de machines CISC était la seule méthode envisageable pour les
jeux d'instructions. C'est dans les années 80 que la notion de RISC est apparue.
Elle consiste à minimiser le nombre d'instructions et à les simplifier.
➢ Des études ont montré que 80% des traitements des langages de haut niveau ne
faisaient appel qu’à 20% des instructions d’un processeur. L’idée a donc été de
réduire le jeu d’instructions et d’améliorer les vitesses de traitement (un cycle
d’horloge par instruction).
Architecture des systèmes à base des µP
▪ Notion de Jeu d’instructions :
➢ Comparaison entre RISC et CISC
Architecture RISC Architecture CISC

• Instructions simples d’un seul cycle • Instructions complexes prenant


• Décodage simple câblé plusieurs cycles
• Plusieurs registres • Décodage complexe
• Seules LOAD et STORE ont accès à • Peu de registres
la mémoire • Toutes les instructions sont
• Compilateur complexe susceptibles d’accéder à la mém
• Compilateur simple
Architecture des systèmes à base des µP
▪ Traitement des instructions :
Phase 1 : Recherche de l’instruction en mémoire
• La valeur du PC est placée sur le bus d’adresse par l’unité de commande
qui émet un ordre de lecture
• Après le temps d’accès à la mémoire, le contenu de la case mémoire
sélectionnée est disponible sur le bus de données.
• L’instruction est stockée dans le registre d’instruction du µP
Architecture des systèmes à base des µP
▪ Traitement des instructions :
Phase 2 : Décodage et recherche de l’opérande
• L’unité de commande transforme l’instruction en une suite de commande
élémentaires nécessaire au traitement de l’instruction.
• Si l’instruction nécessite une donnée en provenance de la mémoire, l’unité
de commande récupère sa valeur sur le bus de données.
• L’opérande est stocké dans le registre de données.
Architecture des systèmes à base des µP
▪ Traitement des instructions :
Phase 3 : Exécution de l’instruction
• L’UAL réalise l’instruction.
• Les drapeaux sont positionnés (modification du registre d’état).
• L’unité de commande modifie le PC pour l’instruction suivante.
Architecture des systèmes à base des µP
▪ Le pipelining des instructions
➢ Dans un µP sans pipeline, les instructions sont exécutées les unes après les
autres. Une nouvelle instruction n'est commencée que lorsque l'instruction
précédente est complètement terminée. Avec un pipeline, le µP commence une
nouvelle instruction avant d'avoir fini la précédente.
➢ Plusieurs instructions se trouvent donc simultanément en cours d'exécution. Le
temps d'exécution d'une seule instruction n'est pas réduit. Néanmoins, le
nombre d'instructions exécutées par unité de temps, est augmenté.
➢ En pipeline, l’exécution d’une instruction se décompose en une succession
d’étapes. Chacune de ces étapes fait appel à des sous parties différentes du µP.
Architecture des systèmes à base des µP
▪ Le pipelining des instructions
➢ Principe : exemple de l’exécution d’une instruction en 4 phase
On va découper l'exécution des instructions en quatre étapes suivantes :
1) Lecture de l'instruction (Instruction Fetch) 3) Exécution de l'instruction (Instruction
2) Décodage de l'instruction (Instruction Execution)
Decode) 4) Accès à la mémoire (Memory Access)
Modèle classique Instr 1 IF ID IE MA

Instr 2 IF ID IE MA

Instr 3 IF ID IE MA
Cycle
machine
Modèle pipeliné : IF ID IE MA
Instr 1
Instr 2 IF ID IE MA

Instr 3 IF ID IE MA
Cycle
machine
Architecture du microcontrôleur PIC 16F84
❑ Introduction :
Un PIC est un microcontrôleur, c’est une unité de traitement de l’information de
type microprocesseur à laquelle on a ajouté des périphériques internes permettant
de faciliter l'interfaçage avec le monde extérieur sans nécessiter l’ajout de
composants externes. Les PICs sont des composants RISC (composant à jeu
d’instructions réduit).
La famille des PICs est subdivisée en 3 grandes familles : La famille Base-Line,
qui utilise des mots d’instructions de 12 bits, la famille Mid-Range, qui utilise des
mots de 14 bits (dont fait partie la 16F84), et la famille High-End, qui utilise des
mots de 16 bits.
Architecture du microcontrôleur PIC 16F84
❑ Introduction :
Pour identifier un PIC, on utilise simplement son numéro :
▪ Les 2 premiers chiffres indiquent la catégorie du PIC, 16 indique un PIC Mid-
Range.
▪ Parfois une lettre L, celle-ci indique que le PIC peut fonctionner avec une plage
de tension beaucoup plus tolérante.
▪ Une ou deux lettres pour indiquer le type de mémoire programme :
• C indique que la mémoire programme est une EPROM ou EEPROM
• CR pour indiquer une mémoire de type ROM
• F pour indiquer une mémoire de type FLASH.
▪ Un nombre qui constitue la référence du PIC.
▪ Un tiret suivi de deux chiffres indiquant la fréquence max de fonctionnement
Architecture du microcontrôleur PIC 16F84
❑ Aspect externe du PIC 16F84 :
Le 16F84 est commercialisé dans un boîtier classique 18 broches

Les fonctions des pattes sont les suivantes :


- VSS, VDD : Alimentation - OSC1,2 : Horloge
- MCLR : Reset active sur état bas
- RA0-4 : Port A - RB0-7 : Port B
- T0CKL : Entrée de comptage - INT : Entrée d'interruption externe
- Alimentation en mode programmation : 12V à 14V
- Alimentation en mode fonctionnement : 4.5V à 5.5V
Architecture du microcontrôleur PIC 16F84
❑ Aspect interne du PIC 16F84 :
Les caractéristiques principales du 16F84 sont :
Une mémoire programme de type flash de 1K (1024) mots de 14 bits
Une mémoire RAM constituée :
- Des registres de control SFR (Special Function Registers)
- 68 octets de RAM utilisateur appelés aussi GPR (General Propose Resisters)
Architecture du microcontrôleur PIC 16F84
❑ Aspect interne du PIC 16F84 :
o Une mémoire EEPROM de donnée de 64 octets
o Deux ports d'entrée sortie, un de 5 bits et un de 8 bits
o Un timer/Compteur cadencé par une horloge interne ou externe
o Un chien de garde / compteur qui est un timerparticulier
o Un prédiviseur de fréquence programmable permettant d'étendre les possibilités
du Timer TMR0 et du chien de garde WDT
o L'horloge peut être générée par 4 types d'oscillateurs sélectionnables
o Fonctionnement en mode Sleep pour réduction de la consommation
o Programmation par mode ICSP (In Circuit Serial Programming)
Architecture du microcontrôleur PIC 16F84
❑ La mémoire programme (FLASH) :
Cette mémoire de 1024 mots stocke le programme.
Elle est non volatile et reprogrammable à souhait.
Chaque position de 14 bits contient une instruction.
L'emplacement du programme peut se situer à
n'importe quel endroit de la mémoire. Cependant il
faut savoir que suite à un RESET ou lors de la mise
sous tension, le PIC commence l'exécution à l'adresse
H'0000'. De plus, lorsqu'il y a une interruption, le PIC
va à l'adresse H'0004'. Le programme est implanté
dans la flash à l'aide d'un programmateur (Hard+soft).
Architecture du microcontrôleur PIC 16F84
❑ La mémoire RAM – Registres :
La mémoire RAM est constituée de deux parties :
❑ Les registres SFR (Special Function Register), ce
sont les registres de fonctionnement du PIC.
L'ensemble de ces registres est souvent appelé
fichier des registres.
❑ Les registres GPR (General Propose Register)
sont des positions mémoire que l'utilisateur peut
utiliser pour stocker ses variables et ces données.
Les positions de la RAM sont appelé registres
La mémoire RAM est organisée en deux banks, pour accéder à un registre, il faut
d'abord se placer dans le bank où il se trouve. Ceci est réalisé en positionnant le bit
RP0 du registre STATUS. (RP0 = 0 →Bank 0, RP0 = 1 →Bank 1)
Architecture du microcontrôleur PIC 16F84
❑ L’unité arithmétique et logique (UAL) :
C'est une UAL de 8 bits qui réalise les opérations arithmétique et logique entre
l'accumulateur W et n'importe quel autre registre 'F' ou constante K.
L'accumulateur W est un registre de travail 8 bits, il n'a pas d'adresse comme les
autres SFR. W

Pour les instructions à deux opérandes, c'est toujours


lui qui contient un des deux opérandes. Pour les
ALU
instructions à un opérande, celui-ci peut être soit W
soit n'importe quel registre F. Le résultat de l'opération 16 registres
système
peut être placé soit dans le registre de travail W soit RAM
Utilisateur
dans le registre F. 64 octets
Architecture du microcontrôleur PIC 16F84
❑ L’horloge :
L'horloge peut être soit interne soit externe. Avec l'oscillateur à Quartz, on peut
avoir des fréquences allant jusqu'à 4, 10 ou 20 MHz selon le type de µC. Dans
certains cas, une horloge externe au microcontrôleur peut être utilisée pour
synchroniser le PIC avec d'autres composants.
Quelque soit l'oscillateur utilisé, l'horloge système dite aussi horloge instruction est
obtenue en divisant la fréquence par 4. Dans la suite on utilisera le terme Fosc/4
pour désigner l'horloge système.
Architecture du microcontrôleur PIC 16F84
❑ Les ports d’entrées / sorties :
Port A : Le port A désigné par PORTA est un port de 5 bits (RA0 à RA4). Chaque
E/S est compatible TTL. La configuration de direction pour chaque bit du port est
déterminée avec le registre TRISA.
• Bit i de TRISA = 0 → bit ide PORTA configuré en sortie
• Bit i de TRISA = 1 → bit ide PORTA configuré en entrée
La broche RA4 est multiplexée avec l'entrée horloge du timer TMR0, elle peut
donc être utilisée soit comme E/S normale du port A, soit comme entrée horloge
pour le Timer TMR0.
Architecture du microcontrôleur PIC 16F84
❑ Les ports d’entrées / sorties :
Port A :
RA4 est une E/S à collecteur 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. Le schéma ci-
contre illustre le principe d'une sortie collecteur ouvert : 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écessité de la résistance externe
pour amener le courant de l'alimentation vers la LED.
Architecture du microcontrôleur PIC 16F84
❑ Les ports d’entrées / sorties :
Port B :
• Le port B désigné par PORTB est un port bidirectionnel de 8 bits (RB0 à
RB7). Toutes les broches sont compatibles TTL. La configuration de
direction se fait à l'aide du registre TRISB. (Voir PORTA / TRISA)
• En entrée, la ligne RB0 appelée aussi INT peut déclencher l’interruption
externe INT.
• En entrée, une quelconque des lignes RB4 à RB7 peut déclencher
l'interruption RBI.
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Timer TMR0 : C’est un compteur 8 bits ayant les caractéristiques suivantes :
Il s’incrémente en permanence soit par l’horloge interne Fosc/4 (mode timer) soit
par une horloge externe appliquée à la broche RA4 du port A (mode compteur).
Le choix de l'horloge se fait à l'aide du bit T0CS du registre OPTION_REG
▪ TOCS = 0 → horloge interne
▪ TOCS = 1 → horloge externe appliquée à RA4
Registre OPTION_REG : RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Timer TMR0 :
Dans le cas de l'horloge externe, on peut choisir le front sur lequel le TIMER
s'incrémente.
▪ TOSE = 0 → incrémentation sur fronts montants
▪ TOSE = 1 → incrémentation sur fronts descendants

Registre OPTION_REG : RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Timer TMR0 :
Quelque soit l'horloge choisie, on peut la passer dans un diviseur
de fréquence programmable (Prescaler) dont le rapport est fixé
par les bits PS0, PS1 et PS2 (tableau ci-contre). L'affectation ou
non du Prescaler se fait à l'aide du bit PSA du :
▪ PSA = 1 → on utilise le Prescaler
▪ PSA = 0 → pas de Prescaler

Registre OPTION_REG : RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Timer TMR0 :
▪ Le contenu du timer TMR0 est accessible par le registre qui porte le même
nom. Il peut être lu ou écrit à n'importe quel moment. Après une écriture,
l'incrémentation est inhibée pendant deux cycles d'instruction.
▪ Au débordement de TMR0 (FF → 00), le drapeau T0IF est placé à 1. Ceci peut
déclencher l'interruption T0I si celle-ci est validée

TRA4
TTOIF

TPscl
Tosc/4
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Timer TMR0 :

TRA4
TTOIF

TPscl
Tosc/4

Valeur de temporisation :
▪ Sans Prescaler : TT 0 IF  VTMR 0  Tosc /4 ou TT 0 IF  VTMR 0  TRA 4
▪ Avec Prescaler : TT 0 IF  VTMR 0  VPscl  Tosc /4 ou TT 0 IF  VTMR 0  VPscl  TRA 4
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Watchdog : C’est un compteur 8 bits incrémenté en permanence (même si le
µC est en mode sleep) par une horloge RC intégrée indépendante de l'horloge
système. Lorsqu’il déborde, (WDT TimeOut), deux situations sont possibles :
▪ Si le µC est en fonctionnement normal, le WDT time-out provoque un RESET.
Ceci permet d’éviter de rester planté en cas de blocage du microcontrôleur par
un processus indésirable non contrôlé
▪ Si le µC est en mode SLEEP, le WDT time-out provoque un WAKE-UP,
l'exécution du programme continue normalement là où elle s'est arrêtée avant
de rentrer en mode SLEEP. Cette situation est souvent exploitée pour réaliser
des temporisations
Architecture du microcontrôleur PIC 16F84
❑ Le Timer TMR0 et le Watchdog :
Le Watchdog :
L'horloge du WDT est ajustée pour que Le Time-Out arrive toutes les 18 ms. Il est
cependant possible d'augmenter cette durée en faisant passer le signal Time-Out
dans un prédiviseur programmable (partagé avec le timer TMR0).
Architecture du microcontrôleur PIC 16F84
❑ Les interruptions :
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 à l’endroit où il s’était arrêté. Le PIC16F84 possède 4 sources
d'interruption. 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. Tous ces bits sont dans le
registre INTCON à part le drapeau EEIF de l'interruption EEI qui se trouve dans le
registre EECON1.
Architecture du microcontrôleur PIC 16F84
❑ Les interruptions :
GIE : ce bit permet de valider ou d'interdire (globalement) toutes les interruptions
INTEDG
INTE
INTF
L'interruption INT
(Entrée RB0 du port B)
RBIF RBIE
L'interruption RBI
(RB4 A RB7 du port B) GIE
Déclenchement
T0IF T0IE de l’interruption
L'interruption T0I
(Débordement du TMR0)

EEIF EEIE
L'interruption EEI
(Fin d'écriture dans l'EEPROM)
Architecture du microcontrôleur PIC 16F84
❑ Les interruptions :
➢ L'interruption INT (Entrée RB0 du port B) :
Cette interruption est provoquée par un changement d'état sur l'entrée RB0 du port
B quand elle est programmée en entrée. Elle est gérée par les bits :
▪ INTE : bit de validation (1=oui, 0=non)
▪ INTF : drapeau
▪ INTEDG : front de déclenchement, 1=montant, 0=descendant (registre
OPTION_REG)
➢ L'interruption RBI (RB4 A RB7 du port B) :
Cette interruption est provoquée par un changement d'état sur l'une des entrées
RB4 à RB7 du port B, Le front n'a pas d'importance. Les bits associés sont RBIE
(validation) et RBIF (drapeau)
Architecture du microcontrôleur PIC 16F84
❑ Les interruptions :
➢ L'interruption T0I : Débordement du Timer TMR0
Cette interruption est provoquée par le débordement du timer TMR0. Les bits
associés sont T0IE (validation) et T0IF (drapeau)
➢ L'interruption EEI : Fin d'écriture dans l'EEPROM
Cette interruption est déclenchée à la fin d'une écriture réussie dans l'EEPROM.
Les bits associés sont EEIE (validation) et EEIF (drapeau).
INTEDG
INTE
INTF
L'interruption INT
(Entrée RB0 du port B)
RBIF RBIE
L'interruption RBI
(RB4 A RB7 du port B) GIE
Déclenchement
T0IF T0IE de l’interruption
L'interruption T0I
(Débordement du TMR0)

EEIF EEIE
L'interruption EEI
(Fin d'écriture dans l'EEPROM)
Architecture du microcontrôleur PIC 16F84
❑ Les interruptions :
➢ Déroulement d'une interruption
Lorsque l'événement déclencheur d'une interruption intervient, alors son drapeau
est positionné à un (levé). Si l'interruption correspondante a été validée, elle est
alors déclenchée : le programme arrête ce qu'il est en train de faire et va exécuter la
procédure d'interruption qui se trouve à l'adresse H’004' en exécutant les étapes
suivantes :
1) L’adresse contenue dans le PC (Program Counter) est sauvegardée dans la
pile, puis remplacée par la valeur H’004' (adresse de la routine d'interruption).
2) Le bit GIE est placé "0" pour inhiber toutes les interruptions (afin qu'on ne soit
pas dérangés pendant l'exécution de la procédure d'interruption).
3) A la fin de la procédure d'interruption (l'instruction RETFIE) :
Architecture du microcontrôleur PIC 16F84
❑ Les interruptions :
➢ Déroulement d'une interruption
▪ Le bit GIE est replacé à l'état haut (autorisant ainsi un autre événement)
▪ Le contenu du PC est rechargé à partir de la pile ce qui permet au
programme de reprendre là où il s'est arrêté
Deux remarques importantes sont à faire :
▪ Le drapeau reste à l’état haut même après le traitement de l’interruption. Par
conséquent, il faut toujours le remettre à "0" sinon l'interruption sera
redéclenchée
▪ Seul le PC est empilé automatiquement. Si cela est nécessaire, les registres W
et STATUS doivent être sauvegardés puis restaurés à la fin de la routine pour
que le microcontrôleur puisse reprendre dans les mêmes conditions.
Architecture du microcontrôleur PIC 16F84
❑ Les instructions du 16F84 :
Tous les PICs Mid-Range ont un jeu de 35 instructions. Chaque instruction est

codée sur un mot de 14 bits. A part les instructions de saut, toutes les instructions

sont exécutées en un cycle d'horloge. Sachant que l’horloge fournie au PIC est

prédivisée par 4, si on utilise par exemple un quartz de 4MHz, on obtient donc

1000000 cycles/seconde, cela nous donne une puissance de l’ordre de 1MIPS (1

Million d’ Instructions Par Seconde).

➢ Les instructions « orientées octet » (adressage direct)

Ce sont des instructions qui manipulent les données sous forme d’octets.
Architecture du microcontrôleur PIC 16F84
❑ Les instructions du 16F84 :
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 (d) pour indiquer si le résultat obtenu doit être conservé dans le
registre de travail (accumulateur W) ou sauvé dans un registre F.
• Reste 7 bits pour encoder l'adresse de l’opérande (128 positions au total)
Problème ! 7 bits ne donnent pas accès à la mémoire RAM totale, donc voici
l’explication de la division de la RAM en deux banks. Pour remplacer le bit
manquant, on utilise le bit RP0 du registre STATUS.
Architecture du microcontrôleur PIC 16F84
❑ Les instructions du 16F84 :
➢ Les instructions « orientées octet » (adressage direct)
Architecture du microcontrôleur PIC 16F84
❑ Les instructions du 16F84 :
➢ Les instructions « orientées bits »
Les instructions Ce sont des instructions destinées à manipuler directement les bits
d’un registre d'une case mémoire. Elles sont codées de la manière suivante :
• 4 bits pour l’instruction
• 3 bits pour indiquer le numéro du bit à manipuler (de 0 à 7)
• 7 bits pour indiquer l’opérande.
Architecture du microcontrôleur PIC 16F84
❑ Les instructions du 16F84 :
➢ Les instructions opérant sur une donnée (adressage immédiat)
Ce sont les instructions qui manipulent des données qui sont codées dans
l’instruction directement. 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).
Architecture du microcontrôleur PIC 16F84
❑ Les instructions du 16F84 :
➢ Les instructions de saut et appel de procédures
Ce sont les instructions qui provoquent une rupture dans la séquence de
déroulement du programme. Elles sont codées de la manière suivante :
• Les instructions sont codées sur 3 bits
• La destination est codée sur 11 bits
Architecture du microcontrôleur PIC 16F84
❑ Les directives assembleurs les plus utilisées :
LIST : permet de définir un certain nombre de paramètres comme le processeur
utilisé (p), la base par défaut pour les nombres (r), le format du fichier hex à
produire (f) ainsi que d'autres paramètres.
Exemple : LIST p=16F84A, r=dec, f=inhx8m
INCLUDE : permet d'insérer un fichier source. Par exemple le fichier
p16f84A.inc contient la définition d'un certain nombre de constante comme les
noms des registres ainsi que les noms de certain bits;
Exemple : INCLUDE "p16f84A.inc"
__CONFIG : permet de définir les 14 bits de configuration qui seront copié dans
l'EEPROM de configuration lors de l'implantation du programme dans le PIC
(protection de code, type d'oscillateur, chien de garde et temporisation du départ).
Exemple : __CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF
Architecture du microcontrôleur PIC 16F84
❑ Les directives assembleurs les plus utilisées :
EQU : permet de définir une constante ou une variable :
Exemple : XX EQU 0x20
Chaque fois que le compilateur rencontrera XX, il la remplacera par 0x20
ORG : définit la position dans la mémoire programme à partir de laquelle seront
inscrites les instructions suivantes.
Exemple : ORG 0x00
GOTO 0x05
END : indique la fin du programme
➢ Initialisation d’un programme :
LIST p=16F84, r=dec, f=inhx8m
INCLUDE "p16f84.inc "
__CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF & _WDT_OFF
Annexe
❑ L ’algorigramme
Définition :

Graphique qui représente un algorithme de façon très simple et compréhensible par

tous. Un algorigramme est aussi désigné par les termes « logigramme » ou «

organigramme de programmation ».
Modèle d'un algorigramme :

La norme de représentation graphique d’un algorigramme est la suivante :

▪ Case losange = test / condition / question.

▪ Case rectangle = étape / action.


Annexe
❑ L ’algorigramme
Un organigramme commence toujours par un
"début" et finit par une "fin" représentés chacun début
par forme ovale.
Le losange correspond à une question à laquelle
on peut répondre uniquement par oui ou non. il
fait référence aux capteurs. Question?
non

le rectangle représente l'action à effectuer. Il fait oui


référence à l'actionneur.
Action
Liaisons orientées : Elles relient les différents
blocs. Le sens général d’évolution est du haut
vers le bas. Dans le cas contraire, des flèches
doivent être employées. fin

Vous aimerez peut-être aussi