190
Always leading the pack Laboratorio Time SISTEMAS PROGRAMABLE

dl3155m24hc11_teoria

Embed Size (px)

Citation preview

Page 1: dl3155m24hc11_teoria

Always leading the pack

Laboratorio Time

SISTEMAS PROGRAMABLE

Page 2: dl3155m24hc11_teoria
Page 3: dl3155m24hc11_teoria

DL3155M24HC11

2

DL3155M24HC11

SISTEMAS PROGRAMABLES

Page 4: dl3155m24hc11_teoria

DL3155M24HC11

3

INDICE

GUIA TEORICA:

UNIDAD

1. Fundamentos de microcomputadoras.

2. Arquitectura del microprocesador.

3. Conjunto de instrucciones.

4. Operaciones con la pila.

5. Operaciones de entrada y salida.

6. Programación de la tarjeta DL3155M24HC11.

Page 5: dl3155m24hc11_teoria

DL3155M24HC11

4

Page 6: dl3155m24hc11_teoria

DL3155M24HC11

5

UNIDAD 1

FUNDAMENTOS DEMICROCOMPUTADORAS

Page 7: dl3155m24hc11_teoria

DL3155M24HC11

6

CONTENIDO

1.1 INTRODUCCIÓN

1.2 TÉRMINO MICROCONTROLADOR

1.3 FUNCIONAMIENTO DEL MICROCONTROLADOR

Page 8: dl3155m24hc11_teoria

DL3155M24HC11

7

1.1 INTRODUCCION

Un microprocesador es un circuito electrónico muy complejo responsable de las operacionesaritméticas y lógicas programadas en una microcomputadora. Esta constituido de cientos demiles de transistores microscópicos encapsulados dentro de un delgado trozo(chip) de silicioque no es mayor de algunos milímetros cuadrados. Dicho trozo, está alambrado en un circuitointegrado (chip) normalmente de 40 o más interconexiones entre el CI y el chip.

Los miles de transistores que componen el microprocesador están configurados para formardiferentes clases de circuitos dentro del chip. Desde el punto de vista, aprendizaje para laoperación del microprocesador, los circuitos más importantes son los registros, contadores ydecodificadores. En esta unidad, usted aprenderá como esos circuitos trabajan juntos parallevar a cabo tareas simples, pero útiles.

Además de los circuitos estándar, característicos de los microprocesadores, el MC68HC11 queusted aprenderá a programar, contiene otros circuitos. Se incluye internamente Memoria deSólo Lectura (ROM), Memoria de Acceso Aleatorio (RAM), Memoria de Sólo LecturaProgramable y Borrable Eléctricamente (EEPROM), una Interface Periférica Serial (SPI), unaInterface de Comunicaciones Serie (SCI), un Convertidor Analógico-Digital (A/D), Sistema deTemporización(timer´s) y algunos otros usados principalmente en aplicaciones de interface.

Page 9: dl3155m24hc11_teoria

DL3155M24HC11

8

1.2 EL TERMINO MICROCONTROLADOR

Un microprocesador es un dispositivo lógico que es usado en sistemas electrónicos digitales.Pero, previamente estableceremos una diferencia entre microprocesador y microcontrolador(deacuerdo a sus características podemos decir que también es llamado unamicrocomputadora).

La unidad microprocesadora o CPU, es un elemento lógico complejo que lleva a cabooperaciones aritmético/lógicas y de control. Comúnmente esta encapsulado en un solo circuitointegrado CI.Un microcontrolador contiene un microprocesador, además de otros circuitos, tales comodispositivos de memoria para almacenamiento de información, adaptadores de interface paraconectarse a señales externas y un reloj que actúa como temporizador maestro del sistema.La figura 1-1 muestra un microcontrolador(recuerde que se menciono que tambien es llamada,una microcomputadora) con los dispositivos basicos he interconectados entre internamente,aplicandosele solo una señal de reloj.

Fig. 1-1. Arquitectura básica de un Microcontrolador(microcomputadora).

La microcomputadora está integrada por los componentes ubicados dentro de la líneapunteada. El chip MC68HC11 usado en este curso, contiene esas características en un solochip de modo que se hace referencia a una unidad microcomputadora o CPU.

Todo lo situado fuera de la línea punteada en la figura 1-1 se considera como la parte quepermite la interfaz con señales de entrada y salida externas, todas las microcomputadorasdeben tener algún medio de comunicarse así. La información recibida por lamicrocomputadora, que procede de señales externas, se le conoce como datos deentrada(input data). La información transmitida al exterior se considera como datos desalida(output data). La información puede llegar de dispositivos semejantes a lectoras de cintade papel, transductores de varios tipos, switches mecánicos, teclados o aún de otrascomputadoras.

Reloj

memoria

memoria

Interfaz

Dispositivo deentrada/salida

UnidadMicroprocesadora

microcomputadoraI/O

Page 10: dl3155m24hc11_teoria

DL3155M24HC11

9

Concepto De Programa Almacenado

Una microcomputadora es capaz de llevar a cabo muchas instrucciones distintas. Puede sumary restar números, llevar a cabo operaciones lógicas, etc. Puede leer información desde undispositivo de entrada y transmitir información a un dispositivo de salida. De hecho, dependedel microprocesador usado, el numero de instrucciones que el micro puede ejecutar pueden ser100 o más según sea el caso. Más aún para conformar operaciones mucho más complejas sepuede combinar dos o más operaciones individuales.

La compuadora solo recibe instrucciones y las ejecuta. Se esclarece la aplicación y se le danlas operaciones y el orden en que va a llevarlas a cabo. Dichas operaciones se les llama:instrucciones. Las más comunes son la de suma, sustracción, cargar registro índice, almacenaracumulador, de paro, etc., etc.

Un grupo de instrucciones que permiten a la computadora efectuar una tarea específica, sellama programa. Y es el programador quién escribe dichas instrucciones.. Generalmente, lalongitud de un programa es proporcional a la complejidad de la tarea que la computadora debeefectuar. Un programa para sumar una lista de números requiere sólo una docena deinstrucciones. Por otro lado, un programa para controlar todos los semáforos de una ciudadchica puede requerir miles de instrucciones.

Una computadora es frecuentemente comparada con una calculadora, donde se le dice quéhacer desde el teclado. Aún calculadoras baratas pueden efectuar algunas operacionescomparables con instrucciones de computadora. Oprimiendo las teclas correctas, usted puedeinstruir a la calculadora para sumar, restar, multiplicar, dividir y limpiar la pantalla. Con lacalculadora, usted puede sumar una lista de números tan rápidamente como pueda introducirlos números y las instrucciones. En donde, la operación está limitada por la velocidad yprecisión del operador.

Desde el principio, los diseñadores de computadoras reconocieron que es el operador que enocasiones hace lento el proceso de cómputo. Para solucionar esto fue desarrollado el conceptode programa almacenado. Usando esta aproximación, el programa es almacenado en lamemoria de la computadora. Supongamos por ejemplo, que se tienen 20 números que seránmanipulados por un programa que consta de 100 instrucciones. Supongamos ahora que segenerarán 10 respuestas en el proceso.

Antes que inicie cualquier proceso, el programa de 100 instrucciones más los 20 números soncargados en memoria. Seguidamente, se apartan 10 localidades de memoria reservadas paralas respuestas. Sólo entonces se permite que la computadora ejecute el programa. El tiempode ejecución puede ser menor a un milisegundo. Compare este tiempo con el que podría tomarintroducir manualmente las instrucciones y los números, uno a la vez mientras la computadoraestá corriendo. Esta operación automática es una característica que distingue a la computadorade la simple y no programable calculadora.

Palabras de Computadora

En terminología de computadoras, una palabra es un grupo de dígitos binarios que puedenocupar una localidad de almacenamiento. Aunque la palabra está formada por dígitos

Page 11: dl3155m24hc11_teoria

DL3155M24HC11

10

individuales, la computadora los maneja como una unidad. Así, la palabra es la unidad deinformación fundamental usada por la computadora.

Una palabra puede ser un número binario que es manejado como dato o puede ser unainstrucción que dice a la computadora qué operación llevar a cabo. Puede ser un carácterASCII representando una letra del alfabeto. Finalmente, una palabra puede ser una direcciónque dice a la computadora dónde localizar un dato.

Longitud de Palabra

Una de las más importantes características de cualquier microprocesador es qué la longitud depalabra pueda manejarse, esto se refiere a la longitud en bits de la unidad fundamental deinformación.

Aunque actualmente existen muchos microprocesadores de 16 y 32 bits, una longitud depalabra muy común continúa siendo de 8 bits. En esas unidades, los números, direcciones,instrucciones y datos son representados por números binarios de 8 bits. El número binario máspequeño es 0000 00002 o 0016; el mayor es 1111 11112 o FF16. En decimal, este rango esdesde 0 hasta 25510. Así, un número binario de 8 bits puede tener uno de 25610 valores.

Una palabra de 8 bits puede especificar números positivos entre 0 y 25510. O, si la palabra de 8bits es una instrucción, puede especificar 25610 posibles operaciones. Es también posible quela palabra de 8 bits represente un carácter ASCII. En éste caso puede ser una letra delalfabeto, signo de puntuación o numero. Como se puede ver, la palabra de 8 bits puederepresentar cosas diferentes, dependiendo de cómo es interpretada. El programador debeasegurarse de que un carácter ASCII o número binario no sea interpretado como unainstrucción.

Aunque la longitud de palabra de 8 bits es muy popular, se emplean cada vez con mayorfrecuencia las de 16 y 32 bits y, eventualmente, la de 4 bits por el bajo costo del dispositivo.

También en los nuevos microcontroladores de tipo RISC, se emplean longitudes de 12 y 14bits. Las longitudes mayores permiten trabajar con números grandes usando una sola palabra.Por ejemplo, una palabra de 16 bits puede representar números hasta 6553610. Sin embargo,esta capacidad agrega mayor complejidad al microprocesador. De cualquier modo,restringiremos nuestra discusión a las unidades de 8 bits.

Debe ser puntualizado que la longitud de palabra de 8 bits no significa no poder manejar masque números debajo de 25610. Pero en caso de ser necesario, se deberán usar dos o máspalabras para representar números grandes.

La palabra de 8 bits define el tamaño de muchos componentes diferentes en el sistemamicroprocesador. Por ejemplo, muchos registros importantes tendrán 8 bits de capacidad.

La memoria deberá ser capaz de mantener números grandes con palabras de 8 bits; y el busempleado para transferir palabras de datos consistirá en conductores paralelos de 8.

Aun los microprocesadores de 16 bits usan segmentos de datos de 8 bits, en muchasaplicaciones; como ejemplo, las entradas de teleimpresores frecuentemente consisten decaracteres ASCII de 8 bits. Para distinguir esos segmentos de 8 bits de información, de los de16 bits o mayores, hay un termino de uso general: el byte, que es un grupo de 8 bits, manejado

Page 12: dl3155m24hc11_teoria

DL3155M24HC11

11

como una sola unidad. Así, en los microprocesadores de 8 bits, una palabra consiste de unbyte, en tanto que en los de 16 bits, consiste en 2 bytes. La figura 1-2 ilustra estos puntos.

Fig. 1-2 Palabras y bytes

La figura 1-2 también muestra como están numerados los bits que componen la palabra decomputadora. El bit menos significativo (LSB) esta a la derecha, mientras que el bit mássignificativo (MSB) a la izquierda. En la palabra de 8 bits, estos se numeran del 0 al 7, dederecha a izquierda; en la palabra de 16 bits, la numeración va del 0 al 15, en el mismosentido. Los 8 bits de la derecha son llamados byte de orden bajo y los de la izquierda byte deorden alto.

Page 13: dl3155m24hc11_teoria

DL3155M24HC11

12

1.3 FUNCINAMIENTO DEL MICROCONTROLADOR

El microprocesador puede tener una docena o más de registros que varían en tamaño desde 1bit hasta 16 bits. Puede tener docenas de instrucciones, muchas de las cuales puedenimplementarse de diferentes maneras. Puede tener buses de datos, direcciones y control. Ensuma, el microprocesador puede parecer desde afuera, complicado para programarse por serun micro desarrollado.

Un diagrama de bloques de una microcomputadora básica se muestra en la figura 1-3, la cualmuestra un microprocesador, la memoria y la circuitería de E/S. Por simplicidad, ignoraremoslos circuitos de E/S en ésta unidad. Podemos hacer esto suponiendo que el programa y losdatos se hallan en memoria y que los resultados se mantendrán en registros o en memoria. Alfinal de este curso, se esclarecerá el movimiento de datos externos desde o hacia el micro,dichos procedimientos se estudiarán en una de las ultimas unidades. Esto nos permitiráconcentrarnos en el microprocesador y la memoria.

Fig. 1-3. La Microcomputadora Básica

Page 14: dl3155m24hc11_teoria

DL3155M24HC11

13

La unidad Microprocesadora

La unidad microprocesadora es mostrada en detalle en la figura 1-4. Por simplicidad, sólo seincluyen los principales registros y circuitos. En nuestra unidad elemental, muchos de loscontadores, registros y buses son de 8 bits, por lo que pueden acomodar palabras de esetamaño.

Fig. 1-4. Un microprocesador Elemental

CLOCKAND

CONTROLLINES

Page 15: dl3155m24hc11_teoria

DL3155M24HC11

14

Uno de los circuitos más importantes en el procesador es la unidad lógica-aritmética (ALU). Supropósito es llevar a cabo operaciones lógicas o aritméticas sobre los datos que le sonentregados. La ALU tiene dos entradas principales. Una viene desde un registro llamadoacumulador, y la otra viene desde el registro de datos. La ALU puede sumar los dos datos deentrada juntos, o puede restar una de la otra. También puede llevar a cabo algunasoperaciones lógicas, las cuales discutiremos en unidades posteriores. La operación que ejecutela ALU está determinada por señales en las varias líneas de control.

Generalmente, la ALU recibe dos números binarios de 8 bits desde el acumulador y el registrode datos como se ilustra en la figura 1-5A. Ya que se ejecuta alguna operación sobre estaspalabras de datos, las dos entradas se llaman operandos.

Fig. 1-5. Unidad Lógica Aritmética

Page 16: dl3155m24hc11_teoria

DL3155M24HC11

15

Los dos operandos pueden ser sumados, restados o comparados en alguna forma, y elresultado de la operación vuelto a almacenar en el acumulador. Por ejemplo, suponga que sevan a sumar dos números (7 y 9). Antes que los números puedan ser sumados, un operando(9) es colocado en el acumulador, el otro (7) es colocado en el registro de datos. Se activa lalínea de control correspondiente para implementar la operación de suma. La ALU suma los dosnúmeros, enviando su suma (1610) a la salida. La figura 1-5B muestra el proceso; la suma esalmacenada en el acumulador, reemplazando el operando que originalmente se hallaba ahí.Nótese que todos los números están en forma binaria.

El acumulador es el más útil de los registros. Durante las operaciones aritméticas y lógicaslleva a cabo una función dual. Antes de la operación, guarda uno de los operandos. Despuésde la operación, guarda la suma resultante, diferencia o respuesta lógica. El acumulador recibealgunas instrucciones en cada microprocesador. Por ejemplo, la instrucción “cargaracumulador” causa que el contenido de alguna localidad específica de memoria sea transferidaal acumulador. La instrucción “almacenar acumulador” causa que el contenido del acumuladorsea almacenado en alguna localidad específica de memoria.

El registro de datos es una localidad temporal de almacenamiento para los datos que van ovienen sobre el bus de datos. Por ejemplo, guarda una instrucción mientras es decodificada.También, guarda un byte de datos mientras la palabra es almacenada en memoria.

La MPU también contiene algunos otros registros y circuitos importantes: el registro dedirecciones, el contador de programa, el decodificador de instrucciones y el controlador-secuencial. Estos son mostrados en la figura 1-4.

El registro de direcciones es otra localidad de almacenamiento temporal. Guarda la direcciónde la localidad de memoria o dispositivo de E/S que es usada en la operación que se estállevando a cabo.

El contador de programa controla la secuencia en la que las instrucciones serán ejecutadas enun programa. Normalmente, hace esto contando en secuencia 0, 1, 2, 3, etc.En un instante dado, la cuenta indica la localidad en memoria de la que debe tomarse elsiguiente byte de información.

El decodificador de instrucciones. Después que una instrucción es sacada de la memoria ycolocada en el registro de datos, la instrucción es decodificada por éste circuito. Eldecodificador examina el código de 8 bits y decide que operación debe ser llevada a cabo.

El controlador-secuenciador produce una variedad de señales de control para ejecutar lainstrucción. Ya que cada instrucción es diferente, se produce una combinación diferente deseñales de control para cada instrucción. Este circuito determina la secuencia de eventos,necesaria para completar la operación descrita por la instrucción.Más tarde verá como estos circuitos trabajan juntos para ejecutar programas simples. Primero,demos en vistazo a la memoria de nuestra microcomputadora.

Page 17: dl3155m24hc11_teoria

DL3155M24HC11

16

MEMORIA

Un diagrama simplificado de memoria lectura/escritura de 256 palabras a 8 bits, que se usanuestra microcomputadora hipotética se muestra en la figura 1-6. La memoria consiste de 25610

localidades, cada una de las cuales puede almacenar una palabra de 8 bits. Este tamaño dememoria es referido frecuentemente como 256 X 8. Una memoria de lectura/escritura esaquella en la que los datos pueden ser escritos y leídos con igual facilidad.

Fig. 1-6. Memoria de Acceso Aleatorio(RAM)

Dos buses y un número de líneas de control conectan la memoria con la unidad delmicroprocesador. El bus de direcciones puede contener un número binario de 8 bits, que puedeespecificarse como 25610 localidades, desde la MPU al decodificador de direcciones dememoria. Cada localidad tiene asignado un número único llamado dirección. La primeralocalidad tiene la dirección 0. La última localidad tiene la dirección 25510, 1111 1111 en binarioo FF en hexadecimal. Una localidad específica es seleccionada colocando su dirección de 8bits en el bus de direcciones. El decodificador de direcciones, después de decodificar elnúmero de 8 bits, selecciona la localidad de memoria apropiada.

La memoria también recibe una señal de control de la MPU. Esta señal dice a la memoria queoperación llevar a cabo. Una señal READ indica que la localidad seleccionada será leída. Estoimplica que el número de 8 bits contenido en la localidad seleccionada debe ser colocado en elbus de datos, donde puede ser transferido a la MPU.

Page 18: dl3155m24hc11_teoria

DL3155M24HC11

17

El procedimiento se ilustra en la figura 1-7. Considere que la MPU va a leer el contenido de lalocalidad de memoria 0416. Suponga que el número almacenado ahí es 9716.

Primero, la MPU coloca la dirección 0416 en el bus de dirección. El decodificador reconoce ladirección y selecciona la localidad de memoria apropiada. Segundo, la MPU envía una señalREAD a la memoria, indicándole que el contenido de la localidad seleccionada esta siendocolocado en el bus de datos. Tercero, la memoria responde colocando el número 9716 en el busde datos. La MPU puede entonces tomar el número y usarlo como sea necesario.

Fig. 1-7. Leyendo desde memoria

Debe señalarse que el proceso de lectura de memoria no altera el contenido de la localidadleída. Esto es, el número 9716 permanece en la localidad de memoria 04 después de laoperación de lectura. Esta característica se conoce como lectura no destructiva (NDRO). Es unrasgo importante puesto que permite leer el dato cuanto sea necesario.

La MPU también puede llevar a cabo la operación de escritura, WRITE. Este procedimiento seilustra en la figura 1-8. Durante esta operación, una palabra de datos es tomada del bus dedatos y colocada en la localidad seleccionada. Por ejemplo, veamos como la MPU almacena elnúmero 5216 en la localidad 03. Primero, la MPU coloca la dirección 03 en el bus dedirecciones. El decodificador responde seleccionando la localidad de memoria 03. Segundo, laMPU coloca el número 5216 en el bus de datos. Tercero, la MPU envía la señal WRITE.

Page 19: dl3155m24hc11_teoria

DL3155M24HC11

18

La memoria responde almacenando el número presente en el bus de datos en la localidadseleccionada. Esto es, 5216 es almacenado en la localidad 03. El contenido previo se pierde alhaber sobre-escritura.

Fig. 1-8. Escribiendo en memoria

El nombre aceptado para éste tipo de memoria es el de Memoria de Acceso Aleatorio (RAM).“Acceso Aleatorio” significa que todas las localidades de la memoria son igualmente accesibles.Sin embargo, en años recientes, la RAM ha llegado a ser memoria de acceso aleatorio delectura/escritura. Como usted verá más adelante, hay otro tipo de memoria llamado memoria desólo lectura (ROM). También es accesible aleatoriamente, pero no tiene la capacidad deescritura. De esta manera es llamada ROM, pero nunca RAM.

Secuencia de Búsqueda – Ejecución

Cuando la microcomputadora ejecuta un programa, este lleva una secuencia fundamental quees repetida una y otra vez. Recuerde que un programa consiste de instrucciones que dicen a lamicrocomputadora que operaciones efectuar exactamente. Estas instrucciones deben seralmacenadas ordenadamente en la memoria. Deben ser extraídas de la memoria, una cadavez, por la MPU. Entonces pueden ser ejecutadas.

La operación de la microcomputadora puede ser dividida en dos fases, como se muestra en laFigura 1-9. Cuando se enciende el microprocesador entra a la fase de búsqueda. Durante estafase, una instrucción es tomada de la memoria y decodificada por la MPU.Una vez que la instrucción es decodificada, la MPU conmuta a la fase de ejecución. En estafase, la MPU efectúa la operación indicada por la instrucción.

Page 20: dl3155m24hc11_teoria

DL3155M24HC11

19

Fig. 1-9. Secuencia de busqueda-ejecución

La fase de búsqueda siempre consiste en la misma serie de operaciones. Por ello siempretoma el mismo lapso de tiempo. Sin embargo, la fase de ejecución puede consistir dediferentes secuencias de eventos, dependiendo de que tipo de instrucción se ejecuta. Así, lafase de ejecución puede variar considerablemente de una instrucción a otra.

UN PROGRAMA DE MUESTRA.

Ahora que usted tiene una idea general de los registros y circuitos que se encuentran en unamicrocomputadora, examinaremos cómo trabajan juntos, para ejecutar un programa sencillo.Aquí estamos interesados sobre todo en la forma en que la microcomputadora opera; por lotanto, el programa será muy trivial.

Veamos como la computadora resuelve un problema como 7 + 10 =?. Aunque esto puedeparecer un problema increíblemente fácil, la computadora por si sola aún con todos susrecursos, no tiene podrá resolverlo.

Antes que usted pueda escribir un programa debe saber que instrucciones están disponiblesentre usted y la computadora. Cada microprocesador tiene un conjunto de instrucciones.Suponga que después de examinar dicho conjunto, usted decide que son necesarias tresinstrucciones para resolver el problema. Esas tres instrucciones y una descripción de quéhacen se ilustran en la Figura 1-10.

NOMBRE MNEMONICOS OPCODE DESCRIPCIONCargaracumulador LDA 1000 01102 o 8616

Cargar el contenido de la siguientelocalidad de memoria en el acumulador

Add ADD 1000 10112 o 8B16

Sumar el contenido de la siguientelocalidad de memoria al contenido delacumulador. Deja el resultado en elacumulador

Stop STOP 1100 11112 o CF16 Detiene todas las operaciones

Fig. 1-10. Instrucciones usadas para el programa ejemplo.

La primera columna de la tabla, nos da el nombre de la instrucción. Cuando escribimosprogramas, no es conveniente incluir el nombre completo. Por esta razón, cada instruccióntiene una abreviatura o ayuda a la memoria llamada mnemónico. Los mnemónicos se dan enla segunda columna. La tercera columna es la de códigos de operación u opcodes. Este es el

Page 21: dl3155m24hc11_teoria

DL3155M24HC11

20

número binario que la computadora y el programador usan para representar la instrucción. Elopcode se da tanto en forma binaria como en hexadecimal. La columna final describeexactamente que operación es llevada a cabo cuando se ejecuta la instrucción. El tenerpresente esta tabla, será muy útil ya que empleará estas instrucciones una y otra vez.

Suponga que desea sumar 7 a 1010 y dejar la suma en el acumulador. El programa es muyelemental. Primero debe cargar 7 en el acumulador con la instrucción LDA. Enseguida, sumará1010 al acumulador usando la instrucción ADD. Finalmente, detendrá la computadora con lainstrucción STOP.

Usando los mnemónicos y la representación decimal de los números a sumar, el programa severá así: LDA 7 ADD 10 STOP

La microcomputadora no puede entender mnemónicos o números decimales, solo interpretanúmeros binarios. Así, debe escribir el programa como una secuencia de números binarios.Puede hacer esto reemplazando cada mnemónico por su correspondiente opcode y cadanúmero decimal por su contra parte binaria.

Entonces:

LDA 7 se convierte en 1000 0110 0000 0111 opcode de la representación Figura 1-10 binaria de 7Y: ADD 10 se convierte en 1000 1011 0000 1010 opcode de la representación Figura 1-10 binaria de 1010

Finalmente, STOP se convierte en 1100 1111 opcode de la Figura 1-10

Note que el programa consiste de tres instrucciones. Las primeras dos instrucciones tienen dospartes: un opcode de 8 bits seguido de un operando de 8 bits. Los operandos son los númerosque serán sumados (7 y 1010).

Recuerde que el microprocesador y la memoria trabajan con palabras de 8 bits o bytes. Puestoque las dos primeras instrucciones consisten de 16 bits de información, deben ser divididas endos bytes de 8 bits antes de ser almacenadas en memoria. De esta manera, cuando elprograma es almacenado en memoria, se ve así:

1000 0110 Opcode de LDA1a. Instrucción0000 0111 Operando (7)1000 1011 Opcode de ADD2a. Instrucción0000 1010 Operando (1010)

Page 22: dl3155m24hc11_teoria

DL3155M24HC11

21

3a. Instrucción 1100 1111 Opcode de STOP

Se requieren cinco bytes de memoria. Puede almacenar estos cinco bytes de programa encualquier lugar de la memoria que desee. Suponiendo que los almacena en las primeras cincolocalidades, la memoria se vería como lo muestra la Figura 1-11.

Fig. 1-11. El programa en Memoria

Note que cada localidad de memoria tiene dos números binarios asociados consigo. Uno es sudirección, el otro, su contenido. La dirección es fija. Se establece cuando se construye lamicrocomputadora. Sin embargo, el contenido cambia cada vez que se almacenan nuevosdatos.

Page 23: dl3155m24hc11_teoria

DL3155M24HC11

22

UNIDAD 2

ARQUITECTURA DELMICROCONTROLADOR

Page 24: dl3155m24hc11_teoria

DL3155M24HC11

23

CONTENIDO

2.1 ARQUITECTURA DE MICROPROCESADORES

2.2 ARQUITECTURA DEL MC68HC11

2.3 MODELO DE PROGRAMACION DEL MC68HC11

2.4 DIAGRAMA A BLOQUES DEL MC68HC11

Page 25: dl3155m24hc11_teoria

DL3155M24HC11

24

2.1 ARQUITECTURA DE MICROPROCESADORES

En el lenguaje coloquial de las computadoras, la palabra arquitectura se usa para describir elestilo de construcción de la computadora, su tamaño y arreglo de registros, su configuración debuses, etc.

La arquitectura de nuestro microprocesador hipotético se muestra por última vez en la Figura 2-1 Usted debe familiarizarse con esta arquitectura.

Fig. 2-1. Arquitectura del microprocesador hipotético

Page 26: dl3155m24hc11_teoria

DL3155M24HC11

25

La única razón para mostrarle los detalles del modelo es darle una idea de lo que se halla en elinterior del circuito integrado. En un microprocesador moderno, la estructura interna esfrecuentemente tan compleja que al intentar analizarlo tan de cerca, nos llenaría en detalles,creando confusión. Por esta razón, un modelo de programación se usa cuando se hace unaintroducción a un microprocesador por vez primera. En el modelo de programación el énfasis vamás allá. Cualquier registro o circuito que no pueda ser controlado directamente por elprogramador, simplemente se ignora. Por ejemplo, considere el registro de datos. No hayinstrucciones que den al programador control directo sobre ese registro. Esto es, no hayinstrucciones como Cargar el Registro de Datos, Almacenar el Registro de Datos, etc. Toda laactividad del registro de datos, es controlada estrictamente por la MPU. Así, el programadorpuede ignorar la existencia del registro. Ocurre lo mismo para el registro de direcciones, eldecodificador de instrucciones, el controlador-secuenciador, etc. Por lo tanto, el modelo deprogramación de nuestra MPU hipotético puede representarse como en la Figura 2-2. Estediagrama simple es suficiente para muchas aplicaciones de programación ya que muestratodos los registros que pueden ser controlados directamente por el programa.

7 0ACUMULADOR

7 0CONTADOR DE PROGRAMA

N Z V C REGISTROS CODIGO DE CONDICIÓN

Fig. 2-2. Modelo de programación del MPU hipotético

Por definición, una microcontrolador consiste de una Unidad Central de Proceso (CPU),Memoria de Solo Lectura (ROM), y circuitos de control y temporización. Puesto que el chipMC68HC11 contiene estos y otros circuitos y características, será referido técnicamente comola microcomputadora o MPU. Esto es así porque estamos interesados principalmente en laprogramación de la CPU de la microcomputadora.

El 68HC11 es un miembro de la familia de microprocesadores MC6800, Motorola que comenzóen 1974 con la introducción del MC6800. Otros miembros de esta familia incluyen a losmicroprocesadores MC6801 y MC6808, además de otros. Una ventaja del concepto de “familia”de chips, es que muchas de las instrucciones usadas para programar uno de los micros puedenusarse para programar otros de la familia. En este sentido se dice que el 68HC11 es totalmentecompatible con los otros miembros de la familia. Por ello comparte similitudes de diseño y lahabilidad de entender y ejecutar instrucciones del conjunto de instrucciones de la familia 6800.

Como resultado de esta compatibilidad entre miembros de la familia, un programa en lenguajeensamblador escrito para otro microprocesador, correrá casi sin problemas en el MC68HC11; loque nos indica que las principales diferencias entre los miembros de la familia tienen que vermás con el hardware. Esto incluye a los circuitos de soporte interconstruidos, como relojes,temporizadores, memoria RAM, memoria ROM, memoria EEPROM, y otros circuitos de soportepara la CPU. La CPU del 68HC11 es básicamente una extensión del diseño de la CPUMC6800/6801. Además de la posibilidad de ejecutar las 71 instrucciones del MC6800, el68HC11 tiene un mapa “paginado” de opcodes con un total de 91 nuevos opcodes. Finalmente,puesto que muchos términos y conceptos que aprenderá se aplican a otros microprocesadores,

Page 27: dl3155m24hc11_teoria

DL3155M24HC11

26

el aprendizaje de este material lo habilitará para entender y trabajar con una variedad demicroprocesadores de 8 bits, además del 68HC11.

2.2 ARQUITECTURA DEL MC68HC11

Los 68HC11 son fabricados por Motorola y se diseñan para atender las necesidadesparticulares del un sistema y para aplicaciones especializadas de los mercados. Lasaplicaciones de sistemas con microprocesadores requieren un microprocesador que esexpandible y tiene una capacidad de direccionamiento relativamente grande. Por otro lado, lasaplicaciones especializadas (automóviles, aparatos, etc.) requieren un dispositivo single-chipautónomo que contiene en su interior CPU, memoria, y capacidades de I/O. Dicho dispositivose llama a menudo un microprocesador single-chip.

Como usted está a punto de descubrir, los 68HC11 pueden configurarse de dos manerasdiferentes para los dos posibles mercados de aplicaciones. Alternativamente, los 68HC11pueden configurarse en un modo del single-chip, donde actúa como un microprocesador simpleque usa su propia memoria interna limitada y capacidades de I/O. Ahora, hechemos un vistazomás a detalle de este dispositivo flexible.

Estructura de chip y características internas

Un diagrama a bloques de la estructura del 68HC11 se muestra en la figura 2-3. Como ustedpuede ver, hay varias funciones integradas en el dispositivo. Las funciones interiores del chip ledarán una preparación para el estudio extenso, a lo largo de éste viaje.

Fig. 2-3Estructura de hardware interna en el 68HC11

TIMERPROGRAMAB

LE

68HC11

I/OSERIAL

CONVERTIDORA/D

I/O

PARAL

ELO

CPU6800

CLOCK

RAM256 x 8

ROM8k x 8

EEPROM512 x 8

Page 28: dl3155m24hc11_teoria

DL3155M24HC11

27

EL CPU

Los 68HC11 contiene una versión mejorada de los 6800 Motorola. Los registros del CPU semuestran en Figura 2-4.

7 A 0 7 B 0

15 D 0Acumulador de 8 bit, A y B,Acumulador D

15 IX 0 Registro Indice X

15 IY 0 Registro Indice Y

15 SP 0 Apuntador de Pila (Stack Pointer)

15 PC 0 Contador de Programa (ProgramCounter)

7 0

S X H I N Z V C Registro de código de condición.

Acarreo

Sobreflujo

Zero

Negativo Mascara deinterrupción- IRQ

Medio acarreo osemiacarreo

Mascara de interrupciónXIRQ

STOP deshabilitado

Fig. 2-4Los registros del CPU 68HC11

EL RELOJ INTERNO

El 68HC11 emplea un circuito del reloj interno que opera por un cristal externo. El circuito dereloj interno divide la frecuencia del cristal externa entre cuatro, para obtener la frecuencia dereloj. Los 68HC11 pueden operarse arriba de 2.1 MHz usando un cristal de 8.4 MHz.

Page 29: dl3155m24hc11_teoria

DL3155M24HC11

28

RAM INTERNA

La RAM interna del 68HC11 es 256 bytes. Esta RAM empieza en la dirección 000016 y seextiende a la dirección 00FF16.

ROM INTERNA

La ROM interna de 12K byte es una programación mascarable, localizada en las direccionesE00016 a FFFF16. Por supuesto, dado que la ROM es no mascarable, ud debe proporcionar unprograma hacia el chip del fabricante para ser mascarado dentro de la ROM.

EPROM INTERNA

Recuerde que la memoria EEROM es principalmente de lectura. Es decir, puede ser deescritura y lectura bajo un control de programa. Además, EEROM es no-volátil, siendo atractivapara usarse al final de un programa largo en el almacenamiento de los datos. Los 68HC11contienen 512 bytes de EEROM interna localizados en la dirección B60016 a B7FF16. Lainformación puede escribirse hacia y leída desde la EPROM vía un registro de control internoespecial llamado el registro PPROG.

I/O PARALELO

El 68HC11 proporciona 38 líneas I/O paralelas para interfaces externas, dependiendo de sumodo de operación. La mayoría de estas líneas pueden programarse como entradas o salidas,por un registro interno asociado, dirección datos. Muchas de las líneas paralelas I/O, tambiénsirven como una función dual para dar otras características de I/O.

I/O SERIE

Las I/O serie es comunicación y transferencia de datos, un bit en un momento, contra I/Oparalelo qué involucra comunicación datos de multi-bit. Brevemente, hay dos tipos decomunicaciones serie: asíncrono y síncrono. El 68HC11 tienen internamente la capacidad paradar ambos tipos de comunicación I/O serie. La sección I/O serie asíncrona del chip 68HC11 sellama la Interface de Comunicaciones Serie, o SCI. La sección I/O serie síncrona se llama laInterface Periférica Serie, o SPI.

EL TIMER INTERNO PROGRAMABLE

Los timers programables se utilizan para dar retardos de tiempo, generar señales y pulsos decontrol, mide tiempos entre eventos externos, y mide la duración de pulsos externos, sólo paramencionar algunas de sus aplicaciones.

EL CONVERTIDOR DE A/D INTERNO

El mundo real es analógico, de tal modo que si se desea sensar y controlar los eventos que enél existen, debe convertirse la señal analógica a señal digital, y entregarla al MPU. Éste es eltrabajo de un convertidor analógico a digital, o A/D. El 68HC11 incluye un convertidor de A/D de

Page 30: dl3155m24hc11_teoria

DL3155M24HC11

29

8 canales que pueden usarse para convertir ocho señales analógicas separadas en un valordigital de 8-bit y procesar por el MPU.

LAS LÍNEAS DE LA CONEXIÓN DEL 68HC11

Para interconectar el microprocesador a los circuitos de soporte o dispositivos externos, esimportante estar familiarizado con la asignación de los pines, las líneas del control, etc. Por ello,antes de iniciar los comentarios al respecto, necesitamos esta al tanto de las opciones deconfiguración generales. El 68HC11 es un dispositivo muy complejo. Primeramente, existen dosmodos de que puede configurarse, como: single-chip o multiplexado. Cuando esta en su modode single-chip(chip sencillo), el 68HC11 es un microprocesador completamente autónomo, consu propio componentes internos como el CPU, memoria y capacidades I/O. Configurado así, enmodo single-chip, es sumamente ventajoso cuando se emplea para las aplicaciones dedicadaso especializadas, como en instrumentación, y automóviles, sólo para mencionar unos. Dehecho, algunos los fabricantes del automóvil incorporan el modo de single-chip del 68HC11, ensus productos. Cuando se configura en su modo de single-chip, no hay datos externos o bus dedirecciones disponible, por consiguiente, usted no puede conectar un dispositivo periféricocomo un A/D al 68HC11. Solo puede usar las capacidades interiores del dispositivo.

Cuando el 68HC11 se configuran en su modo multiplexado, la configuración de sus pines secambia para proporcionar un bus de datos externo de 8-bits y un bus de direcciones de 16-bits.Como resultado, usted puede interconectar memoria externa y dispositivos periféricos I/O al68HC11 en este modo.

La figura 2-5 muestras un diagrama funcional de los pines del 68HC11 cuando se configura ensu modo multiplexado. La figura 2-5, muestra la versión del 68HC11 en su paquete cuadrado, oquad de 52-pines. Hay también otra versión de que es un paquete de doble línea o DIP de 48-pines. Observe el punto u orificio, marcado al centro del dispositivo. Esta marca se usa paralocalizar el pin 1. De este punto, el pin numerando desde el pin 1 al pin 52, se ubica en sentidocontrario a las manecillas del reloj.

Pin 1, es etiquetado como Vss. Éste es el pin de tierra.

Pines 2 y 3 se etiquetan como MODB y MODA, respectivamente. Estos dos pines se usan paraconfigurar el 68HC11 en su modo operación durante un operación reset. La lógica aplicada aestos pins configura el chip de acuerdo a la tabla siguiente:

Tabla 1-1Configuración del modo de operación

MOD B MOD A Modo Seleccionado1 0 Single-chip1 1 Multiplexado

Page 31: dl3155m24hc11_teoria

DL3155M24HC11

30

Fig. 2-5Pines del 68HC11 asignados en configuración modo multiplexado.

Pin 4 se etiqueta AS, correspondiendo a Address Strobe. La línea AS es una línea de salidaque indica que el 68HC11 han generado una dirección en el bus de direcciones. Cuando lalínea de AS es alta, una dirección dentro del bus de direcciones está presente. Cuando AS esbajo, los datos están en el bus de datos. Usted averiguará brevemente que el 68HC11multiplexa medio bus de direcciones y el bus de datos en los mismos ocho pines. El usoprimario para la línea AS, es separar, o demultiplexar, las señales de dirección y datos.

Pin 5 se etiqueta como E que simboliza línea de Enable. Ésta es una línea de salida que generauna señal de reloj necesario para temporizar el sistema. Esto es requerido en todos los circuitospara sincronizar la transferencia de datos entre el MPU, la memoria y los dispositivos periféricosI/0.

Pin 6 la línea Read/Write (R/W), indica a la memoria o los dispositivos periféricos sí el MPUestá en modo lectura o escritura. Una operación de lectura se indica un "1" en esta línea. Eneste modo, el MPU lee datos desde la memoria o desde un dispositivo de entrada. Unaoperación de escritura es indicada por un "0" en la línea R/W. En este modo, el MPU mandadatos a memoria o a un dispositivo de salida.

Los próximos dos Pines (7 y 8) se etiqueta EXTAL y XTAL, respectivamente. Aquí es donde uddebe conectar el cristal para generar la frecuencia de reloj interna E. Un oscilador de cristal,típico, se muestra en la figura 2-6A. Note que la frecuencia de cristal debe ser cuatro veces la

BUS DE DATOSY PARTE BAJADEL BUS DE

DIRECCIONES

MC 68HC1152-FN

LINEASDEL

CONVERTIDORLINEAS DEL A/D

PARTE SUPERIORDEL BUS DE

DIRECCIONES

I/OSERIE Y PARALELO

TIMER PROGRAMABLEY I/O PARALELO

Page 32: dl3155m24hc11_teoria

DL3155M24HC11

31

frecuencia de reloj E deseada (4 x E). El diagrama en la figura 2-6B muestra cómo usted puedeusar un circuito oscilador externo para generar una señal de reloj E. La salida del osciladordebe ser compatible a CMOS y debe aplicarse a la línea de EXTAL al pin 7. La frecuencia dereloj E, será la frecuencia de oscilador entre cuatro. Con este método de generación, la señalde reloj se utiliza y la línea de XTAL a la izquierda, en el pin 8, no es conectada.

Fig. 2-6(A) Cristal conectado al 68HC11

(B) Conexión de un oscilador externo

Pins 9 -16 son multiplexados para servir con un propósito dual:

§ Cuando la línea AS es alta, los pines 9-16 generan las ocho líneas de dirección másbajas (A0 - A7), del bus de direcciones externo.

§ Cuando la línea AS es baja, los pines 9-16 generan las ocho líneas de datos (D0 - D7)del bus de datos externo.

Así, el bus de datos y la mitad más baja del bus de direcciones son multiplexados en estasocho líneas, se ahorra el número total de pines requerido para el chip. Por supuesto, lainformación de datos y direcciones debe separarse, o demultiplexarse, externamente parainterconectarlos en orden al 68HC11.

La línea de 2%S%T (pin 17) se usa para restablecer e iniciar el MPU cuando el sistema esinicialmente energizado o en el momento que se desee inicializar el sistema, Cuando esta líneava a su nivel lógico "0", el MPU inicia la secuencia de reset. Recuerde que el vector reset esrecuperado desde las direcciones FFFE16 y FFFF16. Este vector se carga dentro del contador deprograma para que la primera instrucción de la rutina de reset sea buscada desde esadirección. Esta capacidad se usa para dirigir el MPU al inicio del programa monitor o de control.

CRISTAL4XE

OSCILADOREXTERNO

4XE

SIN CONEXIÓN

Page 33: dl3155m24hc11_teoria

DL3155M24HC11

32

La línea 8)21 pin 18 es básicamente línea de entrada de interrupción no mascarable. Un nivellógico 0 aplicado a esta línea, causa que el MPU atienda al vector de interrupción no-mascarable en las direcciones FFF416 y FFF516. El vector localizado en estas direcciones estácargado en el contador del programa para que el MPU inicie la ejecución con la primerainstrucción de la rutina servicio de interrupción. No olvide que una instrucción RTI debeaparecer al final de la rutina de servicio para volver al MPU, al lugar donde ocurrió lainterrupción.

La línea )21 pin 19 es línea de petición de interrupción mascarable. Recuerde que estainterrupción se ignora, si la bandera I del registro código de condición (CCR) es 1. Cuando unaseñal activa aparece en esta línea, el MPU primero verifica que la bandera I en el CCR sea 1.Si es así, la interrupción es ignorada. Si la bandera I está limpia(0), el MPU recibe el vector deinterrupción Ī21 desde las direcciones FFF216-FFF316 y lo cargan dentro del contador deprograma. La ejecución empieza entonces con la primera instrucción de la rutina servicio deinterrupción. Después use una instrucción RTI al final de la rutina, para regresar a donde lainterrupción fue generada. Un punto final sobre Ī21: puede configurarse como una interrupciónpara sensar flanco o nivel (level or edge). Después de restablecerse, el pin Ī21 se configuraautomáticamente como interrupción para sensar el nivel activo bajo. Así, un nivel lógico "0"aplicado al pin 19 comienza la secuencia de la interrupción. Además, el pin de )21 puede serconfigurado por software como interrupción de flanco negativo disparado. En este modo, unflanco de alto-a-bajo aplicado al pin 19 comienza la secuencia de interrupción. Esta opciónpuede ser seleccionada configurando el bit 5 del Registro interno Option en la direcciónhexadecimal 003916. Usted encontrará durante sus experimentos que hay aplicaciones tantopara interrupciones por niveles o por flancos.

Pins 20-25 proporcionan I/O serie y paralelo hacia y desde el 68HC11.

Pin 26 es etiquetado como VDD. Esto es donde la fuente de energía a +5V DC se conecta.

Pins 27-34 provee como propósito general las I/O paralelo y la característica de un timerinterno.

Las 8 líneas superiores del bus de direcciones (A8 - A15) se generan vía los pins 35 - 42. Lalínea de dirección A15, se da en el pin 35, A14 en el pin 36, y así sucesivamente, finalizandocon la línea de dirección A8 en el pin 42. Recuerde que las 8 líneas bajas del bus de datos (A0 -A7) son multiplexadas con el bus de datos sobre los pines 9-16, respectivamente.

Pins 43 - 50 proporcionan acceso a un convertidor analógico a digital interno. Pueden aplicarseocho señales analógicas separadas a esta línea para su conversión interna a un valor digital de8-bits.

Finalmente, las líneas VRL y VRH en los pins 51 y 52, respectivamente, son usadas para aplicarun voltaje de la referencia externo para el uso del convertidor analógico-a-digital interno.

Tiempo de instrucción

Antes de continuar, discutiremos la relación de temporización entre las diversas señales del busy de control. Esta discusión inicia con lo más básico en una relación de temporizando: latemporización por una sola instrucción.

Page 34: dl3155m24hc11_teoria

DL3155M24HC11

33

Para ilustrar esto, se describirán los eventos significativos realizados durante labúsqueda(fetch) y ejecución de la instrucción LDAA #(inmediato), que es una instrucción de 2-bytes. El primer byte es el código de instrucción (8616). El segundo byte es el número que serácargado al acumulador A. Esta instrucción requiere dos ciclos MPU. Durante el primer ciclo, elcódigo de instrucción es buscado y decodificado. Durante el segundo ciclo, el operando esrecuperado de la memoria y colocado al acumulador A.

Los eventos correspondientes se ilustran en Figura 2-7. Note que los eventos ocurren en elflanco del pulso de reloj E. Asuma entonces que en la prioridad al tiempo 1 el contador delprograma contiene la dirección de la instrucción LDAA #.

Fig. 2-7Temporización de la instrucción LDAA#

Al tiempo 1, la dirección es transferida desde el contador de programa al bus de dirección através del registro dirección de memoria. Note que esto ocurre en el filo de caída de la señal E.Las líneas AS y R/W no están en lógica 1, y deben cambiar a ésta lógica. Un estado lógico 1en AS indica que una dirección está siendo colocada en el bus de direcciones. El estado lógico1 en R/W indica a que el MPU desea leer el byte en la dirección indicada.

Al tiempo 2, es el borde de subida del reloj E. En este momento, el contador de programa seráincrementado en uno, a la dirección del siguiente byte en memoria. Sin embargo, este nocambiará la dirección sobre el bus de dirección. Recuerde que la dirección actual esconservada dentro del registro dirección de memoria. Así, la dirección de salida aun esta en elprimer byte de la instrucción LDAA #.

Los eventos que ocurren durante el reloj E, comienzan desde dentro del propio MPU. Además,la señal de reloj E es vista por los circuitos periféricos tal y como el MPU. Así, la RAM, ROM,etc., son controlados por el reloj E.

El filo de elevación, del reloj E en el tiempo 2, también forza a la memoria a colocar el datodesde la dirección indicada hacia el bus de datos. Recuerde que este es el código de operaciónpara la instrucción LDAA #, o 8616. Observe que la dirección ha tenido estabilidad desde eltiempo 1 al tiempo 2.

Al tiempo 3 en el borde de caída de la señal, el MPU acepta el byte desde el bus de datos. Elbus de datos tiene estabilidad de tiempo 2 a tiempo 3. El MPU transfiere este byte (8616) alregistro instrucción. Allí, se decodifica e interpreta como el código de operación LDAA #. Esto le

1.09Microsegundo

s

1.09Microsegundo

s

Ciclo del MPU(FETCH,

Búsqueda)

Ciclo del MPU(EJECUCIÓN)

Page 35: dl3155m24hc11_teoria

DL3155M24HC11

34

dice al MPU que el próximo byte en memoria, es el operando que será cargado al acumuladorA.

Esto completa el primer ciclo del MPU. Durante este ciclo, el código de operación fuesimplemente leído desde la memoria y decodificado. Esto corresponde a la fase de búsquedapara nuestro MPU. Observe que un ciclo MPU corresponde a un ciclo del reloj. Ahora veamoslo que ocurre durante el segundo ciclo, o fase de ejecución de la instrucción.

Al tiempo 3, la dirección del operando también es transferido desde el contador de programa albus de direcciones. Al tiempo 4, el contador de programa se incrementa en uno en anticipaciónde la siguiente fase de búsqueda.

Continuando, el borde de elevación del reloj E al tiempo 4, causan que él operando seatransferido desde la memoria al bus de datos. Al tiempo 5, él operando es conservado dentrodel MPU donde este es transferido al acumulador A. Esto completa el segundo ciclo MPU y lafase de ejecución de la instrucción. El tiempo 5 también representa el inicio de fase debúsqueda de la próxima instrucción. La ejecución de la instrucción LDAA # requirió dos ciclosMPU, o dos ciclos del reloj. Asumiendo que el reloj es de 920 kHz, se requiereaproximadamente 2.18 microsegundos para ejecutar esta instrucción (1.09 por cada byte).

Temporizado de un segmento del programa

Ahora que usted está familiarizado con la temporización de una sola instrucción, podráentender el proceso para la ejecución de un programa muestra, donde se agrupan diversasinstrucciones.Podrá estudiar las relaciones de temporización entre las señales del bus, señales de reloj, lalínea R/W, etc.,

Nuestro segmento de programa muestra se ve en la Figura 2-8. Usando el modo dedireccionamiento inmediato, se carga el 0716 dentro del acumulador A carga y suma 2116. Elresultado se guarda entonces en localidad 000116. Note que la primera instrucción reside en ladirección 001016.

DIRECCIONHEX.

CONTENIDOHEX.

CONTENIDO HEX/.MNEMONICO

COMENTARIOS

0010 860011 07

LDAA #07

Carga el acumulador A con el dato inmediato #07

0012 8B0013 21

ADDA #21

Suma al acumulador A, el dato inmediato # 21

0014 970015 01

STAA01 Almacena el resultado en esta dirección

0016 …. … Siguiente instrucción

Fig. 2-8Segmento de un programa muestra

La figura 2-9 ilustra la relación entre temporizaciones. El pulso de reloj E se muestra en la partesuperior del diagrama. La información que aparece sobre los buses y la línea R/W para cadaperiodo del reloj se muestra en la parte de abajo. Este segmento de programa requiere ocho

Page 36: dl3155m24hc11_teoria

DL3155M24HC11

35

ciclos de reloj, o ciclos MPU. Éstos están enumerados del uno al ocho. Veamos lo que ocurredurante cada uno de estos ciclos.

Fig. 2-9Temporización del segmento del programa muestra.

Ciclo 1. Durante el primer ciclo, la dirección de la instrucción LDAA # (001016) es colocada en elbus de direcciones. Como resultado, el código de operación 86, es leído desde esa dirección ybuscado por el MPU. Debido a que fue una operación de lectura, la línea R/W está en suestado lógico 1. El MPU decodifica el código de operación y reconoce que éste es unainstrucción LDAA #. Por consiguiente, sabe que el próximo byte en memoria es él operando queserá cargado en el acumulador. Durante este ciclo, el contador del programa se incrementó a001116, para que ahora apunte al operando.

Ciclo 2. Ésta es la fase de la ejecución de la instrucción LDAA #. La dirección del código deloperando (001116) es colocada sobre el bus de direcciones. El código de operación (0716) esleído afuera, sobre el bus de datos y colocado en el acumulador A. En el proceso, el contadorde programa se incrementa a 001216. Esto completa la fase de ejecución de la primerainstrucción.

Ciclo 3. Esta es la fase de búsqueda de la siguiente instrucción. La dirección 0012, es colocadasobre el bus de direcciones. El código de operación a esa dirección se lee fuera y se coloca enel bus de datos. El MPU recoge el código de operación, lo decodifica, y descubre que es lainstrucción ADDA #. En el proceso, el contador del programa se incrementa a 001316.Ciclo 4. Aquí, la dirección 001316 se transfiere al bus de direcciones y la localidad de memoriaseleccionada sé lee. Por tanto, el operando 2116, se pone sobre el bus de datos. El MPU recogeal operando y lo agrega a los contenidos del acumulador. La suma, 2816, se retiene en elacumulador A. El contador del programa es incrementado a 001416.

Ciclo 5. Fase de búsqueda para la tercer instrucción. La dirección 001416 se sitúa sobre el busde direcciones. El código de operación para STAA se lee y decodifica. El MPU reconoce que esnecesario el modo de direccionamiento directo. Así, interpretará el siguiente byte en memoriacomo la dirección donde la suma es acumulada. El contador del programa se incrementa a0015 16.

Ciclo 6. La dirección 001516 se coloca sobre el bus de dirección. Observe que esta localidad esla dirección donde la suma es almacenada. Así, 01 se lee fuera, hacia el bus de datos donde esrecogido por el MPU. El MPU reconoció que el direccionamiento directo es el indicado y asumeque la dirección donde la suma se guarda es 000116. Esta dirección se guarda en el MPU. Elcontador del programa se incrementa a 001616.

1.09Microsegundos

Bus deDirecciones

Bus deDatosLíneaR/W

Page 37: dl3155m24hc11_teoria

DL3155M24HC11

36

Ciclo 7. Durante este ciclo, el MPU se prepara para almacenar la suma. Para ello, debetransferir la suma desde el acumulador al registro de datos.

Ciclo 8. El MPU está ahora listo para guardar la suma en memoria. La dirección donde guardarála suma (000116) es colocada sobre el bus de dirección. El dato a almacenar (2816) es situadosobre el bus de datos. La línea de R/W se cambia a estado bajo, indicando que ésta, es unaoperación de almacenaje, y la suma (2816) se guarda en la localidad de memoria 000116.

Por supuesto, la computadora no se pausa aquí. Durante el próximo ciclo, la próximainstrucción es buscada y decodificada. Sin embargo, los ocho ciclos de la máquina ilustrados enFigura 2-9 dan la idea general. Posteriormente verá, que las relaciones de temporización, aquímostradas, son importantes en las interfaces que realizará el MPU con memorias y circuitosI/O.

Page 38: dl3155m24hc11_teoria

DL3155M24HC11

37

2.3 MODELO DE PROGRAMACIÓN DEL MC68HC11

El 68HC11 es mucho más compleja que nuestra MPU hipotética. Consecuente-mente, unmodelo de programación del 68HC11 supone un buen comienzo. Este se muestra en la Figura2-10.

7 A 0 7 B 0

15 D 0Acumulador de 8 bit, A y B, o elacumulador doble D

15 IX 0 Registro Indexado X

15 IY 0 Registro Indexado Y

15 SP 0 Apuntador de Pila (Stack Pointer)

15 PC 0 Contador de Programa (ProgramCounter)

7 0

S X H I N Z V C Registro de código de condición.

Acarreo o préstamo de MSB

Sobreflujo

Zero

Negativo

Mascara de interrupción- IMedio acarreo o semiacarreo (del bit

3)

Mascara de interrupción X

Paro deshabilitado

Fig. 2-10. Modelo de programación del MPU 68AC11

Usted notará inmediatamente que el 68HC11 tiene algunos registros adicionales. Sin embargo,sólo dos de ellos, el registro índice y el apuntador de pila son nuevos para usted.Veamos las diferencias más significativas entre MPU y nuestro modelo hipotético.

Page 39: dl3155m24hc11_teoria

DL3155M24HC11

38

Dos Acumuladores. 68HC11 tiene dos acumuladores en lugar de sólo uno. Son llamadosacumulador A (ACCA) y acumulador B (ACCB). Cada uno de ellos cuenta con su propio grupode instrucciones asociadas. Los nombres y mnemónicos de las instrucciones especifican cualacumulador será usado. Así, hay instrucciones como:

Load Accumulator A, LDAA. (Cargar Acumulador A) Load Accumulator B, LDAB. (Cargar Acumulador B) Store Accumulator A, STAA. (Almacenar Acumulador A) Store Accumulator B, STAB. (Almacenar Acumulador B)

Note que se agrega al nombre y al mnemónico para indicar que acumulador va a usarse.Por experiencia, usted puede visualizar el valor del segundo acumulador. Por ejemplo,considere un programa en el cual, MPU cuenta el número de veces que ocurre una operación.Anteriormente, almacenamos el contenido actual del acumulador, cargamos la cuenta en elacumulador; incrementamos la cuenta, almacenamos la cuenta y volvemos a cargar el numerooriginal. Con un segundo acumulador, nada de eso es necesario. Sencillamente mantenemos lacuenta en el acumulador B mientras trabajamos con el acumulador A. De hecho, podemosefectuar cualquier operación aritmética o lógica de dos números distintos sin tener quemoverlos hacia delante o atrás en la memoria. Como en otros miembros de la familia 6800, losacumuladores A y B pueden ser concatenados en un solo acumulador, “D” de 16 bits, parabytes dobles.

Contador de Programa de 16 Bits. El contador de programa en el 68HC11 tiene 16 bits en vezde 8. Así, se pueden especificar 65,536 direcciones distintas. Esto significa que unamicrocomputadora basada en el 68HC11 puede tener hasta 65,536 bytes de memoria.Afortunadamente, nosotros podemos usar como mínimo o máximo el Byte 216, muchasaplicaciones requieren menos memoria de este límite máximo. Ya que el contador de programatiene 16 bits, el bus de direcciones también debe ser de 16 bits. Contraste esto con el bus dedirecciones de 8 bits de nuestra máquina hipotética.

Usted puede sorprenderse de cómo especificamos una dirección de 16 bits con un byte. Larespuesta obvia es que son necesarios dos bytes de 8 bits. Recuerde que en el modo dedireccionamiento directo, la dirección fue especificada por un byte. El microcontrolador 68HC11mantiene ese modo de direccionamiento. Sin embargo, ya que una dirección de 8 bits sólopuede especificar 256 direcciones, el 68HC11 puede usar este modo sólo si el operando sehalla en los primeros 256 bytes de memoria. Para alcanzar direcciones altas, se debe usar unnuevo modo de direccionamiento llamado direccionamiento extendido. En el modo dedireccionamiento extendido, se usan dos bytes para representar cada dirección. Este modo dedireccionamiento será discutido con más detalle después. Por ahora, tenga en mente que hay65,536 posibles direcciones. La dirección más baja es la 000016 y la mayor es FFFF16. Usandodireccionamiento extendido, tendremos acceso a cualquier localidad de memoria, pero serequiere una dirección de 2 bytes.

Registros de Código de Condición. El 68HC11 tiene ocho bits de código de condición obanderas. Cada una de ellas puede ser referida por la posición del bit (0-7) o por su nombre enel registro de código de condición m, mostrado en la Figura 2-10. Cuatro de ellos son muysimilares, casi idénticos a los discutidos anteriormente. Estos incluyen los códigos de condiciónnegativo (N), Cero (Z), sobreflujo (V), y acarreo (C). En este momento surge una diferencia, porhaber dos acumuladores en el 68HC11. Así, la bandera de acarreo se pone a uno cuando hay

Page 40: dl3155m24hc11_teoria

DL3155M24HC11

39

un acarreo de cualquier acumulador. También, un sobreflujo en cualquier acumulador pondrá auno la bandera V.

También se muestran cuatro nuevos códigos de condición en la Figura 2-10. La máscara I deinterrupción se usa para deshabilitar (enmascarar) toda interrupción enmascarable. Cualquierade ellas puede ser puesta a uno por hardware o a través de instrucción de programa. Lamáscara X de interrupción es similar a la máscara I, sin embargo, es activada sólo porhardware (Reset o XIRQ) y es borrado sólo por instrucción de programa (TAP o RTI). El uso deestas será discutido después cuando estudie el uso de interrupciones. Ocupando la posición deun bit entre las máscaras de interrupción I y X está la bandera de medio acarreo ó semiacarreo(H). la bandera H es puesta a uno cuando hay un acarreo del bit 3 (al 4) del acumulador. LaMPU usa esta bandera para determinar cuando se implementa una instrucción de ajustedecimal. Finalmente, el último bit de código de condición es: deshabilita STOP o PARO, subandera es S. Esta es puesta a uno bajo control del programa para deshabilitar la instrucciónSTOP. Cuando STOP es deshabilitado de esta manera, su ejecución del programa es tratadacomo una “no-operación” instrucción NOP. NOP será discutida con más detalle posteriormente.Puesto que las últimas dos banderas de código de condición (X y S) generalmente no seafectan por muchas de las instrucciones que se discutirán, consideraremos sólo los efectossobre las primeras seis banderas de código de condición.

Registros Indice. Los registros índice IX e IY son registros de 16 bits de propósito especialque incrementan grandemente la potencia del microprocesador. Estos registros permiten unmodo de direccionamiento muy poderoso llamado direccionamiento indexado.Analizaremos dicho modo de direccionamiento en esta unidad. Por ahora, considere a losregistros índice como otros registros de trabajo. El hecho que puedan retener dos bytes enlugar de uno posibilita su buen uso. La MPU tiene instrucciones que permiten que los registrosíndice sean cargados desde dos bytes de memoria contiguos. Otra instrucción nos permitealmacenar el contenido de los registros índice en dos localidades de memoria adyacentes. Estoposibilita mover datos en grupos de 2 bytes. También, los registros índice puedenincrementarse o decrementarse. Con esto mantenemos cuentas de 16 bits.

La arquitectura de registro índice dual del 68HC11 significa una mejora en diseño sobreanteriores miembros de la familia 6800. Aunque ambos registros IX e IY pueden ser usadossimilarmente para direccionamiento indexado, conteo, o almacenamiento temporal de datos,ciertas instrucciones, particularmente aquellas para el registro IY, requieren un byte extra, o unprebyte, de código máquina. La necesidad del prebyte surge como resultado del conjuntoexpandido de instrucciones del 68HC11 al agregar nuevas instrucciones no usadaspreviamente en la familia 6800.

La agregar el prebyte a una instrucción también provoca que una instrucción de dos bytesrequiera un ciclo extra de tiempo de ejecución (comparado con un opcode de un byte). Más quecomo un byte extra del opcode (con tiempo de ejecución extra de un ciclo de máquina), unainstrucción con prebyte se programa y ejecuta como cualquier instrucción ordinaria (sinprebyte). Los valores típicos del prebyte en el conjunto de instrucciones del 68HC11 son 1816 y1A16. Los notará cuando estudie el conjunto de instrucciones del MC68HC11 con detalle, unpoco más adelante. Tenga en mente que, cuando se programan instrucciones que requierenprebytes, el opcode con prebyte apropiado se programa en una localidad de memoria (M), y elopcode de la instrucción es programado en la siguiente localidad (M+1), como si se tratara dedos bytes de datos.

Page 41: dl3155m24hc11_teoria

DL3155M24HC11

40

2.4 DIAGRAMA A BLOQUES DE MC68HC11

Ahora que ha visto el modelo de programación de la MPU 68HC11, de un vistazo al diagramade bloques. Un diagrama simplificado se muestra en la Figura 2-11.

Se han omitido algunas rutas de datos, muchas líneas de control, y un registro dealmacenamiento temporal a favor de los registros y rutas de datos más importantes.

Fig. 2-11. Diagrama a bloques simplificado del MPU

Page 42: dl3155m24hc11_teoria

DL3155M24HC11

41

Page 43: dl3155m24hc11_teoria

DL3155M24HC11

42

UNIDAD 3

CONJUNTO DE INSTRUCCIONES

Page 44: dl3155m24hc11_teoria

DL3155M24HC11

43

CONTENIDO

3.1 CONJUNTO DE INSTRUCCIONES DE MC68HC11

3.2 MODOS DE DIRECCIONAMIENTO

3.3 EXPLICACION DE INSTRUCCIONES

Page 45: dl3155m24hc11_teoria

DL3155M24HC11

44

3.1 CONJUNTO DE INSTRUCCIONES DEL MC68HC11

Esas instrucciones pueden ser agrupadas en siete categorías generales. Aunque algunas deellas se superponen, la clasificación general de las instrucciones es: aritméticas, manejo dedatos, prueba de datos lógicos, registro índice y apuntador de pila, salto y bifurcación y códigode condición. En esta unidad discutiremos muchas de esas instrucciones en detalle En esta sección no nos interesaremos en los modos de direccionamiento. Por lo tanto, nomanejaremos opcodes. Los varios modos de direccionamiento y los opcodes los veremos másadelante. Por ahora identificaremos las instrucciones por sus nombres, mnemónicos yoperaciones. Verá lo que hace cada instrucción y como son afectados los primeros seisregistros de código de condición.

Instrucciones Aritméticas

La Figura 3-1 muestra las instrucciones aritméticas representativas de la MPU 68HC11. Elnombre de cada instrucción se muestra a la izquierda. La siguiente columna contiene elmnemónico. La columna central da una explicación abreviada de lo que hace la instrucción. Lacolumna a la derecha muestra como se afectan los primeros seis registros de código decondición.

* Después de usar ABA, ADC, y ADD en operaciones aritméticas BCD; cada 8 bytes sonconsiderados como dos números BCD de 4 bit´s. DAA suma 0110 a la mitad del byte bajo, si elnúmero menos significativo es >1001, o si la instrucción previa causo un semiacarreo. Suma0110 a la mitad del byte alto si el número más significativo >1001 o si la instrucción anteriorcauso un acarreo. También suma 0110 al medio byte superior, si el número menos significativo>1001 y el número más significativo es = 9.

* NOTA: Los bits 6 y 7, generalmente no se ven afectados por estas instrucciones.

Page 46: dl3155m24hc11_teoria

DL3155M24HC11

45

Fig. 3-1 Instrucciones Aritméticas

Para asegurar que la idea es clara, veamos la primera instrucción en detalle. Esta es lainstrucción de suma. Ya que el 68HC11 tiene dos acumuladores, hay dos instrucciones desuma. Sus mnemónicos son ADDA y ADDB. La última letra indica el acumulador que se usa. Larepresentación abreviada de la operación es A+MàA. La nota en la parte de arriba de lacolumna, register labels indica que las letras se refieren al contenido de los registros. Así, Asignifica el contenido del acumulador y M significa el contenido de la localidad de memoriaafectada. El símbolo à significa “transfiere a”. Por lo tanto, A+MàA significa “suma elcontenido del acumulador A al contenido de la localidad de memoria afectada y transfiere lasuma al acumulador A”. Para ver como son afectadas las banderas de los códigos de condición, simplemente vea a laderecha el código de condición deseado. Generalmente, los códigos pueden ser activadossegún la operación ó no ser probados o afectados. Si no es afectado el código, se marca con elsímbolo (•). Por ejemplo, ninguna de las instrucciones aritméticas afectan la bandera I. Muchasde las instrucciones aritméticas prueban los códigos de condición y los ponen a uno si existe lacondición. Por ejemplo, si el resultado de una operación aritmética es cero, la bandera Z espuesta a uno. Si esta condición no existe, la bandera es limpiada. El símbolo (×) significa“prueba y pon a uno si es verdad; de otra manera, limpia”. Ocasionalmente se necesita unanota para describir alguna situación inusual del código de condición. Esto se representa con unnúmero dentro de un círculo. Las notas se dan abajo del dibujo. Las instrucciones ADDA y ADDB se comprenden fácilmente. La instrucción ABA suma elcontenido del acumulador A al contenido del acumulador B. Y el resultado lo almacena en elacumulador A. Las instrucciones de suma con acarreo son idénticas a las discutidas anteriormente para lamáquina hipotética. Note que el bit de acarreo se integra a la suma. Ya que en el MPU 68HC11 se usa aritmética de complemento a dos, existen instrucciones quenos permiten obtener el complemento a dos de un número. La instrucción de negación, resta elcontenido del registro afectado de 0016. Esto es lo mismo que hacer el complemento a dos delnúmero. El registro afectado puede ser cualquier localidad de memoria (M) o cualquieracumulador (A o B). Así, hay tres instrucciones de negación distintas. Tenga en mente queNEG significa “toma el complemento a dos de la localidad de memoria afectada”; NEGA “tomael complemento a dos del acumulador A”; etc. Note que la instrucción NEG nos permite operar sobre un byte en memoria sin buscar primeroel operando. Anteriormente, hemos cargado el operando, llevado a cabo la operación yalmacenado entonces el nuevo operando. Sin embargo, el 68HC11 nos permite llevar a cabo

Page 47: dl3155m24hc11_teoria

DL3155M24HC11

46

ciertas operaciones sobre el operando, sin primero buscarlo en memoria. Algunos ejemplos deesto serán mostrados según progresemos con el conjunto de instrucciones. La instrucción de ajuste decimal efectúa exactamente lo mismo que nuestra máquina hipotética.La nota inmediatamente debajo de la tabla describe su operación. Debe apuntarse que dichainstrucción sólo trabaja con el acumulador A. Las instrucciones de resta y resta con acarreo se explican por sí mismas. El MPU 68HC11 tieneuna instrucción adicional de resta. La instrucción SBA resta el contenido del acumulador B delcontenido del acumulador A. La diferencia resultante se coloca en el acumulador A.

Instrucciones de Manejo de Datos

La Figura 3-2 contiene un listado de las instrucciones más importantes de manejo de datos,usadas por la MPU 68HC11. Este es el grupo más grande de instrucciones del 68HC11. Las instrucciones para limpiar, nos permiten borrar el contenido de una localidad de memoria ode cualquier acumulador. Anteriormente hemos limpiado bytes de memoria limpiando primero elacumulador y almacenando luego el dato 0016 resultante en la localidad de memoria apropiada.Sin embargo, la instrucción CLR nos permite despejar una localidad de memoria con una solainstrucción. Nótese que aparecen algunas entradas nuevas en la columna de registros decódigos de condición. R significa que el código de condición está siempre a cero. S significaque el código está siempre a uno. La instrucción de decremento nos permite restar 1 de la localidad de memoria o de cualquieracumulador. La instrucción DEC es especialmente valiosa ya que decrementa un byte enmemoria con una sola instrucción. Previamente hemos cargado el byte, lo hemosdecrementado y lo entonces es almacenado atrás en memoria. Las instrucciones de incremento son similares excepto porque nos permiten sumar uno a unalocalidad de memoria o a alguno de los acumuladores. Note que la instrucción INC nos permitemantener una cuenta en memoria sin tener que cargarla, incrementarla y volverla a almacenar. Las instrucciones de carga al acumulador son sencillas de entender y fáciles de usar. Note queel acumulador puede ser cargado desde la memoria.

Page 48: dl3155m24hc11_teoria

DL3155M24HC11

47

Fig. 3-2. Instrucciones de manejo de datos

Las instrucciones de rotación a la izquierda nos permiten desplazar el contenido del acumuladoro de una localidad de memoria sin perder bits del dato. Considere a la instrucción ROLA comoun ejemplo. Cuando se ejecuta esta instrucción, el acumulador A y el bit de acarreo forman unregistro circular de 9 bits. Esto es, forman un lazo cerrado como se muestra en la Figura 3-3A.Cuando se ejecuta ROLA, el dato es rotado en sentido de las manecillas del reloj. El MSB de Ase desplaza al registro de acarreo. Simultáneamente, el contenido de A es desplazado a laizquierda. Note que el bit de acarreo no se pierde, sino que es desplazado al LSB delacumulador.

Page 49: dl3155m24hc11_teoria

DL3155M24HC11

48

A. antes que se ejecute la instrucción ROLA

B. después de ejecutar ROLA

Fig. 3-3. Ejecución de la instrucción ROLA

Aunque la utilidad de esta instrucción no es tan clara, es una herramienta valiosa. Por ejemplo,podría ser usada para determinar la paridad. Rotando repetidamente a la izquierda y probandola bandera C, puede determinar el número de 1´s en el byte. Una vez que lo conoce, puedegenerar fácilmente el bit de paridad apropiado. La instrucción ROL le permite rotar un byte de memoria a la izquierda mientras está enmemoria. ROLB posibilita rotar el acumulador B a la izquierda. En cada caso se usa el registroC como noveno bit. Las instrucciones de rotación a la derecha son iguales a las de la izquierda, lo que cambia es ladirección de rotación. La Figura 3-4 ilustra la ejecución de la instrucción RORA. Esta instruccióntambién es valiosa. Suponga, por ejemplo, que se desea saber si el número en el acumuladores par o impar. Esto se determina con el LSB del número. Si LSB = 1, el número es impar; siLSB = 0, el número es par. Una manera de determinar esto es, rotar el número a la derecha demanera que el LSB quede en el registro C. Podemos probar el registro C para ver si está a unoo a cero. Notese que el número debe ser restaurado a su forma original mediante la instrucciónROLA.

A. Antes de ejecutar RORA

B. Después de ejecutar RORA

Fig. 3-4. Ejecutando la instrucción RORA

La instrucción aritmética de rotación a la izquierda fué discutida anteriormente para la MPUhipotética. La instrucción ASLA se ejecuta exactamente como se describió en la unidad previa.Sin embargo, note que la MPU 68HC11 también tiene la instrucción ASLB que efectúa la mismaoperación con el acumulador B. También tiene una instrucción ASL que permite efectuar estaoperación sobre un byte en memoria. La Figura 3-5 ilustra la ejecución de esta instrucción.

Page 50: dl3155m24hc11_teoria

DL3155M24HC11

49

A. Antes de ejecutar ASL

B. Después de ejecutar ASL

Fig. 3-5. Ejecutando la instrucción ASL

Mientras sólo haya un tipo de instrucción de rotación a la izquierda, hay dos tipos deinstrucciones de rotación a la derecha. Discutamos primero las instrucciones de rotación a laderecha. Cuando se ejecuta una instrucción aritmética de rotación a la derecha, el número en el registroafectado es desplazado una posición a la derecha. El LSB pasa al registro C. B1 se desplaza aB0, etc. B7 se desplaza a B6. Sin embargo, B7 permanece sin cambio. La Figura 3-6 ilustra laejecución de la instrucción ASRB. Note que también se listan las instrucciones ASRA y ASR enla Figura 3-2. Estas efectúan el mismo tipo de operación de desplazamiento, pero sobre elacumulador A y la localidad de memoria seleccionada, respectivamente.

A. Antes de ejecutar ASRB

B. Después de ejecutar ASRB

Fig. 3-6. Ejecutando la instrucción ASRB

Las instrucciones lógicas de rotación a la derecha son diferentes en que no retienen el bit designo. Cuando se ejecuta una rotación lógica a la derecha, El contenido del registro afectado esdesplazado a la derecha. El LSB pasa al registro de acarreo. MSB es llenado con un cero. Porejemplo, la instrucción LSR se ilustra en la Figura 3-7. Mientras esta instrucción desplazalocalidades de memoria seleccionadas, LSRA y LSRB pueden ser usadas para efectuaroperaciones similares sobre los acumuladores A y B, respectivamente.

Page 51: dl3155m24hc11_teoria

DL3155M24HC11

50

A. Antes de ejecutar LSR

B. Después de ejecutar LSR

Fig. 3-7. Ejecutando la instrucción LSR

Volviendo a referirnos a la Figura 3-2, las instrucciones de almacenamiento del acumulador seexplican por sí solas. Las instrucciones finales de manejo de datos son las instrucciones de transferencia delacumulador. TAB copia el contenido del acumulador A en el acumulador B. Después que estainstrucción se ejecuta, el número original del acumulador será el mismo en ambosacumuladores. TBA hace lo opuesto. Copia el contenido del acumulador B en el acumulador A.Después que TBA se ejecuta, el número original del acumulador B será el mismo en ambosacumuladores. Instrucciones Lógicas

Las instrucciones lógicas en la MPU 68HC11 son similares a las del MPU hipotético. La Figura3-8 muestra las instrucciones lógicas del 68HC11.

Fig. 3-8. Instrucciones Lógicas.

Hay una instrucción AND para cada acumulador. Se efectúa la operación lógica AND bit a bitentre los contenidos del acumulador especificado y la localidad de memoria seleccionada. Elresultado es colocado en el acumulador. Esto es idéntico a la instrucción AND de la máquinahipotética. La instrucción de complemento le permite hacer el complemento a uno del número en elregistro afectado. COM permite complementar un byte en memoria.

Page 52: dl3155m24hc11_teoria

DL3155M24HC11

51

COMA y COMB le permiten complementar el contenido de los acumuladores A y B,respectivamente. En cada caso, todos los 1´s son cambiados por 0´s y todos los 0´s soncambiados por 1´s. Las instrucciones de OR exclusivo trabajan similar al MPU hipotético. La operación ORexclusivo se lleva a cabo bit a bit entre los contenidos del acumulador especificado y lalocalidad de memoria seleccionada. El resultado es realmacenado en el acumuladorespecificado. La instrucción OR inclusivo es muy similar. Instrucciones de Prueba de Datos

Estas son un poderoso grupo de instrucciones que nos permiten comparar operandos endiferentes formas. En previas unidades, usted adquirió experiencia comparando operandos. Elmétodo más frecuentemente usado, es el de restar un operando de otro y comparar el resultadocon cero o negativo. En muchos casos, el resultado de la resta no fué muy importante. Sólorequeríamos saber si el resultado fue cero o menos. Las instrucciones de prueba de datos nospermiten hacer diferentes pruebas sin producir resultados numéricos no deseados. Esasinstrucciones son mostradas en la Figura 3-9.

Fig. 3-9. Instrucciones de prueba de datos

Las instrucciones de prueba de bit son muy similares a las instrucciones AND. En ambos casos,la operación AND se efectúa entre el contenido del acumulador especificado y el contenido dela localidad de memoria seleccionada. La diferencia es que con la instrucción de prueba de bitno se produce algún producto lógico. Ninguno de los contenidos del acumulador ni de lamemoria es alterado. Sin embargo, los registros de código de condición son afectados como loharía una operación AND. Considere la instrucción BITA. Cuando es ejecutada, se hace laoperación AND con M. Si el resultado es 0016, el registro Z se pone a uno. De otra manera, elregistro Z es limpiado. Si el MSB del resultado es 1, la bandera N se pone a uno. Sin embargo,los contenidos del acumulador y de la memoria no son afectados. De la misma manera, las instrucciones de comparación son similares a las instrucciones deresta excepto que la diferencia resultante es ignorada. Por ejemplo, cuando se ejecuta lainstrucción CMPA, el contenido de la localidad de memoria seleccionada es restado delcontenido del acumulador A. Los códigos de condición son afectados sólo si se hubiera

Page 53: dl3155m24hc11_teoria

DL3155M24HC11

52

producido una diferencia. Sin embargo, los contenidos originales de los acumuladores no sonafectados. La instrucción de comparación de acumuladores (CBA) trabaja de la misma manera. Loscódigos de condición son puestos a uno, como si el contenido de B fuese restado del contenidode A. Sin embargo, los contenidos de los acumuladores no son afectados. Finalmente, la instrucción de prueba por cero o menos le permite probar un número en unacumulador o la memoria para ver si es negativo o cero. Cuando esta instrucción es ejecutada,la MPU revisa el número en cuestión y pone a uno las banderas N y Z, consecuentemente. Elnúmero mismo no es cambiado.

Instrucciones del Registro Indice y del Apuntador de Pila. Los registros índice y apuntador de datos son registros de 16 bits. La Figura 3-10 muestra onceinstrucciones que nos permiten controlar la operación de esos registros. A causa de su formatode 16 bits, las instrucciones de carga, almacenamiento y comparación son ligeramentediferentes a las discutidas previamente. También, puesto que el registro índice Y (IY) es muysimilar al registro índice X (IX), sólo discutiremos las instrucciones para IX. Al aprenderlas,recuerde que hay instrucciones equivalentes para el registro índice Y.

Fig. 3-10. Instrucciones de registro Indice y del apuntador de la pila (stack pointer)

La instrucción de comparación del registro índice (CPX) nos permite comparar el número de 16bits del registro índice con otros dos bytes consecutivos de memoria. Recuerde que el registroíndice X mantendrá dos bytes. El byte alto se identifica como XH, mientras el byte bajo esllamado XL. Cuando ejecutamos la instrucción CPX, XH es comparado con el byte de lalocalidad de memoria especificada, M. Además, XL también es comparado con el byteconsecutivo a M, es decir M+1. La comparación se hace como si restáramos M y M+1 de XH yXL, excepto que no se produce diferencia numérica. Ni X ni M cambia de manera alguna. Sinembargo, los códigos de condición N, Z, y V son afectados como se muestra en la Figura 3-10.

Page 54: dl3155m24hc11_teoria

DL3155M24HC11

53

Generalmente, el código Z es más interesante para nosotros pues nos dice cuando hay o no,igualdad entre el registro índice y los dos bytes de memoria. Las siguientes cuatro instrucciones se explican por sí mismas. Nos permiten incrementar ydecrementar ya sea el registro índice o el apuntador de pila. Esas instrucciones posibilitanmantener dos cuentas de 16 bit simultáneamente. Sin embargo, el valor real de esas instrucciones y sus registros asociados se discutirá después. Las instrucciones de carga y almacenamiento para los registros de 16 bits se muestran en laFigura 3-10. Ya que se trata de registros de dos bytes, las instrucciones LDX y LDS debencargar dos bytes de la memoria. En el caso del registro índice, el byte de memoria especificado(M), es cargado en la mitad superior del registro índice (XH). Un instante después, el siguientebyte en memoria (M+1) es cargado automáticamente en la mitad baja del registro índice (XL).Así, la operación puede ser descrita como sigue:

M àà XH, (M+1) àà XL. Ya que el apuntador de pila también es un registro de 16 bits, la instrucción de carga delapuntador de pila (LDS) trabaja del mismo modo. Su operación puede ser descrita de lasiguiente manera: M à SPH; (M+1) à SPL. Aquí, SPH se refiere a la mitad alta del apuntador depila y SPL se refiere a la mitad baja. Cuando el contenido de los registros de 16 bits va a ser almacenado, la operación se invierte.Por ejemplo, la instrucción STX almacena XH en M y XL en M+1. Una instrucción similar, STS,nos permite almacenar el contenido del apuntador de pila de la misma manera. Las dos instrucciones finales de este grupo nos permiten transferir números entre esos dosregistros de 16 bits. La instrucción TXS carga el apuntador de pila con el contenido del registroíndice menos uno. La instrucción TSX carga el registro índice con el contenido del apuntadorde pila más uno. Una discusión más detallada de esos dos importantes registros y susinstrucciones asociadas se hará en la siguiente unidad.

Page 55: dl3155m24hc11_teoria

DL3155M24HC11

54

Instrucciones de Bifurcación

Las instrucciones de bifurcación son mostradas en la Figura 3-11. Se incluyen dos instruccionesadicionales que afectan al contador de programa.

Fig. 3-11. Instrucciones de salto y bifurcación.

Nueve de esas instrucciones fueron discutidas en la unidad anterior. Esas son: Branch always,bifurcar siempre (BRA); Branch if carry clear, Bifurca si está limpio el Acarreo (BCC); Branch iscarry set, Bifurca si está a uno el acarreo (BCS); Branch if equal Zero, Bifurca si es igual a cero(BEQ); Branch if not equal Zero Bifurca si no es igual a cero (BNE); Branch if minus, Bifurca siMenos (BMI); Branch if Plus, Bifurca si es Más (BPL); Branch if overflow clear, Bifurca si elSobreflujo está Limpio (BVC) y Branch if overflow set ,Bifurca si el Sobreflujo es Uno (BVS). Antes de discutir las nuevas instrucciones de bifurcación, he aquí algunos símbolos que seránusados. El símbolo (>) significa “es mayor o igual que”; (>) significa “ es mayor que”; (<)significa “es menor o igual que”; (<) significa “es menor que” y (≠) significa “diferente de”. Ahora considere la instrucción Bifurcar Si es Mayor o Igual (BGE). Esta instrucción se usanormalmente después de una instrucción de resta o comparación. Esto causará una operaciónde bifurcación si el valor en complemento a dos del acumulador es mayor o igual que elcomplemento a dos del operando en memoria. Esta condición se indica por el mismo valor enlas banderas N y V. La MPU determina si esta condición se cumple haciendo el OR exclusivode N y V y examinando el resultado.

Page 56: dl3155m24hc11_teoria

DL3155M24HC11

55

Tres ejemplos sencillos pueden ayudar a ilustrar la operación de esta instrucción. Comencemoscon un número en el acumulador, que es mayor que, el operando en memoria: Número en el Acumulador = 0000 00102

Operando en Memoria = 0000 00012

Cuando el operando es restado, el resultado es 000000012. Con este resultado, N y V sonlimpiados. Note que N y V son iguales y que N ⊕ V = 0. Si la instrucción BGE sigue a laoperación de resta, se implementa la bifurcación. Ahora veamos que pasa cuando el número en el acumulador es igual al operando: Número en el Acumulador = 0000 00102

Operando en Memoria = 0000 00102

Cuando se resta el operando, el resultado es 000000002. Otra vez N y V son limpiados. Así, N yV aún son iguales y N ⊕ V = 0. Otra vez, la instrucción BGE causa que ocurra una bifurcación. Finalmente, note que pasa cuando el número en el acumulador es menor: Número en el Acumulador = 0000 00012

Operando en Memoria = 0000 00102

Cuando el operando se resta, el resultado es 1111 11112. Esta vez N es puesto a uno pero Ves limpiado. Así, N y V no son iguales. Por lo tanto, N ⊕ V = 1. En este caso, la condición deBGE no se cumple y no ocurrirá la bifurcación. La bifurcación ocurre si el valor en complementoa dos del acumulador es mayor o igual que el complemento a dos del operando en memoria. Enseguida, considere la instrucción Bifurca si es Mayor que (BGT). Esta instrucción se usanormalmente después de una operación de resta o comparación. La bifurcación ocurrirá sólo siel complemento a dos del minuendo es mayor que el complemento a dos del sustraendo.Probando con varios ejemplos, como se hizo arriba, encontraremos que las condiciones de labifurcación se cumplen cuando Z = 0 y N = V. La instrucción Branch if Higher, Bifurca si es Mayor (BHI) es similar a la instrucción BGTexcepto que es aplicable a números no signados. BHI se usa normalmente después de unaoperación de resta o comparación. La bifurcación ocurrirá sólo si el minuendo no signado esmayor que el sustraendo no signado. Probando diferentes ejemplos, se puede probar que estoocurre sólo cuando las banderas C y Z son iguales a 0. La instrucción Branch if Less, Bifurca si es Menor o Igual (BLE) le permite comparar númerosen complemento a dos de otra manera. Si se ejecuta inmediatamente después de unaoperación de resta o comparación, la bifurcación ocurrirá sólo si el complemento a dos delminuendo es menor o igual que el complemento a dos del sustraendo. La instrucción Bifurca si es Bajo o el Mismo (BLS) es similar a la instrucción BLE excepto quecompara números no signados. Cuando se ejecuta inmediatamente después de una operación

Page 57: dl3155m24hc11_teoria

DL3155M24HC11

56

de resta o comparación, la bifurcación ocurrirá sólo si el minuendo no signado es menor o igualque el sustraendo no signado. La instrucción Bifurca si es Menor que Cero (BLT) es también similar a la instrucción BLEexcepto que no efectúa comparación de igualdad. Si BLT se ejecuta enseguida de unaoperación de resta o comparación, Habrá bifurcación sólo si el complemento a dos delminuendo es menor que el complemento a dos del sustraendo. Se incluyen dos instrucciones adicionales en la Figura 3-11. Aunque no son instrucciones debifurcación, se agregan aquí por no caber en otra categoría. La instrucción de No Operación (NOP) es una instrucción que simplemente consume unpequeño lapso de tiempo. No cambia el contenido de ningún registro excepto el del contador deprograma. Incrementa el contenido del contador de programa en uno y consume dos ciclosMPU. A pesar de ello, la NOP es una instrucción muy útil. Cuando se escribe un programa,frecuentemente se emplean muchas instrucciones. Una vez que el programa se carga enmemoria, es muy inconveniente remover una sola instrucción. El hueco dejado en memoriapuede ser llenado recorriendo todas las instrucciones siguientes. Sin embargo, una manerarápida es llenar el hueco con una o varias instrucciones NOP. La instrucción STOP es la instrucción de “fin de programa” del 68HC11. En unidades anterioreshemos empleado esta instrucción como PARO, o final de secuencias. Sin embargo, como verádespués en este curso, hay más detalles en la ejecución de una instrucción STOP quesimplemente detener la MPU. Por ahora, no obstante, siga considerando a STOP como lainstrucción para terminar la ejecución de un programa.

Instrucciones del Registro de Código de Condición

La MPU 68HC11 tiene ocho instrucciones que nos permiten tener acceso directo a los códigosde condición. Se listan en la Figura 3-12.

Fig. 3-12. Instrucciones de registro código de condición

Page 58: dl3155m24hc11_teoria

DL3155M24HC11

57

La instrucción Clear carry, Limpiar Acarreo (CLC) pone a cero la bandera C, set carry, FijarAcarreo a Uno (SEC) C=1. De la misma forma, las instrucciones CLV y SEV pueden ser usadaspara limpiar o fijar a uno la bandera de sobreflujo. También, las instrucciones CLI y SEI puedenusarse para limpiar o fijar a uno la bandera de interrupción. Usted notará que no hay instrucciones para limpiar individualmente las banderas N, Z o H. Sinembargo, aún podemos fijar a uno o limpiar esas banderas con la instrucción de TransferAccumulator A, Transferencia del Acumulador A al Processor Status Reguister, Registro deEstado del Procesador (TAP). La Figura 3-13 ilustra la ejecución de dicha instrucción. Elcontenido de los bit 0 al 7 del acumulador A es transferido a los registros de código decondición. Así, esta instrucción nos permite fijar a uno o limpiar todos los códigos de condicióncon sólo una instrucción.

Fig. 3-13 Ejecutando la instrucción TAP

La instrucción final es la instrucción de Transfer Processor Status, Transferencia del Estado delProcesador al Acumulador A (TPA). Durante su ejecución, el contenido de los registros decódigo de condición es transferido a los bits 0 al 7 del acumulador A. Esta operación se ilustraen la Figura 3-14.

Fig. 3-14 Ejecutando la instrucción TPA

Page 59: dl3155m24hc11_teoria

DL3155M24HC11

58

3.2 MODOS DE DIRECCIONAMIENTO

En el modo de direccionamiento inmediato, el operando es el byte en memoria inmediatamentesiguiente al opcode. Generalmente se trata de instrucciones de dos bytes. El primer byte es elopcode, el segundo es el operando. Sin embargo, hay excepciones a la regla de los dos bytes.Algunas operaciones involucran al registro índice de 16 bits y al apuntador de pila. En esoscasos, el operando se compone de los dos bytes siguientes al opcode. Esas son instruccionesde tres bytes. El primer byte es el opcode, el segundo y tercero son el operando.

En el modo de direccionamiento directo, el byte siguiente al opcode es la dirección deloperando. Estas siempre son instrucciones de dos bytes. El primer byte es el opcode; elsegundo es la dirección del operando. Un byte puede especificar direcciones desde 00 a FF16.Así, cuando sea empleado el modo de direccionamiento directo, el operando debe estar en losprimeros 25610 bytes de memoria. Puesto que la MPU 68HC11 puede tener hasta 6553610

bytes de memoria, se deben usar otros medios para direccionar la porción superior de lamemoria.

El modo de direccionamiento relativo se emplea para bifurcar. Se trata de instrucciones de dosbytes. El primer byte es el opcode, el segundo es la dirección relativa. Recuerde que ladirección relativa se suma al contador de programa para formar la dirección absoluta. Puestoque la dirección relativa es un número de 8 bits en complemento a dos, los límites de labifurcación son +12710 y –12810.

En el modo de direccionamiento inherente puede ser que no haya operando o que el operandoesté implícito en la instrucción. Estas son instrucciones de un byte.

En esta sección discutiremos dos nuevos modos de direccionamiento. Son llamadosdireccionamiento extendido y direccionamiento indexado. Trataremos el direccionamientoextendido primero.

Direccionamiento Extendido

El direccionamiento extendido es similar al direccionamiento directo pero con una diferenciasignificativa. Tenga en mente que en el direccionamiento directo el operando debe hallarse enlos primeros 25610 bytes de memoria. Ya que esto representa menos del uno por ciento de lasdirecciones disponibles por la MPU 68HC11, es necesario un modo de direccionamiento máspoderoso. El modo de direccionamiento extendido cubre dicha necesidad.

El formato de una instrucción que usa direccionamiento extendido se muestra en la Figura 3-15.La instrucción siempre tendrá tres bytes. El primer byte es el opcode. El segundo y tercer bytesforman una dirección de 16 bits. Note que la parte mas significativa de la dirección es el byteconsecutivo del opcode. Puesto que esta instrucción tiene una dirección de 16 bits, el operandopuede ser cualquiera de las 6553610 direcciones posibles.

Page 60: dl3155m24hc11_teoria

DL3155M24HC11

59

Fig. 3-15 Formato de una instrucción que usa el modo de direccionamiento extendido.

Por ejemplo, suponga que desea cargar el operando residente en la localidad de memoria213416 en el acumulador B. La instrucción se verá como sigue:

F6 Opcode para LDAB extendido21 Dirección de orden alto34… Dirección de orden baj

De la misma manera, si desea el numero de la localidad AA0016, la instrucción seria:

7C Opcode para INC extendido AA Dirección de orden alto

00 Dirección de orden bajo

El modo de direccionamiento extendido nos permite direccionar un operando residente encualquier dirección incluyendo los primeros 25610 bytes de la memoria. Así, si desea cargar eloperando de la dirección 001316 en el acumulador A, puede usar direccionamiento extendido:

B6 Opcode para LDAA extendido00 Dirección de orden alto13 Dirección de orden bajo

O puede usar direccionamiento directo:

96 Opcode para LDAA directo13 Dirección

Note que, con direccionamiento directo, la dirección de orden alto puede ser ignorada, ya quesiempre es 00. Puesto que el direccionamiento directo ahorra un byte de memoria y un ciclo deMPU, normalmente es usado cuando el operando se halla en los 25610 bytes de memoria. Eldireccionamiento extendido se usa cuando el operando se halla arriba de la dirección 00FF16.Sin embargo, como vera después, algunas instrucciones no cuentan con direccionamientodirecto. En esos casos debe emplearse direccionamiento extendido aun si el operando esta enlas primeras 25610 localidades de memoria.

Direccionamiento Indexado

El modo más poderoso disponible para el 68HC11 es el direccionamiento indexado. Recuerdeque el 68HC11 posee dos registros índices de 16 bits, el IX y el IY. Hay algunas instruccionesasociadas con esos registros. Estas nos permiten cargar el registro desde memoria y

Page 61: dl3155m24hc11_teoria

DL3155M24HC11

60

almacenar su contenido en memoria. También podemos incrementar y decrementar un registroíndice. Además, podemos comparar su contenido con dos bytes de memoria consecutivos.Estas capacidades hacen que al registro índice capaz de funcionar como un contador de 16bits. Este contador puede funcionar como un apuntador de direcciones dirigido a cualquierdirección de memoria.

Propósito. Antes de entrar en detalles de cómo funciona el direccionamiento indexado,veamos porque es necesario. Supongamos que deseamos sumar una lista de 2016 numeros, yque estos se hallan en 2016 localidades de memoria consecutivas, comenzando en la dirección0050. Empleando los modos de direccionamiento discutidos anteriormente, nuestro programapodria verse como sigue:

CLRA Limpia el acumulador AADDA Suma el primer numero

50 al acumulador A ADDA Suma el segundo numero

51 al acumulador A ADDA Suma el tercer numero

52 al acumulador A...

