entrada / salida digital con ccs programación en c para electrónica
TRANSCRIPT
ENTRADA / SALIDA DIGITAL CON CCS
Programación en C para electrónica
Programación con CCS-Programación en C para electrónica
2
Indice
Microcontrolador PIC16F876 Entrada/Salida digital. Ejemplos.
3
Programación con CCS-Programación en C para electrónica
Programación en C para Electrónica.
Microcontrolador PIC16F876.
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.
4
Programación con CCS-Programación en C para electrónica
Características5
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)
6
Programación con CCS-Programación en C para electrónica
Encapsulado.7
Programación con CCS-Programación en C para electrónica
Diagrama de bloques:8
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
9
Organización de la memoria10
Programación con CCS-Programación en C para electrónica
11
Programación con CCS-Programación en C para electrónica
Programación en C para Electrónica.
Entrada/Salida digital.
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.
12
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.
13
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*/
14
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.
15
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.
16
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.)
17
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.
18
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);
19
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*/
20
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)
21
Programación con CCS-Programación en C para electrónica
Directivas del preprocesador
22
Programación con CCS-Programación en C para electrónica
Programación con CCS-Programación en C para electrónica
23
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.
24
Programación con CCS-Programación en C para electrónica
Programación en C para Electrónica.
Ejemplos
Programación con CCS-Programación en C para electrónica
25
Led intermitente
Programación con CCS-Programación en C para electrónica
26
Led intermitente
Programación con CCS-Programación en C para electrónica
27
Led intermitente (con funciones)
Programación con CCS-Programación en C para electrónica
28
Pulsador
Programación con CCS-Programación en C para electrónica
29
Pulsador (con funciones)
Programación con CCS-Programación en C para electrónica
30
Cruce semáforos
31
Programación con CCS-Programación en C para electrónica
Cruce semáforos