• Aucun résultat trouvé

Chapitre 4 Programmation assembleur du MC68HC11 I-Introduction:

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre 4 Programmation assembleur du MC68HC11 I-Introduction:"

Copied!
5
0
0

Texte intégral

(1)

SMI-S4 1/5 I.OUADNOUNI

Chapitre 4 Programmation assembleur du MC68HC11

I-Introduction:

L'assembleur est un langage de bas niveaux, qui permet de programmer un microcontrôleur ou un microprocesseur. Dans ce cours on va étudier la programmation assembleur du MC68HC11.

Une syntaxe rigoureuse doit être observée pour que le logiciel puisse assembler correctement, c'est à dire convertir le code source assembleur (ficher avec extension .ASM), pour pouvoir ensuite télécharger le programme dans le microcontrôleur puis l'exécuter.

Il faut un logiciel spécialisé pour réaliser ces opérations. La syntaxe à respecter : LABEL MNEMONIQUE OPERANDE //COMMENTAIRE

 Le champ LABEL est une étiquette, qui permet de fixer un point du programme pour pouvoir ensuite l'appeler ou de définir une équivalence.

 Le champ MNEMONIQUE est le nom "écourté" de l'instruction à exécuter.

 Le champ OPERANDE est la valeur ou l'adresse en relation avec le MNEMONIQUE.

 Le champ COMMENTAIRE est destiné à placer des remarques pour organiser le programme surtout lorsque celui-ci devient conséquent.

II- Structure générale d’un programme assembleur : Un programme assembleur peut être scindé en quatre parties :

 Equivalences globales : dans cette partie du code on peut faire toutes les associations de variables aux adresses correspondantes.

 Origine de la zone EPROM : elle définit le début de la zone EPROM associé au code.

 Programme principal : le cœur du code qui peut contenir la partie configuration.

 Sub-routines : tous les sous-programmes et les traitements qu’on peut faire loin du programme principal.

Exemple de programme :

0001 *EQUIVALENCES GLOBALES : 0002 *

0003 CONFIG EQU $3F // l’adresse $003F correspond au nom CONFIG 0004 OPTION EQU $39

0005 *DEBUT DE LA ZONE EPROM

0006 ORG $F000 DEBUT PROG EN DEBUT EPROM

0007 *DEBUT DU PROGRAMME PRINCIPAL 0008 *

0027 *// Initialisation du 68HC11 et configuration des ports 0028 *

0029 RESET LDAA #%00000011 0030 STAA <OPTION 0035 *DEBUT DE LA BOUCLE PRINCIPALE :

0038 BOUCLE LDAA #$55 Initialise compteur 0039 STAA <COPRST chien de garde 0042 …….

0043 DECB

(2)

SMI-S4 2/5 I.OUADNOUNI

0044 BNE BOUCLE 0045 *

0046 FIN BRA FIN Attent INT COP

Remarque : Dans la ligne 0029 on remarque que la structure de l’instruction est composée d’une étiquette ou label « RESET », du code instruction « LDAA » et de l’opérande.

III- Opérations arithmétiques et boucles :

3-1 Directives d'assemblage : END Fin du fichier contenant le programme.

EQU Permet de donner des équivalences.

Ex: PORTB EQU $1004.

ORG Détermine où le compilateur doît mettre les codes qui suivent cette commande.

Ex: ORG $1000.

RMB Réserve une quantité de mémoire (octet).

Ex: RMB 8 FCB Permet de mettre des valeurs d'octets fixes dans des zones mémoire.

FCD Permet de mettre des valeurs de mots de 16 bits dans des zones mémoire FCC Permet de mettre des caractères de la table ASCII dans des zones mémoire.

Remarque : FCB, FCD, FCC et RMB s'utilisent avec la commande ORG afin de spécifier les zones mémoires affectées

3-2 Opérations d’affectation et opérations arithmétiques :

Chargement des registres et stockage Exemples :

LDAA #$8E // charger l’accumulateur A avec la valeur hexadécimale 8E.

LDAB #92 // charger l’accumulateur B avec la valeur décimale 92.

LDAA $2020 // charger l’accumulateur A par le contenu de l’adresse $2020.

STAB $2021 // stocker le contenu de B dans l’adresse $2021.

Opérations arithmétiques Exemples :

LDAA $5001

ADDA $5002 // ajouter à A le contenu de $5002 et mettre le résultat dans A.

SUBA $5000 // soustraire de A le contenu de $5000 et mettre le résultat à A.

3-3 Tests et Branchements :

La notion de boucle en programmation assembleur est assurée par des tests sur des compteurs, eux-mêmes des variables qu’on décompte par les instructions d’incrémentation et de décrémentation INC et DEC.

Exemple :

