Sei sulla pagina 1di 4

ESCUELA POLITECNICA NACIONAL

DEPARTAMENTO DE AUTOMATIZACIN Y CONTROL INDUSTRIAL


LABORATORIO DE SISTEMAS MICROPROCESADOS

PRCTICA 2: ALGORITMOS ADICIONALES


OBJETIVO:
Revisar algunos algoritmos que se emplearan en prcticas futuras.
TEMAS:
OPERACIONES DE 16 BITS
Dado que el procesador es de 8 bits, las operaciones como suma y resta de 16 o ms
bits deben realizarse de 8 bits en 8 bits tomando en consideracin el carry que puede generarse
(o el Borrow). Revisar la nota de aplicacin AVR202.
ALGORITMO DE MULTIPLICACIN EN 16 BITS
Se puede usar el algoritmo de multiplicacin aprendido en la prctica No. 1, sin embargo el
microcontrolador a usar dispone de un multiplicador de hardware que puede multiplicar dos
nmeros de 8 bits cada uno con o sin signo. Es posible usar este multiplicador para realizar
multiplicaciones de 16x16 segn el siguiente esquema (Revisar la nota de aplicacin AVR201):

Fig. 1 Algoritmo de multiplicacin


ALGORITMO DE DIVISIN EN 16 BITS
El microcontrolador a usar no dispone de instrucciones de divisin, por lo que se debe usar el
algoritmo de desplazamientos y restas aprendido en la Prctica 1.

ALGORITMO DE DIVISIN DE UN NMERO MENOR PARA UN NMERO MAYOR


Al realizar esta operacin, el cociente resulta fraccionario, pero el algoritmo aprendido en la
Prctica 1 puede ser utilizado para realizar esta operacin con modificaciones menores.
El algoritmo de la divisin explicado en la Prctica 1 iniciaba con 8 ceros en la parte
izquierda y a continuacin los 8 bits del dividendo en la parte derecha, luego se realizaba el
proceso de 8 desplazamientos a la izquierda con sus respectivas restas, finalmente los 8 bits ms
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 vlido para dividir
un nmero 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 continuacin realizar exactamente el mismo proceso de 8 desplazamientos y
restas; finalmente los 8 bits ms 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 ms significativo, es decir el bit
ms significativo tiene un valor de 2-1, el siguiente 2-2, y as sucesivamente.
Ejemplo con 4 bits.
2/7
DIVIDENDO
DIVISOR
COMPLEMENTO A 2

2:
7:

0
0

0
1

1
1

0
1

7*: 1

DIVIDENDO

CARRY

CARRY

CARRY

CARRY

0
0
0

1
0
1

0
1
1

0
1
1

1
0
1

0
0
0

0
1
1

0
1
1

1
1

0
0

0
0

0
1

0
0
0

1
0
1

0
1
1

0
1
1

RESIDUO

D
4

COCIENTE

2-1

2-2

2-3

2-4

2-1

2-2

2-3

2-4

0.25

0.25

REPRESENTACIN DE NMEROS FRACCIONARIOS


La representacin de nmeros fraccionarios en el microcontrolador a usar, no est
estandarizada, pues su Unidad Aritmtica y Lgica 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
sera til si se usa el algoritmo de la divisin explicado en el ltimo prrafo.
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 representacin se
requiere de un conjunto bastante complejo de algoritmos.

IMPORTANCIA DE LA REPRESENTACIN DE NMEROS EN BCD


Las personas estn familiarizadas con el Sistema de Numeracin Decimal, al contrario del
microcontrolador que mediante las instrucciones manipulan a los nmeros en binario; por lo
que es necesario implementar las transformaciones entre estos dos sistemas de numeracin.
Pero, al utilizar el ingreso de nmeros con teclados y la salida con displays de 7 segmentos, el
microcontrolador solo debe realizar las transformaciones entre BCD y Binario.
Para la transformacin de un nmero entero de BCD a Binario se lo realiza mediante
multiplicaciones sucesivas por 10 o la variacin de este algoritmo con multiplicaciones por las
potencias de 10. Igualmente, para transformar nmeros enteros de Binario a BCD se utiliza el
algoritmo de divisiones sucesivas para 10 o la variacin de divisiones con potencias de 10, en
ambos casos las divisiones utilizan desplazamientos y restas. (Revisar la nota de aplicacin
AVR204)

TRABAJO PREPARATORIO
Si bien esta es una sesin de trabajo tutorial, el estudiante debe traer preparados por escrito (A MANO)
lo que se pide en el prrafo siguiente segn el da de la prctica.
1. Realizar un ejemplo de suma y resta en binario con nmeros de 16 bits, y presentar la respuesta
utilizando notacin hexadecimal.
2. Realizar un ejemplo de multiplicacin con nmeros de 16 bits, para lo cual se puede emplear el
algoritmo visto en la prctica anterior (16 desplazamientos) o mediante el algoritmo de la Fig. 1
empleando notacin hexadecimal.
3

3. Realizar la siguiente divisin (8 bits), usando el algoritmo de la Prctica 1 con los ajustes mencionados
en esta hoja gua.
Lunes:
Martes:
Mircoles:
Jueves:
Viernes:
4.

43/83
57/94
32/75
41/82
53/ 87

Aplicar el mtodo de conversin de binario a BCD, mediante el algoritmo similar al de la divisin,


basado en desplazamientos, que se puede encontrar en la referencia de la bibliografa. (Revisar la
nota de aplicacin AVR204)
Lunes
Martes
Mircoles
Jueves
Viernes

10110101
11001011
10101101
11011010
10111101

El trabajo preparatorio debe ser entregado al inicio de la prctica al instructor. Si algn


estudiante no entrega el trabajo preparatorio no ser admitido en la prctica:
MODO DE TRABAJO
Esta prctica es una sesin tutorial sobre los temas mencionados.
INFORME:
El instructor indicar al final de la sesin los temas que sern incluidos en el informe.
BIBLIGRAFIA:
Notas de aplicacin de ATMEL AVR200, AVR201, AVR202, AVR204
http://www.atmel.com/products/microcontrollers/avr/default.aspx?tab=documents