PIC 16F88XLa familia del PIC 16f88x cuenta con 35 pines disponibles de propósito general E/S. dependiendo de que periféricos estén habilitados, algunos o todos de los pines pueden no estar disponibles como propósito general E/S. En general, cuando un periférico es habilitado, el pasador asociado no puede ser utilizado como un pin de propósito general E/S. Con el propósito de sincronizar el funcionamiento de los puertos de E/S con la organización interna del microcontrolador de 8 bits, ellos se agrupan, de manera similar a los registros, en cinco puertos denotados con A, B, C, D y E. Todos ellos tienen las siguientes características en común: Por las razones prácticas, muchos pines de E/S son multifuncionales. Si un pin realiza una de estas funciones, puede ser utilizado como pin de E/S de propósito general. Cada puerto tiene su propio registro de control de flujo, o sea el registro TRIS correspondiente: TRISA, TRISB, TRISC etc. lo que determina el comportamiento de bits del puerto, pero no determina su contenido. Al poner a cero un bit del registro TRIS (pin=0), el pin correspondiente del puerto se configurará como una salida. De manera similar, al poner a uno un bit del registro TRIS (bit=1), el pin correspondiente del puerto se configurará como una entrada. Esta regla es fácil de recordar: 0 = Entrada 1 = Salida. Puerto PORTA y registro TRISA El puerto a tiene un ancho de 8 bits, este es un puerto bidireccional, su correspondiente registro de dirección de datos es TRISA. Una configuración del TRISA con el bit = 1 ara que el pin correspondiente del Puerto a sea de entrada. Limpiando el bit del TRISA (bit = 0), hace que el pin correspondiente sea de salida. Esto quiere decir que permite controlar la salida y pone el contenido del latch de salida en el pin seleccionado. Todas las operaciones de escritura son operaciones leer-modificar-escribir. Por lo tanto una escritura en un puerto implica que los pines del puerto se leen este valor es modificado y luego escribe en el puerto de retención de datos. El registro TRISA controla los drivers de salida de los pines del puerto A, incluso cuando se utilizan como entradas analógicas. El usuario debe asegurarse de que los bits en el registro TRISA se mantienen conjunto al usuario como entradas analógicas pines E/S configurados como entradas analógicas siempre leen 0. El registro ANSEL se debe inicializar para configurar un canal analógico como digital de entrada. Pines configurados como entradas analógicas "0". Los 8 pines del puerto A se pueden ser utilizados para lectura y escritura. Pines de función adicional RA0 tiene una opción de dormir y despertador, las 3 secciones siguientes describen estas funciones. Registro ANSEL El registro ANCEL se utiliza para configurar el modo de entrada analógico de un pin E/S. cuando ANSEL es ajustado con bit en alto (1) hará que todos los pines se lean de forma digital, y cuando este es ajustado con un bit bajo (0) permite que las configuraciones sean de forma analógica. El estado de los bits ANSEL no tienen efecto en las funciones de salida digitales. UNIDAD ULPWU (Ultra Low-Power Wake-up) El microcontrolador se utiliza generalmente en los dispositivos que funcionan periódicamente y completamente independientes utilizando una fuente de alimentación de batería. En tal caso. Los ejemplos típicos de tales aplicaciones son: termómetros. d) Establezca el bit ULPWUE del registro PCON para comenzar la descarga del capacitor. Por esta razón se diseñó el circuito ULPWU. el consumo de corriente mínimo es una de las prioridades. Todo el procedimiento se repite. C=1nF). el dispositivo luego llama al vector de interrupción (0004h). En este caso. Sólo ha quedado esperar que se descargue el capacitor por la corriente de fuga fluyendo por el pin de entrada. Siga estos pasos para utilizar esta función: a) Cargue el capacitor en RA0 configurando el pin RA0 a la salida (1). c) Establecer el bit ULPWUIE del registro PIE2 para habilitar la interrupción. mientras que la entrada está conectada a uno de los pines del microcontrolador. o sea utilizar el cristal de cuarzo de 32KHz en vez de el de 20MHz. El problema es que todos los pines capaces de causar una interrupción son digitales y tienen una corriente de fuga relativamente alta cuando el voltaje sobre ellos no está cerca de los valores límites de Vdd (1) o VSS (0). Si el bit GIE del registro INTCON está establecido.y puede permitir la calibración del software del tiempo de espera. Una resistencia en serie entre el condensador RA0 y el externo proporciona protección contra sobre corriente para el RA0 / AN0 / ULPWU / pin C12IN0. Es el pin RA0. se produce una interrupción y el microcontrolador continúa con la ejecución de programa en modo normal. . Esta característica proporciona una técnica de baja potencia para despertarse periódicamente el dispositivo de sueño. El cambio de estado lógico habilita una interrupción y el microcontrolador entra en modo de reposo. capaz de indicar una lenta caída de voltaje con un consumo de corriente mínimo. mientras que un consumo total de corriente del microcontrolador es 1000 veces más bajo (de varias centenas de nanoamperios). Después de la descarga. el mismo pin se configura como entrada. En teoría. Cuando el voltaje en RA0 cae por debajo de VIL. el condensador se descarga en poco tiempo ya que la corriente es de varias centenas de microamperios. pues una de las soluciones más convenientes a este problema es bajar la frecuencia de reloj. Inmediatamente después. Refiriéndose a la Figura (R=200 ohms. sensores de detección del fuego y similar. e) Ejecutar una instrucción SLEEP. el tiempo de descarga es aproximadamente 30mS. Un pin se configura como salida y se le lleva un uno lógico (1). El tiempo de espera depende en el tiempo de descarga del circuito RC en RA0. esto es una solución perfecta. se generará una interrupción que hará que el dispositivo para despertar y ejecutar la siguiente instrucción. Es conocido que al reducir frecuencia de reloj se reduce el consumo de corriente. Esto causa una carga del capacitor. b) Configure RA0 como entrada. La salida genera una interrupción. Cada pin del puerto A se multiplexea con otras funciones. -RA0/AN0/ULPWU/C12IN0Este pin es configurable para funcionar como: -propósito general E/S -entrada analógica para el ADC (convertidor analógico digital) -una entrada analógica negativa al comparador c1 o c2 -una entrada analógica para el ULPWU -RA1 / AN1 / C12IN1Este pin es configurable para funcionar como: -propósito general E/S -entrada analógica para el ADC -una entrada analógica negativa al comparador c1 o c2 .Descripciones de los pines y esquemas. Los pines y sus funciones combinadas se describen a continuación. -RA2 / AN2 / VREF./ CVREF / C2IN + Este pin es configurable para funcionar como: -propósito general E/S -entrada analógica para el ADC -una entrada de referencia de voltaje negativo para el ADC y CVREF -una salida de voltaje de referencia comparador -una entrada analógica positiva al Comparador C2 -RA3 / AN3 / VREF + / C1IN + Este pin es configurable para funcionar como: -propósito general E/S -entrada analógica para el ADC -una entrada positiva referencia de tensión para el ADC y CVREF -una entrada analógica positiva al comparador C1 . -RA4 / T0CKI / C1OUT Este pin es configurable para funcionar como: -propósito general de E / S -una entrada de reloj para Timer0 -una salida digital del comparador C1 -RA5 / AN4 / SS / C2OUT Este pin es configurable para funcionar como: -propósito general de E / S -una entrada analógica para el ADC -una selección de entrada de slave -una salida digital desde Comparador C2 . -RA6 / OSC2 / CLKOUT Este pin es configurable para funcionar como: -propósito general de E / S -una conexión cristal/resonador -una salida de reloj -RA7 / OSC1 / CLKIN Este pin es configurable para funcionar como: -propósito general de E / S -una conexión cristal/resonador -una entrada de reloj . Puerto PORTB y registro TRISB El puerto PORTB es un puerto bidireccional. Los bits del registro TRISB determinan la función de sus pines. un uno lógico (1) en el registro TRISB configura el pin apropiado en el puerto PORTB y al revés. de 8 bits de anchura. Los bits del registro ANSELH determinan si estos pines serán configurados como entradas analógicas o entradas/salidas digitales. . Similar al puerto PORTA. borra la interrupción a través de: a) Cualquier lectura o escritura de PORTB. Cada pull-up se apaga automáticamente cuando el pin de puerto es configurado como una salida. y ajustándolo como bajo (0) permite que se lean como analógicas. . El usuario. INTERRUPT-ON-CHANGE (interrupción-en-cambio) Todos los pines de PORTB son configurables individualmente como un pin de interrupción-alcambiar. Esta interrupción puede despertar el dispositivo del sueño. Todos los pull-ups se desactivan en un Restablecimiento al encendido por el poco RBPU del registro OPCIÓN. Ajustando el bit a alto (1) hará que todos los pines se lean de forma digital. en la rutina de servicio de interrupción.Registro ANSELH Se utiliza para configurar el modo de entrada de un pin de E / S a analógico. Esto pondrá fin a la condición de conflicto. b) Desactive la RBIF bit de bandera. Bits de control IOCB <7: 0> activa o desactiva la función de interrupción para cada pin. weak pull-ups Cada uno de los pines del puerto b tiene una resistencia de pull-up interna individualmente configurable. Descripción de los pines del puerto B -RB0/AN12/INT Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -un borde externo comunicado con interrumpir -RB1/AN10/P1C(1)/C12IN3Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -una salida PWM -una entrada analógica al comparador C1 o C2 .RB2/AN8/P1B(1) Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -una salida PWM -RB3/AN9/PGM/C12IN2Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -habilitador de pin de baja tensión en circuito de programación en serie -una entrada analógica al comparador c1 o c2 . RB5/AN13/T1G Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -entrada para el timer 1 -RB6/ICSPCLK .-RB4/AN11/P1D(1) Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -una salida PWM . un uno lógico (1) en el registro TRISC configura el pin apropiado del puerto PORTC como entrada. . de 8 bits de anchura. Similar a otros puertos.Este pin es configurable para ser usado como: -propósito general de E/S -un circuito serie de reloj programable -RB7/ICSPDAT Este pin es configurable para ser usado como: -propósito general de E/S -circuito de programación serie de datos Puerto PORTC y registro TRISC El puerto PORTC es un puerto bidireccional. Los bits del registro TRISC determinan la función de sus pines. Descripción de los pines del puerto C -RC0/T1OSO/T1CKI Este pin es configurable para ser usado como: -propósito general de E/S -una salida del oscilador del timer 1 -una entrada del reloj timer 1 -RC1/T1OSI/CCP2 Este pin es configurable para ser usado como: -propósito general de E/S . -una salida del oscilador del timer 1 -una entrada de Captura y Comparar salida / PWM para el Comparador C2 -RC2/P1A/CCP1 Este pin es configurable para ser usado como: -propósito general de E/S -una salida PWM -una entrada de Captura y Comparación de salida para el Comparador C1 -RC3/SCK/SCL Este pin es configurable para ser usado como: -propósito general de E/S -un reloj SPI -un reloj I2C ™ . -RC4/SDI/SDA Este pin es configurable para ser usado como: -propósito general de E/S -un SPI de datos de E/S -un I2C de datos E/S -RC5/SDO Este pin es configurable para ser usado como: -propósito general de E/S -una salida de datos en serie . -RC6/TX/CK Este pin es configurable para ser usado como: -propósito general de E/S -una salida serie asíncrono -un reloj síncrono de E/S -RC7/RX/DT Este pin es configurable para ser usado como: -propósito general de E/S -una entrada serie asíncrono -una serie de datos E/S síncrona . Similar a otros puertos. Los bits del registro TRISD determinan la función de sus pines. un uno lógico (1) en el registro TRISD configura el pin apropiado del puerto PORTD como entrada.Puerto PORTD y registro TRISD El puerto PORTD es un puerto bidireccional de 8 bits de anchura. Este puesto esta solo proporcionado en los PIC 16f884/887 Descripción de los pines del puerto c . -RD<4:0> Estos 5 pines están configurados como propósito general de E/S -RD5/P1B(1) Este pin es configurable para ser usado como: -propósito general de E/S -una salida PWM -RD6 / P1C (1) Este pin es configurable para ser usado como: -propósito general de E/S -una salida PWM -RD7/P1D(1) Este pin es configurable para ser usado como: -propósito general de E/S -una salida PWM . Similar a los puertos PORTA y PORTB. Similar a otros puertos. Los bits del registro ANSEL determinan si estos pines serán configurados como entradas analógicas (AN) o entradas/salidas digitales: .Puerto PORTE y registro TRISE El puerto PORTE es un puerto bidireccional. Los bits del registro TRISE determinan la función de sus pines. de 4 bits de anchura. que siempre está configurado como entrada. La excepción es el pin RE3. un uno lógico (1) en el registro TRISE configura el pin apropiado del puerto PORTE como entrada. en este caso los tres pines se pueden configurar como entradas analógicas. Este puerto esta solo proporcionado a los PIC´S 16f884/887. y RE2 = AN7 (determinado por el bit ANS7 del registro ANSEL).RE0 = AN5 (determinado por el bit ANS5 del registro ANSEL). RE1 = AN6 (determinado por el bit ANS6 del registro ANSEL). Descripción de los pines del puerto e -RE0/AN5(1) Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -RE1/AN6(1) Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC -RE2/AN7(1) Este pin es configurable para ser usado como: -propósito general de E/S -una entrada analógica para el ADC . -RE3/MCLR/VPP Este pin es configurable para ser usado como: -propósito general de E/S -restablecer como borrador con "weak pull-up" .