Vous êtes sur la page 1sur 83

UNIVERSITE LARBI BEN M’HIDI DE OUM EL BOUAGHI

FACULTE DES SCIENCES ET TECHNOLOGIE

DEPARTEMENT SCIENCES ET TECHNOLOGIE

FILIERE DE GENIE ELECTRIQUE

MEMOIRE DE FIN D’ETUDES

En vue de l’obtention du DIPLOME DE MASTER Informatique Industrielle

Etude sur les microcontroleurs PIC16Fxx&le

SAB80c535application implementation d'un regulateur

PI sous le PIC16F877

Mémoire de fin d’études soutenu publiquement à Oum El Bouaghi

reali e par : AN Encadré par : dr belhania

2009/2010
Tables des matières

Table des matières

INTRODUCTION GENERALE
LES MICROCONTROLEURS ....................................................................... 2
I. Introduction ......................................................................................................................................... 2
II. Système Embarqué ............................................................................................................................... 3
II.1 Système sur une seule puce (System-on-chip Soc)............................................................................... 3
II.1.1 Élément de traitement......................................................................................................................... 4
II.1.2 Circuit d’E/S ......................................................................................................................................... 4
II.1.3 Circuit mémoire ................................................................................................................................... 4
II.1.4 Structure d’interconnexion .................................................................................................................. 4
II.2 Système embarqué .............................................................................................................................. 5
II.2.1 Idée de base......................................................................................................................................... 5
II.2.2 Définition ............................................................................................................................................. 5
II.2.3 Domaine d’utilisation .......................................................................................................................... 5
II.2.4. Caractéristiques des systèmes embarqués .......................................................................................... 6
III. Les microcontrôleurs ........................................................................................................................... 6
III.1 Les éléments d’un microcontrôleur ..................................................................................................... 9
III.2 Architecture de Von Neumann et de Harvard ........................................................................... 12
III.2.1 L'architecture Von Neumann......................................................................................................... 12
III.2.2 L'architecture Harvard : ..................................................................................................................... 12
III.3 Architecture RISC et CISC ................................................................................................................... 13
III.3.1 L'architecture CISC ............................................................................................................................. 13
III.3.2 L'architecture RISC ............................................................................................................................. 13
IV. Quelque Familles De Constructeur De Microcontrôleur ................................................................... 13
V. Conclusion ......................................................................................................................................... 14

LE MICROCONTROLEUR PIC .................................................................. 15


I. Introduction ....................................................................................................................................... 15
II. Généralités Sur Les Pic ....................................................................................................................... 15
II.1 Les familles ........................................................................................................................................ 15
II.2 Nomenclature ........................................................................................................................................... 15
III. Le PIC 16F84 ...................................................................................................................................... 16
III.1 Architecture externe .......................................................................................................................... 16
III.2 Architecture Interne .......................................................................................................................... 18
III.2.1 Caractéristiques générales: ............................................................................................................... 18

iii
Tables des matières

III.2.2 Les Registres de fonctions spéciales: SFR .............................................................................................. 19


III.3 Les modes d'adressage ............................................................................................................................ 25
III.4 Le jeu d’instruction [4][2] ......................................................................................................................... 26
III.5 Les Interruptions ....................................................................................................................................... 27
III.5.1. Mécanisme général d’une interruption .............................................................................................. 27
III.5.2 Les sources d’interruptions du 16F84: ................................................................................................ 28
III.6 Le TIMER0 ............................................................................................................................................... 30
III.6.1 Les méthodes d’utilisation du timer0.................................................................................................... 30
III.6.2. Le prédiviseur ........................................................................................................................................ 31
III.7 Les accès en mémoire EEPROM Interne:[4] ............................................................................................. 32
III.8 Le watch dog[4] ...................................................................................................................................... 35
III.9 Le mode SLEEP.[4] ................................................................................................................................... 35
III.9.1 La sortie du mode « SLEEP » ................................................................................................................ 35
III.9.2 Mise en sommeil impossible ................................................................................................................ 36
IV. Programmation d’un PIC avec le logiciel MPLAB............................................................................... 36
IV.1 MPLAB .................................................................................................................................................... 36
IV.2 Le programmateur ............................................................................................................................ 37
 La procédure de programmation :..................................................................................................... 37
IV.4 Le Premier Programme Avec MPLAB ................................................................................................ 37
Conclusion ....................................................................................................................................................... 38

LE PSD1_SAB80C535 ...................................................................... 39
FIGURE III.1 MODULE PSD1 AVEC CONTROLEUR SIEMENS 80C535 .......... 39
II.1 L’unité PSD1:...................................................................................................................................... 39
II.1 Le moniteur cible ............................................................................................................................... 41
III. Le Microcontrôleur SAB 80C535 ........................................................................................................ 42
III.1 Classification de la famille 8051 ........................................................................................................ 42
III.1 Architecture du Microcontrôleur SAB80C535[] ................................................................................ 44
III.2.1 Architecture externe .......................................................................................................................... 44
III.2.2 Architecture interne........................................................................................................................... 47
III.2.3 Les modes d’adressages: ................................................................................................................... 54
III.2.4 Les Interruptions ................................................................................................................................ 63
III.2.5 Les Timers .......................................................................................................................................... 64
III.2.6 Le mode sleep: Power-Down Mode ................................................................................................... 64
III.2.7 Le jeu d’instruction ............................................................................................................................ 54
IV. Programmation avec IDE ................................................................................................................... 64
IV.1 Le premier programme avec l'IDE..................................................................................................... 65

iv
Tables des matières

V. Application........................................................................................ .ّ

 ‫! ارة ا‬
VI. Conclusion: ........................................................................................................................................ 68

IMPLEMENTATION D’UN PID SOUS PIC 16F877 ...................................... 69


I. Introduction ....................................................................................................................................... 69
Schéma de commande .................................................................................................................................... 69
II.1 Le microcontrôleur ............................................................................................................................ 69
II.2 Le CNA ............................................................................................................................................... 70
II.3 Circuit RC ........................................................................................................................................... 72
Spécifications désirées ..................................................................................................................................... 73
Organigramme de commande ........................................................................................................................ 74
Schéma de câblage .......................................................................................................................................... 75
V.1 CNA .................................................................................................................................................... 75
V.2 Schéma global ................................................................................................................................... 75
Résultats de simulation ................................................................................................................................... 75
Conclusion ....................................................................................................................................................... 76

v
Introduction générale

Introduction générale

Nés en 1981 avec le microcontrôleur 8048 d’INTEL et le HC05 de MOTOROLA. Les


microcontrôleurs, les composants miracles qui imposent leurs présences dans l'industrie grâce à
leurs performances spéciales.

Aujourd'hui ils sont présents dans la plupart des produits électroniques . Du fait
l'obtention des compétences de programmation de ces composants devienne un besoin impératif
surtout pour les spécialistes du domaines électroniciens et informaticiens.

Le but primordiales de ce travail est de donné des connaissance de base pour une bonne
compréhension de l'architecture et la programmation de ces composants, en insistant d'avantage
sur deux types qui sont disponible dans notre laboratoire de microcontrôleurs: Le premier est de
la famille PIC : le 16F84A-x l'un des microcontrôleur de base de cette famille, et l'autre est le
80C535 avec l' MCLS Modular: le système didacticiel pour l'apprentissage des techniques de
programmation des microprocesseurs et microcontrôleurs.

Ce travail se devise en quatre chapitres


 Le premier chapitre :Microcontrôleurs:
Présente une vue générale sur les système embarqués et son cœur le
Microcontrôleur
 Le deuxième chapitre : le microcontrôleur PIC l'un des meilleurs des
microcontrôleur au débutant.
 Le troisième chapitre le microcontrôleur 80C535

Ces deux chapitres(2et3) présentant une étude peu détaillée; partant de


l'architecture interne et l'externe , les registres principaux avec leur fonctionnement;
jeu d'instruction; venant à la fin à une brève présentation du logiciel de programmation
ou l'outil de simulation utilisé; ainsi la méthode d' implémentation du programme dans
le Microcontrôleur
 Le Quatrième Chapitre: présente l'application

1
Chapitre I Les microcontrôleurs

Chapitre I

Les microcontrôleurs

I. Introduction

L'évolution des systèmes électroniques amène de plus en plus les concepteurs à


remplacer l'électronique câblée à base de nombreux circuits intégrés par un circuit
programmable qui rempli à lui seul toutes les fonctions.

Cette évolution est due à la capacité d’intégration des transistors dans une puce, la
figure (I.1) montre l’évolution de l’intégration développée par Intel.

Figure I.1. l’évolution de l’intégration développée par Intel

Selon le nombre de transistors intégrés on distingue plusieurs type de circuits, il


s’agit de :

a) SSI (Smal-Scale-Integration) : plus de 100 transistors par puce, il s’agit de


portes logiques

b) MSSI (Medium-Scale-Integration) : entre 100 et 3000 transistors par puce, il


s’agit de bascules et de compteurs

2
Chapitre I Les microcontrôleurs

c) LSI (Large-Scale-Integration) : entre 3000 et 100.000 transistors par puce, il


s’agit de circuits d’interfaces 5mux,….)

d) VLSI (Very Large-Scale-Integration) : entre 100.000 et 1000.000 transistors


par puce, il s’agit de micro- processeurs et les mémoires. Dans ce cas 4 grandes
familles ont été s’émergés:

 Les micro-processeurs et les mémoires

 ASSP (Application Specific Standard Product) : ce sont des produits sur


catalogue qui sont fabriqués en grande série. La fonction réalisée est
fixée par le constructeur mais le domaine d’utilisation est spécifique à
une application (contrôleur Ethernet, encodeur MPEG-4,….)

 Les circuits programmables sur site : n’importe qu’elle fonction logique


(combinatoire ou séquentielle) avec un nombre fixe d’E/S puisse être
implantée dans ces circuits. Plusieurs variantes ont été développées
telles que le PAL, PLD, CPLD, FPGA

 ASIC (Application Specific Integration Circuit ) : le circuit est conçu


par l’utilisateur avec des outils CAO, puis il est réalisé par le fondeur

e) ULSI (Ultra Large-Scale-Integration ) : plus de 1000.000 transistors par


puce(généralement dans la littérature japonaise )

Ce développement a donné naissance aux systèmes embarqués.

II. Système Embarqué[1]

II.1 Système sur une seule puce (System-on-chip Soc)

Un Soc contient un élément de traitement, une unité d’entrée /sortie, un élément de


mémorisation et une structure d’interconnexion pour lier l’ensemble.

3
Chapitre I Les microcontrôleurs

II.1.1 Élément de traitement

Cet élément peut être un micro-processeur ou un processeur de traitement du signal


(DSP : Digital Signal Processing), son rôle et l’exécution d’un programme embarqué sur
la carte.

Récemment, des efforts ont été faits par des académiques et des industriels pour le
développement des ASIP (Application Specific Instruction set Processor), qui permettent
l’extension de l’ensemble des instructions par l’utilisateur pour une applications spécifique

Dans certaine carte, multiple type de processeurs est utilisé

II.1.2 Circuit d’E/S

Pour la communication avec le monde extérieur, SOC utilise des circuits d’E/S tels
que carte Ethernet, Usb, ……

II.1.3 Circuit mémoire

Un SOC typique contient des centaines de blocs mémoires internes de type SRAM,
ROM, OTP (One-Time Programmable)

Lorsque le bloc mémoire est très large et il ne peut pas être fabrique sur la puce, on
utilise la notion de System-in-package (SIC). Il s’agit de mettre le bloc mémoire sur une
puce différente (Off-chip) et de l’intégré avec SOC, on utilise généralement DRAM,
SDRAM et DDRII.

Le SOC contient des contrôleurs mémoire pour SDRAM, DDR, SD card , MMC
card….

II.1.4 Structure d’interconnexion

Comparativement au micro ordinateur qui utilise des bus pour la communication


entre les différents circuits, un SOC utilise la notion de la communication sur puce (On-
Chip-Communication) ou bus sur puce (On-Chip-Bus) pour permettre le dialogue entre les
différents circuits qui constituent le SOC. L’architecture la plus standard est dite Advanced

4
Chapitre I Les microcontrôleurs

Microprocessor Bus Architecture (AMBA) . Il existe aussi la notion de Réseau sure puce
(Network-On-Chip : NoC) pour la communication pour éviter les problèmes engendrés par
la croissance exponentielle du trafic.

II.2 Système embarqué[1]

II.2.1 Idée de base

Prendre un système qui nécessite un contrôle et incorporer avec lui un calculateur


