Vous êtes sur la page 1sur 11

IUFM de Toulouse

- 68HC11 -

13/01/98

Le microcontrleur 68HC11 ( Motorola )


I/ Prsentation de larchitecture dun microcontrleur Contrles ( R/W, E, ... ) Adresses 16 bits Donnes 8 bits

Mmoires RAM ROM EEPROM P

Periphriques Liaisons sries Liaisons parallles TIMER etc.

Microcontrleur 68HC11 Rle du C La seule fonction du P est de prendre des donnes, de les traiter, puis de les renvoyer vers les priphriques ou les mmoires. Dcoupage du plan mmoire Le plan mmoire est fonction du bus dadresse. Sur le 68HC11, son format est de 16 bits. On peut donc adresser 2 octets, soit 64Ko. Il existe diverses versions de 68HC11 ( A1, A8, F1, etc.) qui disposent de leur propre plan mmoire, veuillez vous reporter la doc constructeur pour de plus amples informations ce sujet. II/ Les registres internes Registres 8 Bits : A, B, CCR

16

A B

Ces 2 registres servent pratiquement tout faire au format 8 Bits.

Leur juxtaposition donnent le registre D ( 16 bits ), de la manire suivante : b7 b0 b7 b0 A B D b15 b0


Guillaume COMTE - Jean-Louis CALMON

Page 1

IUFM de Toulouse

- 68HC11 -

13/01/98

CCR : le registre dtat b7 S b0 C

Le registre CCR est positionn par linstruction en cours, la fin de son traitement par le processeur. Bien quon puisse regrouper diffrentes instructions entre elles de manire connatre leur rsultat vis vis de ce registre, chaque instruction va influencer sur le CCR dune manire qui lui est propre. Pour lever le moindre doute, le seul recours est le jeu dinstructions fourni par le constructeur qui fait tat des bits suite une instruction donne. Signification des diffrents bits : C ( Carry : Retenue ) : est mis 1 lorsque le rsultat de linstruction gnre une retenue. Le terme retenue doit tre pris au sens large du terme, elle concerne les instructions qui se rapportent : n larithmtique n les dcalages / rotations n les comparaisons n les calculs de complments n etc. V ( oVerflow = dbordement ) : positionn 1 lorsque lopration arithmtique a gnr un dbordement de laccumulateur utilis. Ex : LDAA #255 INCA

ici A=0 et V=1 En effet, il y a dbordement car la valeur de A devrait tre 256 ce que ne peut stocker un registre 8 bits, et qui passe donc 0. Z ( Zro ) : passe 1 lorsque le rsultat de linstruction est nul. Ex : CLRA ou LDA #01 DECA A=0

ici Z=1 car

N ( Ngatif ) : positionn 1 si le rsultat de la dernire opration arithmtique ralise est ngative, cest dire lorsque le bit de poids fort vaut 1 ( cas des nombres signs ). H ( Half Carry = demi retenue ) : utilis lors des calculs DCB ( Dcimal Cod Binaire ). I ( Interrupt mask = masque dinterruption ) : ce bit inhibe les interruptions lorsquil vaut 1.

Guillaume COMTE - Jean-Louis CALMON

Page 2

IUFM de Toulouse

- 68HC11 -

13/01/98

X ( XIRQ interrupt mask = masque dinterruption XIRQ ) : de la mme manire que le bit I, X inhibe linterruption XIRQ lorsquil vaut 1. S ( Stop ) : positionn 1, lexcution de linstruction STOP est remplace par un NOP. Remarque : linstruction STOP fait passer le processeur en mode endormi . Cela signifie que lhorloge interne est arrte. Lorsque le processeur est rveill, cette horloge sera valide aprs un certains nombres de cycles dus un tat transitoire de mise en oscillation du quartz ( ce qui peut tre proscrire dans certaines applications de type temps rel ). Registres 16 bits : D, X, Y, SP, PC. D : Juxtaposition des registres A et B ( 8 bits ). X : Voici la version du registre tout faire au format 16 bits. Contrairement ses confrres 8 bits ( A et B ), il assure aussi un rle fondamental dindex. Y : Idem au registre X. Cependant, les instructions concernant ce registre sont codes avec un octet supplmentaire par rapport au registre X, et donc, prennent un cycle machine en plus lors de leur excution. Donc, ayez le rflexe de : 1. Utiliser de prfrence le registre X au registre Y de manire gnrale 2. Lorsque deux boucles sont imbriques, utilisez le registre X pour la boucle centrale SP ( Stack Pointer = pointeur de pile ) : indique en permanence la prochaine adresse de loctet libre de la pile.

Fonctionnement de la pile : donne 8 bits Sauvegarde dans la Chargement partir de la pile pile Octet ( SP ) SP SP+1 SP SP-1 ( SP ) Octet

donne 16 bits Sauvegarde dans la Chargement partir de la pile pile Octet ( SP ) SP SP+1
Guillaume COMTE - Jean-Louis CALMON

