Vous êtes sur la page 1sur 5

FACULTAD DE INGENIERÍA ELÉCTRICA Y

ELECTRÓNICA
Carrera de Ingeniería Electrónica y Control
Carrera de Ingeniería Electrónica y Telecomunicaciones
Carrera de Ingeniería Electrónica y Redes de Información
Carrera de Ingeniería Eléctrica

LABORATORIO DE SISTEMAS MICROPROCESADOS

PRÁCTICA N°2
1. TEMA
ALGORITMOS ADICIONALES
2. OBJETIVOS
Revisar algunos algoritmos que se emplearan en prácticas futuras.

3. MARCO TEÓRICO
3.1. OPERACIONES DE 16 BITS
Dado que el microprocesador 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.
3.2. 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 de 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):

Fig. 1 Algoritmo de multiplicación

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

3.3. 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 1.

3.4. 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 1 puede ser utilizado para realizar esta operación con
modificaciones menores.
El algoritmo de la división explicado en la Práctica 1 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 proceso 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 2-1, el siguiente 2-2, y así sucesivamente.
Ejemplo con 4 bits.

2/7
DIVIDENDO 2: 0 0 1 0 DIVIDENDO
DIVISOR 7: 0 1 1 1 0 0 1 0 0 0 0 0

COMPLEMENTO
A2 7*: 1 0 0 1 0 1 0 0 0 0 0 0 1
1 0 0 1
CARRY 0 1 1 0 1

1 0 0 0 0 0 0 0 2
1 0 0 1
CARRY 1 0 0 0 1 0 0 0 1

0 0 1 0 0 0 1 0 3
1 0 0 1

CARRY 0 1 0 1 1

0 1 0 0 0 1 0 0 4
1 0 0 1

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

CARRY 0 1 1 0 1

RESIDUO COCIENTE
0 1 0 0 0 1 0 0
2-1 2-2 2-3 2-4 2-1 2-2 2-3 2-4

0.25 0.25

3.5. 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:

 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.

 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.

3.6. REPRESENTACIÓN DE NÚMEROS EN BCD


Las personas están familiarizadas con el sistema de numeración en base 10, al
contrario del microcontrolador que trabaja en binario. Para mostrar números en base
10 en displays de 7 segmentos es necesaria una rutina en el microprocesador que
convierta de binario a BCD y luego de BCD a 7 segmentos.
Para transformar números enteros binarios a BCD se puede usar el algoritmo de
divisiones sucesivas para 10, y para los números fraccionarios binarios a BCD por
el método de multiplicaciones sucesivas por 10. Este método se puede aplicar si el
microprocesador dispone de la división entre sus instrucciones( que no es el caso
del micrcontrolador que usaremos).
Otro método consiste en restas sucesivas de múltiplos de 10, por ejemplo se resta
sucesivamente 1000 del número en binario y se lleva la cuenta de cuántas veces se
lo puede hacer antes de que me dé un valor negativo, luego se procede a restar 100
sucesivamente, luego 10, etc. Sin embargo este método tiene el problema que su
tiempo de ejecución es variable y depende del número a convertir. Este método es
simple y puede ser usado si no importa el tiempo variable de ejecución.
Hay una variación del algoritmo de dividir para 10, y s encuentra en la nota de
aplicación AVR204, basado en sumas y desplazamientos.

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

4. TRABAJO PREPARATORIO
Si bien esta es una sesión de trabajo tutorial, el estudiante debe traer preparados por escrito
(A MANO) lo que se pide en el párrafo siguiente según el día de la práctica.

4.1. Realizar dos ejemplos de multiplicación con números de 16 bits, usando el


algoritmo de la Fig. 1 empleando notación hexadecimal. Comprobar sus resultados.

4.2. Realizar la siguiente división (8 bits), usando el algoritmo de la Práctica 1 con los
ajustes mencionados en esta hoja guía. Comprobar sus resultados.
4.2.1. Lunes: 45/85
4.2.2. Martes: 62/103
4.2.3. Miércoles: 59/73

4.3. Consultar el formato de representación en punto flotante (Standard IEEE 754) para
32, 64 y 80 bits. Representar en formato IEEE752 de 32 bits los siguientes números
, mostrando sus cálculos:

4.3.1. Lunes 472,125


4.3.2. Martes 247,75
4.3.3. Miércoles 336,875

4.4. Convertir los siguientes números que están en formato IEEE752 de 32 bits a un
número en base 10, mostrando sus cálculos (los números se han dividido en grupos
de 4 bits solamente para que sea más fácil su lectura):

4.4.1. Lunes 0100_0010_1110_1101_0100_0000_0000_0000


4.4.2. Martes 1011_1111_0110_1000_0000_0000_0000_0000
4.4.3. Miércoles 0011_1111_1011_1100_0000_0000_0000_0000

4.5. Aplicar el método de conversión de binario a BCD, mediante el algoritmo basado


en desplazamientos de aplicación AVR204, para los siguientes números en binario
(mostrar todo el proceso)

4.5.1. Lunes 10111111


4.5.2. Martes 10110101
4.5.3. Miércoles 10111010

5. EQUIPO Y MATERIALES
Material de escritorio.

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm


LABORATORIO DE SISTEMAS MICROPROCESADOS

6. PROCEDIMIENTO
Esta práctica es una sesión tutorial el instructor desarrollará los temas y el estudiante
realizará los ejercicios que se le planteen en el laboratorio.

7. INFORME
7.1. Presentar lo que el instructor solicite.
7.2. Conclusiones y Recomendaciones.
7.3. Bibliografía.

8. REFERENCIAS
8.1. Notas de aplicación de ATMEL AVR200, AVR201, AVR202, AVR204
8.2. http://www.atmel.com/products/microcontrollers/avr/default.aspx?tab=document
s

Elaborado por: Patricio Chico

Revisado por: Patricio Chico.- Responsable de la asignatura

Período: 2019A | http://ciecfie.epn.edu.ec/wss/VirtualDirectories/80/Enlaces/LABORA.htm

Vous aimerez peut-être aussi