Vous êtes sur la page 1sur 64

MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR

UNIVERSITÉ DE MONASTIR
ECOLE NATIONALE D’INGÉNIEURS DE MONASTIR

AUTOMATISME
ET
INFORMATIQUE INDUSTRIELLE

AU: 2020/2021
Objectif
2

Le but de ce module est de:

◼ Comprendre l’architecture des µp et des µc

◼ Comprendre et développer des codes en assembleurs

◼ Développer des programmes en langage C.


o Les microcontrôleurs Atmega328 (Arduino)

ENIM F. HAMDAOUI AU: 2020/2021


PLAN
3

 1) Introduction générale (Motivation)

 2) Les µprocesseurs: présentation générale

 2) Mémoires et Bus

 3) Les µcontrôleurs

 4) Jeu d’instructions

 5) Modes d’adressage

 6) Interruptions

 7) Structure d’un programme assembleur


ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Motivation
4

▪Une Mercedes classe S: 65 processeurs ▪Plusieurs fonctions électronique intégrées:


(100 de nos jours pour les Mercedes et les oGestion du moteur (allumage, injection…);
BMW). oTransmission (embrayage, boîte, pont…);
▪Electronique embarquée: environ 40 % oSécurité active (antipatinage, correction de
du coût trajectoire (EPS)…);
▪Logiciels dans un véhicule oSécurité passive (airbag, ceintures…);
oMise à jour par réseau oContrôle automatique de la pression des
oMême tendance que l’aéronautique! pneus (TPMS).

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Motivation (2)
5

▪NVIDIA s’est associé à AUDI pour concevoir une voiture autonome embarquant le
processeur Xavier (APU) bien adapté aux besoins de l’intelligence artificielle :
oIl exploite 8 cœurs 64-Bit custom,
oUn GPU sous architecture Volta 512 cores,
oArchitecture gravée en 16 nm FinFET
oLa compréhension de commandes vocales,
oLa gestion de la conduite autonome,
oAdaptation de la conduite et de la vitesse du véhicule en fonction des conditions
du trafic,
oDétection permanente de l'environnement immédiat, grâce au logiciel
DriveWorks et au réseau neuronal PilotNet.

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Motivation (3)
6

▪La machine à commande numérique (CNC: Computer


Numerical Control) est assurée par un ordinateur pour
la commande numérique:
oUtilisée dans le domaine de la fabrication:
tournages, fraisages et rectifications de pièces,
oUn fichier informatique de définition numérique
(DFN) généré par un outil CAO (CATIA),
oL’opération de fabrication ne sera exécutée que par
code écrit en langage de programmation: G-Code,
▪Le robot industriel FANUC sert à positionner et orienter
un outil porté par son extrémité, de manière précise:
oContrôleur compact 30iB Mate: µP qui convertit
les consignes reçues en mouvements précis,
o6 axes, 20 entrées et 20 sorties numériques,
oCâble de connexion robot/contrôleur de 7 m,
oUtilise un langage interprété TPP (Teach Pendant
Programming) pour bouger le robot à une position
spécifiée (LBL, JMP, WAIT, CALL, …)
ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Que ce qu’un µP ?
7

▪Le µP est le composant hardware le plus connu d'un


système micro-programmé. C'est l'unité intelligente de
traitement des informations.

