ISPG : 2009/2010 Jeudi 1er Avril 2010 Comptes rendus des TP du 68HC11 Binôme :

ISPG : 2009/2010 Jeudi 1er Avril 2010 Comptes rendus des TP du 68HC11 Binôme : SALHI Samir DAHMANI Rabii - TELECOM 1 - Enseignant : THIEBAUT Bernard Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 1 Compte rendu TP0 microcontrôleur Objectifs principaux : Présentation de la carte de développement CMD11A8 (ou E1). Prise en main de la chaine de développement. Ecriture et édition de programmes. Assemblage et linkage. Etude des fichiers .LST et .S19. Téléchargement sur la carte cible. Utilisation des principales commandes du moniteur Buffalo. Premiers pas dans le « débogage » de programmes. 1) Voici un bout du programme REMPLIS.LST 0029 * le code du programme 0030 3000 ORG CODE * début de la zone de code définie par deuxième ORG 0031 ******************************************************************************** 0032 3000 b6 20 00 [ 4 ] LDAA VALEUR 0033 3003 ce 22 00 [ 3 ] LDX #DEBUT_ZONE >> On observe dans la 1ère colonne le n° de ligne du code (0029, 0030, etc……..) Dans la 2ème colonne on observe à quelle adresse on se trouve. LDAA s’exécute bien en 3 cycles car de l’adresse 3000 on passe à 3003 avant d’exécuter la prochaine instruction 2) Dans l’adresse $3000 on a b6, b6 étant le code machine de LDAA . Dans l’adresse $3001 on a 20 et dans $3001 on à 00. 20 et 00 étant l’adresse de VALEUR car dans les données du programme on a : 0025 2000 00 VALEUR * cette constant VALEUR se situe à l’adresse 2000 20 *étant codé sur 8 bit 0010 000 et 00 est codé 0000 0000 3) En changeant la valeur de la constante CODE à $4000, le programme commence à $4000 au lieu de $3000 comme précédemment. Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 2 La directive ORG point ainsi sue une adresse de départ que l’on impose, et donc si on change l’adresse de départ, toutes les adresses sont décalées de ce changement. 4) CODE 4000 * code est enregistré à l’adresse $4000 DATA 2000 * DATA est enregistré à l’adresse $4000 DEBUT_ZONE 2200 * idem FIN_ZONE 2301 *idem INIT 0000 REMPLIR 4006 VALEUR 2000 CODE 4000 *0010 0030 * code est enregistré à l’adresse $4000 et utilisé a la ligne 0010 et 0030 DATA 2000 *0009 0023 * DATA enregistré a l’adresse $2000 et utilisé a la ligne 0009 et 0023 DEBUT_ZONE 2200 *0017 0033 * pareille que DATA et CODE FIN_ZONE 2301 *0018 0037 * idem INIT 0000 *0016 0025 REMPLIR 4006 *0034 0038 VALEUR 2000 *0025 0032 5) Le fichier .S19 résume les différentes instructions, l’évolution des adresses modifiées et leur taille ainsi que les erreurs. 11) Essais du programme Pour modifier le registre A >Rm A  Puis taper une valeur au choix par exemple 30 Pour vérifier taper >Rd On modifie et vérifie de la même manière pour le registre X sauf que l’on tapera Rm X pour le modifier Pour visualiser le contenu de la mémoire en l’adresse $2200 et $2210 on tape la commande : >md 2200 Son contenu et n’importe quoi ce sont les valeurs d’origine qui sont contenu des la mise en tension de la carte. Pour modifier les cases mémoires entre $2200 et $2300 taper : >MM 2200 X Y J……. Avec X la valeur que l’on aura mise dans $2000, Y la valeur mise dans $2201 etc… Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 3 Si le PC ne point pas vers la première instruction du programme, on va exécuter n’importe quoi. Une fois le programme exécuté en entier, il n’y a plus que des 0 dans les adresses de $2200 à $2210 Par rapport au mode pas à pas, GO permet d’exécuter le programme en entier. La boucle main ne rend pas la main a cause de la boucle infini SWI permet de mettre fin a la boucle infini causé par BRA, ainsi à la fin, le programme nous redonne la main. A l’adresse $2300 on n’a pas la valeur 0 a cause de la comparaison CPX, qui est une comparaison stricte. Il suffit de mettre FIN_ZONE à 2301 pour mettre des 0 jusqu’à l’adresse $2300 compris. Programme pour que la case $2200 contienne $00, la case $2201 contienne $01, la case $2202 contienne $02, etc… ******************************************************************************** * initialiser une zone de mémoire RAM * comprise entre les adresses DEBUT_ZONE et FIN_ZONE incluses * avec la même valeur INIT ******************************************************************************** * définition des constantes hardware pour les données et le code du programme ******************************************************************************** DATA EQU $2000 * début de la zone des données du programme CODE EQU $3000 * début de la zone de code du programme ******************************************************************************** * définition des constantes software ******************************************************************************** INIT EQU $0 * valeur d'initialisation DEBUT_ZONE EQU $2200 * debut de la zone à initialiser FIN_ZONE EQU $2300 * fin de la zone à initialiser ******************************************************************************** * les donnees du programme ORG DATA * début de la zone de données définie par un premier ORG ******************************************************************************** VALEUR FCB #INIT * la variable VALEUR est initialisée avec INIT Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 4 ******************************************************************************** * le code du programme ORG CODE * début de la zone de code définie par deuxième ORG ******************************************************************************** LDAA VALEUR * charge A avec la variable valeur, donc avec INIT LDX #DEBUT_ZONE * X pointe sur le début de la zone à initialiser REMPLIR STAA 0,X * utilisation de l'adressage indexé pour *écrire A à l'adresse pointée par X INX * X pointe sur la case memoire suivante CPX #FIN_ZONE * a t'on fini ? ( adresse FIN_ZONE atteinte ? ) BNE REMPLIR * non, alors on continue FIN BRA FIN * boucle d'attente infinie en fin de *programme car sinon le programme * continue en éxécutant ce qu'il y a après et comme il y a n'importe quoi * ça plante ... c'est l'équivalente en C d'un While(1); ******************************************************************************** END * directive d'assemblage pour indiquer *à l'assembleur * la fin du fichier source ASM nous donne les détails des étapes, ce qui est intéressant pour vérifier s’il y a des erreurs 12) Partie ou on passe les paramètre au module * avec la même valeur INIT ******************************************************************************** Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 5 * définition des constantes hardware pour les données et le code du programme ******************************************************************************** DATA EQU $2000 * début de la zone des données du programme CODE EQU $3000 * début de la zone de code du programme ******************************************************************************** * définition des constantes software ******************************************************************************** INIT EQU $0 * valeur d'initialisation DEBUT_ZONE EQU $2200 * debut de la zone à initialiser FIN_ZONE EQU $2300 * fin de la zone à initialiser ******************************************************************************** * les donnees du programme ORG DATA * début de la zone de données définie par un premier ORG ******************************************************************************** VALEUR FCB #INIT * la variable VALEUR est initialisée avec INIT ******************************************************************************** Partie ou on appel le module : JSR SP_REMPLIR ( on appel le module se nommant SP_REMPLIR) Rendre la main au moniteur par : SWI Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 1 TP1 microC : 68HC11 Objectifs Principaux : Utilisation des directives et des instructions les plus courantes. Les modes d’adressage. Ecriture de programmes en assembleur. Base de la programmation modulaire. Modules de gestion des chaînes de caractères. Modules de conversion. Principe du passage de paramètres par la pile. A/DIRECTIVES D’ASSEMBLAGE ET INSTRUCTIONS DE BASE : 1. Directives et transfert de base avec les instructions de type LOAD et STORE 1.1 Définir une constante valant 130 en décimal : Programme : ******************************************************************************** * initialiser une zone de mémoire RAM ******************************************************************************** * définition des constants hardwares pour les données et le code du programme ******************************************************************************** V_MAX_FRANCE EQU 130 * défini une constante valant 130 en décimale RAM EQU $2000 PROG EQU $3000 ******************************************************************************** * les données du programme ORG RAM * début de la zone de données définie par un premier ORG ******************************************************************************** V_MAX_AUTOROUTE RMB 1 * 1 octet pour stoker la valeur courante * V_MAX-AUTOROUTE ******************************************************************************** * le code du programme ORG PROG * début de la zone de code définie par deuxième ORG ******************************************************************************** MAIN LDAA #V_MAX_FRANCE * en charge dans le registre A la valeur de Binôme : SALHI Samir & DA HMANI Rabii 68HC11 : compte rendu du TP1 Page 2 * V_MAX_FRANCE Adressage immédiat STAA V_MAX_AUTOROUTE * on stock le contenue de A ( V_MAX_FRANCE) dans * l'adresse ( V_MAX-AUTOROUTE) SWI * boucle d'attente infinie * Equivalent en C d'un While(1); ******************************************************************************** END * directive d'assemblage pour indiquer à l'assembleur * la fin du fichier source 1.2. Définir une constante valant 130 en décimal avec une seule directive : Utilisation de FCB et sans aucune ligne de code : Dans ce cas on la directive FCB initialise la variable directement dans la zone Code. Par uploads/S4/ compte-rendu-tp-microcontroleur.pdf

  • 35
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jul 03, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 1.5750MB