pour prendre en charge la tâche de contrôle on a un système embarqué

II.2.2 Définition

Un système qui sa fonction principale n’est une fonction de calcul, mais il est
contrôlé par un calculateur embarqué avec lui est appelé système embarqué.

II.2.3 Domaine d’utilisation

Les systèmes embarqués se trouvent partout, on catégoriser l’utilisation comme


suit :

L’Électronique consommateur : Cameras digitales, télévisions, téléphones


cellulaires (portables), caméscops

Domicile : four micro-ondes, machines à laver, thermostats, jouets

Bureau : systèmes d’alarme, lecteurs de carte, photocopieuses, scanners,


fax , imprimantes

Systèmes de transportation : automobiles, systèmes d’aviation, trains

Médicale : systèmes de diagnostic, systèmes d’analyse

Industrie : Robot, machine de contrôle,

5
Chapitre I Les microcontrôleurs

II.2.4. Caractéristiques des systèmes embarqués

Hardware et software

Un système embarqué typique utilise le hardware et le software

Spécification fortement étroite (contrainte)

Il s’agit d’une conception réduite en dimension, un prix bas et un fonctionnement


temps réel.

Fiabilité

Les erreurs dans un système embarqué ne sont pas tolérées, l’implémentation d’un
système embarqué avec des erreurs hard ou soft peut conduire à des dégâts matériels ou
humains

Processeurs interconnectés

Lorsque un système embarqué nécessite plusieurs processeurs ; chaque processeur


contrôle un sous-système, il est nécessaire de permettre une interconnexion de ces
processeurs pour la partage des informations (exemple : le contrôle climatisation, injection,
ABS,.. dans un véhicule)

Autorisation accès internet

Avec la croissance de l’utilisation de l’internet, le système embarqué doit avoir la


possibilité de se connecter à l’internet

III. Les microcontrôleurs

L’utilisation des microprocesseurs dans le domaine de contrôle et de commande a


connu une large diffusion, ces derniers sont utilisés dans différents domaines tels que
domestique, l’automobile, etc.… Ces microprocesseurs sont connus par leur grande vitesse
d’exécution, la capacité de bus de d’adresse qui permet un adressage d’un plan mémoire
important, cependant dans certains applications le concepteur ne cherche pas toute ces
avantage. Un autre type de processeur est lancé et il a pris une place importante dans le
domaine des systèmes embarqués, il s’agit de microcontrôleurs, qui dispose d’une

6
Chapitre I Les microcontrôleurs

architecture Soc comparativement au microprocesseur. Ils sont utilisés dans plusieurs


domaines mais généralement pour des applications qui ne nécessitent pas plusieurs
opérations. Sa large utilisation est due aux :

Ces ressources entrées/sorties

Optimisation de l’espace dû à sa taille

Protection contre les pannes par la notion de chien de garde (watchdog)

Consommation moins

Protection contre le piratage des programmes pour ne pas être utilisés pare d’autre
personne

Plusieurs types de microcontrôleurs existent et qui sont fabriqués par plusieurs


producteurs. Ces types s’articulent autour d’un noyau microprocesseur combiné avec
différents périphériques et différentes tailles mémoires, la figure (I.2) montre le diagramme
bloc d’un microcontrôleur.

Mémoire
Périphérique
power Programme

Périphérique
Mémoire
de
Données

E/S
Reset Numérique
Interruption(s) Le noyau
microprocesseur

E Analogique

données interne &


bus d'adresse Compteur
horloge
&Timers

Figure I.2. Diagramme bloc d’un microcontrôleur

7
Chapitre I Les microcontrôleurs

Chaque producteur conçu une famille de son propre microcontrôleurs autour d’un
noyau microprocesseur, plusieurs famille peuvent être conçu à l’aide de ce noyau en
combinaison avec les mémoires et les périphérique E/S. la figure (I.3) montre trois familles
de même producteur selon le microprocesseur (8bits, 16 bit, 32bits,..) la taille de mémoire
et de périphérique

Figure I.3. Famille de microcontrôleur

Memory: mémoire; Peripherals: Les périphérique; CoreP: 8bits ; Core Q:16 bits ;
Core R:. 32bits

Le choix d'une architecture est toujours le résultat d'un compromis :

 Entre performances et coûts

 Entre efficacité et facilité de construction

 Entre performances d'ensemble et facilité de programmation

8
Chapitre I Les microcontrôleurs

III.1 Les éléments d’un microcontrôleur

Selon la figure (I.2), un microcontrôleur contient généralement :

Un microprocesseur qui exécute séquentiellement les instructions stockées dans la


mémoire programme. Il est généralement constitué des éléments suivants :

Un ou plusieurs registres accumulateurs contenant temporairement les opérandes


ainsi que les résultats des opérations,

Des registres auxiliaires permettant de relayer les accumulateurs,

Des registres d’index pour le mode d’adressage indirect,

Un compteur programme pointant l’adresse de la prochaine instruction à


exécuter, sa taille est celle du bus des adresses,

Une unité arithmétique et logique (ALU) permettant d’effectuer des opérations


entre l’accumulateur et une opérande,

Un registre code condition(Etat) indiquant certaines particularités en ce qui


concerne le résultat de la dernière opération (retenu, zéro, interruption...).

Mémoires qui se divisent en:

Mémoire Programme:
Qui Contient les instructions du programme que doit exécuter le
microprocesseur. Ce type de mémoire, est uniquement accessible en lecture. Sa
programmation nécessite une procédure particulière et un matériel adéquat. Ils
existent différents types selon leur mode de programmation :

ROM dont le contenu est programmé lors de sa fabrication.

PROM programmable électriquement une seule fois par le développeur


(appelée aussi OTPROM),

EPROM programmable électriquement et effaçable aux U-V (appelée


aussi UVPROM),

9
Chapitre I Les microcontrôleurs

EEPROM programmable et effaçable électriquement.

La mémoire Flash possédant les caractéristiques d'une mémoire vive


mais dont les données ne disparaissent pas lors d'une mise hors tension.
Ainsi, la mémoire flash stocke les bits de données dans des cellules de
mémoire, mais les données sont conservées en mémoire lorsque
l'alimentation est coupée

a. Mémoire de donnée
Qui Permet de mémoriser temporairement les données générées par le
microprocesseur pendant les différentes phases du traitement numérique (résultats
d’opérations, états des capteurs...). Ces mémoires sont accessibles en écriture et en
lecture. On en trouve deux types :

De la mémoire vive (RAM) volatile (données perdues en cas de


coupure de l’alimentation) ayant un temps de lecture et écriture assez
court (quelques ns),

De la mémoire morte (EEPROM) non-volatile (données conservées


en cas de coupure de l’alimentation) ayant un temps d’écriture assez
élevé (quelques ms) par rapport au temps de lecture qui est assez faible
(quelques ms).

circuits d’entrée et de sortie;

a. Port d’Entrée/Sortie Pour l'échange des informations de commande et de


statut avec la partie opérative. Ces échanges sont arrangés par l’intermédiaire
d’une adresse de sélection

les bus de données et d’adresse:

a. Bus de Données: qui transfert les informations, instructions ou données,


entre des fonctions internes de la commande numérique

10
Chapitre I Les microcontrôleurs

b. Bus d’Adresse et Décodeur; L’adresse est un numéro d'ordre, émis par le


processeur, qui permet d’accéder à tous les périphériques. Le décodeur d’adresse
décode une partie du bus d’adresse pour activer la fonction périphérique concernée.

D’autres périphériques tels que :

Le CAN; qui est généralement du type “Approximations successives”. Il possède


plusieurs entrées multiplexées accessibles via les broches des ports de l’interface
parallèle. Le CAN possède 2 registres :

 Un registre de données contenant le résultat de la conversion,

 Un registre de contrôle permettant de lancer et de surveiller la conversion.

Le timer:
Permettant de réaliser les fonctions suivantes:

 Génération d’un signal périodique modulé ou non en largeur d’impulsion,

 Génération d’une impulsion calibrée,

 Temporisation,

 Comptage d'événements.

Plusieurs registres associés au Timer permettent de configurer les différents


modes décrits précédemment.

Le chien de garde; qui représente un système anti-plantage du microcontrôleur. Il


s’assure qu’il n’y ait pas d'exécution prolongé d’une même suite d’instruction.

Un compteur préchargeable se décrémente régulièrement au rythme de la


fréquence d’horloge. Si aucun préchargement n’est effectué avant qu’il n’atteigne
la valeur “0” un Reset est généré relançant ainsi le microcontrôleur. Il faut donc
penser à précharger régulièrement ce chien de garde par programme lorsqu’il est
activé.

11
Chapitre I Les microcontrôleurs

III.2 Architecture de Von Neumann et de Harvard[7]

III.2.1 L'architecture Von Neumann

L’architecture Von-Neumann utilise un seul bus pour transmettre les instructions


(programme) et les données. Cette architecture ne permet pas de lire les instructions
pendant la lecture ou l’écriture d’une donnée.

Figure I.4. Architecture de Von Neumann.

III.2.2 L'architecture Harvard :

Cette structure se distingue de l'architecture de Von Neuman par le fait que les
mémoires programmes et données sont séparées. L'accès à chacune des deux mémoires se
fait via un chemin distinct. Cette organisation permet de transférer une instruction et des
données simultanément, ce qui améliore les performances.

Figure I.5. Architecture de Harvard

12
Chapitre I Les microcontrôleurs

III.3 Architecture RISC et CISC

III.3.1 L'architecture CISC

Les microprocesseurs CISC (Complex Instruction Set Computing) sont dotés d’un
jeu étendu d’instructions complexes. Ces instructions sont relativement lentes. Les
microprocesseurs CISC privilégient la puissance de traitement au détriment de la rapidité.

III.3.2 L'architecture RISC

Les microprocesseurs RISC (Reduced Instruction Set Computing) sont munis d’un
jeu réduit d’instructions simples.Ces instructions sont adaptées et sont très rapides.

IV. Quelque Familles De Constructeur De Microcontrôleur

 Atmel :AT91 à base de processeur ARM.

 Atmel AVR : 5 groupes principaux :

TinyAVRs

MegaAVRs

XMEGA

AVR spéciaux pour des applications spécifiques .5.FPSLIC

 Siemens-Infineon: Le C167,..

 Intel : Compatible au 8051 ; 8085:

 Freescale

 Microchip : PIC et dsPIC

 Texas Instruments: MSP430

 Philips : LPC21xx ARM7-TDMI

13
Chapitre I Les microcontrôleurs

 Zilog :Z80….

V. Conclusion

Dans ce chapitre on a présenté des généralités sur les systèmes embarqués et les
circuits microcontrôleurs. Le prochain chapitre traite le microcontrôleur PIC 16F84

14
Chapitre II Le microcontrôleur PIC

Chapitre II

Le microcontrôleur PIC

Introduction

Les PICs sont des microcontrôleurs de la firme Microchip; se sont des composants
de type RISC (Reduce Instructions Construction Set).

Dans ce chapitre on va présenter les PIC d’une manière générale puis on va entamer
l’étude du Pic 16 F 84-04

Généralités Sur Les Pic

II.1 Les familles

La famille des PICs est subdivisée à l’heure actuelle en trois grandes familles:

 BASE-LINE Qui utilise des mots d’instructions de 12 Bits

 MID-RANGE qui utilise des mots de 14 bits (et dont font partie les 16F84
et 16F87x).

 HIGH-END, qui utilise des mots de 16 bits.

II.2 Nomenclature

Le nom d'un pic en général sous la forme :

PIC Chiffre1 Lettre Chiffre2 –Chiffre3.

Chiffre1:indique la famille: 10,12,16,17et 18

Lettre: type de la mémoire:

15
Chapitre II Le microcontrôleur PIC

C : la mémoire programme est une EPROM ou plus rarement une EEPROM,

CR : une mémoire de type ROM;

F : une mémoire de type FLASH.

Chiffre2:la référence;

Chiffre3: la fréquence max.

Exemple :

PIC 16 F 84 -04

16 F 84 04
indique la Type de Référence Fréquence
famille mémoire (2ou3 chiffre) max

Figure. II.1. Nomenclature d'un PIC.

Le PIC 16F84

III.1 Architecture externe

La figure ci-dessous montre l'architecture externe d'un PIC 16F84

Figure II.2. Architecture Externe

16
Chapitre II Le microcontrôleur PIC

Le tableau ci-dessous illustre tous les signaux disponibles

Tableau 2.1: les signaux disponibles


Symbole N° PIN Mode E/S Fonction
 5 E
et Pattes d'alimentation

14 E

