Upload
mohamedelhadi
View
38
Download
0
Embed Size (px)
DESCRIPTION
cour pour les pic et MP 8086PIC assembly MP8086 AssemblyPIC MecroProssesor 8086
Citation preview
Ministre de lenseignement suprieur et de la recherche scientifique Universit MENTOURI Constantine
Dpartement dlectrotechnique
Module : Informatique Industrielle 1 Code : ME17
Niveau : Master en lectrotechnique Mthode denseignement : Cours/ TD / TP
Objectifs de la formation :
Contenu du module propos par ladministration : Architecture, Microprocesseur usage gnrale, processeurs de traitement
numrique du signal DSP.
Programmation, exemple de proc.
Les chapitres proposs par le responsable de module :
Chapitre 1 : Historique et volution des ordinateurs et des microprocesseurs
Chapitre 2 : Le microprocesseur Intel 8086
Chapitre 3 : La programmation en assembleur du 8086
Chapitre 4 : Les interfaces dentres/sorties Chapitre 5 : Les interruptions dans 8086
Chapitre 6 : Le Microcontrleur PIC16F84
Chapitre 6 : Les processeurs de traitement numrique du signal DSP.
Annexe : Jeu dinstructions du 8086
Responsable de module : Mr MESSAOUDI Kamel Matre assistant A UMC
Ce document constitue le support du cours et ne prtend donc ni l'originalit, ni l'exhaustivit. Ces notes
doivent beaucoup aux emprunts faits de nombreux ouvrages et diffrents travaux de collgues. Ce
document s'adresse aux tudiants Master1 (Master en lectrotechnique), dpartement dlectrotechnique, universit Mentouri de Constantine.
Anne Universitaire 2011-2012
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 1
Chapitre I : Historique et volution des ordinateurs et des microprocesseurs
I. Prface :
Apparus ds la cration des premiers circuits intgrs numriques, au dbut des annes
1970, les microprocesseurs constituent le coeur de presque toutes les ralisations lectroniques; on
en trouve dans tous les domaines, notamment : l'informatique (de la calculatrice l'ordinateur),
l'automobile (ABS, injection, ...), l'automatique (automates programmables, contrle de processus,
...), l'lectronique domestique (thermomtre, tlcommande, carte puce, ...).
Les performances des microprocesseurs sont lies aux possibilits offertes par la
technologie, en terme de capacit (nombre de portes logiques intgres) et de vitesse, et au choix
d'architectures adaptes (ou imposes pour cause de compatibilit ascendante); l'heure actuelle, on
trouve sur le march des microprocesseurs intgrant des millions de transistors, fonctionnant plus
de 3000 MHz et disposs dans des botiers de plusieurs centaines de broches, ils sont issus de
diffrentes approches architecturales : CISC, RISC, DSP et VLIW.
L'objectif de ce chapitre est de retracer l'volution des microprocesseurs, en liaison avec
celle de la technologie.
II. Prhistoire des ordinateurs :
Les premires machines calculer taient purement mcaniques : bouliers, abaques, ...
(antiquit). La premire vraie machine calculer est apparue en 1942 : (Pascal, machine
additionner). Une autre machine multiplier propose par Leibniz en 1694, base sur les travaux de
John Neper (1617, logarithmes). Vers les 18eme sicle, une autre machine programmable base
des cartes perfores est apparue (mtier tisser, Jacquard).
II.1. Machines lectromcaniques :
Machine calculer cartes perfores : Hermann Hollerith, 1885, facilite le recensement amricain.
Machines industrielles pour la comptabilit et les statistiques. Ces machines sont base de relais lectromcaniques (Aiken et Stibitz, 1936-1939).
II.2. Machines lectroniques :
Premire machine calculer lectronique : ENIAC, 1944, Eckert et Mauchly, 18000 tubes lectroniques, machine programme cbl.
Machine programme enregistr : John Von Neumann, 1946, les instructions sont enregistres dans la mmoire du calculateur : ordinateur.
Premier ordinateur commercialis : SSEC dIBM, 1948. Ordinateur transistors : 1963, PDP5 de Digital Equipment Corporation (DEC),
introduction des mmoires ferrites : mini-ordinateurs.
Micro-ordinateurs : 1969-70, utilisation des circuits intgrs LSI. Premier microprocesseur : Intel, 1971, microprocesseur 4004, puis 8008, premier
microordinateur : le Micral, 1973, France, puis lAltair, 1975, Etats-Unis. Autres microprocesseurs : 8080 et 8085 dIntel, 6800 de Motorola, Z80 de Zilog :
microprocesseurs 8 bits, dbut des annes 1980.
Microprocesseurs 16 bits : 8086/8088 dIntel, 68000 de Motorola. Microprocesseurs 32 bits en 1986 : 80386 dIntel et 68020 de Motorola. Fabrication en grandes sries des micro-ordinateurs : 1977, Apple, Commodore, Tandy. IBM PC + MS-DOS (Microsoft) en 1981.
II.3. Machines actuelles :
Les ordinateurs de nos jours sont de plus en plus puissants, bass sur des microprocesseurs
performants : Pentium, Power PC, ... ; Avec des nouvelles architectures de microprocesseurs :
RISC. Et avec des applications multimdia, rseaux, ....
De nos jours, est apparue aussi la notion des systmes embarqus : microcontrleurs,
processeurs de traitement de signal (DSP), les microprocesseurs configurables ...
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 2
III. Architecture et fonctionnement dun microprocesseur : III.1 Structure dun calculateur :
Figure n1 : Structure dun calculateur
Llment de base dun calculateur est constitu par lunit centrale de traitement (UCT, CPU: Central Processing Unit). LUCT est constitue :
Dune unit arithmtique et logique (UAL, ALU : Arithmetic and Logic Unit) : cest lorgane de calcul du calculateur ;
De registres : zones de stockage des donnes de travail de lUAL (oprandes, rsultats intermdiaires) ;
Dune unit de contrle (UC, CU : Control Unit) : elle envoie les ordres (ou commandes) tous les autres lments du calculateur afin dexcuter un programme.
La mmoire centrale contient : Le programme excuter : suite dinstructions lmentaires ; Les donnes traiter.
Lunit dentres/sorties (E/S) est un intermdiaire entre le calculateur et le monde extrieur. Lunit de transfert est le support matriel de la circulation des donnes. Les changes dordres et de donnes dans le calculateur sont synchroniss par une horloge qui
dlivre des impulsions (signal dhorloge) des intervalles de temps fixes. Dfinition : Un microprocesseur consiste en une unit centrale de traitement (UAL + registres +
unit de contrle) entirement contenue dans un seul circuit intgr. Un calculateur construit
autour dun microprocesseur est un microcalculateur ou un microordinateur. Un circuit intgr qui inclut une UCT, de la mmoire et des priphriques est un microcontrleur.
III.2 Organisation de la mmoire centrale :
La mmoire peut tre vue comme un ensemble de cellules ou cases contenant chacune une
information : une instruction ou une donne. Chaque case mmoire est repre par un numro
dordre unique : son adresse. Une case mmoire peut tre lue ou crite par le microprocesseur (cas des mmoires vives) ou bien seulement lue (cas des mmoires mortes). La figure suivante montre
le schma synoptique dune mmoire :
Figure n2 : Organisation de la mmoire centrale
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 3
III.3 Circulation de linformation dans un calculateur La ralisation matrielle des ordinateurs est gnralement base sur larchitecture de
VonNeumann :
Figure n3 : Architecture de base de VonNeumann de transfert des donnes
Le microprocesseur change des informations avec la mmoire et lunit dE/S, sous forme de mots binaires, au moyen dun ensemble de connexions appel bus. Un bus permet de transfrer des donnes sous forme parallle, cest--dire en faisant circuler n bits simultanment.
Les microprocesseurs peuvent tre classs selon la longueur maximale des mots binaires
quils peuvent changer avec la mmoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ... Le bus peut tre dcompos en trois bus distincts :
Le bus dadresses permet au microprocesseur de spcifier ladresse de la case mmoire lire ou crire ;
Le bus de donnes permet les transferts entre le microprocesseur et la mmoire ou les E/S ; Le bus de commande transmet les ordres de lecture et dcriture de la mmoire et des E/S.
Figure n4 : Architecture dtall de VonNeumann de transfert des donnes.
Remarque : Les bus de donnes et de commande sont bidirectionnels, le bus dadresse est unidirectionnel : seul le microprocesseur peut dlivrer des adresses (il existe une drogation pour
les circuits daccs direct la mmoire, DMA). III.4. Description matrielle dun microprocesseur :
Un microprocesseur se prsente sous la forme dun circuit intgr muni dun nombre gnralement important de broches. Exemples :
Intel 8085, 8086, Zilog Z80 : 40 broches, DIP (Dual In-line Package) ; Motorola 68000 : 64 broches, DIP ; Intel 80386 : 196 broches, PGA (Pin Grid Array).
La technologie de fabrication : NMOS, PMOS, CMOS. On peut reprsenter donc un
microprocesseur par son schma fonctionnel :
Figure n5 : Schma fonctionnel
dun microprocesseur
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 4
III.5 Fonctionnement dun microprocesseur : Un microprocesseur excute un programme. Le programme est une suite dinstructions
stockes dans la mmoire. Une instruction peut tre code sur un ou plusieurs octets. Le format
dune instruction est donnes par :
Figure n6 : Format et arrangement dune instruction excute par un microprocesseur.
Pour excuter les instructions dans lordre tabli par le programme, le microprocesseur doit savoir chaque instant ladresse de la prochaine instruction excuter. Le microprocesseur utilise un registre contenant cette information. Ce registre est appel pointeur dinstruction (IP : Instruction Pointer) ou compteur dinstructions ou compteur ordinal. La figure suivante illustre un exemple dIP :
Figure n7 : Exemple dun pointeur dinstruction IP.
Remarque n1 :
La valeur initiale du pointeur dinstruction est fixe par le constructeur du microprocesseur. Elle vaut une valeur bien dfinie chaque mise sous tension du microprocesseur ou bien lors dune remise zro (reset).
Pour savoir quel type dopration doit tre excut (addition, soustraction, ...), le microprocesseur lit le premier octet de linstruction pointe par le pointeur dinstruction (code opratoire) et le range dans un registre appel registre dinstruction. Le code opratoire est dcod par des circuits de dcodage contenus dans le microprocesseur. Des signaux de commande pour
lUAL sont produits en fonction de lopration demande qui est alors excute.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 5
Remarque n2 : Pour excuter une instruction, lUAL utilise des registres de travail, exemple : laccumulateur, registre temporaire recevant des donnes intermdiaires. Pendant que linstruction est dcode, le pointeur dinstruction est incrment de faon pointer vers linstruction suivante :
Figure n8 : Incrmentation du pointeur dinstruction.
Ensuite le processus de lecture et de dcodage des instructions recommence. A la suite de
chaque instruction, un registre du microprocesseur est actualis en fonction du dernier rsultat :
cest le registre dtat du microprocesseur. Chacun des bits du registre dtat est un indicateur dtat ou flag (drapeau). Exemple : Registre dtat du microprocesseur Z80 :
Figure n9 : Registre dtat du microprocesseur Z80.
Les indicateurs dtat sont activs lorsquune certaine condition est remplie, exemple : le flag Z est mis 1 lorsque la dernire opration a donn un rsultat nul, le flag C est mis un lorsque
le rsultat dune addition possde une retenue, ... Les indicateurs dtat sont utiliss par les instructions de saut conditionnels : en fonction de
ltat dun (ou plusieurs) flags, le programme se poursuit de manire diffrente. Toutes ces tapes (lecture de linstruction, dcodage, excution) sont synchronises par un
squenceur qui assure le bon droulement des oprations :
Figure n10 : Synchronisation des tapes dexcution dune instruction.
Pour excuter le programme contenu dans la mmoire centrale, le squenceur du
microprocesseur excute lui-mme un programme appel micro-code, contenu dans une mmoire
morte lintrieur du microprocesseur. Le squenceur est dirig par une horloge qui dlivre un signal de frquence donne
permettant denchaner les diffrentes tapes de lexcution dune instruction :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 6
Figure n11 : Le signal Horloge et le cycle dinstruction.
Chaque instruction est caractrise par le nombre de priodes dhorloge (ou microcycles) quelle utilise (donne fournie par le fabricant du microprocesseur). Exemple : horloge 5 MHz, priode T = 1/f = 0, 2 s. Si linstruction sexcute en 3 microcycles, la dure dexcution de linstruction est : 3 0,2 = 0, 6 s. Lhorloge est constitue par un oscillateur quartz dont les circuits peuvent tre internes ou externes au microprocesseur.
La figure suivante montre la structure complte dun microprocesseur simple : pour fonctionner, un microprocesseur ncessite donc au minimum les lments suivants :
Figure n12 : Structure complte dun microprocesseur.
IV. Les mmoires et les microprocesseurs :
IV.1. Mmoires ROM et RAM :
On distingue deux types de mmoires :
Les mmoires vives (RAM : Random Access Memory) ou mmoires volatiles. Elles perdent leur contenu en cas de coupure dalimentation. Elles sont utilises pour stocker temporairement des donnes et des programmes. Elles peuvent tre lues et crites par le
microprocesseur ;
Les mmoires mortes (ROM : Read Only Memory) ou mmoires non volatiles. Elles conservent leur contenu en cas de coupure dalimentation. Elles ne peuvent tre que lues par le microprocesseur (pas de possibilit dcriture). On les utilise pour stocker des donnes et des programmes de manire dfinitive.
Les mmoires sont caractrises par leur capacit : nombre total de cases mmoire
contenues dans un mme botier.
IV.2. Schma fonctionnel dune mmoire :
Figure n13 : Schma fonctionnel dune mmoire.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 7
Le nombre de lignes dadresses dpend de la capacit de la mmoire : n lignes dadresses permettent dadresser 2n cases mmoire : 8 bits dadresses permettent dadresser 256 octets, 16 bits dadresses permettent dadresser 65536 octets (= 64 Ko), ...etc. Exemple : mmoire RAM 6264, capacit = 8K8 bits : 13 broches dadresses A0 `a A12, 213 = 8192 = 8 Ko. IV.3. Interfaage microprocesseur/mmoire :
Figure n14 : Interfaage microprocesseur/mmoire.
Reprsentation condense (plus pratique) :
Figure n15 : Reprsentation condense de linterfaage microprocesseur/mmoire.
IV.4. Chronogrammes de lecture/criture en mmoire :
Une caractristique importante des mmoires est leur temps daccs : cest le temps qui scoule entre linstant o ladresse de la case mmoire est prsente sur le bus dadresses et celui o la mmoire place la donne demande sur le bus de donnes. Ce temps varie entre 50ns
(mmoires rapides) et 300ns (mmoires lentes).
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 8
Figure n16 : Chronogrammes de lecture/criture en mmoire.
IV.5. Classification des mmoires
Jusqu la fin des annes 1970, on utilisait des mmoires tores magntiques, lentes et de faibles capacits. Actuellement, on nutilise plus que des mmoires semi-conducteurs.
Mmoires mortes :
ROM : Read Only Memory. Mmoire lecture seule, sans criture. Son contenu est programm une fois pour toutes par le constructeur. Avantage : faible cot. Inconvnient :
ncessite une production en trs grande quantit.
PROM: Programmable Read Only Memory. ROM programmable une seule fois par lutilisateur (ROM OTP : One Time Programming) en faisant sauter des fusibles. Ncessite un programmateur spcialis : application dune tension de programmation (21 ou 25 V) pendant 20 ms.
EPROM : Erasable PROM, appele aussi UVPROM. ROM programmable lectriquement avec un programmateur et effaable par exposition un rayonnement ultraviolet pendant 30
minutes. Famille 27nnn, exemple : 2764 (8 Ko), 27256 (32 Ko). Avantage : reprogrammable
par lutilisateur. EEPROM : Electrically Erasable PROM. ROM programmable et effaable lectriquement.
Lecture vitesse normale ( 100 ns). Ecriture (= effacement) trs lente ( 10 ms). Application : les EEPROM contiennent des donnes qui peuvent tre modifies de temps en
temps, exemple : paramtres de configuration des ordinateurs. Avantage : programmation
sans extraction de la carte et sans programmateur. Inconvnient : cot lev.
Mmoires vives :
SRAM : Static Random Access Memory. Mmoire statique accs alatoire, base de bascules semi-conducteurs deux tats (bascules RS). Famille 62nnn, exemple : 62128
(16 Ko). Avantage : trs rapide, simple dutilisation. Inconvnient : compliqu raliser. DRAM : Dynamic RAM. Base sur la charge de condensateurs : condensateur charg = 1,
condensateur dcharg = 0. Avantage : intgration leve, faible cot. Inconvnient :
ncessite un rafrachissement priodique cause du courant de fuite des condensateurs.
Application : ralisation de la mmoire vive des ordinateurs (barrettes mmoire SIMM :
Single In-line Memory module).
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 9
Chapitre II : Le microprocesseur Intel 8086
I. Description physique du 8086 :
Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en 1978. Cest le premier microprocesseur de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486, Pentium I,
PII, ...). Il se prsente sous la forme dun botier DIP (Dual In-line Package) 40 broches :
Botier DIP du microprocesseur 8086 Schma fonctionnel du 8086
Figure n1 : Botier DIP et schma fonctionnel du microprocesseur 8086.
II. Description et utilisation des signaux du 8086 :
CLK : entre du signal dhorloge qui cadence le fonctionnement du microprocesseur. Ce signal provient dun gnrateur dHorloge : le 8284.
Figure n2 : Gnrateur dHorloge (8284) du microprocesseur 8086.
RESET : entre de remise zro du microprocesseur. Lorsque cette entre est mise ltat haut pendant au moins 4 priodes dhorloge, le microprocesseur est rinitialis : il va excuter linstruction se trouvant ladresse FFFF0H (adresse de bootstrap). Le signal de RESET est fourni par le gnrateur dhorloge. READY : entre de synchronisation avec la mmoire. Ce signal provient galement du
gnrateur dhorloge. TEST : entre de mise en attente du microprocesseur dun vnement extrieur. MN/MX : entre de choix du mode de fonctionnement du microprocesseur :
Mode minimum (MN/MX = 1) : le 8086 fonctionne de manire autonome, il gnre lui-mme le bus de commande (RD, WR, ...) ;
Mode maximum (MN/MX=0) : Ces signaux de commande sont produits par un contrleur de bus, le 8288. Ce mode permet de raliser des systmes multiprocesseurs.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 10
NMI et INTR : entres de demande dinterruption. INTR : interruption normale, NMI (Non Maskable Interrupt) : interruption prioritaire.
INTA : Interrupt Acknowledge, indique que le microprocesseur accepte linterruption. HOLD et HLDA : signaux de demande daccord daccs direct la mmoire (DMA). S0 S7 : signaux dtat indiquant le type dopration en cours sur le bus. A16/S3 A19/S6 : 4 bits de poids fort du bus dadresses, multiplexs avec 4 bits dtat. AD0 AD15 : 16 bits de poids faible du bus dadresses, multiplexs avec 16 bits de donnes. Le bus A/D est multiplex (multiplexage temporel) do la ncessit dun dmultiplexage pour obtenir sparment les bus dadresses et de donnes : 16 bits de donnes (microprocesseur 16 bits) ; 20 bits dadresses, do 220 = 1 Mga adresses dans lespace mmoire adressable par le
8086.
Chronogramme du bus A/D :
Figure n3 : Chronogramme du bus A/D du microprocesseur 8086.
Le dmultiplexage des signaux AD0 AD15 (ou A16/S3 A19/S6) se fait en mmorisant
ladresse lorsque celle-ci est prsente sur le bus A/D, laide dun verrou (latch), ensemble de bascules D. La commande de mmorisation de ladresse est gnre par le microprocesseur : cest le signal ALE, Address Latch Enable.
Figure n4 : Circuit de dmultiplexage A/D du microprocesseur 8086.
Fonctionnement :
si ALE = 1, le verrou est transparent (Q = D) ; si ALE = 0, mmorisation de la dernire valeur de D sur les sorties Q; les signaux de lecture (RD) ou dcriture (WR) ne sont gnrs par le microprocesseur que
lorsque les donnes sont prsentes sur le bus A/D.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 11
Exemples de bascules D : circuits 8282, 74373, 74573.
Figure n5 : Exemples de bascules D : circuits 8282.
RD : Read, signal de lecture dune donne. WR : Write, signal dcriture dune donne. M/IO : Memory/Input-Output, indique si le 8086 adresse la mmoire (M/IO = 1) ou les
entres/sorties (M/IO = 0).
DEN : Data Enable, indique que des donnes sont en train de circuler sur le bus A/D
(quivalent de ALE pour les donnes).
DT/R : Data Transmit/Receive, indique le sens de transfert des donnes :
DT/R = 1 : donnes mises par le microprocesseur (criture) ; DT/R = 0 : donnes reues par le microprocesseur (lecture).
Figure n6 : Chronogramme de bascules D.
Les signaux DEN et DT/R sont utiliss pour la commande de tampons de bus (Buffers)
permettant damplifier le courant fourni par le microprocesseur sur le bus de donnes. Exemples de tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245.
Figure n7 : Circuits transmetteurs bidirectionnels 8286 ou 74245.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 12
BHE : Bus High Enable, signal de lecture de loctet de poids fort du bus de donnes. Le 8086 possde un bus dadresses sur 20 bits, do la capacit dadressage de 1 Mo ou 512 Kmots de 16 bits (bus de donnes sur 16 bits).
Le mga-octet adressable est divis en deux banques de 512 Ko chacune : la banque
infrieure (ou paire) et la banque suprieure (ou impaire). Ces deux banques sont
slectionnes par :
A0 pour la banque paire qui contient les octets de poids faible ; BHE pour la banque impaire qui contient les octets de poids fort.
Figure n8 : Banque infrieure (paire) et la banque suprieure (impaire) .
Seuls les bits A1 A19 servent dsigner une case mmoire dans chaque banque de 512
Ko. Le microprocesseur peut ainsi lire et crire des donnes sur 8 bits ou sur 16 bits :
BHE A0 Octets transfrs
0 0 les deux octets (mot complet)
0 1 octet fort (adresse impaire)
1 0 octet faible (adresse paire)
1 1 aucun octet
Remarque : Le 8086 ne peut lire une donne sur 16 bits en une seule fois, uniquement si loctet de poids fort de cette donne est rang une adresse impaire et loctet de poids faible une adresse paire (alignement sur les adresses paires), sinon la lecture de cette donne doit se faire en deux
oprations successives, do une augmentation du temps dexcution du transfert d un mauvais alignement des donnes.
Ralisation des deux banques avec plusieurs botiers mmoire :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 13
Figure n9 : Ralisation des deux banques avec plusieurs botiers mmoire.
Cration du bus systme du 8086 :
Figure n10 : Cration du bus systme du 8086.
III. Organisation interne du 8086 :
Le 8086 est constitu de deux units fonctionnant en parallle :
Lunit dexcution (EU : Excution Unit) ; Lunit dinterface de bus (BIU : Bus Interface Unit).
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 14
Figure n11 : Lunit dexcution et lunit dinterface du 8086.
Rle des deux units :
Lunit dinterface de bus (BIU) recherche les instructions en mmoire et les range dans une file dattente ;
Lunit dexcution (EU) excute les instructions contenues dans la file dattente. Les deux units fonctionnent simultanment, do une acclration du processus dexcution
dun programme (fonctionnement selon le principe du pipe-line). Le microprocesseur 8086 contient 14 registres rpartis en 4 groupes :
Registres gnraux : 4 registres sur 16 bits.
AX = (AH,AL) ;
BX = (BH,BL) ;
CX = (CH,CL) ;
DX = (DH,DL).
Ils peuvent tre galement considrs comme 8 registres sur 8 bits. Ils servent contenir
temporairement des donnes. Ce sont des registres gnraux mais ils peuvent tre utiliss pour des
oprations particulires. Exemple : AX = accumulateur, CX = compteur.
Registres de pointeurs et dindex : 4 registres sur 16 bits. Pointeurs :
SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde de donnes en
cours dexcution dun programme) ; BP : Base Pointer, pointeur de base, utilis pour adresser des donnes sur la pile.
Index :
SI : Source Index ;
DI : Destination Index.
Ils sont utiliss pour les transferts de chanes doctets entre deux zones mmoire. Les pointeurs et les index contiennent des adresses de cases mmoire.
Pointeur dinstruction et indicateurs (flags) : 2 registres sur 16 bits. Le pointeur dinstruction : IP, contient ladresse de la prochaine instruction excuter. Le registre des indicateurs (flags)
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 15
C : indicateur de retenue (carry) ;
P : indicateur de parit ;
A : indicateur de retenue auxiliaire ;
Z : indicateur de zro ;
S : indicateur de signe ;
T : indicateur dexcution pas pas (trap) ; I : indicateur dautorisation dinterruption ; D : indicateur de dcrmentation ;
O : indicateur de dpassement (overflow).
Figure n12 : Le registre falgs du 8086.
Registres de segments : 4 registres sur 16 bits. CS : Code Segment, registre de segment de code ;
DS : Data Segment, registre de segment de donnes ;
SS : Stack Segment, registre de segment de pile ;
ES : Extra Segment, registre de segment supplmentaire pour les donnes ;
Les registres de segments, associs aux pointeurs et aux index, permettent au
microprocesseur 8086 dadresser lensemble de la mmoire. IV. Gestion de la mmoire par le 8086 :
Lespace mmoire adressable par le 8086 est de 220 = 1 048 576 octets = 1 Mo (20 bits dadresses). Cet espace est divis en segments. Un segment est une zone mmoire de 64 Ko (65 536 octets) dfinie par son adresse de dpart qui doit tre un multiple de 16.
Dans une telle adresse, les 4 bits de poids faible sont zro. On peut donc reprsenter
ladresse dun segment avec seulement ses 16 bits de poids fort, les 4 bits de poids faible tant implicitement 0.
Pour dsigner une case mmoire parmi les 216
= 65 536 contenues dans un segment, il suffit
dune valeur sur 16 bits. Ainsi, une case mmoire est repre par le 8086 au moyen de deux quantits sur 16 bits :
Ladresse dun segment ; Un dplacement ou offset (appel aussi adresse effective) dans ce segment.
Cette mthode de gestion de la mmoire est appele segmentation de la mmoire.
Figure n13 : Segmentation de mmoire du 8086.
La donne dun couple (segment,offset) dfinit une adresse logique, note sous la forme segment : offset.
Ladresse dune case mmoire donne sous la forme dune quantit sur 20 bits (5 digits hexa) est appele adresse physique car elle correspond la valeur envoye rellement sur le bus
dadresses A0 - A19.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 16
Figure n14 : Correspondance entre adresse logique et adresse physique.
Ainsi, ladresse physique se calcule par lexpression : Adresse physique = 16 segment + offset
Car le fait dinjecter 4 zros en poids faible du segment revient effectuer un dcalage de 4 positions vers la gauche, cest dire une multiplication par 24 = 16.
A un instant donn, le 8086 a accs 4 segments dont les adresses se trouvent dans les
registres de segment CS, DS, SS et ES. Le segment de code contient les instructions du programme,
le segment de donnes contient les donnes manipules par le programme, le segment de pile
contient la pile de sauvegarde et le segment supplmentaire peut aussi contenir des donnes.
Le registre CS est associ au pointeur dinstruction IP, ainsi la prochaine instruction excuter se trouve ladresse logique CS : IP.
Figure n15 :.
De mme, les registres de segments DS et ES peuvent tre associs un registre dindex. Exemple : DS : SI, ES : DI. Le registre de segment de pile peut tre associ aux registres de
pointeurs : SS : SP ou SS : BP. Mmoire accessible par le 8086 un instant donn :
Figure n16 : .
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 17
Remarque : les segments ne sont pas ncessairement distincts les uns des autres, ils peuvent se
chevaucher ou se recouvrir compltement.
Figure n17 : .
Le nombre de segments utilis dfinit le modle mmoire du programme. Contenu des
registres aprs un RESET du microprocesseur :
IP = 0000H
CS = FFFFH
DS = 0000H
ES = 0000H
SS = 0000H
Puisque CS contient la valeur FFFFH et IP la valeur 0000H, la premire instruction excute
par le 8086 se trouve donc ladresse logique FFFFH : 0000H, correspondant ladresse physique FFFF0H (bootstrap). Cette instruction est gnralement un saut vers le programme principal qui
initialise ensuite les autres registres de segment.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 18
Chapitre III : La programmation en assembleur du microprocesseur 8086
I. Gnralits :
Chaque microprocesseur reconnat un ensemble dinstructions appel jeu dinstructions (Instruction Set) fix par le constructeur. Pour les microprocesseurs classiques, le nombre
dinstructions reconnues varie entre 75 et 150 (microprocesseurs CISC : Complex Instruction Set Computer). Il existe aussi des microprocesseurs dont le nombre dinstructions est trs rduit (microprocesseurs RISC : Reduced Instruction Set Computer) : entre 10 et 30 instructions,
permettant damliorer le temps dexcution des programmes. Une instruction est dfinie par son code opratoire, valeur numrique binaire difficile
manipuler par ltre humain. On utilise donc une notation symbolique pour reprsenter les instructions : les mnmoniques. Un programme constitu de mnmoniques est appel programme
en assembleur.
Les instructions peuvent tre classes en groupes :
Instructions de transfert de donnes ; Instructions arithmtiques ; Instructions logiques ; Instructions de branchement ...
II. Les instructions de transfert :
Elles permettent de dplacer des donnes dune source vers une destination : Registre vers mmoire ; Registre vers registre ; Mmoire vers registre.
Syntaxe : MOV destination, source
Remarques :
- Le microprocesseur 8086 nautorise pas les transferts de mmoire vers mmoire (pour ce faire, il faut passer par un registre intermdiaire).
- MOV est labrviation du verbe to move : dplacer. II.1. Mode dadressage :
Il existe diffrentes faons de spcifier ladresse dune case mmoire dans une instruction (ce sont les modes dadressage). Exemples de modes dadressage simples : mov ax,bx : charge le contenu du registre BX dans le registre AX. Dans ce cas, le transfert
se fait de registre registre : adressage par registre ;
mov al,12H : charg le registre AL avec la valeur 12H. La donne est fournie immdiatement avec linstruction : adressage immdiat.
mov bl,[1200H] : transfre le contenu de la case mmoire dadresse effective (offset) 1200H vers le registre BL. Linstruction comporte ladresse de la case mmoire o se trouve la donne : adressage direct. Ladresse effective reprsente loffset de la case mmoire dans le segment de donnes (segment dont ladresse est contenue dans le registre DS) : segment par dfaut.
Figure n1 : adressage direct.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 19
On peut changer le segment lors dun adressage direct en ajoutant un prfixe de segment, exemple : mov bl,es :[1200H]. On parle alors de forage de segment.
Figure n2 : Forage de segment.
Remarque : Dans le cas de ladressage immdiat de la mmoire, il faut indiquer le format de la donne : octet ou mot (2 octets) car le microprocesseur 8086 peut manipuler des donnes sur 8 bits
ou 16 bits. Pour cela, on doit utiliser un spcificateur de format :
mov byte ptr [1100H],65H : transfre la valeur 65H (sur 1 octet) dans la case mmoire doffset 1100H ;
mov word ptr [1100H],65H : transfre la valeur 0065H (sur 2 octets) dans les cases mmoire
doffset 1100H et 1101H.
Figure n3 : Spcification de format lors de ladressage direct.
Remarque : Les microprocesseurs Intel rangent loctet de poids faible dune donne sur plusieurs octets ladresse la plus basse (format Little Endian). II.2. Modes dadressage volus : Adressage bas : loffset est contenu dans un registre de base BX ou BP.
Exemples :
- mov al,[bx] : transfre la donne dont loffset est contenu dans le registre de base BX vers le registre AL. Le segment associ par dfaut au registre BX est le segment
de donnes : on dit que ladressage est bas sur DS; - mov al,[bp] : le segment par dfaut associ au registre de base BP est le segment de
pile. Dans ce cas, ladressage est bas sur SS.
Figure n4 : Adressage bas.
adressage index : semblable ladressage bas, sauf que loffset est contenu dans un registre dindex SI ou DI, associs par dfaut au segment de donnes. Exemples :
- mov al,[si] : charge le registre AL avec le contenu de la case mmoire dont loffset est contenu dans SI ;
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 20
- mov [di],bx : charge les cases mmoire doffset DI et DI + 1 avec le contenu du registre BX.
Remarque : Une valeur constante peut ventuellement tre ajoute aux registres de base ou dindex pour obtenir loffset. Exemple :
mov [si+100H],ax
qui peut aussi scrire mov [si][100H],ax
ou encore
mov 100H[si],ax
Les modes dadressage bass ou indexs permettent la manipulation de tableaux rangs en mmoire. Exemple :
mov si,0
mov word ptr table[si],1234H
mov si,2
mov word ptr table[si],5678H
Dans cet exemple, table reprsente loffset du premier lment du tableau et le registre SI joue le rle dindice de tableau :
Figure n5 : Adressage index.
Adressage bas et index : loffset est obtenu en faisant la somme dun registre de base, dun registre dindex et dune valeur constante. Exemple :
mov ah,[bx+si+100H]
Ce mode dadressage permet ladressage de structures de donnes complexes : matrices, enregistrements, ... Exemple :
mov bx,10
mov si,15
mov byte ptr matrice[bx][si],12H
Dans cet exemple, BX et SI jouent respectivement le rle dindices de ligne et de colonne dans la matrice.
III. Les instructions arithmtiques :
Les instructions arithmtiques de base sont laddition, la soustraction, la multiplication et la division qui incluent diverses variantes. Plusieurs modes dadressage sont possibles. III.1. Laddition :
ADD oprande1,oprande2
Lopration effectue est : oprande1 oprande1 + oprande2. Exemples :
add ah,[1100H] : ajoute le contenu de la case mmoire doffset 1100H laccumulateur AH (adressage direct) ;
add ah,[bx] : ajoute le contenu de la case mmoire pointe par BX laccumulateur AH (adressage bas) ;
add byte ptr [1200H],05H : ajoute la valeur 05H au contenu de la case mmoire doffset 1200H (adressage immdiat).
III.2. La soustraction :
SUB oprande1,oprande2
Lopration effectue est : oprande1 oprande1 oprande2.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 21
III.3. La multiplication :
MUL oprande, o oprande est un registre ou une case mmoire.
Cette instruction effectue la multiplication du contenu de AL par un oprande sur 1 octet ou
du contenu de AX par un oprande sur 2 octets. Le rsultat est plac dans AX si les donnes
multiplier sont sur 1 octet (rsultat sur 16 bits), dans (DX,AX) si elles sont sur 2 octets (rsultat sur
32 bits).
Exemples :
mov al,51 mov bl,32
mul bl
AX = 51 32 mov ax,4253
mov bx,1689
mul bx
(DX, AX) = 4253 1689 mov al,43
mov byte ptr [1200H],28
mul byte ptr [1200H]
AX = 43 28 mov ax,1234
mov word ptr [1200H],5678
mul word ptr [1200H]
(DX, AX) = 1234 5678 III.4. La division :
DIV oprande, o oprande est un registre ou une case mmoire.
Cette instruction effectue la division du contenu de AX par un oprande sur 1 octet ou le
contenu de (DX,AX) par un oprande sur 2 octets. Rsultat : si loprande est sur 1 octet, alors AL = quotient et AH = reste ; si loprande est sur 2 octets, alors AX = quotient et DX = reste. Exemples :
mov ax,35 mov bl,10
div bl
AL = 3 (quotient) et AH = 5 (reste) mov dx,0
mov ax,1234
mov bx,10
div bx
AX = 123 (quotient) et DX = 4 (reste) III.5. Autres instructions arithmtiques :
ADC : addition avec retenue ; SBB : soustraction avec retenue ; INC : incrmentation dune unit ; DEC : dcrmentation dune unit ; IMUL : multiplication signe ; IDIV : division signe.
IV. Les instructions logiques :
Ce sont des instructions qui permettent de manipuler des donnes au niveau des bits. Les
oprations logiques de base sont :
ET; OU;
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 22
OU exclusif ; Complment 1; Complment 2; Dcalages et rotations.
Les diffrents modes dadressage sont disponibles. IV.1. ET logique :
AND oprande1,oprande2
Lopration effectue est : oprande1 oprande1 ET oprande2. Application : masquage de bits pour mettre zro certains bits dans un mot.
Exemple 01 :
mov al,10010110B
mov bl,11001101B
and al, bl
AL= 1 0 0 1 0 1 1 0 BL= 1 1 0 0 1 1 0 1
AL= 1 0 0 0 0 1 0 0
Exemple 02 : masquage des bits 0, 1, 6 et 7 dans un octet :
7 6 5 4 3 2 1 0
0 1 0 1 0 1 1 1
0 0 1 1 1 1 0 0 masque 0 0 0 1 0 1 0 0
IV.2. OU logique :
OR oprande1,oprande2
Lopration effectue est : oprande1 oprande1 OU oprande2. Application : mise 1 dun ou de plusieurs bits dans un mot.
Exemple : dans le mot 10110001B on veut mettre 1 les bits 1 et 3 sans modifier les autres bits.
7 6 5 4 3 2 1 0
1 0 1 1 0 0 0 1
0 0 0 0 1 0 1 0 masque 1 0 1 1 1 0 1 1
Les instructions correspondantes peuvent scrire : mov ah,10110001B
or ah,00001010B
IV.3. Complment 1 :
NOT oprande
Lopration effectue est : oprande NOT(oprande). Exemple :
mov al,10010001B
not al
AL = 10010001B AL = 01101110B
IV.4. Complment 2 :
NEG oprande
Lopration effectue est : oprande NOT(oprande) + 1. Exemple :
mov al,25
mov bl,12
neg bl
add al,bl
AL = 25 + (12) = 13
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 23
IV.5. OU exclusif :
XOR oprande1,oprande2
Lopration effectue est : oprande1 oprande1 oprande2. Exemple : mise zro dun registre :
mov al,25
xor al,al
AL = 0 IV.6. Instructions de dcalages et de rotations :
Ces instructions dplacent dun certain nombre de positions les bits dun mot vers la gauche ou vers la droite.
Dans les dcalages, les bits qui sont dplacs sont remplacs par des zros. Il y a les
dcalages logiques (oprations non signes) et les dcalages arithmtiques (oprations signes).
Dans les rotations, les bits dplacs dans un sens sont rinjects de lautre ct du mot. IV.6.1. Dcalage logique vers la droite (Shift Right) :
SHR oprande,n
Cette instruction dcale loprande de n positions vers la droite. Exemple 01 :
mov al,11001011B
shr al,1
entre dun 0 la place du bit de poids fort ; le bit sortant passe travers
lindicateur de retenue CF. Remarque : si le nombre de bits dcaler est suprieur 1, ce nombre doit tre plac dans le
registre CL ou CX.
Exemple 02 : dcalage de AL de trois positions vers la droite :
mov cl,3
shr al,cl
IV.6.2. Dcalage logique vers la gauche (Shift Left) :
SHL oprande,n
Cette instruction dcale loprande de n positions vers la droite. Exemple :
mov al,11001011B
shl al,1
entre dun 0 la place du bit de poids faible ; le bit sortant passe travers
lindicateur de retenue CF. Mme remarque que prcdemment si le nombre de positions dcaler est suprieur 1.
IV.6.3. Dcalage arithmtique vers la droite :
SAR oprande,n
Ce dcalage conserve le bit de signe bien que celui-ci soit dcal.
Exemple :
mov al,11001011B
sar al,1
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 24
le bit de signe est rinject.
IV.6.4. Dcalage arithmtique vers la gauche :
SAR oprande,n
Identique au dcalage logique vers la gauche.
IV.6.5. Applications des instructions de dcalage :
Cadrage droite dun groupe de bits. Exemple : on veut avoir la valeur du quartet de poids fort du registre AL :
mov al,11001011B
mov cl,4
shr al,cl
AL = 00001100B Test de ltat dun bit dans un mot.
Exemple : on veut dterminer ltat du bit 5 de AL : mov cl,6
shr al,cl
ou
mov cl,3
shl al,cl
avec un dcalage de 6 positions vers la droite ou 4 positions vers la gauche, le bit 5 de AL est transfr dans lindicateur de retenue CF. Il suffit donc de tester cet indicateur.
Multiplication ou division par une puissance de 2 : Un dcalage droite revient faire une division par 2 et un dcalage gauche, une multiplication par 2.
Exemple :
mov al,48
mov cl,3
shr al,cl
AL = 48/23 = 6 IV.6.6. Rotation droite (Rotate Right) :
ROR oprande,n
Cette instruction dcale loprande de n positions vers la droite et rinjecte par la gauche les bits sortant.
Exemple :
mov al,11001011B
ror al,1
rinjection du bit sortant qui est copi dans lindicateur de retenue CF.
IV.6.7. Rotation gauche (Rotate Left) :
ROL oprande,n
Cette instruction dcale loprande de n positions vers la gauche et rinjecte par la droite les bits sortant.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 25
Exemple :
mov al,11001011B
rol al,1
rinjection du bit sortant qui est copi dans lindicateur de retenue CF.
IV.6.8. Rotation droite avec passage par lindicateur de retenue (Rotate Right through Carry) RCR oprande,n
Cette instruction dcale loprande de n positions vers la droite en passant par lindicateur de retenue CF.
Exemple :
mov al,11001011B
rcr al,1
le bit sortant par la droite est copi dans lindicateur de retenue CF et la valeur
prcdente de CF est rinjecte par la gauche.
IV.6.9. Rotation gauche avec passage par lindicateur de retenue (Rotate Left through Carry) : RCL oprande,n
Cette instruction dcale loprande de n positions vers la gauche en passant par lindicateur de retenue CF.
Exemple :
mov al,11001011B
rcl al,1
le bit sortant par la gauche est copi dans lindicateur de retenue CF et la valeur
prcdente de CF est rinjecte par la droite.
V. Les instructions de branchement :
Les instructions de branchement (ou saut) permettent de modifier lordre dexcution des instructions du programme en fonction de certaines conditions. Il existe 3 types de saut :
Saut inconditionnel ; Sauts conditionnels ; Sppel de sous-programmes.
V.1. Instruction de saut inconditionnel : JMP label
Cette instruction effectue un saut (jump) vers le label spcifi. Un label (ou tiquette) est
une reprsentation symbolique dune instruction en mmoire :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 26
Exemple :
Remarque : linstruction JMP ajoute au registre IP (pointeur dinstruction) le nombre doctets (distance) qui spare linstruction de saut de sa destination. Pour un saut en arrire, la distance est ngative (code en complment 2).
V.2. Instructions de sauts conditionnels : condition label
Un saut conditionnel nest excut que si une certaine condition est satisfaite, sinon lexcution se poursuit squentiellement linstruction suivante.
La condition du saut porte sur ltat de lun ou des indicateurs dtat (flags) du microprocesseur :
Remarque1 : les indicateurs sont positionns en fonction du rsultat de la dernire opration.
Exemple1 :
Remarque2 : il existe un autre type de saut conditionnel, les sauts arithmtiques. Ils suivent en
gnral linstruction de comparaison : CMP oprande1,oprande2
Exemple2 :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 27
V.3. Exemple dapplication des instructions de sauts conditionnels : On veut additionner deux nombres signs N1 et N2 se trouvant respectivement aux offsets
1100H et 1101H. Le rsultat est rang loffset 1102H sil est positif, loffset 1103H sil est ngatif et loffset 1104H sil est nul :
VI. Appel de sous-programmes :
Pour viter la rptition dune mme squence dinstructions plusieurs fois dans un programme, on rdige la squence une seule fois en lui attribuant un nom (au choix) et on lappelle lorsquon en a besoin. Le programme appelant est le programme principal. La squence appele est un sous-programme ou procdure.
VI.1. Ecriture dun sous-programme :
Remarque : une procdure peut tre de type NEAR si elle se trouve dans le mme segment ou de
type FAR si elle se trouve dans un autre segment. Exemple :
VI.2. Appel dun sous-programme par le programme principal : CALL procdure
Lors de lexcution de linstruction CALL, le pointeur dinstruction IP est charg avec
ladresse de la premire instruction du sous-programme. Lors du retour au programme appelant, linstruction suivant le CALL doit tre excute, cest--dire que IP doit tre recharg avec ladresse de cette instruction.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 28
Avant de charger IP avec ladresse du sous-programme, ladresse de retour au programme principal, cest--dire le contenu de IP, est sauvegarde dans une zone mmoire particulire appele pile. Lors de lexcution de linstruction RET, cette adresse est rcupre partir de la pile et recharge dans IP, ainsi le programme appelant peut se poursuivre.
VI.3. Fonctionnement de la pile :
La pile est une zone mmoire fonctionnant en mode LIFO (Last In First Out : dernier
entre, premier sortie). Deux oprations sont possibles sur la pile :
Empiler une donne : placer la donne au sommet de la pile ; Dpiler une donne : lire la donne se trouvant au sommet de la pile.
Le sommet de la pile est repr par un registre appel pointeur de pile (SP : Stack Pointer)
qui contient ladresse de la dernire donne empile. La pile est dfinie dans le segment de pile dont ladresse de dpart est contenue dans le
registre SS.
Remarque :
La pile et le programme croissent en sens inverse pour diminuer le risque de collision entre
le code et la pile dans le cas o celle-ci est place dans le mme segment que le code (SS = CS).
Lors de lappel un sous-programme, ladresse de retour au programme appelant (contenu de IP) est empile et le pointeur de pile SP est automatiquement dcrment. Au retour du sous-
programme, le pointeur dinstruction IP est recharg avec la valeur contenue sommet de la pile et SP est incrment.
La pile peut galement servir sauvegarder le contenu de registres qui ne sont pas
automatiquement sauvegards lors de lappel `a un sous programme : Instruction dempilage : PUSH oprande Instruction de dpilage : POP oprande
o oprande est un registre ou une donne sur 2 octets (on ne peut empiler que des mots de
16 bits).
Exemple :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 29
Remarque : la valeur de SP doit tre initialise par le programme principal avant de pouvoir
utiliser la pile.
VI.4. Utilisation de la pile pour le passage de paramtres :
Pour transmettre des paramtres une procdure, on peut les placer sur la pile avant lappel de la procdure, puis celle-ci les rcupre en effectuant un adressage bas de la pile en utilisant le
registre BP.
Exemple :
Soit une procdure effectuant la somme de deux nombres et retournant le rsultat dans le
registre AX :
Programme principal :
Procdure somme :
Linstruction ret 4 permet de retourner au programme principal et dincrmenter le pointeur
de pile de 4 units pour dpiler les paramtres afin de remettre la pile dans son tat initial.
Etat de la pile :
VII. Mthodes de programmation :
VII.1. Etapes de la ralisation dun programme : Dfinir le problme rsoudre : que faut-il faire exactement ? Dterminer des algorithmes, des organigrammes : comment faire ? Par quoi commencer,
puis poursuivre ?
Rdiger le programme (code source) : - Utilisation du jeu dinstructions (mnmoniques) ; - cration de documents explicatifs (documentation).
Tester le programme en rel ; Corriger les erreurs (bugs) ventuelles : dboguer le programme puis refaire des tests
jusqu obtention dun programme fonctionnant de manire satisfaisante. VII.2. Langage machine et assembleur :
Langage machine : codes binaires correspondant aux instructions ; Assembleur : logiciel de traduction du code source crit en langage assembleur
(mnmoniques).
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 30
VII.3. Ralisation pratique dun programme : Rdaction du code source en assembleur laide dun diteur (logiciel de traitement de texte
ASCII) :
- edit sous MS-DOS, - notepad (bloc-note) sous Windows,
Assemblage du code source (traduction des instructions en codes binaires) avec un assembleur :
- MASM de Microsoft, - TASM de Borland, - A86 disponible en shareware sur Internet, ... - SIM 8086
Pour obtenir le code objet : code machine excutable par le microprocesseur ;
Chargement en mmoire centrale et excution : rle du systme dexploitation (ordinateur) ou dun moniteur (carte de dveloppement base de microprocesseur). Pour la mise au point (dbogage) du programme, on peut utiliser un programme daide la
mise au point (comme DEBUG sous MS-DOS) permettant :
Lexcution pas pas; La visualisation du contenu des registres et de la mmoire ; La pose de points darrt ...
VII.4. Structure dun fichier source en assembleur : Pour faciliter la lisibilit du code source en assembleur, on le rdige sous la forme suivante :
VII.5. Directives pour lassembleur : Origine du programme en mmoire : ORG offset
Exemple : org 1000H
Dfinitions de constantes : nom constante EQU valeur Exemple : escape equ 1BH
Rservation de cases mmoires :
DB : Define Byte, rservation dun octet ; DW : Define Word, rservation dun mot (2 octets). Exemples :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 31
Chapitre IV : Les interfaces dentres/sorties I. Dfinitions :
Une interface dentres/sorties est un circuit intgr permettant au microprocesseur de communiquer avec lenvironnement extrieur (priphriques) : clavier, cran, imprimante, modem, disques, processus industriel, ...
Les interfaces dE/S sont connectes au microprocesseur travers les bus dadresses, de donnes et de commandes.
Les points daccs aux interfaces sont appels ports.
Exemples :
Schma synoptique dun circuit dE/S :
II. Adressage des ports dE/S : Un circuit dE/S possde des registres pour grer les changes avec les priphriques :
Registres de configuration ; Registres de donnes.
A chaque registre est assign une adresse : le microprocesseur accde un port dE/S en spcifiant ladresse de lun de ses registres.
Le microprocesseur peut voir les adresses des ports dE/S de deux manires : Adressage cartographique : les adresses des ports dE/S appartiennent au mme espace
mmoire que les circuits mmoire (on dit que les E/S sont mappes en mmoire) :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 32
Consquences :
- Lespace dadressage des mmoires diminue ; - Ladressage des ports dE/S se fait avec une adresse de mme longueur (mme nombre de
bits) que pour les cases mmoires ;
- Toutes les instructions employes avec des cases mmoires peuvent tre appliques aux ports dE/S : les mmes instructions permettent de lire et crire dans la mmoire et les ports dE/S, tous les modes dadressage tant valables pour les E/S.
Adressage indpendant : le microprocesseur considre deux espaces distincts : - Lespace dadressage des mmoires ; - Lespace dadressage des ports dE/S.
Cest le cas du microprocesseur 8086 :
Consquences :
- Contrairement ladressage cartographique, lespace mmoire total adressable nest pas diminu ;
- Ladressage des port dE/S peut se faire avec une adresse plus courte (nombre de bits infrieur) que pour les circuits mmoires ;
- Les instructions utilises pour laccs la mmoire ne sont plus utilisables pour laccs aux ports dE/S : ceux-ci disposent dinstructions spcifiques ;
- Une mme adresse peut dsigner soit une case mmoire, soit un port dE/S : le microprocesseur doit donc fournir un signal permettant de diffrencier ladressage de la mmoire de ladressage des ports dE/S.
Remarque : Ladressage indpendant des ports dE/S nest possible que pour les microprocesseurs possdant un signal permettant de diffrencier ladressage de la mmoire de ladressage des ports dE/S ainsi que les instructions spcifiques pour laccs aux ports dE/S. Par contre, ladressage cartographique est possible pour tous les microprocesseurs.
III. Gestion des ports dE/S par le 8086 : Le 8086 dispose dun espace mmoire de 1 Mo (adresse dune case mmoire sur 20 bits) et
dun espace dE/S de 64 Ko (adresse dun port dE/S sur 16 bits). Le signal permettant de diffrencier ladressage de la mmoire de ladressage des ports
dE/S est la ligne M/IO : - Pour un accs la mmoire, M/IO = 1 ; - Pour un accs aux ports dE/S, M/IO = 0.
Ce signal est utilis pour valider le dcodage dadresse dans les deux espaces :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 33
Les instructions de lecture et dcriture dun port dE/S sont respectivement les instructions
IN et OUT. Elles placent la ligne M/IO 0 alors que linstruction MOV place celle-ci 1. III.1. Lecture dun port dE/S :
- Si ladresse du port dE/S est sur un octet : IN AL,adresse : lecture dun port sur 8 bits ;
IN AX,adresse : lecture dun port sur 16 bits. - Si ladresse du port dE/S est sur deux octets :
IN AL,DX : lecture dun port sur 8 bits ; IN AX,DX : lecture dun port sur 16 bits. O le registre DX contient ladresse du port dE/S lire.
III.2. Ecriture dun port dE/S : - Si ladresse du port dE/S est sur un octet :
OUT adresse,AL : criture dun port sur 8 bits ; OUT adresse,AX : criture dun port sur 16 bits.
- Si ladresse du port dE/S est sur deux octets : OUT DX,AL : criture dun port sur 8 bits ; OUT DX,AX : criture dun port sur 16 bits.
O le registre DX contient ladresse du port dE/S crire. Exemples :
Lecture dun port dE/S sur 8 bits ladresse 300H : mov dx,300H
in al,dx
Ecriture de la valeur 1234H dans le port dE/S sur 16 bits ladresse 49H : mov ax,1234H
out 49H,ax
IV. Linterface parallle 8255 : Le rle dune interface parallle est de transfrer des donnes du microprocesseur vers des
priphriques et inversement, tous les bits de donnes tant envoys ou reus simultanment.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 34
Le 8255 est une interface parallle programmable : elle peut tre configure en entre et/ou
en sortie par programme.
Brochage du 8255 Schma fonctionnel :
Le 8255 contient 4 registres :
Trois registres contenant les donnes prsentes sur les ports A, B et C; Un registre de commande pour la configuration des ports A, B et C en entres et/ou en
sorties.
IV.1. Accs aux registres du 8255 : Les lignes dadresses A0 et A1 dfinissent les adresses des registres du 8255 :
Remarque : Le registre de commande est accessible uniquement en criture, la lecture de ce
registre nest pas autorise. IV.2. Configuration du 8255 :
Les ports peuvent tre configurs en entres ou en sorties selon le contenu du registre de
commande. De plus le 8255 peut fonctionner selon 3 modes : mode 0, mode 1 ou mode 2.
Le mode 0 est le plus simple : les ports sont configurs en entres/sorties de base. Les
donnes crites dans les registres correspondants sont mmorises sur les lignes de sorties ; ltat des lignes dentres est recopi dans les registres correspondants et nest pas mmoris.
Les modes 1 et 2 sont plus complexes. Ils sont utiliss pour le dialogue avec des
priphriques ncessitant un asservissement.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 35
IV.3. Structure du registre de commande :
Connexion du 8255 sur les bus du 8086 : le bus de donnes du 8255 est sur 8 bits alors que
celui du microprocesseur 8086 est sur 16 bits. On peut donc connecter le bus de donnes du 8255
sur les lignes de donnes de poids faible du 8086 (D0 - D7) ou sur celles de poids fort (D8 - D15).
Une donne est envoye (ou reue) par le microprocesseur 8086 :
Sur la partie faible du bus de donnes lorsque ladresse crire (ou lire) est paire : validation par A0 ;
Sur la partie haute lorsque ladresse est impaire : validation par BHE. Ainsi lun de ces deux signaux A0 ou BHE doit tre utilis pour slectionner le 8255 :
Consquence : les adresses des registres du 8255 se trouvent des adresses paires
(validation par A0) ou impaires (validation par BHE).
Le dcodeur dadresses dtermine ladresse de base du 8255 ; les lignes A1 et A2 dterminent les adresses des registres du 8255.
Exemple : connexion du 8255 sur la partie faible du bus de donnes du 8086, avec dcodage
dadresses incomplet (les lignes dadresses A3 - A15 ne sont pas toutes utilises) :
IV.4. Dtermination de ladresse du 8255 :
A2 = 0 et A1 = 0 : adresse du port A = adresse de base + 0 = 300H ; A2 = 0 et A1 = 1 : adresse du port B = adresse de base + 2 = 302H ; A2 = 1 et A1 = 0 : adresse du port C = adresse de base + 4 = 304H ; A2 = 1 et A1 = 1 : adresse du registre de commande = adresse de base + 6 = 306H.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 36
Remarque : le dcodage dadresses tant incomplet, le 8255 apparat dans plusieurs plages dadresses selon les valeurs des bits dadresses non dcods (A7 - A13 et A12 - A15). Dans cet exemple, ladresse de base 300H correspond la premire adresse possible (bits dadresses non dcods tous gaux 0).
Remarque : si on veut que le 8255 possde des adresses conscutives (par exemple 300H, 301H,
302H et 303H), on peut utiliser le schma suivant qui exploite tout le bus de donnes (D0 - D15) du
8086 :
Exemple de programmation : soit le montage suivant :
On veut que la Led sallume lorsquon a la combinaison : K0 = 1 et K1 = 0 et K2 = 1. Programme :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 37
V. Linterface srie 8250 : Une interface srie permet dchanger des donnes entre le microprocesseur et un
priphrique bit par bit.
Avantage : diminution du nombre de connexions (1 fil pour lmission, 1 fil pour la rception). Inconvnient : vitesse de transmission plus faible que pour une interface parallle.
Il existe deux types de transmissions sries :
Asynchrone : chaque octet peut tre mis ou reu sans dure dtermine entre un octet et le suivant ;
Synchrone : les octets successifs sont transmis par blocs spars par des octets de synchronisation.
La transmission asynchrone la plus utilise est celle qui est dfinie par la norme RS232.
Exemple : transmission du caractre E (code ASCII 45H = 01000101B) sous forme srie selon la norme RS232 :
Ltat 1 correspond une tension ngative comprise entre 9 et 15 V, ltat 0 une tension
positive comprise entre +9 et +15 V. Au repos, la ligne est ltat 1 (tension ngative) ; Le bit de start marque le dbut de la transmission du caractre ; Les bits de donnes sont transmis lun aprs lautre en commenant par le bit de poids
faible. Ils peuvent tre au nombre de 5, 6, 7 ou 8. Chaque bit est maintenu sur la ligne
pendant une dure dtermine T. Linverse de cette dure dfinit la frquence de bit = nombre de bits par secondes = vitesse de transmission. Les vitesses normalises sont : 50,
75, 110, 134.5, 150, 300, 600, 1200, 2400, 4800, 9600 bits/s ;
Le bit de parit (facultatif) est un bit supplmentaire dont la valeur dpend du nombre de bits de donnes gaux 1. Il est utilis pour la dtection derreurs de transmission ;
Les bits de stop (1, 1.5 ou 2) marquent la fin de la transmission du caractre. V.1. Principe dune interface srie :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 38
Un circuit intgr dinterface srie asynchrone sappelle un UART : Universal Asynchronous Receiver Transmitter) ; une interface srie synchrone/asynchrone est un USART.
V.2. Exemples dinterfaces sries : 8251 (Intel) ; 8250 (National Semiconductor) ; 6850 (Motorola). Connexion de deux quipements par une liaison srie RS232 : les quipements qui peuvent
tre connects travers une liaison srie RS232 sont de deux types :
Les quipements terminaux de donnes (DTE : Data Terminal Equipment) qui gnrent les donnes transmettre, exemple : un ordinateur ;
Les quipements de communication de donnes (DCE : Data Communication Equipment) qui transmettent les donnes sur les lignes de communication, exemple : un modem.
Pour connecter ces quipements, on utilise des connecteurs normaliss DB9 ou DB25 :
Diffrents signaux sont transports par ces connecteurs :
Seuls les 2 signaux TxD et RxD servent transmettre les donnes. Les autres signaux sont
des signaux de contrle de lchange de donnes. V.3. Connexion entre DTE et DCE :
Dialogue entre DTE et DCE :
(les signaux de contrle sont actifs ltat bas = tension positive)
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 39
Quand le DTE veut transmettre des donnes, il active le signal DTR. Si le DCE est prt recevoir les donnes, il active le signal DSR puis le signal DCD : la communication peut
dbuter ;
Lorsque le DTE a une donne mettre, il active le signal RTS. Si le DCE peut recevoir la donne, il active CTS : le DTE envoie la donne sur la ligne TxD;
Si le DCE veut demander une pause dans la transmission, il dsactive CTS : le DTE arrte la transmission jusqu ce que CTS soit ractiv. Cest un contrle matriel du flux de donnes;
Lorsque la transmission est termine, les signaux RTS, CTS, DTR, DCD et DSR sont successivement dsactivs.
V.4. Applications des liaisons sries :
Transmission de donnes travers une ligne tlphonique :
Le modem transforme les signaux numriques produits par linterface srie en signaux analogiques accepts par la ligne tlphonique et inversement (modulations numriques FSK, PSK, ...)
Liaison srie directe entre deux DTE : Liaison simple 3 fils : rebouclage (strapping) des signaux de contrle :
Ce cblage ne permet pas le contrle matriel du flux entre les deux DTE.
Liaison complte : cble Null Modem :
Ce cblage simule la prsence dun modem (DCE) en croisant les signaux de contrle et permet le contrle matriel du flux.
V.5. Mise en oeuvre dune interface srie, lUART 8250 :
Brochage du 8250 :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 40
Schma fonctionnel :
Accs aux registres du 8250 : le 8250 possde 11 registres. Comme il ny a que 3 bits dadresses (A0, A1 et A2), plusieurs registres doivent se partager la mme adresse :
En fonction de ltat de DLAB (Divisor Latch Access Bit = bit de poids fort du registre LCR), on a accs soit au registre dmission/rception, soit au diviseur dhorloge, soit au masque dinterruptions. Structure des registres :
Line Control Register (LCR) : bits 0 et 1 : longueur du mot transmis,
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 41
bit 2 : nombre de bits de stop, 0 1 bit de stop, 1 1.5 bits de stop si 5 bits sont
transmis, 2 bits de stop sinon ;
bit 3 : autorisation de parit, 0 pas de parit, 1 parit gnre et vrifie ;
bit 4 : slection de parit, 0 parit impaire, 1 parit paire;
bit 5 : forage de parit, 0 parit non force 1 parit fixe;
bit 6 : contrle de ltat de la ligne TxD, 0 ligne en fonctionnement normal, 1 forage de TxD ltat 0 (break) ;
bit 7 : DLAB (Divisor Latch Access bit), 0 accs aux registres dmission, de rception et IER,
1 accs au diviseur dhorloge. Line Status Register (LSR) :
bit 0 : 1 donne reue ; bit 1 : 1 erreur dcrasement de caractre ; bit 2 : 1 erreur de parit ; bit 3 : 1 erreur de cadrage (bit de stop non valide) ; bit 4 : 1 dtection dun tat logique 0 sur RxD pendant
une dure suprieure la dure dun mot ; bit 5 : 1 registre de transmission vide ; bit 6 : 1 registre dcalage vide ; bit 7 : non utilis, toujours 0.
Modem Control Register (MCR) :
Modem Status Register (MSR) :
Diviseur dhorloge (DLM,DLL) : la vitesse de transmission est fixe par la valeur du
diviseur dhorloge :
Exemple de calcul : vitesse de transmission dsire = 1200 bit/s, frquence dhorloge =
1.8432 MHz, dtermination de la valeur du diviseur dhorloge :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 42
Receiver Buffer Register (RBR) : contient la donne reue. Transmitter Holding Register (THR) : contient la donne transmettre. Interrupt Identification Register (IIR) :
Interrupt Enable Register (IER) : autorisation des interruptions
Scratch Register (SCR) : registre usage gnral pouvant contenir des donnes
temporaires.
Exemple de programmation : soit un UART 8250 dont le bus de donnes est connect sur la
partie faible du bus de donnes du microprocesseur 8086. Ladresse de base du 8250 est fixe la valeur 200H par un dcodeur dadresses. La frquence dhorloge du 8250 est de 1.8432 MHz. On veut :
Ecrire une procdure init qui initialise le 8250 avec les paramtres suivants : 2400 bits/s, 8 bits par caractre, parit paire, 1 bit de stop (2400, 8, P, 1) ;
Ecrire une procdure envoi qui met un message contenu dans la zone de donnes msg. Lmission sarrte lorsque le caractre EOT (End Of Text, code ASCII = 03H) est rencontr ;
Ecrire une procdure rception qui reoit une ligne de 80 caractres et la range dans une zone de donnes appele ligne. En cas derreur de rception, envoyer le caractre NAK (No Acknowledge, code ASCII = 15H) sinon envoyer le caractre ACK (Acknowledge,
code ASCII = 06H).
Programme :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 43
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 44
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 45
Chapitre V : Les interruptions
I. Dfinition dune interruption : Soit un microprocesseur qui doit changer des informations avec un priphrique :
Il y a deux mthodes possibles pour recevoir les donnes provenant des priphriques :
Scrutation priodique (ou polling) : le programme principal contient des instructions qui lisent cycliquement ltat des ports dE/S.
Avantage : facilit de programmation.
Inconvnients :
perte de temps sil y a de nombreux priphriques interroger ; de nouvelles donnes ne sont pas toujours prsentes ; des donnes peuvent tre perdues si elles changent rapidement.
Interruption : lorsquune donne apparat sur un priphrique, le circuit dE/S le signale au microprocesseur pour que celui-ci effectue la lecture de la donne : cest une demande dinterruption (IRQ : Interrupt Request) :
Avantage : le microprocesseur effectue une lecture des ports dE/S seulement lorsquune donne est disponible, ce qui permet de gagner du temps et dviter de perdre des donnes. Exemples de priphriques utilisant les interruptions :
Clavier : demande dinterruption lorsquune touche est enfonce ; Port srie : demande dinterruption lors de larrive dun caractre sur la ligne de
transmission.
Remarque : les interruptions peuvent tre gnres par le microprocesseur lui-mme en cas de
problmes tels quune erreur dalimentation, une division par zro ou un circuit mmoire dfectueux (erreurs fatales). Dans ce cas, la demande dinterruption conduit larrt du microprocesseur.
II. Prise en charge dune interruption par le microprocesseur : A la suite dune demande dinterruption par un priphrique : Le microprocesseur termine lexcution de linstruction en cours ; Il range le contenu des principaux registres sur la pile de sauvegarde : pointeur dinstruction,
flags, ...
Il met un accus de rception de demande dinterruption (Interrupt Acknowledge) indiquant au circuit dE/S que la demande dinterruption est accepte :
Remarque : le microprocesseur peut refuser la demande dinterruption : celle-ci est alors masque. Le masquage dune interruption se fait gnralement en positionnant un flag dans
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 46
le registre des indicateurs dtat. Il existe cependant des interruptions non masquables qui sont toujours prises en compte par le microprocesseur.
Il abandonne lexcution du programme en cours et va excuter un sous-programme de service de linterruption (ISR : Interrupt Service Routine) ;
Aprs lexcution de lISR, les registres sont restaurs partir de la pile et le microprocesseur reprend lexcution du programme quil avait abandonn :
Remarque : la dernire instruction dun sous-programme de service dinterruption doit tre linstruction IRET : retour dinterruption. Si plusieurs interruptions peuvent se produire en mme temps, on doit leur affecter une
priorit pour que le microprocesseur sache dans quel ordre il doit servir chacune dentre elle. III. Adresses des sous-programmes dinterruptions :
Lorsquune interruption survient, le microprocesseur a besoin de connatre ladresse du sous-programme de service de cette interruption. Pour cela, la source dinterruption place sur le bus de donnes un code numrique indiquant la nature de linterruption. Le microprocesseur utilise ce code pour rechercher dans une table en mmoire centrale ladresse du sous-programme dinterruption excuter. Chaque lment de cette table sappelle un vecteur dinterruption :
Lorsque les adresses des sous-programmes dinterruptions sont gres de cette manire, on
dit que les interruptions sont vectorises.
Avantage de la vectorisation des interruptions : lemplacement dune ISR peut tre nimporte o dans la mmoire, il suffit de spcifier le vecteur dinterruption correspondant. IV. Les interruptions du 8086 :
Le microprocesseur 8086 peut grer jusqu 256 interruptions. Chaque interruption reoit un numro (compris entre 0 et 255) appel type de linterruption.
Trois sortes dinterruptions sont reconnues par le 8086 : Interruptions matrielles produites par lactivation des lignes INTR et NMI du
microprocesseur ;
Interruptions logicielles produites par linstruction INT n, o n est le type de linterruption ;
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 47
Interruptions processeur gnres par le microprocesseur en cas de dpassement, de division par zro ou lors de lexcution pas pas dun programme. Les interruptions du 8086 sont vectorises. La table des vecteurs dinterruptions doit
obligatoirement commencer ladresse physique 00000H dans la mmoire centrale. Chaque vecteur dinterruption est constitu de 4 octets reprsentant une adresse logique du
type CS : IP.
Remarque : correspondance entre le type de linterruption et ladresse du vecteur correspondant : adresse vecteur dinterruption = 4 type de linterruption
Exemple : interruption 20H, adresse du vecteur = 4 20H = 80H.
La table des vecteurs dinterruptions est charge par le programme principal (carte microprocesseur) ou par le systme dexploitation (ordinateur) au dmarrage du systme.
Elle peut tre modifie en cours de fonctionnement (dtournement des vecteurs
dinterruptions). V. Le contrleur programmable dinterruptions 8259 :
Le microprocesseur 8086 ne dispose que de deux lignes de demandes dinterruptions matrielles (NMI et INTR). Pour pouvoir connecter plusieurs priphriques utilisant des
interruptions, on peut utiliser le contrleur programmable dinterruptions 8259 dont le rle est de : Recevoir des demandes dinterruptions des priphriques ; Rsoudre les priorits des interruptions ; Gnrer le signal INTR pour le 8086 ; Emettre le numro de linterruption sur le bus de donnes.
Un 8259 peut grer jusqu 8 demandes dinterruptions matrielles.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 48
Brochage du 8259 Schma fonctionnel :
Remarque : si le nombre de demandes dinterruptions est suprieur 8, on peut placer plusieurs 8259 en cascade :
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 49
Chapitre VI : Le Microcontrleur PIC16F84
I. Introduction :
Un microcontrleur est une unit de traitement de l'information de type microprocesseur laquelle
nous ajoutons des priphriques internes permettant de raliser des montages sans ncessiter lajout de composants annexes. Un microcontrleur peut donc fonctionner de faon autonome aprs
programmation. Un microcontrleur est ralis en technologie CMOS, en le regardant pour la
premire fois, il fait davantage penser un banal circuit intgr logique TTL ou MOS, plutt qu un microcontrleur.
Un PIC (Programmable Interface Controler) est un microcontrleur fabriqu par la Socit
amricaine Arizona MICROCHIP Technology. Les PIC sont drivs du PIC1650 dvelopp
l'origine par la division microlectronique de General Instrument.
Un PIC est fourni en botier DIL (Dual In Line) de 2x9 pattes. En dpit de sa petite taille, ils sont
caractriss par une architecture interne qui lui confre une souplesse et une vitesse incomparables.
Ses caractristiques principales sont :
Sparation des mmoires de programme et de donnes (architecture Harvard) : On obtient ainsi une meilleure bande passante et des instructions et des donnes pas forcment codes
sur le mme nombre de bits.
Communication avec l'extrieur seulement par des ports : il ne possde pas de bus d'adresses, de bus de donnes et de bus de contrle comme la plupart des microprocesseurs.
Utilisation d'un jeu d'instructions rduit, d'o le nom de son architecture : RISC (Reduced Instructions Set Construction). Les instructions sont ainsi codes sur un nombre rduit de
bits, ce qui acclre l'excution (1 cycle machine par instruction sauf pour les sauts qui
requirent 2 cycles). En revanche, leur nombre limit oblige se restreindre des instructions
basiques, contrairement aux systmes d'architecture CISC (Complex Instructions Set
Construction) qui proposent plus d'instructions donc codes sur plus de bits mais ralisant
des traitements plus complexes.
Il existe trois familles de PIC :
- Base-Line : Les instructions sont codes sur 12 bits ; - Mid-Line : Les instructions sont codes sur 14 bits ; - High-End : Les instructions sont codes sur 16 bits.
Par rapport des systmes lectroniques base de microprocesseurs et autres composants spars,
les microcontrleurs permettent de diminuer la taille, la consommation lectrique et le cot des
produits. Ils sont frquemment utiliss dans les systmes embarqus, comme les contrleurs des
moteurs automobiles, les tlcommandes, les appareils de bureau, l'lectromnager, les jouets, la
tlphonie mobile, etc.
II. Le PIC16F84 de Microchip
Le PIC16F84 est un microcontrleur 8 bits 18 pattes. Le numro 16 signifie qu'il fait partie de la
famille "MID-RANGE". La lettre F indique que la mmoire programme de ce PIC est de type
"Flash". Les deux derniers chiffres permettent d'identifier prcisment le PIC, ici c'est un PIC de
type 84. La rfrence 16F84 peut avoir un suffixe du type "-XX" dans lequel XX reprsente la
frquence d'horloge maximal que le PIC peut recevoir.
Remarque : La lettre L indique que le PIC peut fonctionner avec une plage de tension beaucoup
plus tolrante. La lettre C indique que la mmoire programme est une EPROM ou plus rarement
une EEPROM et la lettre CR indique une mmoire de type ROM. Notez ce niveau que seule une
mmoire FLASH ou EEPROM est susceptible dtre efface.
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 50
Tableau n1: Liste des composants prsents dans la documentation technique n DS30430C du PIC.
II.1. Dtails des principales caractristiques du PIC16F84
Les principales caractristiques dun PIC16F84 sont : - 35 instructions (composant RISC) ; - 2Ko de mmoire Flash pour le programme (RAM de 1019 mots de 14 bits pour les
instructions), cette mmoire allant de ladresse 005 ladresse 3FF ; - 68 octets de RAM (Donnes sur 8 bits) allant de ladresse 0C ladresse 4F) ; - Une mmoire RAM de 2x12 emplacements rserve aux registres spciaux - 64 octets de d'EEprom ; - 1 compteur/timer de 8 bits ; - Une horloge interne, avec pr diviseur et chien de garde (Watch dog) ; - 4 sources d'interruption ; - 13 entres/sorties configurables individuellement, rparties en un port de 5 lignes (Port A) et
un port de 8 lignes (Port B) ;
- Mode SLEEP ; - 1 cycle machine par instruction, sauf pour les sauts (2 cycles machine) ; - Vitesse maximum 10 MHz soit une instruction en 400 ns (1 cycle machine = 4 cycles
d'horloge) ;
- 1000 cycles d'effacement/criture pour la mmoire flash, 10.000.000 pour la mmoire de donne EEPROM ;
- Vecteur de Reset situ ladresse 000 ; - Bus dadresses de 13 lignes ; - Alimentation sous 5 Volts.
En plus des caractristiques suivantes :
- Architecture interne rvolutionnaire lui confrant une extraordinaire rapidit ; - Possibilit dtre programm in-circuit, cest dire sans quil soit ncessaire de le retirer du
support de lapplication ;
Informatique Industrielle 1 ME17
Messaoudi K. - 2011/2012 51
- Un vecteur dinterruption, situ ladresse 004 ; - Prsence dun code de protection permettant den empcher la duplication ; - Facilit de programmation ; - Simplicit ; - Une faible consommation lectrique ; - Faible prix.
II.2. Brochage du PIC16F84
Le PIC16F84 est un microcontrleur ralis en technologie CMOS. Les signaux sont compatibles
TTL.
VSS et VDD : broches d'alimentation (3 5,5V) ; OSC1 et OSC2 : signaux d'horloges, ces broches peuvent recevoir un circuit RC ou un
rsonateur ;
CLKIN : peut tre connecte une horloge externe (0 4, 10 ou 20 MHz) ; MCLR : Reset (Master Clear) ; RA0, ... , RA4 : 5 entres/sorties du port A ; RB0, ... , RB7 : 8 entres/sorties du port B ; T0CKI : Entre d'horloge externe du timer TMR0 ; INT : entre d'interruption externe.
Remarque1: RA = Register A, RB = Register B.
Remarque2: A remarquer que RB0 (pin 6) et RA4 (pin 3), outre qu pouvoir servir dentres/sorties, selon la faon dont on les programme peuvent respectivement servir lune comme entre dinterruption et lautre comme entre dhorloge externe pour le pilotage du timer (TMR0). Remarque3: Le 16F84 possde 13 entres/sorties (5 dans le port A et 8 dans le port B). Chaque
entre/sortie est configurable individuellement (en entre ou bien en sortie). On peut par exemple
configurer les broches RB0, RA2 et RA3 en entre et les broches RB1, RB2, RB3, RA0 et RA1 en
sortie. Le choix de la configuration des entres/sorties non utilises n'a videmment aucune
importance. Notez le cas particulier de la broche RA4 configure en sortie. Cette broche possde
une sortie de type drain ouvert. Cela veut dire qu'elle ne peut pas fournir de courant. Par contre, elle
peut en consommer :
II.3. Vitesse des PIC
Tous les PIC Mid-Range ont un jeu de 35 instructions, stockent chaque instruction dans un seul mot
de programme, et excutent chaque instruction (sauf les sauts) en 1 cycle. On atteint donc des trs
grandes vitesses, et les instructions sont