3 ENTRADA / SALIDA Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE Cada uno de estos puertos es de 8 bits, sin embargo no todos los puertos tienen todos sus bits implementados. Los bits de cada uno de los puertos se denotan con Rxy Donde: x indica el puerto (A,B, C, D o E) y indica el número de bit (desde 0 hasta 7 en algunos puertos) Por ejemplo el pin llamado RA0 se refiere al bit 0 de PORTA. Véase la Figura 2-1.
Los pines de los PIC18 USB además de funcionar como puertos de E/S también tienen otras funciones multiplexadas como: • • • • • • •
Entrada de voltajes de referencia para ADC. Entradas y salidas de periféricos (UART, USB, SPI, I2C, etc.). Entradas de contadores de Timers. Entradas de voltaje analógico. Salida de oscilador Entrada de voltaje y datos de programación Etc.
De manera predeterminada, al resetear estos PICs, los pines están configurados como puertos de entrada (y como entradas analógicas en los denominados ANx).
Ing. Juan Ramon Terven Salinas
E/S
26
3.1 Registros asociados con los puertos de E/S Cada puerto tiene 3 registros asociados: TRISx PORTx LATx Donde “x” representa el puerto (A, B, C, D o E).
Registro TRISx El registro TRISx se usa para configurar el sentido de datos del puerto, puede ser Entrada (con “1”) o Salida (con “0”). Una manera recomendable de recordar esto es “1” de “Input” y “0” de “Output”.
Registro PORTx Por medio del registro PORTx se accede a los datos de los pines. Cuando se escribe en PORTx, se escribe en el latch del puerto. Cuando se lee el PORTx, se lee el valor directamente del pin.
Registro LATx Este registro está directamente conectado con el latch del puerto. Cuando se escribe en el LATx se escribe en el latch del puerto y cuando se lee el LATx se lee del latch del puerto.
3.2 Entradas Analógicas Los PIC18 USB posee un ADC de 10 bits con 10 entradas analógicas en los PIC18F2455 y PIC18F2550 y 13 entradas analógicas en los PIC18F4455 y PIC18F4550. Las entradas analógicas del ADC se denotan como AN0 hasta AN12 y se encuentran multiplexadas con los puertos de E/S, de tal manera que estos pines pueden ser entradas digitales o entradas analógicas. Nota: Al reset estos pines quedan configurados como entradas analógicas.
Ing. Juan Ramon Terven Salinas
E/S
27 Para configurar los pines como analógicos o digitales, se usa el registro ADCON1.
Los primeros 4 bits de ADCON1 denominados PCFG0 – PCFG3 se usan para indicar que pines serán analógicos y que pines serán digitales. En la Tabla 3-1 se muestran los valores que pueden tener estos bits y como afecta a los pines.
Tabla 3-1. Configuración de pines A/D [8]
Por ejemplo si queremos configurar que todos los pines sean digitales podemos escribir: ADCON1 |= 0x0f;
Ing. Juan Ramon Terven Salinas
E/S
28
Ejemplo 3-1. Salida de puertos Armar el circuito de la Figura 3-1 en Proteus (por simplicidad en la figura no se muestra el circuito del bootloader) Escribir, compilar y simular el Programa 3-1 en Proteus.
/* Ejemplo 1: Salida de Puertos * * Configura PORTB como salidas digitales * Activa y desactiva todos los bits de PORTB */ #include "p18f4550.h" void retardo(int);