Вы находитесь на странице: 1из 11

Objetivo

Disear un programa en lenguaje C para realizar un desplazamiento de bits a travs de


un puerto del microcontrolador AT89LP6440, con la caracterstica de poder definir la
direccin del desplazamiento mediante una entrada digital. En el sistema fsico se
conectarn LEDs al puerto del microcontrolador para observar el desplazamiento mientras
que la entrada digital ser dada mediante un interruptor tipo fototransistor ptico.
Introduccin
En este reporte se presenta la metodologa seguida para el diseo de un algoritmo
encargado de generar el desplazamiento de un bit a travs de un registro en el
microcontrolador AT89LP6440 pudiendo establecer la direccin en la que se har el
corrimiento del bit mediante una entrada al sistema; el algoritmo es posteriormente
codificado mediante el lenguaje C para establecer las condiciones de operacin en
instrucciones que puedan ser ejecutadas por el microcontrolador mencionado, seguido de
esto el sistema completo es simulado utilizando el software Proteus v7 para comprobar su
funcionamiento. Finalmente el archivo generado mediante el lenguaje C es grabado en
la memoria ROM del microcontrolador y el sistema es implementado fsicamente,
utilizando un fototransistor como el dispositivo que dar la entrada al sistema que
determinar la direccin del corrimiento; la comprobacin del funcionamiento del sistema
es de forma visual, pudiendo observar el corrimiento de LEDs en la direccin determinada
por el fototransistor.
Marco Terico
En esta seccin del reporte se presentan los aspectos bsicos de teora requeridos para
comprender tanto el desarrollo del algoritmo para el corrimiento de LEDs bidireccional,
como para la implementacin del sistema fsico.
I/O del microcontrolador AT89LP6440
Las entradas y salidas E/S (en ingls I/O Input/Output) son los puertos o vas por donde
fluye la comunicacin entre un sistema y los datos que se van a manejar. Los puertos I/O
de un microcontrolador son utilizados para establecer conexin con los distintos
dispositivos que se van a controlar a travs de ste, su configuracin previa definir el
comportamiento del puerto y dependiendo de sta, sern las funciones que podrn ser
realizadas a travs de l [1].

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
2

Figura 1. Pines correspondientes a los puertos en el microcontrolador AT89LP6440.
El microcontrolador AT89LP6440 cuenta con cinco puertos de ocho pines fsicos
(exceptuando el puerto cuatro que cuenta con 6 pines) siendo posible configurar entre 35
y 38 pines. Estos puertos pueden ser configurados en cuatro diferentes modos de
operacin: quasi-bidirectional (estndar 8051 para puertos de salida), push-pull output,
open-drain output e input-only. El estado inicial de los puertos, despus de reiniciar el
microcontrolador, puede ser input-only o quasi-bidirectional dependiendo de si se
encuentra habilitada o no la variable denominada Tristate-Port User Fuse. Las entradas
anlogas siempre estn al inicio en modo input-only [2]. Las caractersticas bsicas de
los modos de configuracin son las siguientes:
Quasi-bidirectional: este modo tiene una funcin similar a la del estndar 8051. Un
puerto configurado en este modo puede ser utilizado como entrada y salida sin la
necesidad de reconfigurar el puerto.
Input-only Mode: esta configuracin pone las salidas en estado de alta impedancia
para capturar correctamente las entradas al sistema, adems cuenta con un
circuito para rechazar el ruido.
Open-drain Output: este modo apaga la condicin pull-up, lo que hace necesario
que se tenga esta condicin de forma externa para su correcto funcionamiento,
tpicamente se utiliza una resistencia conectada a la fuente del sistema. Este modo
es el mismo que se utilizara como salida en el modo Quasi-bidirectional
Push-pull Output: esta configuracin sigue la estructura pull-down del modo open-
drain y quasi-bidirectional de salida, pero proporciona una corriente constante de
pull-up cuando el puerto est a nivel lgico uno, eliminando as la necesidad de
una resistencia de pull-up para mantener la corriente en el pin.

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
3
Programacin de puertos en el microcontrolador AT89LP6440
Independientemente del lenguaje de programacin que se utilice, es necesario configurar
los registros asociados con los puertos fsicos del microcontrolador; por lo tanto se
requiere de dos registros para configurar uno de los cuatro modos de operacin posibles,
lo cual consiste simplemente en asignar un valor determinado (dependiendo del modo
deseado) a los registros PxM0 y PxM1 (donde x corresponde al puerto), estos valores son
presentados en la siguiente figura [2].

Figura 2. Valores requeridos para configurar los diferentes modos de operacin de los puertos I/O.
Para comprender correctamente esta asignacin se presenta el siguiente ejemplo, se
desea configurar todo el puerto dos en el modo Push-pull Output, para realizar esto es
necesario modificar completamente los registros asociados P2M0 y P2M1 y establecer los
siguientes valores (siguiendo la tabla de arriba).
P2M0
0 0 0 0 0 0 0 0
P2M1
1 1 1 1 1 1 1 1

Lo que es igual, en lenguaje C, a:
P2M0 = 0x00
P2M1 = 0xFF

Si se desea configurar el pin 2 y 5 del puerto uno en modo Input Only se deben modificar
los registros asociados a este puerto P1M0 y P1M1 como sigue:

P1M0
X X 1 X X 1 X X
P1M1
X X 0 X X 0 X X

Lo que es igual, en lenguaje C, a:
P1M0 |= 0x24
P1M1 &= 0xDB

Esto ltimo modifica slo las posiciones requeridas para configurar los pines deseados.
Para cualquier otro caso se sigue la misma metodologa, simplemente es necesario
modificar las posiciones de los registros correspondientes a los pines que se desean
configurar en algn modo de operacin determinado, o en su defecto modificar los
registros completos para afectar a todo el puerto.

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
4
Fototransistor
Un fototransistor es normalmente sensible a la luz infrarroja, sta incide sobre la regin de
la base generando portadores en ella, llevndolo al estado de conduccin y permitiendo el
paso de corriente desde el colector al emisor, adems de amplificar la corriente
ligeramente debido a su efecto de ganancia [3].
El fototransistor puede trabajar como sigue:
Como transistor normal con la corriente de base

(modo comn)
Como fototransistor, cuando la luz que incide en la base hace que entre en modo
de conduccin (conduccin entre colector y emisor).
El componente utilizado en esta prctica puede ser considerado un optoacoplador, ste
es un dispositivo de emisin y recepcin que funciona como un interruptor activado
mediante la luz emitida por un diodo LED que satura un componente optoelectrnico, en
este caso un fototransistor; combinando en un solo dispositivo semiconductor dos
componentes conectados de forma ptica. Su funcionamiento es simple (la explicacin es
en base a la imagen de abajo) el voltaje y la resistencia en serie con el LED generan una
corriente en el LED emisor cuando se cierra el interruptor

. Si la corriente proporciona
un nivel adecuado de luz, al incidir sobre el fototransistor, ste se saturar generando una
corriente en

, de esta forma el voltaje de salida ser igual a cero con

cerrado y

con

abierto [4].

Figura 3. Configuracin bsica de un optoacoplador. El funcionamiento se resume en la tabla 1.
Tabla 1. Descripcin del funcionamiento de un optoacoplador en base a la figura 3.
LED emitiendo luz (energizado)? Voltaje a la salida?
SI, LED encendido Voltaje de salida igual a cero


NO, LED apagado Voltaje de salida igual a





Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
5
El dispositivo utilizado en esta prctica es el switch interruptor de corriente mediante un
fototransistor QVE00832 el cual tiene las siguientes caractersticas principales [5]:

No hay contacto entre el interruptor (LED separado del fototransistor)
Empaquetado opaco
Transistor normalmente abierto
Corriente continua de 60 mA
Consumo de energa de 150 mW
Voltaje mximo de emisor de 1.5 V
Corriente mxima en colector de 14 mA


Figura 4. Fototransistor QVE00832 (dispositivo fsico a la izquierda y esquemtico a la derecha)


