Los microprocesadores PIC16F84 tienen 2 puertos de entrada/salida paralelos de usos generales denominados Puerto A y Puerto B.

El Puerto A es  de 4 bits y el Puerto B es de 8 bits.

Los puertos del microcontrolador PIC16F84 son el medio de comunicación con el mundo exterior, en ellos podremos conectar los periféricos o circuitos necesarios como por ejemplo los módulos LCD, motores eléctricos, etc; pero estas conexiones no se podrán realizar arbitrariamente. Existen unas reglas básicas que deberán cumplirse para que el microcontrolador no sufra daños o se destruya. Para ello es necesario conocer los limites de corriente que puede manejar el microcontrolador.

LIMITE DE CORRIENTE PARA LOS PUERTOS “A” Y “B”

Los puertos “A” y “B” del microcontrolador podrán ser programados como entradas y salidas indiferentemente. Para el caso de que sean programados como salida se denominan “Modo Fuente” por que suministran corriente y cuando son programados como entrada se denominan “Modo Sumidero” por que reciben corriente.

La máxima corriente que puede suministrar una línea programada como salida es de 20 mili-amperios, pero si utilizamos toda las líneas del puerto “A” programadas como salida, no deberá exceder de 50mA para todo el puerto “A”. Para el caso del puerto “B” no deberá exceder de 100 mA.

Si las programamos como entradas (Sumidero), la corriente máxima que puede manejar una sola línea es de 25 mA. Para el caso del puerto “A” programado con todas sus líneas como entrada, la máxima es de 80 mA. En el caso del puerto “B” es de 150 mA.

En caso de querer utilizar periféricos que manejen mayor cantidad de corriente de la especificada, habrá que aplicar un circuito acoplador como por ejemplo los buffers, transistores que se encarguen de controlar la corriente, etc.

IDENTIFICACIÓN DE LOS PINES UTILIZADOS PARA LOS PUERTOS DE ENTRADA Y SALIDA

En la imagen siguiente se podrá observar claramente que el microcontrolador tiene dos puertos denominados “A” y “B”. El puerto “A” tiene 5 líneas disponibles (RA0, RA1, RA2, RA3, RA4) y el puerto “B” tiene 8 líneas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7). Ambos Puertos suman un total de 13 líneas que podrán ser programadas independientemente como entradas o como salidas. Estas son las líneas que estarán destinadas a comunicar el microcontrolador con el mundo exterior, como por ejemplo motores, diodos luminosos “Leds”, módulos LCD, teclados matriciales, etc.

http://entrrnadorpic16f84.files.wordpress.com/2008/09/14.jpg

También hay que hacer mención a que el Pin número 3 perteneciente al puerto “A” (RA4) también tiene otra nomenclatura denominada “TOCKI”, lo cual quiere decir que esta línea se puede programar como entrada, salida y temporizador/contador.

CONFIGURACIÓN DE LOS PUERTOS DE ENTRADA/SALIDA

Los bits de cada puerto se configuran mediante los bits correspondientes de un registro de control asociado que recibe el nombre de TRIS. En realidad cada puerto soporta dos registros:

1. El registro de datos, al que se denomina Puerto A o B (PortA o PortB).

2º El registro de control TRISA o TRISB, con el que se programa el sentido (Entrada o Salida) de las líneas de cada puerto.

Los Puertos A y  B se corresponden con las posiciones 5 y 6 del área de datos. Cada uno de sus bits puede programarse como una línea de Entrada o de Salida, según se ponga un 1 ó un 0 en el bit del registro de control TRIS correspondiente.

Un 1 en el bit “x” del registro TRISA pone en alta impedancia (Entrada) la línea asociada “x” del Puerto A. Si en el bit “x” de TRISA hubiese un 0, el contenido del biestable de datos correspondiente del Puerto A pasaría a la patita de E/S externa.

Cualquier línea puede funcionar como Entrada o como Salida. Sin embargo, si actúa como Entrada, la información que se introduce desde el exterior no se memoriza o graba, pasa simplemente por un dispositivo triestado por lo cual el valor de dicha información debe mantenerse hasta que sea leída. La lectura se realiza en “tiempo real”.

Cuando una patita de E/S funciona como salida, el bit que proviene del bus de datos se guarda en el biestable del dato con lo cual la información que ofrece esta patita permanece invariable hasta que se reescriba otro bit.

Para configurar la patita como Entrada, hay que cargar un 1 en el biestable de control de E/S mientras que hay que cargar un 0 si se desea que sea Salida.

Cada línea de E/S de los puertos se programa de forma independiente y puede ser Entrada o Salida. Cuando se produce un reset, todos los bits de los registros TRIS pasan a tener el valor 1 y todas las líneas de E/S actúan como Entrada por evidentes motivos de seguridad para evitar daños irreparables.

Los puertos que contienen entradas y salidas necesitan una atención especial al escribir el programa. Instrucciones como bsf y bcf comienzan leyendo el valor del puerto y cargándolo en el registro W; allí ejecutan la puesta a 1 ó a 0 del bit seleccionado y, luego, depositan el registro W en el puerto. También hay que tener en cuenta las modificaciones que se produzcan en las patitas que son entrada y pasan a salida, pues pueden estar presentes datos antiguos en el registro de salida del puerto al ser memorizados.

Hay que prestar mucha atención a las operaciones que, tras una lectura de un puerto. Sigue una escritura de la misma. Se debe dejar pasar un tiempo determinado para que se estabilice el voltaje de las patitas. Insertando entre la lectura y la escritura una instrucción NOP o cualquier otra que no implique a los puertos, se eliminan estos errores potenciales.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: