C18 Entradas y salidas digitales

Anuncio
PIC 18F45XX
ENTRADAS Y SALIDAS DIGITALES
1. Configuración de E/S digital
Podemos disponer de hasta 35 líneas de E/S digital. Para poder
configurar un puerto se utiliza el registro TRISX, donde X puede ser
uno de los puertos A,B,C,D o E del pic. Cada bit con un “1” del
registro configura el pin como entrada y un “0” como salida.
Los puertos A, B y E tienen asignados como función secundaria las
entradas analógicas AN0..AN12. Para poder utilizar estos puertos
como e/s digital primero hay que configurar el registro ADCON1.
ADCON1=0x0F; // Todos los pines e/s digital.
Ej1: Configurar RD0..RD3 como entradas y RD4..RD7 como salidas.
TRISD=0x0F; o bien TRISD=0b00001111;
Ej2: Configurar RB7 como salida y no modificar el resto de pines.
TRISB&=0x7F; o bien TRISB&=0b01111111;
Ej3: Configurar RA3 y RA4 como entradas sin modificar el resto.
TRISA|=0x03; o bien TRISA|=0b00000011;
2
2. Lectura/escritura de puertos
Para leer el estado de un puerto se utiliza el registro PORT.
valor=PORTB; // Lee el puertoB y lo almacena en la variable valor
Se puede leer el estado de un único pin usando la función
PORTXbits.RXN. Donde X es uno de los puertos y N el bit que se
desea leer (0..7)
if(PORTAbits.RA3 == 1) pulsador=1;
Para escribir en un puerto hay que escribir en su registro LAT
asociado.
LATB=0x00; // RB0..RB7 a cero.
También se puede poner a cero o a uno un bit concreto de un puerto.
PORTBbits.RB7=1; // Pone a nivel alto el pin RB7
PORTDbits.RD5=0; // Pone a nivel bajo el pin RD5
3
3. Tipos de datos soportados en C18
Nota: también se pueden utilizar variables tipo bit
4
4. Declaración de constantes y variables
Una etiqueta que mantiene un valor fijo durante la ejecución del
programa sin posibilidad de cambio se denomina constante y se define
utilizando el modificador <const>.
const float iva=1.21;
Para almacenar un valor que puede variar a lo largo del programa se
utilizan las variables. Para poder utilizar una variable hay que declararla
primero:
<modificador><tipo> nombre;
unsigned char valor;
También se pueden declarar e inicializar en la misma instrucción:
unsigned char valor=0;
rom char tabla[5]={1,2,3,4,5}; // La tabla se almacena en la memoria
// de código
Normalmente se suele utilizar el tipo “unsigned char” para leer registros
de 8 bits y el tipo “unsigned int” para los de 16 bits
5
5. Ejemplo de programación
Realizar un programa que lea el estado de los pines RD0..RD3 y
ponga su valor en el display de siete segmentos conectado en el
puerto B.
6
6. Solución
7
7. Simulación
8
Descargar