Figura 5. Diagrama de conexin del QVE00832 [5].
Material
1 Cristal de
1 Capacitor de cermica de .
1 Capacitor electroltico
8 Resistencias
2 Resistencias
1 Resistencia
1 Push Botton
8 LEDs
1 Fototransitor QVE00832
1 Microcontrolador AT89LP6440
Fuente de Voltaje de 3.3 V (Arduino UNO)
Protoboard

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
6
Desarrollo
El objetivo principal es lograr que un corrimiento de LEDs conectados al puerto uno del
microcontrolador AT89LP6440, logre cambiar de direccin dependiendo de una entrada
digital. Lo necesario para lograr esto es explicado a continuacin.
Descripcin del algoritmo
El algoritmo utilizado para cumplir el objetivo es prcticamente el mismo que se dise en
la prctica pasada, el corrimiento de LEDs se realiza de la misma forma, esto se traduce a
poner los bits en nivel alto o bajo en el registro correspondiente al puerto uno del
microcontrolador. Inicialmente se pone el bit de mayor peso (o menor peso) en estado
lgico uno, mientras los dems permanecen en estado lgico cero, esto se mantiene
durante un periodo de tiempo en milisegundos, despus de esto el bit en estado lgico
uno es desplazado mediante la funcin o que simplemente recorre el registro un
nmero definido de posiciones (en este caso una posicin a la vez), al hacer esto el bit en
nivel lgico uno pasa a tener un estado lgico cero y el bit siguiente de mayor peso (o
menor peso) pasa a estar en estado lgico uno; esto est dentro de un ciclo infinito
(while) por lo que al darse una iteracin el bit en el registro se va desplazando siempre
una posicin.
Aunado a esto es importante determinar el momento adecuado para reiniciar el registro,
ya que al darse un desplazamiento en ste y tener el bit en nivel lgico uno en la posicin
de mayor peso (o menor peso) el registro se desplazar y quedar sin ningn bit en
estado lgico uno, para esto simplemente se utiliza una decisin (if) que verifica si el bit
de mayor peso (o menor peso) est en uno lgico, de ser as reinicia el registro. Este
algoritmo se repite indefinidamente, recorriendo un bit en el registro y reinicindolo
cuando es necesario, dando la apariencia de que el bit se desplaza y regresa al inicio al
salir del registro.
Para establecer la direccin del desplazamiento, en el algoritmo, simplemente se verifica
el valor de la entrada lgica en cada iteracin del ciclo infinito ya mencionado, si el valor
de la entrada es cero, el desplazamiento es del bit de mayor peso al de menor peso, si la
entrada cambia a nivel alto, el desplazamiento se invierte. Cabe mencionar que al verificar
la entrada lgica se utiliza una decisin doble (if) por lo que al no cumplirse un caso se
ejecuta el otro, es decir, la seccin de instrucciones utilizada para hacer el
desplazamiento en el registro, es la misma en ambos casos dependientes de la entrada al
sistema, solamente cambia la direccin del desplazamiento y por ende la verificacin para
el reinicio del registro, por lo que puede reutilizarse cdigo en esta seccin.
Cdigo desarrollado en lenguaje C
El cdigo utilizado para realizar el algoritmo explicado se presenta a continuacin, el cual
es prcticamente el utilizado en la prctica 1 [6], el cdigo est comentado, facilitando la
comprensin del mismo.
El cdigo se divide en cuatro secciones principales: definicin de libreras, inicializacin de
puertos (entradas y salidas) y variables, funciones de propsito especfico y la funcin

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
7
principal (main). La utilizacin de funciones de propsito especfico es con el fin de
reutilizar cdigo o simplificar operaciones, logrando un cdigo ms eficiente y organizado.
//Header Files
#include <at89lp6440.h>

void inicializacion(void)
{
//Puerto 1 como salida cada bit define un pin
//el bit de menor peso configura el puerto P1.0 el siguiente el P1.1
//y as sucesivamente
P1M0 = 0x00;
P1M1 = 0xFF;
//P0.0 como entrada
P0M0 = 0x01;
P0M1 = 0x00;
}
//Funcin para introducir un retardo en la ejecucin del programa
void delay(void)
{
unsigned int i; //definiendo variable para ciclo for
for(i = 0; i < 65000; i++) //Ciclo for sin funcin alguna
{}
}

