Está en la página 1de 41

INGENIERIA DE

SISTEMAS E
INFORMATICA

ARQUITECTURA DEL COMPUTADOR


Prof. Mg. Flix Pucuhuayla Revatta
Docente de Ing. Electrnica y Sistemas
fpucuhuayla@uch.edu.pe
Mg. Flix Pucuhuayla Revatta
LENGUAJE C PARA CCS COMPILER

TEMA

LABORATORIO DESARROLLADO -
PIC 16F877A

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

Lenguaje C para CCS


Primer ejercicio:
Vamos a crear nuestro programa Hola Mundo versin CCS
(en otras palabras prender leds).
Abrimos CCS y elegimos File>New ->Source file:

Mg. Flix 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. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Escribimos nuestro cdigo:

Mg. Flix 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. Flix Pucuhuayla Revatta


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

Mg. Flix Pucuhuayla Revatta


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

Mg. Flix Pucuhuayla Revatta


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

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Lenguaje C para CCS
Damos click en el botn de compilar (Build ) o presionamos F9

Ahora salta una pantalla con


el progreso de la compilacin
y la ruta donde se van a
generar los archivos del
proyecto:

Mg. Flix 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. Flix 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. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

Para este ejercicio ocupamos este diagrama:

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
PROGRAMA

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 2: Corrimiento de
leds
En este ejemplo, mediante un interrupto conectado al RA5
,se controla el sentido del corrimiento del encendido de un
led (Luces auto fantstico

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 2: Corrimiento de leds

Mg. Flix 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. Segn 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. Flix 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. Flix 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. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

GESTION DE LOS PUERTOS


Tambin existen algunos terminales que poseen unas
caractersticas 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 utilizacin como
entrada de contador de
eventos externos en
conjuncin con un modulo
temporizador (TIMER)

Mg. Flix 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. Flix 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. Flix 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. Flix 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 travs de los comandos de asignacin.

Mg. Flix 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. Flix 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. Flix 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. Flix Pucuhuayla Revatta


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

Mg. Flix 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. Flix 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 tensin flotante ....
// (Simula salida en drenador abierto)
Input_state(pin*) ; /Lee el valor del pin sin cambiar el sentido del terminal

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 4: Control de un Semforo Peatonal de 2 Vas

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER
Programa 4: Control de un Semforo Peatonal de 2 Vas ..

Funciones de Control:

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

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

Con la funcin output_x() se saca el valor del puerto y con la


funcin input_x() se lee el puerto. La directiva no modifica
previamente el registro TRIS correspondiente.
Hay que asegurarse de que los registros TRIS estn correctamente
definidos.

Ejemplo de Aplicacin ..

Mg. Flix Pucuhuayla Revatta


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

Mg. Flix Pucuhuayla Revatta


PROGRAMAS EN CCS COMPILER

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

Con la funcin output_x() el compilador se asegura de que el


terminal, o terminales correspondientes, sean de salida mediante la
modificacin del TRIS correspondiente .

Con la funcin input_x() ocurre lo mismo pero asegurando el


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

Ejemplo de Aplicacin ..

Mg. Flix 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 comn. La cuenta debe ser continua y de o a 9 el
digito de las decenas debe estar apagado. Tambin debe poseer
opciones para seleccionar color del display

Mg. Flix Pucuhuayla Revatta


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

Mg. Flix Pucuhuayla Revatta


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

Mg. Flix Pucuhuayla Revatta


BIBLIOGRAFIA

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


PIC. Mxico: Alfaomega

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

Mg. Flix Pucuhuayla Revatta


Mg. Flix Pucuhuayla Revatta

También podría gustarte