OSC1/CLKIN, 16 E Pattes d'horloge


OSC2/CLKOUT 15 S


MCLR 1 E Etrée de reset.

RA
à RA 17, 18, 1,2 E/S Ligne d'entrée- sortie parallèle du
port A

RA /T0CKI 3 E/S Pattes d'e/S 4 du port A commune


avec l'entrée d'horloge externe du
timer0

RB
/INT 6 E/S L'e/S 4 du port B commune avec
l'entrée d'interruption externe.

RB à RB 7-13 E/S Ligne d'entrée sortie parallèle du


port B

17
Chapitre II Le microcontrôleur PIC

III.2 Architecture Interne

La figure (II.3) présente l'architecture interne d'un PIC16F84

Figure II.3. Architecture Interne

III.2.1 Caractéristiques générales:

Le PIC 16F84-04 est d'une architecture interne de type HARVARD:

Mémoire programme :1024*14bits


 Bus d’adresse:13 bits;Bus de données : 14 bits
Mémoire de données :64*8bits
 Bus d’adresse:7bits; Bus de donnée :8bits
La pile: 8 niveau *(13 bits)
CPU RISC
registre de fonctions spéciales(SFR):15

18
Chapitre II Le microcontrôleur PIC

III.2.2 Les Registres de fonctions spéciales: SFR

La figure (II.4) représente l'organisation des Registres De Fonction Spéciales (SFR)

Figure II.4.Les Registres De Fonction Spéciales (SFR)

Le registre W:

C'est un registre fondamental utilisé par les pics pour réaliser toutes sortes de
calcul

19
Chapitre II Le microcontrôleur PIC

Le registre STATUS:

C’est un registre dont chaque bit a une signification particulière. Il est


principalement utilisé pour tout ce qui concerne les tests.
IRP RP1 RP0 
 
 Z DC C

Tableau 2.2: les Bits du registre STATUS

Bit Flag Description


b0 C (Carry (report) Ce bit est en fait le 9ème bit d’une opération.
C=1 un dépassement de capacité
C=0 pas de dépassement de capacité
b1 DC ( Digit Carry) Ce bit est utilisé principalement lorsque l’on travaille avec
des nombres BCD : il indique un report du bit 3 vers le bit 4.
b2 Z (Zéro) Ce bit est positionné à 1 si le résultat de la dernière opération
vaut 0
b3 
 ( Power down) Indique quel événement a entraîné le dernier arrêt du PIC
(instruction Sleep ou dépassement du temps du Watchdog)
b4 
 (Time-Out bit) Ce bit indique (si 0), que la mise en service suit un arrêt
provoqué par un dépassement de temps ou une mise en
sommeil
b5 RP0 (Register Bank Permet d’indiquer dans quelle banque de RAM on travaille.
Select0) 0 = banque 0.; 1= banque 1
b6 RP1 (Register Bank Permet la sélection des banques 2 et 3. Inutilisé pour le
Select1) 16F84, doit être laissé à 0 pour garantir la compatibilité
ascendante (portabilité du programme).
b7 IRP (Indirect RP) Permet de décider quelle banque on adresse dans le cas de
l’adressage indirect (que nous verrons plus tard).

Les registre (PCL+PCLATH)

PC: Program Counter, séquenceur du pic, c’est à dire le compteur qui permet de
pointer sur la prochaine instruction à exécuter.

 PCL (PC Low): contient l’adresse basse du PC, c’est à dire les 8 bits de
poids faibles
 PCLATH (PC LATch counter High): registre de 5 bits et qui participe au
fonctionnement du séquenceur

20
Chapitre II Le microcontrôleur PIC

Figure .II.5. Le fonctionnement du PC.


Lorsque un saut par exemple , le contenu du PC est chargé directement avec
les 11bits de destination contenu dans la destination en elle-même; les deux bits
manquant doivent etre positionnerpar l'utilisateur; ils son placé directement dans
le bit 11 et 12 du PC afin de complétél'adresse vde destination

Les registres FSR et INDF

 INDF signifie INDirect File: c’est le fameux registre de l’adresse 0x00. Ce


registre n’existe pas vraiment, ce n’est qu’un procédé d’accès particulier à FSR
utilisé par le PIC pour des raisons de facilité de construction électronique
interne.
 Le registre FSR est à l’adresse 0x04 dans les deux banques. Il n’est donc pas
nécessaire de changer de banque pour y accéder, quelle que soit la banque en
cours d’utilisation.

N.B:
FSR: contient l'adresse pointé
INDF contient le contenu de l'adresse pointé par FSR

Le registre OPTION
Ce registre se trouve à l’adresse 0x81, donc dans la banque1, chaque bit a un
rôle particulier


 INTEDG T0CS T0SE PSA PS2 PS1 PS0

21
Chapitre II Le microcontrôleur PIC

Tableau 2.3: les Bits du registre OPTION


Bit flag Description
Ces trois bits déterminent la valeur de prédivision. Il y a
b2, b1, b0 (PS2, PS1,PS0) donc 8 valeurs possibles,

b3 PSA Le prédiviseur indique le nombre de pulses qui devra être


reçu pour provoquer une incrémentation de la destination.
Donne pour le cas b5=1. Le sens de la transition qui
b4 TOSE: détermine le comptage de tmr0
Si b4 = 1, on a comptage si le signal passe de 5v a 0v sur ra4;
Si b4 = 0, ce sera le contraire.
Détermine le fonctionnement du timer0
b5 TOCS B5 = 0; le timer0 est incrémenté en fonction de l’horloge
interne (synchronise au programme);
B5=1. Le timer0 compte les impulsions reçues sur la pin ra4
b6 INTEDG Détermine le sens de déclenchement de l’interruption sur rb0
Si b6 = 1, on a interruption si le niveau sur rb0 passe de 0
vers 1. Si b6 = 0, l’interruption s’effectuera lors de la
transition de 1 vers 0
b7 
 !" 
 !" a 0 (actif niveau bas en italique), une résistance de
rappel au +5 volt est placée sur chaque pin du PORTB.

Les registres PORTA, TRISA

PORTA:

Se situe à l’adresse 0x05, dans la banque0. Ce registre est un peu particulier,


puisqu’il donne directement accès au monde extérieur. C’est en effet ce registre
qui représente l’image des pins RA0 à RA4, chaque bit de ce registre représente
une pin. dPour écrire sur une pin en sortie, on place le bit correspondant à 1 ou à
0, selon le niveau souhaité.

TRISA:

Ce registre est situé à la même adresse que PORTA, mais dans la banque1.
Son adresse complète sur 8 bits est donc 0x85. Chaque bit positionné à 1
configure la pin correspondante en entrée. Chaque bit à 0 configure la pin en
sortie. Au reset du PIC, toutes les pins sont mises en entrée

22
Chapitre II Le microcontrôleur PIC

Les registres PORTB et TRISB

Ces registres fonctionnent exactement de la même manière que PORTA et


TRISA, mais concernent bien entendu les 8 pins RB.

Le registre Tmr0:

Ce registre, qui se localise à l’adresse 0x01 en banque0, contient tout


simplement la valeur actuelle du timer0. Vous pouvez écrire ou lire tmr0. Si par
exemple vous avez configuré tmr0 en compteur, la lecture du registre tmr0 vous
donnera le nombre d’événements survenus sur la pin RA4/TOKI

Le registre INTCON

Ce registre se situe à l’adresse 0x0B, dans les deux banques. Pour la


configuration des interruptions
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

Tableau 2.4: les Bits du registre INTCON


Bit Flag Description
b0 RBIF Rb port interrupt flag bit : signale qu’une des entrées rb4 a rb7 a été
modifiée.
b1 INTF Interrupt pin flag bit : signale une transition sur la pin rb0 dans le sens
determine par intedg du registre option (b6)
b2 T0IF Tmr0 interrupt flag bit. C’est le flag, qui signale le débordement du timer0
b3 RBIE Rb interrupt enable bit : changement de niveau sur une des entrées RB4 a
RB7
b4 INTE Interrupt pin enable bit: valide l’interruption dans le cas d’une modification
de niveau de la pin rb0
b5 T0IE Tmr0 interrupt enable bit : valide l’interruption générée par le débordement
du timer0
b6 EEIE Eeprom write complete interrupt enable valider l’interruption de fin
d’écriture en EEPROM
b7 GIE Iinterrupteur de validation générale d'interruption

N.B. les flags ne se remettent pas à 0 tout seul. C’est le programme qui doit
s’en charger, on les appelle les flags rémanents

23
Chapitre II Le microcontrôleur PIC

Les registres d'accès en EEPROM

Le registre EEDATA: EEPROM DATA

Ce registre se situe à l'adresse 0x08 dans le banque0; C’est dans ce registre


que va transiter la donnée à écrire vers ou la donnée lue en provenance de
L’EEPROM

Le registre EEADR:EEPROM ADDress register:

Dans ce registre, situé à l’adresse 0x09 banque0, on précise sur 8 bits


l’adresse concernée par l’opération de lecture ou d’écriture en EEPROM. Pour le
16F84, la zone admissible va de 0x00 à 0x3F, soit 64 emplacements

Le registre EECON1: EEPROM CONtrôl register1

Ce registre se situe à l'adresse 0x88 dans le banque1; contient 5bits qui


définissent le cycle de lecture et d'écriture en EEPROM
- - - EEIF WRERR WREN WR RD

Tableau 2.5: les Bits du registre EECON1


Bit Flag Description
b0 RD: ReaD. Démarrage d’un cycle de lecture. Reste à 1 durant un
cycle, puis est remis à 0 automatiquement à la fin de
lecture.
b1 WR: WRite Démarrage du cycle d’écriture. Est remis à 0
automatiquement une fois l’écriture terminée.
b2 WREN : WRite ENable Autorisation de démarrage du cycle d’écriture
b3 WRERR: WRite ERRor. C’est un bit d’erreur. Il passe à 1 si une opération
d’écriture en EEPROM a été interrompue, par exemple
par un Reset.
b4 EEIF Pour EEPROM write operation Interrupt Flag bit. C’est
le flag qui est en liaison avec l’interruption EEPROM. Il
passe à 1 une fois l’écriture en EEPROM terminée. Si le
bit EEIE du registre INTCON est à 1, une interruption
sera alors générée
b5 - non utilisé
b6 - non utilisé
b7 - non utilisé

24
Chapitre II Le microcontrôleur PIC

Le registre EECON2: EEPROM CONtrol register2

Ce registre n’existe pas. Il s’agit tout simplement d’une adresse 0x89


banque1, qui sert à envoyer des commandes au PIC concernant les procédures
EEPROM.

III.3 Les modes d'adressage

L’adressage littéral ou immediate


Exemple: movlw 0x55
L’adressage direct
Exemple: movf 0x10 , W
L’adressage indirect:
Exemple: movlw 0x50 ;
movwf mavariable ;
movlw mavariable ;
movwf FSR ;
movf INDF,w ;

25
Chapitre II Le microcontrôleur PIC

III.4 Le jeu d’instruction [4][2]

Les PICs disposent d'un jeu d'instruction réduit, il s'agit de 35 instructions. Le tableau
ci-dessous présente ces instructions avec une brève description de leur fonctionnement,
ainsi que les flags du registre d'état'' STATUS'' engendrés par chacune d'elles.
Tableau 2.6. : Le jeu d'instruction

Mnémonique Fonction Flag


MOVLW k; Charge la valeur spécifiée dans le registre de travail W. -
MOVF f , d; Charge le contenu de l’emplacement spécifié dans la Z
destination
MOVWF f; Permet de sauvegarder le contenu du registre de travail W -
dans un emplacement mémoire.
AADLW k ; (W) + K  (W) C,DC,Z
ADDWF f , d (w) + (f)  (d) C,DC,Z
SUBLW k Soustrait W de la valeur littérale C,DC,Z
k – (W)  (W)
SUBWF f , d (f) – (W)  (d) C,DC,Z

INCF f , d; L’incrémentation de l’emplacement spécifié Z


DECF f , d; Décrémente l’emplacement spécifié Z
ANDLW k; (w) & k  (w) Z
And Bit à Bit
ANDWF f , d ; (f) AND (w)  (d) Z
IORLW k; (w) OR k  (w) Z
IORWF f , d ; (w) OR (f)  (d) Z
XORLW k; (w) XOR k  (w) Z
XORWF f,d (w) XOR (f)  (d)
CLRF k Effacer case mémoire Z
CLRW Effacer le registre de travail Z
CLRWDG Effacer le WDG TO', PD'
COMF Le complément à1 d'un mot Z
BCF forcer un bit à 0 -
BSF forcer un bit à 1 -
SWAPF Inverser les moitié de bits
RLF f , d (f) rotation à gauche à travers C  (d) C
RRF (f) rotation à droite à travers C  (d) C
BTFSC f, b Teste le bit b de f, si 0 saute l' instruction -
BTFSS f, b Teste le bit b de F, si 1 saute une instruction -
DECFSZ Décrémente un emplacement mémoire et saute l’instruction
suivante si le résultat de la décrémentation donne une
valeur nulle
INCFSZ (f) + 1  (d) : saut si (d) = 0
Incrémente (f)  {W,F ? d} skip if 0

26
Chapitre II Le microcontrôleur PIC

GOTO etiquette Rupture de séquence synchrone inconditionnel -

CALL etiquette Appel d'un sous programme -


RETURN Retour d'un sous programme -
RETLW k C'est un RETURN mais sortir avec une valeur spécifique -
dans W
RETFIE Retour d'un sous programme d'interruption -
SLEEP Place le pic en mode sommeil-il ne se surveille pas que TO', PD'
sous certain conditions-
NOP Elle est utilisée surtout pour perdre le temps -

Avec: F: Emplacement Mémoire ; W: le registre de travail

(Emplacement): le contenu de l'emplacement ; d: destination

b: adresse de bit d'un registre ; k: valeur littérale constante ou label

{W,F, d} signifie que le résultat va soit dans W si d=0 ou w, soit dans F si d= 1 ou f

III.5 Les Interruptions [4]


L’interruption est une Rupture De Séquence Asynchrone, c'est-à-dire non
synchronisée avec le déroulement normal du programme. L’ adresse du début de
toute les interruption est : 0x04.

III.5.1. Mécanisme général d’une interruption


Une routine d’interruption est un sous-programme particulier, déclenché par
l’apparition d’un événement spécifique. Elle fonctionne de la façon suivante :

Le programme se déroule normalement


L’événement survient
Le programme achève l’instruction en cours de traitement
Le programme saute à l’adresse de traitement de l’interruption
Le programme traite l’interruption
Le programme saute à l’instruction qui suit la dernière exécutée dans le
programme principal.
Deux conditions principales doivent être remplies pour le déclenchement :

27
Chapitre II Le microcontrôleur PIC

L’événement en question doit figurer dans la liste des événements


susceptibles de provoquer une interruption pour le processeur sur lequel on
travaille
L’utilisateur doit avoir autorisé l’interruption, c’est à dire doit avoir signalé
que l’événement en question devait générer une interruption

Figure II.6. Algorithme d'une interruption

III.5.2 Les sources d’interruptions du 16F84:

Les sources d'interruption dans un PIC 16F84 sont.

TMR0 : Débordement du timer0 (tmr0). Une fois que le contenu du tmr0 passe
de 0xff à 0x00, une interruption peut être générée.
EEPROM : cette interruption peut être générée lorsque l’écriture dans une
case EEPROM interne est terminée.
RB0/INT : Une interruption peut être générée lorsque, la pin RB0, encore
appelée INTerrupt pin, étant configurée en entrée, le niveau qui est appliqué est
modifié.
PORTB : De la même manière, une interruption peut être générée lors du
changement d’un niveau sur une des pins RB4 à RB7. Il n’est pas possible de
limiter l’interruption à une seule de ces pins. L’interruption sera effective pour
les 4 pins ou pour aucune

28
Chapitre II Le microcontrôleur PIC

Figure II 7. Mécanisme de demande d'une Interruption


Il est à noter que lors d'une interruption, des registres doivent être
sauvegardés :

le PC qui est sauvegardé automatiquement.

STATUS
W
Exemple
Des les méthodes de sauvegarde et de restauration sont utilisée lors d'un
déclenchement d'interruption:
;************************************************************
ROUTINE INTERRUPTION
;************************************************************
Sauvegarder registres
;------------------------------------------------------------
org 0x004 ; adresse d'interruption
movwf w_temp ; sauver registre W
swapf STATUS,w ; swap status avec résultat dans w
movwf status_temp ; sauver status swappé
;commutation vers différentes interrupts
; -----------------------------------------------------------------
; ici, on teste éventuellement de quelle interruption il s’agit
; traitement des interruptions
; -----------------------------------------------------------------
;ici, on peut traiter interruption puis effacer son flag
;restaurer registres
;------------------------------------------------------------------
swapf status_temp,w ; swap ancien status, résultat dans w
movwf STATUS ; restaurer status
swapf w_temp,f ; Inversion L et H de l'ancien W
; sans modifier Z
swapf w_temp,w ; Ré-inversion de L et H dans W
; W restauré sans modifier status
retfi ; return from interrupt

29
Chapitre II Le microcontrôleur PIC

III.6 Le TIMER0[4]

Il s'agit d'un compteur ayant les modes de fonctionnement suivant:

1. En premier cas, compter les impulsions reçues sur la pin '( ) /*+,-.: on dit
que le timer0 fonctionne en mode compteur

2. Compter les cycles d’horloge du PIC lui-même. Dans ce cas, comme l’horloge
est fixe, nous compterons donc en réalité du temps. Donc, nous serons en mode
timer .

Le bit 5 du registre OPTION : T0CS décrit le fonctionnemnt du Timer

T0CS = 1 : Fonctionnement en mode compteur

T0CS = 0 : Fonctionnement en mode timer.

III.6.1 Les méthodes d’utilisation du timer0

Le mode de lecture simple:

Il s'agit de lire le registre tmr0 pour voir ce qu’il contient

Le mode de scrutation du flag


Tout débordement du timer0 (passage de 0xFF à 0x00) entraîne le
positionnement du flag T0IF du registre INTCON. Ce flag pour déterminer si il y
a eu un débordement du timer0, ou, en d’autres termes, si le temps programmé est
écoulé.

Le mode d’interruption
C’est évidemment le mode principal d’utilisation du timer0. En effet, lorsque
T0IE est positionné dans le registre INTCON, chaque fois que le flag T0IF passe
à 1, une interruption est générée.

30
Chapitre II Le microcontrôleur PIC

Les méthodes combines


Supposons que vous vouliez, par exemple, mesurer un temps entre deux
impulsions sur la broche RB0. Supposons également que ce temps soit tel que
plusieurs débordements du tmr0 puissent avoir lieu. Une méthode simple de
mesure du temps serait la suivante :

 A la première impulsion sur RB0, on lance le timer 0 en mode interruptions.


 A chaque interruption de tmr0, on incrémente une variable
 A la seconde interruption de RB0, on lit tmr0 et on arrête les interruptions
 Le temps total sera donc (256*variable)+tmr0
On a donc utilisé les interruptions pour les multiples de 256, et la lecture
directe de tmr0 pour les « unités ».

III.6.2. Le prédiviseur
Supposons que nous travaillions avec un quartz de 4MHz. Si nous décidons
d’utiliser le timer0 dans sa fonction timer et en mode interruptions. Nous aurons
donc une interruption toutes les 256µs,
Si nous aurons besoin d'avoir amélioré la temporisation entre deux
interruptions du TIMER0, Nous disposons un PREDIVISEUR qui est
simplement un diviseur d’événements situé Avant l’entrée de comptage du timer0.
Le tableau ci-dessous exprimant toutes les possibilités des bits : PS0 àPS2 du
registre OPTION qui déterminent la valeur du prédiviseur, et le bit PSA, quand à
lui, détermine si le Prédiviseur est affecté au timer0 ou au watchdog
Tableau 2.7. :valeur de prédiviseur

PSA PS2 PS1 PS0 /TMR0 /WD Temps tmr0 Temps typique WD(minimale)

0 0 0 0 2 1 512 µs 18 ms (7ms)
0 0 0 1 4 1 1024 µs 18 ms (7ms)
0 0 1 0 8 1 2048 µs 18 ms (7ms)
0 0 1 1 16 1 4096 µs 18 ms (7ms)
0 1 0 0 32 1 8192 µs 18 ms (7ms)
0 1 0 1 64 1 16384 µs 18 ms (7ms)
0 1 1 0 128 1 32768 µs 18 ms (7ms)
0 1 1 1 256 1 65536 µs 18 ms (7ms)

31
Chapitre II Le microcontrôleur PIC

1 0 0 0 1 1 256µs 18 ms (7ms)
1 0 0 1 1 2 256 µs 36 ms (14ms)
1 0 1 0 1 4 256 µs 72 ms (28ms)
1 0 1 1 1 8 256 µs 144 ms (56ms)
1 1 0 0 1 6 256 µs 288 ms (112ms)
1 1 0 1 1 32 256 µs 576 ms (224ms)
1 1 1 0 1 64 256 µs 1.152 Sec (448ms)
1 1 1 1 1 128 256 µs 2.304 Sec(996ms)

 PSA à PS0 sont les bits de configuration du prédiviseur


 /tmr0 indique la valeur du prédiviseur résultante sur le timer0
 /WD indique la valeur du prédiviseur résultante sur le Watchdog
 Temps Tmr0 indique le temps max entre 2 interruptions tmr0 avec quartz de
4MHz
 Temps Watchdog (WD) indique le temps typique disponible entre 2 reset
watchdog (indépendant du quartz utilisé). La valeur entre parenthèses
indique le temps minimal, qui est celui à utiliser pour faire face à toutes les
circonstances.

Il est à noter que:

 Il n’y a qu’un prédiviseur, qui peut être affecté au choix au timer du watchdog
ou au timer0. Il ne peut être affecté aux deux en même temps.
 Il n’existe pas de prédiviseur = 1 pour le timer0. Pour utiliser le prédiviseur,
sélectionner sur le watchdog avec une valeur de 1 (ligne grise du tableau).
 La valeur contenue dans le prédiviseur n’est pas accessible.
 L’écriture dans le registre tmr0 efface le contenu du prédiviseur. Les
événements survenus au niveau du prédiviseur sont donc perdus.

III.7 Les accès en mémoire EEPROM Interne:[4]


Les registres nécessaires sont :EEDATA.EEADR,EECON1,EECON2
L’adresse physique de la zone EEPROM commence, pour les PICs Mid-
Range, à l’adresse 0x2100. Hors de l’espace d’adressage normal, il nous faudra
utiliser une procédure spéciale pour y accéder.

32
Chapitre II Le microcontrôleur PIC

La procédure de lecture en EEPROM est plus complexe qu’une simple lecture


en RAM. Il faut donc limiter les accès EEPROM au maximum, initialiserons donc
cette zone directement au moment de la programmation. Ceci s’effectue à l’aide
de la directive «DE» pour Data EEPROM, placée dans la zone de données
EEPROM, c’est à dire en 0x2100.

III.7.1 Initialisation de la zone EEPROM:


Nous initialiserons donc cette zone directement au moment de la
programmation. Ceci s’effectue à l’aide de la directive « DE » pour Data Eeprom,
placée dans la zone de données eeprom, c’est à dire en 0x2100
Exemple:
;******** DECLARATIONS DE LA ZONE EEPROM *******
;===================================================
org 0x2100 ; adresse début zone eeprom
DE 0x07 ; valeur de recharge du compteur

III.7.2 Accès en lecture dans la mémoire « EEPROM »


Pour lire une donnée en EEPROM, il suffit de placer l’adresse concernée dans
le registre EEADR. Ensuite, vous positionnez le bit RD à 1. Vous pouvez ensuite
récupérer la donnée lue dans le registre EEDATA. Il ne faut pas bien sûr oublier
les différents changements de banques.
Exemple:
;**La procédure d'accès en lecture dans la mémoire EEPROM**
;==========================================================
READEE macro adeeprom ; macro avec 1 paramètre (argument)
movlw adeeprom ; charger adresse eeprom (argument reçu)
movwf EEADR ; adresse à lire dans registre EEADR
bsf STATUS , RP0 ; passer en banque1
bsf EECON1 , RD ; lancer la lecture EEPROM
bcf STATUS , RP0 ; repasser en banque0
movf EEDATA , w ; charger valeur lue dans W
endm ; fin de la macro

III.7.3 Accès en écriture dans la mémoire « EEPROM »:

La procédure à suivre consiste:

Placer la donnée dans EEDATA


Placer l'adresse dans EEADR
Couper les interruption durant cette phase GIE=0(registre INTCON).

33
Chapitre II Le microcontrôleur PIC

Vérifier que l'écriture est terminer par la génération d'une interruption


 Le bit EEIE=1, (registre INTCON).
 Lecture de flag EEIF(registre INTCON)
 Consultation du bit WR(registre INTCON)
Exemple:
WRITEE macro addwrite ; la donnée se trouve dans W
LOCAL loop ; étiquette locale
movwf EEDATA ; placer data dans registre
movlw addwrite ; charger adresse d'écriture
movwf EEADR ; placer dans registre
loop
bcf INTCON , GIE ; interdire interruptions
btfsc INTCON , GIE ; tester si GIE bien à 0
goto loop ; non, recommencer
bsf STATUS , RP0 ; passer en banque1
bcf EECON1 , EEIF ; effacer flag de fin d'écriture
bsf EECON1 , WREN ; autoriser accès écriture
movlw 0x55 ; charger 0x55
movwf EECON2 ; envoyer commande
movlw 0xAA ; charger 0xAA
movwf EECON2 ; envoyer commande
bsf EECON1 , WR ; lancer cycle d'écriture
bcf EECON1 , WREN ; verrouiller prochaine écriture
bsf INTCON , GIE ; réautoriser interruptions
bcf STATUS , RP0 ; repasser en banque0
endm

III.7.4 Sécurisation des accès en mémoire « EEPROM »:


Lorsque on écrit dans la zone EEPROM d’un PIC , les données ne sont
pas perdus lors d'une coupure de courant.

Placez un en-tête dans le premier ou les premiers octets de votre EEPROM. Par
exemple, nous placerons 0x55 dans l’octet 0.
Lors de l’écriture de nouvelles valeurs dans l’EEPROM, nous commençons par
effacer notre en-tête.
Puis nous écrivons notre ou nos donnée(s) dans l’EEPROM
Pour finir, nous réinscrivons notre en-tête dans l’EEPROM.
Lors d’un démarrage du PIC, si l’en-tête est présent, cela signifie que les données
EEPROM sont valides. Dans le cas contraire, le cycle d’écriture a été interrompu.
Pour augmenter la sécurité du système pour les données critiques, vous
pouvez placer plusieurs octets d’en-tête.

34
Chapitre II Le microcontrôleur PIC

III.8 Le watchdog[4]
Le watchdog, ou chien de garde est un mécanisme de protection du
programme, la mise en service ou l’arrêt du watchdog se décide au moment de la
programmation de PIC, à l’aide de la directive _CONFIG. Si « _WDT_OFF »
hors service. Si au contraire vous précisez « _WDT_ON », le watchdog sera actif.
Le watchdog est destiné à vérifier que le programme ne s’est pas « égaré »
dans une zone non valide du programme (parasite sur l’alimentation par exemple),
ou s’il n’est pas bloqué dans une boucle sans fin (bug du programme). Il sert
également à réveiller un PIC placée en mode « sleep ».

N.B:

 L'instruction CLRWDG: efface le timer du watchdog


 Lorsque le WDG déborde le PIC redemmare à0x00et
 =0;(registre STATUS)

 PSA=1 Prédiviseur affecté au WDG(le tableau P:33)
 Il ne faut jamais utilisé l'instructionClwdg dans une routine d'interruption

III.9 Le mode SLEEP.[4]


Le mode « SLEEP » ou « power down » est un mode particulier dans lequel
vous pouvez placer votre PIC grâce à l’instruction « SLEEP ». Une fois dans ce
mode, le PIC est placé en sommeil et cesse d’exécuter son programme. Dès
réception de cette instruction, la séquence suivante est exécutée :

 Le watchdog est remis à 0, exactement comme le ferait une instruction « clrwdt ».


 Le bit TO du registre STATUS est mis à 1.
 Le bit PD du registre STATUS est mis à 0.
 L’oscillateur est mis à l’arrêt, le PIC n’exécute plus aucune instruction.

III.9.1 La sortie du mode « SLEEP »

La sortie du mode « sleep »par:

 Application d’un niveau 0 sur la pin 


/01 .
 Ecoulement du temps du timer du watchdog.

35
Chapitre II Le microcontrôleur PIC

 Apparition d’une interruption RB0/INT, RB ou EEPROM.


 Réveil avec GIE hors service.

III.9.2 Mise en sommeil impossible


Si le bit GIE est positionné à 0, et que les bits de mise en service et le flag
d’une interruption sont tous deux à 1 au moment de l’instruction « sleep » (par
exemple INTE=INTF =1), l’instruction « sleep » est tout simplement ignorée par
le processeur, car les conditions de réveil sont déjà présentes avant la mise en
sommeil. Il faut remettre éventuellement ces bits à 0. Le bit PD permettra de
savoir l'instruction « sleep » s’est exécutée (PD = 0).

VI. Programmation d’un PIC avec le logiciel MPLAB

IV.1 MPLAB
MPLAB est un outil fournit gratuitement par la société Microchip, ce logiciel
permet de créer un programme pour un PIC, de l'assembler et de le simuler avant
le transfert vers la mémoire flash du PIC.

Figure II.8. L'interface MPLAB

36
Chapitre II Le microcontrôleur PIC

IV.2 Le programmateur
Pour la programmation d'un pic (le transfert du programme vers la mémoire
flash du pic à, il existe plusieurs programmateur comme: MPLAB ICD2, MPLAB
ICD3,PICkit, MPLAB PM3,…..; ce dernier est disponible dans notre laboratoire
de Microcontrôleur

IV.3 La procédure de programmation :

 Pour la programmation il faut suivre les étapes suivantes:


 Connecter le programmateur à l'alimentation avec le câble d'alimentation et au PC
aves avec le Port RS232.
 Le brochage de PIC pour le programmer(Voir Annexe)
 MPLAB  Menu  configure  select device
 Menu programmer  Select programmer  MPLAB PM3 …
 Menu programmer  Enable programmer  programme  ..
 Si Le transfert du programme est terminé avec succès
 Appuyer sur vérifier. la vérification est terminer avec succès
 Menu programmer  Disable programmer

IV.4 Le Premier Programme Avec MPLAB

Copiez les fichiers et les données que vous allez les utiliser dans votre répertoire de
travail.

 Lancez MPLAB Project Menu  Project wizart…


 Sélectionnez le Type de microcontrôleur choisis pour y programmer
 Sélectionnez l'outil de simulation MPASM
 Sélectionnez le disque dur et le répertoire dans le quel se trouvent vos
donnéesdonnez un nom au projet.
 Ajoutez le fichier dans le projet
 Pressez la touche Ctrl+F10(ou menu projet Build All): pour l'assemblage du
programme fichier.asm

37
Chapitre II Le microcontrôleur PIC

VII. Conclusion

Dans ce chapitre on a présenté en détaille le PIC16F84, cette présentation peut


servir comme un guide au lecteur.

Le prochain chapitre est consacré à la présentation d'un kit de développement pour


microcontrôleur de Siemens; ce kit se trouve au niveau de notre laboratoire

38
Chapitre III PSD1_SAB80C535

Chapitre III

Le PSD1_SAB80C535

I. Introduction:

Le MCLS-modular est un système d’expérimentation modulaire. Il permet à


l’utilisateur de procéder à des expériences avec divers microcontrôleurs et
microprocesseurs, les modules d’expérimentation périphériques autorisant des expériences
et des projets de développement proches de la réalité.

Le module disponible à notre laboratoire est le PSD1_SAB80C535, qui est le sujet


de ce chapitre.

II. Présentation du Module PSD1- Contrôleur Siemens


80C535 –[6]

La figure ci-dessous illustre le module PSD1- SAB80C535

Figure III.1 Module PSD1 avec contrôleur Siemens 80C535

II.1 L’unité PSD1:

L’unité PSD1 est un module de calcul de format carte enfichable avec le contrôleur
SAB, le microcontrôleur pouvant être complété avec RAM et ROM via son bus

39
Chapitre III PSD1_SAB80C535

externe. D’autres composants supplémentaires sont un convertisseur de niveau pour la


génération du niveau RS232 nécessaire pour la communication avec l’ordinateur PC et
un circuit de commutation spécial pour générer le signal RESET. La fréquence du
microcontrôleur est de 12MHz, ce qui fait que la durée d’exécution d’un cycle
machine est de 1µs.

Par l’emploi d’un sous-ensemble périphérique de microcontrôleur programmable


PSD311 de la société WSI, la mise en circuit du SAB 80C535 a pu être réduite à un
minimum par rapport à d’autres applications connues. Le PSD311 offre huit secteurs de
chacun 4 kilo-octets, une plage SRAM de 2 kilooctets, 2 ports d’extension pour la
localisation des composants dans l’espace d’adresses et une plage logique programmable
(PLD). La PSD se charge en outre de la fonction de maintien d’adresse pour les données
multiplexées et le bus d’adresse du microcontrôleur.

Figure III.2. Schéma fonctionnel de l’unité PSD1

Noter qu’à part les ports P0 et P2 toutes les ressources du microcontrôleur SAB
80C535 sont disponibles et que certains connecteurs de ports sont multifonctionnels. On
dispose en outre pour les extensions du bus externe du 80C535 avec D0...D7, A0...A11, les
signaux de commande /RD, /WR, ALE et /PSEN, ainsi que les signaux Chip-Select
EW1...EW3 formés par le PSD311.

40
Chapitre III PSD1_SAB80C535

Pour l’alimentation en tension de l’unité PSD1, 5V de tension de service suffisent.


Le courant absorbé maximum du module est d’environ 50mA. En cas de chute de tension
de service sous 4,8V, une puce déclenche un RESET du microcontrôleur pour le contrôle
de la sous tension (MC34164). De manière similaire, un RESET externe peut être
déclenché via K31.

Figure III.3. Carte mémoire du PSD311

II.2 Le moniteur cible

Le moniteur cible est un programme installé sur le système cible pour le


chargement des programmes des utilisateurs dans le système cible, pour la lecture et la
modification de cellules de mémoire et de registres, ainsi que pour la mise en service et le
test de ces programmes d’utilisateurs Dans le cas précis, le moniteur cible est fixement
programmé dans la plage EPROM du PSD 311 h raccordé extérieurement au
microcontrôleur et il est immédiatement disponible après mise sous tension de service.

41
Chapitre III PSD1_SAB80C535

Figure III.4. Couplage du système cible et de l’ordinateur PC hôte

Pour que le moniteur puisse être utilisé par l’opérateur, le système cible - dans notre
cas, l’unité PSD1 - doit être couplée avec un ordinateur PC via les ports COM disponibles
et au moyen de l’interface série du module microcontrôleur. Pour l’emploi dans le MCLS-
modular un câble d’interface (câble modem, SUB-D, 9 broches) est donc fourni pour
réaliser la connexion entre l’ordinateur PC hôte et la plate-forme d’expérimentation.

Plus confortable est l’emploi d’un débogueur qui permet de visualiser sur l’écran de
l’ordinateur PC l’ensemble des ressources du microcontrôleur et une commande simple du
moniteur cible. Généralement, les débogueurs font partie des environnements de
développement intégrés.

Le Microcontrôleur SAB 80C535

III.1 Classification de la famille 8051

La société SIEMENS propose avec son SAB 80C535 un dérivé performant de la


famille 8051 avec périphérie On-Chip étendue et dont l’unité centrale CPU correspond
entièrement au noyau 8051 d’INTEL. Grâce à la généreuse politique d’offre de licences
d’INTEL, de nombreux constructeurs de microprocesseurs ont mis au point depuis 1981
leurs propres dérivés sur la base du noyau 8051, ce qui fait qu’il existe un très grand
nombre de variantes les plus diverses, la famille 8051 étant très connue et très répandue.

Les caractéristiques principales de la famille 8051 sont les suivantes :

 Unité centrale CPU 8 bits avec jeu d’instructions étendu

42
Chapitre III PSD1_SAB80C535

 Processeur booléen.
 128 resp. 256 octets de mémoire RAM interne.
 max. 64 ko de mémoire ROM adressable (interne + externe).
 Bus externe pour extension externe de la mémoire de données respectivement de
programme.
 4 ports de chacun 8 bits (il existe également des modèles avec 2 ports).
 Deux horloges/compteurs de 16 bits.
 Interface série (duplex intégral).
 Système d’interruption performant.
 Horloge On-Chip.
 Temps de cycle d’instruction de 1 µs à fréquence d’horloge de 12 MHz.

A côté d’une extension importante des composants périphérie On-Chip


(convertisseur A/N 8 bits, horloge avec fonction Compare- et Capture,...), on a renoncé
avec le 80C535 à une mémoire de programme On-Chip (sans ROM), de telle manière que
celle-ci doit par principe être connectée extérieurement

43
Chapitre III PSD1_SAB80C535

III.2 Architecture du Microcontrôleur SAB80C535[6]

III.2.1 Architecture externe

La figure ci-dessous représente l'architecture du SAB80C535

Fig.III.5.a Symbole logique et Brochage externe

Figure III.5.b Architecture externe du SAB80C536

44
Chapitre III PSD1_SAB80C535

Le tableau suivant explique tous les signaux disponibles:[5]

Tableau 3.1 Les signaux disponibles

Symbole Pin E/S Fonction

4.0 4 4.7 1-3, 5-9 E/S Port 4: 8bits bidirectionnel, port E/S .


6 4 E 
789: ;<=>?@ A7B9 9?<CD9


6E6 10 E Reset (active à l'état bas)

FGHI 11 - Tension de référence du convertisseur A/N

FJK 12 - La masse de référence du convertisseur A/N

6.7 4 6.0 13-20 E Port6: est un port d'entrée 8bits unidirectionnel. Pour les huit
entrées analogiques multiplexées du convertisseur A/ D.

3.0 4 3.7 21-28 E/S Port 3: 8bits bidirectionnel, Port E/S .

′ N3.0O: 21 Le récepteur de données du Port série :entrée (asynchrones) ou


sortie de données/sortie (synchrone)

′B N3.1O: 22 Emetteur de données port série: sortie (asynchrone) ou d'une


sortie d'horloge (synchrone)

RS0 N3.2O: 23 Entrée Interruption 0 / Entrée De Commande timer 0

RS1 N3.3O: 24 Entrée Interruption 1 / Entrée De Commande timer 1

0 N3.4O: 25 Entrée timer 0

1 N3.5O: 26 Entrée timer 1


V N3.6O: 27 Le signal de contrôle d'écriture de données du Port0 vers la
mémoire de donnée externe


 N3.7O: 28 Le signal de commande de lecture, permet l'accès a la
mémoire de données externes à partir du Port 0

1.7 4 1.0 29-36 E/s Port 1: 8bits bidirectionnel, Port E/S .

RS3/000 N1.0O: 36 Entrée Interruption 3 / sortie compare 0 / Entrée capture 0

RS4/001 N1.1O 35 Entrée Interruption 4 / sortie compare 1 / Entrée capture 1

RS5/002 N1.2O: 34 Entrée Interruption 5 / sortie compare 2 / Entrée capture2

RS6/003 N1.3O: 33 Entrée Interruption 6 / sortie compare 3 / Entrée capture 3

45
Chapitre III PSD1_SAB80C535

RS2 N1.4O: 32 Entrée d'interruption2

26W N1.5O: 31 Entrée de rechargement de Timer externe 2

01X N1.6O 30 Sortie de l'horloge système

2 N1.7O: 29 Entrée Timer 2

WY12 39 Entrée inverseuse de l'amplificateur d' oscillateur /


Entrée au générateur d'horloge interne

WY11 40 Sortie inverseuse de l'amplificateur d'oscillateur.


Pour conduire le microcontrôleur à partir d'une source
d'horloge externe.

2.0 4 2.7 41-38 E/S Port 2:8bits bidirectionnel, port E/S


E6S 49 S Sortie est un signal de commande qui permet à la mémoire
programme externe par le bus au cours de la récupération des
opérations extérieures.

Y16 50 S Adresse latch enable sortie utilisée pour le verrouillage de


l'adresse en mémoire externe pendant le fonctionnement
normal.
Il est active, tous les six périodes d'oscillateur, sauf pendant
l'accès au mémoire de données externes


6Y 51 E 
Z[\]^_`a `bb]cc ]_`da]

Lorsque 
6Y=1, la SAB 80C535 exécute les instructions de la
ROM interne

Lorsque 
6Y=0, le SAB 80C535 récupère toutes les instructions
du mémoire. programme externe

0.0 4 0.7 52-59 E/S Port 0:8bits bidirectionnel, port E/S.

5.7 4 5.0 60-67 E/S Port5:8bits bidirectionnel, port E/S

ee 37 - Tension d'alimentation

 38 - La masse 0V

ee 68 - Tension d'alimentation

46
Chapitre III PSD1_SAB80C535

III.2.2. Architecture interne[6][5]:

Figure III.6. Schéma Interne

Unité de traitement centrale (CPU)

Les composants essentiels du CPU sont: le décodeur d’instructions, l’ALU et


certains registres avec fonction d’indicateur.

Les registres disponibles sont :

 Accumulateur A (8 bits)
 Accu auxiliaire B (8 bits)
 Registres de travail R0 à R7 dans 4 bases de registre (8 bits)
 Mot d’état de programme PSW (8 bits)
 Indicateur de données DPTR (16 bits) – indicateur de mémoire de données externe

47
Chapitre III PSD1_SAB80C535

 Compteur de programme PC (16 bits) – indicateur de mémoire de programme


 Indicateur de pile SP (8 bits) - indicateur de pile dans RAM interne
La mémoire (voir Annexe)
 Mémoire programme

. Mémoire programme externe[2000h,FFFFh] EA#=0

. Mémoire programme interne[0000h,1FFFh] EA#=1

 Espace d'adressage mémoire de donnée

Mémoire de donnée externe[0000h , FFFFh].

- Inferieur[00h,7Fh]
- Supérieur[80h,FFh] :SFR

. Mémoire de donnée interne

Les accès à la mémoire RAM interne est possible dans un cycle machine (CM).
Pour les accès à des mémoires extérieures, 2 (CM). sont requis. Les multiplications
respectivement; divisions 8 bits à nombre entier et sans signe préliminaire sont exécutées
en 4 (CM).. Comme la CPU nécessite 12 impulsions pour un MC, il en résulte, pour une
fréquence d’horloge de 12 MHz, 1, 2 respectivement 4 µs pour l’exécution de l’instruction.

Les registres de fonctions spéciales SFR [5]

La programmation des composants On-Chip s’effectue via un registre de fonctions


spéciales (SFR), pour lequel une plage de mémoire RAM de 80H à FFH existe.

Tableau 3.2 : Les registres SFR

Bloc Symbole Nom Adresse


ACC L'Accumulateur E0H
B Le registre B; ou l'accumulateur F0H
auxiliaire
DPL Pointeur de données; l'octet bas(des bits 82H
les moins significatifs)

48
Chapitre III PSD1_SAB80C535

CPU DPH Pointeur de données; l'octet haut(des 83H


bits les plus significatifs)
PSW Le registre d'état, ou le mot d'état D0H
SP Pointeur de pile 81H
ADCON Registre de contrôle du convertisseur D8H
A/N
ADDAT Registre de données du convertisseur D9H
Convertisseur A/N
A/N DAPR Registre de programme du convertisseur DAH
A/N
P6 Port 6,Entrée A/N DBH
IEN0 Registre d'activation d'interruption 0 A8H

Système IP0 Registre de priorité d'interruption0 A9H


d’interruption IEN1 Registre d'activation d'interruption 1 B8H
IP1 Registre de priorité d'interruption1 B9H
IRCON Registre de contrôle de requête C0H
d'interruption
CCEN Registre d'activation Compare/Capture C1H
CCL1 Registre1 de Compare/Capture: l'octet C2H
de poids fort
Unité Compare/ CCH1 Registre1 de Compare/Capture: l'octet C3H
Capture- de poids fort
(CCU) CCL2 Registre2 de Compare/Capture: l'octet C4H
de poids fort
CCH2 Registre2 de Compare/Capture: l'octet C5H
de poids fort
CCL3 Registre3 de Compare/Capture: l'octet C6H
de poids faible
CCH3 Registre3 de Compare/Capture: l'octet C7H
de poids fort
CRCL Registre Compare/Reload/Capture: CAH
l'octet de poids faible.
CRCH Registre Compare/Reload/Capture: CBH
l'octet de poids fort
P0 Port 0 80H
P1 Port 1 90H
P2 Port 2 A0H
PORTS P3 Port 3 B0H
P4 Port 4 E8H
P5 Port 5 F8H

49
Chapitre III PSD1_SAB80C535

Mode save PCON Registre de contrôle de puissance 87H


power
(économie de
puissance)
Canal serie SBUF Registre tampon du canal série 99H
SCON Registre de contrôle du canal série 98H
Timer0/Timer 1 TCON Registre de contrôle du timer 88H

TH0 Timer0, octet haut (poids fort) 8CH


TH1 Timer1, octet haut(poids fort) 8DH
TL0 Timer0, octet bas (poids faible) 8AH
TL1 Timer1, octet bas(poids faible) 8BH
TMOD Registre de mode timer 89H
Timer 2 TH2 Timer2; l'octet du poids fort CDH
TL2 Timer2; l'octet du poids faible CCH
T2CON Registre de contrôle du timer2 C8H

 Le registre d'état PSW(0D0H)[6]

Tableau 3.3 Bits du registre PSW

Bit Nom de Bit Fonction


0 P Indicateur parité, signale, imparité dans
accumulateur
1 F1 Indicateur utilisateur 1
2 OV Indicateur dépassement, influencé par
instructions arithmétiques
3 RS0
4 RS1 Sélection binaire des bases de registre 0 à 3
5 F0 Indicateur utilisateur 0
6 AC Indicateur auxiliaire, signale dépassement
tétrade avec opérations BCD
7 CY Carry-Flag et accu binaire

 Les registres de configuration de CAN [6]

- ADCON: Registre de contrôle ADU (0D8H)

Tableau 3.4 Bits du registre ADCON

Bit Nom de Bit Fonction


0 MX0

50
Chapitre III PSD1_SAB80C535

1 MX1 Sélection binaire d'un canal d'entrée nalogique


2 MX2 (AN0: 000 ... AN7: 111)
3 ADM Sélection du mode ADU
0 : conversion unique
1 : conversion continue
4 BSY Busy-Flag
0 : convertisseur non actif
1 : convertisseur actif
5 - Non utilisé
6 CLK Déblocage sortie de cycle via P1.6/CLKOUT
avec CLK=1
7 BD Déblocage du générateur de débit de
transmission interne avec BD=1

 Registres de configuration de l'interruption[6]

- IEN0: Registre Interrupt-Enable 0 (0A8H)

Tableau 3.5 Bits du registre IEN0

bit Nom de Bit Fonction


0 EX0 Interruption externe 0
0 : blocage, 1 : déblocage
1 ET0 Interruption Timer 0
0 : blocage, 1 : déblocage
2 EX1 Interruption externe 1
0 : blocage, 1 : déblocage
3 ET1 Interruption Timer 1
0 : blocage, 1 : déblocage
4 ES Interruption interface série
0 : blocage, 1 : déblocage
5 ET2 Interruption Timer 2
0 : blocage, 1 : déblocage
6 WDT Indicateur réinitialisation
Timer Watchdog
7 EAL Toutes interruptions
0 : blocage, 1 : déblocage

- IEN1: Registre Interrupt-Enable 1 (0B8H)


Tableau 3.6 Bits du registre IEN1

Nom de Bit Fonction


0 EADC Interruption ADU 0 : blocage, 1 : déblocage
1 EX2 Interruption ext. 2:0 : blocage, 1 : déblocage
2 EX3 Interruption ext. 3, canal Compare/Capture

51
Chapitre III PSD1_SAB80C535

P1.0/CC0 0 : blocage, 1 : déblocage


3 EX4 Interruption ext. 4, canal Compare/Capture
P1.1/CC1
0 : blocage, 1 : déblocage
4 EX5 Interruption ext. 5, canal Compare/Capture
P1.2/CC2 0 : blocage, 1 : déblocage
5 EX6 Interruption ext. 6, canal Compare/Capture
P1.3/CC3 0 : blocage, 1 : déblocage
SWDT Indicateur démarrage pour Watchdog
7 EXEN2 Interruption Reload externe pour Timer
2 via P1.5/T2EX 0 : blocage, 1 : déblocage

 Registres de configuration de timer0,1 et2[6]

- TMOD: Registre mode Timer (089H)

Tableau 3.7 Bits du registre TMOD

Nom de Bit Fonction


M0 Sélection binaire mode 0-3 pour Timer 0.
0 mode 0(00) : Timer/Counter 13 bits,
M1 mode 1(01) :Timer/Counter 16 bits
1 mode 2(10) : Timer/Counter 8 bits avec
Auto-Reload
C/  Sélection fonction Timer ou Compteu de
2 Timer0: 0 : Timer, 1 : Compteur
Gate Commande de déblocage Timer 0
3
M0 Sélection binaire mode 0-3 pour Timer 1
4 mode 0(00) : Timer/Counter 13 bits,
M1 mode 1(01) :Timer/Counter 16 bits
5 mode 2(10) : Timer/Counter 8 bits avec
Auto-Reload
C/ f Sélection fonction Timer ou Compteur de
6 Timer1: 0 : Timer, 1 : Compteur
Gate Commande de déblocage Timer 1
7
-

- TCON: Registre Timer/Control (088H)

Tableau 3.8 Bits du registre TCON:

bit Nom de Bit Fonction


0 Bit commande pour interrupt.externe 0
IT0 0 : niveau 0, 1 : flanc 1-0 déclenche
interruption

52
Chapitre III PSD1_SAB80C535

1 IE0 Edge-Flag pour interruption 0


Bit commande pour interruption externe 1
2 IT1 0 : niveau 0, 1 : flanc 1-0 déclenche
interruption
Edge-Flag pour interruption 1
3 IE1
Bit de contrôle exécution pour Timer 0
4 TR0 0 : arrêt, 1 : marche
Indicateur dépassement pour Timer 0
5 TF0 automatiquement réinitialisé
Bit de contrôle exécution pour Timer 1
6 TR1 0 : arrêt, 1 : marche
Indicateur dépassement pour Timer 1
7 TF1 automatiquement réinitialisé

- T2CON: Timer 2 - Registre de controle (0C8H)

Tableau 3.9 Bits du registre T2CON:

Nom de Bit Fonction


0 T2I0 Sélection entrée:
1 00 : arrêt Timer 2
T2I1 01 : mode indicateur temps
10 : mode compteur
11 : fonction pilotée
2 Sélection mode Compare
T2CM 0 : mode Compare 0
1 : mode Compare 1
3 T2R0 Sélection mode Reload
4 0X : Reload bloqué
T2R1 10 : Auto-reload en cas de dépassement Timer
11 : Reload via flanc nég. sur P1.5
5 Interruption extérieur . 2 par
I2FR 0 : flanc négatif
1 : flanc positif
6 Interruption ext. 3 par
I3FR 0 : flanc négatif
1 : flanc positif
7 T2PS Sélection du prédiviseur
0 : fosc/12, 1 : fosc/24

53
Chapitre III PSD1_SAB80C535

III.3 Les modes d’adressages: [6]

La famille 8051 offre 5 types d’adressage différents :

 adressage immédiat (adressage constante)

 adressage direct

 adressage indirect (utilisation de registre d’indicateur)

 adressage indirect via registre de base et d’index

 adressage de registre

Avec l’adressage indirect via registre de base et d’index, les indicateurs de données
DPTR ou le compteur de programme PC peut être utilisé comme registre de base. Le
registre d’index à additionner est dans les deux cas l’accumulateur A.

Les dérivations de programme peuvent être réalisées par des instructions de saut
relatif conditionnel. Sont intégrés ici les instructions de saut qui évaluent l’état des Carry-
Flag et de l’accumulateur. Les tests bit par bit, p. ex. de broches de port, permettent
également la configuration simple de dérivations logiques.

III.4 Le jeu d’instruction [6]

Tous les dérivés de la famille 8051 ont le même code d’instruction. Il contient des
instructions de transport, des associations logiques et arithmétiques, des instructions de
manipulation de bits, des instructions de saut, ainsi que des instructions de définition, de
suppression et de déplacement.

Signification des symboles utilisés

Tableau 3. 10symboles utilisés


Rn Un des registres actifs R0 à R7
Direct Adresse d'un octet de RAM interne, d'un port, ou SFR
@Ri Adressage indirect par registre R0 ou R1
#data Donnée 8 bits
#data16 Donnée 16 bits
bit Adresse au niveau du bit

54
Chapitre III PSD1_SAB80C535

rel Adresse relative au PC en complément à 2 de -128 à +127


addr11 Adresse limitée au bloc de 2Ko dans lequel figure l'instruction
addr16 Adresse sur l'espace de 64Ko

- L'instruction MOV : (MOV <dest>, <source>)


Tableau 3.11. jeu d'instruction

Mnémonique Syntaxe
MOV A, Rn
MOV A, direct
MOV A, @Ri
MOV A, #data
MOV Rn, A
MOV Rn, direct
MOV Rn, #data
MOV direct, A
MOV direct, Rn
MOV direct, direct
MOV direct, @Ri
MOV direct, #data
MOV @Ri, A
MOV @Ri, direct
MOV @Ri, #data
MOV DPTR, #data16

- L'instruction MOVC : (MOVC A, @A+<base-reg>) permet de lire un octet dans la


mémoire pgm.

MOVC A,@A+DPTR
MOVC A,@A+PC

- L'instruction MOVX : (MOVX <dest>, <source>) permet la lecture ou l'écriture


d'un octet en RAM externe.

MOVX A,@Ri
MOVX A,@DPTR
MOVX @Ri,A
MOVX @DPTR,A

- Les instructions PUSH et POP

55
Chapitre III PSD1_SAB80C535

permettent respectivement de sauvegarder sur la pile ou d'y récupérer


des données.

PUSH Direct
POP Direct

- L'instruction XCH : (XCH A, <byte>) échange les données de l'accumulateur A et


de l'octet adressé.

XCH A, Rn
XCH A, direct
XCH A, @Ri

- L'instruction XCHD : (XCHD A, @Ri) échange les quartets de poids faible entre
l'accu A et l'octet adressé.

XCHD A, @Ri

- L'instruction ADD : (ADD A, <byte>) additionne un octet et l'accu A, résultat dans


A.

ADD A,Rn
ADD A, direct
ADD A, @Ri
ADD A, #data

- L'instruction ADDC : (ADDC A, <byte>) additionne un octet, l'accu A et la


retenue, résultat dans A.

ADDC A, Rn
ADDC A, direct
ADDC A, @Ri
ADDC A, #data

- L'instruction SUBB : (SUBB A, <byte>) soustrait un octet ainsi que la retenue au


contenu de A, résultat dans A.

SUBB A, Rn
SUBB A, direct
SUBB A, @Ri

56
Chapitre III PSD1_SAB80C535

SUBB A, #data

- L'instruction INC : (INC <byte>) incrémente un octet ou DPTR.

INC @Ri
INC A
INC direct
INC Rn
INC DPTR

- L'instruction DEC : (DEC <byte>) décrémente un octet.

DEC @Ri
DEC A
DEC direct
DEC Rn

- L'instruction MUL : (MUL AB) multiplie l'accu A et le registre B, résultat : octet


faible dans A et octet fort dans B.
- L'instruction DIV : (DIV AB) divise le contenu de A par le contenu de B, quotient
dans A et reste dans B.
- L'instruction DA : (DA A) ajustement décimal de A.

MUL AB
DIV AB
DA A

- L'instruction ANL : (ANL <dest>, <source>) réalise un ET logique entre source et


dest, résultat dans dest.

ANL A, #data
ANL A, @Ri
ANL A, direct
ANL A, Rn
ANL direct, #data
ANL direct, A
ANL C, /bit
ANL C, bit

- L'instruction ORL : (ORL <dest>, <source>) réalise un OU logique entre source et


dest, résultat dans dest.

57
Chapitre III PSD1_SAB80C535

ORL A, #data
ORL A,@Ri
ORL A, direct
ORL A, Rn
ORL direct, #data
ORL direct, A
ORL C, /bit
ORL C, bit

- L'instruction XRL : (XRL <dest>, <source>) réalise un OU exlusif logique entre


source et dest, résultat dans dest.

XRL A, #data
XRL A, @Ri
XRL A, direct
XRL A, Rn
XRL direct, #data
XRL direct, A

- L'instruction CLR : (CLR <A/bit>) met A ou un bit à 0

CLR A
CLR bit
CLR C

- L'instruction CPL : (CPL <A/bit>) complémente A ou un bit

CPL A
CPL bit
CPL C

- L'instruction RL : (RL A) rotation vers la gauche du contenu de A


- L'instruction RLC : (RLC A) rotation vers la gauche du contenu de A+retenue
- L'instruction RR : (RR A) rotaion vers la droite du contenu de A
- L'instruction RRC : (RRC A) rotation vers la droite du contenu de A+retenue
- L'instruction SWAP : (SWAP A) échange le quartet de poids faible avec celui de
poids fort de A

RL A
RLC A
RR A

58
Chapitre III PSD1_SAB80C535

RRC A
SWAP A

- L'instruction SETB : (SETB <bit>) met à 1 un bit

SETB bit
SETB C

- L'instruction ACALL : réalise un saut absolu inconditionnel


- L'instruction LJMP : réalise un saut long inconditionnel
- L'instruction SJMP : réalise un saut court par adressage relatif
- L'instruction JMP : réalise un saut indirect

AJMP addr11
LJMP addr16
SJMP rel
JMP @A+DPTR

- L'instruction JZ : saut si A=0


- L'instruction JNZ : saut si A<>0
- L'instruction JC : saut si retenue à 1
- L'instruction JNC : saut si retenue à 0
- L'instruction JB : saut si bit à 1
- L'instruction JNB : saut si bit à 0
- L'instruction JBC : saut si le bit est à 1 et mise à zero de celui-ci

JZ rel
JNZ rel
JC rel
JNC rel
JB bit, rel
JNB bit, rel
JBC bit,rel

- L'instruction CJNE : (CJNE <byte1>, <byte2>, <rel>) saut si byte1 et byte2 sont
différents

59
Chapitre III PSD1_SAB80C535

CJNE @Ri, #data, rel


CJNE A, #data, rel
CJNE A, direct, rel
CJNE Rn, #data, rel
- L'instruction DJNZ : (DJNZ <byte>, rel) décrémente byte et saut si résultat
différent de 0

DJNZ direct, rel


DJNZ Rn, rel

- L'instruction NOP : pas d'opération

NOP -

III.5 Périphérie On-Chip[5][6]

Port série

Le port série du SAB 80C535 permet une communication en duplex intégral


entre les microcontrôleurs ou entre le microcontrôleur et les périphériques.Le port série
peut fonctionner en 4 modes:

 Mode 0:

Mode registre à décalage. Des données série entre et sort par R'D. T'd
sorties de l'horloge quartz de travail. 8-bits sont transmis et reçus: 8 bits de
données. (LSB en premier).
La vitesse de transmission est fixé à 1 / 12 de la fréquence de l'oscillateur

 Mode 1

10-bits sont transmis (par le biais R'D) ou reçus (par le biais T'd): un bit de
départ (0) , 8 bits de données (LSB en premier), et un bit d'arrêt (1). La vitesse de
transmission est variable.

 Mode 2

11-bits sont transmis (par le biais R'D) ou reçus (par le biais T'd): un bit de départ
(0),8 bits de données (LSB en premier), un bit de données programmable 9ème, et

60
Chapitre III PSD1_SAB80C535

un bit d'arrêt (1).La vitesse de transmission est programmable à 1 / 32 ou 1 / 64 de


la fréquence de l'oscillateur.

 Mode 3

11-bits sont transmis (par le biais T'd) ou reçus (par le biais R'D): un bit de départ
(0), 8 bits de données (LSB en premier), un bit de données programmable 9ème, et
un bit d'arrêt (1). Le mode 3 est identique au mode 2, sauf pour la vitesse de
transmission. La vitesse de transmission en mode 3 est variable.

La variation de taux transmission dans les modes 1 et 3 peuvent être générés par le
timer 1 ou d'un générateur de vitesse interne.

Le convertisseur A/N

Les 8-bit du convertisseur A / D de la SAB 80C535 disposent de huit entrées


analogiques multiplexées (Port 6) et utilise la méthode d'approximations successives.
Il existe trois cadres de temps caractéristique dans un cycle de conversion:

 le temps de conversion ge , qui est le temps nécessaire pour une conversion,


 le g  temps d'échantillonnage qui est inclus dans le temps de conversion et est
mesurée à partir du début de la de conversion,
 le temps de chargement h , qui à son tour fait partie de l'échantillonnage et le temps
est également mesurée à partir du début de conversion.

Dans le temps de chargement de h , la capacité d'entrée analogique CI doivent être


chargés à l'entrée analogique niveau de tension. Pour le reste du temps g 
échantillonnage, après le temps de chargement a réussi, la personne sélectionnée entrée
analogique doit être maintenue constante. Pendant le reste du temps de conversion ge
la conversion lui-même est effectivement réalisée. La conversion peut être programmée
pour être simple ou continu; à la fin de la conversion d'une interruption peut être
générée.

Une caractéristique unique est la capacité de la programmation de la tension de


référence interne. La tension de référence interne pour le convertisseur A/ D deux sont
programmables à l'un de 16 mesures à l'égard des tensions de référence externes. Cette

61
Chapitre III PSD1_SAB80C535

fonctionnalité permet une conversion avec une petite plage de tension de référence
interne pour obtenir une résolution plus élevée.

En outre, les tensions de référence interne peut facilement être adapté par le logiciel
dans la position désirée tension d'entrée analogique.

Le watchdog: le chien de garde

Le watchdog, ou chien de garde est un mécanisme de protection de votre


programme. Après une réinitialisation externe, le timer de surveillance est effacée et
arrêté. Il peut être lancé et autorisé par logiciels, mais il ne peut pas être arrêté en mode
actif de l'appareil. Si le logiciel ne parvient pas à clairement

Pour effacer le chien de garde, deux bits dans deux différents registres de fonction s
péciale doit être fixé par deux instructions consécutives (bits IEN0.6 et IEN1.6).

Il à noter que le timer de surveillance est interrompue pendant le mode ralenti


et powerdown. Il est donc possible d'utiliser le mode veille en combinaison avec la
fonction timer chien de garde. Mais même l'horloge de surveillance ne peut pas
réinitialiser l'appareil lorsque l'un des modes d'économie d'énergie a été entré
accidentellement
Compare /Capture/Reload
Reload :Rechargement
Un rechargement 16-bit peuvent être réalisées avec le 16-bit CRC registre
composé de CRCL et CRCH.
Il existe deux modes à choisis:
Mode 0: Reload -le rechargement- est causée par un débordement de timer 2
(auto-reload)ou rechargement automatique.
Mode1: Reload le rechargement- est causée en une réponse à une transition
négative sur broche T2EX (P1.5) , qui peut également demander une
interruption.
Capture
Cette fonctionnalité permet de sauver le timer réelle / contenu des
compteurs dans un registre sélectionné sur un événement externe ou un logiciel
opération 'écriture. Deux modes sont prévus pour verrouiller, la valeur actuelle
16-bit en timer 2, TL2 registres et TH2 dans un registre dédié capture:

62
Chapitre III PSD1_SAB80C535

Mode 0: Capture est effectuée en réponse à une transition dans le port 1


correspondant CC0 épingles à CC3.
Mode1: opération d'écriture dans l'octet de poids faible du registre capture
dédiée à causes du timer 2 : contenu doit être verrouillée dans ce registre .

Compare
Dans le mode de comparaison, les valeurs 16-bit stocké dans le comparateur
de registres sont dédiés par rapport au contenu du timer2 entrées. Si la valeur de
comptage dans le registre timer 2 correspond à l'une des valeurs stockées, un
signal de sortie approprié est généré et une interruption est demandée. Deux
modes sont fournis comparer:
Mode 0: Sur un match de l'évolution du signal de sortie de faible à élevé. Il
remonte à son plus bas niveau lorsque timer 2 débordements.
Mode 1: La transition du signal de sortie peut être déterminée par le logiciel.
Un débordement du timer 2 ne provoque pas de changement de sortie .

III.6 Les Interruptions

Le tableau 3.10. les sources d'interruption

Source Adresse de Vecteur Vecteur


IE0 0003H Interruption exterieure 0
TF0 000BH Interruption du timer0
IE1 0013H Interruption extérieure 1
TF1 001BH Interruption du timer1
RI + TI 0023H Interruption du port serie
TF2 + EXF2 002BH Interruption du timer2
IADC 0043H Interruption du convert. A/N
IEX2 004BH Interruption extérieure 2
IEX3 0053H Interruption extérieure 3
IEX4 005BH Interruption extérieure 4
IEX5 0063H Interruption extérieure 5
IEX6 006BH Interruption extérieure 6

Chaque vecteur d'interruption peut être individuellement activée ou


désactivée. Le temps de réponse minimal à une demande d'interruption est plus de
3 cycles machine et moins de 9 cycles machine.

63
Chapitre III PSD1_SAB80C535

III.7 Les Timers

Le SAB 80C535 contient trois temporisateurs "timers" de 16 bits / compteurs


qui sont utiles dans de nombreuses applications

Timer 0
Registre de comptage 16 bits comprenant
 registre de comptage partie haute TH0 (08CH)
 registre de comptage partie basse TL0 (08AH)
Timer 1
Registre de comptage 16 bits comprenant
 registre de comptage partie haute TH1 (08DH)
 registre de comptage partie basse TL1 (08BH)
Timer 2
Registre de comptage 16 bits comprenant :
 registre de comptage partie haute TH2 (0CDH)
 registre de comptage partie basse TL2(0CCH)

III.8 Le mode sleep: Power-Down Mode

Dans le mode de mise hors tension, l'oscillateur est arrêté. Par conséquent, toutes
les fonctions sont arrêtés; ALE et PSEN mis à 0.

Programmation avec IDE

L'IDE est l'abréviation de "Environnement de Développement Intégré", il permet


de réaliser des programmes pour le SAB80C535

64
Chapitre III PSD1_SAB80C535

Figure III.7 . Interface Logiciel IDE.

Les étapes de la conception sont:

 Gestion de projet:
Les fonctions de la gestion de projet sont en outre disponibles via le menu Projet
 Sélection spécifique d'un profil microcontrôleur:

En cliquant sur la branche Microcontrôleur Outils: on distingue entre le profils


intégré, et le profil utilisateur.

 La sélection d'un profile intégré requiert une installation préalable des fichier DLL
respectifs et des outils correspondants, une spécification d'outil est aussi déjà
existante et il n'est pas nécessaire de définir manuellement
 La sélection d'un profil utilisateur: L'utilisateur a la possibilité d'attribuer un
désignateur propre pour le type de profil à déterminer ensuite quel outils doit être
utilisé

L'exemple suivant explique les étapes à suivre pour travailler avec le profil
utilisateur

IV.1 Le premier programme avec l'IDE

Exemple du module PSD1_SAB 80C535 de MCLS Modular


 Réaliser le montage
 Connecter la plate forme de travail au PC avec le câble RS232

65
Chapitre III PSD1_SAB80C535

 Alimenter la plate forme a une tension 220/240v


 Lancer l’IDE à partir du menu démarrer
 Faire suivre les étapes suivantes
 Créez un nouveau projet Insérer le fichier qui contient votre programme
dans le projet ,
 Réglage d’un profil microcontrôleur/outil
 Menu OptionProjetMicrocontrôleur
 configuration pour un profil utilisateur «PSD1_ 80C535_AS »
 sélectionnez :les modules utilisateurs: Assembler; Converter; Debugger.
 Insertion des outils
 Menu OptionProjetOutils
Assembler :
. charger le fichier:…\..\as.exe;
. paramètre :$P\$F.asm –x –L,
. message :console
Converter :
. charger le fichier:…\..\p2hex.exe ;
. paramètre :$P\$F.p ;
. message :console
Debugger
. charger le fichier:…\..\debug51.exe ;
. paramètre :$P\$F.hex ;
. message :Aucun
Make: Appuyez sur la flèche

66
Chapitre III PSD1_SAB80C535

Fig.III.8.a. Insertion des outils.-Assembler-

Fig.III.8.b. Insertion des outils-Make-

- S'il y a plusieurs fichier dans le projet: dans l’arborescence cliquant à droite


sur le fichier à compiler  set main file
- Appuyez sur Ctrl+F9:pour lancer la compilation

67
Chapitre III PSD1_SAB80C535

Conclusion:

Dans ce chapitre on a presenté le module d'expérimentation PSD1- SAB80C535


ainsi que certaines applications

Cette description présente un guide du SAB80C535 et elle va permettre aux


étudiants de réaliser des manips avec ce module.

68
Chapitre IV Implémentation d’un PID sous PIC 16F877

Chapitre IV

Implémentation d’un PID sous PIC 16F877

Introduction

Dans ce chapitre on va présenter l’application des microcontrôleurs dans le


domaine de l’automatique à travers une simple application qui consiste à contrôler un
système du premier ordre par un PID tel que le circuit RC.

L’idée de base consiste à commander un moteur à courant continu qui se trouve au


laboratoire asservissement mais l’indisponibilité d’un tachymètre, nous a conduits vers une
commande d’un circuit RC.

Schéma de commande

Le schéma de cette commande est donné par la figure suivante :

Vc
CAN Microcontrôleur CNA RC

Figure IV.1. Schéma de commande

Le microcontrôleur

Le microcontrôleur choisi et un pic16F877, ce choix repose sur l’existence d’un


CAN intégré dans ce PIC.

Le schéma interne de ce microcontrôleur est donné par la figure (IV.2) suivante :

69
Chapitre IV Implémentation d’un PID sous PIC 16F877

Figure IV.2. Schéma interne d’un PIC16F877

Le CNA

Le CNA utilisé est un MC1408-8N, il est présenté par le schéma suivant :

70
Chapitre IV Implémentation d’un PID sous PIC 16F877

Figure IV.3. Schéma interne d’un AD557

Figure IV.4. Boitier d’un MC1408-8N

71
Chapitre IV Implémentation d’un PID sous PIC 16F877

Circuit RC

La figure (IV.5) présente un circuit RC

Figure IV.5 circuit RC

On a alors :

e(t ) = v r + vc

Avec

v r = Ri
1
vc =
c∫
idt

Ce qui conduit à :

dv c
e(t ) = Rc + vc
dt

Et à travers la transformation de Laplace on a :

E ( p) = ( Rcp + 1)Vc ( p)
Vc ( p ) 1
⇒ G( p) = =
E ( p) 1 + Rcp

C’est un système premier ordre avec une constante du temps choisie à τ = RC = 0.2
et un gain statique unitaire.

La figure ci-dessous montre la réponse indicielle pour ce circuit

72
Chapitre IV Implémentation d’un PID sous PIC 16F877
Step Response
1

0.9

0.8

0.7

0.6
Amplitude

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6
Time (sec)

Figure IV.5 réponse indicielle du circuit RC

Spécifications désirées

Ce système doit présenter les spécifications suivantes:

ξ=0.2958

ωn=0.3289

Ce qui correspond à l'allure suivante:

73
Chapitre IV Implémentation d’un PID sous PIC 16F877

Step Response
1.4

1.2

0.8
Amplitude

0.6

0.4

0.2

0
0 10 20 30 40 50 60
Time (sec)

Figure IV.6 réponse indicielle désirée

Ces spécifications vont être réalisées par un régulateur PI ayant les paramètres
suivant:

K=Ki=0.1

Organigramme de commande

L'algorithme de commande est donné par la figure suivante:

Insérer votre organigramme et donner une description avec tous les schémas
correspondants et votre programme

74
Chapitre IV Implémentation d’un PID sous PIC 16F877

Schéma de câblage

CNA

Figure IV.7 câblage du CNA

Avec :

Éditer les valeurs des différentes R et C

Schéma global

Résultats de simulation

75
Chapitre IV Implémentation d’un PID sous PIC 16F877

Conclusion

Dans ce chapitre on a présenté une simple application des microcontrôleurs en


automatique.

Le contrôleur présenté est un PI pour le réglage d'un circuit RC. Les résultats de
l'expérience et de la simulation coïncident avec une certaine erreur Cette application.

76
Conclusion générale

Conclusion générale

Dans ce mémoire on a présenté une description des microcontrôleurs de la famille


PIC16Fxx de MICROCHIP et le SAB80C535 de Siemens.

Le travail présente l'application des microcontrôleurs dans l'automatique à travers la


commande en boucle fermée d'un circuit RC.

Dans le futur on suggère l'application des ces circuits pour un système physique
avec l'implémentation d'un capteur approprié et pour un système non linéaire tout en
adoptant une loi de commande non linéaire.

77
Bibliographie

Bibliographie

[1]. Tim WILMSHURST:"Designing Embedded Systems with PIC


Microcontrollers(Principles and applications)"; Newnes. Edition:2007

[2]. Datasheet 16F84-x: www.Micrchip.com

[3] "Christian Tavernier" : "Les Microcontrôleurs PIC –Description &mise en


oeuvre-".Dunod.

[4]" BIGNOFF"/ "LA PROGRAMMATION DES PICS -Première Partie-PIC


16f84-Revision6"; www.abcelectronique.com

[5]Datasheet SAB 80C515 / SAB 80C535.

[6]La documentation donnée avec MCLS

[7] Datasheet 16F87x-xx: www.Micrchip.com

[8] ]" BIGNOFF"/ "LA PROGRAMMATION DES PICS –Second- Partie-PIC


16f87x-Revision18"; www.abcelectronique.com

[9]. http://www.techno-science.net

[10]. http://www.developpez.com

[11]. http://fr.wikipedia.org

78

Vous aimerez peut-être aussi