2010
-1-
UNIVERSITE DE CAEN
TRAVAUX PRATIQUES DE
INFORMATIONS
ET
MACHINES NUMERIQUES
NOM : GROUPE :
L1 TP n°1
-2-
Les Modes d’Adressage d’un ordinateur.
I. EXERCICE 1 : LES MODES D’ADRESSAGE
Pendant cet exercice et avec l’aide de votre professeur, vous allez créer un projet « ex1.wsp »
contenant les fichiers « ex1.asm » et « init.asm ». Vous utiliserez les fichiers de symboles
(voir Annexe 1) : « C8051F020.inc ». Vous détaillerez le contenu des différents fichiers
créés.
Listing de EX1.ASM :
$include (c8051f020.inc) ;On utilise un fichier de définition des adresses des SFR
EXTRN CODE (init); On précise à l'assembleur que l'on utilise une fonction écrite dans un autre
;fichier : init.asm
; Ce fichier contient les commandes d'initialisations du C8051F020
cseg AT 0 ;Définition d'une zone mémoire (segment de code, cseg) dans la mémoire
;programme (début à l’adresse 0000H)
;------------------------------------------------------------------------------
cseg AT 0
LCALL init
MOV A,#05H
MOV 20H,A
MOV B,A
MOV 21H,A
MOV R0,#01H
MOV R1,#02H
MOV A,@R0
MOV 7,#0FFH
MOV 22H,#12H
MOV 23H,#12
MOV 22H,23H
Fin: SJMP Fin
;------------------------------------------------------------------------------
END ; End of file.
Travail à effectuer
Assemblage du code :
o Rôle de l’Assembleur ?
o Quels sont les programmes qui sont crées lors de cette étape et que
contiennent-ils ?
o Après l’étape d’assemblage, vérifier le code machine des instructions
« LCALL init » et SJMP fin. Sont elles finalisées, pourquoi ?
Edition des liens (« Linkeur ») :
o Rôle du linker ?
o Après l’étape d’édition des liens, vérifier le code machine des instructions
« LCALL init » et SJMP fin. Justifier les valeurs modifiées ?
L1 TP n°1
-3-
Exécution du programme :
o Tester le programme en pas à pas à partir de l'instruction MOV A,#05H. Faire
un tableau donnant la taille en octet de chaque instruction, la durée en cycle
machine et l'évolution des registres et des mémoires.
o Quel est le rôle de l’instruction « SJMP Fin ». Exécuter à nouveau le
programme. Que se passe-t-il ?
L1 TP n°1
-4-
II. EXERCICE 2 : L’ADRESSAGE INDIRECT
Pendant cet exercice, vous allez créer un projet ex2.wsp contenant les fichiers « ex2.asm » et
« init.asm ». Faites une copie du fichier « ex1.asm » en le renommant « ex2.asm » pour
utiliser l’entête du fichier « ex1.asm ».
Travail à effectuer
On souhaite à mettre la valeur FFH de l’adresse 30H à 40H dans la RAM interne. Proposer
deux méthodes utilisant l’adressage direct et indirect.
Pour la méthode utilisant l’adressage indirect, on utilisera dans un premier temps l’instruction
de saut conditionnel « CJNE R0,#data , addr » , dans un deuxième temps l’instruction « DJNZ
R1, addr ».
Travail à rendre dans le compte rendu
Donner l’organigramme reproduisant les différentes parties du programme, pour la
méthode utilisant l’adressage indirect.
Comparer les temps d’exécution en cycle machine et en seconde de ces deux
méthodes. Quel est le mode d’adressage le plus intéressant d’un point de vue rapidité
et longueur de code ?
Donner le code source du programme réalisé.
III. EXERCICE 3 : ATTENTE
Pendant cet exercice, vous allez créer un projet « attente.wsp » contenant les fichiers
attente.asm et init.asm. Vous utiliserez les fichiers de symboles (voir Annexe 1) :
C8051F020.inc.
On souhaite faire clignoter la LED verte présente sur la carte à une fréquence de 1 Hz. La
LED est reliée à un bit du port E/S n°1 (P1.6). Pour la faire clignoter, vous pouvez utiliser
l’instruction « CPL bit ». Pour respecter la fréquence, vous devez implémenter une boucle
d’attente en utilisant les registres à usages généraux (R0,…, R7) et l’instruction « DJNZ
Ri,adresse ». .
Travail à effectuer
Réaliser le programme permettant de faire clignoter la LED à une fréquence de 1 Hz. On
calculera la fréquence théorique en comptant le nombre de cycle machine de la boucle
d’attente puis en Hz en sachant que la fréquence de l’horloge du 8052 est de 2 Mhz. Vérifier
la fréquence à l’aide d’un chronomètre.
Travail à rendre dans le compte rendu
Donner l’organigramme reproduisant les différentes parties du programme.
Donner le code source de votre programme avec le calcul de la durée de la boucle
d’attente en cycle machine et en s.
Ce programme est il intéressant en pratique ?
L1 Annexe 1
-5-
TP n°2
I. EXERCICE 1 : LE TEMPS MACHINE
Pendant cet exercice, vous allez utiliser un projet contenant un fichier le « temps_ver1.asm »
et « init.asm ». Vous utiliserez un fichier de symboles (voir Annexe 1) : « C8051F200.inc ».
Nous cherchons à commander une LED (P1.6) par l’intermédiaire d’un bouton poussoir. Ce
bouton poussoir est relié au port E/S P3.7. Le bouton non actionné, la valeur du port est 1 et
lorsque l’on appuie sur le bouton, la valeur de P3.7 passe à 0.
Travail à effectuer
Version 1 : Écrire un programme qui modifie l’état de la LED de la maquette lorsque l’on a
détecté une pression sur P3.7. On pourra utiliser la commande « JB » pour détecter une action
sur le bouton poussoir. En cas de dysfonctionnement, tester le programme en pas à pas.
Version 2 : Modifier le programme de manière à prendre en compte la différence entre le
temps humain et le temps machine.
Travail à rendre dans le compte rendu
Version 1 : Expliquer le dysfonctionnement du programme.
Version 2 : Donner l’organigramme du programme en le commentant.
II. EXERCICE 3 : LE CHEKSUM
Pendant cet exercice, vous allez créer un projet contenant les fichiers cheksum.asm et
init.asm. Vous utiliserez les fichiers de symboles (voir Annexe 1) : C8051F020.inc.
On cherche à calculer le checksum d’une série de données de longueur variable. Afin de
simuler une communication, nous allons stocker manuellement une série de données en
mémoire interne. On utilise des séries de dimensions variables aussi le premier octet de la
zone mémoire contenant la série est le nombre de données en octets. Ajouter le cheksum
calculé à la fin de la zone mémoire.
Exemple: Si on a les 4 données suivantes: F8H,12H,A2H et B3H, le contenu de la table est :
04H; F8H; 12H; A2H; B3H; 9DH car 04H+F8H+12H+A2H+B3H+9DH = 00H sur 1
octet.. Travail à effectuer
Compléter le fichier cheksum.asm. Pour la mise au point, mettre par exemple les 5 valeurs de
l'exemple ci-dessus dans la RAM interne à l’adresse 30H et vérifier que la fonction cheksum
rajoute bien la valeur 9DH à la suite dans la table. Ensuite prendre un exemple avec un
nombre de données différent.
Travail à rendre dans le compte rendu
Donner l’organigramme du programme et le fichier source commenté.
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !