ARCHITECTURE INTERNE
RESET ET INTERRUPTIONS
RST*(13) entrée - sortie de démarrage. Pilotée par un circuit du type MC34064.
Un Reset peut être dû à un niveau bas sur cette entrée (vecteur $FFFE-$FFFF), ou au Chien de garde (vecteur $FFFA-$FFFB), ou à un problème d'horloge (vecteur $FFFC-$FFFD).
IRQ*(14) entrée d'interruption masquable, active soit sur niveau bas, soit sur front descendant, mise directement à Vdd si non utilisée.
XRQ*(10) entrée d'interruption non masquable, mise directement à Vdd si non utilisée.
Il y a 18 vecteurs d'interruptions et 3 vecteurs de Reset:
$FFD6-$FFD7 ASCI
$FFD8-$FFD9 SSPI
$FFDA-$FFDB Front sur entrée du Pulse Accumulator
$FFDC-$FFDD Dépassement de capacité du P.A.
$FFDE-$FFDF Dépassement de capacité du Timer
$FFE0-$FFE1 Timer IC4/OC5
$FFE2-$FFE3 Timer OC4
$FFE4-$FFE5 Timer OC3
$FFE6-$FFE7 Timer OC2
$FFE8-$FFE9 Timer OC1
$FFEA-$FFEB Timer IC3
$FFEC-$FFED Timer IC2
$FFEE-$FFEF Timer IC1
$FFF0-$FFF1 Interruption périodique
$FFF2-$FFF3 IRQ (externe)
$FFF4-$FFF5 XIRQ (externe et non masquable)
$FFF6-$FFF7 Interruption programmée (SWI)
$FFF8-$FFF9 Code illicite
$FFFA-$FFFB Chien de garde (reset)
$FFFC-$FFFD Problème d'horloge (reset)
$FFFE-$FFFF Reset
Lors d'une interruption, les registres mémorisés dans la pile sont: PC, IY, IX, ACCA, ACCB, CCR, soit 9 octets.
Lorsqu'une interruption est en cours de traitement, les autres sont inhibées jusqu'à l'instruction RTI qui permet un retour au programme principal. D'autres interruptions peuvent alors être traitées, suivant leur degré de priorité (qui ne suit pas obligatoirement l'ordre chronologique : voir registre HPRIO $003C).
La pile est généralement positionnée, lors de l'initialisation, sur l'adresse la plus haute de la RAM, soit $00FF.
Exemple de programme de mise en oeuvre de l'interruption externe IRQ
Avec Émulateur du MC68HC711D3 de MECALOGIC Concept.
***********************************************
* ESSAI D'UNE INTERRUPTION SUR IRQ(14).
* On visualise sur les leds le passage au programme d'interruption. A.P. octobre 1994
*
DDRC EQU $0007 Registre de direction de données
PORTC EQU $0003 Registre de sortie
OPTION EQU $0039 Registre des options
*
ORG $F000
* Initialisation:
Reset LDS #$00FF Initialisation pile
LDAA #$06
STAA $003F NOCOP+EPON
BSET OPTION $20 IRQE=1:front descendant sur IRQ
LDAA #$FF PC0 à PC7 en sorties
STAA <DDRC
CLR PORTC Raz sorties
CLI Lever le masque d'interruptions
* Programme principal:
BRA * Boucle sans fin simulant le prog.principal
* Programme d'interruption:
Inter COM PORTC Complémenter port C
RTI Retour au programme principal
* Vecteurs:
ORG $FFF2 Vecteur IRQ
FDB Inter
ORG $FFFE Vecteur Reset
FDB Reset
*
* Pour lancer le programme: [V], appuyer sur Reset, basculer en Run Only, relâcher Reset.
*
* Attention: l'interruption IRQ peut fonctionner, soit sur un front descendant, soit sur niveau
* bas. La configuration doit se faire dans OPTION, avant les 64 premiers cycles suivant un
* Reset.
*
END Fin du listing
***********************************************
MODES DE FONCTIONNEMENT
Le micro-contrôleur possède deux principaux modes de fonctionnement:
- microprocesseur (certains ports sont utilisés comme bus adresses, données, contrôle),
- micro-contrôleur (Normal Single Chip):
MODA(37) entrée à relier directement à Vss.
MODB(36) " " Vdd.
HORLOGE
XT(40) entrée horloge
EXT(39) sortie horloge
Ces bornes sont généralement reliées à un quartz 8 MHz ( + 2 condensateurs de 22pF et une résistance de 1MW ).
E(38) sortie horloge interne de fréquence f(quartz)/4
ALIMENTATION
Vdd(21) reliée au +5v
Vss(1) reliée au 0v
ESPACE ADRESSABLE
LES REGISTRES DE L'UNITE CENTRALE
REGISTRES 8 BITS
REGISTRES 8 BITS
ACCB Accumulator B
CCR Condition Code Register (registre d'état)
REGISTRE 16 BITS ACCD Double Accumulator ( ACCA + ACCB )
IX Index Register X (utilisation de l'adressage indexé)
IY Index Register Y (utilisation de l'adressage indexé)
SP Stack Pointer (gestion de la pile pour les sous-programmes et les programmes d'interruptions)
PC Program Counter (contient l'adresse de la prochaine instruction à exécuter).
INSTRUCTIONS PARTICULIÈRES BSET mise à 1 d'un bit d'un registre
BCLR mise à 0 d'un bit d'un registre
Syntaxe: BSET(ou BCLR) Registre Bit
BRSET branchement si le bit est à 1
BRCLR branchement si le bit est à 0
Syntaxe: BRSET(ou BRCLR) Registre Bit Label
MODES D'ADRESSAGES Immédiat
Étendu
Direct
Indexé (X ou Y)
Implicite
Relatif
Les entrées/sorties et la RAM se trouvant en page 0 (0000-00FF), il est conseillé d'utiliser le mode d'adressage direct (<) plutôt que le mode étendu (économie d'un octet par instruction).
Exemple:
STAA <$90 code machine : 97 90 (direct)
STAA $90 code machine: B7 00 90 (étendu)
Stocker le contenu de ACCA à l'adresse RAM $0090.
LES INSTRUCTIONS Chargements, Sauvegardes et Transferts
Mise à zéro d'un registre mémoire : CLR ou d'un accumulateur CLRA, CLRB.
Chargement : LDAA, LDAB, LDD, LDX, LDY, LDS.
Sauvegarde : STAA, STAB, STD, STX, STY, STS.
Mise d'octet(s) dans la pile : PSHA, PSHB, PSHX, PSHY.
Sortie d'octet(s) de la pile : PULA, PULB, PULX, PULY.
Transfert : TAB, TBA, TAP, TPA, TSX, TSY, TXS, TYS.
Echange : XGDX, XGDY.
Opérations arithmétiques
Addition : ABA, ABX, ABY, ADDA, ADDB, ADDD, ADCA, ADCB.
Comparaison : CBA, CMPA, CMPB, CPD, CPX, CPY, TST, TSTA, TSTB.
Incrémentation : INC, INCA, INCB, INX, INY, INS.
Décrémentation : DEC, DECA, DECB, DEX, DEY, DES.
Soustraction : SUBA, SUBB, SUBD, SBCA, SBCB.
Complément à deux : NEG, NEGA, NEGB.
Multiplication : MUL.
Division : FDIV, IDIV.
Ajustement décimal : DAA.
Décalages et rotations
Décalage vers la gauche : ASL, ASLA, ASLB, ASLD, LSL, LSLA, LSLB, LSLD.
Décalage vers la droite : ASR, ASRA, ASRB, LSR, LSRA, LSRB, LSRD.
Rotation vers la gauche : ROL, ROLA, ROLB.
Rotation vers la droite : ROR, RORA, RORB.
Opérations logiques
Et logique : ANDA, ANDB, BITA, BITB.
Ou logique : ORAA, ORAB, Ou exclusif : EORA, EORB.
Complémentation : COM, COMA, COMB.
Mise à un (ou à zéro) d'un bit : BSET, BCLR, SEC, CLC, SEI, CLI, SEV, CLV.
Branchements et sauts
Suivant l'état du bit : BRSET, BRCLR, BCS, BCC, BVS, BVC, BEQ, BNE, BMI, BPL.
Signés : BGE, BGT, BLE, BLT.
Non signés : BHI, BHS, BLO, BLS.
Inconditionnels : BRA, BRN, JMP, BSR, JSR, RTS, RTI.
Divers
SWI, WAI, NOP, STOP, TEST.
LES PORTS D'ENTREES-SORTIES DU MC68HC711D3 PORT A
Double fonction: entrées-sorties classiques ou entrées-sorties Timer.
PA0(27) entrée logique ou entrée de capture (IC3)
PA1(26) " " (IC2)
PA2(25) " " (IC1)
Il est préférable de relier les entrées PA0, PA1, PA2 à Vdd ou à Vss dans le cas où elles ne sont pas utilisées.
PA5(23) sortie logique ou comparaison (OC3)
PA3(24) entrée ou sortie logique ou sortie comparaison (OC5) ou entrée de capture (IC4)
PA7(22) entrée ou sortie logique ou entrée accumulateur d'impulsions (PAI) ou sortie comparaison (OC1)
Il est recommandé de programmer PA3 et PA7 en sorties dans le cas où ces bornes ne sont pas utilisées.
REGISTRES RELATIFS AU PORT A
PORTA Port A Data ($0000)
PACTL ($0026) Direction de donnée PA7 et PA3
+ Registres du Timer.
PORT B
PB0(35) entrée ou sortie logique
PB1(34) entrée ou sortie logique
PB2(33) entrée ou sortie logique
PB3(32) entrée ou sortie logique
PB4(31) entrée ou sortie logique
PB5(30) entrée ou sortie logique
PB6(29) entrée ou sortie logique
PB7(28) entrée ou sortie logique
Il est recommandé de programmer en sorties les bornes non utilisées du Port B.
REGISTRES RELATIFS AU PORT B
PORTB Port B Data ($0004)
DDRB Data Direction Register for Port B ($0006)
PORT C
PC0(2) entrée ou sortie logique
PC1(3) entrée ou sortie logique
PC2(4) entrée ou sortie logique
PC3(5) entrée ou sortie logique
PC4(6) entrée ou sortie logique
PC5(7) entrée ou sortie logique
PC6(8) entrée ou sortie logique
PC7(9) entrée ou sortie logique
Il est recommandé de programmer en sorties les bornes non utilisées du Port C.
REGISTRES RELATIFS AU PORT C
PORTC Port C Data ($0003)
DDRC Data Direction Register for Port C ($0007)
PIOC Parallel I/O Control ($0002) (Bit CWOM: sorties CMOS ou Drain ouvert).
PORT D
Certaines bornes sont réservées aux communications série synchrone et asynchrone.
PD0(15) entrée ou sortie logique ou entrée RxD du ASCI
PD1(16) entrée ou sortie logique ou sortie TxD du ASCI
ASCI: Asynchronous Serial Communications Interface
PD2(17) entrée ou sortie logique ou entrée/sortie MISO du SSPI
PD3(18) entrée ou sortie logique ou entrée/sortie MOSI du SSPI
PD4(19) entrée ou sortie logique ou entrée/sortie SCK du SSPI
PD5(20) entrée ou sortie logique ou entrée/sortie SS* du SSPI
SSPI: Synchronous Serial Peripheral Interface
PD6(12) entrée ou sortie logique
PD7(11) entrée ou sortie logique
Il est recommandé de programmer en sorties les bornes non utilisées du Port D
REGISTRES RELATIFS AU PORT D
PORTD Port D Data ($0008)
DDRD Data Direction Register for Port D( $0009)
Aucun commentaire:
Enregistrer un commentaire