Você está na página 1de 43

INGENIERIA ELECTRONICA

CON MENCIÓN EN
TELECOMUNICACIONES

FUNDAMENTOS DE
PROGRAMACION 2

Prof. Mg. Félix Pucuhuayla Revatta


Docente de Ing. Electrónica y sistemas
fpucuhuayla@uch.edu.pe
UNIDAD 2

Estructura de datos y funciones

Mg. Félix Pucuhuayla Revatta


SUMILLA
CAPACIDAD GENERAL
La asignatura forma parte del
área de formación especializada, Conoce las estructuras de
es de carácter teórico-práctico y datos y las utilidades de las
se orienta a capacitar al funciones en el lenguaje C++,
estudiante para analizar y orientado a objetos así como
aplicar los conceptos básicos de los métodos y clases, además
programación modular orientada a desarrolla de manera colectiva
objetos en el Lenguaje C++. Su las prácticas de laboratorio
contenido está organizado en los
siguientes temas generales: I.
Programación Modular; II.
Estructura de Datos y Funciones;
III. Programación orientada a
objetos; IV. Clases derivadas,
dinámicas de datos.

Mg. Félix Pucuhuayla Revatta


LENGUAJE C PARA CCS COMPILER

TEMA

LABORATORIO DESARROLLADO -
PIC 16F877A

Mg. Félix Pucuhuayla Revatta


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:

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

Lenguaje C para CCS


Creamos una nueva carpeta “pruebas” y adentro guardamos
nuestro nuevo archivo “Ejer0_PicC.c”.

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Escribimos nuestro código:

Mg. Félix Pucuhuayla Revatta


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 :

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Elegimos nuestro archivo “Ejer0_PicC”.

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Nos pregunta por el dispositivo, elegimos 16F877A. Y

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Escribimos y modificamos nuestro codigo

Mg. Félix Pucuhuayla Revatta


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:

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

Para este ejercicio ocupamos este diagrama:

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
PROGRAMA

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 2: Corrimiento de led‟s

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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)
Mg. Félix Pucuhuayla Revatta
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)

Mg. Félix Pucuhuayla Revatta


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)

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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;

Mg. Félix Pucuhuayla Revatta


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;

Mg. Félix Pucuhuayla Revatta


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.

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


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.

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 4: Control de un Semáforo Peatonal de 2 Vías

Mg. Félix Pucuhuayla Revatta


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

Funciones de Control:

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 5: Control de un led mediante uso de librería #USE FAST_IO

Mg. Félix Pucuhuayla Revatta


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

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 6: 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

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 7: Manejo de Displays Multiplexados ..

Mg. Félix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 8: Manejo de Desplays Multiplexados ..

Mg. Félix Pucuhuayla Revatta


BIBLIOGRAFIA

GARCIA, E. (2008) Compilador C CCS y simulador PROTEUS para Microcontroladores


PIC. México: Alfaomega

https://tecnologialsb.files.wordpress.com/2017/05/compilador-c-ccs-y-simulador-proteus-para-
microcontroladores-pic.pdf

Mg. Félix Pucuhuayla Revatta


Mg. Félix Pucuhuayla Revatta

Você também pode gostar