Page 3

IUFM de Toulouse

- 68HC11 -

13/01/98

Ex :

( SP ) Octet SP SP-1 SP SP+1 Octet ( SP ) ( SP ) Octet SP SP-1 LDS #$FF Initialisation de la pile LDAA#$33 LDX #$1234 PSHA Stockage dans la pile ( on empile )

Avant PSHA Pointeur S Adresse FC FD FE FF Mmoire XX XX XX XX Pointeur S

Aprs PSHA Adresse FC FD FE FF Mmoire XX XX XX 33

. . Suite du programme . PULA Chargement partir de la pile ( on dpile )

Avant PULA Pointeur S Adresse FC FD FE FF Mmoire XX XX XX 33 Pointeur S

Aprs PULA Adresse FC FD FE FF Mmoire XX XX XX 33

PSHX Avant PSHX Pointeur S Adresse FC FD FE FF Mmoire XX XX XX 33 Pointeur S

Aprs PSHX Adresse FC FD FE FF Mmoire XX XX 12 34

Lempilement dun registre 16 bits se dcompose en deux phases ( transparent pour lutilisateur ) : 1re phase Stockage poids faible

Pointeur S

Adresse

Mmoire
Guillaume COMTE - Jean-Louis CALMON

FC FD FE FF

XX XX XX 34
Page 4

IUFM de Toulouse

- 68HC11 -

13/01/98

2me phase Stockage poids fort Pointeur S PULX Avant PULX Pointeur S

FD FE FF

XX 12 34

Adresse FC

Mmoire XX Chargement partir de la pile ( on dpile ) Aprs PULX Mmoire XX XX 12 34 Pointeur S Adresse FC FD FE FF Mmoire XX XX 12 34

Adresse FC FD FE FF

Le dpilement dun registre 16 bits se dcompose en deux phases ( transparent pour lutilisateur ) : 1re phase Dpilement poids fort Pointeur S Adresse FC FD FE FF Mmoire XX XX 12 34 2me phase Dpilement poids faible Pointeur S Adresse FC FD FE FF Mmoire XX XX 12 34

Remarque : - il FAUT INITIALISER LA PILE au dbut du programme - la gestion de la pile est automatique - le contenu de la pile nest pas effac ( voir tableaux plus haut ) - la pile est utilise par les instructions suivantes : PSHx, PULx, JSR, RTS, RTI. PC ( Program Counter = Compteur ordinal ) : ce registre 16 bits contient en permanence ladresse de la prochaine instruction excuter.

III/ Les modes dadressage Rappel : constitution dune instruction Lors de la compilation, les instructions sont traduites en codes hexadcimaux comprises par le processeur. Elles se dcomposent en deux parties : - le code oprateur, qui correspond au code dune instruction. - loprande, qui est la donne utile de linstruction.

Guillaume COMTE - Jean-Louis CALMON

Page 5

IUFM de Toulouse

- 68HC11 -

13/01/98

Instruction LDAA #$80

Code hxa 86 80

Code oprateur Exemple

Oprande

Adressage inhrent Dans ce mode, les instructions nont ni oprande, ni saut relatif , elles se suffisent elles mmes. Ex : CLRA COMA ABA ABX etc.

Adressage immdiat Dans ce mode, la donne traiter se trouve immdiatement aprs linstruction. Le signe caractristique est le dise : #. Ex : LDAA #$15 A $15 SUBA #03 A A-03 ORAA #04 A A ou 04 etc. Adressage tendu La donne utile se trouve ladresse dfinie par loprande de linstruction. Ex : LDAA ANDA STAA $3000 $3001 $3002

Contenu de la mmoire : Adresse $3000 $3001 $3002 Contenu $33 $11 $11 Remarque A $33 A A and $11 A $3002

Guillaume COMTE - Jean-Louis CALMON

Page 6

IUFM de Toulouse

- 68HC11 -

13/01/98

Adressage direct Ce mode est pratiquement identique ladressage tendu. La diffrence se situe au niveau du codage de ladresse : alors que dans ltendu on note ladresse entire ( 16 bits ), ici on va indiquer que loctet de poids faible de ladresse ( 8 bits ). Les 8 bits de poids fort qui manquent pour reconstituer ladresse sont dfinis, sur des P tel que le 6809, dans un registre spcifique DP ( Direct Page ). Suivant la valeur de DP, on accdera diffrents blocs mmoires de 256 octets chacun. Ex : Adresse Contenu $0000 $0001 01 03 Adress e $0100 $0101 Contenu 22 04 Adresse Contenu $1000 $1001 33 05

Avec la mme initialisation LDAA $00 Si DP = $00 DP = $01 DP = $10 A = 01 A = 22 A = 33 Correspondrait ( mode tendu ) LDAA $0000 LDAA $0100 LDAA $1000

