Familia MC68HC11 de Motorola Introducción: La familia de µcontroladores MC68HC11 está basada en el Microprocesador de 8 bits 6800. Fabricados con tecnología HCMOS. Velocidad de bus de 2 MHz. Encapsulado PLCC de 52 pines. Consumo entre 15 y 35 mA, y alimentación de 5 Voltios. Modo de funcionamiento de bajo consumo (250 µw). Sistemas Electrónicos 1 Familia MC68HC11 de Motorola Familia MC68HC11: Los dispositivos base corresponden a la serie A. Sistemas Electrónicos 2 Familia MC68HC11 de Motorola Características del MC68HC711E9: ⌧12K Bytes de EPROM. ⌧512 Bytes de EEPROM. ⌧512 Bytes de RAM redireccionables. ⌧5 Puertos paralelos con distintas funciones. ⌧Timer de 16 bits. ⌧Circuito acumulador (contador) de 8 bits. ⌧Interface Serial de Comunicaciones (SCI). ⌧Interface Serial de periféricos (SPI). ⌧8 entradas al Conversor analógico Digital de 8bits. ⌧Interrupción para el circuito de Reloj en Tiempo Real. ⌧Sistema de alimentación con Watchdog. Sistemas Electrónicos 3 Familia MC68HC11 de Motorola Descripción general: Illustration © Motorola Sistemas Electrónicos 4 Familia MC68HC11 de Motorola Descripción general: Registros internos de la CPU: 7 A 0 7 B 0 8 Bits Acumulador A y B 15 D 0 ó 16 Bits Acumulador D 15 IX 0 Registro Indice X 15 IY 0 Registro Indice Y 15 SP 0 Punterao de Pila 15 CP 0 Contador de Programa 7 0 SXHINZVC Bit Permiso Intrucc. STOP Máscara Interrupción X Carry Auxiliar Máscara Interrupción I Reg. de Códigos de Condición. Acarreo Desbordamiento Cero Negativo Sistemas Electrónicos Registro Registrode deCódigos Códigosde de Condición: Condición: Bit BitI:I:Puede Puedeactivarse activarsepor por hardware o por software. hardware o por software. Bit BitX: X:Puesto Puestoaa11sólo sólopor por hardware. Se borra por hardware. Se borra por programa. programa. Bit BitS:S:Inhabilita Inhabilitalalainstrucción instrucción STOP. STOP. 5 Familia MC68HC11 de Motorola Acumuladores A y B: ⌧Registros de 8 bits. Existen instrucciones específicas para cada uno: – STAA opr , STAB opr ; Guarda el contenido del acumulador A en la posición de memoria indicada por opr. ⌧Funcionando como registro de 16 bits (D): – STD opr ; (A) -> M, (B) -> M+1 Registros índices X e Y: ⌧Se usan para el modo de direccionamiento indexado. Offset de un byte. – Cuando se utiliza el registro IY, el código de operación tiene un byte extra. Stack Pointer: ⌧Pila tipo LIFO. ⌧Se inicializa con la instrucción LDS opr. Sistemas Electrónicos 6 Familia MC68HC11 de Motorola Contador de Programa: ⌧Registro de 16 bits que apunta a la próxima instrucción a ejecutar. Registro de Códigos de Condición: ⌧C: Bit de acarreo. Indica acarreo en la última operación aritmética. ⌧V: Bit de desbordamiento. Indica el desbordamiento de la capacidad del Acumulador. ⌧Z: Bit de cero. Puesto a uno si el resultado de la última operación fue cero. ⌧N: Bit de negativo. Puesto a uno si el resultado de la última operación fue negativo. ⌧I: Bit de la interrupciones enmascarables. Puede ser activado por software o por hardware para enmascarar las interrupciones, tanto internas como externas. ⌧H: Bit de acarreo auxiliar. Indica si ha habido acarreo entre los bits 3º y 4º del Acumulador. ⌧X: Bit de la máscara de interrupción X. Este bit se pone a uno por hardware (/RESET o /XIRQ) y es borrado sólo por programa. ⌧S: Bit de Stop. Cuando se pone a uno, inhabilita la instrucción STOP. Sistemas Electrónicos 7 Familia MC68HC11 de Motorola Modos de direccionamiento: Inherente: ⌧El operando está implícito en el código de operación. • 11 CBA • 11 RORB ; Compara A y B. ; Rotación a la derecha de B a través del acarreo. Inmediato: ⌧El operando está en el o los bytes que siguen al código de operación. ⌧El carácter identificador de este direccionamiento es: #. • C9 75 ADCB #$75 • 86 16 LDAA #22 • 87 17 CMPA #%0001011 • C6 41 LDAB #’A’ • 86 12 LDAA #@22 • CE 12 3A LDX #$123A ; Suma al ac. B el dato hexadecimal 75. ; Carga en el ac. A el dato decimal 22. ; Compara el ac. A con un dato binario. ; Carga en ac. B el valor ASCII de la letra A. ; Carga en el ac. A el dato octal 22. ; Carga en el reg. X el valor hex. 123A. Sistemas Electrónicos 8 Familia MC68HC11 de Motorola Modos de direccionamiento: Directo: ⌧El byte que sigue al OpCode corresponde a la dirección del dato. ⌧Directamente sólo se puede acceder a las posiciones de memoria RAM comprendidas entre: $0000 - $00FFH • 96 75 LDAA $75 ; Carga en A el dato contenido en la dirección 0075H. Extendido: ⌧La instrucción especifica la dirección completa del operando. • F9 12 34 STAB $1234 ; Almacena el contenido de B en la posición • F3 75 AF ANDA $75AF ; Realiza la AND lógica entre el contenido de de memoria 1234H. A y el byte de dirección 75AFH Sistemas Electrónicos 9 Familia MC68HC11 de Motorola Modos de direccionamiento: Indexado: ⌧El byte que sigue al OpCode corresponde con un offset que se le suma al registro índice IX o IY para obtener la dirección del operando. • E6 75 LDAB $75,X ; Carga en B el dato contenido en la dirección (X) + 75H. ⌧Muy práctico con el uso de estructuras y arrays: • Estructuras: El registro índice contiene un puntero al principio de la estructura. El offset especifica el campo. • Arrays: El offset contiene la base del array. El registro índice contiene el elemento dentro del array. Sistemas Electrónicos 10 Familia MC68HC11 de Motorola Modos de direccionamiento: Relativo: ⌧El byte que sigue al OpCode es un offset que se le suma al Contador de Programa. ⌧Utilizado sólo para saltos cortos. ⌧Direccionamiento limitado a -128 / +127 posiciones respecto al Contador de Programa. • BEQ L1 ; Salta a la etiqueta L1 si el flag Z = 1. Sistemas Electrónicos 11 Familia MC68HC11 de Motorola Tipos de Instrucciones: Instrucciones de Transferencia. Instrucciones Aritméticas. Instrucciones Lógicas. Instrucciones de Rotación y Desplazamiento. Instrucciones de Ruptura del Secuenciamiento del Programa. Instrucciones de Control. Sistemas Electrónicos 12 Familia MC68HC11 de Motorola Instrucciones de Transferencia: Memoria ⇔ Registro Nemónicos Operación Descripción Direccionamientos LDAA (opr) Load Accumulator A (M) -> A; IMM;DIR;EXT;IND,X;IND,Y; LDAB (opr) Load Accumulator B (M) -> B; IMM;DIR;EXT;IND,X;IND,Y; LDD (opr) Load Double Accumulator D (M) -> A; (M+1) -> B; IMM;DIR;EXT;IND,X;IND,Y; LDS (opr) Load Stack Pointer (M:M+1) -> SP; IMM;DIR;EXT;IND,X;IND,Y; LDX (opr) Load Index Register X (M:M+1) -> IX; IMM;DIR;EXT;IND,X;IND,Y; LDY (opr) Load Index Register Y (M:M+1) -> IY; IMM;DIR;EXT;IND,X;IND,Y; Sistemas Electrónicos 13 Familia MC68HC11 de Motorola Instrucciones de Transferencia: Registro ⇔ Memoria Nemónicos Operación Descripción Direccionamientos STAA (opr) Store Accumulator A (A) -> M; DIR;EXT;IND,X;IND,Y; STAB (opr) Store Accumulator B (B) -> M; DIR;EXT;IND,X;IND,Y; STD (opr) Store Accumulator A (A) -> M; (B) -> M + 1; DIR;EXT;IND,X;IND,Y; STS (opr) Store Stack Pointer (SPH) -> M; (SPL) -> M + 1; DIR;EXT;IND,X;IND,Y; STX (opr) Store Index Register X (XH) -> M; (XL) -> M + 1; DIR;EXT;IND,X;IND,Y; STY (opr) Store Index Register Y (YH) -> M; (YL) -> M + 1; DIR;EXT;IND,X;IND,Y; Sistemas Electrónicos 14 Familia MC68HC11 de Motorola Instrucciones de Transferencia: Pila ⇔ Registro Nemónicos Operación Descripción Direccionamientos PSHA Push Accumulator A onto Stack (A) -> (SP); (SP) - 1 -> SP; INH; PSHB Push Accumulator B onto Stack (B) -> (SP); (SP) - 1 -> SP; INH; PSHX Push index register X onto Stack PSHY Push index register Y onto Stack PULA Pull Accumulator A from Stack ((SP)+1) -> A; (SP)+1 -> SP; INH; PULB Pull Accumulator B from Stack ((SP)+1) -> B; (SP)+1 -> SP; INH; PULX Pull Index Register X from Stack PULY Pull Accumulator Y from Stack (XL)-> (SP); (XH)-> (SP-1); (SP) – 2 -> SP; (YL)-> (SP); (YH)-> (SP-1); (SP) – 2 -> SP; ((SP)+1) -> XH; ((SP)+2) -> XL ; (SP) + 2 -> SP; ((SP)+1) -> YH; ((SP)+2) -> YL ; (SP) + 2 -> SP; Sistemas Electrónicos INH; INH; INH; INH; 15 Familia MC68HC11 de Motorola Instrucciones de Transferencia: Registro ⇔ Registro Nemónicos Operación Descripción Direccionamientos TAB Transfer A to B (A) -> B; INH; TAP Transfer A to CC register (A) -> CCR; INH; TBA Transfer Accumulator B to A (B) -> A; INH; TPA Transfer CC Register to A (CCR) -> A; INH; TSX Transfer Stack Pointer to X (SP+1) -> X; INH; TSY Transfer Stack Pointer to Y (SP+1) -> Y; INH; TXS Transfer X to Stack Pointer (IX) - 1 -> SP; INH; TYS Transfer Y to Stack Pointer (IY) - 1 -> SP; INH; XGDX Exchange D with X (IX) -> D, (D) -> IX; INH; XGDY Exchange D with Y (IY) -> D, (D) -> IY; INH; Sistemas Electrónicos 16 Familia MC68HC11 de Motorola Instrucciones Aritméticas: Acumulador ⇔ Memoria Nemónicos Operación Descripción Direccionamientos ADDA (opr) Add Memory to Accumulator A (A) + (M) -> A; IMM;DIR;EXT;IND,X;IND,Y; ADDB (opr) Add Memory to Accumulator B (B) + (M) -> B; IMM;DIR;EXT;IND,X;IND,Y; ADDD (opr) Add 16-Bits Memory to D (D) + (M:M+1) -> D; IMM;DIR;EXT;IND,X;IND,Y; ADCA (opr) Add Memory with Carry to A (A) + (M) + C -> A; IMM;DIR;EXT;IND,X;IND,Y; ADCB (opr) Add Memory with Carry to B (B) + (M) + C -> B; IMM;DIR;EXT;IND,X;IND,Y; SUBA (opr) Substract Memory from A (A) – (M) -> A; IMM;DIR;EXT;IND,X;IND,Y; SUBB (opr) Substract Memory from B (B) – (M) -> B; IMM;DIR;EXT;IND,X;IND,Y; SUBD (opr) Substract Memory from D (D) – (M:M+1) -> D; IMM;DIR;EXT;IND,X;IND,Y; SBCA (opr) Substract Memory with Carry from A (A) – (M) – C -> A; IMM;DIR;EXT;IND,X;IND,Y; SBCB (opr) Substract Memory with Carry from B (B) – (M) – C -> B; IMM;DIR;EXT;IND,X;IND,Y; Sistemas Electrónicos 17 Familia MC68HC11 de Motorola Instrucciones Aritméticas: Registro ⇔ Registro Nemónicos Operación Descripción Direccionamientos ABA Add Accumulators (A) + (B) -> A; INH; ABX Add B to Index Register X (IX) + (00:B) -> IX; INH; ABY Add B to Index Register Y (IY) + (00:B) -> IY; INH; SBA Substract B from A (A) – (B) -> A; INH; MUL Multiply 8 bits Accumulators (A) * (B) -> D; INH; IDIV Integer Divide 16 by 16 (D) / (IX) -> IX; r -> D; INH; FDIV Fractional Divide 16 by 16 (D) / (IX) -> IX; r -> D; INH; Sistemas Electrónicos 18 Familia MC68HC11 de Motorola Instrucciones Aritméticas: un solo operando en Registro Nemónicos Operación Descripción Direccionamientos CLRA Clear Accumulator A 0 -> A; INH; CLRB Clear Accumulator B 0 -> B; INH; DAA Decimal Adjust Accumulator A Adjust Sum to BCD INH; DECA Decrement Accumulator A (A) – 1 -> A; INH; DECB Decrement Accumulator B (B) – 1 -> B; INH; DES Decrement Stack Pointer (SP) – 1 -> SP; INH; DEX Decrement Index Register X (IX) – 1 -> IX; INH; DEY Decrement Index Register Y (IY) – 1 -> IY; INH; NEGA Twos Complement Accumulator A 0 – (A) -> A; INH; NEGB Twos Complement Accumulator B 0 – (B) -> B; INH; Sistemas Electrónicos 19 Familia MC68HC11 de Motorola Instrucciones Aritméticas: un solo operando en Registro Nemónicos Operación Descripción Direccionamientos INCA Increment Accumulator A (A) + 1 -> A; INH; INCB Increment Accumulator B (B) + 1 -> B; INH; INS Increment Stack Pointer (SP) + 1 -> SP; INH; INX Increment Index Register X (IX) + 1 -> IX; INH; INY Increment Index Register Y (IY) + 1 -> IY; INH; COMA Ones’s Complement Accumulator A $FF – (A) -> A; INH; COMB Ones’s Complement Accumulator B $FF – (B) -> B; INH; Sistemas Electrónicos 20 Familia MC68HC11 de Motorola Instrucciones Aritméticas: un solo operando en Memoria Nemónicos Operación Descripción Direccionamientos CLR (opr) Clear Memory Byte 0 -> M; EXT;IND,X;IND,Y; COM (opr) One´s Complement Memory Byte $FF – (M) -> M; EXT;IND,X;IND,Y; DEC (opr) Decrement Memory Byte (M) - 1 -> M; EXT;IND,X;IND,Y; INC (opr) Increment Memory Byte (M) + 1 -> M; EXT;IND,X;IND,Y; NEG (opr) Two`s Complement Memory Byte 0 – (M) -> M; EXT;IND,X;IND,Y; Sistemas Electrónicos 21 Familia MC68HC11 de Motorola Instrucciones Lógicas: Acumulador ⇔ Memoria Nemónicos Operación Descripción Direccionamientos ANDA (opr) AND Accumulator A with Memory (A) • (M) -> A; IMM;DIR;EXT;IND,X;IND,Y; ANDB (opr) AND Accumulator B with Memory (B) • (M) -> B; IMM;DIR;EXT;IND,X;IND,Y; EORA (opr) Exclusive OR A with Memory (A) ⊕ (M) -> A; IMM;DIR;EXT;IND,X;IND,Y; EORB (opr) Exclusive OR B with Memory (B) ⊕ (M) -> B; IMM;DIR;EXT;IND,X;IND,Y; ORAA (opr) OR Accumulator A with Memory (A) + (M) -> A; IMM;DIR;EXT;IND,X;IND,Y; ORAB (opr) OR Accumulator B with Memory (B) + (M) -> B; IMM;DIR;EXT;IND,X;IND,Y; Sistemas Electrónicos 22 Familia MC68HC11 de Motorola Instrucciones de Rotación y Desplazamiento: Desplazamientos: Izquierda y Derecha Operando en Registro acumulador o en Memoria: ⌧Aritméticos: En desplazamientos a derecha, propagan el signo. ⌧Lógicos: Introducen ceros en el sentido del desplazamiento. Rotación: Izquierda y Derecha Operando en Registro acumulador o en Memoria. Siempre se hace a través del carry. Sistemas Electrónicos 23 Familia MC68HC11 de Motorola Instrucciones de Rotación y Desplazamiento: Nemónicos Operación Descripción Direccionamientos ASL (opr) Arithmetic Shift Left C b7 ASLA Arithmetic Shift Left Accumulator A C b7 ASR (opr) Arithmetic Shift Right b7 ASRB Arithmetic Shift Right Accumulator B b7 LSL (opr) Logical Shift Left C b7 b0 LSR (opr) Logical Shift Right 0 b7 b0 C EXT;IND,X;IND,Y; LSRA Logical Shift Right Accumulator A 0 b7 b0 C INH; ROL (opr) Rotate Left C b7 ROLB Rotate Left Accumulator B C b7 ROR (opr) Rotate Right b7 RORA Rotate Right Accumulator A b7 b0 0 EXT;IND,X;IND,Y; b0 0 INH; Registro A b0 C EXT;IND,X;IND,Y; b0 C INH; Registro B 0 Registro A b0 EXT;IND,X;IND,Y; b0 INH; b0 C EXT;IND,X;IND,Y; b0 C INH; Registro B Registro A Sistemas Electrónicos EXT;IND,X;IND,Y; 24 Familia MC68HC11 de Motorola Instrucciones de Comparación: Registro ⇔ Memoria Nemónicos Operación Descripción Direccionamientos BITA (opr) Bit(s) Test A with Memory (A) • (M); IMM;DIR;EXT;IND,X;IND,Y; BITB (opr) Bit(s) Test B with Memory (B) • (M); IMM;DIR;EXT;IND,X;IND,Y; CBA Compare Accummulators A and B (A) – (B); INH; CMPA (opr) Compare Accumulator A to Memory (A) – (M); IMM;DIR;EXT;IND,X;IND,Y; CMPB (opr) Compare Accumulator B to Memory (B) – (M); IMM;DIR;EXT;IND,X;IND,Y; CPD (opr) Compare D to Memory 16-Bits (D) – (M:M+1); IMM;DIR;EXT;IND,X;IND,Y; CPX (opr) Compare X to Memory 16-Bits (IX) – (M:M+1); IMM;DIR;EXT;IND,X;IND,Y; CPY (opr) Compare Y to Memory 16-Bits (IY) – (M:M+1); IMM;DIR;EXT;IND,X;IND,Y; TST (opr) Test for Zero or Minus (M) – 0; EXT;IND,X;IND,Y; TSTA Test A for Zero or Minus (A) – 0; INH; TSTB Test B for Zero or Minus (B) – 0; INH; Sistemas Electrónicos 25 Familia MC68HC11 de Motorola Instrucciones de Salto y Bifurcación: Test Operación Nemónico Complementario Nemónico Comentario Carry ¿ C = 1; BCS No carry BCC Simple; Negativo ¿ N = 1; BMI Positivo BPL Simple; Overflow ¿ V = 1; BVS No Overflow BVC Simple; [r] = 0 ¿ Z = 1; BEQ [r] ≠ 0 BNE Simple; [r] > [M] ¿ Z + (N ? V) = 0; BGT [r] = [M] BLE Signed; [r] = [M] ¿ N ? V = 0; BGE [r] < [M] BLT Signed; [r] = [M] ¿ Z = 1; BEQ [r] ≠ [M] BNE Signed; [r] = [M] ¿ Z + (N ? V) = 1; BLE [r] > [M] BGT Signed; [r] < [M] ¿ N ? V = 1; BLT [r] = [M] BGE Signed; Sistemas Electrónicos 26 Familia MC68HC11 de Motorola Instrucciones de Salto y Bifurcación: Test Operación Nemónico Complementario Nemónico Comentario [r] > [M] ¿ C + Z = 0; BHI [r] = [M] BLS Unsigned; [r] = [M] ¿ C = 0; BHS / BCC [r] < [M] BLO / BCS Unsigned; [r] = [M] ¿ Z = 1; BEQ [r] ≠ [M] BNE Unsigned; [r] = [M] ¿ C + Z = 1; BLS [r] > [M] BHI Unsigned; [r] < [M] ¿ C = 1; BLO / BCS [r] = [M] BHS / BCC Unsigned; Always ---- BRA Never BRN Unconditional; Sistemas Electrónicos 27 Familia MC68HC11 de Motorola Instrucciones de Salto y Bifurcación: Nemónicos Operación Descripción Direccionamientos BSR (rel) Branch to Subrutine REL; JSR (opr) Jump to Subrutine EXT; IND,X; IND,Y; RTS Return from Subrutine INH; JMP (opr) Jump EXT; IND,X; IND,Y; RTI Return from Interrupt INH; Instrucciones de Comparación y Salto BRCLR (opr) (mask) (rel) BRSET (opr) (mask) (rel) Branch if Bit(s) Clear ¿ (M) • mm = 0; DIR;IND,X;IND,Y; Branch if Bit(s) Set ¿ (M) • mm = 0; DIR;IND,X;IND,Y; Sistemas Electrónicos 28 Familia MC68HC11 de Motorola Instrucciones de Control: Nemónicos BCLR (opr) Operación Descripción Direccionamientos Clear Bit(s) (M) • mm -> M; DIR;IND,X;IND,Y; Set Bit(s) (M) + mm -> M; DIR;IND,X;IND,Y; CLC Clear Carry Bit 0 -> C; INH; CLI Clear Interrupt Mask 0 -> I; INH; CLV Clear Overflow Flag 0 -> V INH; NOP No Operation No Operation INH; (msk) BSET (opr) (msk) Sistemas Electrónicos 29 Familia MC68HC11 de Motorola Instrucciones de Control: Nemónicos Operación Descripción Direccionamientos SEC Set Carry 1 -> C; INH; SEI Set Interrupt Mask 1 -> I; INH; SEV Set Overflow Flag 1 -> V; INH; STOP Stop internal clocks INH; SWI Software Interrupt INH; WAI Wait for Interrupt Stack Regs & Wait; Sistemas Electrónicos INH; 30 Familia MC68HC11 de Motorola Ejecución de una instrucción: ⌧Código de Máquina Instrucción 2000 18 E6 0F LDAB 15,Y ⌧Pasos en la ejecución de la Instrucción: • La CPU debe leer la instrucción desde memoria. – Son necesarios tres ciclos, ya que se lee un byte por ciclo. – Read mem[$2000], mem[$2001], mem[$2002] • La CPU debe calcular la dirección efectiva sumando 15 al contenido del Registro Indice Y. – Este cálculo necesita un ciclo. – No hay ninguna operación sobre el bus de memoria. • La CPU debe leer el dato. – Esta lectura dura un ciclo. – Read mem[15+Y] ⌧La ejecución de esta instrucción se realiza en 5 ciclos. Sistemas Electrónicos 31 Familia MC68HC11 de Motorola Detalles de la Instrucción LDA: LDA: Load Accumulator. Operación: (M) ⇒ ACCX Descripción: Carga en un acumulador de 8 bits el contenido de una posición de memoria. Estado de los Flags: S X H I N Z V ∆ ∆ 0 C N R7 -> Puesto a uno si el MSB es uno. En otro caso puesto a cero. Z R7•R6•R5•R4•R3•R2•R1•R0 -> Puesto a uno si el resultado es $00. V Puesto a cero siempre. Formatos de la instrucción: Existen dor formatos para esta instrucción, uno para cada acumulador. LDAA (opr); LDAB (opr) Sistemas Electrónicos 32 Familia MC68HC11 de Motorola Detalles de la Instrucción LDA: Modos de Direccionamiento, Códigos de Máquina y Ciclos de Ejecución: Sistemas Electrónicos 33 Familia MC68HC11 de Motorola Detalles de la Instrucción LDA: Modos de Direccionamiento, Códigos de Máquina y Ciclos de Ejecución: Cycle LDAA (IMM) LDAA (DIR) LDAA (EXT) LDAA (IND,X) LDAA (IND,Y) Addr Data R/W Addr Data R/W Addr Data R/W Addr Data R/W Addr Data R/W 1 2 3 4 5 Sistemas Electrónicos 34
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )