Vous êtes sur la page 1sur 35

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTAIRE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA


RECHERCHE SCIENTIFIQUE

BADJIMOKHTAR-ANNABAUNIVERSITY
UNIVERSITE BADJI MOKHTAR ANNABA ‫ عنابـة‬-‫جامعة باجي مختار‬

Faculté des Sciences de l’Ingéniorat


Département: Electronique

POLYCOPIE

TRAVAUX Dirigés
Microprocesseurs et Interfaces

Domaine : Sciences et Technologie


Filière : AUTOMATIQUE
Spécialité: Master 1- Electronique et Système Embarqué

Auteur : Mohamed FEZARI


nnée Universitaire : 2017-2018
1
Travaux Dirigés

« Microprocesseur
Et Conception de Système à
Microprocesseur »

Programmation en assembleurs et code machine


Réalisé Par : Pr. FEZARI MOHAMED

Année Universitaire :2017-2018

2
Préface

Ce polycopié de travaux dirigés (TD) sur les microprocesseurs et la


programmation en assembleur est destiné aux étudiants de niveau Master
première année spécialité : électronique, Système Embarqué et
Instrumentation. Il est en conformité avec les nouveaux programmes du
ministère de l’enseignement supérieur et de la recherche scientifique en
Algérie. Il a été conçu après plusieurs années d’enseignement des cours sur les
circuits programmables à savoir : les microprocesseurs, les interfaces et les
microcontrôleurs.

Ce type de composant à savoir « le microprocesseur » s’est répandu dans


un très grand nombre de domaines (télécommunications, télévision,
électroménager, hifi...).

L'objectif de ces travaux dirigés est double : présenter les notions de base
nécessaires à la compréhension des systèmes utilisant des microprocesseurs à
8 et 16 bits par une série d’exercices et réaliser des devoirs permettant de
programmer en langage machine (assembleur) des applications d’acquisition
de données.

Ce document contient 12 Travaux dirigés pour renforcer les informations acquises


durant le cours et maitre en pratique les connaissances obtenue dans les cours et travaux
dirigés. Des TD sur la structure interne du microprocesseur 8 bits, sur le teste des
instructions, programmation et teste de l’interface parallèle, programmation de l’interface
série, utilisation des convertisseurs Analogique-numérique et Numérique-analogique.

Un compte rendu, contenant les réponses aux questions et les programmes en


assembleurs plus code machine, est à remettre à chaque fin de séance.
L’étudiant sera évalué sur la rigueur de participation aux discussions durant la
3
séance de TD, l’exactitude de ces programmes, la réponse aux questions
concernant le TD et propreté de son compte rendu.

Nous espérons que ce polycopié aidera les enseignants de la matière »


microprocesseur et interface » dans la préparation et le bon déroulement de
TD, et on espère aussi que le document soit une base solide d’une série
d’exercices dans la pédagogie.

Mohamed FEZARI

4
TABLE DES MATIERES

TD1 : KIT DSK -8085 et révision des circuits logiques 6

TD2 : Programmation en Assembleur, format et code machine 8

TD 3 : Instructions arithmétique, logique et Branchement 9

TD 4 : Boucle et manipulation de Vecteurs 10


TD : 5 Multiplication et Division 11

TD 6 : Boucle de temporisation 12

TD7 : interface Parallèle PIO-8255 du microprocesseur 13

TD 8: Exploitation de l’Interface Parallèle dans un system à 16


Microprocesseur

TD 9: Exploitation du PIO pour émulation des feux tricolores 18

TD 10: Interface Seri ACIA-6850 ou UART-8251 20

TD 11: Interface Up- CNA 22

TD 12: Notion d’acquisition d’un signal analogique et

interface Up-CAN 25

ANNEXES 29

Présentation du Simulateur 8085 de jubin MITRA 33

5
TD 1 : Présentation du KIT DSK -8085

Objectif : présentation du Kit SDK-8085

Programmation simple du kit, introduction d’un programme en mémoire,


exécution du programme teste pas à pas du programme, consultation des
registres interne du microprocesseur.

6
Travail à Faire :

Révision sur les circuits de base en logique combinatoire et


séquentiel
Ex1 : réaliser un additionneur de deux mot à 2 bits A=a1a0 et B=b1b0 à l’aide
de portes logique.

