330 likes | 579 Views
Entrada / salida digital con ccs. Programación en C para electrónica. Indice. Microcontrolador PIC16F876 Entrada/Salida digital. Ejemplos. Microcontrolador PIC16F876. Programación en C para Electrónica. Características. μ C RISC. Reloj de hasta 20Mhz.(CM=1/4fosc)
E N D
Entrada / salida digital con ccs Programación en C para electrónica
Indice • Microcontrolador PIC16F876 • Entrada/Salida digital. • Ejemplos. Programación con CCS-Programación en C para electrónica
Microcontrolador PIC16F876. Programación en C para Electrónica. Programación con CCS-Programación en C para electrónica
Características • μC RISC. • Reloj de hasta 20Mhz.(CM=1/4fosc) • 35 instrucciones de 14 bit. • Instrucciones de 1 CM (excepto saltos) • PowerOnReset (POR) • 8Kx14 bits en memoria flash. • 368 bytes de RAM. • 256 bytes de EEPROM. • 22 E/S digital. • 14 interrupciones. • Programación serie LVP. Programación con CCS-Programación en C para electrónica
Características Programación con CCS-Programación en C para electrónica
Periféricos. • 3 temporizador /contador • T0 = 8bits • T1 y T2 = 16 bits • 2 módulos de comparación y captura / PWM. • Puerto serie síncrono (SSP) con SPI y I2C. • USART / SCI. • 5 entradas A/D de 10 bits. • Hasta 22 E/S digital. • Comparador analógico. • Perro guardian (WDT) Programación con CCS-Programación en C para electrónica
Encapsulado. Programación con CCS-Programación en C para electrónica
Diagrama de bloques: Programación con CCS-Programación en C para electrónica
Características de los puertos • Son bidireccionales. • Acceso como byte o bit. • Lectura del valor del pin. • Corriente máxima del pin 25mA. • Corriente máxima del puerto 200mA. • Después de un reset todas son entradas. Programación con CCS-Programación en C para electrónica
Organización de la memoria Programación con CCS-Programación en C para electrónica
Entrada/Salida digital. Programación en C para Electrónica. Programación con CCS-Programación en C para electrónica
Entrada salida digital • El PIC 16F876A dispone de 22 lineas de E/S digital configurables repartidas en 3 puertos. • Puerto A = 6 lineas (RA0..RA5) • Puerto B = 8 lineas (RB0..RB7) • Puerto C = 8 lineas (RC0..RC7) • Los puertos son independientes y se puede programar cada terminal para que se comporte como entrada o como salida. Programación con CCS-Programación en C para electrónica
Entrada salida digital • La configuración como entrada o salida se hace a través del registro TRISx correspondiente del banco 1 de la memoria. • TRISA=85h (Puerto A) • TRISB=86h (Puerto B) • TRISC=87h (Puerto C) • Un valor 0 en los bits de estos registros configuran el pin correspondiente del puerto como salida y un 1 como entrada. Programación con CCS-Programación en C para electrónica
Entrada salida digital • Para configurar los puertos se utiliza la función set_tris_X(valor) • Se puede leer la configuración de los puertos con la función get_tris_X(valor) • Ejemplos: set_tris_A (0x3F) /* Puerto A como entradas.*/ set_tris_B (0x00) /* Puerto B como salidas.*/ set_tris_C (0b00001111) /*Pines RB0..RB3 salidas y RB4..RB7 entradas*/ Programación con CCS-Programación en C para electrónica
Entrada salida digital • La lectura o escritura de datos en los puertos se hace mediante la lectura o escritura en el registro del banco 0 asociado a cada puerto. • PORTA=05h (Puerto A) • PORTB=06h (Puerto B) • PORTC=07h (Puerto C) • La lectura y/o escritura se realiza directamente sobre los pines del puerto. Programación con CCS-Programación en C para electrónica
Entrada salida digital • CCS tiene funciones predefinidas para el uso de los puertos de E/S digital. • Las funciones pueden tratar el puerto completo o un bit del mismo. • Los parámetros de estas funciones están definidos en un fichero include (p.ej:16F876A.h) con un formato PIN_Xn donde X es el puerto y n el bit. Programación con CCS-Programación en C para electrónica
Funciones de Salida (bit) • output_low(PIN_Xn) //pone a 0. • output_high(PIN_Xn) //pone a 1. • output_bit(PIN_Xn,valor) //pone el pin Xn a valor (0 ó 1). • output_toggle (PIN_Xn) //complementa el valor del pin • output_float (PIN_Xn) //Pin como entrada (simula d. ab.) Programación con CCS-Programación en C para electrónica
Funciones de Entrada (bit) • input_state(PIN_Xn) //Lee el valor del pin sin cambiar //el sentido del terminal. • input(PIN_Xn) //Lee el valor del pin. Programación con CCS-Programación en C para electrónica
Funciones de E/S (bit) • Ejemplos: output_low(PIN_A0); output_high(PIN_B1); output_bit(PIN_B3,0); output_toggle (PIN_C6); output_float (PIN_A2); valor=input_state (PIN_B7); valor=input(PIN_C3); Programación con CCS-Programación en C para electrónica
Funciones de E/S (byte) • output_X(valor): • X= puerto (A,B o C) • Valor= byte a escribir en el puerto. • Escribe valor en X. Ejemplo: output_B(0xA5); //PORTB=10100101 • input_X(): • X= puerto (A,B o C) • Lee el valor del puerto X. Ejemplo: valor=input_B(); /*guarda en valor el contenido del puerto B*/ Programación con CCS-Programación en C para electrónica
Entrada salida digital • CCS provee directivas y funciones predefinidas para el uso de los puertos de E/S digital. • Las funciones output_X() e input_X() dependen de la directiva de configuración que usemos. • Directivas: • #use fast_io (puerto) • #use standar_io (puerto) • #use fixed_io (puerto) Programación con CCS-Programación en C para electrónica
Directivas del preprocesador Programación con CCS-Programación en C para electrónica
Directivas de gestión de puertos • #use fast_io (puerto) • No modifica el registro TRIS en lecturas y escrituras. • Hay que asegurarse de que los pines está configurados correctamente. • #use standar_io (puerto) • Modifica el registro TRIS correspondiente en lecturas y escrituras. (Modo por defecto) • #use fixed_io (puerto) • Configura el puerto y no modifica el registro TRIS en lecturas y escrituras. Programación con CCS-Programación en C para electrónica
Ejemplos Programación en C para Electrónica. Programación con CCS-Programación en C para electrónica
Led intermitente Programación con CCS-Programación en C para electrónica
Led intermitente Programación con CCS-Programación en C para electrónica
Led intermitente (con funciones) Programación con CCS-Programación en C para electrónica
Pulsador Programación con CCS-Programación en C para electrónica
Pulsador (con funciones) Programación con CCS-Programación en C para electrónica
Cruce semáforos Programación con CCS-Programación en C para electrónica
Cruce semáforos Programación con CCS-Programación en C para electrónica