Está en la página 1de 41

Parte II

CCS PARA
MICROCONTROLADORES
PIC

POR: EULER DEZA FIGUEROA

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

Lenguaje C para CCS


Primer ejercicio:
Vamos a crear nuestro programa “Hola Mundo” versión CCS
(en otras palabras prender leds).
Abrimos CCS y elegimos File>New ->Source file:
PROGRAMAS EN CCS COMPILER

Lenguaje C para CCS


Creamos una nueva carpeta “pruebas” y adentro guardamos
nuestro nuevo archivo “Ejer0_PicC.c”.
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Escribimos nuestro código:
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Con nuestro archivo source creado nos vamos de nuevo
al menú y elegimos file - New - >Create Project :
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Elegimos nuestro archivo “Ejer0_PicC”.
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Nos pregunta por el dispositivo, elegimos 16F877A. Y

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Escribimos y modificamos nuestro codigo

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Damos click en el botón de compilar (Build ) o presionamos F9

Ahora salta una pantalla con


el progreso de la compilación
y la ruta donde se van a
generar los archivos del
proyecto:
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
En la carpeta de nuestro proyecto de CCS debe esta el archivo
hexadecimal de nuestro programa:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
En la carpeta de nuestro proyecto de CCS debe esta el archivo
hexadecimal de nuestro programa:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

