Practica 1 Sis.up.IP(1)

4
 1 PRÁCTICA 2: ALGORITMOS ADICIONALES OBJETIVO: Revisar algunos algoritmos que se emplearan en prácticas futuras. 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 d e aplicación AVR202. ALGORITMO DE MULTIPLICACIÓN EN 16 BITS Se puede usar el algoritmo d e multiplicación aprendido en la práctica N o. 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 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. ESCUELA POLITECNICA NACIONAL DEPARTAMENTO DE AUTOMATIZACIÓN Y CONTROL INDUSTRIAL LABORATORIO DE SISTEMAS MICROPROCESADOS

Transcript of Practica 1 Sis.up.IP(1)

Page 1: Practica 1 Sis.up.IP(1)

7/21/2019 Practica 1 Sis.up.IP(1)

http://slidepdf.com/reader/full/practica-1-sisupip1 1/4

1

PRÁCTICA 2: ALGORITMOS ADICIONALESOBJETIVO:

Revisar algunos algoritmos que se emplearan en prácticas futuras.

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

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.

ESCUELA POLITECNICA NACIONALDEPARTAMENTO DE AUTOMATIZACIÓN Y CONTROL INDUSTRIAL

LABORATORIO DE SISTEMAS MICROPROCESADOS

Page 2: Practica 1 Sis.up.IP(1)

7/21/2019 Practica 1 Sis.up.IP(1)

http://slidepdf.com/reader/full/practica-1-sisupip1 2/4

2

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 A

COMPLEMENTO A 2  7*: 1 0 0 1 0 0 1 0 0 0 0 0 1 B

1 0 0 1

CARRY 0 1 0 1 1 0 0 0 0

0 1 0 0 0 0 0 0 2 C

1 0 0 1

CARRY 0 1 1 0 1 0 0 0 0

1 0 0 0 0 0 0 0 3

1 0 0 1

CARRY 1 0 0 0 1 0 0 0 1 D 

0 0 1 0 0 0 1 0 4 E1 0 0 1

CARRY 0 1 0 1 1 0 0 1 0

RESIDUO COCIENTE

0 0 1 0 0 0 1 0 E2-1 2-2  2-3  2-4  2-1 2-2  2-3  2-4 

0.25 0.25

Page 3: Practica 1 Sis.up.IP(1)

7/21/2019 Practica 1 Sis.up.IP(1)

http://slidepdf.com/reader/full/practica-1-sisupip1 3/4

3

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.

IMPORTANCIA DE LA REPRESENTACIÓN DE NÚMEROS EN BCD

Las personas están familiarizadas con el Sistema de Numeración Decimal, al contrario del

microcontrolador que mediante las instrucciones manipulan a los números en binario; por lo

que es necesario implementar las transformaciones entre estos dos sistemas de numeración.

Pero, al utilizar el ingreso de números con teclados y la salida con displays de 7 segmentos, el

microcontrolador solo debe realizar las transformaciones entre BCD y Binario.

Para la transformación de un número entero de BCD a Binario se lo realiza mediante

multiplicaciones sucesivas por 10 o la variación de este algoritmo con multiplicaciones por las

potencias de 10. Igualmente, para transformar números enteros de Binario a BCD se utiliza el

algoritmo de divisiones sucesivas para 10 o la variación de divisiones con potencias de 10, en

ambos casos las divisiones utilizan desplazamientos y restas. (Revisar la nota de aplicación

AVR204)

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.

1. Realizar un ejemplo de suma y resta en binario con números de 16 bits, y presentar la respuesta

utilizando notación hexadecimal.

2. Realizar un ejemplo de multiplicación con números de 16 bits, para lo cual se puede emplear el

algoritmo visto en la práctica anterior (16 desplazamientos) o mediante el algoritmo de la Fig. 1

empleando notación hexadecimal.

Page 4: Practica 1 Sis.up.IP(1)

7/21/2019 Practica 1 Sis.up.IP(1)

http://slidepdf.com/reader/full/practica-1-sisupip1 4/4

4

3. Realizar la siguiente división (8 bits), usando el algoritmo de la Práctica 1 con los ajustes mencionados

en esta hoja guía.

Lunes: 43/83

Martes: 57/94

Miércoles: 32/75

Jueves: 41/82

Viernes: 53/ 87

4. Aplicar el método de conversión de binario a BCD, mediante el algoritmo similar al de la división,

basado en desplazamientos, que se puede encontrar en la referencia de la bibliografía. (Revisar la

nota de aplicación AVR204)

Lunes 10110101

Martes 11001011

Miércoles 10101101

Jueves 11011010

Viernes 10111101

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:

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ÓGRAFIA:

Notas de aplicación de ATMEL AVR200, AVR201, AVR202, AVR204

http://www.atmel.com/products/microcontrollers/avr/default.aspx?tab=documents