Ex2 : Réaliser un décoder 2/ et une autre 3/8 à l’aide de portes logique.

Ex3 : Réaliser un multiplexeur 4/1 et 8/1 à l’aide de portes logique.


Ex4 : Réaliser un codeur 4/2 et un autre 8/3 à l’aide de portes logique.
EX5 : quel est le rôle d’un démux.
Ex6 : réaliser un compteur asynchrone 4 bits à bascules JK.
Ex7 : citer 4 type de mémoires et l
eur utilisation.

1) Introduire le programme suivant :

Adresse Code Machine Assembleur commentaires


7000 3E 09 MVI A,9 A ----09
7002 Etiq : DCR A A----A-1
7003 C2 02 70 JNZ etiq Si A/=0 va etiq
7006 CF RST 1 fin

Exécuter le programme pas à pas.


Changer la valeur d’initialisation autre que 09 et le registre A.
Charger le nouveau programme dans un autre espace mémoire exp :
7100, 7400 ou 7A00.

7
TD2 : Architecture interne et jeux
d’instruction en Assembleur

Objectif: se familiariser avec la structure interne du Up-8085 et les instructions:


Mov , LXI, load et store
Ex 1: Ecrire un programme qui charge les registres B et C par des valeurs et
permute le contenue de deux registres.

Ex2 : permutation du contenue de deux cases mémoires 8000 et 8010.

Ex3 : Ecrire un programme qui permet de transférer un block mémoire 8000-


8010 à l’espace mémoire 8100-8110.

Ex4 : donner l’architecture interne du Microprocesseur 8085 et citer le rôle des


registres internes.

8
TD 3 Instructions arithmétiques

But : test des instructions ADD, SUB, ADC et SBB et applications

Ex 1:écrire un programme qui calcul la somme de deux nombres à 16 bits.


A=a1a0 et B=b1b0.

Ex2 : Ecrire un programme qui calcul C=B-A pour deux mots A, B à 16 bits.

Ex3 : écrire un programme qui calcule la somme des cases mémoires 8000-
8010 et range le résultat dans la case 8020.

Ex4 : écrire un programme qui calcul le nombre de case contenant une valeur >
0F dans l’espace 8000-8020.

Ex 5 : Ecrire un programme qui calcul D=A*B , A et B à 8 bits.

EX6 : Ecrire un programme qui calcul C=A/B et retenue dans D ;


Note : A 8000, B->8001 , C->8002 et D->8003.

9
TD 4 Boucle et manipulation de Vecteurs
( Devoir n : 2)

But : utilisation de l’adressage indexé pour manipuler un block


mémoire.
Ex 1:Ecrire un programme qui calcul la somme des valeurs négatives, le nombre
de valeurs positives et le nombre de valeur nul dans l espace mémoire 8000-
8020.

Ex2 : Ecrire un programme qui calcul le nombre de répétition des voyelles ’a’,
‘e’ et ‘o’ dans l’espace mémoire 800-8040 et range les résultats dans les cases
8050, 8051 et 8052.

Ex3 : Nous voulons stocker dans l’espace mémoire une image 16*16 pixels à
partir de la case mémoire 8000, les pixels sont rangés ligne par ligne ,
développer un programme pour calculer le nombre de pixels ‘rouge’ et le
nombre de pixels ‘bleu’ et ranger les résultats dans les cases 8100 et 8101.

Ex4 : Ecrire un programme qui complémente le contenue des cases mémoires


8000-8010 et range le résultat dans l’space 8100-8110.

10
TD 5 : Multiplication et Division
Ex1 : Ecrire un programme qui calcule la somme de deux valeurs à 16 bits
A+B=C
Ou A=ahal et B=bhbl et C=chcl correspondent aux cases mémoires
respectivement :8000,8001 pour A 8002,8003 pour B et 8004,8005 pour C.

Ex2 :ecrire un programme qui fait la division d’un nombre multiple de 2 par 2.
Ecrire un programme qui fait la division d’un nombre multiple de2 par un autre
nombre multiple de 2.

Ex3 : Ecrire un programme qui calcule la division de deux nombres A /B =C et


reste D
Note utiliser les cases mémoires : A :8000, B :8001, C :8002 et D : 8003.