▪Son travail consiste à lire des programmes (des suites


d'instructions), à les décoder et à les exécuter.

▪Un µP ou CPU (Central Processing unit en anglais)


se compose de 3 parties:
oUne UAL: Unité Arithmétique et Logique;
oUne UC: Unité de Contrôle ou séquenceur;
oMC (Mémoire Cache) et registres;

▪Les μP ne sont jamais employés seuls, des circuits périphériques leurs sont
toujours associés pour pouvoir être intégrés au sein d’une application.

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Les mémoires
8

Ultra rapide
Très chère
Souvent dans le µP < 6 Ko

Très rapide; chère; 128 Ko; 700 Go/s


Très rapide; chère, 1 Mo; 200 Go/s
Hors du µP Très rapide; chère, 8 Mo; 100 Go/s
Vitesse

Capacité
rapide; prix raisonnable,
Capacité, moyenne,
quelques Go; 10 Go/s

Vitesse moyenne
(débit),
qlqs To; 600 Mo/s (ssd)

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Historique et Evolution
9

Année Nom Nbre de transistors Fréquence Données


1971 4004 2300 108 Khz 4 bits
1974 8008 6000 2 Mhz 8 bits
1979-1982 8088-80286 29000|134000 5 | 6à16 Mhz 16 bits
1985-1989 80386-80486 275000|1M200(800nm) 16-40|16-100Mhz 32 bits
1993-97-99 Pentuim I- II-III 3M100|7M500-9M500 60-233|233- 32 bits
450|450-1.4 Ghz
2000-2004 Pentuim 4 – 4D 42M|125M 1.3-3.8|2.66-.6Ghz 32 bits
2006-07 Core 2 Duo|2 Quad 291M | 2*291 M 2.4 | 3 Ghz 64 bits
2008 (1st G) Intel Core i7 (Bloomfield) 731 M (45 nm) 3.33 Ghz (i7 975X) 64 bits
2009 Core i5/i7 (Lynnfield) 774M 3.06 Ghz (I7 880) 64 bits
2011 (2nd G) i3/i5/i7 (Sandy Bridge) 1Md160M (32 nm) 3.5 Ghz (i7 2700K) 64 bits
2015 (5th G) I3/i5/i7 ((Skylake) 1Md750M (14 nm) 4 Ghz (i7 6700K) 64 bits
2019(9th G) I3/i5/i9 (Tigerlake) (14 nm)
ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Historique et Evolution
10

▪Un processeur est dit multithread s'il est capable d'exécuter efficacement
plusieurs tâches (threads) simultanément.
▪Un microprocesseur multi-core (multi-cœurs) est un processeur possédant plusieurs
cœurs physiques fonctionnant simultanément.
ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Que ce qu’un µC ?
11

▪Les μC possèdent quant à eux la puissance d’un μP mais ont un atout en plus, en
effet ils possèdent dans le même boîtier, les périphériques intégrés
▪Un μC possède au minimum les éléments suivants:
oµP;
oMémoire programme;
oMémoire de donnée;
oPériphériques d’E/S pour permettre au µC de dialoguer avec l’extérieur.

Un μC seul peut donc gérer une application, sans faire appel forcement à
d’autres circuits associés
ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Les mémoires
12

Caractéristiques :

▪Volatilité: Une mémoire est dite volatile si son contenu disparaît ou est effacé
lorsqu’on éteint le microcontrôleur, alors qu’une mémoire non volatile garde
l’information dans tous les cas.
oLa mémoire RAM désigne une mémoire volatile et la mémoire ROM
désigne celle qui est non volatile.

▪Temps d’accès: temps nécessaire entre la demande d’information et son


obtention. Il est donné en nanosecondes (ns). Actuellement, il est inférieure à 60ns.

▪Temps de cycle: représentant l'intervalle qui sépare le début effectif de


l’opération de lecture/écriture et sa fin.

▪Débit de transfert: appelé aussi vitesse de transfert, il s’exprime en bits/s.

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Les mémoires (2)
13

Différents types de mémoire RAM:


▪DRAM: La mémoire vive dynamique se compose de condensateurs qui se
chargent (1L) ou se déchargent (0L). Ces condensateurs sont petits et de faible
capacité. Comme le courant de fuite est élevé, il faut rafraîchir le contenu de la
mémoire toutes les 60 millisecondes. C’est ce qui explique sa lenteur.

▪SRAM: La mémoire vive statique n’a pas besoin d’être rafraîchie et les flip-flop
composés de transistors remplacent les condensateurs. Ces bistables prennent la
valeur élevée (1L) ou basse (0L) et travaillent avec une vitesse plus vite d’un
condensateur (moins de 10 nanosecondes).

Comparaison entre DRAM et SRAM:

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Les mémoires (3)
14

Différents types de mémoire ROM:


▪ROM:(Read Only Memory) mémoire à lecture seule, programmée à vie OTP (One
Time Programmable). La programmation de ce type de mémoires consiste à faire «
claquer » des fusibles (qui sont en fait des jonctions semi-conductrices). Son
contenu est défini lors de la fabrication.

▪PROM: Alors que la ROM est enregistrée de manière irréversible lors de sa


fabrication, la PROM est configurée par l’utilisateur en utilisant un
programmateur de PROM, utilisé pour enregistrer son contenu. Le circuit PROM
ne peut plus être modifié par la suite.

▪EPROM (Erasable Programmable Read Only Memory): ou UVPROM Ce sont des


mémoires programmables électriquement et effaçable par UV donc réutilisables.
Il faut noter que l’effacement par UV (environ 15 min) et l’écriture (quelques
minutes) sont des opérations relativement longues. Nécessite une petite fenêtre
pour laisser passer les UV.

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Les mémoires (4)
15

Différents types de mémoire ROM:


▪EEPROM (Electrically Erasable Programmable Read Only Memory): sont
effaçables et programmables par l’utilisateur. Elles sont plus faciles à effacer que
les EPROM car elles sont effaçables électriquement donc sans manipulations
physiques.

▪FLASH: présentent un compromis entre les mémoires de type RAM et les


mémoires mortes. En effet, la mémoire Flash possède la non-volatilité des
mémoires mortes tout en pouvant facilement être accessible en lecture ou en
écriture. En contrepartie les temps d'accès des mémoires flash sont plus
importants que ceux de la mémoire vive. Elles sont aussi similaires aux mémoires
EEPROM en effacement, mais l’effacement peut se faire sélectivement par blocs et
ne nécessite pas le démontage du circuit. La Flash a connu un essor très important
ces dernières années avec le boom de la téléphonie portable et des appareils
multimédia (Appareil photo numérique, lecteur MP4, etc...).

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Les mémoires (5)
16

Architecture interne et capacité:


▪La mémoire peut être vu comme une armoire (vecteur ligne)
composée de mots binaires.

▪La largeur d’une mémoire est déterminée en bits (ou cellules)


et elle correspond à la taille d’un mot
▪Chaque position d’un mot dans l’armoire est déterminée par
son adresse.

▪La taille de l’adresse est dépendante de la capacité totale de


la mémoire.

▪La profondeur d’une mémoire est le nombre de mots qu’on


peut stocker dans la mémoire.
oLa largeur = la taille de bus de données
k
oLa profondeur = 2 avec k: le nombre de fils de bus d’@
oCapacité (Taille) = Largeur x profondeur (exprimé en bits)
ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Bus
17

▪Un bus est un jeu de lignes partagées pour l’échange de mots numériques entre
microprocesseur et différentes types de mémoires.

Il existe 3 types de bus:


▪Bus de données : Transfert de données entre composants (résultat d'une opération,
valeur d'une variable).
▪Bus d'adresses : permet de transférer entre composants des adresses (Adresse d’un
mot binaire),
▪Bus de commande ou de contrôle : permet l'échange entre les composants
d'informations de contrôle (prêt/occupé, erreur/exécution réussie).
ENIM F. HAMDAOUI AU: 2020/2021
Introduction
Bus (2)
18

Caractéristiques :

▪Il est caractérisé par:


● Nombres de fils (lignes), défini la largeur d’un bus. C’est le volume
d’informations transmises simultanément, exprimé en bit.

● Vitesse du bus, définie par sa fréquence (exprimé en Hz). C’est le nombre


de paquets de données envoyés ou reçus par seconde. On parle de cycle pour
désigner chaque envoi ou réception de données.

● Débit maximal, défini le taux de transfert maximal. C’est la quantité de


données qu’il peut transporter par unité de temps déterminée par le produit
entre la largeur et la fréquence, donc exprimé en bit/s.

▪Il y a des bus unidirectionnels et des bus bidirectionnels

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Mémoire de masse
19

Caractéristiques :
▪Conservation permanente de grande capacité des données
▪HDD: Il est composé de plateaux rigides en rotation. Chaque plateau est constitué
d'un disque réalisé généralement en aluminium. Les faces de ces plateaux sont
recouvertes d'une couche magnétique, sur laquelle sont stockées les données. Ces
données sont écrites en code binaire [0,1] sur le disque grâce à une tête de
lecture/écriture,

▪SSD: Un disque SSD est un peu comme une grosse clé USB. Il fonctionne sur un
système de mémoire-flash. Cette mémoire est ensuite distribuée sur la carte SSD
en plusieurs modules et gérée par un contrôleur.

Caractéristiques HDD SSD


Consommation élevée faible
Bruit Pièces mobiles + frottement nul
Débit 100 Mo/s 600 Mo/s

ENIM F. HAMDAOUI AU: 2020/2021


Introduction
Applications
20

▪La capacité d’une mémoire est 16k x 32bits:


o1. Indiquer le nombre de mots qu’elle peut stoker,
o2. Donner le nombre de bits par mot,
o3. Donner le nombre de cellules (bits) contenues dans la mémoire, (la
capacité),
o4. Indiquer le nombre total d’adresses différentes et le nombre de fils
nécessaires pour pouvoir les adressés.

▪Soit les deux mémoires de type ROM suivantes:

▪1. Combien peut-on former de mots de 4 bits avec la ROM1 ?


▪2. Combien peut-on former de mots de 8 bits avec la ROM2 ?
▪3. Quelle est la taille du bus d’adresse des deux types de ROM ?
ENIM F. HAMDAOUI AU: 2020/2021
Architecture interne
Von Neuman vs Harvard
21

▪Pour un microprocesseur basé sur une architecture Von Neuman, le programme


et les données sont enregistrés sur la même mémoire.

▪Une architecture simple de Von Neumann, constituée d’un seul bus pour les
données et les instructions (programme) et d’un bus d'adresses.

▪Chaque instruction contient la commande de l'opération à effectuer et l'adresse


de la donnée à utiliser, (Un bus de données unique), il faut donc souvent
plusieurs cycles d'horloge pour exécuter une instruction

Pose certains problèmes lorsque nous voulons faire fonctionner l'ensemble


rapidement

ENIM F. HAMDAOUI AU: 2020/2021


Architecture interne
Von Neuman vs Harvard (2)
22

▪Dans l'architecture dite de Harvard (car mise au point dans cette université
américaine en 1930), la mémoire de programme et la mémoire des données ont été
séparées systématiquement : l'adressage de ces mémoires est indépendant.

▪Une architecture simple de Harvard est constituée d’un bus de données, d’un bus
de programme et de deux bus d'adresse.

▪Ceci permet d’augmenter la vitesse d’exécution des programmes

L’architecture Harvard est utilisée dans des microprocesseurs spécialisés pour


des applications temps réels, comme les PIC de Microchip.

ENIM F. HAMDAOUI AU: 2020/2021


Architecture interne
CISC vs RISC
23

▪La majorité des microprocesseurs ont une architecture CISC (Complex Instruction
Set Computer, ce qui signifie "ordinateur avec jeu d'instructions complexes"

▪C'est dans les années 80 que la notion de RISC (Reduced Instruction Set
Computer), qui signifie "ordinateur à jeu d'instructions réduit" est apparue. Elle
consiste à minimiser le nombre d'instructions et à les simplifier !

RISC CISC
Peu d’instructions (~100) Beaucoup d’instructions (~1000)
Instructions rapides: 1 instruction = 1 cycle Des instructions parfois lentes ( > 1 cycle )
Instructions toutes codées sur 4 octets Instructions codées sur 1 à 15 octets
Processeurs moins chers Processeurs plus chers

La technologie CISC domine le marché des ordinateurs de bureau et des


ordinateurs portables. La technologie RISC domine le marché des
microprocesseurs embarqués.
ENIM F. HAMDAOUI AU: 2020/2021
Les µcontrôleurs
24

Un pic, c’est quoi !!

Un PIC (Programmable Integrated Circuit) est un


microcontrôleur de chez Microchip.
Un microcontrôleur seul (à la différence du
microprocesseur) peut donc gérer une application sans
faire forcément appel à d’autres circuits associés.
Les microcontrôleurs PIC utilisent une architecture de
type Harvard comportant un circuit de type RISC.

ENIM F. HAMDAOUI AU: 2020/2021


Pourquoi choisir un PIC ?
25

▪Faible consommation et exécution rapide

▪Les prix sont les plus bas du marché

▪Dimension réduite

▪Très utilisé donc très disponible

▪Les outils de développement sont gratuits et téléchargeables sur le WEB

▪Le jeu d'instruction réduit est souple, puissant et facile à maîtriser

▪La communauté des utilisateurs des PICs est très présente sur le WEB. On
trouve sur le net quasiment tout ce dont on a besoin, tutoriaux pour
démarrer, documents plus approfondis, schémas de programmeurs avec les
logiciels qui vont avec, librairies de routines, forums de discussion . . .

ENIM F. HAMDAOUI AU: 2020/2021


16F84-04
Principales caractéristiques
26

Pour identifier un PIC, on utilise simplement son numéro :

▪16 indique un PIC Mid-Range.


▪Type de mémoire:
•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 constituent la référence (identifiant) du PIC.


▪On trouve enfin un tiret suivi de deux chiffres indiquant la fréquence
d’horloge maximale que le PIC peut recevoir.

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

ENIM F. HAMDAOUI AU: 2020/2021


16F84-04
Principales caractéristiques (2)
27

Le PIC16F84 est un microcontrôleur 8 bits qui offre un très bon rapport


qualité/prix.

▪35 instructions (RISC)


▪Instructions codées sur 14 bits

▪Données sur 8 bits

▪1 cycle machine par instruction, sauf pour les sauts (2 cycles machine)

▪Vitesse maximum 4 MHz soit une instruction en 1 µs (1 cycle machine =


4 cycles d'horloge)

▪4 sources d'interruption

▪400 cycles d'effacement/écriture pour la mémoire flash, 4.000.000 pour la


mémoire de donnée EEPROM.
ENIM F. HAMDAOUI AU: 2020/2021
Brochage et fonctions des pattes
28

Le PIC16F84 est logé dans un boîtier 18 broches:

▪Les boîtiers DIP (Dual Inline Package), est un boîtier de circuit intégré qui
connecte un circuit intégré au monde extérieur.

▪Les “petits” circuits intégrés de type CMS (composant monté en surface) sont
généralement dans des boîtiers SOIC (Small Outline Integrated Circuit).

ENIM F. HAMDAOUI AU: 2020/2021


Brochage et fonctions des pattes
29
(2)
Le PIC16F84 est logé dans un boîtier 18 broches:

– 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

ENIM F. HAMDAOUI AU: 2020/2021


Architecture interne
30

ENIM F. HAMDAOUI AU: 2020/2021


Mémoire programme
31

La mémoire programme est constituée de 1K mots (1024 instructions possible) de


14 bits.
Elle est non volatile et reprogrammable à souhait.
▪À la mise sous tension ou suite à un RESET, le
PIC commence l'exécution à partir de la case
située à l'adresse 0000H. ➔ Vecteur RESET.
▪Lorsqu'il y a une interruption, le PIC va à
l'adresse 0004H. ➔ Vecteur d’INTERRUPTION.
Une instruction est l’opération élémentaire qu’un
programme demande à un processeur d’effectuer. Elle
est écrite en assembleur par une abréviation appelée
mnémonique, traduite par la suite en code binaire
appelé opcode.

ENIM F. HAMDAOUI AU: 2019/2020


Mémoire programme (2)
32

▪Le µcontrôleur exécute une à une les instructions stockées dans la mémoire.

▪Un registre interne PC "Program Counter" ou


"compteur de programme" se charge de pointer
chaque case mémoire une à une.

Durant l’exécution d’une instruction, le PC


pointe l’instruction suivante.

Le PC est de 13 bits permettant ainsi


d’adresser 8k.

▪Lors des appelles imbriquées ou des sous-


programme, l’adresse de retour est stockée dans
la pile qui utilise un pointer SP "Stack Pointer"
ou pointeur de pile.

ENIM F. HAMDAOUI AU: 2019/2020


Mémoire de données
33

La mémoire RAM est celle utilisée pour le stockage


des données temporaires nécessaires pour l’exécution
d’un programme.
Lors d’une coupure de courant, Toutes les données
stockées dans la mémoire RAM seront perdues.

La mémoire RAM est divisée en 2 banks: bank0 et


bank1.
Chaque bank de 128 mots (octets) contient:

▪Des registres spéciaux (SFR: Registres de


Fonctions Spéciaux)

▪68 octets de cases mémoires libres pour notre


utilisation.
On ne peut accéder qu’un seul bank à la fois.

ENIM F. HAMDAOUI AU: 2019/2020


Mémoire de données (2)
34

La sélection d’un bank se fait selon l’état logique de


deux bits de contrôle; RP0 et RP1; contenus dans le
registre STATUS (@3 en mémoire RAM).
▪Si RP0=0 on accède à la mémoire en bank0

▪Si RP0=1 on accède à la mémoire en bank1

Les adresses 00 et 07 ne contiennent aucune mémoire.

Pour la mémoire utilisateur, l'utilisation des pages


(Bank) n'est pas nécessaire puisque le Bank 1 est
"mapped" avec le Bank0. Cela signifie qu'écrire une
donnée à l'adresse 0CH ou à l'adresse 8CH revient au
même.
Certains registres sont identiques dans les 2 banks.

ENIM F. HAMDAOUI AU: 2019/2020


Mémoire de données (3)
35

Les SFR (Registres internes à Fonction Spéciale) vont de 00h à0Bh en Bank0. Ils
permettent la gestion du circuit. Certains ont une fonction générale, d'autres un
fonction spécifique attachée à un périphérique donné.
Adresse bank 0 Registre Utilité
00h INDF Utilisé en adressage indirect avec FSR, il ne s’agit pas d’un registre physique
01h TMR0 Timer/Compteur 8 bits
02h PCL Poids faible du compteur programme (PC)
03h STATUS Registre d’état dont les bits sont: IRP RP1 RP0 TO PD Z DC C
04h FSR Pointeur d’adresse en adressage indirect
05h PORTA Port d’Entrée/Sortie A dont les bits sont: X X X RA4/T0CKI RA3 RA2 RA1 RA0
06h PORTB Port d’entrée/Sortie B dont les bits sont: RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT
07 Pas utilisé
08h EEDATA Registre de données de l’Eeprom
09h EEADR Registre d’adresses de l’Eeprom
0Ah PCLATCH 5 bits de poids fort du compteur programme
0Bh INTCON Registre des interruptions dont les bits sont: GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

ENIM F. HAMDAOUI AU: 2019/2020


Mémoire de données (4)
36

Ils vont de 80h à 8Bh en Bank1.

Adresse bank 1 Registre Utilité


80h (00h) INDF Utilisé en adressage indirect avec FSR, il ne s’agit pas d’un registre physique
81h OPTION_REG Registre d’options, bits: RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
82h (02h) PCL Poids faible du compteur programme (PC)
83h (03h) STATUS Registre d’état dont les bits sont: IRP RP1 RP0 TO PD Z DC C
84h (04h) FSR Pointeur d’adresse en adressage indirect
85h TRISA Registre de direction du Port A (1 Entrée; 0 Sortie)
86h TRISB Registre de direction du Port B (1 Entrée; 0 Sortie)
87h (07) Pas utilisé
88h EECON1 Registre de contrôle n°1 de l’Eeprom: x x x EEIF WRERR WREN WR RD
89h EEADR Registre de contrôle n°2 de l’Eeprom (il ne s’agit pas d’un registre physique)
8Ah (0A) PCLATCH 5 bits de poids fort du compteur programme
8Bh (0B) INTCON Registre des interruptions dont les bits sont: GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

ENIM F. HAMDAOUI AU: 2019/2020


ALU
37

Le 16F84 dispose d’un ALU 8 Bits qui réalise les opérations arithmétiques et
logiques entre l'accumulateur W et n'importe quel autre registre ‘f' ou constante K.

Z DC C

▪Le registre STATUS retourne les indicateurs de retenu et de zéro.


•C (Carry) : ce bit Il passe à "1" lorsque le résultat d'une opération dépasse la
valeur FF ou si le résultat est négatif.
•Z (Zero) : Ce bit passe à "1", pour indiquer que le résultat de l'opération est nul.

▪Le registre W reçoit automatiquement le résultat de toute opération par l’ALU.

▪L’ALU mémorise le résultat de toute opération dans le work register (W).


ENIM F. HAMDAOUI AU: 2019/2020
L’Horloge
38

L’horloge peut être soit interne soit externe.


L'horloge interne est constituée d'un oscillateur à quartz ou d'un oscillateur RC.
Le PIC16F84 peut fonctionner dans 4 configurations d’oscillateurs différents :
▪LP (Low Power) : Avec une fréquence max de 200 KHz, il permet de réduire
la consommation du microcontrôleur.
▪XT: C'est le mode d'utilisation le plus utilisé. Sa fréquence de travail peut
aller jusqu'à 4 MHZ max.
▪HS (High Speed): C'est un mode de configuration pour l'utilisation de
fréquence très haute ( jusqu'à 10 MHZ).
▪RC: Dans ce mode, c'est un réseau RC qui réalise l’oscillateur.
Il est tout à fait possible d'utiliser un oscillateur externe. Dans ce cas, la liaison se
fait sur l'entrée CLKIN.

ENIM F. HAMDAOUI AU: 2019/2020


L’Horloge (2)
39

Quelque soit l'oscillateur utilisé, l’horloge instruction est obtenue en divisant la


fréquence par 4.
Une instruction est exécutée en deux phases: phase de recherche de l’instruction et
une phase d’exécution de l’instruction.

On pourrait donc croire qu’un cycle instruction dure 8 cycles d’horloge mais
l’architecture particulière du PIC lui permet de réduire ce temps par deux.

ENIM F. HAMDAOUI AU: 2019/2020


Le jeu d’instructions
40

▪Une instruction s’écrit de cette forme:


❖Mnémonique Opérande

▪Pour simplifier, les instructions vont être classées en quatre types:


•Les instructions orientées registre (octet): ce sont les instructions qui
manipulent les données contenues dans un registre de la mémoire RAM
(f) définies sur 8 bits (octet).
•Les instructions orientées bit: Ce sont des instructions destinées à
manipuler directement des bits d’un registre particulier.
•Les instructions générales: Ce sont les instructions qui manipulent des
données qui sont codées dans l’instruction directement.
•Les instructions orientées données (immédiat): Ce sont les instructions
qui effectuent des opérations arithmétiques et logiques manipulant des
données avec le contenu de registre w.

ENIM F. HAMDAOUI AU: 2019/2020


Détails des instructions
41

Les instructions générales


❖Les instructions de sauts et d’appels de sous-routines:
➢call L: (2 cycles)
▪Cette opération effectue un saut inconditionnel vers un
sous-programme de label L.
▪Le point de départ est mémorisé automatiquement et après
exécution du sous-programme, le programme continue
depuis l’endroit où il était arrivé.

•Syntaxe: call etiquette :appel du sous programme à l’@ etiquette


▪Principe de fonctionnement: L’@ de l’instruction qui suit l’instruction call est
sauvegardée sur le sommet d’une pile (Stack Pointer: SP). Lorsque le sous-
programme est terminée, l’@ sauvegardée est retirée de la pile et placée dans le PC
(Program counter). Le programme poursuit alors depuis l’endroit d’où il était parti.
▪Notez que si le sous-programme appelle lui-même un autre sous programme,
l’adresse sera également sauvée au dessus de la pile.
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (2)
42

➢goto L: (aller à) ( 2 cyles)


▪Cette instruction effectue un saut dans le programme pour aller à l’adresse pointé
par l’etiquette précisé dans goto.
•Syntaxe: goto etiquette
▪Principe de fonctionnement: L’adresse de saut est chargée dans le PC et la suite du
programme s’effectue à la nouvelle adresse du PC.
•Exemple:
début
goto plus-loin ;le programme saute à l’instruction de l’@ du sous-
xxxxxxxx ;programme plus-loin
xxxxxxxx
xxxxxxxx

plus-loin
xxxxxxxx ;instruction exécutée après le saut: exécution du
;sous-programme plus loin.
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (8)
43

❖Les instructions de retour:


➢return (return from subroutine) ( 2 cycles)
▪Cette instruction permet le retour de sous-programme. Elle est toujours utilisée
avec la commande call
•Syntaxe: return ;fin de la routine. Le PC se charge depuis le SP pour poursuivre
;le programme à l’@ qui suit la ligne de call
•Exemple:
;programme principal
call tempo ;appel de sous-programme tempo
xxx
xxx

;sous-programme tempo
tempo ;le sous-programme tempo
xxx ;commence ici
xxx
return ;retour au programme principal
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (9)
44

➢retfie (return from interrupt) ( 2 cycles)


▪Cette instruction permet le retour au programme principal après exécution d’un
sous-programme d’interruption.

•Syntaxe: retfie ;retour d’une interruption

➢retlw k (return with literal in w) ( 2 cycles)


▪Cette instruction permet le retour au programme principal, exactement comme
return, mais avec une valeur spécifiée dans w.

•Syntaxe: retlw k ;return avec mise de la valeur k dans (w)


ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (15)
45

❖Les instructions de retard et de pause:

➢nop -: (No Operation) ( 1 cycle)


▪C’est la seule instruction qui ne réalise aucune opération.
•Syntaxe: nop ;

➢sleep (mise en sommeil) ( 1 cycle)


▪C’est une instruction qui met le µcontrôleur en mode sommeil.
•Syntaxe: sleep ; arrêt du PIC

ENIM F. HAMDAOUI AU: 2019/2020


Détails des instructions (3)
46

Les instructions orientées bit:


❖Les instructions de mise à 1 ou 0:
➢bcf f,b: (bit clear f) (1 cycle)
▪C’est une instruction qui permet tout simplement de forcer directement un bit
d’un emplacement mémoire à 0

•Syntaxe: bcf f,b :le bit n° b est mis à 0 dans la case mémoire (f)

▪b est représenté sur 3 bit, donc compris entre 0 et 7.

•Exemple:
bcf TRISA, 3 ;Configuration de la 3éme broche du port A en sortie

➢bsf f,b: (bit clear f) (1 cycle)


▪C’est une instruction qui permet tout simplement de forcer directement un bit
d’un emplacement mémoire à 1

ENIM F. HAMDAOUI AU: 2019/2020


Détails des instructions (4)
47

❖Les instructions de test:


➢btfsc f,b: (bit test f skip if clear) ( 1(2) cycles)
▪C’est une instruction qui permet de faire un test du bit indiqué (0 à 7) du registre
spécifié d’@ f et de sauter la prochaine instruction si la valeur du bit vaut ‘0’
•Syntaxe: btfsc f, b ;On teste le bit b du contenu (f), si ce bit vaut
;0, on saute l’instruction suivante.
▪Cette instruction est utilisée pour effectuer des branchements conditionnels, on
oriente le programme selon la valeur du bit testé.
•Exemple:
btfsc STATUS, C ;tester si le bit C (carry) du registre STATUS vaut 0.

➢btfss f,b: (bit test f, skip if set) ( 1(2) cycles)


▪C’est une instruction qui permet de faire un test du bit indiqué (0 à 7) du registre
spécifié d’@ f et de sauter la prochaine instruction si la valeur du bit vaut ‘1’

ENIM F. HAMDAOUI AU: 2019/2020


Détails des instructions (5)
48

Les instructions orientées données (immédiat):


❖Les instructions de calcul arithmétique:
➢addlw k: (add literal and w) ( 1 cycle)
▪C’est une instruction qui permet l’addition du contenu de w avec une valeur
immédiate, le résultat est stocké dans w.
•Syntaxe: addlw k ;(w) + k → (w) ▪registres affectés: Z, C et DC.
•Exemple:
addlw 06 ;on additionne le contenu de w avec 6
;donc w=w + 6
➢sublw k (subtract w from literal) ( 1 cycle)
▪Cette instruction permet de soustraire w de la valeur littérale, et pas l’inverse
•Syntaxe: sublw k ;k – (w) → (w) ▪registres affectés: Z, C et DC.
•Exemple:
movlw 0x01 ;charger 0x01 dans w
sublw 0x02 ;soustraire w de 2, résultat: 2 – (w) = 2 – 1 = 1
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (6)
49

❖Les instructions de calcul logique:


➢andlw k: (and literal with w) ( 1 cycle)
▪C’est une instruction qui permet d’effectuer un ‘et logique’ bit à bit entre le
contenu de w et la valeur immédiate (opérande), le résultat est stocké dans w.
•Syntaxe: andlw k ; avec k = octet : (w) & k → (w) ▪registre affecté Z.

•Exemple:
andlw B’11110000’ ;effectuer un ‘and’
➢iorlw k: (inclusive or literal with w) ( 1 cycle)
▪C’est une instruction qui permet d’effectuer un ‘ou logique’ bit à bit entre le
contenu de w et la valeur immédiate (opérande), le résultat est stocké dans w.
•Syntaxe: iorlw k ; (w) or k → (w) ▪registre affecté Z.
•Exemple:
movlw 0xC3 ;charger 0xC3 = 11000011
iorlw 0x0F ;forcer les bits 0 à 1, résultat (w) = 0xCF
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (7)
50

➢xorlw k: (exclusive or literal with w) ( 1 cycle)


▪C’est une instruction qui permet d’effectuer un ‘xor logique’ bit à bit entre le
contenu de w et la valeur immédiate (opérande), le résultat est stocké dans w.
•Syntaxe: xorlw k ; (w) xor k → (w) ▪registre affecté Z.
•Exemple:
movlw B’11000101’ ; charger W
xorlw B’00001111’ ; xor avec la valeur et résultat : B ‘11001010’

❖Les instructions opérant sur le registre work (w):


➢movlw k (move literal to w) ( 1 cycle)
▪Elle charge une valeur immédiate dans w, l’ancien contenu sera écrasé.
•Syntaxe: movlw k ;k représente une valeur de 0x00 à 0xFF

ENIM F. HAMDAOUI AU: 2019/2020


Détails des instructions (10)
51

Les instructions orientées registre (octet):


❖Les instructions opérant sur le registre work (w):
➢movf f, d: (move file) ( 1 cycle)
▪C’est une instruction qui permet de recopier le contenu de f soit dans w soit dans
lui-même.
▪registres affectés: Z,
•Syntaxe: movf f, d ;(f) → (d)? Z=0 si f=0, si non Z=1.
•Exemple:
movf x, w ;mettre dans w le contenu de la variable x
movlw x ;mettre dans w la valeur x
➢movwf f: (move w to file) ( 1 cycle)
▪C’est une instruction qui permet de recopier le contenu de w dans f.
▪registre affecté Z
•Syntaxe: movwf f ; (w) → (f)
(Z=1 si f=0).
•Exemple 1:
movlw 0x50 ;charger 0x50 dans w
movwf var ;la variable var contient maintenant 0x50
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (5)
52

❖Les instructions de mise à zéro:


➢clrwdt (clear watchdog timer) ( 1 cycle)
▪Cette instruction permet de remettre à 0 le chien de garde (watchdog).
•Syntaxe: clrwdt ;remet le timer du watchdog à 0

➢clrw (clear w) ( 1 cycle)


▪C’est une instruction qui permet d’effacer le contenu du registre w.
•Syntaxe: clear ;(w) = 0 ▪registres affectés: Z = 1
•Exemple:
clrw x ;remise à zéro du registre w.
➢clrf f (clear f) ( 1 cycle)
▪C’est une instruction qui permet d’effacer le contenu du registre f (emplacement
mémoire spécifié).
•Syntaxe: clear f ;(f) = 0 ▪registres affectés: Z = 1
•Exemple:
clrf var ;contenu de var = 0.
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (6)
53

❖Les instructions de calcul logique:


➢andwf f, d: (and w and f) ( 1 cycle)
▪C’est une instruction qui permet de faire un « et logique » bit à bit entre les
contenus de w et f. Selon d, le résultat sera: soit dans w (d=0), soit dans f (d=1).
•Syntaxe: andw f, d ; (f) and (w) → (d)? ▪registre affecté Z.
•Exemple:
movlw 0xC8 ;charger 0xC8
movwf var ;sauver dans var
movlw 0xF0 ;charger 0xF0
andwf var, f ;var = 0xC0
➢iorwf f, d: (inclusive or w with f) ( 1 cycle)
▪C’est une instruction qui permet d’effectuer un ‘ior’ bit à bit entre les contenus de
w et f. Le résultat sera stocké soit dans w (d=0) ou f (d=1).
•Syntaxe: iorwf f, d ; (w) or (f) → (d) ▪registre affecté Z.
•Exemple:
iorwf 29, 1 ;effectue le ou inclusive entre le contenu de w et celui se
;trouvant à l’adresse 29, le résultat sera stocké dans f.
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (13)
54

➢xorwf f, d: (exclusive or w with f) ( 1 cycle)


▪C’est une instruction qui permet d’effectuer un ‘ou exclusive’ bit à bit entre les
contenus de w et f. Le résultat sera stocké soit dans w (d=0) ou f (d=1).
•Syntaxe: xorwf f, d ; (w) exclusive or (f) → (d) ▪registre affecté Z.

•Exemple:
xorwf var, 0 ;xor entre le contenu de w et le contenu de var, le résultat
;sera stocké dans w.
➢swapf f, d: (swapf nibbles in f) ( 1 cycle)
▪Inversion de quartet (demi-octet) de poids faible avec celui de poids fort.
•Syntaxe: swapf f, d ; inversion des bo/b3 de (f) avec b4/b7 → (d)
•Exemple:
movlw 0xC5 ; mettre 0xC5 dans w
movwf var ; var  0xC5
swapf var, f ;(var)  0x5C

ENIM F. HAMDAOUI AU: 2019/2020


Détails des instructions (11)
55

❖Les instructions d’incrémentation et de décrémentation:


➢incf f, d: (increment f) ( 1 cycle)
▪C’est une instruction qui permet l’incrémentation du contenu du registre f.
•Syntaxe: incf f, d ;(f) + 1 → (d)? ▪registres affectés: Z.
•Exemple:
incf var, f ;le contenu de f est incrémenté de 1 et est enregistré dans f
incf var, w ;le contenu de var est chargé dans w et est incrémenté de 1,
;var n’est pas modifié.
➢decf f,d: (add w and f) ( 1 cycle)
▪C’est une instruction qui permet de décrémenter le contenu du registre f.
•Syntaxe: decf f, d ;(f) - 1 → (d)?
•Exemple:
decf var, f ;décrémente var, résultat dans var
decf var, w ;mise de contenu de var dans w, avec (var)  (var)
;– 1 placement de la valeur dans w.
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (11)
56

❖Les instructions d’incrémentation et de décrémentation avec test:


➢incfsz f, d: (increment f, skip if Z) ( 1(2) cycle)
▪C’est une instruction qui permet de créer des boucles. Elle incrémente le contenu
de f et saute l’instruction suivante si l’incrémentation donne une valeur nulle.
•Syntaxe: incfsz f, d ;(f) + 1 → (d): saut si (d) = 0.
•Exemple:
incfsz var, 0 ;incrémentation du contenu de var et résultat dans d
; Saut de l’instruction suivante si var = 0.

➢decfsz f,d: (decrement f, skip if Z) ( 1(2) cycle)


▪Même exécution que pour incfsz.
•Syntaxe: decfsz f, d ;(f) - 1 → (d): saut si (d) = 0.
•Exemple:
decfsz var, 0 ; décrémentation du var et mise dans w
goto $-1 ;si var = 0, revient à la décrémentation
return ;si var <> 0, donc quitter
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (12)
57

❖Les instructions de calcul arithmétique:


➢addwf f,d: (add w and f) ( 1 cycle)
▪C’est une instruction qui permet l’addition des contenus de w et de f.
•Syntaxe: addwf f, d ;(w) + (f) → (d)? ▪registres affectés: C, DC et Z.
•Exemple:
movlw 12 ;charger 12 dans w
movwf var ;var  12
movlw 25 ;charger 25 dans w
addwf var ;résultat: (w) + (var), ➔ 25 + 12 = 37 dans var.
➢comf f, d: (complement f) ( 1 cycle)
▪C’est une instruction qui permet d’effectuer le complément à 1 du contenu de f.
Càd inversion des bits de l’octet désigné.
▪registres affecté: Z.
•Syntaxe: comf f, d ;not (f) → (d)
•Exemple:
movlw B’11001010’ ; Mettre dans w la valeur ‘11001010’
movwf var ; mettre dans var la valeur ‘11001010’
comf var, w ; w = complément (var) = ’00110101’
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (17)
58

➢subwf f, d: (substract w from f) ( 1 cycle)


▪Cette instruction permet d’effectuer une soustraction entre les contenus de w et f.
Le résultat sera stocké dans f (si d=1) ou w (si d=0).
•Syntaxe: subwf f, d ; (f) – (w) → (d)? ▪registre affecté C, DC, Z.
•Exemple:
subwf var,0 ; w  var – (w)
➢rrf f, d: (rotate right through carry) ( 1 cycle)
▪Déplacement d’une position vers la droite des bits de l’octet (situé dans f) en
utilisant le bit de CARRY du registre STATUS.
•Syntaxe: rrf f, d ; (f) rotation droite avec carry → (d) ▪registre affecté C.
•Exemple:
bcf STATUS,C ; Mettre le bit C à 0
movlw b’00010111’ ; charge la valeur dans w
movwf var ; var  00010111
rrf var, f ; rotation vers la droite [Rés = 00001011],
;avec C=1. Initialement C=0.
ENIM F. HAMDAOUI AU: 2019/2020
Détails des instructions (18)
59

➢rlf f, d: (rotate left through carry) ( 1 cycle)


▪Déplacement d’une position vers la gauche des bits de l’octet (situé dans f) en
utilisant le bit de CARRY du registre STATUS.
•Syntaxe: rlf f, d ; (f) rotation gauche avec carry → (d) ▪registre affecté C.
•Exemple:
bcf STATUS,C ; Mettre le bit C à 0
movlw b’00010111’ ; charge la valeur dans w
movwf var ; var  00010111
rlf var, f ; rotation vers la gauche [Rés = 00101110]

ENIM F. HAMDAOUI AU: 2019/2020


Mode d’adressage
60

Le 16F84 utilise 3 modes d’adressages:


▪Adressage littéral ou immédiat:
•Exemple: movlw 0x55 ;charger la valeur 0x55 dans w
▪Adressage direct:
•Exemple: movf 0x10 , w ;charger le contenu de l’emplacement 0x10
;dans w (supposant que l’emplacement
;0x10 contient déjà la valeur 0x55).
▪Adressage indirect:
•Cet adressage fait appel a 2 registres.

❖Exemple
movlw 0x50 ; w  50
movwf var ; var  50

ENIM F. HAMDAOUI AU: 2019/2020


Les interruptions
61

❖Les sources d’interruptions d’un 16F84:

Le 16F84 ne dispose que de 4 sources d’interruptions:

▪TMR0: Débordement du timer0 (tmr0). Une fois que le contenue du tmr0 passe
de 0xFF à 0x00, une interruption peut être générée.

▪EEPROM: Cette interruption peut être générée lorsque l’écriture dans une case
EEPROM interne est terminée.

▪RA0/INT: Une interruption peut être générée lorsque, le pin RA0, encore
appelée INTerrupt Pin, étant configurée en entrée, le niveau qui est appliqué est
modifié.

▪PORTB4/7: De la même manière, une interruption peut être générée lors du


changement d’un niveau sur une des pin RB4 à RB7.

ENIM F. HAMDAOUI AU: 2019/2020


Forme générale d’un PIC
62

include p16f84.inc ;bibliothèque des instructions pour les PIC


__config b’11111111110001’ ;configuration du PIC
Cblock
❖__config 0x0C
b’11111111110001’ ;déclaration des variables à partir de l’@ 0x0C
var : 1
•Bit0 et bit1: fixe le type d’oscillateur:
var1 : 2
EndC–11 ➔ horloge avec un;fin de laRC
circuit déclaration
org
–01h’00’
➔ horloge à quartz;début(4 Mhzdeenprogramme
général) (non obligatoire)
goto début
•Bit2: Le chien de garde est activé lorsqu’il est à ‘1’
•Bit3 : Le initialisations
tempo à l’allumage du PIC est utilisé lorsqu’il est à ‘0’. Ce tempo est
utile pour sous – programmes
permettre à l’oscillateur de se stabiliser.
•Bit4 à bit 13: Lorsqu’ils sont tous à ‘1’, le programme n’est pas protégé, on peut
début
toujours le récupérer du PIC. Dans le cas contraire, on ne peut pas lire le
programme contenu dans
programme le PIC, on peut juste l’exécuter.
principal

end

ENIM F. HAMDAOUI AU: 2019/2020


Exemples
63

❖Exemple 1: Temporisation

ENIM F. HAMDAOUI AU: 2019/2020


Exemples
64

❖Exemple 1: Temporisation

ENIM F. HAMDAOUI AU: 2019/2020

Vous aimerez peut-être aussi