LDAA #15 // A joue le rôle de compteur CLRB // remise à zéro de B

Boucle ADDB $3000 // Ajouter à B le contenu de $3000 DECA // Décrémenter A qui sert de compteur

(3)

SMI-S4 3/5 I.OUADNOUNI BNE Boucle // Si le bit Z=0 passe à la ligne suivante sinon se brancher

à Boucle.

Ce programme permet de calculer la somme du contenu de l’adresse [$3000] 15 fois.

IV- Opérations sur les tableaux :

En assembleur la notion de tableau est similaire à la représentation d’un tableau par un pointeur, sauf que le pointeur dans notre cas ça ne peut être qu’un registre 16 bits du fait que l’adresse s’écrit sur 16 bits. Pour cela on se sert des deux registres d’indexe X et Y.

Exemple :

LDX #$3000 // X prend la valeur ‘3000’ en hexadécimale LDAB #20 // Charger B par la valeur 20

LDAA #1

B1 STAA 0,X // stocker le contenu de A dans l’adresse [X+0]

INCA INX DECB BNE B1

Ce programme permet de stocker un tableau de vingt valeurs de 1 à 20 dans les adresses de

$3000 à $3013.

$3000 $3001 $3002 $3003 $3004 $3005 $300F $3010 $3011 $3012 $3013

1 2 3 4 5 6 16 17 18 19 20

V- Les ports d’entrées/sorties :

Une particularité des microcontrôleurs par rapport aux microprocesseurs c’est que ce sont des circuits qui permettent non seulement le traitement de données, mais aussi la communication via des ports avec les périphériques d’entrées/sorties.

Certains ports pour leur utilisation en entrées ou en sorties nécessitent certaines configurations des registres internes.

Exemple 1 : On prend pour exemple le port C

Tous les bits du port C doivent être configurés soit en entrée soit en sortie, le registre interne DDRC dont l’adresse est $1007. Chaque bit du port C est configuré séparément :

 Pour configurer le 7ème bit du port C en sortie on doit mettre le DDC7 à 1.

 Pour configurer le 6ème bit du port C en entrée on doit mettre le DDC6 à 0.

 Pour configurer le bit 0 du port C en sortie on doit mettre le DDC0 à 1.

(4)

SMI-S4 4/5 I.OUADNOUNI Exemple programme pour configuration :

DDRC EQU $1007 ORG $D000

LDAA #%11001111 //configuration STAA DDRC //configuration

Ce programme permettre de configurer les bits 4 et 5 du port C en entrée et le reste des bits du port en sorties.

Exemple 2 : On prend pour exemple le port A

Seul deux bits du port A sont bidirectionnels qui doivent être configurés soit en entrée soit en sortie, le registre interne PACTL dont l’adresse est $1026. Chacun des deux bits est configuré séparément :

 Pour configurer le 7ème bit PA7 on doit mettre le DDRA7 à 1.

 Pour configurer le 3ème bit PA3 du port A en entrée on met le DDRA3 à 0.

A la différence du DDRC maintenant la configuration nous oblige à configurer un bit d’un registre interne PACTL sans modifier le contenu des autres bits.

(5)

SMI-S4 5/5 I.OUADNOUNI Cette manœuvre programme est possible en utilisant les registres d’indexe qui permettent d’opérer sur l’adresse indexe bit par bit. Et dans ce cas on va utiliser les instructions d’opérations sur les bits genre : « BCLR, BSET… »

Exemple programme pour configuration :

PACTL EQU $1026 ORG $D000

LDX PACTL //configuration

BCLR X,7 //configuration du PA7=0

Ce programme permettre de configurer le bits 7 du port A en entrée sans altérer les bits du registre interne PACTL contenant des informations supplémentaires.

Références

Documents relatifs

Results and discussion Water consumption in biofuel production chains based on non-irrigated crops does not vary greatly and is in the same range as for fossil fuel. In contrast, as

In addition to the large general-purpose caches listed in the table for the Intel486™ processor (8 KBytes of combined code and data) and the Intel Pentium ®.. and Pentium ®

1ère année BTS DSI Prof:EL HADARI zouhair. ARCHITECTURE INTERNE DES ARCHITECTURE

1ère année BTS DSI Prof:EL HADARI zouhair... 1ère année BTS DSI Prof:EL

1ère année BTS DSI Prof:EL HADARI zouhair... 1ère année BTS DSI Prof:EL

Cliquez ici pour telecharger le

• Des définitions de données déclarées par des directives (mots spéciaux interprétés par l'assembleur, nous les étudierons plus tard, le but est ici de donner une idée de ce

Toutefois, la consultation des livres suivants est fortement recommandée pour une meilleure compréhension des notions introduites dans ce cours :. •