Sunteți pe pagina 1din 22

MOTOROLA

68HC11F1
Christian Dupaty
Professeur de génie électrique
Académie d’Aix-Marseille
dupaty@unimeca.univ-mrs.fr
Généralités
Horloges allant jusqu' à 12MHz.
Ports parallèles
Port de communication série asynchrone
Port de communication série synchrone
8 Ports analogiques
6 Timers
Chien de garde
Génération d' interruptions temps réel
Jusqu'à 12KO de ROM ou d' EPROM
Jusqu'à 1KOde RAM
Jusqu'à 8KO d' EEPROM
Structure interne
Plan mémoire
Registres
A B Accumulateurs A et B 8bits
7 0 7 0
D Accumulateur
15 0 A+B=D 16 bits
IX Registre d’index X 16 bits
IY Registre d’index Y 16 bits
SP Pointeur pile système 16 bits
PC Compteur de programme 8bits
CCR Registre code condition 8bits
Adressage immédiat
Load Accumulator :
ldaa #12 charge 12 (décimal) dans le registre A (AccA)

ldab #$A5 charge $A5 (Hexa) dans le registre B (AccB)


ldx #$54AB charge $54AB (Hexa) dans le registre (index X)

# indique que l’opérande est la donnée :


adressage immédiat
ADRESSAGE ETENDU
ldaa $5A26 charge le contenu de l’adresse $5A26 dans le
registre A (AccA)

S’il n’y a rien entre l’instruction et l’opérande,


l’adressage est étendu
ADRESSAGE INDEXE
ldaa 0,x charge le contenu de l’adresse pointée par X
dans le registre A (AccA) avec un décalage nul

L’adressage indexé utilise toujours un pointeur ou


index, le 68HC11 en possède deux, X et Y.
ADRESSAGE RELATIF
Uniquement pour les branchements

beq $A5F2 (branch if equal to zero)

Effectue un saut sur l’instruction en$A5F2


si le bit Z du CCR est à zéro
CHARGEMENT / MEMORISATION
ldaa , ldab, ldx, ldy etc... Charge l’opérande
dans le registre

staa, stab, stx, sty etc … mémorise


l’opérande à une adresse
ARITHMETIQUES / LOGIQUES
ADDA/B Addition •LSLA/B/m décalages
ADDD •LSLD
ANDA/B ET logique •LSRA/B/m
CLRA/B/m Effacement (=0) •LSRD
COMA/B/m Complément •ROLA/B/m rotations
DECA/B/m -1 •RORA/B/m
EORA/B OU exclusif
INCA/B/m +1
ORAA/B OU
SUBA/B Soustraction
SUBD
Branchements
BRA branche toujours
BCC branche si C du CCR à 0
BCS branche si C du CCR à 1
BEQ branche si Z du CCR à 1
BMI branche si N du CCR à 1
BNE branche si Z du CCR à 0
ex beq $95BC
Saute en $95BC si Z=0
Instructions pour sous programme
BSR $xxxx (branch sub routine) Appelle un
sous programme

RTS (return sub routine) Retourne au


programme appellant

RTI (return from interrupt) Retour


d’interruption
Syntaxe assembleur
; FLASH sur PG0
portg equ $1002
ddrg equ $1003
org $8000 ; debut EEPROM
start cli ; pour le débogueur !
ldaa #$01
staa ddrg ; pg0 = sortie
led inc portg ; bascule led
ldd #$8000 ; temporisation
loop subd #1
bne loop
bra led
Sous programmes et PILE S
$E000 8D A4 BSR LABAS
$E002 86 01 LDAA #$01

Programme principal Sous-programme


Pile S

$8D $E000 $.. $E0A4


$02 $00FF
$A4 $E001 $.. $E0A5
$E0 $00FE
$86 $E002 …..
… $00FD
…..
$01 $E003 … $00FC
$39 $.....

RTS
Interruptions – sauvegarde des
registres
Données Adresses

RetL SP
RetH SP-1
IYL SP-2
IYH SP-3
IXL SP-4
IXH SP-5
AccA SP-6
AccB SP-7
CCR SP-8
? SP-9
? SP-10
VECTEURS
Addresses des vecteurs Sources des interruptions Masque du CCR Masque local
FFC0,C1–FFD4,D5 Reserved — —
FFD6,D7 SCI Serial System I RIE
SCI Receive Data Register Full RIE
SCI Receiver Overrun TIE
SCI Transmit Data Register Empty TCIE
SCI Transmit Complete ILIE
SCI Idle LineDetect
FFD8, D9 SPI Serial Transfer Complete I SPIE
FFDA, DB Pulse Accumulator Input Edge I PAII
FFDC, DD Pulse Accumulator Overflow I PAOVI
FFDE, DF Timer Overflow I TOI
FFE0, E1 Timer Input Capture 4 / Output Compare 5 I I4/O5I
FFE2, E3 Timer Output Compare 4 I OC4I
FFE4, E5 Timer Output Compare 3 I OC3I
FFE6, E7 Timer Output Compare 2 I OC2I
FFE8, E9 Timer Output Compare 1 I OC1I
FFEA, EB Timer Input Capture 3 I IC3I
FFEC, ED Timer Input Capture 2 I IC2I
FFEE, EF Timer Input Capture 1 I IC1I
FFF0, F1 Real-Time Interrupt I RTII
FFF2, F3 IRQ (External Pin) I None
FFF4, F5 XIRQ Pin X None
FFF6, F7 Software Interrupt None None
FFF8, F9 Illegal Opcode Trap None None
FFFA, FB COP Failure None NOCOP
FFFC, FD Clock Monitor Fail None CME
FFFE, FF RESET None None
Double masquage
Le PC est chargé avec l’adresse

Evenements asynchrones
du vecteur d’interruption …
&
IC3i
Front montant sur IC3 Interruption IC3

&
RTIi
Débordement du Interruption RTI
compteur RTI

&
OC2i
Coincidence Interruption OC2
TOC2=TCNT

1
I du CCR

Masques
TIMER
Real Time Interrupt
Horloge interne E du
68HC11, (Q/4)/213

Diviseur de
fréquence S
Par 1/2/4/8
RTR1 – RTR0 (PACTL) Q
IRQ RTI
RTIF RTII

&
(TMSK2)
Appel
R du S/P
(TFLG2) d’IT
Par le
RAZ par logiciel vecteur
(RTIF TFLG2)
I 1 $FFF0-
du CCR $FFF1

Vers autres
sources d’IT
TIMER en sortie
Division par 1,
4, 8 ou 16
E
PR1-PR0
E= Q/4 TMSK2
! 64 premiers cycles après
RAZ !

Compteur 16 bits
TCNT TOI
E/N TMSK2
&
TOF
Débordemen TFLG2
t
RAZ
RAZ logiciel
logiciel
Comparateur
Type
16 bits OCxF
TFLG1 d’action
TCNT=TOCx
OMx-OLx
TCTL1

Ocx
≥1 Sur
PortA
FOCx
CFOTC
Registre 16
bits TOCx
&
OCxI
TMSK1
TIMER en entrée
Division par 1,

E
4, 8 ou 16 Compteur 16 bits
PR1-PR0 TCNT TOI
E= Q/4
TMSK2 TMSK
2 &
! 64 premiers cycles après RAZ !
TOF
Débordement TFLG2
RAZ logiciel

RAZ logiciel
Détection de front
ICx ICxF
Registre 16 bits
EDGxB-EDGxA
TFLG TICx
TCTL2
1

&
ICxI
TMSK
1

T=D*E/N

D=TICx-N D=TICx-N D=TICx-N


N=TICx N=TICx N=TICx

S-ar putea să vă placă și