ADDA Suma el ultimo numero6F al acumulador A

STOP Alto.

Aunque este programa nos proporciona el resultado deseado, emplea demasiadasinstrucciones repetitivas. Su extensión es de 6610 bytes de memoria. Note que todas lasinstrucciones ADDA son idénticas, a excepción de la dirección del operando. Eldireccionamiento indexado simplifica mucho los programas de este tipo.

Formato de la Instrucción. El formato de una instrucción que usa direccionamientoindexado es como el de la Figura 3-15. Note que se trata de una instrucción de dos bytes. Elprimer byte es el opcode, el segundo se llama compensación (offset) de dirección. Lacompensación de dirección es un numero binario de 8 bits no signado. Este se suma alcontenido del registro índice para determinar la dirección en que se halla el operando.Considere que, a menos que se especifique otra cosa, “registro índice” se refiere al registroíndice X.

Fig. 3-15. Formato de una instrucción que usa modo de direccionamiento indexado

Page 62: dl3155m24hc11_teoria

DL3155M24HC11

61

Cada instrucción que involucra un operando en memoria puede usar el modo dedireccionamiento indexado. En esta unidad emplearemos la siguiente convención para indicardireccionamiento indexado:

LDAA, XSTAA, XADDB,X

etc.

En cada caso, la X nos dice que usamos direccionamiento indexado. Por ejemplo, la primerainstrucción significa “usando direccionamiento indexado, carga el contenido de la localidad dememoria especificada en el acumulador A”. Ahora veamos como se determina la dirección deloperando.

Determinando la dirección del operando. Cuando se usa direccionamiento indexado,la dirección del operando se determina con la dirección de compensación(offset) y el numero enel registro índice. Específicamente, la compensación de dirección de 8 bits es sumada a ladirección de 16 bits que se halla en el registro índice. La suma de 16 bits es la dirección deloperando. La Figura 3-16 ilustra esto.

Fig. 3-16. La dirección de operando es formada por la suma de la dirección Offset y el contenido del registro índice.

Aquí, la instrucción en la localidad de memoria 000416 es LDAA, X. La dirección decompensación es 1116. El contenido del registro índice es 013316. Cuando se ejecuta lainstrucción LDAA, X; la dirección del operando se forma sumando la dirección de compensacióna él número en el registro índice. En este caso, la dirección del operando será:

013316+

1116

014416

El operando de esta dirección es cargado en el acumulador A. En este ejemplo, el operando esFF y se carga cuando la instrucción de la localidad 0004 es ejecutada. Es importante recordar

Page 63: dl3155m24hc11_teoria

DL3155M24HC11

62

que esto no cambia el contenido del registro índice de ninguna manera. Así, el registro índicecontiene aún 013316 después de la ejecución de la instrucción.

Sumando una lista de números. Para ver como este modo de direccionamiento ahorrainstrucciones, considere el problema antes planteado. Recuerde que queremos sumar 2016

números almacenados en localidades de memoria, consecutivas, comenzando en la dirección0050. Empleando direccionamiento indexado para la instrucción de suma, nuestro programaqueda como en la Figura 3-17.

DIRECCIONHEX

CONTENIDOHEX

MNEMONICOS/CONTENIDO

HEX

COMENTARIOS

0010 CE LDX #0011 00 000012 50 50

Carga en forma inmediata el registroíndice con la dirección del primernúmero de la lista.

0013 4F CLR A Borra el acumulador A0014 AB ADDA, X0015 00 00

Suma al acumulador usandodireccionamiento indexado con ladirección de compensación(offset) de 00

0016 08 INX Incrementa el registro índice0017 8C0018 000019 70

CPX #0070

Compara el contenido del registro índicecon la dirección más grande que ladirección del ultimo numero en la lista.

001A 26001B F8

BNEF8

Si no es igual salta a la instrucciónADDA, X

001C CF STOP De lo contrario detente

Fig. 3-17. Programa para sumar una lista de 2016 números

La primera instrucción es cargar el registro índice en modo inmediato. Note que se emplea unnuevo símbolo en este programa. El símbolo # indica el modo de direccionamiento inmediato.Así, la instrucción LDX# causa que el operando que sigue al opcode sea cargado en el registroíndice. Recuerde que el registro índice puede guardar 2 bytes. El operando es el número dedos bytes 005016. No olvide que esta es la dirección del primer número en la lista de númerospara sumar.

La siguiente instrucción limpia el acumulador A. La suma será acumulada en este registro, loque hace necesario limpiarlo inicialmente.

La tercera instrucción (ADDA,X) es la única instrucción en el programa que usadireccionamiento indexado. El símbolo X lo indica. La dirección offset es 00. Recuerde que ladirección del operando se determina sumando el offset al contenido del registro índice. Elregistro índice contiene 005016 de una instrucción previa. Ya que el offset es 00, la dirección deloperando es 005016. Esto es, el contenido de la localidad de memoria 005016 se suma alcontenido del acumulador A. Tenga en mente que 005016 es la dirección del primer número dela lista.

La cuarta instrucción incrementa el registro índice a 005116. Ahora apunta a la dirección delsegundo número de la lista.

La quinta instrucción compara el número en el registro índice con un número que es mayor enuna unidad a la dirección del último número de la lista.

Page 64: dl3155m24hc11_teoria

DL3155M24HC11

63

Si ocurre la igualdad, la bandera Z es fijada a uno. Es claro que no se harán máscomparaciones. Note una vez más que el símbolo # indica el modo de direccionamientoinmediato. Así, el contenido del registro índice es comparado con los dos bytes siguientes en elprograma o 0070.

La instrucción BNE prueba la bandera Z para ver si los dos números son iguales. Si no seindica igualdad, la dirección relativa (F8) dirige el retorno del programa a la instrucción ADDA,X.El primer paso en el lazo termina con el primer número en el acumulador A.

El segundo paso en el bucle comienza con la ejecución, otra vez, de la instrucción ADDA,X.Esta vez, el registro índice apunta a la dirección 0051. Por lo tanto, el segundo número de lalista se suma al acumulador A. El acumulador A ahora contiene la suma de los dos primerosnúmeros. El registro índice es incrementado a 0052. Su contenido se compara otra vez con0070. No hay igualdad, lo que provoca que la instrucción BNE repita el bucle una vez más.

El lazo es repetido una y otra vez. Cada vez se suma al acumulador A, el siguiente número dela lista. Este proceso continúa hasta que el último número de la lista es sumado. Para entonces,el registro índice será incrementado a 0070. Así, cuando se ejecute la instrucción CPX #, labandera Z será activada, al haber igualdad entre los dos números. La instrucción BNE reconoceque hay igualdad. Consecuentemente, no permite que ocurra la bifurcación y la siguienteinstrucción en secuencia, se ejecuta. Ya que se trata de la instrucción STOP, el programa sedetiene. Para entonces, la suma de los 2016 números de la lista se hallará en el acumulador A.

Sumar una lista de números es un ejemplo clásico de cómo el modo indexado, puede ser usadopara acortar un programa. Sin embargo, este ejemplo no muestra la potencia total deldireccionamiento indexado. Por ejemplo, no ilustra la ventaja de la dirección offset. Ya que eldireccionamiento indexado es tan importante, veamos otro ejemplo.

Copiando una lista. Supongamos que tenemos una lista de 1016 números que deseamoscopiar de una localidad a otra. Por simplicidad, suponga que la lista está presente en lasdirecciones 0030 a la 003F y que deseamos copiarla en la localidad 0040 a la 004F. Sin usardireccionamiento indexado, nuestro programa quedaría así:

LDAA30

STAA40

LDAA31

STAA41...

LDAA3F

STAA4F

Page 65: dl3155m24hc11_teoria

DL3155M24HC11

64

STOP

Como puede ver; programas largos y repetitivos como éste, son excelentes candidatos para eldireccionamiento indexado.

Empleando direccionamiento indexado, nuestro programa puede verse como se muestra en laFigura 3-18. El primer paso es cargar el registro índice con la primera dirección de la listaoriginal. La instrucción LDAA, X tiene una compensación de dirección de 00. Por lo tanto, elacumulador A es cargado desde la dirección especificada por el registro índice (0030). Esto es,el primer número de la lista original es cargado en el acumulador A cuando se ejecuta lainstrucción LDAA, X.

DIRECCIONHEX

CONTENIDOHEX

MNEMONICOS/CONTENIDO

HEX

COMENTARIOS

0010 CE0011 000012 30

LDX #0030

Carga en forma inmediata el registroíndice con la dirección de La listaoriginal

0013 A60014 00

LDAA, X00

Carga el acumulador en forma indexadacon un offset de 00

0015 A70016 10

STAA, X10

Almacena el acumulador A con un offsetde 1016

0017 08 INX Incrementa e registro índice0018 8C0019 00001A 40

CPX #0040

Comparación indexada con unadirección más grande que la ultimadirección de la lista original

001B 26001C F6

BNEF6

Si no es igual, salta a la instrucciónLDAA, X

001D CF STOP De lo contrario detente

Fig. 3-18. Programa para copiar una lista de direcciones0030 – 003f dentro de otra 0040 – 004F

La instrucción STAA, X ilustra el uso de la dirección offset. Dicha compensación es 10. Estenumero se suma a la dirección en el registro índice para formar la dirección efectiva en la cualel contenido del acumulador A es almacenado. Así, el contenido del acumulador A se almacenaen la dirección 0040. Recuerde, esto no cambia el numero del registro índice de maneraalguna. Empleando la compensación, podemos cargar el acumulador indexado de unadirección y almacenar el acumulador indexado en otra.

Enseguida, se incrementa el registro índice a 0031. Se compara con 0040. Ya que no soniguales, la instrucción BNE dirige el programa de regreso a la instrucción LDAA, X. El ciclo serepite hasta que la lista entera se reescriba en las localidades 0040 a la 004F. Después decopiado el ultimo dato, el registro índice se incrementa a 0040. Así, la instrucción CPX # pone auno la bandera Z permitiendo que la instrucción BNE saque del ciclo, al programa. Elprograma se detiene después que los datos de la lista son escritos en su nueva posición dememoria.

Page 66: dl3155m24hc11_teoria

DL3155M24HC11

65

SUMARIO DEL CONJUNTO DE INSTRUCCIONES

Ahora ha sido introducido al uso de las instrucciones mas frecuentes e importantes del 68HC11.

Como se menciono, el 68HC11 puede ejecutar todas las instrucciones del MC6800 y delMC6801. También, la CPU 68HC11 tiene un mapa de códigos de operación paginado con untotal de 91 nuevos opcodes. Las mayores adiciones funcionales del 68HC11 que lo distinguende los miembros anteriores de la familia incluyen: el registro índice Y, IY; dos tipos deinstrucciones de división de 16 por 16; la instrucción STOP; una instrucción de manipulación debits y las instrucciones aritméticas de multiplicación, división, etc.

La Figura 3-19 muestra todas las instrucciones del 68HC11 en todos los modos dedireccionamiento posibles. La información dada ahí, incluye, de izquierda a derecha, losFormatos Fuente (Mnemónicos), la Operación, la Expresión Boleaba (symbolic logic), el Modode Direccionamiento del Operando, el Código Maquina en Hexadecimal del Opcode/Operando,e información del número de bytes y ciclos de máquina requeridos por la instrucción. Sigue unabreve descripción de cada una.

La columna de Formatos Fuente es una lista de mnemónicos junto con la forma de lainstrucción con respecto a su operando. Note que ciertos tipos de instrucciones, como lainstrucción ADD, tienen relativamente muchas formas distintas. Aunque no es necesariomemorizar todas las instrucciones, usted puede aprender a reconocer la categoría de lainstrucción por su mnemónico y entonces determinar en cual de las siete categorías principalescae. Por ejemplo, aunque hay 17 instrucciones cuyo mnemónico comienza con la letra A, unexamen mas detallado revela solo 3 tipos distintos. Estas son las instrucciones ADD, AND y lasinstrucciones aritméticas (SHIFT). Un conocimiento básico de los distintos tipos deinstrucciones disponibles, junto con una aproximación sistemática, le dará un conocimientosorprendentemente completo del conjunto de instrucciones.

La columna de Operación de la Figura 3-19 contiene una breve descripción del mnemónico a laizquierda. Note cómo el mnemónico se deriva directamente de la corta frase descriptiva de laoperación. Por ejemplo, ASL significa “Arithmetic Shift Left” (Corrimiento Aritmético a laIzquierda).

La columna de Boolean Expression, (expresión boleana), proporciona una representaciónlógica de la instrucción en forma simbólica. Esta información puede ser útil para diseñar oanalizar (depurar) programas.

La columna de Addressing Mode Operand, (modo de direccionamiento del Operando), contieneabreviaturas de los posibles modos con el operando. A la derecha se localizan los códigos deMáquina, cada operación dados en hexadecimal. Un sistema de abreviaturas, descrito en“NOTES” al final de la Figura 3-19, se utilizan para indicar el formato, direccionamiento,memoria y otra información relevante acerca de los opcodes. Las siguientes dos columnaslistan el número de bytes y ciclos de MPU requeridos para ejecutar la instrucción.

Finalmente, la última columna contiene información acerca del efecto de la ejecución de unainstrucción sobre el registro de códigos de condición (banderas). Existen diversas posibilidades.Dependiendo de la instrucción y del modo de direccionamiento, los bits del código de condiciónpueden permanecer sin cambio, ser limpiados (0), o activados (1).

Page 67: dl3155m24hc11_teoria

DL3155M24HC11

66

Observe detenidamente el conjunto de instrucciones del 68HC11 dado en la Figura 3-19 parafamiliarizarse con las operaciones y sus mnemónicos. Algunas de esas fueron discutidasanteriormente.

Page 68: dl3155m24hc11_teoria

DL3155M24HC11

67

Fig. 3-19 CONJUNTO DE INSTRUCCIONES DEL MC68HC11

Page 69: dl3155m24hc11_teoria

DL3155M24HC11

68

Fig. 3-19 CONTINUACION.

Page 70: dl3155m24hc11_teoria

DL3155M24HC11

69

Fig. 3-19. CONTINUACION.

Page 71: dl3155m24hc11_teoria

DL3155M24HC11

70

Fig. 3-19. CONTINUACION.

Page 72: dl3155m24hc11_teoria

DL3155M24HC11

71

Fig. 3-19. CONTINUACION.

Page 73: dl3155m24hc11_teoria

DL3155M24HC11

72

NOTAS:Ciclo:­ = Infinito o hasta que ocurra un reset­­ = Se usan 12 ciclos comenzando con el opcode de búsqueda, entra a un estado de espera por un tiempo

equivalente a un número entero de ciclos MPU del E-clock, hasta que una interrupción es reconocida.Finalmente, dos ciclos adicionales se usan para buscar el vector de interrupción adecuado (total = 14 +n)

Operando(s)

dd = 8 bits direccionamiento directo $0000 - $FFFF. (Se asume que el byte alto es $00)ff = Compensación positiva(positive offset) de 8 bits $00 (0) a $FF(255), sumado al índice.

hh = Byte de orden bajo de 16 bits direccionamiento extendidoii = Un byte de dato inmediatojj = Byte de orden alto de 16 bits dato inmediato

kk = Byte de orden bajo de 16-bits dato inmediatoll = Byte de orden bajo de 16-bits, direccionamiento extendido

mm = Mascara de 8 bits (los bits se activan al ser afectados)rr = Compensación relativa(relative offset) signada $80 (-128) a $7F (+ 127)

Compensación relativa a la dirección siguiente al código de máquina, byte offset.

Código de condición:-- Bit no cambiado0 Siempre borrado ("0" lógico)1 Siempre activado("1" lógico)ô Bit activado o borrado según la operación

↓ Bit que puede ser borrado, pero no activado.

Page 74: dl3155m24hc11_teoria

DL3155M24HC11

73

Page 75: dl3155m24hc11_teoria

DL3155M24HC11

74

3.3 EXPLICACION DE LAS INSTRUCCIONES

Lista del conjunto de instrucciones del 68HC11.

NOMENCLATURA

La siguiente nomenclatura será empleada en las definiciones del las instrucciones.

(a) Operadores

( ) = Contenido del registro, mostrado entre paréntesis.← = Transferido a…↑ = Sacado de la pila↓ = Colocado en la pila• = Operación AND booleana+ = Símbolo de suma aritmética excepto cuando es usada como símbolo

de OR-inclusiva, en formula booleana.⊕ = OR-exclusiva¬ = Operación NOT booleana∗ = Multiplicación: = Concatenación

− = Símbolo de substracción aritmética o símbolo denegación(complemento a dos.)

(b). Registros en el microcontrolador.

ACCA = Acumulador AACCB = Acumulador BACCX = Acumulador ACCA o ACCBACCD = Acumulador doble. Acumulador A concatenado con el acumulador

B, donde A es el byte más significativo.CCR = Registro código de condición

IX = Registro índice X, 16 bitsIXH = Registro índice X, 8 bits de orden alto.IXL = Registro índice X, 8 bits de orden bajo.IY = Registro índice Y, 16 bits

IYH = Registro índice Y, 8 bits de orden alto.IYL = Registro índice Y, 8 bits de orden bajo.PC = Contador de programa, 16 bits.

PCH = Contador de programa, 8 bits de orden alto (más significativo)PCL = Contador de programa, 8 bits de orden bajo (menos significativo)

SP = Stack Pointer, 16 bits.SPH = Stack Pointer, 8 bits de orden alto.SPL = Stack Pointer, 8 bits de orden bajo.

Page 76: dl3155m24hc11_teoria

DL3155M24HC11

75

(c). Memoria y direccionamiento.

M = Una localidad de memoria (1 byte)M + 1 = Un byte de memoria mas 0001, respecto a la dirección de la localidad

de memoria indicada por "M".Rel = Ajuste Relativo (relative offset), como es el caso de almacenar

números con complemento a dos en él ultimo byte del código demáquina correspondiente a una instrucción de salto.

(opr) = Operando(msk) = Mascara usada en instrucciones de manipulación de bit.

(rel) = Ajuste relativo (relative offset), usado en instrucciones de salto.

(d). Bit 0 a Bit 7 del Registro código de condición

C = Acarreo/prestamo, bit "0"V = Indicador de sobreflujo en complemento a dos, bit "1"Z = Indicador del cero, bit "2"N = Indicador negativo, bit "3"I = Macara de interrupción I, bit "4"

H = Semiacarreo, bit 5X = Macara de interrupción X, bit 6S = “Paro deshabilitado (stop disable), bit 7

(e). Estado de los bits individuales, antes de la ejecución de una instrucción.

An = Bit n de ACCA (n = 7, 6, 5,…0)Bn = Bit n de ACCB (n = 7, 6, 5,…0)Dn = Bit n de ACCD (n = 15, 14, 13,…0), donde los bits 8-15 se refieren a

ACCA y el bit 0-7 a ACCBIxn = Bit n de IX (n = 15, 14, 13,…0)

IXHn = Bit n de IXH (n = 7, 6, 5,…0)IXLn = Bit n de IXL (n = 7, 6, 5 ,…0)IYn = Bit n de IY (n = 15, 14, 13,…0)

IYHn = Bit n de IYH (n = 7, 6, 5,…0)IYLn = Bit n de IYL (n = 7, 6, 5 ,…0)

Mn = Bit n de M (n = 7, 6, 5,…0)SPHn = Bit n de SPH (n = 7, 6, 5 ,…0)SPLn = Bit n de SPL (n = 7, 6, 5,…0)

Xn = Bit n de ACCX (n = 7, 6, 5,…0)

Page 77: dl3155m24hc11_teoria

DL3155M24HC11

76

(f). Estado de los bits individuales en el resultado de la ejecución de una instrucción.(i) Para resultados de 8 bits

Rn = Bit n del resultado (n=7, 6, 5, 4,….0).Este aplica a las instrucciones que proporcionan un resultadocontenido en un byte simple de memoria, o en un registro de 8 bits.

(ii) Para resultados de 16 bits.

RHn = Bit n del byte más significativo (n=7, 6, 5, 4,….0).RLn = Bit n del byte menos significativo (n=7, 6, 5, 4,….0), este aplica a

instrucciones las cuales, proveen resultados contenidos en dos bytesconsecutivos de memoria o en un registro de 16 bits. .

Rn = Bit n del resultado (n=15, 14, 13, 12,….0).

(g). Simbologia para el CCR

- = Bit no afectado.0 = Se coloca un bit 01 = Se coloca un bit 1� = Bit colocado estará de acuerdo al resultado de la operación� = El bit cambiara permanecerá constante o podrá cambia de 1 a 0

NOTA: Las banderas no mencionadas se sobre entenderá que son afectadas.

Page 78: dl3155m24hc11_teoria

DL3155M24HC11

77

INSTRUCCIONES

ABA

Suma el acumulador B, al Acumulador A

Operación: ACCA ←← (ACCA) + (ACCB)

Descripción: Suma el contenido de ACCB al contenido de ACCA y el resultado colócaloen el acumulador A, ACCA.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — � — � � � �

H=1 si ocurrió un acarreo en el bit 3; 0 en otro casoN=1 el bit más significativo del resultado, es 1;en otro caso se borra.Z=1 los bits del resultado son 00; 0 en cualquier otro caso.V=1 si hubo sobreflujo en complemento a dos; 0 en otro caso.C=1 si hubo un acarreo desde el bit más significativo del resultado, 0 en

otro caso.

ABX

Suma el acumulador B, al registro índice X

Operación: IX ←← (IX) + (ACCB)

Descripción: Suma el contenido de 8 bits sin signo del ACCB, al contenido del registroíndice X (IX), tomando en cuenta el posible acarreo fuera del byte de ordenbajo del registro índice; colocando el resultado en el registro índice X (IX).ACCB no cambia.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — — —

Mnemónico: ABX

Page 79: dl3155m24hc11_teoria

DL3155M24HC11

78

ABY

Suma el acumulador B, al registro índice Y

Operación: IY ←← (IY) + (ACCB)

Descripción: Suma el contenido sin signo de 8 bits, del ACCB, al contenido del registroíndice Y (IY), tomando en cuenta el posible acarreo fuera del byte de ordenbajo del registro índice Y; colocando el resultado en el registro índice Y(IY). ACCB no cambia.

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: ABY

ADC

Suma con acarreo.

Operación: ACCX ←← (ACCX) + (M) + (C)

Descripción: Suma de los contenidos del bit "C", a la suma del contenido ACCX y M,colocando el resultado en ACCX.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — � — � � � �

H=1 Si ocurrió un acarreo en el bit 3; 0 en otro casoN=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otro

caso.Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: ADCA (opr) ADCB (opr)

Page 80: dl3155m24hc11_teoria

DL3155M24HC11

79

ADD

Suma sin acarreo

Operación: ACCX ←← (ACCX) + (M)

Descripción: Suma el contenido de M al contenido de ACCX y el resultado se coloca enACCX.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — � — � � � �

H=1 Si ocurrió un acarreo en el bit 3; 0 en otro casoN=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otro

caso.Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: ADDA(opr); ADDB (opr)

ADDD

Suma con el acumulador doble

Operación: ACCD ←← (ACCD) + (M:M + 1)

Descripción: Suma el contenido de M concatenado con M + 1, al contenido de ACCD y locoloca en ACCD.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Page 81: dl3155m24hc11_teoria

DL3155M24HC11

80

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: ADDD (opr)

AND

Operación lógica AND

Operación: ACCX ←← (ACCX) •• (M)

Descripción: Ejecuta operación AND entre el contenido de ACCX y el contenido de M,colocando el resultado en ACCX. (Cada bit de ACCX será afectado por laoperación AND lógica entre M y ACCX, de acuerdo a cada bitcorrespondiente.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 0

Mnemónico : ANDA (opr); ANDB (opr)

ASL

Corrimiento aritmético a la izquierda(Igual que LSL)

Operación:

Descripción: Corrimiento de todos los bits de ACCX o M, una posición a la izquierda. Elbit “0” es cargado con un "0" lógico. El bit "C" en el CCR se carga desde elbit más significativo de ACCX o M.

Page 82: dl3155m24hc11_teoria

DL3155M24HC11

81

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Desde fuente: ASLA; ASLB; ASL (opr)

ASLD

Corrimiento aritmético a la izquierda del acumulador D(Igual que LSLD)

Operación:

Descripción: Corrimiento de todos los bits de ACCD, una posición a la izquierda. El bit 0es cargado con "0". El bit C en el CCR es cargado desde el bit mássignificativo de ACCD.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: ASLD

Page 83: dl3155m24hc11_teoria

DL3155M24HC11

82

ASR

Corrimiento aritmético a la derecha

Operación:

Descripción: Corrimiento de todos los bits de ACCX o M una posición a la derecha. El bit7 es constante. El bit 0 se carga dentro del bit "C" de CCR.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: ASRA, ASRB, ASR (opr)

BCCSalta si el acarreo es borrado

(igual a BHS)

Operación: PC ←← (PC) + 0002 + Rel Sí C = 0

Descripción: Prueba el estado del bit "C", en el registro código de condición y causa unsalto si éste se encuentra borrado.Ver instrucción BRA para mayores de talles de instrucciones de salto.

Registro de Códigos de condición (CCR)No afectados.

Mnemónicos : BCC(rel)

Page 84: dl3155m24hc11_teoria

DL3155M24HC11

83

BCLR

Borrado de bit(s), en memoria

Operación:M ←←M •• ( PC + 2 )M ←←M •• ( PC + 3 ) Modo de direccionamiento solo

para IND, Y

Descripción: Borra los bits múltiples en la localidad M. Los bits a ser borrados seespecifican con unos, en el byte de mascara. Todos los otros bits en M nose ven afectados.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 0

Mnemónico: BCLR (opr)(msk)

BCS

Salta si el acarreo esta activado(Igual a BLO)

Operación: PC ←← (PC) + 0002 + Rel si C = 1

Descripción: Prueba el estado del bit "C", del registro código de condición y causa unsalto si dicho bit esta activado.Para mayores de talles, vea la instrucción BRA, respecto a la ejecución desalto.

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BCS (rel)

Page 85: dl3155m24hc11_teoria

DL3155M24HC11

84

BEQ

Salta si es igual

Operación: PC ←← (PC) + 0002 + Rel si Z = 1

Descripción: Prueba el estado del bit "Z", del registro código de condición y causa unsalto si dicho bit esta activado.

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BEQ (rel)

BGE

Salta si es mayor o igual a cero.

Operación: PC ←←(PC) + 0002 + Rel si (N) ⊕⊕ (V) = 0Equivale a (ACCX) ≥≥ (M)(números signados en complemento a dos)

4Descripción: Causa un salto si N es activada y V también, ó, N es borrada al igual que V,

enel CCR.Si la instrucción BGE es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB(A, B o D), el salto ocurre, sí y solo sí, el número de complemento a dosrepresentado por el minuendo (ACCX), fue mayor o igual al número decomplemento a dos representado por el substraendo(M).

(Ver instrucción BRA para detalles de él salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BGE (rel)

Page 86: dl3155m24hc11_teoria

DL3155M24HC11

85

BGT

Salta si es mayor a cero.

Operación: PC ←←(PC) + 0002 + Rel si (Z) + [(N) ⊕⊕ (V)] = 0Equivale a (ACCX) > (M)(números signados en complemento a dos)

Descripción: Causa un salto si (Z es borrada) y (N activada al igual que V) ó, (N esborrada y V, también).el CCR.Si la instrucción BGT es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB(A, B o D), el salto ocurre, sí y solo sí, el número de complemento a dosrepresentado por el minuendo (ACCX), fue mayor que el número decomplemento a dos representado por el substraendo(M).

(Ver instrucción BRA para detalles de él salto).

Registro de Códigos de condición (CCR)No afectados.

Forma canonica: BGT(rel)

BHI

Salta si es mayor.

Operación: PC ←←(PC) + 0002 + Rel si (C) + (Z) = 0Equivale a (ACCX) > (M)(números binarios sin signo)

Descripción: Causa un salto si C es borrada al igual que Z en el CCR.Si la instrucción BHI es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB(A, B o D), el salto ocurre, sí y solo sí, el número binario sin signorepresentado por el minuendo (ACCX), fue mayor al número binario sinsigno representado por el substraendo (M).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BHI (rel)

Page 87: dl3155m24hc11_teoria

DL3155M24HC11

86

BHS

Salta si es mayor o igual.(igual a BCC)

Operación: PC ←←(PC) + 0002 + Rel si C = 0Equivale a (ACCX) ≥≥ (M)(números binarios sin signo)

Descripción: Prueba el estado del bit C, en el registro código de condición y causa unsalto si ésta borrado.Si la instrucción BHS es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB(A, B o D), el salto ocurre, sí y solo sí, el número binario sin signorepresentado por el minuendo (ACCX), fue mayor o igual al número binariosin signo representado por el substraendo(M).

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BHS(rel)

BIT

Bit de prueba.

Operación: (ACCX) •• (M)

Descripción: Ejecuta la operación lógica AND, entre el contenido de ACCX y el contenidode M, modificando los códigos de condición. Ninguno de los contenidos delos operandos ACCX o M , son afectados. (Cada bit del resultado de laoperación AND, es el correspondiente a M y ACCX).

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Page 88: dl3155m24hc11_teoria

DL3155M24HC11

87

V=0 0

Mnemónicos: BITA(opr); BITB(opr)

BLE

Salta si es menor o igual a cero.(igual a BCC)

Operación: PC ←←(PC) + 0002 + Rel si (Z) + [(N) ⊕⊕ (V)] = 1Equivale a (ACCX) ≤≤ (M)(números signados con complemento a dos)

Descripción: Causa un salto si (Z esta activada) o (N activada y V borrada) o (N borrada yV activada) en el CCR.Si la instrucción BLE es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB(A, B o D), el salto ocurre, sí y solo sí, el número de complemento a dosrepresentado por el minuendo (ACCX), fue menor o igual al número decomplemento a dos representado por el substraendo(M).

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BLE(rel)

BLO

Salta si es menor(Igual a BCS)

Operación: PC ←←(PC) + 0002 + Rel si C = 1Equivale a (ACCX) < (M)(números binarios sin signo)

Descripción: Prueba el estado del bit C, en el registro código de condición y causa unsalto si ésta activado.Si la instrucción BLS es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB

Page 89: dl3155m24hc11_teoria

DL3155M24HC11

88

(A, B o D), el salto ocurre, sí y solo sí, el número binario sin signorepresentado por el minuendo (ACCX), fue menor que el número binario sinsigno representado por el substraendo(M).

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BLO(rel)

BLS

Salta si es menor o igual

Operación: PC ←←(PC) + 0002 + Rel si (C) + (Z) = 1Equivale a (ACCX) ≤≤ (M)(números binarios sin signo)

Descripción: Causa un salto si en el registro código de condición, C esta activo o Ztambién lo esta.Si la instrucción BLS es ejecutada inmediatamente después de la ejecuciónde alguna de las instrucciones CBA, CMP (A, B o D), CP(X o Y), SBA o SUB(A, B o D), el salto ocurre, sí y solo sí, el número binario sin signorepresentado por el minuendo (ACCX), fue menor o igual a el númerobinario sin signo representado por el substraendo(M).

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BLS(rel)

Page 90: dl3155m24hc11_teoria

DL3155M24HC11

89

BNE

Salta si no es igual.

Operación: PC ←←(PC) + 0002 + Rel si Z = 1

Descripción: Prueba el estado del bit Z en el registro de código de condición y causa unsalto si esta borrado.

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BNE(rel)

BPL

Salta si es más.

Operación: PC ←←(PC) + 0002 + Rel si N = 0

Descripción: Prueba el estado del bit N, en el registro código de condición y causa unsalto si ésta borrado.

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BPL(rel)

Page 91: dl3155m24hc11_teoria

DL3155M24HC11

90

BRA

Salta siempre

Operación: PC ←←(PC) + 0002 + Rel

Descripción: Salto incondicional a la dirección dada por la formula anterior, en dondeRel, es el ajuste o compensación relativa almacenada como un número decomplemento a dos en el segundo byte del código de maquinacorrespondiente a la instrucción de salto.Nota: El programa fuente especifica el destino de una instrucción de saltopor medio de la dirección absoluta, tanto el valor numérico como unsímbolo o expresión pueden ser numéricamente evaluados por elensamblador. El ensamblador obtiene la dirección relativa Rel, de ladirección absoluta y del valor actual del contador de programa.

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BRA(rel)

BRCLR

Salta si el bit(s) es borrado.

Operación: PC ←←(PC) + 0004 + Rel si: M •• ( PC + 2 )

PC ←←(PC) + 0005 + Rel si: M •• ( PC + 3 ) Modo de direccionamiento

indexado Y

Descripción: Revisa la localidad de memoria M y salta sí, todos los bits especificadoscon 1 en el byte de la mascara son cero en el byte de prueba. El salto puedeser solo si todos los bits revisados son cero en el byte de prueba

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BRCLR (opr)(msk)(rel)

Page 92: dl3155m24hc11_teoria

DL3155M24HC11

91

BRN

Nunca salta

Operación: PC ←←(PC) + 0002

Descripción: Nunca salta. Esta instrucción puede ser considerada como dos bytes de nooperación, requiere tres ciclos de máquina para su ejecución. Estainclusión en la instrucciónNota: El programa fuente especifica el destino de una instrucción de saltopor medio de la dirección absoluta, tanto el valor numérico como unsímbolo o expresión pueden ser numéricamente evaluados por elensamblador. El ensamblador obtiene la dirección relativa Rel, de ladirección absoluta y del valor actual del contador de programa.

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BRN(rel)

BRSET

Salta si el bit(s) esta activado

Operación:PC ←←(PC) + 0004 + Rel Sí MM •• (PC + 2) = 0PC ←←(PC) + 0005 + Rel Sí MM •• (PC + 3) = 0 (modo de direccionamiento indexado

Y)

Descripción: Revisa la localidad M y salta si todos los bits especificados con 1 en lamascara de bytes son 1 en el byte de prueba.El salto será realizado solo si todos los bits probados son "1" en el byte deprueba.

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BRSET(opr)(msk)(rel)

Page 93: dl3155m24hc11_teoria

DL3155M24HC11

92

BSET

Activa el bit(s), en memoria

Operación:M ←←M + ( PC + 2 )M ←←M + ( PC + 3 ) Modo de direccionamiento

indexado Y

Descripción: Activa los bits múltiples en la localidad M. Los bits a ser activados sonespecifican con unos, en el byte de mascara. Todos los otros bits en M nose ven afectados.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 0

Mnemónico: BSET (opr)(msk)

BSRSalto a subrutina

Operación: PC ←←(PC) + 0002↓↓ (PCL)SP←←(SP) - 0001↓↓ (PCH)SP ←← (SP) - 0001PC ←←(PC) + Rel

Descripción: El contador de programa es incrementado en 2. El byte menos significativocorrespondiente al contenido del contador de programa es colocado en lapila. El stack pointer es entonces decrementado (por 1). El byte mássignificativo que corresponde al contenido del contador de programa esentonces colocado en la pila. El stack pointer es decrementadonuevamente (por 1). El salto ocurre entonces, a la localidad especificadapor el salto.(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BSR(rel)

Page 94: dl3155m24hc11_teoria

DL3155M24HC11

93

BVC

Salta si la bandera de sobreflujo esta borrada

Operación: PC ←←(PC) + 0002 + Rel si V = 0

Descripción: Revisa el estado del bit V en el registro código de condición y causa unsalto si dicho bit, esta borrado.Esta instrucción se usa después de una operación en valores binarios concomplemento a dos, puede causar un salto(si no hubo sobreflujo). De modoque salta si el resultado del complemento a dos, fue valido.

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BVC(rel)

BVS

Salta si la bandera de sobreflujo esta activada

Operación: PC ←←(PC) + 0002 + Rel

Descripción: Revisa el estado del bit V en el registro código de condición y causa unsalto si dicho bit, esta activado.Esta instrucción se usa después de una operación en valores binarios concomplemento a dos, puede causar un salto(sí ocurrió un sobreflujo). Demodo que salta si el resultado del complemento a dos, es invalido.

(Ver instrucción BRA para más detalles de la ejecución de salto).

Registro de Códigos de condición (CCR)No afectados.

Mnemónico: BVS(rel)

Page 95: dl3155m24hc11_teoria

DL3155M24HC11

94

CBA

Comparación entre acumuladores

Operación: (ACCA) -- (ACCB)

Descripción: Compara el contenido de ACCA al contenido de ACCB y activa el código decondición, el cual es usado para saltos condicionales con operacionesaritméticas y lógicas. Ninguno de los operandos es afectado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: CBA

CLC

Borra el acarreo

Operación: C bit ←← 0

Descripción: Borra el bit C en el registro código de condición

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — — 0

C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0en otro caso.

Mnemónicos: CLC

Page 96: dl3155m24hc11_teoria

DL3155M24HC11

95

CLI

Borra la mascara de interrupción

Operación: I bit ←← 0

Descripción: Borra el bit mascara de interrupciones, del registro código de condición.Cuando el bit I es borrado, las interrupciones se habilitan.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — 0 — — — —

I=0

Mnemónicos: CLI

CLR

Borrado

Operación: (ACCX) ←← 00M ←← 00

Descripción: El contenido de ACCX o de M es reemplazado por ceros

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — 0 1 0 0

N=0 BorradoZ=1 ActivadoV=0 BorradoC=0 Borrado

Mnemónicos: CLRA, CLRB, CLR(opr)

Page 97: dl3155m24hc11_teoria

DL3155M24HC11

96

CLV

Borra el bit de sobreflujo en complemento a dos

Operación: V bit ←← 0

Descripción: Borra el bit de sobreflujo en complemento a dos del registro código decondición.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — 0 —

V=0

Mnemónicos: CLV

CMP

Compara

Operación: (ACCX) -- (M)

Descripción: Compara el contenido de ACCX o el contenido de M, determina los códigosy el valor de las banderas, estableciendo las condiciones lógicas yaritméticas de salto condicional. Ninguno de los operandos es afectado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico : CMPA(opr); CMPB (opr)

Page 98: dl3155m24hc11_teoria

DL3155M24HC11

97

COM

Complementa

Operación: ACCX ←← ¬¬ (ACCX) = FF - (ACCX)M ←← ¬¬ (M) = FF - (M)

Descripción: Reemplaza el contenido de ACCX o M con complemento a uno. (Cada bitdel contenido de ACCX o M es remplazado con el complemento de ese bit)

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 1

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0C=1

Mnemónicos: COMA, COMB, COM (opr)

CPD

Compara acumulador - D

Operación: (ACCX) -- (M: M+1)

Descripción: Compara el contenido del acumulador D con un valor de 16 bits, de ladirección especificada. Activa el código de condición en correspondiente.La operación es realizada internamente al hacer una resta de (M:M+1) desdeel acumulador, sin modificar el acumulador D o (M:M+1).

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Page 99: dl3155m24hc11_teoria

DL3155M24HC11

98

V=1 Si hubo sobreflujo en complemento a dos en el resultado de laoperación; 0 en otro caso.

C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0en otro caso.

Mnemónicos: CPD (opr)

CPX

Compara el registro índice X

Operación: (IX) -- (M:M+1)

Descripción: Compara el contenido del registro índice X con un valor de 16 bits en ladirección especificada y activa el código de condición correspondiente. Lacomparación se realiza internamente al restar (M: M+1) del registro índice X,sin modificar alguno de los operandos.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: CPX (opr)

Page 100: dl3155m24hc11_teoria

DL3155M24HC11

99

CPY

Compara el registro índice Y

Operación: (IY) -- (M:M+1)

Descripción: Compara el contenido del registro índice Y con un valor de 16 bits en ladirección especificada y activa el código de condición correspondiente. Lacomparación se realiza internamente al restar (M: M+1) del registro índice Y,sin modificar alguno de los operandos.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: CPY (opr)

DAA

Ajuste decimal del ACCA

Operación: Suma números hexadecimales como 00, 06, 60 o 66 al acumulador, y activael bit de acarreo.

Mnemónico: DAA

Page 101: dl3155m24hc11_teoria

DL3155M24HC11

100

BCD(binary coded decimal). La tabla muestra los valores hexadecimales.

Descripción: Si el contenido de ACCA, el estado del bit C, acarreo/prestamo y elsemiacarreo del bit H, son el resultado de aplicar alguno de los operandosABA , ADD o ADC a operandos BCD, con o sin un acarreo inicial, laoperación DAA puede funcionar como sigue:La operación DAA, sujeta a las condiciones de la tabla, ajustará elcontenido de ACCA y del bit C en el CCR para representar la suma BCD y elcorrecto estado del bit C.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � �

N=1 Se activa si el bit más significativo del resultado, seencuentra activado; en cualquier otro caso es borrado.

Z=1 Se activa si todos los bits del resultado están borrados; selimpia en cualquier otro caso.

V No definidoC=1: Se activa o se borra, de acuerdo a la misma regla, como si

DAA y un operando que precede inmediatamente ABA, ADD,o ADC, fuesen remplazados por una adición BCD hipotética.

DEC

Decremento

Operación: (ACCX) ←← (ACCX)−− 01M ←←(M) −− 01

Descripción: Resta uno de los contenidos de ACCX o de M.Los bits N, Z y V en el CCR, se activan y deactivan de acuerdo a losresultados de la operación.El bit C en el CCR no es afectado por la oparación.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Page 102: dl3155m24hc11_teoria

DL3155M24HC11

101

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: DECA; DECB DEC(opr)

DES

Decremento del Stack Pointer

Operación: SP←←(SP) -- 0001

Descripción: Substrae un valor del stack pointer.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — — —

Mnemónico: DES

Page 103: dl3155m24hc11_teoria

DL3155M24HC11

102

DEX

Decremento del registro índice X

Operación: IX←←(IX) -- 0001

Descripción: Substrae un valor del registro índice X.Solo el bit "Z" es activado o borrado de acuerdo al resultado de laoperación.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — � — —

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Mnemónico: DEX

DEY

Decremento del registro índice Y

Operación: IY←←(IY) -- 0001

Descripción: Substrae un valor del registro índice Y.Solo el bit "Z" es activado o borrado de acuerdo al resultado de laoperación.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — � — —

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Mnemónico: DEY

Page 104: dl3155m24hc11_teoria

DL3155M24HC11

103

EOR

Operación de OR exclusiva.

Operación: ACCX←← (ACCX) ⊕⊕ (M)

Descripción: Ejecuta la operación lógica de OR exclusiva, entre el contenido de ACCX yel contenido de M, colocando el resultado en ACCX. (Cada bit de ACCXllega a ser modificado por la operación y por el contenido correspondientede los bits de M).

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: EORA (opr), EORB(opr)

FDIV

División fraccional

Operación: (ACCX) / (IX); IX -- Cociente, ACCD -- residuo

Descripción: Ejecuta una división fraccional sin signo, del numerador de 16 bits en elacumulador D, y el denominador de 16 bits en el registro índice X,activando los códigos de condición correspondientes. El cociente escolocado en el registro índice X y el residuo en el acumulador D. Se asumeque el punto flotante, es el mismo para ambos operandos. Dicho punto es ala izquierda del bit 15, para el cociente, considerando que el numerador esmenor al denominador. En caso de sobreflujo (denominador menor o igualal numerador) o división por cero, el cociente es $FFFF. En el caso dedivisión por cero, el residuo es indeterminado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — � � �

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

Page 105: dl3155m24hc11_teoria

DL3155M24HC11

104

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: FDIV

IDIV

División de enteros

Operación: (ACCX) / (IX); IX -- Cociente, ACCD -- residuo

Descripción: Ejecuta una división de enteros sin signo, del numerador de 16 bits en elacumulador D, y el denominador de 16 bits en el registro índice X,activando los códigos de condición correspondientes. El cociente escolocado en el registro índice X y el residuo en el acumulador D. Se asumeque el punto flotante, es el mismo para ambos operandos. Dicho punto es ala derecha del bit "0", para el cociente. Considerando que el numerador esmenor al denominador. En caso de división por cero, el cociente es $FFFF.En el caso de división por cero, el residuo es indeterminado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: IDIV

Page 106: dl3155m24hc11_teoria

DL3155M24HC11

105

INC

Incremento

Operación: ACCX ←← (ACCX) + 01 óM ←← (M) + 01

Descripción: Suma uno al contenido de ACCX o M.Los códigos de condición N, Z y V se activan o borran de acuerdo alresultado de esta operación.El bit C no es afectado en esta operación.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: INCA, INCB, INC (opr)

INS

Incremento del Stack Pointer

Operación: SP←←(SP) + 0001

Descripción: Suma un valor al stack pointer.

Registro de Códigos de condición (CCR)

No afectados

Mnemónico: INS

Page 107: dl3155m24hc11_teoria

DL3155M24HC11

106

INX

Incremento del registro índice X

Operación: IX←←(IX) + 0001

Descripción: Suma uno al registro índice X.Solo el bit "Z" es activado o borrado de acuerdo al resultado de laoperación.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — � — —

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Mnemónico: INX

INY

Incremento del registro índice Y

Operación: IY←←(IY) + 0001

Descripción: Suma uno al registro índice Y.Solo el bit "Z" es activado o borrado de acuerdo al resultado de laoperación.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — � — —

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Mnemónico: INY

Page 108: dl3155m24hc11_teoria

DL3155M24HC11

107

JMP

Salto

Operación: PC ←← dirección efectiva

Descripción: Salto a la instrucción almacenada en la dirección efectiva. La direcciónefectiva es obtenida de acuerdo a las reglas de direccionamientoextendido(EXT) o indexado(IND).

Registro de Códigos de condición (CCR)

No afectados

Mnemónico: JMP(opr)

JSR

Salto a subrutina

Operación: PC ←←(PC) + 0003 (para direccionamiento EXT o IND Y)PC ←←(PC) + 0002 (para direccionamiento DIR o IND X)↓↓ (PCL)SP←←(SP) - 0001↓↓ (PCH)SP ←← (SP) - 0001PC ←←dirección efectiva

Descripción: El contador de programa es incrementado en 3 ó 2, dependiendo del modode direccionamiento y es entonces colocado en la pila, 8 bits a la vez,primero, el byte menos significativo. El stack pointer apunta a la siguientedirección vacía de la pila. El salto ocurre a la instrucción almacenada en ladirección efectiva. La dirección efectiva es obtenida de acuerdo a las reglasde direccionamiento IND, DIR, EXT.

Registro de Códigos de condición (CCR)

No afectados

Mnemónico: JSR(opr)

Page 109: dl3155m24hc11_teoria

DL3155M24HC11

108

LDA

Carga el acumulador

Operación: ACCX ←← (M)

Descripción: Carga el contenido de la memoria al acumulador. Los códigos de condiciónson activados de acuerdo al dato.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: LDAA(opr), LDAB(opr)

LDD

Carga el acumulador doble

Operación: ACCD ←← (M : M + 1); ACCA ←← (M), ACCB ←← (M + 1);

Descripción: Carga el contenido de la localidad de memoria M y M + 1 dentro delacumulador D. Los códigos de condición, son activados de acuerdo al dato.La información de la localidad M es cargada al acumulador A y lainformación de M + 1 se carga en B.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: LDD(opr)

Page 110: dl3155m24hc11_teoria

DL3155M24HC11

109

LDS

Carga el Stack Pointer

Operación: SPH ←← (M)SPL ←← (M + 1);

Descripción: Carga el byte más significativo del stack pointer con el byte de memoria dela dirección especificada por el programa, y carga el byte menossignificativo del stack pointer con el siguiente byte de memoria, es decir,una dirección más de la especificada por el programa.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: LDS(opr)

LDX

Carga el registro índice X

Operación: IXH ←← (M)IXL ←← (M + 1);

Descripción: Carga el byte más significativo del registro índice X, con el byte de memoriade la dirección especificada por el programa, y carga el byte menossignificativo del registro índice X, con el siguiente byte de memoria, esdecir, una dirección más de la especificada por el programa.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.

Page 111: dl3155m24hc11_teoria

DL3155M24HC11

110

V=0

Mnemónico: LDX(opr)

LDY

Carga el registro índice Y

Operación: IYH ←← (M)IYL ←← (M + 1);

Descripción: Carga el byte más significativo del registro índice Y, con el byte de memoriade la dirección especificada por el programa, y carga el byte menossignificativo del registro índice Y, con el siguiente byte de memoria, esdecir, una dirección más de la especificada por el programa.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: LDY(opr)

Page 112: dl3155m24hc11_teoria

DL3155M24HC11

111

LSL

Corrimiento lógico a la izquierda(Igual que ASL)

Operación:

Descripción: Corrimiento de todos los bits de ACCX o M, una posición a la izquierda. Elbit 0 se carga con un "0". El bit "C", es cargado desde el bit mássignificativo de ACCX o M.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Desde fuente: LSLA; LSLB; LSL (opr)

LSLD

Corrimiento lógico a la izquierda del acumulador D(Igual que ASLD)

Operación:

Descripción: Corrimiento de todos los bits de ACCD, una posición a la izquierda. El bit 0es cargado con "0". El bit C, es cargado desde el bit más significativo deACCD.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otro

Page 113: dl3155m24hc11_teoria

DL3155M24HC11

112

caso.Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: LSLD

LSR

Corrimiento lógico a la derecha.

Operación:

Descripción: Corrimiento de todos los bits de ACCX o M, una posición a la derecha. Elbit 7 es cargado con "0". El bit C, es cargado desde el bit menossignificativo de ACCX o M.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — 0 � � �

N=0Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: LSRA; LSRB; LSR(opr)

Page 114: dl3155m24hc11_teoria

DL3155M24HC11

113

LSRD

Corrimiento lógico a la derecha del acumulador D

Operación:

Descripción: Corrimiento de todos los bits de ACCD, una posición a la izquierda. El bit 0es cargado con "0". El bit C, es cargado desde el bit más significativo deACCD.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — 0 � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: LSRD

MUL

Multiplicación sin signo

Operación: ACCD ←← ACCA * ACCB

Descripción: Multiplica los 8 bits en el acumulador A, por los 8 bits del acumulador B, yse obtiene un resultado sin signo de 16 bits, en el acumulador doble.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — — �

C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0en otro caso.

Mnemónico: MUL

Page 115: dl3155m24hc11_teoria

DL3155M24HC11

114

NEG

Negación

Operación: ACCX ←← - (ACCX) = 00 – (ACCX)M ←← - (M) = 00 – (M)

Descripción: Remplaza el contenido de ACCX o M con complemento a dos. Note que elvalor $80 no cambia.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: NEGA; NEGB, NEG(opr)

NOP

No-operación

Descripción: Esta es una instrucción de un solo byte, que únicamente causa unincremento en el contador de programa. Los registros no son afectados.

Registro de Códigos de condición (CCR)No afectados.

S X H I N Z V C— — — — — — — —

A. Mnemónico: NOP

Page 116: dl3155m24hc11_teoria

DL3155M24HC11

115

ORA

Operación OR inclusiva

Operación: ACCX ←← (ACCX) + (M)

Descripción: Ejecuta la operación OR inclusiva, entre el contenido de ACCX y elcontenido de M, colocando el resultado en ACCX. (Cada bit de ACCX seráafectado por la operación OR inclusiva del correspondiente bit de M yACCX).

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 .

Mnemónico : ORAA (opr); ORAB (opr)

PSH

Coloca datos en la pila

Operación: ↓↓(ACCX)SP ←← (SP) - 0001

Descripción: El contenido de ACCX, es almacenado sobre la pila en la direccióncontenida del stack pointer. El stack pointer, es decrementado.

Registro de Códigos de condición (CCR)

No afectados.

B. Mnemónico: PSHA, PSHB

Page 117: dl3155m24hc11_teoria

DL3155M24HC11

116

PSHX

Coloca el registro índice X en la pilaColoca el registro índice X en la pila

Operación: ↓↓(IXL), SP ←← (SP) – 0001↓↓(IXH), SP ←← (SP) - 0001

Descripción: El contenido del registro índice X, es colocado en la pila (primero el byte deorden bajo) en la dirección contenida del stack pointer. El stack pointer, esdecrementado dos veces.

Registro de Códigos de condición (CCR)No afectados.

C. Mnemónico: PSHX

PSHY

Coloca el registro índice Y en la pilaColoca el registro índice Y en la pila

Operación: ↓↓(IYL), SP ←← (SP) – 0001↓↓(IYH), SP ←← (SP) - 0001

Descripción: El contenido del registro índice Y, es colocado en la pila (primero el byte deorden bajo) en la dirección contenida del stack pointer. El stack pointer, esdecrementado dos veces.

Registro de Códigos de condición (CCR)No afectados.

D. Mnemónico: PSHY

Page 118: dl3155m24hc11_teoria

DL3155M24HC11

117

PUL

Extrae datos de la pilaExtrae datos de la pila

Operación: SP ←← (SP) + 0001;↑↑ ACCX

Descripción: El ACCX es cargado a la pila, en la dirección contenida del stack pointer. Elcontenido del stack pointer es incrementado.

Registro de Códigos de condición (CCR)No afectados.

E. Mnemónico: PULA, PULB.

PULX

Extrae el registro índice X de la pilaExtrae el registro índice X de la pila

Operación: SP ←← (SP) + 0001; ↑↑ (IXL),SP ←← (SP) + 0001; ↑↑ (IXH),

Descripción: El contenido del registro índice X, es extraído de la pila (primero el byte deorden alto) en la dirección contenida del stack pointer + 1. El stack pointer,se incrementa dos veces.

Registro de Códigos de condición (CCR)No afectados.

F. Mnemónico: PULX

Page 119: dl3155m24hc11_teoria

DL3155M24HC11

118

PULY

Extrae el registro índice Y de la pilaExtrae el registro índice Y de la pila

Operación: SP ←← (SP) + 0001; ↑↑ IYL,SP ←← (SP) + 0001; ↑↑ IYH,

Descripción: El contenido del registro índice Y, es extraído de la pila (primero el byte deorden alto) en la dirección contenida del stack pointer + 1. El stack pointer,es incrementado dos veces.

Registro de Códigos de condición (CCR)No afectados.

G. Mnemónico: PULY

ROL

Rota a la izquierda.

Operación:

Descripción: Corrimiento de todos los bits de ACCX o M, una posición a la izquierda. Elbit 0 se carga con "C", en donde "C" es el bit más significativo de ACCX oM.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Desde fuente: ROLA; ROLB; ROL(opr)

Page 120: dl3155m24hc11_teoria

DL3155M24HC11

119

ROR

Rota a la derecha

Operación:

Descripción: Corrimiento de todos los bits de ACCX o M, una posición a la derecha. Elbit 7 se carga con "C". El bit C, es el bit menos significativo de ACCX o M.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: RORA; RORB; ROR(opr)

Page 121: dl3155m24hc11_teoria

DL3155M24HC11

120

RTI

Regreso de interrupciones.

Operación: SP ←← (SP) + 0001, ↑↑ CCRSP ←← (SP) + 0001, ↑↑ ACCBSP ←← (SP) + 0001, ↑↑ ACCASP ←← (SP) + 0001, ↑↑ IXHSP ←← (SP) + 0001, ↑↑ IXLSP ←← (SP) + 0001, ↑↑ IYHSP ←← (SP) + 0001, ↑↑ IYLSP ←← (SP) + 0001, ↑↑ PCHSP ←← (SP) + 0001, ↑↑ PCL

Descripción: El código de condición, los acumuladores A y B, el registro índice X, elregistro índice Y, y el contador de programa, pueden ser restaurados a unestado de extracción desde la pila. Nota que el bit "X" en el registro códigode condición puede ser borrado como resultado de la instrucción RTI, perono puede activarse si fue borrado antes de la ejecución de la instrucciónRTI.

Registro de Códigos de condición (CCR)

Restaurados a su estado de extracción desde la pila.Mnemónico: RTI

RTS

Regreso de subrutina

Operación: SP ←← (SP) + 0001↑↑ PCHSP ←← (SP) + 0001↑↑ PCL

Descripción: El stack pointer es, incrementado en "1". El contenido del byte de memoria,en las direcciones ahora contenidas en el stack pointer, se cargan en 8 bitsde orden alto del contador d programa, después el stack pointer esnuevamente incrementado. Los contenidos del byte de memoria, en ladirección ahora ubicada en el stack pointer, son cargados en el byte deorden bajo del contador de programa.

Registro de Códigos de condición (CCR)

No afectadosMnemónico: RTS

Page 122: dl3155m24hc11_teoria

DL3155M24HC11

121

SBA

Resta entre acumuladoresOperación: (ACCA) ←← (ACCA) - (ACCB)

Descripción: Substracción entre los contenidos de ACCB, y ACCA colocando elresultado en ACCA. El contenido de ACCB no es afectado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico: SBA

SBC

Resta con acarreo

Operación: (ACCX) ←← (ACCX) -- (M) - (C)

Descripción: Substrae el contenido de M y el contenido de C desde lo contenido enACCX y coloca el resultado en ACCX.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico : SBCA(opr); SBCB (opr)

Page 123: dl3155m24hc11_teoria

DL3155M24HC11

122

SEC

Activa el acarreo

Operación: Bit C ←← 1

Descripción: Activa el bit "C" en el registro código de condición.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — — 1

C=1

Mnemónico: SEC

SEI

Activa la mascara de interrupción

Operación: Bit I ←← 1

Descripción: Activa el bit "I", de mascara de interrupciones, en el registro código decondición. Cuando el bit "I" es activado, todas las interrupcionesmascarables son inhibidas y el MPU reconocerá solo las fuentes deinterrupciones no mascarables o un SWI.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — 1 — — — —

I=1

Mnemónico: SEI

Page 124: dl3155m24hc11_teoria

DL3155M24HC11

123

SEV

Activa el bit de sobreflujo en complemento a dos.

Operación: Bit V ←← 1

Descripción: Activa el bit "V", sobreflujo por complemento a dos, en el registro códigode condición.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — — — 1 —

V=1

Mnemónico: SEV

STA

Almacena el acumulador

Operación: M ←← (ACCX)

Descripción: Almacena el contenido de ACCX en memoria. El contenido de ACCXpermanece sin cambio.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 .

Mnemónico: STAA(opr), STAB(opr)

Page 125: dl3155m24hc11_teoria

DL3155M24HC11

124

STD

Almacena el acumulador doble

Operación: M : M + 1 ←← (ACCD)

Descripción: Almacena el contenido del acumulador doble ACCD en memoria. Elcontenido de ACCD permanece sin cambio.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: STD(opr)

STOP

Detiene el proceso

Descripción: Si el bit "S", en el CCR es activado, entonces la instrucción STOP esdeshabilitada y funciona como instrucción de NOP. Si y solo si, el bit S enel CCR es borrado, la instrucción STOP causa que todos los sistemas dereloj sean alterados y el sistema sea colocado a potencia mínima, modo deespera (standby mode). Todos los registros del CPU permanecen sincambio, así como los pins de I/O, permanecen sin ser afectados.

Para restablecerse después de una instrucción STOP, se puede utilizar elReset, XIRQ, o una IRQ no mascarable. Cuando se utiliza XIRQ y el bit X enel CCR es borrado, la ejecución puede resumirse como operacionesapiladas para la interrupción XIRQ. Si el bit X esta activado, la ejecución dela interrupción XIRQ mascarable, se puede resumir con el opcode debúsqueda para la instrucción que sigue la instrucción STOP (continue).

Registro de Códigos de condición (CCR)

No afectados

Mnemónico: STOP

Page 126: dl3155m24hc11_teoria

DL3155M24HC11

125

STS

Almacena el stack pointerOperación: M ←← (SPH)

M + 1←← (SPL)

Descripción: Almacena el byte más significativo del stack pointer, en la dirección dememoria M, especificada por el programa. También almacena el byte menossignificativo del stack pointer, en la dirección de memoria, de la siguientelocalidad especificada por el programa.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 .

Mnemónico: STS(opr)

STX

Almacena el registro índice XOperación: M ←← (IXH)

M + 1←← (IXL)

Descripción: Almacena el byte más significativo del registro índice X, en la dirección dememoria M, especificada por el programa y almacena el byte menossignificativo del registro índice X, en la dirección de memoria, de lasiguiente localidad especificada por el programa.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico: STX(opr)

Page 127: dl3155m24hc11_teoria

DL3155M24HC11

126

STY

Almacena el registro índice YOperación: M ←← (IYH)

M + 1←← (IYL)

Descripción: Almacena el byte más significativo del registro índice Y, en la dirección dememoria M, especificada por el programa y almacena el byte menossignificativo del registro índice Y, en la dirección de memoria, de lasiguiente localidad especificada por el programa.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0 .

Mnemónico: STY(opr)

SUB

Substracción.Operación: (ACCX) ←← (ACCX) -- (M)

Descripción: Substrae el contenido de M y del contenido de ACCX, colocando elresultado en ACCX.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónico : SUBA(opr); SUBB (opr)

Page 128: dl3155m24hc11_teoria

DL3155M24HC11

127

SUBD

Substracción del acumulador "D", doble

Operación: (ACCD) ←← (ACCD) -- (M: M+1)

Descripción: Realiza la substracción de M:M+1 desde el acumulador D y coloca elresultado en ACCD.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � � �

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=1 Si hubo sobreflujo en complemento a dos en el resultado de la

operación; 0 en otro caso.C=1 Si hubo un acarreo desde el bit más significativo del resultado, 0

en otro caso.

Mnemónicos: SUBD (opr)

SWI

Interrupción por software

Operación: PC ←← (PC) + 0001↓↓(PCL), SP ←← (SP) -- 0001↓↓(PCH), SP ←← (SP) -- 0001↓↓(IYL), SP ←← (SP) -- 0001↓↓(IYH), SP ←← (SP) -- 0001↓↓(IXL), SP ←← (SP) -- 0001↓↓(IXH), SP ←← (SP) -- 0001↓↓(ACCA), SP ←← (SP) -- 0001↓↓(ACCB), SP ←← (SP) -- 0001↓↓(CCR), SP ←← (SP) -- 0001 I ←← 1PC ←← (vector SWI)

Descripción: El contador de programa es incrementado una vez. El contador deprograma, el registro índice Y, el registro índice X, y los acumuladores A yB son colocados dentro de la pila. El stack pointer es decrementado en 1,después que cada byte es almacenado en la pila.

Page 129: dl3155m24hc11_teoria

DL3155M24HC11

128

El bit "I" en el CCR esta activado. El contador de programa se carga con elvector(dirección) y la ejecución de la instrucción se resume en estalocalidad.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — 1 — — — —

I=1

Mnemónico: SWI

TAB

Transferencia del acumulador A, al acumulador B

Operación: ACCB ←← (ACCA)

Descripción: Mueve el contenido de ACCA a ACCB. El contenido previo de ACCB sepierde, mientras el de ACCA no es afectado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico : TAB

Page 130: dl3155m24hc11_teoria

DL3155M24HC11

129

TAP

Transferencia del acumulador A, al registro código de condición

Operación: CCR ←←(ACCA)

7 6 5 4 3 2 1 0 ACCA

S X H I N Z V C CCR

Acarreo o préstamo de MSB

Sobreflujo

Zero

Negativo

Mascara de interrupción- IMedio acarreo o semiacarreo (del

bit 3)

Mascara de interrupción X

Paro deshabilitado

Descripción: Transfiere el contenido del acumulador del bit 0 a 7, a su correspondientebit en el registro código de condición. El contenido del acumulador Apermanece sin cambio. Nota: el bit X, en el registro código de condiciónpuede ser borrado como el resultado de la instrucción TAP, pero puede noactivarse sí antes de la ejecución de TAP, fue borrado.

Códigosde condición:.

Activa o borra los códigos de acuerdo al valor de cada bit del acumuladorA.

Mnemónico : TAP

Page 131: dl3155m24hc11_teoria

DL3155M24HC11

130

TBA

Transferencia del acumulador B, al acumulador A

Operación: ACCA ←← (ACCB)

Descripción: Mueve el contenido de ACCB a ACCA. El contenido previo de ACCA sepierde, mientras el de ACCB no es afectado.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 —

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0

Mnemónico : TBA

TEST

Operación de prueba(Test Mode Only)

Descripción: Esta instrucción de un solo byte, causa que el contador de programa seacontinuamente incrementado. Puede ser ejecutada solo en el modo deprueba (test mode). El MPU puede ser restablecido al salir de estainstrucción.R/ = 1(lectura, Read), durante esta instrucción. El código de ejecuciónesta suspendido durante esta instrucción. Este es un opcode ilegal, cuandoesta en modo prueba.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: TEST

Page 132: dl3155m24hc11_teoria

DL3155M24HC11

131

TPA

Transferencia del registro código de condición, hacia el acumulador A

Operación: ACCA ←← (CCR)

7 6 5 4 3 2 1 0 ACCA

S X H I N Z V C CCR

Acarreo o préstamo de MSB

Sobreflujo

Zero

Negativo

Mascara de interrupción- IMedio acarreo o semiacarreo (del

bit 3)

Mascara de interrupción X

Paro deshabilitado

Descripción: Transfiere el contenido del registro código de condición, a sucorrespondiente bit en el acumulador A. El registro código de condiciónpermanece sin cambio.

Códigosde condición:.

No afectado

Mnemónico : TPA

Page 133: dl3155m24hc11_teoria

DL3155M24HC11

132

TST

PruebaOperación: (ACCX) -- 00

(M) -- 00

Descripción: Substrae $00 del contenido de ACCX o M y activa los códigos de condicióncorrespondientes. La substracción es realizada internamente sin modificara ACCX o M.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — — � � 0 0

N=1 Si el bit más significativo del resultado, es 1; 0 en cualquier otrocaso.

Z=1 Si todos los bits del resultado es 00; 0 en cualquier otro caso.V=0C=0 .

Mnemónico: TSTA, TSTB, TST(opr)

TSX

Transferencia del stack pointer al registro índice X

Operación IX ←←(SP) + 0001

Descripción: Carga el registro índice X, con el stack pointer más uno. El contenido delstack permanece sin cambio.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: TSX

Page 134: dl3155m24hc11_teoria

DL3155M24HC11

133

TSY

Transferencia del stack pointer al registro índice Y

Operación IY ←←(SP) + 0001

Descripción: Carga el registro índice Y, con el stack pointer más uno. El contenido delstack permanece sin cambio.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: TSY

TXS

Transferencia del registro índice X, al stack pointer

Operación SP ←←(IX) -- 0001

Descripción: Carga el stack pointer con el registro índice X, menos uno. El contenido delregistro índice X, permanece sin cambio.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: TXS

TYS

Transferencia del registro índice Y, al stack pointer

Operación SP ←←(IY) -- 0001

Descripción: Carga el stack pointer con el registro índice Y, menos uno. El contenido delregistro índice Y, permanece sin cambio.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: TYS

Page 135: dl3155m24hc11_teoria

DL3155M24HC11

134

WAI

Espera para interrupción

Operación: PC ←← (PC) + 0001↓↓(PCL), SP ←← (SP) -- 0001↓↓(PCH), SP ←← (SP) -- 0001↓↓(IYL), SP ←← (SP) -- 0001↓↓(IYH), SP ←← (SP) -- 0001↓↓(IXL), SP ←← (SP) -- 0001↓↓(IXH), SP ←← (SP) -- 0001↓↓(ACCA), SP ←← (SP) -- 0001↓↓(ACCB), SP ←← (SP) -- 0001↓↓(CCR), SP ←← (SP) -- 0001

Descripción: El contador de programa se incrementa en uno. Los acumuladores A y B, elregistro índice Y, el registro índice X y el contador de programa, soncolocados dentro de la pila, así como, el registro código de condición.El stack pointer es decrementado en uno, y después cada byte de datos esalmacenado en la pila.El MPU entonces entra a un estado de espera para un número entero deciclos E-clock del MPU. Mientras, en el estado de espera, el bus dedirecciones es $FFFF. El MPU deja el estado de espera cuando censa unainterrupción, la cual no ha sido mascarada.Después del estado de espera, el MPU activa el bit "I" en el CCR, busca elvector(dirección) correspondiente a la interrupción censada, y la ejecuciónde instrucciones continua en esta localización.

Registro de Códigos de condición (CCR)

S X H I N Z V C— — — 1 — — — —

N=1

Mnemónico: WAI

Page 136: dl3155m24hc11_teoria

DL3155M24HC11

135

XGDX

Intercambio entre el acumulador "D" y el registro índice X

Operación: (IX) ⇔⇔ (ACCD)

Descripción: Intercambia el contenido del acumulador "D" con el contenido del registroíndice X.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: XGDX

XGDY

Intercambio entre el acumulador "D" y el registro índice Y

Operación: (IY) ⇔⇔ (ACCD)

Descripción: Intercambia el contenido del acumulador "D" con el contenido del registroíndice Y.

Registro de Códigos de condición (CCR)

No afectados.

Mnemónico: XGDY

Page 137: dl3155m24hc11_teoria

DL3155M24HC11

136

TABLA DE CARACTERES ASCIIHEX (MS, LS)

CARACTERES ASCII (código de 7 bits)MS

LS0 1 2 3 4 5 6 7

0 NUL DLE SP 0 @ P ` p

1 SOH DC1 ! 1 A Q a q

2 STX DC2 " 2 B R b r

3 ETX DC3 # 3 C S c s

4 EOT DC4 $ 4 D T d t

5 ENQ NAK % 5 E U e u

6 ACK SYN & 6 F V f v

7 BEL ETB ' 7 G W g w

8 BS CAN ( 8 H X h x

9 HT EM ) 9 I Y i y

A LF SUB * : J Z j z

B VT ESC + ; K [ k {

C FF FS , < L \ l |

D CR GS - = M ] m }

E SO RS . > N ^ n ~

F SI US / ? O _ o DEL

Page 138: dl3155m24hc11_teoria

DL3155M24HC11

137

CONVERSIÓN DECIMAL Y HEXADECIMAL.

Como usarse.

Conversión a decimal: Encuentre él numero correspondiente, comenzando con el carácterhexadecimal menos significativo, la posición de los bits y el tamaño de la palabra,facilitan la conversión. La suma total de cada valor decimal encontrado es elproporcional al hexadecimal.

Conversión a hexadecimal: La conversión inicia buscando el numero correspondiente queserá menor o igual al número decimal a convertir, considerando que el carácterhexadecimal es el más significativo. Reste el valor decimal encontrado, de él número aser convertido. Con la diferencia repita el proceso para encontrar el carácter hexadecimalsubsiguiente(respete el orden y la posición de cada byte).

Page 139: dl3155m24hc11_teoria

DL3155M24HC11

138

15 Byte 8 7 Byte 015 caract. 12 11 caract. 8 7 caract.

43 caract. 0

HEX DEC HEX DEC HEX DEC HEX DEC0 0 0 0 0 0 0 01 4,096 1 256 1 16 1 12 8,192 2 512 2 32 2 23 12,288 3 768 3 48 3 34 16,384 4 1,024 4 64 4 45 20,480 5 1,280 5 80 5 56 24,576 6 1,536 6 96 6 67 28,672 7 1,792 7 112 7 78 32,768 8 2,048 8 128 8 89 36,864 9 3,304 9 144 9 9A 40,960 A 2,560 A 160 A 10B 45,056 B 2,816 B 176 B 11C 49,152 C 3,072 C 192 C 12D 53,248 D 3,328 D 208 D 13E 57,344 E 3,584 E 224 E 14F 61,440 F 3,840 F 240 F 15

Page 140: dl3155m24hc11_teoria

DL3155M24HC11

139

Page 141: dl3155m24hc11_teoria

DL3155M24HC11

140

UNIDAD 4

OPERACIONES CON LA PILA

Page 142: dl3155m24hc11_teoria

DL3155M24HC11

141

CONTENIDO

4.1 INTRODUCCION

4.2 OPERACIONES CON LA PILA

Page 143: dl3155m24hc11_teoria

DL3155M24HC11

142

4.1 INTRODUCCION

En unidades previas usted fue introducido a la arquitectura y al conjunto de instrucciones delmicroprocesador 68HC11. Se discutieron muchas de las capacidades de la MPU; sin embargo,fueron omitidas algunas áreas importantes. Entre esas se incluyen las operaciones con la pila,el uso de subrutinas, entrada/salida y capacidades de interrupción.

Hasta este punto usted estará familiarizado, y en algunos casos dominará el manejo dememoria, los mnemónicos y la operación de ciertas instrucciones del conjunto total deinstrucciones para el 68HC11. En esta unidad, presentaremos y discutiremos las dieciséisinstrucciones usadas para llevar a cabo operaciones con la pila del 68HC11. Conforme avanceen el estudio de esta unidad, encontrará relativamente fácil recordar la operación de lasinstrucciones presentadas, por medio de sus mnemónicos. Este proceso de “memorización” deoperación de instrucciones (mediante sus mnemónicos) se hace fácil si se agrupan losdiferentes tipos de instrucciones para su estudio. Así, es claro que será más fácil recordar losmnemónicos y operaciones de, por ejemplo, cuatro instrucciones relacionadas cercanamente(con algo en común), que los de cuatro operaciones totalmente diversas.

En cuanto a las operaciones con la pila discutidas en esta unidad, aunque aprenderá un total dedieciséis nuevas instrucciones, verá que las primeras ocho de estas caen en una de doscategorías: ya sea guardar (push) un dato en; o tomar un dato de la pila. Las restantes ochoinstrucciones caen dentro de tres categorías: incrementar/decrementar (la pila),cargar/almacenar (la pila), o transferir un registro a la pila (o de). Cumpliendo la tarea deaprender a programar con las técnicas correctas, nos llevará a obtener mayor eficiencia en laprogramación de microprocesadores.

Page 144: dl3155m24hc11_teoria

DL3155M24HC11

143

4.2 OPERACIONES CON LA PILA

En el lenguaje común de las computadoras, una pila es un grupo de localidades dealmacenamiento temporal en las cuales pueden almacenarse datos para ser recuperadosdespués. Desde este punto de vista, una pila es como una memoria. De hecho, muchosmicroprocesadores usan una sección de la memoria como pila. La diferencia entre una pila yotras formas de memoria es el método por el cual sé accesa a los datos y se direcciona. Ladiscusión comenzará considerando un arreglo de pila sencillo usado en algunosmicroprocesadores. Después se discutirá un arreglo de pila más sofisticado empleado por laMPU 68HC11.

H. Pila en cascada

HACIA/DESDE ELACUMULADOR

8

REG

ISTR

OS

DE

LA P

ILA

TO

PE D

E LA

PIL

A O

STA

CK

Fig .4-1. Pila encascada

Algunos microprocesadores tienen un grupo especial de registros(usualmente 8 o 16) llamado pila en cascada. Cada registro puederetener un dato de un byte. Puesto que estos registros forman parte delchip del MPU, conforman unas localidades de almacenamientotemporal excelentes. Si necesitamos liberar el acumulador por algunarazón, podemos almacenar su contenido en la pila. Posteriormente, sise requiere ese dato nuevamente, lo podremos recuperar de la pila.Claro que pudimos liberar el acumulador guardando el dato enmemoria. ¿Cuál es, entonces, la ventaja de la pila?

Una ventaja de la pila, es la forma en que es accesada o direccionada.Recuerde que para almacenar un byte en memoria, se requiere unadirección. Esto representa una instrucción de 2 o 3 bytes paraalmacenar el contenido del acumulador. Dependiendo del modo dedireccionamiento, el último o los últimos dos bytes son la dirección. Mástarde, si se recupera el byte, se emplea otra instrucción que tambiéntiene una dirección.

Otra ventaja de la pila es que los datos pueden ser almacenados oleídos con instrucciones de un solo byte. Es decir , las instruccionesusadas con la pila no requieren dirección. Por lo tanto, se trata deinstrucciones de un solo byte.

La Figura 4-1 muestra una pila de 8 registros similar a la que seencuentra en algunos microprocesadores. Esta se llama pila encascada, por el hecho de que los datos son cargados y recuperados.Todas las transferencias de datos se hacen entre el tope de la pila y elacumulador. Esto es, el acumulador se comunica sólo con la localidadtope de la pila. Los datos son transferidos a la pila con una instrucciónespecial llamada PUSH.

Page 145: dl3155m24hc11_teoria

DL3155M24HC11

144

La Instrucción PUSH.

La Figura 4-2 ilustra como la instrucción PUSH coloca datos en la pila. El número 0116 se hallaen el acumulador y deseamos almacenarlo temporalmente. Aunque podríamos almacenar elnúmero en memoria, esto requeriría una instrucción de 2 o 3 bytes. En lugar de ello, usamos lainstrucción PUSH para colocar ese número en la pila. Note que el número es colocado en laposición tope de la pila como se ilustra en la Figura 4-2A. Dicho número permanece allí hastaque lo recuperemos o encimemos otro byte en la pila.

La Figura 4-2B muestra que pasa sí, tiempo después, colocamos otro byte en la pila. Note queel acumulador contiene ahora 0316. Si ejecutamos la instrucción PUSH, el contenido delacumulador es encimado arriba de la pila. Para hacer espacio para este nuevo número, elnúmero original, 0116, es “empujado” hacia dentro de la pila.

Las Figuras 4-2C y 4-2D muestran dos números más siendo colocados en la pila en puntosposteriores del programa. Note que los datos nuevos siempre son colocados en la cima de lapila. Haciendo espacio para los nuevos datos, los datos anteriores se recorren hacia debajo dela pila. Por esta razón, este arreglo es llamado pila descendente o pila en cascada. El nombrede pila en cascada viene del flujo característico de los datos en la pila cada que un nuevo datoes colocado en el tope.

Fig. 4-2 Recorriendo datos hacia dentro de la pila

Page 146: dl3155m24hc11_teoria

DL3155M24HC11

145

La Instrucción PULL.

La MPU recupera datos de la pila usando la instrucción PULL. En algunos microprocesadores,esta se le conoce como la instrucción POP.

La Figura 4-3 ilustra como los datos son “jalados” (extraídos) de la pila. La Figura 4-3A muestracomo aparece la pila después de la última operación PUSH. Note que contiene cuatro bytes dedatos. El último byte introducido se halla en la cima de la pila.

La instrucción PULL recupera el byte que está en la cima de la pila. Cuando este byte esremovido de la pila, todos los otros bytes se mueven hacia arriba, llenando el hueco dejado poreste byte. La Figura 4-3B ilustra cómo 0F16 es extraído de la pila. Note que ahora 0716 se hallaen la cima de la pila.

Las Figuras 4-3C y 4-3D muestran cómo pueden ser extraídos los siguientes dos bytes de lapila. En cada caso, los bytes restantes se mueven hacia arriba de la pila, llenando el registrodesocupado por el byte removido.

Si usted compara las Figuras 4-2 y 4-3, notará que los datos deben ser extraídos de la pila en elorden inverso. Esto es, el último byte colocado en la pila es el primero que es extraído de lapila. Otro nombre para este arreglo es Last in first out, último en entrar/ primero en salir (LIFO).

Fig. 4-3. Extrayendo datos desde la pila.

Page 147: dl3155m24hc11_teoria

DL3155M24HC11

146

Recuerde que es un byte previo de 18 para la instrucción PULY

Pila en Memoria.

Aunque la pila en cascada es valiosa, tiene algunas limitaciones. Por un lado, el número deregistros es muy limitado, típicamente de ocho. Si se colocan más de ocho datos en la pila, losdatos “anteriores” son empujados al fondo y se pierden. También, la lectura de los datos de lapila es destructiva. Cuando un byte es extraído de la pila, ya no existe en ésta. Esto esfundamentalmente diferente de cuando se lee un byte de la memoria.

Por estas limitaciones la MPU 68HC11 no emplea la pila en cascada. En vez de ello, unasección de la RAM puede ser destinada por el programador para actuar como pila.Esto tiene algunas ventajas. Primero, la pila puede tener la longitud que el programadorrequiera. Segundo, el programador puede definir más de una pila si lo desea. Tercero, él puededireccionar los datos en la pila usando cualquiera de las instrucciones que direccionanmemoria.

Apuntador de Pila. Recuerde que la MPU 68HC11 tiene un registro de 16 bits llamado elapuntador de pila. En una pila del tipo de memoria, el apuntador de pila define la localidad dememoria que actúa como cima de la pila.

La pila en cascada, considerada antes, generalmente no requiere un apuntador de pila. La cimade la pila se determina por hardware. Durante las operaciones de colocar y extraer, los bytes dedatos se mueven de un registro a otro. Esto es, la cima de la pila permanece estacionaria y losdatos se mueven hacia arriba o abajo con relación a la pila.

En la pila de memoria, los datos no pueden ser fácilmente transferidos de una localidad a lasiguiente. Por lo tanto, en vez de mover los datos arriba o abajo con relación a la pila, es muchomás fácil mover la cima de la pila respecto a los datos.

Generalmente, cuando se planea un sistema basado en microprocesador, se reserva unasección de RAM para la pila. Esta debiera ser una sección de RAM que no sea empleada paracualquier otro propósito.

Una vez hecho esto, la pila puede ser fijada por un programa. La cima de la pila se establececargando una dirección en el apuntador de pila. Por ejemplo, suponga que deseamosestablecer la dirección 01F916 como la cima de la pila. Podría usarse la siguiente instrucción:

LDS# 01F9

Esta carga la dirección 01F916 en el apuntador de pila y establece esta dirección como la cimade la pila. Sin embargo, como verá, la cima de la pila se mueve cada vez que algún dato escolocado – o extraído de – la pila.

Page 148: dl3155m24hc11_teoria

DL3155M24HC11

147

Las Instrucciones PUSH. El 68HC11 tiene cuatro instrucciones PUSH: PSHA, PSHB,PSHX Y PSHY. Estas instrucciones son usadas para cargar la pila desde cualquiera de los dosacumuladores (A,B), o desde cualquiera de los dos registros índice (X,Y).Junto con sus correspondientes cuatro instrucciones PULL,( discutidas en la siguiente sección),estas ocho instrucciones PUSH/PULL proporcionan mucha flexibilidad en el uso de la pila del68HC11.

La Figura 4-4 muestra el efecto de la instrucción PSHA. Antes que la instrucción sea ejecutada,el apuntador de pila contiene la dirección 01F916 como resultado de una previa instrucción LDS.El acumulador A contiene un byte de dato (AA16). Si ahora se ejecuta la instrucción PSHA, elcontenido del acumulador A es colocado en la localidad de memoria 01F916. Entonces, elapuntador de pila es decrementado automáticamente a 01F816. Esto mueve automáticamente lacima de la pila como se muestra.

Fig. 4-4 Ejecutando la instrucción PSHA

Si usted revisa el Apéndice A o la Programming Reference Guide, verá que la operación sedescribe como sigue:

A à Stk, SP = SP – 1

Esto significa que el contenido del acumulador A es transferido a la localidad de memoriaespecificada por el apuntador de pila. También, el contenido del apuntador de pila esreemplazado por el contenido previo del apuntador de pila menos uno. En otras palabras,después que tiene lugar la transferencia acumulador-a-pila, el apuntador de pila esdecrementado en uno.

Para reforzar la idea, suponga que en un punto posterior del programa, la MPU ejecuta unainstrucción PSHB. Esto es ilustrado en la Figura 4-5. Antes de ejecutar PSHB, el acumulador B

Page 149: dl3155m24hc11_teoria

DL3155M24HC11

148

contiene BB16 y el apuntador de pila aún apunta a 01F816. Cuando se ejecuta PSHB, elcontenido del acumulador B es colocado en la pila y el apuntador de pila es decrementado a01F716.

La ejecución de las instrucciones PSHX y PSHY es similar a las referidas al acumuladorexcepto que el contenido del registro índice es colocado en la pila. Recuerde que los registrosíndice son registros de 16 bits. Esto causa que, cuando PSHX o PSHY es ejecutado, el byte deorden bajo, sea colocado en la pila (en la dirección contenida en el apuntador de pila) primero.Entonces, el apuntador de pila es decrementado en dos. Estas operaciones son resumidas porel registro IX como sigue:

IX àà Stk, SP = SP – 2IY àà Stk, SP = SP – 2

Note que, (como con otras instrucciones del registro índice Y) el opcode hexadecimal paraPSHY es el mismo que para PSHX, pero es precedido por el byte de 18.

Fig. 4-5. Ejecutando la instrucción PSHB

Las Instrucciones PULL. Los bytes de datos pueden ser removidos o “jalados” desde lapila y colocados ya sea en el acumulador (A,B) o en el registro índice (X,Y). El 68HC11 tienecuatro instrucciones de extracción para realizar esas operaciones.

PULA permite a la MPU extraer datos de la pila y ponerlos en el acumulador A. PULB lleva acabo una operación similar excepto que el dato va al acumulador B. En cada caso, el dato estomado de la cima de la pila. Así, el dato disponible por la MPU es el último byte que fuecolocado en la pila.

Por ejemplo, la Figura 4-6A muestra la pila como fue dejada después de la última instrucción dePUSH. La Figura 4-6B muestra que pasa si se ejecuta la instrucción PULA. Primero, elapuntador de pila se incrementa automáticamente en uno a 01F816. Luego, el contenido de la

Page 150: dl3155m24hc11_teoria

DL3155M24HC11

149

localidad de memoria designada por el apuntador de pila es transferido al acumulador A. Así,BB16 va al acumulador A. Note que el apuntador de pila es incrementado antes que el byte searetirado de la pila.

Para comprobar que tiene la idea, considere qué pasa si ahora se ejecuta la instrucción PULB.La Figura 4-6C muestra que la pila es incrementada automáticamente a 01F916. El contenido deesa localidad es entonces extraído al acumulador B. Esta operación se describe:

SP = SP + 1, B SP = SP + 1, B ßß Stk Stk

Fig. 4-6 Ejecutando la instrucción PULL

La función de las instrucciones PULX y PULY es similar a la de las instrucciones PULA/PULBdiscutidas anteriormente, sin embargo, el dato es extraído (primero el byte de orden alto) ycargado en el registro índice. Esto comienza en la dirección contenida en el apuntador de pila+ 1. El apuntador de pila es incrementado en 2. Estas operaciones pueden ser expresadassimbólicamente:

SP = SP + 2, IX ßß StkSP = SP + 2, IY SP = SP + 2, IY ßß Stk Stk

Recuerde que hay un pre byte de 18 para la instrucción PULY.

Usando la Pila. Como ya vimos, 8 de las 16 instrucciones básicas de la pila son paracolocar datos o para retirarlos de ella. Como se demuestra en algunos de los experimentos de

Page 151: dl3155m24hc11_teoria

DL3155M24HC11

150

la Unidad 8, las instrucciones PUSH/PULL pueden usarse para guardar temporalmente loscontenidos de acumuladores o registros índice. Esto puede hacerse con operaciones quedestruyen los contenidos de esos registros.

Las 8 instrucciones restantes están enfocadas a operaciones de pila relativamente sencillas.Muchas de ellas han sido discutidas o sé explican ellas misma. Estas incluyen a INS, queincrementa en uno el apuntador de pila; DES para decrementarlo; LDS, que carga el apuntadorde pila desde dos direcciones de memoria consecutivas; TSX y TSY, que cargan el registroíndice especificado con el contenido del apuntador de pila más uno; y TXS y TYS que cargan elapuntador de pila con el contenido del registro índice especificado menos uno. La Figura 4-7resume estas instrucciones. Las instrucciones PUSH y POP son listadas con las Operacionesdel Acumulador y la Memoria. Aquellas instrucciones que afectan al apuntador de pila sonlistadas con las Operaciones del Registro Indice y Apuntador de Pila. Como con otrasinstrucciones, usted se familiarizará y adquirirá soltura en el uso de ellas a través del estudio yla práctica.

MODOS DE DIRECIONAMIENTOMODOS DE DIRECIONAMIENTO

Fig. 4-7 Instrucciones de pila y apuntador de pila

Los siguientes son unos ejemplos del uso de la pila. Primero considere un ejemplo trivial.Usando solamente operaciones de pila, intercambie los contenidos de los acumuladores A y B.Suponiendo que el apuntador de pila ya ha sido ajustado, el segmento de programa puedeverse como sigue:

PSHAPSHBPULAPULB

Suponga que el acumulador A contiene inicialmente AA16 y que el acumulador B contiene BB16.La primera instrucción coloca AA16 en la pila. Luego, BB16 es colocado en la pila. La tercerainstrucción extrae BB16 de la cima de la pila y la coloca en el acumulador A. Finalmente, laúltima instrucción extrae AA16 de la pila y la coloca en el acumulador B. Como usted puede ver,los contenidos de los dos acumuladores son intercambiados. La siguiente rutina logra la mismatarea con una instrucción menos:

Page 152: dl3155m24hc11_teoria

DL3155M24HC11

151

PSHATBA

PULB

Ahora veamos un ejemplo más complejo. Supongamos que se desean transferir 1610 bytes dedatos de un lugar en memoria a otro. Como se vio en la unidad anterior, este tipo de problemaes un buen candidato para indexar. Sin embargo, el indexado resulta problemático si las doslistas se hallan sobre la localidad de memoria FF16. La razón de esto es que la compensaciónde dirección (offset), sólo pueden manejar un máximo de FF16 localidades sobre la direcciónque se halle en el registro índice.

En este ejemplo, asuma que se desea mover los datos de las localidades de memoria 001016

hasta la 001F16, a las localidades 01F016 a la 01FF16. Aunque esto puede hacerse empleandoindexado directo, el programa se vuelve innecesariamente complicado. Se deben mantener dosíndices separados; uno para cargar los datos desde 001016 hasta 001F16, y el otro paraalmacenar los datos en 01F016 a la 01FF16. Una aproximación sencilla es usar el indexado parauna operación y la capacidad de la pila para la otra. Esto es, podríamos cargar datos de la listainferior usando indexado y almacenarlos en la lista superior empleando la capacidad de la pila.

Un programa que hace esto es el mostrado en la Figura 4-8. La primera instrucción carga elapuntador de pila con la dirección 01FF16. Esta es la dirección de la última entrada, en la nuevalista que se formará. Recuerde que la nueva lista se escribirá en las localidades 01F016 a la01FF16. Una vez que la localidad 01FF16 es establecida como la cima de la pila, podemosintroducir datos en la nueva lista simplemente colocándolos en la pila. Puesto que el apuntadorde pila es decrementado con cada operación de apilado, debemos apilar la última entrada de lalista en la cima de la pila.

DIRECCIONHEX.

CONTENIDOHEX.

CONTENIDO HEX/.MNEMONICO

COMENTARIOS

0020 8E0021 010022 FF

LDS #01FF

Carga el apuntador de pila o stack pointer inmediatamente con ladirección de la nueva entrada en la nueva lista

0023 CE0024 000025 1F

LDX #001F

Cargar el registro indexado inmediatamente con la dirección de laultima entrada en la lista original

0026 A60027 00

LDAA, X00

Carga el acumulador A, indexado desde la lista original.

0028 36 PSHA Coloca el contenido del acumulador A, en la nueva lista0029 09 DEX Decrementa el registro indexado002A 8C002B 00002C 0F

CPX #000F

Compara el contenido del registro indexado con una direcciónmenos que la de la primer entrada en la lista original.

002D 26002E F7

BNEF7

De lo contrario salta hacia atrás.

002F CF STOP Paro

Fig. 4-8 Mueva una lista de datos usando, operaciones de pila e indexados

Page 153: dl3155m24hc11_teoria

DL3155M24HC11

152

La segunda instrucción carga el registro índice con la dirección de la última entrada de la listaoriginal. Esto es necesario por la razón escrita arriba.

Enseguida, el acumulador A se carga usando direccionamiento indexado. Ya que lacompensación de dirección es 0016, el acumulador se carga con el contenido de 001F16. Estoes, la última entrada en la lista original, es cargada al acumulador A.

Entonces, la instrucción PSHA coloca el contenido del acumulador A en la pila. Así, la últimaentrada de la lista original es transferida a la localidad 01FF16. En el proceso, el apuntador depila es decrementado automáticamente a 01FE16.

El registro índice es decrementado a 001E16 por la siguiente instrucción. Entonces, lainstrucción CPX compara el registro índice con 000F16 para ver si todas las entradas de la listahan sido trasladadas. Si no son iguales, la MPU bifurca o salta hacia atrás y toma la siguienteentrada de la lista. El lazo se repite una y otra vez hasta que la lista entera se transfiere a sunueva localidad.

Algunos usos adicionales de la pila serán revelados después. Sin embargo, aún si la pila nohace más que lo anterior, con ello muestra las útiles capacidades que tiene. Pero como ustedverá, la MPU usa la pila de otras maneras, haciendo esta capacidad aún más importante.

Page 154: dl3155m24hc11_teoria

DL3155M24HC11

153

UNIDAD 5

OPERACIONES DE ENTRADA Y SALIDA EINTERRUPCIONES

Page 155: dl3155m24hc11_teoria

DL3155M24HC11

154

CONTENIDO

5.1 OPERACIONES DE ENTRADA SALIDA

5.2 RESETS E INTERRUPCIONES

Page 156: dl3155m24hc11_teoria

DL3155M24HC11

155

5.1 OPERACIONES DE ENTRADA-SALIDA (I/O).

Un sistema microprocesador, es más funcional cuando acepta datos desde exterior,procesándolos en alguna sección, y presentando los resultados hacia fuera del micro. Losdispositivos de entrada pueden no ser más que un grupo de interruptores; así como losdispositivos de salida pueden ser tan simples como un grupo de lamparas indicadoras. Unsimple microprocesador maneja diversos dispositivos como: teleimpresores, impresoras,maquinas etc. El punto es que, los requerimientos de I/O, pueden variar considerablemente deuna aplicación a otra. Esta sección esta enfocada a operaciones de I/O e interfaces

En una breve historia de los microprocesadores, se han desarrollado dos distintos métodospara el manejo de operaciones. En algunos microprocesadores, las operaciones I/O semanejan por instrucciones I/O. Estos microprocesadores generalmente tienen una instrucciónde entrada y una instrucción de salida. Cuando la instrucción de entrada "input", se ejecuta, unbyte es transferido desde el dispositivo seleccionado I/O a un registro del MPU. El registroinvolucrado es usualmente el acumulador, este método de operación I/O, se le conoce comoaccumulator I/O. El dispositivo I/O selecciona y envía un byte de selección de dispositivo, sobreel bus de direcciones. Para usar un byte de 8 bits en el dispositivo selector, el MPU puedeespecificar 25610 diferentes dispositivos I/O. Claro esta que pocos sistemasmicroprocesadores, usan muchos dispositivos por la compatibilidad que implicaría. Lainstrucción para salida output, causa la transferencia de datos desde el acumulador hacia eldispositivo I/O. Aunque este método para manejo de operaciones I/O, se usa con frecuencia enmuchos microprocesadores, el MPU 68HC11 usa una técnica diferente.

El otro método para manejo de operaciones I/O, involucra todas las transferencias de I/O comotransferencias de memoria. Este método, es llamado memory-maped I/O, es decir manejo dememoria mapeada para I/O. Dicho método lo utiliza el MPU 68HC11 y muchos otrosmicroprocesadores. Debe notarse que el MPU puede ejecutar operaciones accumulator I/O, asícomo operaciones memory-mapped I/O.

El MPU 68HC11 no tiene instrucciones I/O. A un dispositivo I/O se le asigna una dirección y estratado como una localidad de memoria. Por ejemplo, supónga que una entrada de teclado asido asignada a la dirección 800016. Podemos ingresar datos al acumulador A con el uso de lainstrucción:

LDAA 800016

Tocante a lo mismo, una salida a display puede estar asignada a la dirección 900016. En estecaso, podemos en este caso podemos llevarla al acumulador B con la instrucción:

STAB 900016

Como se aprecia, el dispositivo I/O es tratado como una localidad de memoria. El diagrama abloques del sistema, se muestra en la Fig. 5-1. Indica como un dispositivo I/O es conectado almicrocomputador. Note que ambos, tanto el bus de datos como el bus de direcciones, estánconectados la interfaz I/O. Una interfaz típica consiste de un addres decoder, (decodificador dedirecciones), una salida (output), una entrada (input latch) y buffers o drivers.

Page 157: dl3155m24hc11_teoria

DL3155M24HC11

156

UNIDAD MICROP. (MPU)

DISPOSITIVOS

-Fig. 5-1. Entradas y salidas para una microcomputadora

El address decoder, monitorea el bus de direcciones y habilita la circuitería de la interfaz paraun dispositivo particular, solo si la dirección apropiada se detecta. Esto previene al dispositivoI/O particular, de una interferencia cuando el dato es transferido entre la memoria y el MPU. Eladdress decoder también previene a los diferentes dispositivos I/O, de interferencia mutua.

La interfaz I/O, generalmente tendrá una salida latch si es que llega a ser usada por unaoperación de salida. La razón para esto es que el dato desde el MPU aparecerá sobre la líneade datos, por un instante muy corto (generalmente menor a un microsegundo). Por almacenarlos datos de salida en un latch, el dispositivo da un mayor periodo de tiempo, permitiendo asírevisar la respuesta de datos.

Los buffers o drivers se incluyen también en la interfaz I/O. Son frecuentemente necesarioscuando circuitos generales y diferentes comparten el mismo bus. Los buffers proveen elaislamiento entre el dispositivo I/O y el bus MPU.

BUSDE

DATOS

SALIDAS

BUSDE

DIRECCIONES

Page 158: dl3155m24hc11_teoria

DL3155M24HC11

157

OPERACIONES DE SALIDA.

La figura 5-2 muestra un circuito de salida simplificado. Aquí el dispositivo de salida es un grupode 8 diodos emisores de luz (LED’s). Cada detalle se muestra para ilustrar como una operaciónde salida puede ser ejecutada. El address decoder monitorea el bus de direcciones buscandola dirección 900016. También revisa alguna de las líneas de control que conecta al MPU: Una deestas líneas se le llama read-write (R/ ) (pin). El pin R/ del MPU 68HC11 se va a un estadobajo, cuando una operación de escritura(output), es iniciada por el MPU, (estado alto paralectura).

Fig. 5-2. Circuito simplificado de salida

Note que la salida de address decoder es usada para habilitar los datos de salida latch y losdrivers. Cuando estas han sido habilitadas, el byte sobre la línea de datos es almacenada en ellatch. Los bits de datos almacenados en el latch, provoca que los LED’s, correspondientesenciendan. Por la salida y los patrones de bit apropiados, el MPU puede mostrar diferentesnúmeros binarios.

Note que la address decoder (y por lo tanto el display) esta en la dirección 900016. Podemoscolocar el dato en el display en muy diferentes formas. Por ejemplo, podemos cargar un patrónapropiado y desplegarlo en el acumulador A. Entonces por la ejecución de “almacena alacumulador A”(store accumulator A), instrucción de direccionamiento extendido, puedetransferir el contenido del acumulador al display. La instrucción puede ser: STAA 900016. Opodemos enviar el dato al acumulador B usando la instrucción: STBA 900016.

En otro caso, la dirección 900016 sale sobre el bus de direcciones por un breve intervalo detiempo. El address decoder reconoce esta dirección, a la vez, las líneas de control(controllines), indican que una operación de salida es llamada. En particular, las líneas de lectura-

Page 159: dl3155m24hc11_teoria

DL3155M24HC11

158

escritura se van a un estado bajo. Esto provoca que el decodificador de direcciones habilite losdatos de salida latch. Simultáneamente, el byte, dato de 8 bits aparece sobre el bus de datos.La salida latch almacena el dato en un byte. El dato aparece en la entrada del latch en menosde un microsegundo (típicamente). Sin embargo, una vez que el dato es almacenado, esteaparece en la salida del latch hasta que un nuevo dato es escrito. Así la salida del dato serádesplegada hasta que el siguiente byte de dato es extraído por el MPU.

Fig. 5-3. Circuito simplificado de entrada

OPERACIONES DE ENTRADA.

La figura 5-3 muestra un circuito simple de entrada. Aquí el dispositivo de entrada es un grupode ocho interruptores. Cuando un interruptor es abierto, su respectiva línea de entrada al bufferes substituido por resistencias de pull-up. Sin embargo cuando el interruptor se cierra, surespectiva línea de entrada, es puesta a nivel bajo por el interruptor conectado a tierra.

En este circuito sencillo, no es requerido el latch entre los interruptores y el bus de datos. Sinembargo, se usa un buffer, de modo que el grupo de interruptores pueda ser efectivamentedesconectado del bus de datos cuando los interruptores no estén siendo direccionados.

Con el circuito de salida, el address decoder busca las líneas de dirección y control. Note quela dirección asignada es 800016. Para una entrada de dato desde el grupo de interruptoreshacia el acumulador A, usamos la instrucción: LDAA 800016 . O podemos ingresar el dato alacumulador B por medio de la instrucción: LDAB 800016.

En otro caso, la dirección 800016 es colocada en la línea de dirección. El address decoderreconoce estas direcciones y habilita el buffer. Por un breve intervalo de tiempo (típicamente

Page 160: dl3155m24hc11_teoria

DL3155M24HC11

159

menor que un microsegundo), las líneas del bus de datos toman el mismo estado que las líneasal lado derecho (input) del buffer. Si el interruptor no es activado, todas las líneas de datosserán altas, es decir entregarán un "1" lógico (FF16) al cargarse en el acumulador. Sin embargosi uno de los interruptores (S0 por ejemplo) es activado, la línea respectiva de datos (D0) serábaja. En este caso, el numero leído en el acumulador será FE 16. Examinando el byte que esleído, el MPU puede determinar que interruptor es activado.

PROGRAMANDO ENTRADA-SALIDA.

Usted, ahora conoce lo necesario acerca de los circuito de entrada-salida para ejecutaroperaciones I/O. Refiriéndonos a la figura 5-2 y 5-3. Para el primer ejemplo supongamos queusted quiere que un LED encienda cuando el correspondiente interruptor sea presionado. Estoes, el LED0 encenderá cuando cuándo S0 se active; así mismo el LED1 deberá encendercuando S1 sea presionado, etc.

Si se refiere a la figura 5-2, observara que un LED puede encender al colocar a "0", el bitapropiado en el latch. Por ejemplo, un 0 en bit 0 provocara que el LED0 se polaricedirectamente. Así, el diodo conducirá y emitirá luz. Note que un "1" en el bit 0 no permitirá queel diodo conduzca y por tanto no emitirá luz. Consecuentemente, un "0" activa el LED y un "1"lo apagará.

Refiriéndonos a la figura 5-3, encontrará que, cuando uno de los interruptores es cerrado, sucorrespondiente línea irá a 0. Si los interruptores no son cerrados su correspondiente línea será"1".

Si cargamos un dato en uno de los acumuladores de dirección 800016 y después almacenamosel dato en la dirección 900016, los interruptores parecerán el control de los LED’s. El programapodrá verlos así:

LDAA8000

STAA9000

BRAF8

Si S0 y solo S0, es cerrado cuando la instrucción LDAA 8000 es ejecutada, 1111 11102 serácargado en el acumulador A. La siguiente instrucción almacenará este byte de dato en la salidalatch. Esto provocara que el LED0, y sólo él. La instrucción BRA mantiene a la MPU en un ciclocontinuo. Tratemos algunos ejemplos y verifiquemos cada vez que cada tiempo, un interruptorsea cerrado, el correspondiente LED encenderá. Si los interruptores son establecidos a ciertonúmero binario de 8 bits, los LED’s desplegaran ese número de 8 bits.

Ahora, supóngase que cambiamos nuestro deseo y decidimos que los LED’s deberánencenderse en caso de complemento a uno del número binario puesto en los interruptores. No

Page 161: dl3155m24hc11_teoria

DL3155M24HC11

160

tenemos porque tocar el hardware. En su lugar, cambiaremos el programa. El nuevo programaserá:

LDAA8000

COMASTAA

9000

BRAF7

Note que simplemente tenemos que insertar la instrucción complemento a unos entre lasoperaciones de entrada y salida.

Como otro ejemplo, suponga que deseamos desplegar un número que es cuatro veces mayor,que el número colocado en los interruptores. Nuestro programa puede cambiar así:

LDAA8000

ASLAASLASTAA

9000

BRAF6

Es muy útil por el hecho que no se necesita cambiar el hardware, solo se agregan lasinstrucciones ASLA entre la operación de entrada y salida.

Aunque estos ejemplos son muy simples, ilustran la flexibilidad de los arreglos I/O. El dato esdado desde un dispositivo de entrada como si fuera dado por la memoria. Una vez en el MPU,el byte de dato puede ser modificado en la forma que queramos. El dato puede ser transferido aun dispositivo de salida como si fuera a ser almacenado en memoria. Mientras el dato esta enla MPU, puede ser modificado de diferentes formas. El byte de entrada puede ser recorrido a laizquierda o la derecha. Puede sumarse – o restarse – a otro número. Puede efectuarse laoperación OR o AND con otro byte. Las posibilidades son interminables y casi no involucran elcambio al hardware. Todos los datos manipulados pueden ser procesados por el programa.

PROGRAMA CONTROL DE OPERACIONES I/O

En los ejemplos precedentes, todas las transferencias de I/O eran controladas por el programay solo por él. El programa esta en un ciclo continuo que ingresa datos desde los interruptores,modifica los datos (si es requerido) y entrega los datos a los displays.

Page 162: dl3155m24hc11_teoria

DL3155M24HC11

161

Cuando este arreglo es usado, el MPU nunca sabe si el dato de esa entrada tiene cambio.Simplemente lee en el dato un número veces de cada segundo. De igual forma, el MPU saca eldato una y otra vez. Este programa trabaja bien por operaciones simples I/O. Sin embargocomo la I/O requiere cambiar más sofisticadamente, esta técnica es molesta.

El programa debe estar en un ciclo, revisando continuamente la estrada y actualizará la salida.Como el número de datos manipulados crece, el ciclo se hace más largo y por tanto el MPUrevisará las entradas con menos frecuencia. Cuando diversos dispositivos de I/O son usados,se debe revisar cada entrada y actualizar cada salida repetidamente. Si el ciclo se hace máslargo, el MPU puede perder momentáneamente los cambios en el interruptor. Esto es aceptableen algunas aplicaciones pero en muchas otras puede ser intolerado.Obviamente entonces, un método más sofisticado de manejo de operaciones I/O deberá estardisponible para el microprocesador.

Page 163: dl3155m24hc11_teoria

DL3155M24HC11

162

CONTROL DE INTERRUPCIONES EN OPERACIONES I/O.

Una forma más efectiva de manejar operaciones I/O involucra el concepto llamadointerrupciones. Las interrupciones son el medio por el cual un dispositivo I/O puede notificar a elMPU que esta listo para enviar el dato de entrada o aceptar el dato de salida. Generalmentecuando ocurre una interrupción, el MPU suspende su operación actual y mantiene lainterrupción. Esto es, puede leer internamente o escribir fuera un byte de dato. Después demantener la interrupción, la MPU regresa a su tarea original y continua desde donde se quedo.

Las interrupciones de microprocesador pueden ser de hardware o software. Mientras másoperaciones I/O se usan generalmente, interrupciones de hardware, la instrucción SWI del68HC11 puede generar una interrupción por software (detalle explicado más adelante).

Una analogía puede ayudarle para visualizar una operación de interrupción. Compare el MPUcon el presidente de una corporación, quien esta escribiendo un reporte. La interrupción puedeser comparada con una llamada telefónica. La principal tarea del presidente es el reporte, sinembargo si el teléfono suena (una interrupción), él terminara de escribir la palabra o enunciadoy responderá a la llamada telefónica. Después de haber atendido la llamada telefónica,regresará al reporte y continuara en el punto donde se quedo. En esta analogía el timbre delteléfono notifica al presidente, la interrupción requerida.

Esta analogía muestra la dificultad del programa controlado con la técnica discutidaanteriormente. Si quitamos la interrupción requerida ( el timbre del teléfono), nos encontraremosante una situación algo cómica. El presidente escribe unas cuantas palabras del reporte.Después levanta la bocina del teléfono para ver sí alguien esta en el otro extremo. Si el noacierta al levantar la bocina, escribe otras palabras, y revisa el teléfono de nuevo. Claro estaque la técnica requiere importantes recursos, como el "tiempo" del presidente. Esta simpleanalogía muestra la importancia de la capacidad de una interrupción. Sin ella se perdería unagran cantidad de tiempo del MPU, y pudiera afectar las rutinas de operación.

Una característica de extensión del 68HC11 son las características de hardware on-chip I/O(e.g. temporizador(timer), comunicación serial,, e interfaces periféricas, etc.), un total deveintidós posibles interrupciones, distintas son posibles. Esto incluye diecisiete de hardware,una de software, y cuatro interrupciones de reset. Más de estas (15) son asociados con lainterfaz interna de dicho hardware. Esto es, cuando una operación de I/O ocurre esta esgeneralmente acompañada con su propia interrupción especial de hardware. Estasinterrupciones trabajan, como describimos anteriormente, alertan al microprocesador de otraactividad, normalmente I/O.En la siguiente sección examinaremos cinco diferentes tipos de interrupciones del 68HC11 conun propósito especial.

Page 164: dl3155m24hc11_teoria

DL3155M24HC11

163

5.2 RESETS E INTERRUPCIONES.

Las interrupciones fueron introducidas en la sección previa en conexión a las operaciones I/O.Mientras que las operaciones I/O usan parte de la capacidad de las interrupciones del MPU, lasinterrupciones son también usadas en otros ámbitos. Cinco tipos diferentes de reset´s einterrupciones del 68HC11 serán consideradas.

RESET

Interrupción Pseudo Non-Maskable XIRQ

Petición de interupción(Interrupt Request) IRQInterrupción de software (SWI)

IIlegal Opcode Trap

En esta sección se examinara cada una de estas interrupciones en detalle.

REINICIALIZAR

En una aplicación típica, el microprocesador tiene un control o programa monitor en unamemoria de solo lectura (ROM). Además una memoria de acceso aleatorio(RAM), que escribe ylee, se usa para conservar datos de entrada, recibir información, respuestas intermedias, datosde salida, etc. Como hemos visto la MPU 68HC11 tiene la capacidad de direccionar arriba65,53610 localidades de memoria. Muchas aplicaciones de microprocesadores no requieren demucha memoria. En algunas aplicaciones, el control del programa requiere menos que delveinte por ciento de las localidades. La RAM puede ser usada en menos del diez por ciento.Generalmente el monitor del programa es colocado en direcciones de memoria altas. La RAMes usualmente dada en localidades bajas de memoria tal, que el modo de direccionamientodirecto sea usado. Los dispositivos I/O son dados en direcciones intermedias. Así, lasdirecciones de memoria pueden colocarse como la Figura 5-4, lo muestra.

Fig. 5-4. Ejemplos de localidades de memoria en un sistema microcomputador

Note que el control o programa monitor es colocado en la ROM en el tope de memoria. En esteejemplo, se usa un byte de 16K de ROM. La dirección de la ROM esta desde C00016.hastaFFFF16. La RAM es colocada en la parte baja, fin de memoria. Las direcciones que son usadasvan desde 000016 hasta 6FFF16.. Respecto a la RAM y a la ROM note que las localidades

Page 165: dl3155m24hc11_teoria

DL3155M24HC11

164

700016 hasta AFFF16, pueden ser usadas como direcciones en un programa encapsulado(program cartridge). Dicho programa encapsulado, puede contener un programa almacenados y generado en una EEPROM (Electrictrically Erasable Programable, Read-Only-Memory,también llamada "E" cuadrada PROM). Además de esto, como una alternativa, estaslocalidades de memoria pueden ser usadas como direcciones en EPROM, la ROM contiene unsistema firmware(tratamiento de microprogramación cableada). En ambos casos losdispositivos ocupando estas localidades de memoria serán direccionadas hasta interfaces deI/O que contienen latches, decoder-drivers, etc. como se menciono anteriormente.

El programa monitor almacena en la ROM, todos los controles de la actividad del MPU. En todomomento, el sistema entero esta corriendo por este programa. En este ejemplo, cuando elmicroprocesador es encendido deberá iniciar la ejecución de instrucciones en la direcciónC00016. También, debemos ser capaces de reinicializar el programa en esta dirección encualquier momento. De acuerdo a esto, el MPU 68HC11 tiene internamente, la capacidad dereiniciar(reset).

La MPU 68HC11 tiene una línea de señal o pin de control que es llamado 2%S%T. Este pín olínea es conectado a un interruptor reset de alguna clase. Si esta línea baja por un cortoperiodo de tiempo(explicado más tarde) y entonces cambia a alto, el MPU puede iniciar unasecuencia de interrupciones reset (también llamada servicio de rutinas de interrupción). Elpropósito principal de una secuencia de interrupciones es cargar la dirección de la primerainstrucción a ser ejecutada en el contador del programa. Esto se lograra fácilmente si, encualquier aplicación, el arranque de direcciones sea el mismo. Sin embargo, el arranque dedirecciones podrá hacerse de diferentes maneras. Por lo tanto, significa una conveniencia quela dirección especificada provenga del direcciones iniciales, para cualquier arranque dedirecciones.

Un vector de interrupción es simplemente una dirección que es cargada en el contador delprograma cuando una interrupción ocurre. La MPU dice cuando esta ejecutando un programaespecial llamando un servicio de rutinas de interrupción, o incluso interrupción manual.

El MPU 68HC11 fue diseñado con un tope de 64 direcciones ROM reservadas específicamentepara vectores de interrupción. Para nuestro propósito nos concentraremos principalmente en elcontenido de los vectores de interrupción sobre los 16 bytes de ROM. Por cada dirección devector se requieren dos bytes (alto y bajo) para especificar todas las posibles localidades dememoria, estos 16 bytes contienen la dirección en 16 bit´s de 8 vectores de interrupción, comose muestra en la figura 5-5.

Note que la dirección FFFE16 y FFFF16 contienen el vector 2%S%T. Esto es, esas doslocalidades de memoria contienen la dirección de la primera instrucción a ser ejecutada cuandoel computador es inicializado o reinicializado. En el ejemplo previo de asignación de memoria(figura 5-4) la primera instrucción en el programa monitor esta localizado en la dirección C00016.Consecuentemente, este es nuestro vector de reinicialización (dirección). La localidad FFFE16

contiene el byte alto de la dirección (C016), y FFFF16 contiene el byte bajo de dirección (0016).

Recuerde que las localidades FFFE16 y FFFF16 están en la memoria de solo lectura. Por lotanto, el diseñador debe prever el vector reset conveniente en el tiempo que él esta escribiendoel programa monitor.

DIRECCION VECTOR DE INTERRUPCION CODIGO DE CONDICION

Page 166: dl3155m24hc11_teoria

DL3155M24HC11

165

Fig. 5-5. Asignación del vector de interrupción

La figura 5-6 muestra la secuencia de eventos que ocurren cuando el MPU es reinicializado.Primero, la mascara de interrupción (I) es activada. Recordará que la bandera "I" corresponde auno de los registros código de condición. Como vera más tarde, si esta bandera es activada,avisara si otra de las interrupciones esta ocurriendo. Así, la MPU activa el bit mascara deinterrupción, de tal modo que la secuencia de reset no sea interrumpida por la petición de unode los dispositivo de I/O.

RegistroMascara

Page 167: dl3155m24hc11_teoria

DL3155M24HC11

166

Figura 5-6. Secuencia reset de interrupción

Segundo, los contenidos de la localidad FFFE16 son cargados en el lugar del byte alto delcontador del programa (PC). Este es enviado a la dirección FFFE16 sobre el bus de direcciones.La localidad de memoria es leída desde afuera y su contenido es colocado sobre el bus dedatos. El MPU selecciona este byte y lo coloca sobre los ocho bits del contador de programa.En nuestro ejemplo, el byte en la localidad FFFE16 es C016.

Después, el contenido de la localidad FFFF16 es cargado en los ocho bits bajos del contador deprograma. Termina ajustando el bus de direcciones a FFFF16. Así, el contenido de laslocalidades mas altas de memoria son colocados en el bus de datos. En nuestro ejemplo, estebyte esta en 0016. En este punto, el contador de programa contiene la dirección de la primerainstrucción la cual es C00016.

La secuencia de reinicialización termina cambiando el MPU a éste ciclo de maquina normal debusqueda-ejecución (fetch-execute). Así, la instrucción en la dirección C00016 es buscada yejecutada. Para este punto, todas las actividades del MPU son controladas por el programa.

Un interruptor reset, conectado al pin externo 2%S%T del MPU, generalmente estará incluido enalgún lugar del sistema microcomputador. Esto permitirá al operador restablecer el sistema sise bloquea o deja de correr por alguna razón. Incluyendo este tipo de reset, el MPU 68HC11tiene un total de cuatro diferentes tipos de reset:

1. Un pin externo de 2%S%T,2. Una señal reset de encendido(power-on).3. Un reset por el watchdog timer, para una apropiada operación del sistema computador

(COP: Computer Operating Properly)4. Un reset por el reloj monitor.

El reset de encendido (power-on reset), ocurre cuando una transición positiva es detectada enel pín de alimentación del MPU, VDD. Esta reset es usado cuando se activa la señal energía

Ciclo

MPU Normal

RESET

Carga el byte altodel PC con elcontenido de

FFFE16

Carga el byte bajodel PC con elcontenido de

FFFF16

Inicio normal, ciclo debúsqueda/ejecución

Bit de interrupciónactivada (I)

Secuencia

reset de Interrupción

Page 168: dl3155m24hc11_teoria

DL3155M24HC11

167

como un medio automático de un sistema de arranque. El circuito de encendido proporciona unretardo (delay), 4064 ciclos de tiempo respecto a la primer operación del oscilador. El tiempodel reset actual al encender para algún sistema microcomputador, depende de la frecuencia dela salida E-clock, del micro. El tiempo de encendido reset de retardo(reset delay) puede sercalculado como sigue:

TRD = 4064 ( 1/ fECK ) (7.1)

Donde: TRD es tiempo de reset delay en milisegundos (ms), y FECK es la frecuencia de salida en MHz. del reloj 68HC11.

Sin embargo, porFXTAL = 4fECK

Donde : fXTAL es la frecuencia del oscilador de cristal ( alimentado por los pines 7 y 8del MPU 68HC11) en MHz.

La ecuación 7-1 puede ser presentada:TRD = 16256 [ ( 1/fXTAL)]

Por ejemplo, para calcular el reset delay para el MPU 68HC11 con un fXTAL de 4 MHz.

TRD = 16256 x [1/(4 x 106)] = 4 ms.

Está ecuación es usada para calcular el reset delay time (tiempo reset de retardo) para un68HC11 basado en el sistema dado por la frecuencia fXTAL o fECK en MHz.

El reset COP o Computer Operating Properly, protege al programa o para casos de fallas desoftware. Al usar un temporizador(timer) interno especial llamado watchdog timer, el sistemareset COP, monitorea la operación adecuada del MPU e inicia una secuencia reset vectorizada,cuando una falla de programa se ha encontrado. Este reset puede ser deshabilitadocompletamente usando la función COP, control de bits.

El cuarto tipo de reset, disponibles en el 68HC11, se llama Clock Monitor Reset o CMR, resetpor reloj monitor. Como su nombre lo implica, un CMR ocurre si el sistema reloj falla en laoperación. La función CMR es habilitada por un bit de control en el registro OPTION. Cuandoeste bit es borrado, la función CMR es desactivada. Cuando el bit se activa la función monitorde reloj iniciara un reset de sistema vectorizado si la frecuancia de E-clock (mencionada) fallabajo un mínimo rango(cerca de 10 KHz). Esta señal de reset es también presentada en el pinde la MPU RESET, disponible externamente.

Estos cuatro reset´s pueden considerase interrupciones. Esto es porque, cuando un resetocurre, el MPU deja cualquier actividad y salta a la localidad vectorizada comenzando suejecucíón. En muchos casos el programa monitor podrá iniciar con una subrutina corta paraactivar el sistema. Dicha subrutina sirve para inicial el stack pointer, los displays, etc. El68HC11 tiene otros tipos importantes de interrupciones. Serán discutidas en la siguientesección.

Page 169: dl3155m24hc11_teoria

DL3155M24HC11

168

Interrupciones No-mascarables.

En este punto se hará una discusión entre la interrupción mascarable y la no-mascarable. Unamascarable es una que el MPU puede ignorar bajo ciertas condiciones. Pero una no-mascarable no puede ser ignorada. Para ilustrar la diferencia recordaremos la analogía delpresidente de la corporación.

Cuando del presidente esta escribiendo su reporte, puede ser interrumpido por el teléfono. Sinembargo, puede llamar a la secretaria para que conteste, el presidente ha enmascarado unafuente de interrupción. Esta analogía no es practica para todas las interrupciones. Por ejemplopuede resultar in-práctico el enmascarar una alarma contra incendio.

Situaciones parecidas pueden suceder en el sistema controlado por el microprocesador.Algunas interrupciones pueden ser ignoradas por pocos segundos mientras el MPU estarealizando otras tareas, a estas las llamamos interrupciones mascarables. Las que no sepueden ignorar, no pueden ser mascarables. El diseñador decide que interrupciones seránmascarables y cuales no, el MPU, esta provisto de ambos tipos de interrupciones. Lasmascarables serán las primeras en discutir, por ser las que el MPU maneja.

El Constitución física de circuito integrado (IC) 68HC11, en una versión de 52 líneasconductoras, cuenta con una línea de control llamada, línea de interrupción no-mascarable. Lasalida de esta línea es el pin 18. Designada la línea de interrupción 8)21, esta entradaproporciona un medio para solicitar una interrupción no-mascarable, después del reset deiniciación. Durante el reset, el bit X del registro código de condición es activado y algunainterrupción (incluyendo 8)21), es mascarada hasta habilitar el software, usando la instrucciónTAP (Transfer from Acumulator A to CCR). Posteriormente, reset cuando el bit X (CCR) esborrado, la interrupción 8)21 llega a ser efectivamente una interrupción no-mascarable. Estosignifica que, en términos de la lógica por prioridad de interrupción, 8)21 tiene una prioridadmayor que cualquier fuente de interrupción mascarable por el bit "I". Después, siendohabilitado, 8)21 no puede ser mascarada por software; sin embargo es mascarada durante elreset, y recibe una interrupción sobre el pin 8)21. 8)21 es a veces conocido como línea de"pseudo interrupción.

La línea de entrada 8)21 es sensible a los cambios de nivel, de corriente y/o voltaje. Por ellorequiere de un resistor externo de pull-up hacia VDD. Después, de habilitar una transición de altoa bajo sobre esta línea de forza el MPU a iniciar una secuencia de interrupciones nomascarable. El propósito de la secuencia es proporcionar un medio ordenado por el cual elMPU pueda saltar a una subrutina de servicio que tome interés de la interrupción.

Esto llega a ser un poco comprometido porque el MPU debe estar disponible para regresar almenú principal, después la rutina de servicio de interrupción es finalizada. Debe estardisponible para picos exactamente donde sea necesario. Además todos los registro retienenexactamente el mismo dato y direccióm que ellos tienen cuando ocurre una interupción. Enotras palabras , cuando ocurre una interrupción, el contador de programa (PC) es salvado paraque el MPU pueda regresar después a este punto del programa. También los contenidos de losacumuladores, el registro índice y el registro código de condición pueden salvarse para que elMPU puede ser restaurado a una condición exacta que existe en el instante que ocurre lainterrupción.

Page 170: dl3155m24hc11_teoria

DL3155M24HC11

169

El MPU 68HC11 termina al introducir todos los datos pendientes dentro de la pila. Entoncesdespués, la interrupción ha sido servida, el MPU regresa al estado previo, extrayendo los datosde la pila.

La secuencia de interrupción no-mascarable se muestra en la figura 5-7. Una interrupción no-mascarable inicia cuando la línea 8)21 va desde este estado alto al estado bajo. El MPUfinaliza la ejecución de la instrucción actual. Sin embargo antes, otra instrucción es buscada, elMPU coloca el contenido de estos registros en la pila. Llamada que el stack pointer siempreapunta al tope de la pila. Para este ejemplo se asume que el stack pointer siempre apunta altope de la pila y que el stack pointer ha sido activado por una instrucción cercana a la dirección006A16.

Fig. 5-7. Secuencia de Interrupción no-mascarable (88 ))2211)

El MPU coloca los 8-bit bajos del contador de programa PC, en la localidad de memoria 006A16.Entonces este decrementa al stack pointer para que los 8-bits de la parte alta del PC, secoloquen en la localidad 006916. También, los contenidos del registro índice X son ubicados enlas direcciones 006616 y en 006516. El contenido de los acumuladores A, B y los códigos decondición, en 006416 y 006316, como se muestra. Cuando todo fue realizado, el stack pointerserá decrementado 9 veces a 006016. Regresando al diagrama de flujo, note que el siguientepaso es activar el bit de la mascara de interrupción. Esto permite que el MPU ignore peticionesque ocurran mientras la interrupción no-mascarable esta siendo atendida.

En este punto, el MPU esta listo para el salto a la rutina servicio de interrupción. Pero, ¿cual esla dirección de esta subrutina?. Recuerde, é carácter vector de interrupción que fue mostradoen la figura 5-5. EL vector de interrupción no-mascarable (8)21), esta en las direcciones

Secuencia

de Interrupción

No-mascarable

Ciclo

MPU Normal

XIRQ

Activa el bit, mascara de

interrupción (I)

Carga el byte altodel PC con el

contenido de FFF416

Carga el byte bajodel PC con elcontenido de

FFF516

Inicio normal, ciclo debúsqueda/ejecución

Coloca los registros dentro de la

Pila.

La actualinstrucción

finalizo?

si

no

Page 171: dl3155m24hc11_teoria

DL3155M24HC11

170

FFF416 y FFF516. Entonces el byte superior del PC es cargado desde FFF416, mientras el bytebajo es cargado desde FFF516. Éste, dirige el MPU a la primera instrucción en la rutina deservicio 8)21. Desde este punto, el MPU regresa al ciclo normal busqueda-ejecución (fetch-execute), hasta que la rutina de servicio ejecución finalice.

La secuencia de eventos se ilustra en la figura 5-7; sucede automáticamente cuando unasecuencia de interrupción no-mascarable, inicia. La línea 8)21 da hardware externo, unmétodo para forzar un salto a subrutina. En este caso, la subrutina es un programa corto queejecuta alguna acción para dar atención por importancia a la interrupción (i.e una rutina serviciode interrupción).

Page 172: dl3155m24hc11_teoria

DL3155M24HC11

171

Instrucción retorno de Interrupción(RTI).

La interrupción no mascarable se usa en caso de que alguna situación no pueda ser ignorada.Usted probablemente puede visualizar aplicaciones donde cada una requiera cierta capacidad.Por ejemplo, asuma que el microprocesador esta siendo usado por un taladro numéricamentecontrolado. La interrupción no-mascarable puede usarse en conjunción con algunosinterruptores, para prevenir perforaciones sobre la superficie de trabajo, ó para apagar lamáquina en caso de que alguna persona por error meta su mano.

El propósito de la rutina de servicio es dirigir la operación de la computadora para dar atenciónde la interrupción. Típicamente, detecta primero cual dispositivo inicio la interrupción. Entonces,así detectar la naturaleza de la interrupción. Finalmente, cual acción que se tomará para darleatención a la interrupción. En muchos de los casos, la interrupción es una rutina natural y puedeser fácilmente atendida. Sí es así, el MPU debe regresar al menú principal y continuar. Esto esposible con una instrucción, llamada Retorno de interrupción (RTI, Return-From-Interrupt).

La figura 5-8 muestra el funcionamiento de la instrucción RTI. El programa principal ubicado enla parte izquierda, mientras la rutina servicio de interrupción en la parte derecha. Asuma que laseñal de interrupción ocurre mientras la instrucción LDAB#, esta siendo ejecutada. El MPUtermina la instrucción y coloca todos los datos necesarios en la pila. Esta entonces salta a ladirección determinada por el vector 8)21 en la dirección $FFF4 y FFF5. El contenido de estasdos localidades determina la dirección de inicio de la rutina de servicio 8)21. Note que la ultimainstrucción en la rutina de servicio es la instrucción RTI. La instrucción regresa el control deprograma al punto en el que el MPU atendió la interrupción.El estado previo del MPU fue preservado en la pila. La instrucción RTI causa que losacumuladores, el contador de programa (PC), los registros índice y los registros códigos decondición, sean cargados en la pila. Entonces, la misma información estuvo en la pila cuandoocurre la interupciòn va fuera de la pila cuando la instrucción RTI es ejecutada.

Fig. 5-8 la instrucción RTI, control de retorno al programa principaldespués de que una interrupción ha sido atendida

INTERRUPCION NO-MASCARABLE

(8)21)

DIRECCIONDETERMINADA POREL VECTOR 8)21,EN FFF4 Y FFF5

Page 173: dl3155m24hc11_teoria

DL3155M24HC11

172

Petición de interrupción ())2211)

La petición de interrupción (interrupt request), es muy similar a la interrupción no-mascarable.La principal diferencia radica en que )21 es mascarable.

El MPU 68HC11 tiene una línea de control )21, de tal modo que cuando esta línea seencuentra en estado bajo, se solicita una secuencia de interrupciones. Sin embargo el MPU,puede o no, iniciar la secuencia dependiendo del estado del bit mascara de interrupción "I". Siel bit esta activado el MPU inicia la secuencia. Este procedimiento es muy similar al de 8)21discutido anteriormente. La figura 5-9 muestra la secuencia )21.

Fig. 5-9. Secuencia, petición de interrupción.

Cuando la línea )21 esta baja, el MPU finaliza la instrucción actual. Revisa la condición del bit"I", si esta activado a "1", ignora la petición de la interrupción y ejecuta la siguiente instrucciónen secuencia. Sin embargo, si I = 0, el MPU coloca el contenido en los diferentes registros, enla pila según el orden mostrado.

El que el bit "I", este activado, previene que el MPU, este aceptando otra instrucción hasta quela presente interrupción sea atendida.

IRQ

Bit mascara deinterrupción

activado?

NOLainstrucción

actualfinalizo?

Activa el bit, mascara de

interrupción (I)

Carga el byte altodel PC con el

contenido de FFF816

Carga el byte bajodel PC con elcontenido de

FFF916

Inicio normal, ciclo debúsqueda/ejecución

Ciclo MPUNormal

Coloca los registros dentro de la

Pila.

SI

NO

SI

Page 174: dl3155m24hc11_teoria

DL3155M24HC11

173

La dirección de la rutina de servicio )21, esta en las direcciones FFF816 y FFF916. El PC escargado desde estas direcciones. Entonces la siguiente instrucción a ejecutarse puede ser laprimera instrucción en la rutina de servicio de la petición de interrupción )21.

Una vez en las rutinas de servicio, el MPU va dentro del ciclo de búsqueda-ejecución. Cuandola interrupción ha sido atendida, el control regresa al programa principal por medio de lainstrucción RTI.

Instrucciones para la mascara de interrupciones.

El MPU tiene dos instrucciones que permiten el control de software del bit mascara deinterrupciones. Usted verá que si el bit "I", en el CCR, es activado algún tiempo, entonces iniciauna secuencia de interrupción. Esto impide que se acepte una )21 mientras )21 o 8)21 estánsiendo atendidas. Es un ejemplo de cómo establecer las banderas de interrupción conhardware.

En muchos casos esto es necesario para activar la bandera de interrupción con software. Demodo que el MPU 68HC11 cuenta con la instrucción "Set Interrupt-Mask" (SEI), activa mascarade interrupción. La bandera puede activada para prevenir una interrupción sobre una parte delprograma que no se desee interrumpir. Esta tiene el efecto de deshabilitar la petición deinterrupción.

Seguramente, no esperamos deshabilitar permanentemente la capacidad de interrupciones. Sinembargo, una forma de habilitar la petición de interrupciones, es a través de la instrucción"Clear -Interrupt-Mask" (Borrado de la mascara de interrupción). Es una instrucción de un byte ysu opcode es 0E16.

Mientras podemos deshabilitar o habilitar la línea petición de interrupciones con estainstrucción, esto no afecta a la interrupción no-mascarable. Como su nombre lo indica, lainterrupción No-Mascarable, o línea 8)21, no puede ser deshabilitada por la bandera "I".

Page 175: dl3155m24hc11_teoria

DL3155M24HC11

174

Instrucción Interrupción de Software (SWI)

La MPU 68HC11 tiene un programa equivalente a una interrupción. Esta es una instrucciónllamada “Software interrupt” (SWI. Interrupción de Software). Esta instrucción al ser ejecutadaocasiona la ejecución de una secuencia de interrupciones que es muy similar a la secuencia deinterrupción por hardware discutida anteriormente. Esta es una instrucción de un byte y suopcode es 3F16.

La figura 5-10 muestra la secuencia de eventos que ocurren cuando esta instrucción esejecutada. Primero el contenido de todos los registros pertinentes son colocados en la pilaindicado. A continuación, se activa la mascara de interrupción, pero esa petición de interrupciónno puede interferir. Finalmente, el software vector de interrupción se obtiene desde la direcciónFFFA16 y FFFB16. Este vector es cargado en el contador de programa así que la siguienteinstrucción será buscada desde esta dirección. Como con la otra interrupción, el MPU regresaraal programa original cuando se encuentra la instrucción return-from-interrupt RTI,.

Fig. 5-10. Secuencia de interrupción por Software (SWI).

La instrucción Software de Interrupción puede emplearse para simular interrupciones porhardware. Lo cual también ayuda para insertar pausas en un programa.

SWI

Carga el byte altodel PC con elcontenido de

FFFA16

Carga el byte bajodel PC con elcontenido de

FFFB16

Inicio normal, ciclo debúsqueda/ejecución

Activa el bit, mascara de

interrupción (I)

Coloca los registros dentro de la

Pila.

Secuenciade Interrupciónpor Software

CicloMPU Normal

Page 176: dl3155m24hc11_teoria

DL3155M24HC11

175

Illegal Opcode Trap

En caso de ejecutar un opcode indefinido o ilegal, puede ocasionar diversos problemas como elque un sistema quede bloqueado. A pesar de que nosotros originamos estos efectos, noesperamos que el MPU procure la ejecución de ellos.

Además de las interrupciones de hardware y software antes discutidas, el MPU tiene unainstrucción especial para detectar y vigilar el uso de códigos u operaciones ilegales. Estainterrupción se le llama illegal opcode trap, o trampa de opcode´s ilegales. La necesidad deutilizar este tipo de interrupciones es que no todas las posibles combinaciones numéricas estándefinidas por el conjunto de instrucciones del 68HC11. A continuación se dará una brevedescripción de cómo trabaja ilegal opcodes trap.Durante la ejecución de un programa , las instrucciones son ejecutadas en forma secuencial ypredecible. Asumimos entonces que todas las instrucciones en el programa son validas para elconjunto de instrucciones ya establecidas. Si un opcode ilegal es detectado, se genera unainterrupción, ésta es dirigida a una localidad en memoria o vector de opcode ilegal la cual espreviamente iniciada. Desde este punto, la interrupción se maneja como una interrupciónordinaria, es decir, como un salto en programa en secuencia de servicio de interrupcionespredefinidas.

Después de una interrupción por opcode ilegal, el stack pointer debe ser reinicializado. Esto escon el fin de evitar que la pila se exceda, por la constante ejecución de opcodes ilegales.

Instrucción de espera para Interrupción (WAI)

Al ejecutarse la instrucción WAI (wait for Interrupt), el contador de programa es incrementadoen uno. Entonces el contenido del contador de programa, el registro índice, los acumuladores yel CCR, son colocados en la pila. El orden es exactamente como ocurre la interrupción. El MPUentra a un estado de espera (wait state), hasta que ocurre una interrupción.

El MPU puede forzarse hacia atrás dentro de una acción, utilizando petición de interrupciones,o interrupción no mascarable. La secuencia 8)21 es igual a la descrita anteriormente, salvo porun pequeña diferencia; recuerda que el contenido de los registros están colocados en la pila,esto permite que la secuencia 8)21, sea omitida, permitiendo así al MPU responderrápidamente a la interrupción.

La secuencia )21, es similar, excepto que los registros no son colocados en la pilanuevamente. Como siempre la señal )21, es ignorada si el bit mascara de interupción, estaactivado.

Seguramente, la señal reset puede sobrepasar el estado de espera. De tal modo que ahora haytres formas de salir del estado de espera.

Page 177: dl3155m24hc11_teoria

DL3155M24HC11

176

Instrucción de paro (STOP)

Los programas escritos para el MC68HC11 en su mayoría terminan con la instrucción STOP,marcando el fin de la ejecución. En este sentido la instrucción STOP es sencilla de entender.Sin embargo, hay otros aspectos de la instrucción STOP que nos son tan aparentes de primerainstancia.

Desde que la primer computadora electrónica (ENIAC), llego a ser funcional alrededor de 1950,la tendencia a sido elaborar sistemas de computo, después pequeños microprocesadores queusen menos potencia eléctrica, pero mas potencia computacional.

El desarrollo de los primeros circuitos integrados de microprocesadores, marco una gananciasignificativa en este ámbito. Ahora la aplicación de la tecnologías ha avanzado de tal forma, quelos microprocesadores son usados en un amplio espectro de dispositivos, y productos - muchosde ellos usan baterías de alimentación. Para estas aplicaciones, la cantidad de potenciaconsumida por el microprocesador puede ser crítica. Muchos productos basados enmicroprocesadores son usados en forma intermitente, es decir, solo ejecutan algunas tareasperiódicas o trabajos (por ejemplo en tareas continuas de control). Para este tipo deaplicaciones, es una ventaja tener un microprocesador que pueda energizarse en potencia bajao en modo "idling", sin carga. El MPU 68HC11 tiene la capacidad de energizarse de este modo.Esto se logra con la instrucción STOP.

La instrucción STOP, coloca el MPU en modo consumo de baja potencia. En el modo STOP,todos los relojes, incluyendo el oscilador interno, son detenidos. Esto causa que todo elprocesamiento interno de datos sea detenido. Los microprocesadores literalmente es instruidopara detenerse y esperar sin carga, una instrucción que inicie la secuencia nuevamente. Laejecución de la instrucción STOP no cambia los registros internos del MPU ni afecta los pinesde salida o entrada.

Para usar la instrucción STOP (opcode CF), el bit "S" o "Stop disable" (paro deshabilitado),puede borrarse a través de el registro código de condición CCR. Así como cualquier bit delregistro código de condición, el bit "S", puede ser activado o borrado usando software (TAP 06),Si el bit CCR no es borrado (activado), la instrucción STOP es tratada igual a una no-operacióno NOP del MPU.

Una vez ejecutada la instrucción STOP, hay varias formas de restablecer el MPU, entre ellasesta el 2%S%T, 8)21 o la no mascarable )21. Los métodos de 2%S%T y )21,.son formas derecobrar de un STOP con 8)21, el cual se determina por el estado del bit mascara deinterrupción "X". Si se encuentra borrado, la ejecución del programa se reduce a una operaciónde interrupción 8)21, como se ilustró en la fig. 5-7. Sin embargo si el bit esta activado, lainterrupción puede ser mascarada y la ejecución del programa puede resumirse a un opcode debúsqueda para la siguiente instrucción seguida a la instrucción STOP. En esta opción el MPUpuede detenerse, esperar el modo de baja potencia y continuar un tiempo después con lainstrucción siguiente programada, después de STOP.

Page 178: dl3155m24hc11_teoria

DL3155M24HC11

177

Procesamiento de interrupciones por prioridad

Hasta ahora, nos hemos concentrado en detalles de cómo especificar las interrupciones yreset´s. Pero, ¿que sucede si se requieren dos o mas interrupciones diferentes en formasimultanea?. Obviamente sin algún recurso para manejarse, podría causarse confusión.

Afortunadamente, el 68HC11 cuenta con un circuito interconstruido llamado Interrupt ResolutionPriority Circuit o circuito para resolución de interrupciones por prioridad, IRPC. El IRPC resuelvelas peticiones de interrupción de acuerdo a la clasificación relativa fija o la prioridad. Véase lafigura 5-11.

Alta 22%%S%%TTCOP Monitor de relojFalla del COPOpcodes ilegal88 ))2211

Baja ))2211 (por omisión)

Fig. 5-11 Prioridad de interrupciones establecido por IRPC

Cada interrupción tiene una entrada al IRPC. En el caso en que ocurren dos o másinterrupciones al mismo tiempo, el IRPC trabaja para asegurarse que la interrupción de altaprioridad (relativa al resto), sea atendida primeramente. Por ejemplo si surge una falla en elmonitor de reloj COP y simultáneamente surge una interrupción por opcode ilegal, se le da másatención a la falla del COP como de mayor prioridad.Note que el orden de prioridad mostradoen la fig 5-11 es similar al orden del vector de interrupción mostrado previamente en la figura 5-5. Como es el caso de la más alta prioridad asignada a RESET, como lo es también el vectorsuperior de dirección mostrado en la figura 5-5. El COP monitor de reloj, es la siguienteinterrupción de mayor prioridad (hardware), al igual que en el vector de dirección ne la fig. 5-5.El proceso IRPC es interrupción solo de hardware, la interrupción SWI o de software muestrano esta incluida en la figura 5-11. Debe notarse sin embargo que SWI actualmente es de altaprioridad, más que otra interrupción, excepto el RESET. Esto es cierto en el sentido que uno delos opcodes SWI, es buscado, otra interrupción no puede ser atendida (solo RESET), hasta queel vector SWI, sea traído.

Las interrupciones 8)21 y )21, respectivamente se muestran como dos entradas de bajaprioridad para el IRPC. Note que estas son también interrupciones que están usando el bitmascarable del CCR. (figura 5-5). Semejante a las cuatro interrupciones de arriba, XIRQ es unaentrada fija a la IRPC. Estas cinco entradas de interrupciones a IRPC son fijas y no pueden sercambiadas. Sin embargo la ultima entrad, mostrada en la fig 5-11 como IRQ se selecciona porsoftware y puede ser cambiada, es la interrupción de baja prioridad al IRC y puede sercambiado por software, esto indica que otras interrupciones, por ejemplo la interrupción enTiempo real (Real Time Interrupt, RTI) o otros, puede ser elevado en prioridad sobre SWI alasignarle la ultima posición en IRPC.

Debido a que las interrupciones asignadas a la posición IRPC están todas en el registro códigode condición, bit "I" mascarable, una interrupción asignada a esta ultima posición puede teneruna prioridad superior a otra interrupción mascarable del bit "I". La interrupción IRQ esautomáticamente seleccionada (por omisión) sobre reset. Otras se pueden seleccionarcargando el código apropiado dentro de un registro especial en el 68HC11 llamado HighestPriority Interrupt (HPRIO, interrupción de alta prioridad). Este registro localizado en la dirección103C16, es parte de un bloque de registro especial de control de 64 byte contenidos en la

Prioridad

Page 179: dl3155m24hc11_teoria

DL3155M24HC11

178

memoria del 68HC11. Estos 64 registros internos son usados para varios controles por hardware ycaracterísticas de interfaz en el 68HC11, que son detalles fuera del alcance de este curso. El cualpuede ser activado para reasignar otras interrupciones mascarables bit "I", a la ultima posición en elIRPC. La fig. 5-12 muestra en síntesis, el diagrama de flujo de los procesos interupciones/reset según suprioridad. Parte del este diagrama muestra la información presentada en esta unidad. Además semuestran los tópicos asociados al reset y el procesamiento de interrupciones. Puede dar atenciónparticular a las condiciones de salto para los casos de interrupciones. A lo largo de este capitulo seexplico la utilidad de las interrupciones y los reset´s, como juegan un papel importante tanto en lasinstrucciones como en la ejecución de programas en software.2.

Fig. 5-12.

Diagrama de flujo.procesamiento por prioridad de

Interrupciones /reset

Power-on reset(POR)

SI

Reset externo

Inicia una secuencia de instrucciones

Retardo 4064 E-ciclos

Carga el contenido del PCcon $FFFE, FFFF

(VECTOR DE BUSQUEDA)

Activa los bits: S, X, Ien CCR

Registros CPU Stack

Activa los bitsX, I

Vector de busqueda$FFF4, FFF5

Busqueda de Opcode

Realmacenalos registros

CPU desde elStack

Registros CPU Stack

Activa el bit “I”

Vector de busqueda$FFF8, FFF9

Registros CPU Stack

Activa el bit “I”Vector busqueda

$FFF6, FFF7

Activa el bit “I”

Resuelve lnterrupción de proridad y el vector

busqueda para pendientes Ejecuta esta

instrucción

Falla en clockmonitor(CME=1)

CCP WATCHDOGTIMEOUT

(CON NOCOP=0)Carga el contenido

del PCcon $FFFC, FFFD(VECTOR DE BUSQUEDA)

Carga el contenido

del PCcon $FFFA, FFFB(VECTOR DE BUSQUEDA)

Reset MCU porHardware

Bit X,activado?

Pin XIRQ,edo. bajo?

Bit I,activado?

Opcodelegal?

Interrupciónpendiente?

WA 1?

SW 1?

RT 1?

Registros CPU Stack

Registros CPU Stack

InterrupciónTodavía

?

SI

SI

SI

SI

SI

NO

NO

NO

NO

NO

NO

NO

NO

SI

SI

ALTA

PRIORIDAD

BAJA

Page 180: dl3155m24hc11_teoria

DL3155M24HC11

179

Page 181: dl3155m24hc11_teoria

DL3155M24HC11

180

UNIDAD 6

Programación de la tarjetaDL3155M24HC11

Page 182: dl3155m24hc11_teoria

DL3155M24HC11

181

CONTENIDO

DESCRIPCION DE TARJETA

PROGRAMACION DE TARJETA

PROGRAMA DE PRUEBA

Page 183: dl3155m24hc11_teoria

DL3155M24HC11

182

6.1 DESCRIPCION DE TARJETA

La tarjeta DL3155M24HC11 esta equipada con el microprocesador 68HC11, el dispositivodentro de la evolucion de microcontroladores de mas alta escala de integracion, dondepodriamos decir que solo depende de su programacion para dar solucion a un problema real, yel minimo de perifericos externos.

A continuacion sé hara mension de todos los elementos con que cuenta la tarjeta:

TARJETA ENTRENADORA PARA MICROCONTROLADOR 68HC11

CARACTERISTICAS

1 MICROCONTROLADOR MC68HC11MODULO: DE MEMORIA: RAM, EEPROM

MODULO DE COMUNICACIÓN SERIE

MODULO DE TEMPORIZACION Y CONTEO

MODULO DE CONVERSION A/D

MODULO DE INTERRUPCIONES

2 TARJETA ENTRENADORA:ETAPA PARA MODOS DE TRABAJO SIMPLE Y EXPANDIDO

ETAPA DE RESET PARA MICROCONTROLADOR

ETAPA DE EXPANSION DE MEMORIA (RAM)

TECLADO DE 4X4

DISPLAY LCD DE 16X2

DISPLAY DE 7 SEGMENTOS

BUZZER

ETAPA DE COMUNICACIÓN SERIE A COMPUTADORA CON MAX 232

ETAPA DE VIZUALIZACION POR MEDIO DE LED'S (6 LED'S)

ENTRADA DE DATO POR MEDIO DE BOTONES

CIRCUITO VARIADOR DE VOLTAJE PARA PUERTO A/D

3 MATERIAL DE APOYO DIDACTICO:

A) GUIA TEORICA: EXPLICACION DE MC68HC11,

INSTRUCCIONES Y MANEJO DE LA TARJETA.

B) MANUAL DE PRACTICAS: EXPLICACION DE MANEJO DE

DE PUERTOS HASTA EL CONTROL DE PERIFERICOS

EXTERNOS(INCLUIDOS EN LA TARJETA ENTRENADORA).

Page 184: dl3155m24hc11_teoria

DL3155M24HC11

183

6.2 PROGRAMACION DE TARJETA

El microcontrolador contiene un programa (ya cargado dentro del microcontrolador) llamadoBUFFALO, el cual se encarga de controlar todos los recursos internos del microcontrolador,este sistema operativo contiene una serie de comandos los cuales le permitiran al alumnorealizar acciones en cualquier tipo de aplicación que quiera realizar. Este sistema operativo nospermite comunicar con otro elemento y en forma particular con la computadora, atraves de lainterfaz de comunicación serie (SCI) bajo. Acontinuacion se mencionanran los camandos conque cuenta este sistema operativo:

ASM [Direccion]Enssamblador/DesensambladorBF <Direccion inicial><Direccion final><Dato>Llenar un bloque de memoria con el da

datoproporcionadoBR [-][Direccion] Colocar puntos de ruptura en un programaBREAK Realizar la misma funcion de BRBULK Este comando permite borrar toda la EEPROM ($B600-$B7FF)BULKA Realizar la misma funcion que BULKBULKALL Este comando permite borrar EEPROM+el registro CONFIG.CALL [Direccion]Ejecucion de subrutinaCOPY Realiza la misma funcion que MOVEDUMP Realiza la misma funcion que MDERASE Realiza la misma funcion que BULKFILL Realiza la misma funcion BFG [Direccion]Este comando nos permite ejecutar un programaGO Realiza la misma funcion de G.HELP Muestra en pantalla los comandos de BUFFALOHOST Realiza la misma funcion que TMLOAD T Este comando permite la sincronizacion del sistema de desarrollo con la PCMEMORY Realiza la misma funcion que MMMD [Direccion inicial] [Direccion final] Muestra en pantalla el contenido del bloque de

memoriaMM [Direccion] Modifica contenido de memoriaMOVE <Direccion inicial> <Direccion final> <Direccion destino> Mueve bloque de memoria

a otroP Continuacion de punto de rupturaPROCEEDRealiza la misma funcion que RMRD Realiza la misma funcion que RMREAD Realiza la misma funcion que MOVEREGISTERRealiza la misma funcion que RMRM [p,x,y,a,b,c,s]Modifica registros/muestra en pantalla registros internos del

microcontroladorSTOPAT <Direccion>Paro en la direccionT[n] Ejecutar un programa paso a pasoVERF <T> Comparar memoria con el dato bajado via el puerto de comunicación serieXBOOT [Direccion inicial][Direccion final] Enviar programa otro 68hc11? Realiza la misma funcion que HELP

Lo que se encuentra entre [ ] indica opcional.

Page 185: dl3155m24hc11_teoria

DL3155M24HC11

184

Forma de descarga un programa.

Para la descarga de un programa, previamente debe de tenerse el programa con extensions19. Para esto se deben seguir los siguiente pasos:

A) Crear una carpeta llamada DL_HC11 en el directorio raiz, y cargar el archivo iasm11.exeen el con su help correspondiente.

B) En el programa IASM11.EXE, abrir un programa con extension ASM(NOMBRE_ARCH.ASM).

C) Con tecla de funcion F10, ir al submenu ASSEMBLE donde apareceran los archivos quese crearan (los de extension s19 son los que nos interesan), abajo apareceran másopciones, como el progama lst, map, etc., el alumno o profesor indicaran que opcioneshabilitaran, en este momento la opcion que tiene la extension s19 es la que nos importa.Teclear ESC hasta que aparezca el menu principal.

D) Con la tecla de funcion F4, daremos la ejecucion de ensamblado del programa conextension ASM, en el momento de ensamblado el progama detectara errores de sintaxislos cuales debera corregir de lo contrario el sistema no podra crear el programa conextension s19. Los errores quedaran resaltados por programa, para que el usuario puedaverlos y corregirlos. Si no hay ningun error pasaremos al siguiente punto

E) Con la tecla de funcion F10, ir al submenu COMMUNICATE entrar al submenu, almomento de entrar nos daremos cuenta que el menu cuenta con una serie deparametros, que son las condiciones de debera cumplir el sistema para podercomunicarse con la PC, estas opciones no son estadanres por lo cual deberanmodificarse algunas para poder sincronicar la comunicación. Las condiciones quenosotros requerimos son las siguientes:Comm: 1 o 2 (puerto serie de la computadora comm1 o 2 según el caso)Baud: 9600Parity: NLength: 8Stop: 1

En este momento, el programa esta listo para comunicarse con la tarjeta.NOTA: Alimentar y conectar la tarjeta DL3155M24HC11 a la PCF) Con la tecla de funcion F7, aparecera una ventana que nos ayudara interactuar con el

microcontrolador y todos sus recursos, en este momento dar un reset, momento en elcual aparecera un mensaje como este:BUFFALO(bit user fast friedly aid to logical operations)>si damos enter sobre el cursor paraeceran todos los comandos antes mencionados, loscuales nos ayudaran a descargar el programa con extension s19.Si el mensaje no aparece, indica que la tarjeta no tiene comunicación con la tarjetaDL3155M24HC11

Nota importante: Si la tarjeta no responde con los parametros anteriores cambiar abaud a 4800 dar reset en la tarjeta cambiar nuevamente baud a 9600 y dar reset,momento en el cual se realizara la comunicación.

Page 186: dl3155m24hc11_teoria

DL3155M24HC11

185

6.3 PROGRAMA DE PRUEBA

Acontinuacion se mostrara la forma de descarga de un programa de la PC a la tarjeta. Medianteun ejemplo de prueba que consiste el manejo de un dato mediante acumuladores:

1) El programa que esta escrito abajo, teclearlo en el edito de ms-dos en el subdirectoriaDL_HC11, despues abrirlo en el editor del IASM11.

Descripcion de simbologia del programa:

El simbolo #$ indica dato hexadecimal directo.El simbolo $ dato hexadecimal indica direccion.El simbolo ¡ dato decimal indica direccion.El simbolo % dato binario indica direccion.

DIR1 y DIR2 son dos etiquetas, que representan las direcciones de memoria RAM 121Hex y122Hex.ORG indica desde donde empezara a correr el programa en este caso desde la 100Hex.Los datos debajo de org son nemonicos que corresponden al conjunto de instrucciones del68hc11, especificamente la columna que tiene el simbolo @.Para mas informacion, ver la ayuda del programa IASM11.

;===================================;DL3155M24HC11 DE DELORENZO ITALY;;DESCARGA DE PROGRAMA;===================================;TITULO "PRUEBA.ASM"

DIR1 EQU $121 ;DIRECCIONESDIR2 EQU $122 ;AUXILIARES

ORG $0100;ORIGEN DE PROGRAMA

INICIO LDAA #$01 ;ACUMULADOR CARGAR CON 01 HEX STAA DIR1 ;MANDAR DATO DE ACUMULADOR "A" A DIR1 LDAB DIR1 ;CARGAR EL ACUMULADOR "B" CON DATO DE DIR1 INCB ;INCREMENTA ACUMULADOR "B" STAB DIR2 ;MANDAR DATO DE ACUMULADOR "B" A DIR2 STOP ;INTERREPCION DEL PROGRAMA @

Page 187: dl3155m24hc11_teoria

DL3155M24HC11

186

2) Despues de teclearlo, ir al submenu assembler habilitar la opcion listing, para obtener elprograma listado, inmediatamente despues salir al menu principal y oprimir la tecla F4, nodebera aparecer ningun mensaje de error, si es asi checar el programa. Cuando notengamos algun mensaje de error, ver con cualquier procesador de texto el programa lstcreado por el programa, en este caso veremos lo siguiente:

PRUEBA.ASM

1 ;=================================== 2 ;DL3155M24HC11 DE DELORENZO ITALY 3 ; 4 ;DESCARGA DE PROGRAMA 5 ;=================================== 6 ;TITULO "PRUEBA.ASM" 7 8 0000 9 DIR1 EQU $121 ;DIRECCIONES REN1 0000 10 DIR2 EQU $122 ;AUXILIARES 11 0100 12 ORG $0100;ORIGEN DE PROGRAMA REN2 13 0100 8601 14 INICIO LDAA #$01 ;ACUMULADOR CARGAR CON 01 HEX 0102 B70121 15 STAA DIR1 ;MANDAR DATO DE ACUMULADOR "A" A DIR1 0105 F60121 16 LDAB DIR1 ;CARGAR EL ACUMULADOR "B" CON DATO DE DIR1 0108 5C 17 INCB ;INCREMENTA ACUMULADOR "B" 0109 F70122 18 STAB DIR2 ;MANDAR DATO DE ACUMULADOR "B" A DIR2 010C CF 19 STOP ;INTERREPCION DEL PROGRAMA 20

COL1 COL2 COL3 COL4

DIR1 0121DIR2 0122INICIO 0100

Page 188: dl3155m24hc11_teoria

DL3155M24HC11

187

En la COL1 aparecen los direcciones , a las cuales corresponde cada uno de losnemonicos con sus respectivas etiquetas.Por ejemplo el nemonico:

LDAA se encuentra en la direccion 100HexYINCB se encuentra en la direccion 108Hex

En la COL2 aparecen los codigos de los nemonicos, asi como los valores correspondientesde sus variantes que se estan usandoPor ejemplo:En la instrucción STAA DIR1:

STAA CODIGO ES B7 HexDIR1 CODIGO ES 0121 Hex

En la instrucción LDAB DIR1:LDAB CODIGO ES f6 HexDIR1 CODIGO ES 0121 Hex

En la COL3 apareceran las etiquetas que correspondan al inicio o para denotar algunasubrutina, en este caso solo aparece INICIO.

En la COL4 aparece todos los nemonicos con sus etiquetas

En el REL1 aparece el valor que se le asignan a las etiquetas usadas en el programa

En el REL2 aparece el origen del cual empezara a correr el programa cargado

NOTA: En este momento conectamos la tarjeta DL3155M24HC11 a la PC

3) Despues de ensamblar el programa pulsamos la tecla de funcion F10 y colocamos losvalores para poder comunicarnos a la PC, estos valores son:

Comm: 1 o 2 (puerto serie de la computadora comm1 o 2 según el caso)Baud: 9600Parity: NLength: 8Stop: 1

4) Con la tecla de funcion F7, aparecera una ventana que nos ayudara interactuar con elmicrocontrolador y todos sus recursos, en este momento dar un reset, momento en el cualaparecera un mensaje como este:

BUFFALO (bit user fast friedly aid to logical operations)>Si el mensaje no aparece, indica que la tarjeta no tiene comunicación con la tarjetaDL3155M24HC11

Page 189: dl3155m24hc11_teoria

DL3155M24HC11

188

Nota importante: Si la tarjeta no responde con los parametros anteriores cambiar abaud a 4800 dar reset en la tarjeta cambiar nuevamente baud a 9600 y dar reset,momento en el cual se realizara la comunicación.

4) Estando en el cursor > realizar lo siguiente:LOAD T ↵↵ (inmediatamente despues oprimir la tecla de funcion F6 aprecera lo siguiente)

File to download:_Escribir adelante del cursor nombre_archivo.s19 ↵Aparecera lo siguiente:

S11001008601B70121F601215CF70122CF31S9030000FCDone>_

Escribir delante de >_MD 100 ↵↵Aparecera los siguiente:

100 86 01 B7 01 21 F6 01 21 5C F7 01 22 CF FF FF FF110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

Esto indica como esta gragado el programa en la meoria interna del 68hc11, nuestro origensi nos damos cuenta esta en 100 Hex.

5) Para correr el programa hay dos formas corrida completa o paso a pasoa) Corrida completa, escribir lo siguiente, delante del cursor::

>_G 100 ↵↵empezara a correr el programa (detener el programa con reset), si nos damoscuenta no podemos ver nada

b) Paso a paso:Unir los puntos XIRQ y PA3 con un cable.En el cursor colocar lo siguiente:

>_RM ↵↵ (nos muestra los registros, acumuladores, contador deprograma, aparecera lo siguiente).P-FFFF Y-FFFF X-FFFF A-FF B-FF C-xx S-xxxxP-FFFF_Delante del cursor de P-FFF_ escribir 100 y dar ↵↵100 es la direccion de comienzo del programa inmediatamente despuesaparecera el cursor >En el cursor escribira la letra T dando, ↵↵ dando asi a correr la primerainstrucción, para la segunda T ↵↵ y hasta la ultima hacer el mismo metodo,y observara los cambios que pasan en los registros y memoria.

Page 190: dl3155m24hc11_teoria

DL3155M24HC11

189

6) Para ver que sucede en la memoria hacer lo siguiente:En el cursor >_ escribir lo siguiente:>_MD 100 130 ↵↵En este momento el programa desplegara los datos contenidos en lamemoria de 100 Hexhasta 13F Hex.

7) Inmediatamente despues seguir con el paso (5), asi hasta llegar la final del programa, estosi es ejecutado el programa paso a paso.