
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é.