PRÁCTICA No. 2 LABORATORIO DE SISTEMAS MICROPROCESADOS ALGORITMOS ADICIONALES OBJETIVO:
El objetivo de esta práctica es el de realizar una revisión de algunos algoritmos que serán utilizados en futuras prácticas. TEMAS: OPERACIONES DE 16 BITS
Dado que el procesador es de 8 bits, las operaciones como suma y resta de 16 o m ás bits deben realizarse de 8 bits en 8 bits tomando en consideración el carry que puede generarse (o el Borrow). Revisar la nota de aplicación AVR202 ALGORITMO DE MULTIPLICACIÓN EN 16 BITS
Se puede usar el algoritmo de multiplicación aprendido en la práctica No. 1 , sin embargo el microcontrolador a usar dispone de un multiplicador d e hardware que puede multiplicar dos números de 8 bits cada uno con o sin signo. Es posible usar este multiplicador para realizar multiplicaciones de 16x16 según el siguiente esquema (Revisar la nota de aplicación AVR201):
ALGORITMO DE DIVISIÓN EN 16 BITS
El microcontrolador a usar no dispone de instrucciones de división, por lo que se debe usar el algoritmo de desplazamientos y restas aprendido en la práctica No 1.
ALGORITMO DE DIVISIÓN DE UN NÚMERO MENOR PARA UN NÚMERO MAYOR
Al realizar esta operación, el cociente resulta fraccionario, pero el algoritmo aprendido en la práctica No 1 puede ser utilizado para realizar esta operación con modificaciones menores. El algoritmo de la división explicado en la práctica No1 iniciaba con 8 ceros en la parte izquierda y a continuación los 8 bits del dividendo en la parte derecha, luego se realizaba el pr oceso de 8 desplazamientos a la izquierda con sus respectivas restas, finalmente los 8 bits más significativos (los de la izquierda) del resultado corresponden al residuo y los 8 bits menos significativos (los de la derecha) corresponden al cociente. Este algoritmo es válido para dividir un número menor entre uno mayor con las siguientes modificaciones: Iniciar con los 8 bits del dividendo en la parte izquierda y colocar los 8 ceros en la parte derecha, a continuación realizar exactamente el mismo proceso de 8 desplazamientos y restas; finalmente los 8 bits más significativas del resultado corresponden al residuo y los 8 bits menos significativos corresponden al cociente. Pero el cociente debe ser interpretado de diferente manera: Asuma que el punto decimal está antes del bit más significativo, es decir el bit más significativo tiene un valor de 1/2 , el siguiente 1/4, y así sucesivamente.
REPRESENTACIÓN DE NÚMEROS FRACCIONARIOS
La representación de números fraccionarios en el microcontrolador a usar no está estandarizada, pues su Unidad Aritmética y Lógica trabaja con enteros. Hay algunas maneras usuales de hacerlo, como por ejemplo: 1. Llevar por separado ( en registros independientes) la parte entera y la parte fraccionaria, que sería útil si se usa el algoritmo de la división explicado en el último párrafo. 2. La forma estandarizada que usan muchos de los lenguajes (Basic, C, etc.) y con la que trabajan las unidades de punto flotante (FPU) de muchos microprocesadores de uso general (Standard IEEE 754). Se asignan espacios para el signo, el exponente y la mantisa (cada uno por separado) en una secuencia de bits. Para realizar operaciones usando esta representación se requiere de un conjunto bastante complejo de algoritmos.
OPERACIONES EN BCD
Una representación alternativa de números en un microprocesador es en BCD. Las operaciones internas en un microprocesador generalmente se realizan en binario, p ero para mostrar los resultados externamente es bastante común usar display de 7 segmentos. Para poder mostrar los datos en estos display es necesario previamente convertir los datos en binario a su equivalente BCD. Hay algunas maneras de realizar esta conversión, entre las más comunes podemos mencionar: 1. 2.
El método de restas sucesivas de 1000, 100, 10 hasta determinar cuántas veces están contenidas estas cantidades en la cifra original. El método de divisiones sucesivas para 10
3.
Un método similar al de la división basado en desplazamientos que se puede encontrar en la referencia de la bibliógrafa (Revisar la nota de aplicación AVR204).
También es necesario poder expresar un número binario fraccionario en BCD. Dado que el procesador a ser utilizado dispone de la operación de multiplicación el método sugerido es el de multiplicaciones sucesivas por 10. TRABAJO PREPARATORIO
Si bien esta es una sesión de trabajo tutorial, el estudiante debe traer preparados por escrito A MANO todos los temas que se indican en la parte superior, y en especial debe traer en una hoja aparte lo que se pide en los párrafos siguientes . El trabajo preparatorio debe ser entregado al inicio de la práctica al instructor. Si algún estudiante no entrega el trabajo preparatorio no será admitido en la práctica: a) Consultar la forma de representación de números reales (punto f lotante) según el Standard IEEE 754. Representar el 187,675 y el 0,569 en este formato de 32 bits. b) Dividir 43/95 usando el algoritmo de la práctica No1 con los ajustes mencionados en esta hoja guía. c) Consultar el método para convertir a BCD similar al de la división basado en desplazamientos que se puede encontrar en la referencia de la bibliógrafa (Revisar la nota de aplicación AVR204). MODO DE TRABAJO
Esta práctica es una sesión tutorial sobre los temas mencionados.
INFORME:
El instructor indicará al final de la sesión los temas que serán incluidos en el informe.
BIBLIÓGRAFA: Notas de aplicación de ATMEL AVR200, AVR201, AVR202, AVR204 http://www.atmel.com/dyn/products/app_notes.asp?family_id=607 Nota de aplicación MICROCHIP: AN526 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1469