jueves, agosto 26, 2010

Práctica 3: Introducción a la programación en ensamblador

En esta sesión se realizó una introducción al método de programación de microcontroladores de cualquier marca en general (sin restringirse a la lista de comandos), se dio un repaso rápido al álgebra de Boole, se resolvieron problemas sencillos definiendo restricciones software imagen de las restricciones hardware y se mostraron ejemplos de productos que se sustentan en un microcontrolador especificando qué modulos o características principales entran en juego.

Álgebra de Boole

El álgebra de Boole es una herramienta de trabajo muy útil al programar en un microcontrolador. Puesto que nos encontramos al nivel de editar y configurar bits dentro de un byte, Algunas propiedades del álgebra de Boole son::

Adición Producto
1  a + \bar {a} = 1 \,  a \cdot \bar{a} = 0
2  a + 0 = a \,  a \cdot 1 = a \,
3  a + 1 = 1 \,  a \cdot 0 = 0 \,
4  a + a = a \,  a \cdot a = a \,
5  a + b= b+ a \,  a \cdot b = b \cdot a \,
6  a + (b + c) = (a + b) + c \,  a \cdot (b \cdot c) = (a \cdot b) \cdot c \,
7  a + ( b \cdot c ) = (a + b) \cdot (a + c) \,  a \cdot (b + c) = a \cdot b + a \cdot c \,
8  a + a \cdot b = a \,  a \cdot (a + b) = a \,
9  \overline {(a + b)} = \bar {a} \cdot \bar {b}  \overline {(a \cdot b)} = \bar {a} + \bar {b} \,

Para un repaso más a fondo de la lógica booleana leer el siguiente artículo: Álgebra de Boole

Utilizando estas propiedades definimos una herramienta muy útil: El enmascaramiento.
Se trata de una manera de extraer o forzar el estado de un solo bit o de algunos específicos de una palabra. Para ello se utilizan las operaciones booleanas AND OR y XOR y estas propiedades:
Para el AND
 a + 0 = a \,        No se modifica el estado del bit "a"
 a + 1 = 1 \,        Se forza el estado del bit a "1".

Para el OR
 a \cdot 1 = a \,          No se modifica el estado de "a"
 a \cdot 0 = 0 \,          Se forza el estado del bit a "0"

Para el XOR
          Invierte el valor de "a"
          Conserva el valor de "a"

En función de lo que se quiera hacer con una palabra de bits, se puede seleccionar un bit (Borrar todos los demás) Invertir un bit (gracias al XOR), forzar a 0 (con AND) o forzar 1 (con OR).

Consideraciones previas.

Al realizar aplicaciones basadas en un microcontrolador es importante mantener en mente que se trata de un dispositivo limitado en memoria, manejo de datos, operaciones y restringido en tiempo de ejecución. De estos puntos nace la diferencia a la hora de diseñar algoritmos de solución para microcontrolador.

El lenguaje MPASM

Es un lenguaje de programación de bajo nivel, por lo que está orientado a procesos de la máquina. Es el lenguaje de programación específico para toda la gama de microcontroladoes de Microchip ©

Las restricciones Software imagen de las restricciones Hardware:

Al trabajar con un microcontrolador es muy importante recordar las limitaciones que nos impone el dispositivo (el hardware). En el caso de los microcontroladores PIC hay que recordar el tamaño máximo del dato que se puede manejar, las restricciones de operaciones que puede manejar y el tiempo de operación fijado por el reloj externo. Para acostumbrarnos a estas condiciones de trabajo realizamos algunos ejercicios.

Ejercicio 1: El enmascaramiento para comprobar un solo bit.
         De una palabra de 8 bits, comprobar el estado del bit 4:
         Restricciones:
             Solo utilizar operaciones de la lógica booleana
             Solo se puede saber si una palabra de 8 bits es igual a 0 o no.

Problema 1: 
¿Qué pasaría si se hace un enmascaramiento con la operación XOR?

Problema 2:
Separar de un byte con la siguiente distribución:
B0B1B2B3B4B5B6B7
Dato 2Dato 1
En dos bytes diferentes que contengan cada uno un dato:
B0B1B2B3B4B5B6B7
00Dato 1
000000Dato 2


Ejercicio 2:

Llevar el conteo de visitantes a un museo en una memoria de 8 bits. Se espera un número máximo de 32800 visitantes por mes.


Problema 4:
Programar un semáforo de cortesía basado en la existencia de 2 rutinas de retardo: 1 segundo y 5 segundos.
El byte de información (Entradas y salidas) está distribuido como sigue:
B0B1B2B3B4B5B6B7
0000B R A V


Para el reporte de práctica

En esta ocasión si se tendrá que realizar un reporte de práctica el cual deberá incluir una descripción de cada actividad y tema tratado (Cómo funcionan los enmascaramientos, cómo se hace una cuenta en más de 8 bits con todas las consideraciones necesarias (Carry etc.), y cómo se programó el semáforo.)
En la introducción sería aconsejable que pusieran un resumen de la lógica de Boole, pero es a criterio de cada quien. Si necesitan repasar la lógica de Boole ponganlo en la introducción.
Como actividades a reportar, tendrán que describir el diagrama de flujo que hice del semáforo (Tiene que estar bien descrito), y desarrollarán la función de "Esperar entrada" revisando el bit B

Archivos adjuntos:
Diaframa de flujo semáforo [PDF]
Diagrama de flujo semárofo [visio]
Presentación [pptx]
Presentación [PDF]

No hay comentarios: