You are on page 1of 13

Los Microcontroladores y Micropocesadores

MSc(c). Ing. Heber Armando Pabon Conde


Programa de Ingeniería Electrónica
Manejo de puertos en c

Las líneas de entrada y salida (E/S) vienen distribuidas en


varios puertos, cada uno de ellos posee funciones
específicas y están distribuidos de la siguiente manera:

PIC18F4550:
· PUERTO A 7bits
· PUERTO B 8bits
· PUERTO C 8bits
· PUERTO D 8bits
· PUERTO E 4bits
Consideraciones PIC18F4550

Para ambos dispositivos hay que tener algunas


consideraciones especiales, al momento de
utilizar los puertos como entrada o salida, estas
consideración se enumeran a continuación.

•El pin RA6 es compartido con el oscilador principal, en


el caso de utilizar el oscilador interno, este pin puede
ser utilizado como entrada o salida.
•El pin RC3 no está implementado
Consideraciones PIC18F4550

• Los pines RC4 y RC5 son utilizados por el transceiver


del modulo USB, en el caso de que el modulo USB
este deshabilitado, estos pines pueden ser utilizados
únicamente como entradas.

• El pin RE3 es compartido con la función de MASTER


CLEAR (MCLR), en el caso que esta función sea
deshabilitada este bit se puede utilizar únicamente
como un pin de entrada (Schmitt Buffer Input), no
admite ser salida.
Configuración de puertos mediante instrucciones output
e input

Existen instrucciones en C que permiten enviar o recibir


información por un puerto, entre ellas se tienen:
· OUTPUT_X (VALOR);
Saca por el puerto indicado en la “X” un valor entre 0 y
255
· INPUT_X ( );
Toma del puerto indicado en la “X” el valor que posee
en sus terminales
Existen instrucciones que manejan un solo bit de un
registro entre ellas están:

· OUTPUT_LOW (PIN);
Pone determinado pin a cero
· OUTPUT_HIGH (PIN);
Pone determinado pin a uno
· OUTPUT_BIT (PIN, VALOR);
Pone determinado pin al valor especificado
· OUTPUT_TOGGLE (PIN);
Complemente el valor de determinado pin
· INPUT (PIN);
Lee el valor de determinado pin
Autoconfiguran los puertos dependiendo si es una
operación output (salida) o input (entrada).

Hay otra instrucción que lee el valor de un pin


con la característica que ella no configura el pin
utilizado, aunque es una instrucción input
· INPUT_STATE (PIN);
Lee el valor de determinado pin sin modificar el
sentido del puerto.
Configuración de puertos mediante modificación de los
registros tris

Para configurar los puertos como entrada o


salida, se utilizan los registros TRISX, donde la X
representa el nombre del puerto (A, B, C, D, E), si
se desea el puerto como entrada se debe poner
a “1” y si es como salida se debe poner a “0” el
bit correspondiente del registro TRIS, para ello
se utilizan la funciones:
Registros TRIS

· SET_TRIS_X (VALOR);
Se utiliza para configurar el registro tris de
determinado puerto, por ejemplo si se pone
SET_TRIS_B (0B00001111), quiere decir que se
está configurando los cuatro bits más
significativos del puerto B como salida y los
cuatros bits menos significativos como entrada.
Información para Apoyo al curso en:
Directiva FAST_IO (X)

Debido a que las instrucciones input y output


reconfiguran los registros tris, se utiliza la directiva
FAST_IO (X) para evitar que esto suceda, esta directiva
se usa al inicio del programa y hay que poner una
directiva por cada puerto a utilizar de la siguiente
manera:
· #USE FAST_IO (A);
Esta directiva está evitando que el puerto A, se
reconfigure cada vez que se utiliza una instrucción
output o input sobre dicho puerto.
Dirección de la memoria RAM

Si no se desea utilizar las funciones input y


output se pueden definir los puertos con un
nombre especifico, de tal manera que se puedan
utilizar como si fueran una variable.

 #BYTE PORTA = 0xF80


 #BYTE PORTB = 0xF81
 #BYTE PORTC = 0xF82
 #BYTE PORTD = 0xF83
 #BYTE PORTE = 0xF84
Diferencias

La única diferencia con respecto al 18F2550, es que éste no


posee puerto D, la forma de enviar o recibir datos por un
puerto seria así:

· PORTA = 28;
Así se envía el número 28 al puerto A

· VAR = PORTB;
Así se carga la variable VAR con el valor del puerto B
Consideraciones

De esta forma se puede escribir o leer un puerto


sin necesidad de utilizar las funciones input y
output, estoy no quiere decir que no se puedan
utilizar, simplemente es otra forma de hacerlo.

Información para apoyo al curso en:


http://profesor-rangel.blogspot.com.co/p/manejo-de-p
uertos.html

You might also like