Está en la página 1de 31

ENTRADA / SALIDA

DIGITAL CON CCS


Programacin en C para electrnica
Indice
Microcontrolador PIC16F876
Entrada/Salida digital.
Ejemplos.

2
Programacin con CCS-Programacin en C para electrnica
Programacin en C para Electrnica.
Microcontrolador PIC16F876.
3
Programacin con CCS-Programacin en C para electrnica
Caractersticas
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.
Programacin serie
LVP.
4
Programacin con CCS-Programacin en C para electrnica
Caractersticas
5
Programacin con CCS-Programacin en C para electrnica
Perifricos.
3 temporizador
/contador
T0 = 8bits
T1 y T2 = 16
bits
2 mdulos de
comparacin y
captura / PWM.
Puerto serie sncrono
(SSP) con SPI y I2C.
USART / SCI.
5 entradas A/D de 10
bits.
Hasta 22 E/S digital.
Comparador
analgico.
Perro guardian
(WDT)

6
Programacin con CCS-Programacin en C para electrnica
Encapsulado.
7
Programacin con CCS-Programacin en C para electrnica
Diagrama de bloques:
8
Programacin con CCS-Programacin en C para electrnica
Caractersticas de los puertos
Son bidireccionales.
Acceso como byte o bit.
Lectura del valor del pin.
Corriente mxima del pin 25mA.
Corriente mxima del puerto 200mA.
Despus de un reset todas son entradas.
Programacin con CCS-Programacin en C para electrnica
9
Organizacin de la memoria
10
Programacin con CCS-Programacin en C para electrnica
Programacin en C para Electrnica.
Entrada/Salida digital.
11
Programacin con CCS-Programacin en C para electrnica
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
Programacin con CCS-Programacin en C para electrnica
Entrada salida digital
La configuracin como entrada o salida se
hace a travs 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
Programacin con CCS-Programacin en C para electrnica
Entrada salida digital
Para configurar los
puertos se utiliza la
funcin
set_tris_X(valor)
Se puede leer la
configuracin de los
puertos con la
funcin
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
Programacin con CCS-Programacin en C para electrnica
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
Programacin con CCS-Programacin en C para electrnica
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 parmetros de estas funciones estn
definidos en un fichero include
(p.ej:16F876A.h) con un formato PIN_Xn
donde X es el puerto y n el bit.
16
Programacin con CCS-Programacin en C para electrnica
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
Programacin con CCS-Programacin en C para electrnica
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
Programacin con CCS-Programacin en C para electrnica
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
Programacin con CCS-Programacin en C para electrnica
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
Programacin con CCS-Programacin en C para electrnica
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 configuracin que
usemos.
Directivas:
#use fast_io (puerto)
#use standar_io (puerto)
#use fixed_io (puerto)
21
Programacin con CCS-Programacin en C para electrnica
Directivas del preprocesador
22
Programacin con CCS-Programacin en C para electrnica
Directivas de gestin 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.

23
Programacin con CCS-Programacin en C para electrnica
Programacin en C para Electrnica.
Ejemplos
24
Programacin con CCS-Programacin en C para electrnica
Led intermitente
Programacin con CCS-Programacin en C para electrnica
25
Led intermitente
Programacin con CCS-Programacin en C para electrnica
26
Led intermitente (con funciones)
Programacin con CCS-Programacin en C para electrnica
27
Pulsador
Programacin con CCS-Programacin en C para electrnica
28
Pulsador (con funciones)
Programacin con CCS-Programacin en C para electrnica
29
Cruce semforos
Programacin con CCS-Programacin en C para electrnica
30
Cruce semforos
31
Programacin con CCS-Programacin en C para electrnica

También podría gustarte