Índice ¿Qué es un Microcontrolador? ______________________________________________________________ 8 Índice ________________________________________________________________________________ 8 Introducción___________________________________________________________________________ 8 Vista global de un Sistema con Microprocesador_____________________________________________ 8 Entradas de un Sistema con Microprocesador _______________________________________________ 9 Salidas de un Sistema con Microprocesador_________________________________________________ 9 Unidad Central de Proceso (CPU) _________________________________________________________ 9 Reloj (Clock) _________________________________________________________________________ 10 Memoria del Microprocesador___________________________________________________________ 10 Programa de un Microprocesador ________________________________________________________ 10...
Página 3
Introducción__________________________________________________________________________ 26 Analogía de una Memoria con unas Casillas________________________________________________ 26 Cómo ve la Memoria el Microprocesador __________________________________________________ 27 Kilobytes, Megabytes y Gigabytes ________________________________________________________ 27 Tipos de Memoria _____________________________________________________________________ 27 Memorias Volátiles ____________________________________________________________________ 27 RAM: Memoria de Acceso Aleatorio (Random Access Memory) _______________________________ 27 Memorias No-Volátiles _________________________________________________________________ 28 ROM: Memoria de sólo Lectura (Read-Only Memory) _______________________________________ 28 PROM: Memoria Programable de sólo lectura (Programmable ROM) ___________________________ 28...
Página 4
Juego de Intrucciones del MC68HC05 _______________________________________________________ 49 Índice _______________________________________________________________________________ 49 Introducción__________________________________________________________________________ 49 Unidad Central de Proceso (CPU)________________________________________________________ 49 Unidad Aritmética/Lógica (ALU) ________________________________________________________ 50 Control de la CPU _____________________________________________________________________ 50 Registros de la CPU____________________________________________________________________ 50 (A) Acumulador _______________________________________________________________________ 50 (X) Registro de índice __________________________________________________________________ 50 (CCR) Registro de Código Condición _____________________________________________________ 51 (H) Bit Medio acarreo __________________________________________________________________ 51 (I) Bit Máscara de interrupción __________________________________________________________ 51...
Página 5
Diagrama de flujo _____________________________________________________________________ 68 Código Fuente Mnemónico ______________________________________________________________ 69 Programa de Retardo __________________________________________________________________ 70 Listado Ensamblador __________________________________________________________________ 71 Listado 3. Listado Ensamblador _________________________________________________________ 71 Archivo de Código Objeto______________________________________________________________ 73 Directivas del Ensamblador_____________________________________________________________ 74 Origen (ORG) _______________________________________________________________________ 74 Igual (EQU) _________________________________________________________________________ 74 Byte de Forma Constante (FCB) _________________________________________________________ 74 Byte de Forma Doble (FDB) ____________________________________________________________ 75 Byte de Reserva de Memoria (RMB) _____________________________________________________ 75...
Página 6
Control de Periféricos __________________________________________________________________ 94 Temporizador del MC68HC705J1A ______________________________________________________ 94 Ejemplo del Temporizador _____________________________________________________________ 96 Usando el Software PWM______________________________________________________________ 100 Listado 5. Listado del Programa PWM (página 1 de 2) ______________________________________ 101 Ejemplo Práctico de un Control de Motor ________________________________________________ 103 Teoría ______________________________________________________________________________ 103 Circuito de Control de un motor ________________________________________________________ 104 Software del Control de Motor__________________________________________________________ 106...
Página 7
BRSET n Bifurcación si el Bit n es 1 BRSET _______________________________________ 142 BSET n Pone a 1 el Bit en la Memoria BSET n ________________________________________ 143 Bifurcación a Subrutina BSR ________________________________________________ 144 Pone a Cero el Bit de Acarreo CLC _______________________________________ 145 Pone a Cero el Bit de Máscara de Interrupción CLI_________________________________ 146 Pone a Cero...
Página 8
Índice ______________________________________________________________________________ 181 Conversión de Hexadecimal a ASCII ____________________________________________________ 181 Conversión de Hexadecimal a Decimal ___________________________________________________ 182 Conversión de Decimal a Hexadecimal ___________________________________________________ 182 Valores Hexadecimales vs. Instrucciones MC68HC05_______________________________________ 183 Glosario ____________________________________________________________________________ 185...
¿Qué es un Microcontrolador? Índice Introducción Vista global de un Sistema con microprocesador Entradas de un Sistema con microprocesador Salidas de un Sistema con microprocesador Unidad Central de Proceso (CPU) Reloj Memoria del microprocesador Programa del microprocesador El Microcontrolador Resumen Partes de Cualquier Microprocesador Tipos de Microprocesadores Introducción...
Entradas de un Sistema con Microprocesador Los dispositivos de entrada proporcionan información del mundo exterior al sistema con microprocesador. En un ordenador personal, el dispositivo de entrada más común es el teclado, igual que una máquina de escribir. Los sistemas con microprocesadores normalmente usan dispositivos de entrada mucho más simples como interruptores o pequeños teclados, aunque los dispositivos de entrada más exóticos se encuentran en los sistemas basados en microprocesador.
En un microcontrolador normalmente, solamente un programa en particular está trabajando para el control de una aplicación. Por ejemplo, la CPU MC68HC05 sólo reconoce 60 instrucciones diferentes, pero éstas son representativas del juego de instrucciones de cualquier sistema con microprocesador. Este tipo de sistema con microprocesador es un buen modelo para aprender el fundamento de funcionamiento de un microprocesador, porque es posible saber lo que está...
Los programas se guardan en la memoria de un microprocesador donde pueden ser ejecutados de modo secuencial por la CPU. En el capítulo de programación, se aprenderá a escribir programas y prepararlos para ser cargados en la memoria de un microprocesador. El Microcontrolador Hasta ahora se han visto varias partes de un sistema con microprocesador y ya se está...
Resumen Un microcontrolador es un sistema microprocesador completo, incluyendo la CPU, la memoria, el oscilador del reloj y las E/S en un solo circuito integrado. Partes de cualquier microprocesador Una unidad central de proceso o CPU Un Reloj de secuencia de la CPU Memorias para las instrucciones y los datos Entradas para poner la información al sistema Salidas para sacar la información del sistema...
Números y Códigos de un microprocesador Índice Introducción Números Binarios y Hexadecimales Códigos ASCII Códigos de trabajo del microprocesador Códigos Mnemotécnicos de las instrucciones y Ensambladores Números Octales Binario Codificado en Decimal Resumen Introducción Este capítulo discute los números binarios, hexadecimales, octales y BCD que normalmente son usados por los microprocesadores.
ASCII ASCII ASCII ASCII ASCII ASCII , (coma) - (dash) . (period) $44 (escape) (beep) (under) (back sp) HT (tab) (linefeed) (space) “ (return) $3ª & < ∼ ’ (apost.) (delete) > Tabla 2. Conversión de Hexadecimal a ASCII Código de trabajo del microprocesador Los microprocesadores utilizan otro código para dar las instrucciones a la CPU, llamado código de trabajo o ‘opcode’.
Un ingeniero primero desarrolla un conjunto de instrucciones para el microprocesador en forma de código mnemotécnico, después usa un ensamblador para traducir estas instrucciones en ‘opcodes’ para que la CPU lo pueda entender. En otros capítulos se verán las instrucciones, como escribir un programa y el programa ensamblador.
Primero, no todos los microcontroladores son capaces de hacer cálculos en BCD, porque necesitan un indicador de acarreo dígito a dígito que no está presente en todos los microprocesadores (aunque las MCU de Motorola tienen este indicador). Segundo, obliga al microprocesador emular la conducta humana que es menos eficaz que...
Resumen Los microprocesadores tienen dos niveles lógicos (0 y 1) para trabajar con el sistema de numeración binario. Probablemente porque las humanos tienen 10 dedos, se trabaja con el sistema decimal (base 10). Los números hexadecimales usan 16 símbolos del 0 al 9 y de la A a la F. Cada dígito hexadecimal representa un grupo de cuatro dígitos binarios.
Elementos básicos de los circuitos Lógicos Índice Introducción Niveles lógicos Transistores CMOS Puertas simples Inversor NAND Puertas de Transmisión, Buffers y Flip Flops Puertas de Transmisión Buffer de tres estados Half Flip Flop (HFF) Resumen Introducción Los microprocesadores se componen de elementos digitales lógicos relativamente simples llamados “Puertas”, que son pequeños circuitos que pueden conectarse de varias maneras para manejar señales de niveles lógicos.
conocida como ‘umbral’. Se dice que este transistor tipo N conduce (entre los terminales [1] y [3]), cuando hay un voltaje lógico 1 en su ‘puerta’ [2]. Cuando la ‘puerta’ está en lógica 0, se dice que este transistor tipo N no conduce y actúa como un interruptor abierto entre los terminales [1] y [3].
Puerta NAND Figura 5 muestra el símbolo de una puerta lógica NAND, su Tabla de verdad y un circuito CMOS equivalente. Cuando ambas entradas [1] y [2] de la puerta NAND están en niveles lógicos 1, la salida [3] estará a lógica 0.
entrada [1] está a un nivel lógico 1, el transistor tipo P [4] no conduce, desconectando la salida [3] de V tener en cuenta la condición del transistor tipo P [6]. También, cuando la entrada [1] está a un nivel lógico 1, el transistor tipo N [5] conduce, conectando la salida [3] a tierra (lógica 0).
Las puertas de transmisión pueden formar multiplexores de datos, como el mostrado en la Figura Cuando la señal seleccionada [3] está a un nivel lógico 1, la puerta de transmisión [6] conducirá y la puerta de transmisión [7] (debido al inversor [5]) no conducirá. Así que la salida [4] no tendrá el mismo nivel lógico que la entrada [1] y las señales 1 de la entrada [2] no afectarán a la salida [4].
nivel lógico 0, la salida del inversor [4] estará a un nivel lógico 1 y hará conducir el transistor tipo N [8] y dejará de conducir el transistor tipo P [7]. Con la entrada de control [3] a un nivel lógico 1 y la entrada [1] a un nivel lógico 0, la salida del Buffer [2] estará...
Resumen Aunque se piensa a menudo que los niveles lógicos son 0 voltios o 5 voltios, estos son realmente rangos de voltaje garantizados por el fabricante de la MCU. Para una MCU específica que trabaja con V = 5.0 V, un nivel lógico 0 puede ser de 0.0 a 1.5 V y un nivel lógico 1 puede ser de 3.5 a 5.0 V.
Memoria y Entradas/Salidas Paralelas Índice Introducción Analogía de una Memoria con unas Casillas Cómo ve la Memoria el Microprocesador Kilobytes, Megabytes y Gigabytes Tipos de Memoria Memorias Volátiles Memorias No-Volátiles ROM, EPROM, EEPROM, OTP, FLASH Entradas/Salidas como un tipo de Memoria Estados internos y Registros de control Mapa de memoria La Memoria como un Periférico...
Cómo ve la Memoria el Microprocesador Una CPU de 8-bits con 10 líneas de dirección ve la memoria como una fila continua de 1024 valores de 8-bits. La primera posición de memoria tiene la dirección 00 0000 0000 2 y la última posición tiene la dirección 11 1111 1111 2 .
Memorias No-Volátiles ROM: Memoria de sólo Lectura (Read-Only Memory) La ROM consigue su información durante el proceso industrial del circuito integrado. La información debe ser proporcionada por el cliente antes de integrar el circuito, que una vez fabricado contendrá esta información.
Figura 11 muestra los circuitos equivalentes de un bit de RAM, un bit de un puerto de entrada y un bit de un puerto de salida típico que tienen la capacidad de almacenar la lectura anterior. En una MCU real, estos circuitos se repiten ocho veces para hacer una sola posición de 8-bits de RAM, puerto de entrada o puerto de salida.
La familia de microcontroladores MC68HC05 incluyen pines de E/S paralelos. La dirección de cada terminal es programable por un software accesible por un bit de control. La Figura 12 muestra la lógica para un pin de E/S bidireccional que incluye un latch en el puerto de salida y un bit de control de dirección de datos. Un pin del puerto se configura como una salida si su correspondiente bit DDR (registro de dirección de datos) se pone a 1.
Algunas áreas, como los registros de E/S, necesitan ser mostradas en más detalle porque es importante saber los nombres de cada posición individual. A las primeras 256 posiciones de memoria ($0000–$00FF) se puede acceder por el microcontrolador de un modo especial llamado ‘modo...
Resumen Se puede pensar que una memoria del microcontrolador es como una serie de buzones, pero un microcontrolador ve la memoria como una serie valores de 8-bits. Si un microcontrolador tiene n líneas de dirección, únicamente puede direccionar 2 posiciones de memoria.
CPU a la posición de memoria (casilla) o de la posición de memoria a la CPU. Motorola en la implementación de esta arquitectura, tiene unas casillas especiales dentro de la CPU, llamadas registros de la CPU, las cuales actúan como un pequeño bloc de notas (llamado en inglés: small scratch pad) y como un panel de control para la CPU.
Afortunadamente, la arquitectura de la familia MC68HC05 de Motorola es más fácil de entender y usar. Esta arquitectura abarca las ideas más importantes de los microcontroladores binarios digitales; así que, la información presentada en este libro es aplicable a otras arquitecturas.
expresan con cuatro dígitos hexadecimales, donde los cinco bit de la parte superior de los 16 bits correspondientes a la dirección binaria, siempre estarán a 0. El registro de código de condición (CCR) es un registro de 8-bits y guarda los indicadores de estado, que reflejan el resultado de alguna operación anterior de la CPU.
Listado 1. Programa Ejemplo ******************************************************* * Programa ejemplo 68HC05 * Lee el estado de un interruptor en el bit 0 del puerto A; 1 = cerrado * Cuando se cierra, el LED se enciende 1 segundo; El LED se enciende * cuando el bit 7 del Puerto A es 0.
Página 38
Figura 16. Mapa de Memoria del Programa Ejemplo Se puede estudiar cuidadosamente el programa de ejemplo en el Listado 1 y el mapa de memoria en la Figura 16. Se debe encontrar la línea que se muestra a continuación, en el Listado 1. Programa Ejemplo, donde empieza la primera instrucción de la subrutina DLY50 con sus dos bytes B7 C0.
Funcionamiento de la CPU Esta sección, primero describe el funcionamiento detallado de las instrucciones de la CPU y explica cómo la CPU ejecuta el programa ejemplo. La descripción detallada de las instrucciones típicas de la CPU hacen ver como funciona una CPU. A través del programa ejemplo y usando la técnica de aprendizaje llamada "ver funcionando el microcontrolador", se pretende interpretar la CPU, así...
Cargar el Acumulador (Modo de Direccionamiento Inmediato) A continuación, se puede buscar la instrucción LDA en el capítulo Juego de Instrucciones . El modo de direccionamiento inmediato (IMM) de esta instrucción aparece como A6 ii en la columna de código máquina de la tabla.
Listado 2. Ejemplo de Llamada a Subrutina " " " " " 0300 A6 02 #$02 ;Carga un valor inmediato 0302 CD 04 00 SUBBY ;Salto a subrutina 0305 B7 E0 ;Guarda el acumulador en la RAM 0307 " " "...
[11] El resultado de la ALU (A–1) se escribe al acumulador. [12] La CPU lee el ‘opcode’ ($26) BNE de la posición $0401. [13] La CPU lee el desplazamiento relativo ($FD) de $0402. [14] Durante la instrucción LDA #$02 a [1], el acumulador fue cargado con el valor 2; durante la instrucción DECA a [9], el acumulador era decrementado a 1 (qué...
Página 43
Cuando un valor se guarda en la pila, se tacha el valor anterior y se escribe el nuevo valor directamente en una fila horizontal. También se debe actualizar el valor del SP (decrementado). Hay que tachar el valor anterior y escribir el nuevo valor bajo el registro SP que encabeza a la parte superior de la hoja de trabajo. Cuando un valor se recupera de la pila, se puede actualizar el valor del SP (incrementado), tachando el valor anterior y escribiendo el nuevo valor debajo de este.
Página 44
Entonces se escribe $03 [8] a $00FE y otra vez se decrementa el SP [9], esta vez a $00FD. Para terminar con la instrucción JSR, se carga el PC con $0400 [10], que es la dirección de la llamada a subrutina.
Reset El ‘reset’ (vuelta al estado inicial) se usa para forzar al microcontrolador arrancar en un lugar conocido (en una dirección determinada). También los periféricos, así como muchos bits de estado y de control, son forzados a restablecer su estado inicial como resultado de un ‘reset’. Las siguientes acciones internas ocurren como resultado de cualquier ‘reset’...
Para impedir esta condición de huida, hay que detectar una dirección ilegal en el circuito MC68HC705J1A. Si la CPU intenta sacar una instrucción de una dirección que no está en la EPROM ($0300– $07CF, $07F0–$07FF), ROM ($07EE–$07EF) o RAM ($00C0–$00FF), se genera un ‘reset’ para obligar volver a empezar al programa.
Figura 21. Diagrama de Flujo de las Interrupciones Hardware Interrupciones externas Las interrupciones externas vienen del pin o de los bits 3–0 del puerto A, si este puerto está configurado para las interrupciones. En el MC68HC705J1A, la sensibilidad del pin es programable por software.
Interrupciones de Periféricos internos Los microcontroladores incluyen a menudo periféricos internos que pueden generar interrupciones a la CPU. El ‘timer’ en el MC68HC705J1A es un ejemplo de periférico. Las interrupciones de los periféricos internos simplemente trabajan como las interrupciones externas, sólo que normalmente tienen vectores de interrupción separados para cada sistema periférico interno.
Resumen En la arquitectura MC68HC05, se conectan cinco registros directamente dentro de la CPU y no forman parte del mapa de memoria. Toda la otra información disponible en la CPU se localiza en una serie de posiciones de memoria de 8-bits. El mapa de memoria muestra los nombres y los tipos de memoria de todas las posiciones que son accesibles a la CPU.
Juego de Intrucciones del MC68HC05 Índice Introducción Unidad Central de Proceso (CPU) Unidad Aritmética Lógica (ALU) Control de la CPU Registros de la CPU Acumulador (A) Registro índice (X) Registro de código de condición (CCR) Bit de medio acarreo (H) Bit de máscara de interrupción (I) Bit negativo (N) Bit Cero (Z)
Unidad Aritmética/Lógica (ALU) La unidad aritmética lógica (ALU) se usa para realizar la aritmética y las operaciones lógicas definidas por el juego de instrucciones. Los varios circuitos de funcionamientos de aritmética binaria decodifican la instrucción en el registro de la instrucción y preparó la ALU para la función deseada. La mayoría de la aritmética binaria se basa en el algoritmo suma y substracción que se llevada a cabo como una suma negativa.
En instrucciones indexadas, el registro X proporciona un valor de 8-bits que se añade al valor de una instrucción dada para crear una dirección efectiva. El valor de la instrucción dada puede tener una longitud de 0, 1 o 2 bytes. Registro de Índice (X) Figura 25.
(C) Bit Carry/Borrow El bit C se usa para indicar si hay un ‘carry’ (acarreo en una suma) o ‘borrow’ (acarreo como resultado de una substracción). Desplaza y opera las instrucciones de rotación con y a través del bit de acarreo para facilitar operaciones de desplazamiento de múltiples palabras.
Puntero de Pila (Stack Pointer) El puntero de pila debe tener tantos bits como líneas de dirección; en el MC68HC705J1A significa que el SP es un registro de 11-bits. Durante un ‘reset’ o una instrucción ‘reset’ del puntero de pila (RSP), el puntero de pila se pone a 1 en la posición $00FF.
todos los ensambladores usan la misma sintaxis y caracteres especiales, hay que referirse a la documentación de cada ensamblador particular, que se use. Prefijo Indica que el valor que sigue es. . . Nada Decimal Hexadecimal Octal Binario ‘ Simple carácter ASCII Para cada modo de direccionamiento, se explica en detalle una instrucción como ejemplo.
Interrupción por Software Transfiere al acumulador el registro de índice Prueba para negativo o cero TSTA, TSTX Transfiere el registro de índice al acumulador Habilita Interrupción, para el procesador WAIT Modo de Direccionamiento Inmediato En el modo de direccionamiento inmediato, el operando está contenido en el byte siguiente al ‘opcode’ inmediato.
Explicación: La CPU lee el ‘opcode’ $C6, carga el acumulador usando el modo de direccionamiento extendido. Entonces la CPU lee $06 desde la posición $0301. Este $06 es interpretado como la parte alta de la mitad de una dirección. La CPU lee $E5 de la posición $0302. Este $E5 es interpretado como la parte baja de la mitad de una dirección.
La CPU añade internamente $00 a los $50 leídos por el segundo ciclo, para formar la dirección completa ($0050). La CPU entonces lee que valor que contiene en la posición $0050 en el acumulador. A continuación se muestra una lista de todas las instrucciones del MC68HC05 que pueden usar el modo de direccionamiento directo.
Modo Indexado sin Ningún Desplazamiento En el modo de direccionamiento indexado sin ningún desplazamiento, la dirección efectiva de la instrucción está contenida en el registro de índice de 8-bits. Así que este modo de direccionamiento puede acceder a las primeras 256 posiciones de la memoria. Estas instrucciones son sólo de un byte. Listado de Programa Ejemplo: 0300 LDX ,x...
modo, la tabla debe empezar en las 256 posiciones de memoria más bajas y puede extenderse a través de las primeras 511 posiciones de memoria (IFE es la última posición que la instrucción puede acceder). El modo de direccionamiento indexado con 8-bits de desplazamiento puede usarse para la ROM, RAM o E/S. Ésta es una instrucción de 2-bytes con el desplazamiento contenido en el byte que sigue al ‘opcode’.
Un programador especifica el destino de una bifurcación como una dirección absoluta (o etiqueta que se refiere a una dirección absoluta). El ensamblador de Motorola calcula el desplazamiento relativo de 8-bits con signo que se pone después del ‘opcode’ bifurcación en la memoria.
Este libro trata estas instrucciones como instrucciones de modo de direccionamiento directo. Algún documento más viejo de Motorola llama el modo de direccionamiento de estas instrucciones BTB para la prueba de bit y bifurcación.
Página 65
Modo de Direccionamiento Relativo Código Función Mnemotécnico Opcode Bytes Ciclos Bifurca Siempre Nunca Bifurca Bifurca si es Mayor Bifurca si es Menor o Igual Bifurca si el Acarreo es 0 Bifurca si el Acarreo es 1 Bifurca si es Mayor o Igual Bifurca si es Menor Bifurca si No es Igual Bifurca si es Igual...
Resumen del Juego de Instrucciones Los microcontroladores usan un código de operación o ‘opcode’ para dar las instrucciones a la CPU. El juego de instrucciones para una CPU específica es el juego de todos los ‘opcodes’ que la CPU sabe ejecutar. Por ejemplo, la CPU MC68HC705J1A puede entender 62 instrucciones básicas, algunas de ellas tienen muchas variaciones que requieren ‘opcode’s separados.
Resumen Registros de la CPU Los cinco registros de la CPU en la familia MC68HC05 no son posiciones en el mapa de memoria. El modelo de programación para la CPU muestra los cinco registra de la CPU. •= Acumulador (A) es un registro de 8-bits de propósito general. •= Registro de índice (X) es un registro de 8-bits del puntero.
Programación Índice Introducción Escribiendo un simple Programa Organigrama o Diagrama de Flujo Código Fuente (Mnemónico) Programa de un Retardo Listado Ensamblador Archivo de Código Objeto Directivas del Ensamblador Origen (ORG) Igual (EQU) Byte de Forma Constante (FCB) Byte de Forma Doble (FDB) Byte de Reserva de Memoria (RMB) Pone el Número Base por defecto a Decimal Familiarización con el Juego de Instrucciones...
Diagrama de flujo Figura 30 muestra un organigrama o diagrama de flujo de un programa ejemplo. Los diagramas de flujo son a menudo usados como herramientas de planificación para escribir un programa (software), porque muestran la función y flujo del programa en desarrollo, siendo de suma importancia las anotaciones, los comentarios y la documentación incluida.
Código Fuente Mnemónico Una vez se completa el diagrama de flujo, el programador desarrolla una serie de instrucciones en lenguaje ensamblador para lograr las funciones requeridas en cada bloque. El programador de software se limita a seleccionar las instrucciones de la CPU que va a usar (en este caso el MC68HC05) y las escribe en forma de mnemónicos que es fácil de entender.
Programa de Retardo Figura 32 muestra un organigrama extendido de la subrutina de retardo de 50 ms. Una subrutina es un programa relativamente corto que normalmente realiza algunas funciones requeridas. Cuando la función necesita ser realizada muchas veces en el curso de un programa, con la subrutina sólo se tiene que escribir una sola vez.
Listado Ensamblador Después de escribir un programa completo o una subrutina, se debe convertir de código mnemotécnico a código máquina (binario), para que después la CPU lo pueda ejecutar. Se utiliza un PC para realizar esta conversión a leguaje máquina, con un programa llamado ensamblador. El ensamblador lee el código mnemotécnico del programa (también llamado código fuente del programa) y produce código máquina del programa, en una forma que después se podrá...
Página 73
0000 PORTA EQU ;Dirección directa del puerto A 0300 $0300 ;El Programa empezará en $0300 0306 B6 00 PORTA ;Lee pulsador en LSB del Puerto A ------- -------------------- ---------- ---------- --------------------- ------------------------------------------------- [6] → Figura 33. Explicación del Listado Ensamblador EQU, es la forma abreviada de ‘equale’...
La versión que necesita cargar la MCU en su memoria se llama archivo de código objeto . Los microcontroladores de Motorola tienen una forma común del archivo de código objeto, es el S-record . Al ensamblador se le puede dar una opción para producir un archivo de listado y/o un archivo de código objeto.
S10403308147 S9030000FC Figura 35. Archivo S-record del Programa Ejemplo Directivas del Ensamblador En esta sección se describen seis de las directivas del ensamblador más importantes. Las directivas que soportan los ensambladores de varios fabricantes, difieren en el número y en el tipo. Siempre hay que referirse a la documentación de cada ensamblador que se está...
código máquina en el archivo de código objeto. Se usan directivas FCB para definir las constantes en un programa. Byte de Forma Doble (FDB) Los argumentos para esta directiva son etiquetas o números, separadas o separados por comas, que pueden convertirse en valores de datos de 16-bits. Cada argumento especificado en una directiva FDB genera dos bytes de código máquina en el archivo de código objeto.
Desarrollo de la Aplicación Motorola ofrece unos sistemas de desarrollo simples para la familia MC68HC705 (por ejemplo el M68ICS05JE para el MC68HC705KJ1A y MC68HC705J1A). Estos sistemas incluyen un simulador en circuito (software y placa hardware). Las placas se conectan al puerto serie (com) de un PC. Con un cable permite, al simulador en circuito, ser conectado a una aplicación para ocupar el lugar del microcontrolador que se usará...
Página 78
DLY50 podrían tomar diez segundos en algún PC. Para hacer correr la simulación más rápidamente, se puede reemplazar temporalmente el valor del lazo (65) con un número mucho más pequeño (por ejemplo, 2). NOTA: Hay que recordar de volver a poner el número original antes de programar el programa terminado en la EPROM de una MCU real.
Resumen El proceso de escribir un programa empieza con una buena planificación. Para ello se puede usar un organigrama para documentar dicha planificación. Las declaraciones del código fuente (mnemónicos) se escriben para cada bloque del organigrama. Las declaraciones del código fuente pueden incluir cualquiera de las instrucciones del juego de instrucciones del microcontrolador.
Estructura del Programa Base Índice Introducción Equates del Sistema Registros EQU para el MC68HC705J1A Aplicación de los EQU del Sistema Preparación de los Vectores Vector de Reset Interrupciones sin usar Variables de la RAM Bucle Base Bucle Secuenciador Bucle del Reloj del Sistema Sus Programas Consideraciones sobre el tiempo Consideraciones sobre el Stack...
Esta convención se usa en el bucle regulador, pero necesariamente no es una norma recomendada por Motorola o por compañías del ensamblador. En el juego de instrucciones del MC68HC05, las instrucciones de manipulación de bit son de la forma siguiente:...
El ‘vector de reset’ fue puesto para apuntar a la etiqueta START. El simulador en circuito que ofrece Motorola, como herramienta de desarrollo económica, utiliza esta información para preparar la pantalla del simulador. Cuando un programa es cargado en el simulador, el simulador busca la dirección en el ‘vector de reset’...
Una manera diferente de responder a las interrupciones inesperadas, sería restablecer el indicador de pila (con una instrucción RSP) y entonces saltar a la misma dirección como si hubiera ocurrido un ‘reset’. Esto quiere decir que si ocurre una interrupción inesperada, puede haber otro serio problema. Restableciendo el puntero de pila y volviéndolo a iniciar todo, es la forma de corregir cualquier cosa causada por una interrupción inesperada.
Figura 37. Organigrama del Programa Base. Figura 38. Organigrama de la Rutina de Servicio RTI. Bucle Secuenciador En el programa bucle regulador Listado 4. Estructura del Programa Base , el controlador de secuencia está basado en la interrupción en tiempo real interna (RTI). Esta RTI se pone para generar una interrupción a la CPU cada 32.8 milisegundos.
de las tareas restantes, después de TIME pueden usar los valores actuales de TIC y TOC para decidir lo que se necesita hacer en este paso, a través del Bucle Base. En el Listado 4. Estructura del Programa Base la secuencia está codificada a la RTI, no pasa de ser un submúltiplo entero de 1 segundo.
se puede conseguir la ocupación de la pila. En el MC68HC705J1A, la suma de todo el sistema de variables, más el peor de los casos de ocupación de la pila, debe ser menor o igual a las 64 posiciones disponibles de la RAM. Afortunadamente, una interrupción causará...
Listado 4. Estructura del Programa Base (pág 1 de 5) The Paced Loop $BASE 10T ******************************************************* * EQUs para el MC68HC705J1A MCU * Usa nombres de bit sin un punto en BSET..BRCLR * Usa nombre de bit precedido por un punto en expresiones como * #.ELAT+.EPGM para formar una máscara de bit ******************************************************* PORTA...
Página 88
Listado 4. Estructura del Programa Bucle Regulador (pág 2 de 5) DDRB0 ;Bit #0 del puerto B DDR DDRB5. ;Posición del bit DDRB5 DDRB4. ;Posición del bit DDRB4 DDRB3. ;Posición del bit DDRB3 DDRB2. ;Posición del bit DDRB2 DDRB1. ;Posición del bit DDRB1 DDRB0.
Página 89
Listado 4. Estructura del Programa Bucle Regulador (pág 3 de 5) ELAT ;control latch EPROM MPGM ;control de programación del bit MOR EPGM ;control de programación de la EPROM ELAT. ;Posición del bit ELAT MPGM. ;Posición del bit MPGM EPGM. ;Posición del bit EPGM COPR $07F0...
Página 90
Listado 4. Estructura del Programa Bucle Regulador (pág 4 de 5) ;RTIFs cuenta 3->0 RTIFs ;Reset del contador TOFS ;Valor inicial para TIC ;Valor inicial para TOC ******************************************************* * MAIN – Empieza el bucle principal del programa * El bucle se ejecuta cada 100 ms (98.4 ms) * Necesita 100 ms para pasar a través de todas las rutinas * de mayor tarea y entonces el tiempo se ha consumido hasta * que MSB de TIC se pone a 1 (cada 3 RTIFs = 98.4 ms).
Página 91
Listado 4. Estructura del Programa Bucle Regulador (pág 5 de 5) ******************************************************* * BLINK – Actualiza LED * Si TOC es par, enciende el LED * el resto apaga el LED ******************************************************* BLINK ;Actualiza el LED ;Si es par, LSB será cero LSRA ;Desplaza LSB para acarreo LEDOFF...
Resumen Las directivas EQU se usan para asociar una etiqueta a un valor binario. El valor binario puede ser una dirección o una constante numérica. Hay dos maneras diferentes de igualar un bit de control, dependiendo de cómo se usará la etiqueta. Para instrucciones de ‘bit set’, ‘bit clear’...
Periféricos Internos Índice Introducción Tipos de Periféricos Temporizadores Puertos Serie Convertidor Analógico a Digital Convertidor Digital a Analógico EEPROM Control de los Periféricos Temporizador del MC68HC705J1A Ejemplo del temporizador Uso del Software de PWM Ejemplo de un Control de Motor Teoría Circuito de Control de Motor Software de Control de Motor...
MC68HC05Jx y MC68HC05Kx, genera dos interrupciones periódicas; una a proporción fija y una a proporción seleccionable. Los módulos temporizadores mucho más sofisticados que existen en Motorola están en los procesadores más potentes. Por ejemplo, el MC68332 y MC68HC16Y1 que contienen una unidad de proceso de tiempo (TPU) que es un procesador programable de tiempo, con microcódigo, con su propia ALU (unidad aritmética lógica).
EEPROM Puesto que una EEPROM es un tipo de memoria, la mayoría de usuarios no lo considera un periférico. Sin embargo, los contenidos de una EEPROM pueden modificarse con un programa y es una memoria no volátil, que es eléctricamente borrable y es diferente de una RAM, ROM o EPROM. Varios miembros de la familia MC68HC05 contienen una memoria EEPROM interna.
Página 96
Figura 39. Diagrama de bloques del Temporizador Multifunción de 15 etapas Además de proporcionar una interrupción periódica, la salida de 8-bits del contador va a la entrada de un contador de 7-bits adicional. La salida de cualquiera de los últimos cuatro bits de este contador, se puede usar para generar una interrupción periódica adicional.
Ejemplo del Temporizador En esta sección se desarrolla el software que utiliza la interrupción de tiempo real y la interrupción por desbordamiento del temporizador, para producir una señal de baja frecuencia por modulación de ancho de pulso ( PWM ), a través de un pin de E/S de propósito general. Las señales PWM son útiles para una variedad de funciones de control.
Página 98
interrupciones de desbordamiento del temporizador ocurrirán a una proporción de 16 veces más rápido que la interrupción de tiempo real seleccionable más rápida. Usando la RTI para generar la frecuencia base de una señal PWM y la interrupción TOF para determinar el ciclo de trabajo, se podría generar una salida de PWM con 16 ciclos de trabajo discretos (incluyendo 100%) como se muestra en la Figura...
Página 99
Tiempos Frecuencia Interrupciones Mínimo Ciclo de Trabajo 8.2 ms 122 Hz 6.25 % 16.4 ms 61.0 Hz 3.125 % 32.8 ms 30.5 Hz 1.56 % 65.5 ms 15.3 Hz 0.78 % Tabla 18. Características de PWM para diferentes proporciones de la RTI Tabla 18 parece sugerir que se está...
Página 100
Figura 44. Rutina Servicio de Interrupción del Temporizador Como se muestra en la Figura 45, las rutinas de interrupción RTIF prueban para dos condiciones especiales, 0% y 100% del ciclo de trabajo. Entonces la introducción de las variables PWMFine y PWMCoarse para ser usadas por la rutina de servicio de interrupción TOF.
El diagrama de flujo de la Figura 46 describe las acciones requeridas para la rutina de interrupción TOF. La primera acción es decrementar el valor de PWMCoarse. Cuando PWMCoarse vuelve a 0 significa que el valor en los cuatro bits superiores del contador son igual a los cuatro bits superiores de DesiredPWM. A continuación, se comparan continuamente los cuatro bits superiores del TCR con el valor de PWMFine (qué...
El programa de PWM se maneja por interrupciones. Esto significa que el temporizador generará peticiones de interrupción a la CPU, para dejar de procesar el programa principal y responder a la petición de interrupción. Puesto que este programa del Listado 5. Listado del Programa PWM , no tiene viene de otro programa principal, se ha incluida una instrucción "branch to here”...
Página 103
031B 0C0812 BRSET RTIF,TSCR,RTIInt ;¿interrupción RTI? 031E 80 ;******************************************************** ;Respuesta a la interrupción TOF. ;Decrementa PWMCoarse, cuando 0... ;Compara PWMFine con TCR. Cuando TCR pasa PWMFine borra ;el pin de salida PWM y desactiva futuras TOF. Rehabilita RTI. 031F TOFInt 031F 3AC1 PWMCoarse ;¿PWMCoarse = 0?
Ejemplo Práctico de un Control de Motor En esta sección, se desarrolla una aplicación práctica, expandiendo el software desarrollado en este libro. El ejemplo añade algún hardware externo al MC68HC705K1 para que se puedan observar los efectos del software en el mundo exterior del microcontrolador. También se va a usar una versión ligeramente modificada de la rutina de PWM que se ha desarrollado en este capítulo, para controlar la velocidad de un pequeño motor de corriente continua (dc) de imán permanente.
Desgraciadamente, todavía usando un transistor en su modo lineal tiene una desventaja mayor que usando una resistencia variable. Igual que con una resistencia variable, un transistor de potencia que trabaja en su región lineal, tendrá que disipar gran cantidad de potencia bajo variaciones de velocidad y condiciones de carga. Incluso aunque los transistores de potencia son capaces de manejar altos niveles de potencia y que están disponibles a precios relativamente modestos, la potencia disipada por el transistor normalmente exigirá...
Página 106
Figura 52 es un esquema de la etapa de potencia del circuito control de motor. Hay varias diferencias entre este esquemático y los que se usaron en la Figura 48 y 49. Se describirán estas diferencias en los párrafos siguientes. La diferencia más notable del esquemático es el transistor de potencia que se usará...
Software del Control de Motor Figura 53 muestra un diagrama de flujo que describe la nueva interrupción RTI software. El único cambio funcional de la rutina de PWM desarrollada antes en este capítulo, es añadir una instrucción al principio de la rutina de servicio de interrupción RTI. Esta instrucción decrementa la variable RTIDlyCnt. Esta variable se usa para las tres rutinas que leen la entrada de los pulsadores para desarrollar un retardo contra los rebotes de los pulsadores.
Página 108
Figura 54. Diagrama de Flujo para el Bucle del Programa Principal Las Figuras 55, 56 y 57 son diagramas de flujo para las tres rutinas que manejan las acciones de los tres pulsadores de entrada. Cada una de estas rutinas empiezan con la ejecución de una rutina contra rebotes del pulsador de 50 ms.
Figura 56. Rutina de Motor ‘Speed Up’ Figura 57. Rutina de Motor ‘SpeedDown’ , contiene el listado del lenguaje Listado 6. Listado del Programa de Control de Velocidad ensamblador para las rutinas descritas para los diagramas de flujo de la Figura 46 y 53 a través de la Figura 57. Listado 6.
Página 110
Listado 6. Listado del Programa de Control de Velocidad (página 2 de 4) 020A 5C INCX ;¿Apunta a siguiente pos./ hecho? 020B 26FC ClrLoop ;No; continua borrar la RAM 020D A61C #$1C ;Habilita interrup. TOF y RTI 020F B708 TSCR 0211 A610 #MinPWM ;Inicializa PWM a la mín.
Página 111
Listado 6. Listado del Programa de Control de Velocidad (página 3 de 4) 0261 26FC DoSpeedUp5 ;No, continua esperando 0263 3CE3 MotorPWM ;Si, incrementa velocidad motor 0265 3CE0 DesiredPWM ;Adelanta el valor deseado de PWM 0267 20E9 DoSpeedUp4 ;Bucle para pulsador, ;hasta pulsado ;********************************************************** ;DoSpeedDn maneja el cierre del pulsador Speed Down...
Página 112
Listado 6. Listado del Programa de Control de Velocidad (página 4 de 4) 02A7 1408 BSET RTIFR,TSCR ;Borra el Flag interr. RT 02A9 B6E0 DesiredPWM ;¿Logra el nivel deseado PWM = 0? 02AB 2603 RTIInt2 ;No,. Pone la salida = 1 02AD 1F00 BCLR PWM,PortA...
Resumen Un periférico es un trozo de hardware especializado del microcontrolador que permite a la CPU recoger la información y realizar cambios en el sistema microcontrolador. Los puertos de E/S de propósito general se pueden programar para actuar como entradas o salidas. Cuando se configura un pin del puerto para actuar como entrada, la CPU puede leer el nivel lógico que está...
Juego de Instrucciones Índice Introducción Juego de Instrucciones ADC — Suma con Acarreo ADD — Suma sin Acarreo AND —AND lógico ASL — Desplazamiento Aritmético a la Izquierda ASR — Desplazamiento Aritmético a la Izquierda BCC — Bifurcación si el Acarreo es Cero BCLR n —...
SEI — Pone a Uno el Bit de Máscara de Interrupción STA — Guarda el Acumulador en la Memoria STOP — Habilita la IRQ. Para el Oscilador STX — Guarda el Registro de Índice X en la Memoria SUB — Resta SWI —...
= Bit Forzado a 0 = Bit Forzado a 1 > = Bit Puesto 0 o a 1 según los Resultados de la Operación (h) Anotación utilizada del Código Máquina = Los 8 bits más bajos de una Dirección Directa $0000-$00FF; Byte Alto asumido para ser $0000 = Los 8 Bits más Altos de un Desplazamiento de 16 bits = Los 8 Bits más Bajos de un Desplazamiento de 16 bits o de 8-Bits...
Suma con Acarreo ACCA ← ← ← ← (ACCA) + (M) + (C) Operación: Descripción: Suma los contenidos del bit C a la suma de los contenidos del registro ACCA y del registro M, pone el resultado en el registro ACCA. Códigos de condición y Formula Boleana ...
Suma sin Acarreo ACCA ← ← ← ← (ACCA) + (M) Operación: Descripción: Suma los contenidos de M a los contenidos de ACCA y pone el resultado en ACCA. Códigos de condición y Formula Boleana A3 • M3 + M3 • R3 + R3 • A3 Se pone a 1 si había un acarreo del bit 3;...
AND Lógico ACCA ← ← ← ← (ACCA) · (M) Operación: Descripción: Realiza un AND lógico entre el contenido ACCA y M, pone el resultado en ACCA. (Cada bit del ACCA después de la operación será un AND lógico de los correspondientes bits de M y ACCA antes de la operación.) Códigos de condición y Formula Boleana ...
Desplazamiento Aritmético a la Izquierda (Lo mismo que LSL) Operación: ← C ← ← ← ← b7 - - - - - - b0 ← ← ← ← 0 Descripción: Desplaza un lugar a la izquierda todos los bits del ACCA, X o M. El Bit 0 está cargado con un cero.
Bifurcación si se pone a 0 el Acarreo (Lo mismo que BHS) PC ← ← ← ← (PC) + $0002 + Rel Si (C) = 0 Operación: Descripción: Prueba el estado del bit C en el CCR y provoca una bifurcación si C está a 0. Véase la instrucción BRA para más detalles de la ejecución de la bifurcación.
BCLR n Pone a 0 un Bit en la Memoria BCLR n Mn ← ← ← ← 0 Operación: Descripción: Pone a 0 el Bit n (n = 7, 6, 5. . 0) en la posición M. Todos los otros bits en M no están afectados.
Bifurcación si el Acarreo es 1 (Lo mismo que BLO) PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (C) = 1 Descripción: Prueba el estado del bit C en el CCR y provoca una bifurcación, si C está a 1. Véase la instrucción BRA para más detalles de la ejecución de la bifurcación.
Bifurcación si es Igual PC ← ← ← ← (PC) + $0002 + Rel Si (Z) = 1 Operación: Descripción : Prueba el estado del bit Z en el CCR y provoca una bifurcación si Z está a 1. Siguiendo a una instrucción CMP o SUB, la instrucción BEQ causará...
BHCC Bifurcación si Medio Acarreo es 0 BHCC PC ← ← ← ← (PC) + $0002 + Rel Si (H) = 0 Operación: Descripción : Prueba el estado del bit H en el CCR y provoca una bifurcación si H está a 0. Esta instrucción se usa en algoritmos que involucran números BCD.
BHCS Bifurcación si Medio Acarreo es 1 BHCS PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (H) = 1 Descripción: Prueba el estado del bit H en el CCR y provoca una bifurcación si H está a 1. Esta instrucción se usa en algoritmos que involucran números BCD.
Bifurcación si más es Mayor C ← ← ← ← (PC) + $0002 + Rel Operación: Si (C) + (Z) = 0 por ejemplo, si (ACCA) > (M) (números binarios sin signo) Descripción: Causa una bifurcación si se pone C y Z a 0. Si la instrucción BHl se ejecuta inmediatamente después de la ejecución de una instrucción CMP o SUB, ocurrirá...
Bifurcación si es Mayor o Igual (Lo mismo que la instrucción BCC) PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (C) = 0 por ejemplo, si (ACCA) ≥ (M) (números binarios sin signo) Descripción: Si la instrucción BHS se ejecuta inmediatamente después de la ejecución de una instrucción CMP o SUB, la bifurcación ocurrirá...
BIH Bifurcación si el Pin de Interrupción está en nivel Alto BIH PC ← ← ← ← (PC) + $0002 + Rel Operación: Si IRQ = 1 Descripción : Prueba el estado del pin de interrupción externa y provoca una bifurcación si el pin está en nivel alto.
BIL Bifurcación si el Pin de Interrupción está en nivel Bajo BIL PC ← ← ← ← (PC) + $0002 + Rel Operación: Si IRQ = 0 Descripción: Prueba el estado del pin de interrupción externa y provoca una bifurcación si el pin está en nivel bajo.
Bit de Prueba de la Memoria con el Acumulador BIT (ACCA) · (M) Operación: Descripción : Realiza una comparación lógica AND de los contenidos de ACCA y M, y modifica de acuerdo el código de condición. No se alteran los contenidos de ACCA ni de M. (Cada bit del resultado AND lógico, serán los bits correspondientes de ACCA y M).
Bifurcación si es más Menor (Lo mismo que la instrucción BCS) PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (C) = 1 por ejemplo, si (ACCA) < (M) (números binarios sin signo) Descripción : Si la instrucción BLO se ejecuta inmediatamente después de la ejecución de una instrucción CMP o SUB, la bifurcación ocurrirá...
Bifurcación si es Menor o Igual PC ← ← ← ← (PC) + $0002 + Rel Operación: Si [(C) + (Z)] = 1 por ejemplo, si (ACCA) ≤ (M) (números binarios sin signo) Descripción : Causa una bifurcación si C o Z se pone a 1. Si la instrucción BLS se ejecuta inmediatamente después de la ejecución de una instrucción CMP o SUB, la bifurcación ocurrirá...
Bifurcación si la Máscara de Interrupción es 0 BMC PC ← ← ← ← (PC) + $0002 + Rel Operación: Si I = 0 Descripción : Prueba el estado del bit I en el CCR y causa una bifurcación si I es cero (por ejemplo, si se habilitan las interrupciones).
Bifurcación si es Menor PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (N) = 1 Descripción: Prueba que el estado del bit N en el CCR y causa una bifurcación si N es 1. Véase la instrucción BRA para más detalles de la ejecución de la bifurcación.
Bifurcación si la Máscara de Interrupción es 1 PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (I) = 1 Descripción : Prueba el estado del bit I en el CCR y causa una bifurcación si I es 1 (por ejemplo, si las interrupciones son inválidas).
Bifurcación si no es Igual PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (Z) = 0 Descripción: Prueba el estado del bit Z en el CCR y provoca una bifurcación si Z está a 0. Siguiendo una instrucción de comparación o substracción, la instrucción BEQ provocará...
Bifurcación si es Positivo PC ← ← ← ← (PC) + $0002 + Rel Operación: Si (N) = 0 Descripción : Prueba el estado del bit N en el CCR y provoca una bifurcación si N está a 0. Véase la instrucción BRA para más detalles de la ejecución de la bifurcación.
Bifurcación Incondicional PC ← ← ← ← (PC) + $0002 + Rel Operación: Descripción: Bifurcación incondicional a la dirección dada por la fórmula anterior, en qué ‘Rel’ es el desplazamiento relativo guardado como un número complemento a dos en el último byte de código máquina correspondiente a la instrucción de bifurcación.
BRCLR n Bifurcación si el Bit n es Cero BRCLR n PC ← ← ← ← (PC) + $0003 + Rel Operación: Si el bit n de M = 0 Descripción: Prueba el bit n (N = 7, 6, 5...0) de la posición M y bifurca si el bit se pone a 0, M puede ser una posición de RAM o una dirección del registro de E/S en el área de memoria $0000 a $00FF (por ejemplo, modo de direccionamiento directo si está...
Nunca Bifurcación PC ← ← ← ← (PC) + $0002 Operación: Descripción : Nunca hace bifurcación. En efecto, esta instrucción puede ser considerada como 2-bytes NOP (no operación) requiriendo tres ciclos para su ejecución. Esta inclusión en el juego de instrucciones es para mantener un complemento de la instrucción BRA.
BRSET n Bifurcación si el Bit n es 1 BRSET PC ← ← ← ← (PC) + $0003 + Rel Operación: Si el Bit n de M = 1 Descripción: Prueba el Bit n (n = 7, 6, 5, 0) de la posición M y bifurca si el bit está a 1. M puede ser cualquier posición de la RAM o dirección del registro de E/S en el área de memoria $0000 a $00FF (por ejemplo, el modo de direccionamiento directo se usa para especificar la dirección del operando).
BSET n Pone a 1 el Bit en la Memoria BSET n Mn ← ← ← ← 1 Operación: Descripción: Pone el Bit n (n =7,6,5 ...0) en la posición M. Todos los otros bits en M son afectados. M puede ser cualquier posición de la RAM o dirección del registro de E/S en el área de memoria de $0000 a $00FF (por ejemplo, el modo de direccionamiento directo se usa para especificar la dirección del operando).
Bifurcación a Subrutina PC ← ← ← ← (PC) + $0002 Operación Avanza el PC para volVéase a la dirección ↓ ↓ ↓ ↓ (PCL); SP ← ← ← ← (SP) – $0001 Guarda el orden más bajo hacia la pila ↓...
Pone a Cero el Bit de Acarreo Bit C ← ← ← ← 0 Operación: Descripción: Pone a cero el bit C en el CCR. La instrucción CLC puede ser usada para preparar el bit C antes de una instrucción de desplazamiento o rotación que involucre al Bit C. Códigos de condición y Formula Boleana ...
Pone a Cero el Bit de Máscara de Interrupción Bit I ← ← ← ← 0 Operación: Descripción: Pone a cero el bit de máscara de interrupción en el CCR. Cuando el bit I se pone a cero, se habilitan las interrupciones. Hay un retraso de un ciclo de E-reloj en el mecanismo de poner a cero para el bit I, por si las interrupciones fueron previamente deshabilitadas, la siguiente instrucción después de una instrucción CLI siempre se ejecutará, aun cuando había una interrupción anterior pendiente a la ejecución de la instrucción CLI.
Pone a Cero ACCA ← ← ← ← $00 M ← ← ← ← $00 X ← ← ← ← $00 Operación: Descripción : Los contenidos de ACCA, M o X, se reemplazan con Ceros. Códigos de condición y Formula Boleana ...
Compara el Acumulador con la Memoria (ACCA) – (M) Operación: Descripción: Compara los contenidos de ACCA con los contenidos de M y pone a 1 el código de condición que se puede usar para la bifurcación condicional aritmética y lógica. Los contenidos de ACCA y de M son inalterados.
Complemento ACCA ← ← ← ← (ACCA) = $FF – (ACCA) M ← ← ← ← (M) = $FF – (M) Operación: X ← ← ← ← X = $FF – (X) Descripción: Reemplaza los contenidos de ACCA, X o M con su complemento a uno. (Cada bit de los contenidos de ACCA, X o M se reemplazan con el complemento de ese Bit.) Códigos de condición y Formula Boleana ...
Compara el Registro de Índice con la Memoria (X) – (M) Operación: Descripción: Compara los contenidos del registro de índice con los contenidos de la memoria y pone a 1 el código de condición que se pueden usar para la bifurcación aritmética y lógica. Los contenidos de ACCA y M están inalterados.
Decremento ACCA ← ← ← ← (ACCA) – $01 M ← ← ← ← (M) – $01 X ← ← ← ← (X) - $01 Operación: Descripción: Substrae uno de los contenidos de ACCA, X o M. Los bits N y Z en el CCR se ponen a 1 o 0 según el resultado de esta operación.
EOR OR-Exclusiva de la Memoria con el Acumulador ACCA ← ← ← ← (ACCA) ⊕ ⊕ ⊕ ⊕ (M) Operación: Descripción: Realiza una OR-Exclusiva lógico entre los contenidos de ACCA y M, pone el resultado en ACCA. (Cada bit de ACCA después de una operación será una OR-Exclusiva lógico de los bits correspondientes de M y ACCA antes de la operación.) Códigos de condición y Formula Boleana ...
Incrementa ACCA ← ← ← ← (ACCA) + $01 o M ← ← ← ← (M) + $01 X ← ← ← ← (X) + $01 Operación : Descripción: Suma uno a los contenidos de ACCA, X o M. Los bits N y Z en el CCR son puestos a 1 o a 0 según los resultados de esta operación.
Salto PC ← ← ← ← Dirección Efectiva Operación: Descripción: Ocurre un salto a la instrucción guardada a la dirección efectiva. La dirección efectiva se obtiene de acuerdo con las reglas del modo de direccionamiento Extendido, Directo o Indexado. Códigos de condición y Formula Boleana ...
Salto a Subrutina PC ← ← ← ← (PC) + n n = 1, 2, 3 dependiendo del modo de direccionamiento Operación: ↓ ↓ ↓ ↓ (PCL); SP ← ← ← ← (SP) – $0001 Pone la parte baja de la dirección de retorno a la pila ↓...
Carga el Acumulador desde la Memoria ACCA ← ← ← ← (M) Operación: Descripción: Carga los contenidos de la memoria en el acumulador. El código de condición se pone a 1 de acuerdo los datos. Códigos de condición y Formula Boleana ...
Carga el Registro de Índice desde la Memoria X ← ← ← ← (M) Operación: Descripción: Carga los contenidos de la posición de memoria especificada en el registro de índice. Los códigos de condición son puestos a 1 de acuerdo a los datos. Códigos de condición y Formula Boleana ...
Desplazamiento Lógico a la Izquierda (lo mismo que la instrucción ASL) Operación: ← C ← ← ← ← b7 - - - - - - b0 ← ← ← ← 0 Descripción: Desplaza todos los bits de ACCA, X o M un lugar a la izquierda.
Desplazamiento Lógico a la Derecha Operación → 0 → → → → b7 - - - - - - b0 → → → → Descripción: Cambia todos los bits de ACCA, X o M un lugar a la derecha. El bit 7 está cargado con 0. El bit 0 se desplaza al bit C.
Multiplicación Sin Signo X : A ← ← ← ← X x A Operación: Descripción: Multiplica los ocho bits del registro de índice por los ocho bits del acumulador para obtener un número de 16-bits sin signo, encadenando el registro de índice y el acumulador. Después de la operación, X contiene los 8 bits más altos del resultado de 16-bits.
Negado ACCA ← ← ← ← – (ACCA); X ← ← ← ← – (X); M ← ← ← ← – (M) Operación: Descripción: Reemplaza los contenidos de ACCA, X o M con su complemento a dos. El valor $80 queda inalterado.
No Operación Descripción: Ésta es una instrucción de un solo byte que causa al contador del programa que sea incrementado. Ningún otro registro es afectado. Códigos de condición y Formula Boleana Ningún bit afectado Forma, Modos de Direccionamiento, Código Máquina y Ciclos Fuente Modo de Código Máquina...
OR-Inclusiva ACCA ← ← ← ← (ACCA) + (M) Operación: Descripción: Realiza una OR-Inclusiva lógico entre los contenidos de ACCA y M, pone el resultado en ACCA. Cada bit de ACCA, después de la operación, será una OR-Inclusiva lógico de los bits correspondientes de M y ACCA antes de la operación.
Rotación a la Izquierda por Acarreo Operación: ← ← ← ← C ← ← ← ← b7 - - - - - - b0 ← ← ← ← Descripción: Desplaza todos los bits de ACCA, X o M un lugar a la izquierda.
Rotación a la Derecha por Acarreo Operación: → → → → C → → → → b7 - - - - - - b0 → → → → C Descripción: Desplaza todos los bits de ACCA, X o M un lugar a la derecha.
Reset del Puntero de Pila SP ← ← ← ← $00FF Operación: Descripción: Reset al puntero de pila en la parte alta de la pila. Códigos de condición y Formula Boleana Ningún bit afectado Forma, Modos de Direccionamiento, Código Máquina y Ciclos Fuente Modo de Código Máquina...
Subtracción con Acarreo ACCA ← ← ← ← (ACCA) – (M) – (C) Operación: Descripción: Substrae los contenidos de M y C de los contenidos de ACCA, pone el resultado en ACCA. Códigos de condición y Formula Boleana Se pone a 1 si el resultado del MSB es 1;...
Pone a 1 el bit de Acarreo bit C ← ← ← ← 1 Operación: Descripción: Pone a 1 el bit C en el CCR. La instrucción SEC se puede usar para preparar el bit C antes de una instrucción de desplazamiento o de rotación que involucre el bit C. Códigos de condición y Formula Boleana ...
Pone a 1 el Bit de Máscara de Interrupción bit I ← ← ← ← 1 Operación: Descripción: Pone a 1 el bit de máscara de interrupción en el CCR. El microprocesador se inhibe del servicio de interrupciones mientras que el bit I es 1. Códigos de condición y Formula Boleana ...
Guarda el Acumulador en la Memoria M ← ← ← ← (ACCA) Operación: Descripción: Guarda los contenidos de ACCA en la memoria. Los contenidos de ACCA permanecen inalterados. Códigos de condición y Formula Boleana Se pone a 1 si el resultado MSB es 1; de lo contrario se pone a 0. •...
STOP Habilita la IRQ y Para el Oscilador STOP Descripción: Reduce el consumo de potencia eliminando toda disipación de potencia dinámica. Esto resulta por: 1) Se ponen a 0 los ‘prescalers’ del temporizador, 2) Deshabilita las interrupciones del temporizador, 3) Pone a 0 el ‘flag’...
Guarda el Registro de Índice X en la Memoria M ← ← ← ← (X) Operación: Descripción: Guarda los contenidos de X en la memoria. Los contenidos de X permanecen inalterados. Códigos de condición y Formula Boleana Se pone a 1 si el resultado MSB es 1;...
Substracción ACCA ← ← ← ← (ACCA)–(M) Operación: Descripción: Substrae los contenidos de la M de los contenidos del ACCA y pone el resultado en el ACCA. Códigos de condición y Formula Boleana Se pone a 1 si el resultado del MSB es 1; de lo contrario se pone a 0. R7 •...
Pone el CCR hacia la pila Bit I ← ← ← ← 1 PCH ← ← ← ← ($xFFC) Saca el vector (x=1o 3 dependiendo del dispositivo HC05) PCL ← ← ← ← ($xFFD) Descripción: El contador de programa es incrementado por uno. El contador de programa, el registro de índice y el acumulador se Ponen hacia la pila.
Transfiere el Acumulador al Registro de Índice X ← ← ← ← (ACCA) Operación: Descripción: Carga el registro de índice con los contenidos del acumulador. Los contenidos del acumulador no se alteran. Códigos de condición y Formula Boleana Ningún bit afectado Forma, Modos de Direccionamiento, Código Máquina y Ciclos Fuente...
Prueba para Negativo o Cero (ACCA) – $00 (X) – $00 (M) – $00 Operación: Descripción: Pone a 1 los bits N y Z del código de condición, según los contenidos del ACCA, X o M. Los contenidos del ACCA, X y M no se alteran. Códigos de condición y Formula Boleana ...
TXA Transfiere el Registro de Índice al Acumulador ACCA ← ← ← ← (X) Operación: Descripción: Carga el acumulador con el contenido del registro de índice. No se altera el contenido del registro de índice. Códigos de condición y Formula Boleana ...
WAIT Habilita la Interrupción, Para el Procesador WAIT Descripción: Reduce el consumo de potencia, eliminando la disipación de potencia dinámica. El temporizador, el prescaler del temporizador y los periféricos internos continúan operando porque ellos son fuentes potenciales de una interrupción. La instrucción WAIT provoca la habilitación de las interrupciones poniendo a 0 el bit I en el CCR y se paran los relojes de los circuitos del procesador.
Tablas de Referencia Índice Conversión de Hexadecimal a ASCII Conversión de Hexadecimal a Decimal Conversión de Decimal a Hexadecimal Valores Hexadecimales vs. Instrucciones MC68HC05 Glosario Conversión de Hexadecimal a ASCII El Código estándar Americano para el Intercambio de Información (ASCII) mantiene una norma ampliamente aceptada para codificar información alfanumérica en números binarios.
Conversión de Hexadecimal a Decimal Para convertir un número hexadecimal (de hasta cuatro dígitos hexadecimales) a decimal, se puede mirar la equivalencia decimal de cada dígito hexadecimal en la Tabla 20. El decimal equivalente del número hexadecimal original es la suma de los pesos encontrados en la tabla, para todos los dígitos hexadecimales. Por ejemplo: Para encontrar el número decimal equivalente de $3E7.
menos 0, es un valor decimal restante 9 Luego se mira en la columna el siguiente dígito hexadecimal de orden más bajo (en este caso el primer dígito hex). Se encuentra el valor decimal más grande en esta columna, que sea menor o igual a 9 es 9, por lo que se pondrá...
Página 185
Operan Instrucción Modo de Operan Instrucción Modo de Operan Instrucción Modo de Direccionam Direccionam Direccionam Relativo Indexado 0 Extendido Relativo Inherente Indexado 2 Relativo Inherente Indexado 2 BHCC Relativo Indexado 2 BHCS Relativo Inherente Indexado 2 Relativo Indexado 2 ...
Glosario 1 K — Un kilobyte o 1024 bytes. Similar al uso del prefijo kilogramo, que significa 1000 gramos en el sistema de numeración decimal. 1024 es 2 8-bits MCU — Un microcontrolador donde los datos se comunican sobre un bus de datos compuesto de ocho líneas de datos separados.
Página 187
assembly language (lenguaje ensamblador) — Son las instrucciones mnemónicas y las directivas del ensamblador que son significativas para programar y se pueden traducir en un programa de código objeto que un microcontrolador entiende. La CPU usa los ‘opcodes’ y los números binarios para especificar las operaciones que constituyen un programa de microprocesador.
Página 188
transferidos. Si se transfieren los valores incorrectamente, es muy improbable que el ‘checksum’ empareje el valor que se espera. clock (reloj) — Es una señal cuadrada que se usa para secuenciar los eventos de una computadora. CMOS — Son las siglas de Semiconductor de Óxido de Metal Complementario. Es un semiconductor de silicio procesado tecnológicamente que permite la fabricación de dos tipos de transistores, el tipo N y el tipo P, en el mismo circuito integrado.
Página 189
direct addressing mode (modo de direccionamiento directo) — El modo de direccionamiento directo usa un valor proporcionado por el programa para el byte de orden bajo de la dirección de un operando. El byte de orden alto de la dirección del operando se asume como $00, que no tiene que ser especificado explícitamente. direct page (página directa) —...
Página 190
immediate addressing mode (modo de direccionamiento inmediato) — En el modo de direccionamiento inmediato, el operando se localiza en las próximas posiciones de memoria, después del ‘opcode’. inherent addressing mode (modo de direccionamiento inherente) — En el modo de direccionamiento inherente, la CPU ya inherentemente sabe todo lo que necesita saber para completar la instrucción.
Página 191
low order (orden bajo) — Es el dígito más a la derecha de un número. Siete es el dígito de orden bajo del número 57. LSB — Son las siglas de Least Significant Bit. Es el bit menos significativo. El dígito de más a la derecha de un valor binario.
Página 192
‘opcodes’ binarios y datos de un programa para un microprocesador. Un archivo de código de objeto se puede usar para cargar la información binaria en un sistema microcontrolador. Motorola usa el formato de archivo S- record para los archivos de código objeto. Ver la Figura 35. Archivo S-record del programa ejemplo.
Página 193
ROM — Es una memoria de sólo lectura. Un tipo de memoria que puede leerse pero no puede modificarse (escribirse). Los contenidos de la ROM deben ser especificados antes de fabricar la MCU. S-record — Un formato estándar de Motorola que se usa para los archivos de código objeto. Ver la Figura 35. Archivo S-record del Programa Ejemplo.
Página 194
simulator (simulador) — Es un programa que simula la conducta real de una MCU. source code (código fuente) — Ver source program (programa fuente). source program (programa fuente) — Es un archivo texto que contiene los mnemónicos de cada instrucción, las etiquetas, los comentarios y las directivas del ensamblador.
Página 195
contenidos de la RAM y los registros pueden permanecer inalterados después de un pequeño corte de alimentación. word (palabra) — Es un grupo de bits binarios. Algunas computadoras más grandes consideran una palabra un conjunto de 16 bits, pero ésta no es una norma universal. write (escritura) —...