Ex4: Réaliser une carte à microprocesseurs 8085 avec des interfaces type buffers
et latchs, la carte doit supporter 12 capteurs type TOR et 22 actionneurs type
TOR.
Donner un synoptique.
Citer les circuits de bases de cette carte.
Take a look at simulator of VIKAs et et Jubin Mitra simulator for 8085
microprocessor.

11
TD : 6 : Boucle de temporisation

Ex1 : écrire un programme de temporisation de 5000 nop en utilisant a) des


boucles emboitées b) des sous programme de tempo 100 et 50.

Ex2 : écrire un programme qui inverse le contenue de l’espace mémoire 8000-


8010 et le range dans 8100-8110 ( utiliser la pile).

Ex3 : écrire un programme qui calcule le produit de deux cases mémoire 8000
et 8001 et range le résultat dans 8010 et 8011.

Ex4 : écrire un programme qui calcule la valeur maxi et mini dans le block
mémoire 8000-8010 et range les résultats dans 8020 et 8021.

Ex5 : écrire un programme qui fait la somme suivante C(i)=A(i)+2*B(i)


Les espaces : A(i) :8000-8010 ;B(i) : 8100-8110 et C(i) : 8200-8210

Ex6 : Ecrire un programme qui fait cognotter les LEDs entre 00 et FF avec
temporisation de 500 ms.
sachant qu’il existe dans la mémoire moniteur un programme de temporisation
de 1 mili seconde(ms) à l’adresse : 0FFA.
Si on veut l’utiliser, il faut charger le registre pair DE par le nombre de ms qu’on
veut.
Exemple : pour avoir une temporisation d’une seconde :
LXI D,0400
CALL 0FFA.

12
TD 7 : interface Parallèle PIO-8255 du
microprocesseur

But du Travail : transfert de données entre microprocesseur et milieu


extérieur. On utilise Le PIO-8255 de la carte SDK-8085de MIDICOM dont le Port
A est relié au 8 LED et le Port B est relié au 8 Interrupteurs. Voir Annexe.

La touche ’ IO’ du clavier permet de lire et écrire sur l’interface parallèle :

Exp : ‘IO’ + 50 + Data envoie data sur port 50

13
‘IO’ +51 lire data sur port 51 et range dans Ac.

Rappel : le PIO est interface parallèle avec le microprocesseur, il permet de


simuler plusieurs capteurs et actionneur en parallèle. Il contient 4 registres
internes : registre de contrôle et 3 ports (A,B Cinf et Csup) programmables en
entrée ou sortie.

Travail a Faire:

1) Tester les instructions In et Out,

Note : le PIO-1 du Kit SDK-8085 a comme adresse :

PORT A 50

PORT B 51

PORT C 52

Registre Contrôle 53

Le port A est relié aux LEDs , Et le PORT B est relié aux Interrupteurs.

Example :

7000 MVI A,82

7002 OUT 53

7004 MVI A,ff

7006 OUT 50

7008 RST 1

Example 2:
14
7000 MVI A,82

7002 OUT 53

7004 IN 51

7006 STA 8000

7009 RST 1

2) Ecrire un programme en ASM et Code machine qui lit un ensemble de


données dans l’espace mémoire 8000-8009 et envoie ces données sur le port A
(sur les LED pour visualisation) avec une fréquence de 500 ms.

Note : dans le système il y a un programme de temporisation de 1ms à


l’adresse : 0FFA

Pour avoir une temporisation supérieure il faut charger le registre pair DE par
le nombre de milli-sec voulue.

Tempo=(DE)*1ms

Exemple : tempo d’une 1sec

LXI D, 0400

CALL 0FFA

3) Ecrire un programme qui lit l’état des interrupteurs relié au port B du PIO et
range les données dans l’espace mémoire 8010-801A.
Note : il faut trouver une solution pour synchroniser la saisie des données.

Note : faire les programmes et donner vos conclusions.

15
TD : 8 Exploitation de l’Interface Parallèle
dans un system à Microprocesseur

Objectif : programmation du PIO-8255. Et application dans les interfaces


industrielles.

Exploitation des E/S sur Kit SDK-8085, et manipulation des Buffer et latch pour
multiplexer les E/S et réaliser des interfaces //.

Notions d’interface des moteurs : moteurs à courant continue et moteurs pas


à pas.

Travail à faire :

1) Ecrire un programme qui affiche sur les LED du Kit SDK-8085, relié au port A,
un jeu de lumière selon l’état de l’interrupteur I0.

16
Si I0= 0 alors les LED clignotent entre 00 et ff , Delay 500ms

Si I0=1 alors les LED clignotent entre et AA, Delay 500ms.

2) Nous voulons émuler le fonctionnement de deux moteurs ( M1 et M2) a


courant continue, l’état des moteurs est visualisé sur les LED (L0, L1 et L2, L 3)
respectivement selon les ordres émis via les interrupteurs I0 I1 I2 et I3.

I0 et I1 pour sélectionner les moteurs M0 et M1 respectivement.

I2 et I3 pour designer les sens de rotation des moteurs M0 et M1


respectivement.

I0=I1=0 alors M0 et M1 à l’arrêt.

I0=1 alors M0 sélectionner si I2=0 rotation sens des Eguilles de la montre


sinon sens inverse.

I1=1 alors M1 sélectionner si I3=0 rotation sens des Eguilles de la montre


sinon sens inverse.

a) Donner un synoptique et écrire le programme en assembleur.

b) Donner une autre solution avec minimum d’interrupteur et de LED de


visualisation.

c) Donner une solution d’une interface pour machine avec 25 input (TOR) et 28
output TOR en utilisant des buffers et Latch ( sans PIO-8255). Donner
synoptique et décodage d’adresse.

d) Comment multiplexer les lignes disponibles sur un PIO-8255 en plusieurs


Ports I/O à 8 bits.

3) Ecrire un programme qui simule la rotation d’un moteur pas-à pas dans les
deux sens selon l’état d’un interrupteur I1.

Si I1=0 alors le moteur tourne dans le sens des aiguilles de la montre, si I1=1 le
moteur tourne dans le sens inverse.

Note : faire les programmes et donner vos conclusions.

17
TD 9 : Exploitation du PIO pour émulation des
feux tricolores
But : Exploitation du PIO en I/O et multiplexage des lignes du PIO disponible
sur SDK-85.

Objectif : Savoir comment multiplexer les lignes du PIO-8255 pour augmenter


le nombre de DIO (digital Input/output)

Travail à Faire :

1 :Ecrire un programme pour émuler les feux tricolores d’un croisement avec 2
temporisation vert1=15s jaune1=3s et rouge1= 20s.

2 : nous ajoutons deux interrupteurs :

1) pour passage piéton durée 5s

2) pour passage au jaune clignotant.

18
Améliorer le programme pour qu’il tienne en considération les modifications.

3 : Multiplexage du PIO

Nous voulons augmenter le nombre input/output, donner un synoptique pour


augmenter le nombre de I/o sur la carte SDK-85 à 32 inputs et 16 output en
utilisant un décodeur 3/8 deux latch 2*4 et 4 buffers 8lignes.

Note : faire les programmes et donner vos conclusions.

19
TD 10 : Interface Seri ACIA-6850 ou UART-8251

Objective : Se familiariser avec les protocoles de communications


série les plus répondue.

Comprendre la transmission série et assurer une communication


entre PC et carte à Microprocesseur.

Exer 1 :Ecrire un programme de transmission série de données en série ,


les caractères sont stockées dans l’espace mémoire 8000-8010 .

Le protocole de communication est comme suite :

Vitesse H/16, 7 bits /caractère 1 bit stop, et parité pair.

Exer 2 : Ecrire un programme de réception de données en série, les


caractères reçues sont rangés dans l’espace mémoire 8100-8110 .

20
Dans exercice 1 et 2, Le protocole de communication est comme suite :

Vitesse H/16, 7 bits /caractère 1 bit stop, et parité pair.

Dans le bus I2C inter-integated circuits, le protocole de transmission master-


slave est représenté dans la figure suivante : Start, 2 octets d’adresse suivie de
des données

Figure : Protocole I2C

Exer 3 : Voir le protocole I2C, écrire un programme d’émulation du protocole


I2C sur deux lignes du PIO-8255 ( PA0—SCL et PA1—SDA).

Cas d’une écriture d’un mot « 55 » dans la case mémoire : 8010.

21
TD 11 : Interface Up- CNA

But : utilisation de C.I convertisseur Num-Analg comme interface


avec Up , Type DAC-80 ( 8 bits) or MC1408, voici quelques schémas
de connexion d’un DAC avec Up.
Figures : Voici quelques figues d’interconnexion d’un Dac avec
Microprocesseur 8 bits

22
En supposant que l’adresse de base du DAC est : 60hex.

Ex 1: Ecrire un programme pour générer un signal en dent de scie et


triangulaire de fréquence 1 Hz (restitution sur 8bits donc 0-255 valeurs ->min
to max)

Ex2 : Ecrire un programme qui lit une consigne sur port B et envoie la consigne
au CNA, tempo4 sec et boucler le programme.

Ex3 : Écrire des programmes pour sortir une séquence binaire afin de générer:

1. Une onde carrée (à la fois unipolaire et bipolaire)

2. Une vague en dents de scie (à la fois unipolaire et bipolaire)

3. Une onde sinusoïdale (bipolaire seulement)

Les ondes doivent être périodiques, avec une période contrôlable par une
échelle stockée dans une adresse RAM spécifique. Sélectionnez une plage de

23
fréquences raisonnable, en tenant compte des propriétés dynamiques du DAC
et de votre micro-ordinateur. Afficher les formes d'onde de sortie sur un
oscilloscope.

4. Ecrire un programme pour générer un signal en dent de scie et


triangulaire de fréquence 1 Hz (restitution sur 8bits donc 0-255 valeurs ->min
to max)

5. Ecrire un programme qui lit une consigne sur port B et envoie la


consigne au CNA, tempo 4 sec et boucler le programme.

24
TD 12 : Notion d’acquisition d’un signal
analogique et interface Up-CAN

Objective : Avoir une notion sur l’acquisition d’un signal analogique avec carte
à microprocesseur. Développement d’une interface pour acquisition des
signaux analogiques et adaptation des signaux analogiques avec les
convertisseurs à 8 bits.

Note : nous connectons l’ADC 804 au port b du PIO-1 de SDK-8085.

Donc l’adresse est : 51H

Rappel sur l’acquisition d’un signal analogique avec un ADC : échantillonnage,


quantification et codage.

25
Travail à Faire :

1) Ecrire un programme qui fait la saisie d’un signal analogique issue d’un
capteur de température et range le résultat dans l’espace mémoire 8000-8100
fréquence d’échantillonnage 10 Hz et durée de saisie 10 mn.

2) Réaliser une carte d’acquisition de 3 signaux analogiques et écrire un


programme qui faits la saisie en temps partagé, avec fréquence d’acquisition de
3 échantillons chaque 1 sec pendant 10mn. On range les donnes dans 3
espaces différents : 8000, 8800 et 9000 pour les 3 signaux.

3) Nous voulons réaliser une automatisation d’une machine industrielle avec 4


entrée analogique et 3 sortie analogique.

a) Donner un synoptique de la carte.

b) proposer les composants nécessaire à la réalisation.

c) donner un schéma électronique d’une interface relié aux bus d’extension du


KIT SDK-8085.

26
d) écrire un programme d’initialisation des ports.

e)Donner les caractéristiques de l’ADC-808.

27
REFERENCES :

1) http://www.samomoi-technos.com/microprocesseur.php disponible en
Mars-2018
2) KIT de développement SDK-8085 de MIDICOM
3) https://8085simulator.codeplex.com/ disponible en Mars-2018
4) http://www.oshonsoft.com/8085.html disponible en Mars-2018
5) Aumio « emploie des microprocesseur »,
6) https://www.bestcours.com/cours-pdf-microprocesseur-8085
disponible en Mars-2018
7) https://archive.codeplex.com/?p=8085simulator disponible en Mars-
2018

8) Intel Corporation, “Intel 8080-8085 assembly language programming


guide,” 1978 (cit. on p. 12).

9) Intel, “Hexadecimal object file format specification, Revision a,” journal


title, [Online]. Available: http://microsym.com/editor/assets/intelhex.pdf
disponible en Mars-2018

28
ANNEXE 1

Architecture interne du Microprocesseur 8085

29
ANNEXE 2

30
ANNEXE 3

31
8085 Simulator
By Jubin MITRA

The project is migrated to https://github.com/8085simulator/8085simulator.github.io


For the time being the support is available from this domain.

How to run the Progra m ?

Simply double clicking the program, it should run.


But if it opens like a zip file, then you can be rest assured , that you do not have java installed on your machine.
Then download it from the link given below.

System Requirements:

1. Need Java 6 Update 16 http://javadl.sun.com/webapps/download/AutoDL?BundleId=33889

Screenshot:

32
Features:

Assembler Editor
 Can load Programs written in other simulator
 Auto-correct and auto-indent features
 Supports assembler directives
 Number parameters can be given in binary, decimal and hexadecimal format
 Supports writing of comments
 Supports labeling of instructions, even in macros
 Has error checking facility
 Syntax Highlighting

Disassembler Editor
 Supports loading of Intel specific hex file format
 It can successfully reverse trace the original program from the assembly code, in most of the cases
 Syntax Highlighting and Auto Spacing

Assembler Workspace
 Contains the Address field, Label, Mnemonics, Hex-code, Mnemonic Size, M-Cycles and T-states
 Static Timing diagram of all instruction sets are supported
 Dynamic Timing diagram during step by step simulation
 It has error checking facility also

Memory Editor
 Can directly update data in a specified memory location
 It has 3 types of interface, user can choose from it according to his need.
o Show entire memory content
o Show only loaded memory location
o Store directly to specified memory location
 Allows user to choose memory range

I/O Editor
 It is necessary for peripheral interfacing.
 Enables direct editing of content

Interrupt Editor
 All possible interrupts are supported. Interrupts are triggered by pressing the appropriate column (INTR,
TRAP, RST 7.5, RST 6.5, RST 5.5) on the interrupt table. The simulation can be reset any time by
pressing the clear memory in the settings tab.

Debugger
 Support of breakpoints
 Step by step execution/debugging of program.
 It supports both forward and backward traversal of programs.
 Allows continuation of program from the break-point.

Simulator
 There are 3 level of speed for simulation:

33
o Step-by-step : Automatic line by line execution with each line highlighting. The time to halt at
each line is be decided by the user.
o Normal : Full execution with reflecting intermittent states periodically.
o Ultimate : Full execution with reflecting final state directly.
 There are 2 modes of simulator engine:
o Run all at a Time : It takes the current settings from the simulation speed level and starts
execution accordingly.
o Step by Step : It is manual mode of control of FORWARD and BACKWARD traversal of
instruction set. It also displays the in-line comment if available for currently executed instruction.
o Allows setting of starting address for the simulator
o Users can choose the mnemonic where program execution should terminate

Helper
 Help on the mnemonics is integrated
 CODE WIZARD is a tool added to enable users with very little knowledge of assembly code could also
8085 assembly programs.
 Already loaded with plenty SAMPLE programs
 Dynamic loading of user code if placed in user_code folder
 It also includes a user manual

Printing
 Assembler Content
 Workspace Content
 Register Bank --> Each register content is accompanied with its equivalent binary value*
o Accumulator, Reg B, Reg C, Reg D, Reg E, Reg H, Reg L, Memory (M)
o Flag Register
o Stack Pointer (SP)
o Memory Pointer (HL)
o Program Status Word (PSW)
o Program Counter (PC)
o Clock Cycle Counter
o Instruction Counter
o Special blocks for monitoring Flag register and the usage of SIM and RIM instruction

Crash Recovery
 Can recover programs lost due to sudden shutdown or crash of application

8085 TRAINER KIT


 It simulates the kit as if the user is working in the lab. It basically uses the same simulation engine at the
back-end

TOOLS
 Insert DELAY Subroutine TOOL
o It is a powerful wizard to generate delay subroutine with user defined delay using any sets of
register for a particular operating frequency of 8085 microprocessor.
 Interrupt Service Subroutine TOOL
o It is a handy way to set memory values at corresponding vector interrupt address
 Number Conversion Tool

34
o It is a portable interconversion tool for Hexadecimal, decimal and binary numbers. So, that user
do not need to open separate calculator for it.

35

Vous aimerez peut-être aussi