7 Puertos Entrada y Salida - Borxo/Programming-PIC-Microcontrollers-Tutorial GitHub Wiki
Los pines de los PIC se distribuyen, en lo que se denominan “Puertos”, cada microcontrolador puede tener más o menos puertos o no tener alguno completo, esto depende de la gama del PIC. Los puertos de identifican por una letra: A,B,C…etc.
Muchos de estos pines E/S son multifuncionales, es decir, pueden realizar operaciones especiales, que se explicaran más adelante o funcionar con un propósito general.
Como se puede observar en la ilustración anterior, un pin se compone de un circuito realizado con combinaciones y secuenciales, donde dependiendo el pin realiza una operación o otra. Para el manejo de los puertos E/S se componen de distintos registros de configuración como son TRISX, PORTX y el ANSELX, estos 3 siempre están en todos los PIC de cualquier familia, como registros especiales en el caso del PIC16F1936 tiene LATX y WPUB.
Este registro permite al usuario el poder configurar al usuario si el pin que se va a utilizar es una entrada o una salida. La nomenclatura utilizada para cada puerto es TRISA, TRISB, TRISC…etc, cada bit de este registro corresponde a uno de los pines del puerto que se va a configurar, es decir, el bit TRISA0 corresponde al pin RA0.
TRISA<7:0>(Bit's de configuración del pin en entrada o salida)
- 1 -Pin configurado como Entradas.
- 0 -Pin configurado como Salida.
Una regla nemotécnica para acordarse de cuando es salida o entrada es que el 1 es más parecido a una “i” de input y el 0 más parecido a una “o” de output.
//Configuración de los pines como salidas.
TRISA=0b00000000; // Puerto A como salidas.Formato Binario.
TRISA=0x00; // Puerto A como salidas.Formato Hexadecimal.
TRISA=0; // Puerto A como salidas.Formato Decimal.
//Configuración de los pines como entradas.
TRISA=0b11111111; //Puerto A como entradas.Formato Binario.
TRISA=0xFF; //Puerto A como entradas.Formato Hexadecimal.
TRISA=255; //Puerto A como entradas.Formato Decimal.
//Configuración de los pines como salida y entrada en el mismo puerto.
TRISA=0b10101010; //Puerto A Pines Pares salidas y los impares entradas.
//Formato Binario,mas legible.
Mediante este registro se configurará el estado del pin, si se encuentra a nivel alto o bajo. Su nomenclatura es PORTA,PORTB,PORTC..etc. Al igual que en el registro TRISX cada bit de registro está asociado al pin.
RA<7:0> (Bit's de configuración del estado de los pines)
- 1 -Pin a nivel Alto (HIGH).
- 0 -Pin a nivel Bajo (LOW).
//Configuración de los pines a nivel bajo.
PORTA=0b00000000; //Puerto A a nivel bajo.Formato Binario.
PORTA=0x00; //Puerto A a nivel bajo.Formato Hexadecimal.
PORTA=0; //Puerto A a nivel bajo.Formato Decimal.
//Configuración de los pines a nivel alto.
PORTA=0b11111111; //Puerto A a nivel alto.Formato Binario.
PORTA=0xFF; //Puerto A a nivel alto.Formato Hexadecimal.
PORTA=255; //Puerto A a nivel alto.Formato Decimal.
//Configuración de un pin por medio del nombre del bit del puerto.
RA2=0; //Pin RA2 a nivel bajo.Nombrando el bit.
RA1=1; //Pin RA1 a nivel alto.Nombrando el bit.
Es registro especial que se utiliza cuando se quiere utilizar un pin de forma analógica, su nomenclatura es ANSELA, ANSELB,ANSELC..etc. Solo se configurará este registro cuando se vaya a utilizar el convertidor ADC del PIC, el cual, se explicará más adelante.
ANSA<5:0> (Bit's de configuración del pin en analógico o digital)
- 1 -Pin Analógico.
- 0 -Pin Digital.
//Configuración de los pines como digitales.
ANSELA=0b00000000; //Puerto A configurado como digital.Formato Binario.
ANSELA=0x00; //Puerto A configurado como digital.Formato Hexadecimal.
ANSELA=0; //Puerto A configurado como digital.Formato Decimal.
//Configuración de los pines como analógicos.
ANSELA=0b11111111; //Puerto A configurado como analógico.Formato Binario.
ANSELA=0xFF; //Puerto A configurado como analógico.Formato Hexadecimal.
ANSELA=255; //Puerto A configurado como analógico. Formato Decimal.
//Configuración de los pines como analogicos y digitales en el mismo puerto.
ANSELA=0b00111000; //Los pines del RA5 al RA3 son analógicos y
// del RA3 al RA0 son digitales.
//Los pines RA6 y RA7 no se utilizan.
//Configuración de un pin por medio del nombre del bit del puerto.
ANSA2=0; //Pin RA2 configurado como digital.Nombrando el bit.
ANSA1=1; //Pin RA1 configurado como analógico.Nombrando el bit.
Se trata de un registro disponible en PIC de gama media-alta, realiza la misma función que el registro PORTX. La diferencia fundamental es que no influye en cómo se encuentre el estado real del pin, sino que se le atribuye el estado alto o bajo sin realizar ninguna comprobación.
LATA<7:0> (Bit's de configuración del estado de los pines)
- 1 -Pin a nivel Alto (HIGH).
- 0 -Pin a nivel Bajo (LOW).
//Configuración de los pines a nivel bajo.
LATA=0b00000000; //Puerto A a nivel bajo.Formato Binario.
LATA=0x00; //Puerto A a nivel bajo.Formato Hexadecimal.
LATA=0; //Puerto A a nivel bajo.Formato Decimal.
//Configuración de los pines a nivel alto.
LATA=0b11111111; //Puerto A a nivel alto.Formato Binario.
LATA=0xFF; //Puerto A a nivel alto.Formato Hexadecimal.
LATA=255; //Puerto A a nivel alto.Formato Decimal.
//Configuración de un pin por medio del nombre del bit del puerto.
LATA2=0; //Pin RA2 a nivel bajo.Nombrando el bit.
LATA1=1; //Pin RA1 a nivel alto.Nombrando el bit.
Este registro solo se encuentra en el puerto B y permite conectar los pines a una resistencia de Pull-Up interna, para que este circuito funcione tiene que estar configurado los pines como entradas y habilitado en el registro OPTION_REG el bit WPUEN.
WPUB<7:0> (Bit's habilitación de las resistencias Pull-Up del Puerto B)
- 1 -Habilitado las resistencias Pull-Up
- 0 -Deshabilitado las resistencias Pull-Up
//Deshabilitación de las resistencias Pull-Up.
WPUB=0b00000000; //Puerto B con las resistencias Pull-Up deshabilitadas.Formato Binario.
WPUB=0x00; //Puerto B con las resistencias Pull-Up deshabilitadas.Formato Hexadecimal.
WPUB=0; //Puerto B con las resistencias Pull-Up deshabilitadas.Formato Decimal.
//Habilitación de las resistencias de Pull-Up.
WPUB=0b11111111; //Puerto B con las resistencias Pull-Up habilitadas.Formato Binario.
WPUB=0xFF; //Puerto B con las resistencias Pull-Up habilitadas.Formato Hexadecimal.
WPUB=255; //Puerto B con las resistencias Pull-Up habilitadas.Formato Decimal.
//Deshabilitación y Habilitación en el mismo Puerto.
WPUB=0b01010101; //Los pines pares tienen las resistencia Pull-Up habilitadas
//y los pines impares no.
//Deshabilitación o Habilitación de las resistencias de Pull-Up.
WPUB2=0; //Puerto B con las resistencias Pull-Up deshabilitadas.Nombrando el bit.
WPUB1=1; //Puerto B con las resistencias Pull-Up habilitadas.Nombrando el bit.