ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

31
ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica

Transcript of ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Page 1: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

ENTRADA / SALIDA DIGITAL CON CCS

Programación en C para electrónica

Page 2: 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.

Page 3: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

3

Programación con CCS-Programación en C para electrónica

Programación en C para Electrónica.

Microcontrolador PIC16F876.

Page 4: ENTRADA / SALIDA DIGITAL 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)

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

Page 5: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Características5

Programación con CCS-Programación en C para electrónica

Page 6: ENTRADA / SALIDA DIGITAL 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

Page 7: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Encapsulado.7

Programación con CCS-Programación en C para electrónica

Page 8: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Diagrama de bloques:8

Programación con CCS-Programación en C para electrónica

Page 9: ENTRADA / SALIDA DIGITAL 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

Page 10: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Organización de la memoria10

Programación con CCS-Programación en C para electrónica

Page 11: ENTRADA / SALIDA DIGITAL 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.

Page 12: ENTRADA / SALIDA DIGITAL 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.

12

Programación con CCS-Programación en C para electrónica

Page 13: ENTRADA / SALIDA DIGITAL 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

Page 14: ENTRADA / SALIDA DIGITAL 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

Page 15: ENTRADA / SALIDA DIGITAL 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

Page 16: ENTRADA / SALIDA DIGITAL 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

Page 17: ENTRADA / SALIDA DIGITAL 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

Page 18: ENTRADA / SALIDA DIGITAL 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

Page 19: ENTRADA / SALIDA DIGITAL 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

Page 20: ENTRADA / SALIDA DIGITAL 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

Page 21: ENTRADA / SALIDA DIGITAL 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

Page 22: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Directivas del preprocesador

22

Programación con CCS-Programación en C para electrónica

Page 23: ENTRADA / SALIDA DIGITAL 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.

Page 24: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

24

Programación con CCS-Programación en C para electrónica

Programación en C para Electrónica.

Ejemplos

Page 25: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Programación con CCS-Programación en C para electrónica

25

Led intermitente

Page 26: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Programación con CCS-Programación en C para electrónica

26

Led intermitente

Page 27: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Programación con CCS-Programación en C para electrónica

27

Led intermitente (con funciones)

Page 28: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Programación con CCS-Programación en C para electrónica

28

Pulsador

Page 29: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Programación con CCS-Programación en C para electrónica

29

Pulsador (con funciones)

Page 30: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

Programación con CCS-Programación en C para electrónica

30

Cruce semáforos

Page 31: ENTRADA / SALIDA DIGITAL CON CCS Programación en C para electrónica.

31

Programación con CCS-Programación en C para electrónica

Cruce semáforos