Descargar

Entrada – salida digital con CCS

Enviado por Pablo Turmero


    edu.red Programación en C para Electrónica. Microcontrolador PIC16F876. 1

    edu.red Características µC RISC. Reloj de hasta 20Mhz.(CM=1/4fosc) 35 instrucciones de 14 bit. Instrucciones de 1 CM (excepto saltos) Power On Reset (POR) 8Kx14 bits en memoria flash. 368 bytes de RAM. 256 bytes de EEPROM. 22 E/S digital. 14 interrupciones. Programación serie LVP. 2

    edu.red Características 3

    edu.red 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) 4

    edu.red Encapsulado. 5

    edu.red Diagrama de bloques: 6

    edu.red 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. 7

    edu.red Organización de la memoria 8

    edu.red Programación en C para Electrónica. Entrada/Salida digital. 9

    edu.red 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. 10

    edu.red 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. 11

    edu.red 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*/ 12

    edu.red 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. 13

    edu.red 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. 14

    edu.red 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.) 15

    edu.red 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. 16

    edu.red 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); 17

    edu.red 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*/ 18

    edu.red 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) 19

    edu.red Directivas del preprocesador 20

    edu.red 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. 21

    edu.red Programación en C para Electrónica. Ejemplos 22

    edu.red Led intermitente 23

    edu.red Led intermitente 24

    edu.red Led intermitente (con funciones) 25

    edu.red Pulsador 26

    edu.red Pulsador (con funciones) 27

    edu.red Cruce semáforos 28

    edu.red Cruce semáforos 29