TP 2 : ASSEMBLEUR 68HC11 (SUITE)

Documents pareils
DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Architecture des ordinateurs Introduction à l informatique

Rappels d architecture

Cours Informatique 1. Monsieur SADOUNI Salheddine

Ordinateurs, Structure et Applications

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

GPA770 Microélectronique appliquée Exercices série A

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A)

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Mes documents Sauvegardés

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A) MODULE A5 Programmation de la CPU 314C-2DP

Chapitre 4 : Les mémoires

Architecture des ordinateurs

PACK ADSL WIFI. Configurer ma connexion ADSL avec Modem/Routeur Sagem 1400W

Exécution des instructions machine

Sélection du contrôleur

TD Architecture des ordinateurs. Jean-Luc Dekeyser

PIC : COURS ASSEMBLEUR

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Guide Utilisateur Transnet

Informatique Générale

Programmation d un contrôleur via une liaison téléphonique Note d application

1. Présentation du TP

ProCod. Manuel d utilisation. Software de programmation pour codeurs absolus TWK modèles CRF et DAF CRF DF 08 / 10

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

Manipulations du laboratoire

IV- Comment fonctionne un ordinateur?

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

1. Installation de COMPTINE

Espace pro. Installation des composants avec Firefox. Pour. Windows XP Vista en 32 et 64 bits Windows 7 en 32 et 64 bits

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Compilation (INF 564)

Codage d information. Codage d information : -Définition-

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

ENVOI EN NOMBRE DE MESSAGES AUDIO

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Licence Sciences et Technologies Examen janvier 2010

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

ASR1 TD7 : Un microprocesseur RISC 16 bits

Utilisation de l outil lié à MBKSTR 9

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

NOTICE SIMPLIFIEE ER-A280F. I Initialisation avec Remise à Zéro de la caisse : ENTER PASSWORD ER-A280V. Ver1.02

Contrôle d accès UTIL TP N 1 découverte

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

CM2 L architecture MIPS32

Séquencer une application

Manuel du logiciel PrestaTest.

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

WinReporter Guide de démarrage rapide. Version 4

SCL LOGICIEL DE CONTROL

INSTALLER LA DERNIERE VERSION DE SECURITOO PC

Guide d'installation d'esprit Version 2014 R2

VIDEO SURVEILLANCE SV82400 SV82500 SV82600 Type de panne cause Que faire? VIDEO SURVEILLANCE IPSV87050 VIDEO SURVEILLANCE IPSV87050 SERR1

GUIDE D UTILISATION DU BROWSER DE BEYOND 20/20

Ordinateurs, Structure et Applications

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

La mémoire. Un ordinateur. L'octet. Le bit

CORRECTION EXERCICES ALGORITHME 1

AUJOUR'HUI, NOUS ALLONS DÉCOUVRIR

Guide de correction et d optimisation des images en vue de leur publication sous Marcomedia Contribute. Logiciel utilisé : Adobe PhotoShop 7

LOGICIEL ALARM MONITORING

Programmation C. Apprendre à développer des programmes simples dans le langage C

Installation du Logiciel de Configuration de l Agility sur Windows 64 bits

1.1 L EXPLORATEUR WINDOWS

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Structure fonctionnelle d un SGBD

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

«Vous éditez, nous archivons!»

UTILISATION DE LA BORNE PAR LE CLIENT

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

INSTALLATION DE LA CLÉ 3G+ UTILISATION VOTRE COMPTE CLIENT. Clé 3G+ Elle vous permet de connecter votre ordinateur aux réseaux haut débit mobile.

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

domovea Portier tebis

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Accès à un coupleur/contrôleur Ethernet via une liaison téléphonique

Programmation assembleur : aperçu

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Création d un site Internet

1. Aménagements technologiques 2. Installation de Microsoft SQL Server 2012

Dispositions relatives à l'installation :

Guide d installation CLX.PayMaker Office (3PC)

IUT BREST UN LOGICIEL SCADA : PC VUE 2010 DEP.GMP

Procédure : Sauvegarder un Windows 7 sur un disque réseau

Leçon N 5 PICASA Généralités

INSTALLATION MODULE WEB

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

COMMENT INSTALLER LE SERVEUR QIPAIE

Microprocesseur + Logiciel

CONFIGURATION DE L AUTOMATE SIEMENS

Documentation Technique du programme HYDRONDE_LN

Transcription:

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 1/21 TP 2 : ASSEMBLEUR 68HC11 (SUITE) Le but de ce TP sur machine est de mettre en œuvre le jeu d instruction et les modes d adressage du processeur 68HC11 de Motorola (une documentation détaillée sur les instructions proposées par ce processeur sont en annexe). 1. Matériel utilisé (kit "68HC11EVBU2 68HC11E9") Vous utiliserez le kit d évaluation 68HC11EVBU2 de Motorola, avec un quartz 8 MHz produisant une fréquence d'horloge à 2 MHz et un microcontrôleur 68HC11E9 dont le détail est donné ci-après. Points test Masses E A0/D0 Liaison série ORDINATEUR DE TYPE PC AS R/W R A M 68HC11 Reset Alimentation 5V Fig 1 : KIT HC11EVBU2 utilisé Fig 2 : Schéma interne du 68HC11 et caractéristiques de ses différentes versions Important : Le microcontrôleur de la carte d évaluation fonctionne en mode étendu. Ce qui veut dire qu il sort son bus d adresses 16 bits (A15-A0) et son bus de données 8 bits (D7-D0) vers l extérieur par l intermédiaire des ports B et C. Puisqu il ne dispose avec ces 2 ports que de 16 broches, un multiplexage temporel est réalisé sur les 8 bits de données et les 8 bits de poids faible du bus d adresses (Port C = A7/D7-A0/D0) comme le montre le chronogramme suivant : adresses basses puis données sur le Port C, adresses hautes sur le port B.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 2/21 A15-A8 A7/D7-A0/D0 Fig 3 : Chronogramme du 68HC11 pour fonctionnement en mode étendu Fig 4 :Mapping mémoire et mémoire interne au 68HC11 RAM Interne de 0000 à 01FF libre à l'utilisateur (pas d accès à la mémoire externe via le bus de données) REGISTRES internes de 1000 à 103F EEPROM interne de B600 à B7FF ROM Interne (on chip ROM) de D000 à FFFF ROM test pattern (4ko) de D000 à DFFF Moniteur Buffalo de E000 à FFFF RAM externe (32 ko) de 8000 à B5FF et de B800 à CFFF Le fonctionnement en mode développement d une application avec une carte d évaluation implique la présence d un programme «moniteur» (Buffalo monitor). Ce programme moniteur est généralement présent dans une mémoire morte. Il permet de faire fonctionner le microcontrôleur en pas à pas et ainsi de vérifier dans le détail le bon fonctionnement de

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 3/21 l application développée. Il assure la communication entre l ordinateur PC et la carte de développement, via une liaison série de type RS232C. En ce qui concerne la carte 68HC11EVBU2, ce programme «moniteur» est fournit par Motorola et présent dans la ROM du microcontrôleur de la carte. Il s appelle «BUFFALO 3.4», son code source est fourni. 1.1. REGISTRES DE TRAVAIL DU 68HC11 Le microcontrôleur 68HC11E9 utilisé en travaux pratiques dispose en tout et pour tout de 8 registres de travail accessibles par programmation à l aide du jeu d instruction : Deux accumulateurs 8 bits A et B (l ensemble formant un accumulateur 16 bits D), Deux registres d'index 16 bits X et Y, Pointeur de pile 16 bits SP, Compteur de Programme 16 bits PC (ou compteur ordinal), Code Condition Register 8 bits CCR (équivalent au registre d'état vu en cours). 7 A 0 7 B 0 accumulateurs 8 bits A et B 15 D 0 ou accumulateur 16 bits D 15 X 0 registre d'index X 15 Y 0 registre d'index Y 15 SP 0 pointeur de pile 15 PC 0 compteur ordinal (ou de programme) 7 CCR 0 registre de code condition Les 8 registres de l unité centrale du 68HC11 Chaque bit du Registre Code Condition (CCR) à une signification propre : 7 6 5 4 3 2 1 0 S X H I N Z V C Validation Stop masque XIRQ Demi-retenue masque IRQ Retenue/ Borrow Dépassement Zéro Négatif Registre CCR des indicateurs et des masques d interruption

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 4/21 Les indicateurs du registre CCR sont de deux catégories : les bits 0, 1, 2, 3 et 5 positionnés en fonction du résultat des instructions qui manipulent les données, et les bits 4, 6 et 7 dont le rôle est lié au fonctionnement du microcontrôleur en interruption : Bit 0 (C/B) : retenue issue de l'ual (Carry) ou dépassement en non signé, Bit 1 (V) : dépassement de capacité (overflow) lors d'une opération en signé, Bit 2 (Z) : résultat de l'opération précédente est nul, Bit 3 (N) : résultat de l'opération précédente est négatif, Bit 5 (H) : retenue du bit 3 dans l'ual pour les opérations en BCD, Bit 4 (I) : masque général d'interruption IRQ et périphériques internes, Bit 6 (X) : masque d'interruption rapide XIRQ, Bit 7 (S) : instruction Stop validée ou non. 2. Rappel chargement code objet sur la carte Vous disposez de 2 manières pour inscrire le programme dans la mémoire RAM du microcontrôleur : 1) en écrivant le code objet dans la RAM du microcontrôleur, 2) en téléchargeant tout le code objet dans la RAM via la liaison série du PC. Nous allons décrire ci-dessous la procédure à suivre pour télécharger tout le code objet dans la RAM du microcontrôleur via la liaison série. a) Téléchargement du code objet via la liaison série du PC L environnement de développement minimal pour utiliser le kit "68HC11EVBU2 68HC11E9" est dans le répertoire où se trouve ce sujet de TP (en principe barracuda/temp/geii_2). Il contient les fichiers suivants : AS11.EXE : l assembleur 68hc11, Invite de comnande.lnk : pour lancer une fenêtre DOS, 68HC11.htt : HyperTerminal pour liaison série RS232C avec le PC, Chrono.asm : un exemple de fichier source en assembleur, CHRONO.S19 : fichier objet résultat de l'assemblage d'un programme source. Création du programme source : Créez (dans le répertoire de travail) un fichier que vos appellerez chrono.asm à l aide du Bloc note de Windows et écrivez les mnémoniques du programme indiqué pécédemment, puis enregistrez le fichier. Assemblage du programme (traduction en code objet) : Lancez l invite de commandes (dans le répertoire de travail) puis tapez la commande suivante suivie de la touche <Entrée> : as11 chrono.asm l Le programme est assemblé, vous devez obtenir ceci.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 5/21 L assembleur a créé un fichier appelé chrono.s19, qui est un fichier texte au format s19 de Motorola (fichier en caractères ASCII, téléchargeable via une liaison série). Téléchargement du programme dans la RAM du microcontrôleur via la liaison série à l aide de l HyperTerminal : Lancez l HyperTerminal (dans le répertoire de travail) en double-cliquant sur 68HC11.HT, la fenêtre suivante doit s ouvrir (attendre quelques secondes). Appuyez sur le bouton reset de la carte HC11EVBU2 (petit switch entre le connecteur de la liaison série et celui de l alimentation). Vous devez obtenir le message suivant dans la fenêtre de l HyperTerminal : «BUFFALO 3.4 (ext) - Bit User Fast Friendly Aid to Logical Operation». Appuyez une fois sur la touche <Entrée>. Pour télécharger le fichier chrono.s19 dans la RAM du microcontrôleur, tapez la commande suivante suivie de la touche <Entrée> : LOAD T Puis choisissez dans le menu transfert «envoyer un fichier texte» et sélectionnez votre fichier chrono.s19. Si tout se passe bien (téléchargement réalisé) vous devez voir apparaître le message «done» dans l HyperTerminal. b) Exécution du programme Le programme est maintenant dans la RAM du microcontrôleur, vous pouvez l exécuter, mais avant vous pouvez vérifier qu il y est effectivement (pour ceux qui doutent.) en lançant la commande suivante pour visualiser le contenu de la mémoire RAM situé à l'adresse 8000 : MD 8000 Vous devez obtenir l'affichage de la figure ci-dessous et constater que les codes objets du programme y sont bien.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 6/21 Pour lancer l exécution du programme situé à l'adresse 8000 en RAM tapez la commande : GO 8000 Le programme s exécute, on ne peut l arrêter que par un appui sur la touche «reset» sur la carte du microcontrôleur. 6. Affichage alterné de chiffres (suite) 6.4. Adressage indexé L adressage indexé trouve tout son intérêt lorsqu il s agit de manipuler des tableaux de valeurs (rangées dans des cases mémoires successives). On se sert à cet effet de registres spécifiques appelés «registres d index», qui permettent de pointer les cases mémoire successives en modifiant, soit le contenu du registre d index (adresse sur laquelle on désire pointer) soit le déplacement par rapport au contenu de ce registre d index (accès aléatoire à une case mémoire à partir de l adresse de base). On peut facilement faire le parallèle entre l adressage indexé et les pointeurs en langage «C» ou l accès aux valeurs dans un tableau. a) Visualisation sur un afficheur 7 segments des valeurs contenues dans un tableau Ecrivez le programme suivant et faite-le fonctionner. ORG $8000 LDAA #$80 STAA $1026 ; Pa7 en sortie CLRA STAA $1000 ; Affichage "0" deb LDX #TAB_CODES bou2 LDAB 0,X

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 7/21 BEQ deb INX STAB $1000 LDAA #200 bou1 LDY #1000 bou DEY BNE bou DECA BNE bou1 BRA bou2 TAB_CODES fcb $10, $30, $50, $70, $90, $20, $40, $60, $80,$00 Constatation? Comparez les valeurs affichées avec la documentation en Annexe 2. Expliquez ce que contient le registre d index X à chaque étape du programme. Vérifiez sur la maquette l évolution des valeurs du registre d index X et de celles de l accumulateur B. Pour cela, il faut mettre un point d arrêt à l aide de la commande BR <adresse> du moniteur de la carte 68HC11EVBU2 et mettre à la place de <adresse> l adresse de l instruction LDAB 0,X (à trouver). Puis taper la commande GO 8000 suivie de la commande T. Réitérer cette procédure en tapant la commande T suivie de la commande GO à chaque arrêt du programme. Vous pourrez ainsi aisément observer le contenu des registres souhaités. Pour enlever les points d arrêts, taper la commande BR - Modifier ce programme pour afficher d abord les chiffres pairs, puis les chiffres impairs. Modifiez ce programme afin qu il affiche les 4 bits de poids fort contenus dans les cases mémoires allant de l adresse B800 h à l adresse B810 h. L étiquette TAB_CODES ne sert plus dans ce cas. Pour tester votre programme, mettez au préalable des valeurs connues aux adresses B800 h à B810 h, par exemple comme suit : 1. avant de lancer votre programme, tapez la commande MM B800 2. puis tapez sur la touche <Entrée> 3. entrez la valeur à écrire en mémoire à l'adresse indiquée en paramètre à la commande MM Attention : n'oubliez pas que les adresses sont données en hexadécimal donc à partir de l'adresse B809, les adresses qui suivent sont : B80A, B80B, B80C, B80D, B80E, B80F.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 8/21 b) Initialisation d un bloc mémoire à une valeur donnée Le programme suivant permet d initialiser avec la valeur VAL (FF h par ex) tout un bloc de données de taille NB_ELEMT (10010 par ex.) d une zone mémoire débutant à l adresse ADR_I (C000h par ex.). Remarque : L adressage indexé trouve ici tout son intérêt pour aller pointer des cases mémoire successives à l aide d un registre d index dont on modifie la valeur (on peut facilement faire le parallèle avec les pointeurs en langage «C» ou l adressage des valeurs dans un tableau de valeurs). ORG VAL NB_ELEMT ADR_I bou fin $8000 EQU EQU EQU LDX LDAA LDAB STAB INX DECA BNE BRA $FF 100 $C000 #ADR_I #NB_ELEMT #VAL 0,X bou fin Expliquez son fonctionnement avant de le faire fonctionner sur la maquette. Pourquoi ne peut-on modifier plus de 255 cases mémoire à l aide de ce programme? Saisissez le programme, assemblez-le et le téléchargez-le dans le kit. Vérifiez, avant de lancer l exécution du programme, le contenu des cases mémoire débutant en C000 avec la commande : MD C000 puis tapez sur <Entrée>. Exécutez le programme (avec la commande GO 8000). Appuyez ensuite sur la touche Reset pour l arrêter, puis lancer à nouveau la commande MD C000 puis tapez sur <Entrée>. Vérifiez que l on a bien le résultat escompté. Comptez le nombre de cases mémoire modifiées par le programme et notez la première et la dernière adresse modifiée (le compte y est-il?). Refaire un essai en modifiant la variable VAL et éventuellement la variable NB_ELEMT (dans les limites acceptables). Vérification.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 9/21 c) Transfert mémoire à mémoire Le programme suivant est une variante plus élaborée du programme précédent puisqu il utilise un double adressage indexé (registres d index X et Y). Il transfert tout un bloc de données de taille NB_ELEMT (200 10 par ex.) d une zone mémoire débutant à l adresse ADR_S (B800 h par ex.) vers une autre zone mémoire débutant à l adresse ADR_D (C800 h par ex.). ORG $8000 NB_ELEMT EQU 200 ADR_S EQU $B800 ADR_D EQU $C800 LDX #ADR_S LDY #ADR_D LDAA #NB_ELEMT bou LDAB 0,X INX STAB 0,Y INY DECA BNE bou fin BRA fin Expliquez son fonctionnement avant de le faire fonctionner sur la maquette. Saisissez le programme, assemblez-le et le téléchargez-le dans le kit. Avant de lancer l exécution du programme, modifier à la main le contenu des cases mémoire débutant en B800 h et C800 h avec la commande : MM B800 puis tapez sur <Entrée> et entrez la commande puis tapez sur <Entrée>. MM C800 Remarque : Il est aussi possible d utiliser la commande Bloc Fill du moniteur Buffalo du kit pour modifier le contenu de tout un bloc mémoire : BF <addr1> <addr2> [<data>] Block fill memory Exécutez le programme. Appuyez ensuite sur la touche Reset pour l arrêter, puis Vérifiez que l on a bien le résultat escompté en comparant le contenu des cases mémoire débutant en B800 h avec celles débutant en C800 h. Commande : MD B800 puis tapez sur <Entrée> et entrez la commande

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 10/21 puis tapez sur <Entrée>. MD C800 Notez les résultats obtenus, puis changer les variables NB_ELEMT, ADR_S, ADR_D et faire à nouveau les essais. 7. Interruption logicielle Comme vu en cours, une interruption a pour objectif d'interrompre l'exécution du programme en cours pour exécuter une routine (sous-programme) traitant l'interruption qui s est produite. Une fois le sous-programme exécuté, l'exécution du programme interrompu reprend là ou elle avait été interrompue. Une interruption est provoquée par un événement interne ou externe. Elle possède trois différences en comparaison avec un sous-programme : 1) elle n'est pas appelée de manière explicite, 2) elle peut interrompre le programme en cours d'exécution n'importe où et doit donc provoquer la sauvegarde des registres dans la pile et leur restauration au retour de la routine d'interruption, 3) son adresse est stockée dans un vecteur d'interruptions (tableau à un emplacement prédéfini en mémoire). La sauvegarde du contexte processeur correspond à sauvegarder l état de tous les registres du processeur afin de les restaurer après exécution de la routine d interruption. Sur le M68HC11, cela revient à sauvegarder les registres PC (compteur ordinal), X, Y, CCR (registre d état) et les accumulateurs A et B. Cela occupe 9 cases mémoire dans la pile comme illustré dans le schéma ci-dessous : Au retour de la routine d interruption, indiqué par l instruction RTI qui la dernière instruction de la routine, l état des 6 registres placé au sommet de la pile est restauré dans l ordre : CCR, B, A, X, Y, PC. On retrouve ainsi l état du processeur avant interruption. Chaque source d'interruption possède une entrée spécifique dans le vecteur d'interruptions situé dans une mémoire morte (ROM) situé aux adresses FFC0-FFFF. Le tableau 5-4 ci-après donne la localisation dans le vecteur d interruptions associée à chaque type d interruption, 16 bits sont utilisés pour chaque interruption. Dans la suite, nous allons nous intéresser à l interruption logicielle SWI (Software Interrupt). Comme son nom l indique cette interruption est particulière car elle peut uniquement être levée de façon logicielle dans un programme, contrairement aux autres instructions qui sont

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 11/21 générées par le matériel. Les adresses qui lui correspondent à cette interruption dans le vecteur d interruption sont les adresses FFF6 et FFF7. Le vecteur d interruption est situé en mémoire morte (ROM) et n est pas modifiable. Il n est donc pas possible de pouvoir programmer l adresse où sera située la routine traitant chaque interruption. Pour pallier à ce problème, un second vecteur appelé vecteur de saut d interruption placé dans le bas de la mémoire RAM aux adresses 00C4-00FF est modifiable et peut être est utilisé pour programmer l adresse des routines d interruption. Ainsi, chaque entrée du vecteur d interruption stocke l adresse de l entrée correspondante dans le vecteur de saut d interruption. Le tableau ci-après donne les adresses dans ce vecteur pour chaque interruption. Chaque entrée de ce tableau a une taille de 3 octets : le premier octet stocke le code opération de l instruction de saut JUMP (code 7E en hexadécimal), les deux autres octets stockent une adresse sur 16 bits où est située la première instruction de la routine d interruption à exécuter. Lorsqu une interruption survient le processeur va dans la bonne entrée du vecteur d interruption en ROM puis est redirigé vers l entrée correspondant dans le vecteur de saut d interruption en RAM où il trouve une instruction de saut (JUMP) avec comme opérande l adresse de la routine à exécuter.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 12/21 Voici ci-dessous un exemple de programme permettant d utiliser l interruption SWI. La routine d interruption rint change le contenu de l afficheur 7 segments pour afficher l entier 1 à la place de 0 affiché initialement. Pour cela au début du programme on initialise les 3 octets aux adresses 00F4 à 00F5 comme suit : adresse 00F4 : placement du code opération d un saut (JUMP) correspondant au code F4, adresses F5-F6 : placement adresse routine d interruption rint. L instruction spéciale SWI permet de déclencher l interruption logicielle SWI, provoquant l exécution de la routine d interruption dont l adresse a été placée au préalable aux adresses 00F5-00F6. Le contexte processeur est sauvegardé puis le processeur exécute les instructions de la routine situées à l adresse rint en RAM. Enfin, l instruction spéciale RTI permet de faire un retour de routine d interruption. Elle restaure le contexte processeur sauvegardé au sommet de la pile et le processeur reprend l exécution du programme interrompu. Il est important que l instruction RTI soit la dernière instruction d une routine. ORG $8000 LDAA #$7E ; 7E correspond au opcode instruction JUMP STAA $F4 ; Indique instruction JUMP dans vecteur interruption LDD #rint ; Chargement adresse routine interruption pour SWI STD $F5 ; Enregistrement adresse routine SWI dans vecteur saut interruption LDAA #$80

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 13/21 STAA $1026 ; PA7 en sortie CLRA STAA $1000 ; Affichage de "0" LDY #2000 bou1 LDX #200 bou DEX NOP NOP BNE bou DEY BNE bou1 SWI fin BRA fin ; declenchement interruption SWI rint LDAA #$10 STAA $1000 RTI Modifiez le programme ci-dessus afin d afficher les divers symboles possibles par ordre croissant de leur valeur décimale sur l afficheur 7 segment à l aide de l interruption SWI. La routine associée à SWI devra incrémenter un nombre contenu dans un registre puis l afficher. Pour réaliser cela vous vous inspirerez des programmes précédents permettant de réaliser un compteur avec l afficheur 7 segments. Attention : On rappel que du fait du changement de contexte à l exécution de la routine d interruption SWI l état des registres du processeur sont modifiés. Vous aller donc devoir utiliser la mémoire RAM afin de stocker l état du compteur. Vous utiliserez l adresse 9000 en mémoire pour cela.

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 14/21 8. Annexe : tableau d instructions du 68HC11 Tableau 1/6

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 15/21 Tableau 2/6

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 16/21 Tableau 3/6

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 17/21 Tableau 4/6

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 18/21 Tableau 5/6

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 19/21 Tableau 6/6

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 20/21 9. Annexe 2 : BCD 7 segments

DUT 1 Informatique, CNAM Paris TP 2 Microcontrôleurs 21/21