void reinicio(v_final, v_inicial)
{
delay(); //retardo en ejecucin
//Verificando si un bit especfico (v_final) es igual en el puerto P1
if( (P1&v_final) == v_final )
{
P1 = v_inicial; //Reiniciando el puerto P1
delay(); //retardo en ejecucin
}
}

void main(void)
{
inicializacion(); //estableciendo configuracin de puertos
P1 = 0x01; //asignando valor a puerto P1
while(1)
{
if( (P0&0x01) == 0x01) //verificando valor de P0.0 para determinar
direccin
{
reinicio(0x80, 0x01); //reiniciando puerto P1
P1 = P1 << 1; //corrimiento de un bit a la izquierda
}
else
{
reinicio(0x01, 0x80); //reiniciando puerto P1
P1 = P1 >> 1; //corrimiento de un bit a la derecha
}
}
}

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
8
Circuito fsico implementado
Primeramente se presenta el circuito utilizado para dar la entrada al sistema que definir
la direccin del desplazamiento de LEDs, ste consta del dispositivo QVE00832, que
como ya se mencion, puede ser considerado como un optoacoplador que utiliza un LED
para estimular a un fototransistor mediante luz. El diagrama del circuito se presenta en la
imagen de abajo.
El funcionamiento de este circuito es simple, si algn cuerpo opaco est entre el LED y el
transistor, la luz del primero no ser recibida por el segundo y por ende el transistor estar
apagado dando a la salida un nivel alto indicando que el desplazamiento es hacia la
izquierda; por el contrario si no existe algo que obstruya la luz del LED sobre el
fototransistor, ste ltimo conducir corriente cerrando el circuito, dando un cero lgico a
la entrada del sistema.

Figura 6. Circuito para la entrada al sistema, compuesto principalmente por un QVE00832.

A continuacin se presenta el diagrama del sistema completo implementado fsicamente
para probar el programa generado mediante lenguaje C para el corrimiento de LEDs
bidireccional utilizando un fototransistor para definir la direccin del desplazamiento.

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
9

Figura 7. Circuito fsico implementado, utilizando un el componente QVE00832 como entrada.
Resultados
Ciertamente los resultados obtenidos de la implementacin del cdigo en lenguaje C
diseado son meramente visibles, es decir, no se pueden realizar tablas o grficas para
comprobar su funcionamiento, por tal motivo slo se presentan algunas capturas del
circuito fsico en donde se puede apreciar la conexin de los dispositivos de entrada y
salida, tales como el fototransistor y varios LEDs. Tambin se puede observar que la
fuente de alimentacin para el sistema es un Arduino UNO, el cual es utilizado con la
finalidad de obtener el voltaje de 3.3v requerido para su funcionamiento.

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
10

Figura 8. Conexin fsica del sistema, se puede observar la alimentacin de 3.3v mediante el
Arduino UNO y los LEDs utilizados para el desplazamiento en una direccin determinada por una
entrada al sistema.

Figura 9. En esta imagen se puede apreciar el fototransistor utilizado para dar la entrada al sistema
y determinar la direccin del desplazamiento.
Bibliografa
[1] Entrada/Salida. Wikipedia. <http://es.wikipedia.org/wiki/Entrada/salida>. (Consultado el
2 de febrero de 2014)
[2] Hoja de datos Microcontrolador AT89LP6440.
<http://www.atmel.com/devices/at89lp6440.aspx>. (Consultado 2 de febrero de 2014)
[3] Fototransistor. Wikipedia. <http://es.wikipedia.org/wiki/Fototransistor>. (Consultado el 2
de febrero de 2014)

Prctica #2
Sistemas con Microprocesador 3 de febrero de 2014
11
[4] Optoacoplador. Wikipedia. <http://es.wikipedia.org/wiki/Fototransist>. (Consultado el 2
de febrero de 2014)
[5] Hoja de datos QVE00832. <http://www.alldatasheet.es/datasheet-
pdf/pdf/54388/FAIRCHILD/QVE00832.html>. (Consultado 2 de febrero de 2014)
[6] Valenzuela De La Cruz, Vctor Manuel. Prctica #1 - Corrimiento de LEDs. Universidad
Autnoma de Ciudad Jurez. Mxico. 2014

Вам также может понравиться