En este Articulo veremos el manejo y gestion de Puertos en C a traves de la Ram, los microcontroladores tienen terminales de entrada y salida que se encuentran divididas en puertos llamadas de forma alfabeticamente A,B,C,D, etc. cada puerto puede tener hasta 8 terminales de entrada/salida, todo el puerto puede ser considerado como entrada o salida, pero tambien cada terminal de un puerto puede ser manejada de forma individual para manipularlo como entrada o salida. En el lenguaje de programacion C se pueden manejar los puertos de 2 formas:
- Gestion de puertos en c A Traves de la RAM
- Gestion de puertos en c A Traves de las directivas del compilador
Nosotros nos Centraremos en la primera, realizaremos la gestion de puertos en c a traves de la Ram, para lo cual necesitaremos crear variables de apoyo y situarlas en una posicion especifica de la ram. Comenzemos…
Requerimientos:
- Conocimientos basicos de Que es un Microcontrolador
Desarrollo
La habilitacion como entrada o salida de un puerto o terminal se realiza mediante el registro TRISx (TRISA,TRISB,TRISC,etc) y la gestion del bus de datos se realiza mediante el registro PORTx(PORTA,PORTB,PORTC,etc). Cabe aclarar que para establecer un puerto o terminal como entrada o salida utilizando el registros TRISx:
- Establecemos 0 para Salida de datos
- Establecemos 1 para Entrada de datos
Ahora veremos a que posicion de memoria ram debe apuntar cada variable:
- TRISx
TRISA = 85
TRISB = 86
TRISC = 87
TRISD = 88
TRISE = 89

Suscríbete a nuestra lista de correo y recíbe los últimos contenidos directamente en tu bandeja de correo electrónico, puedes elegir únicamente de que categoria del blog quieres recibir contenido.
Suscríbeme- PORTx
PORTA = 05
PORTB = 06
PORTC = 07
PORTD = 08
PORTE = 09
Los registros TRISx y PORTx se definen como byte y se definen en la posicion correspondiente de memoria, ejemplo:
1 2 3 4 | #BYTE TRISA = 0x85 #BYTE PORTA = 0X05 |
Una vez definidas estas variables podemos ahora controlar y configurar estos puertos y terminales:
1 2 3 4 5 | TRISA = 0xFF // en binario seria 11111111 esto es establecer las 8 terminales de entrada para el puerto A TRISB = 0x00 // en binario seria 00000000 esto es establecer las 8 terminales de salida para el puerto B TRISC = 0x0F // en binario seria 00001111 esto es establecer 4 terminales de salida y 4 de entrada en el puerto C |
- Escritura / Lectura en Puertos
1 2 3 4 | PORTC = 0x0A; // manda 00001010 por el puerto C valor = PORTA; // asigna el valor del puerto A a la variable valor |
Ahora, para trabajar los terminales de un puerto de forma individual existen algunas funciones:
1 2 3 4 5 6 | bit_clear(var,terminal); // Establece a 0 el terminal especificado de la variable especificada bit_set(var,terminal); // Establece a 1 el terminal especificado de la variable especificada bit_test(var,terminal); // Muestra el terminal especifico de la variable swap(var); // intercambia los 4 bits de mayor peso por los 4 bits de menor peso 11110000 -> 00001111 |
Ejemplos:
1 2 3 4 5 6 | bit_clear(PORTB,3); // mandamos un 0 a el terminal 3 del puerto B bit_set(TRISA,7); // Establecemos con un 1 al terminal 7 de TRISA lo que lo configura entrada bit_test(PORTA,0); // obtenemos el valor del pin 0 del puerto A swap(PORTC); // intercambia los 4 bits de mayor peso por los de menor peso del puerto C |
- Extra
Se puede crear tambien una variable para trabajar con terminales directamente:
#BIT nombre = posicion.bit
Ejemplo:
1 2 3 | #BIT RB4 = 0x06.4 //Recordando que puerto b es 0x06 solo agregamos . y el terminal que queremos asignar |
Ahora podemos trabajar con ese terminal de manera mas facil:
1 2 3 | RB4 = 0; |
Visto – Gestion de Puertos en C a Traves de la Ram – Tutorial