Para este ejercicio ocupamos este diagrama:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
PROGRAMA

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 2: Corrimiento de led’s
En este ejemplo, mediante un interrupto conectado al RA5
,se controla el sentido del corrimiento del encendido de un
led (Luces auto fantástico

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 2: Corrimiento de led’s …

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
GESTION DE LOS PUERTOS

Los microcontroladores PIC tienen terminales de


entrada /salida divididos en puertos, que se
encuentran nombrados alfabeticamente A, B, C, D,
etc.
Cada puerto puede tener hasta 8 terminales que, de
forma basica, se comportan como una entrada/salida
digital. Según las caracteristicas del PIC, cada puerto
puede tener, ademas, asignado un bloque funcional:
convertidor AD, USART, I2C, etc.
Por ejemplo, en la familia PIC16F87X, pueden llegar
hasta 5 puertos en el PIC16F877A donde se pueden
encontrar bloques de TIMERS, CPP, MSSP, USART,
PSP y convertidores AD

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
GESTION DE LOS PUERTOS …

Considerando a los puertos como e/s, los puertos se


caracterizan por ser independientes, es decir, se puede
programar cada terminal del puerto se comporte como
una entrada o una salida digital (TRISX)
EULER DEZA FIGUEROA
Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
GESTION DE LOS PUERTOS …

La habilitacion , como entrada o


salida se realiza a travez del
registro TRISX (TRISA: 85H)
La gestion del bus de datos se
realiza a traves de los registros
PORTX (PORTA:05H)
PROGRAMAS EN CCS COMPILER

GESTION DE LOS PUERTOS …


También existen algunos terminales que poseen unas
características especiales, por ejemplo:

 En el puerto A, el RA4 tiene


salida en drenador abierto lo
que obliga a utilizar una
resistencia PULL-UP en el
caso de funcionar como
salida. Este terminal tiene
entrada trigger-schmitt lo que
permite su utilización como
entrada de contador de
eventos externos en
conjunción con un modulo
temporizador (TIMER)

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE LOS PUERTOS …

 En el puerto B, los terminales tienen una resistencia de pull-up


interna que se puede habilitar a traves del bit RBPU del registro
OPTION_REG(81h,181h).
Si dicho bit es 1, todas las resistencias de pull-up estaran
deshabilitadas, si es un 0 estaran habilitadas solo en el caso de que
el terminal funcione como entrada

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C

 En lenguaje C se pueden gestionar los puertos de dos formas:


 Se declaran los registros TRISX y PORTX definiendo su posicion
en la menoria RAM como variables de C.
 Utilizando las directivas especificas del compilador (#USE
FAST_IO, #USE FIXED_IO, #USE STANDARD_IO).

 A TRAVES DE LA RAM

Se definen los registros PORTX y TRISX como bytes y se situan en


la posicion correspondiente de la memoria RAM. La directiva
utilizada en C es #BYTE
#BYTE variable=constante;

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C
 En lenguaje C se pueden gestionar los puertos de dos formas:
 Se declaran los registros TRISX y PORTX definiendo su posicion
en la menoria RAM como variables de C.
 Utilizando las directivas especificas del compilador (#USE
FAST_IO, #USE FIXED_IO, #USE STANDARD_IO).
 A TRAVES DE LA RAM
Se definen los registros PORTX y TRISX como bytes y se situan en
la posicion correspondiente de la memoria RAM. La directiva
utilizada en C es #BYTE
#BYTE variable=constante;

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 A TRAVES DE LA RAM …
Una vez definidas estas variables se pueden configurar y controlar
los puertos a través de los comandos de asignación.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 A TRAVES DE LA RAM …

Existen unas funciones de C que permiten trabajar bit a bit con los
registros o variables definidas previamente. Estas funciones son
las siguientes:
 Bit_clear(var,bit); //Pone a 0 el bit especifico (0 a 7) de la variable
 Bit_set(var,bit); //Pone a 1 el bit especifico (0 a 7) de la variable
 Bit_test(var,bit); //Muestra el bit especifico (0 a 7) de la variable
 Swap(var); //Intercambia los 4 bits de mayor peso por los
4 de menor peso de la variable

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 A TRAVES DE LA RAM …

Se puede declarar un bit de un registro con una variable mediante


la dirctiva #BIT, lo que permite trabajar directamente con la terminal

 BIT nombre = posicion.bit

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 3: Control del encendido-apagado de un led mediante
switch [RB0]

La salida debe tener el mismo valor de la entrada

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 3: Control del encendido-apagado de un led mediante
switch [RB0] …

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 A TRAVES DE LAS DIRECTIVAS

El compilador ofrece funciones predefinidas para trabajar con los


puertos. Estas funciones son:
 Output_X (valor); //Por el puerto correspondiente saca el valor (0-255)
 Input_X() ; //se obtiene el valor del puerto correspondiente
 Set_tris_X (valor); //Carga el registro TRISx con el valor (0-255)
 Port_b_pullups(valor); //Mediante valor = TRUE o valor = FALSE habilita
// o deshabilita las resistencias de pull-up en PORTB
 Get_trisX (); //Devuelve el valor del registro TRISx

Las funciones output_x() e input_X() dependen de la directiva


#USE*_IO que esté activa.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
GESTION DE PUERTOS EN C …
 A TRAVES DE LAS DIRECTIVAS …

Existen una serie de funciones asociadas a un terminal o pin*. El


parametro pin* se define en un fichero include (por ejemplo
16F876.h) con un formato del tipo PIN_Xn, donde X es elpuerto y n
es el numero de pin.
 #define PIN_A0 40
 #define PIN_A1 41
Las funciones son:
 Output_low (pin*); //Pin a 0
 Output_high (pin*); //Pin a 1
 Output_bit(pin*, valor); //Pin al valor especificado
 Output_togglet(pin*); //Complementa el valor del pin
 Output_float(pin*); //Pin de entrada, quedando tensión flotante ....
// (Simula salida en drenador abierto)
 Input_state(pin*) ; /Lee el valor del pin sin cambiar el sentido del terminal

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 4: Control de un Semáforo Peatonal de 2 Vías

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 4: Control de un Semáforo Peatonal de 2 Vías ..

Funciones de Control:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 #USE FAST_IO(PUERTO) [PUERTO: A…]

Con la función output_x() se saca el valor del puerto y con la


función input_x() se lee el puerto. La directiva no modifica
previamente el registro TRIS correspondiente.
Hay que asegurarse de que los registros TRIS están correctamente
definidos.

Ejemplo de Aplicación ..

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 5: Control de un led mediante uso de librería #USE FAST_IO

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 #USE STANDARD_IO(PUERTO) [PUERTO: A…]

Con la función output_x() el compilador se asegura de que el


terminal, o terminales correspondientes, sean de salida mediante la
modificación del TRIS correspondiente .

Con la función input_x() ocurre lo mismo pero asegurando el


terminal (terminales) como entrada. Es la directiva por defecto.

Ejemplo de Aplicación ..

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 6: Control de un led mediante uso de librería #USE
STANDARD_IO

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 #USE FIXED_IO(PUERTO_OUTPUTS = pin*, …)
[PUERTO: A…]
El compilador se encarga de generar el código para definir los
puertos de acuerdo con la información que indica la directiva
(donde se indican los terminales de salida), sin tener en cuenta si la
operación es de entrada o de salida

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

Programa 7: Control de un led mediante uso de librería #USE FIXED_IO

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

GESTION DE PUERTOS EN C …
 CON PUNTEROS
En C se puede acceder a la memoria de datos mediante punteros.
Los punteros se deben definir como INT :

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

Programa 8: Control de un led mediante uso PUNTEROS

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER
Programa 9: Manejo de Displays Multiplexados
Realizar un contador de 0 a 99 con un doble display de 7
segmentos ánodo común. La cuenta debe ser continua y de o a 9 el
digito de las decenas debe estar apagado. También debe poseer
opciones para seleccionar color del display

EULER DEZA FIGUEROA


Euler_df28@hotmail.com
PROGRAMAS EN CCS COMPILER

Bibliografía
 CCS C Compiler Manual – PCD – CCS INC – FEBREO 2015
 CCS C Compiler Manual – PCB/PCM/PCH– CCS INC – FEBREO
2015
 Compilador C CCS y simulador PROTEUS para
Microcontroladores PIC – Eduardo García Breijo
 Diseño y simulacion de Sistemas microcontrolados en lenguaje
C – Juan Ricardo Clavijo Mendoza
 Programacion en CCS para Microcontroladores PIC – Aaron
Castro Bazua
 Datasheets

ING. EULER DEZA FIGUEROA


euler_df28@hotmail.com

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

También podría gustarte