De mme : LDAA $01 Si DP = $00 DP = $01 DP = $10 A = 03 A = 04 A = 05 Correspondrait ( mode tendu ) LDAA $0001 LDAA $0101 LDAA $1001

Sur le HC11, le registre DP nexiste pas ! La valeur de loctet de poids fort est nulle.

Ladressage direct permet dadresser les 256 premiers octets de la mmoire.

Avantages :

ladresse 16 bits est code sur 8 bits. F on conomise un octet, donc 1 cycle machine par instruction.

Adressage index Ce mode utilise le mme principe que ladressage tendu, mais ici ladresse est contenue dans un index 16 bits : X ou Y. Ex : Adresse Contenu Adresse Contenu
Page 7

Guillaume COMTE - Jean-Louis CALMON

IUFM de Toulouse

- 68HC11 -

13/01/98

$1000

66

$009A $009B

51 52

LDX LDAA LDY INY LDAB

#$1000 ,X #$009A ,Y

X $1000 A 66

B 52

Utilisation frquente : Lecture, criture, copie de tables. Dplacement nul Correspond au cas prcdent. Lindication du dplacement nul est facultatif. Ainsi, ne soyez pas surpris de voir apparatre suite un dsassemblage : LDAB 0,Y Aprs avoir tap LDAB ,Y dans le code source. Dplacement non nul Ladresse rsultante de loprande est la somme du dplacement avec ladresse. Adresse rsultante = Dplacement + Index

Remarque :

Le dplacement est cod sur un octet non sign. Ainsi, il ne peut tre que positif et compris entre 0 et 255.

Ex : Adresse X X+1 X+2 Contenu 03 04 05

LDAA

$02 ,X

A 05

Remarque dordre gnrale Erreur frquemment ralise :


Guillaume COMTE - Jean-Louis CALMON

Page 8

IUFM de Toulouse

- 68HC11 -

13/01/98

Dterminer les valeurs de A et X suite aux instructions suivantes :

LDX #01 STX $100 LDAA $100 Valeur de A ?

LDAB STAB LDX

#$55 $103 $103

Valeur de X ?

( Solutions page suivante ) Rponses : A=00 X=55xx

xx = octet indtermin

Le format de la donne utile est du mme format que linstruction.

Ex : LDX # $10

X est un registre 16 bits, donc X = $0010 !

STX

$100

X 16 bits, donc linstruction va stocker 2 octets partir de $0100. Adresse $0100 $0101 Contenu $00 $10 Remarque Poids fort de X Poids faible de X

Guillaume COMTE - Jean-Louis CALMON

Page 9

IUFM de Toulouse

- 68HC11 -

13/01/98

LDAA #$1FF

NON ! ! ! !

A registre 8 bits, donc IMPOSSIBLE car le format de la donne est suprieur 8 bits.

LDAA #$FF STAA $100 A registre 8 bits, donc va stocker 1 octet partir de $0100. Adresse $0100 Contenu $FF

Adressage relatif Ce mode est en troite relation avec le registre PC. On a vu que le PC est un registre 16 bits qui contient en permanence ladresse de la prochaine instruction excuter : Ex : Adresse du code B600 B602 Code 86 01 B7 01 00 Instruction LDAA #01 STAA $0100

Lorsque le processeur excute LDAA #01, qui se trouve ladresse B600, le PC pointe sur linstruction suivante, soit PC = B602. Les instructions de branchement utilisent cet adressage relatif. Loprande dune telle instruction indique en fait la valeur ajouter au PC pour effectuer le saut.

Cette valeur est code sur 1 octet sign : On peut donc effectuer un saut de -128 +127, soit de 128 octets avant 127 aprs la valeur actuelle du PC.

Analysons le programme suivant et cherchons la valeur du branchement ( xx ) : Adresse du code B600 B602 B603 Code B6 03 4A 26 xx Instruction LDAA #03 Ici DECA BNE Ici
Guillaume COMTE - Jean-Louis CALMON

Remarque Quand le processeur excute linstruction BNE, le PC = B605.


Page 10

IUFM de Toulouse

- 68HC11 -

13/01/98

B605 Le branchement vaudra donc B602-B605 = -03, soit sur 1 octet sign $F9. Donc xx = $F9.

Pour calculer la valeur du saut, dterminer : - la valeur du PC lors de lexcution de linstruction de branchement, PCi. - la valeur du PC de linstruction o renvoie le branchement, PCf. - calculer la valeur du saut = PCf - PCi PCi = B605 PCf = B602 Autre exemple : Adresse du code Code B600 20 xx B602 7E 00 FE B605 86 30 Dans lexemple prcdent,

Instruction BRA l JMP $00FE l LDAA #$30

Lorsque le processeur excute BRA, le PC vaut B602, PCi = B602. On souhaite brancher en B605, PCf = B605. Saut = PCf - PCi = B605 - B602 = 03

Donc xx = 03.

Guillaume COMTE - Jean-Louis CALMON

Page 11