Sunteți pe pagina 1din 7

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

PROGRAMACION DE PIC16F877 CON 20 LED


Y SALTOS DE 5 SEGUNDOS
Cardona, lvaro, Casas Jorge E y Perea, lvaro E.
Fundacin Universitaria Catlica Lumen Gentium

ResumenEl proyecto de programacin de


PIC16F877 con 20 LED y saltos de 5 segundos
consiste en entender y aplicar conocimientos
aprendidos e investigados de la clase de Sistemas
Operativos y Lenguaje Ensamblador. Esto se
realizara por medio de programacin en lenguaje C
orientada a micro controladores, un compilador de
lenguaje C en este caso PIC C Compiler, y el
simulador Proteus 8.1 Professional
ndice de TrminosResistencia, micro controlador,
DELAY, LED

I. INTRODUCCIN
[1] Un micro controlador (abreviado C, UC o
MCU) es un circuito integrado programable, capaz
de ejecutar las rdenes grabadas en su memoria.
Est compuesto de varios bloques funcionales, los
cuales cumplen una tarea especfica. Un micro
controlador incluye en su interior las tres
principales
unidades
funcionales
de
una
computadora: unidad central de procesamiento,
memoria y perifricos de entrada/salida.
En este caso utilizaremos el micro controlador o
PIC16F877 el cual es fabricado por Microchip
pertenece a una gran familia de micro controladores
de 8 bits (bus de datos) que tienen las siguientes
caractersticas generales que los distinguen de otras
familias.
Tecnologa RISC
Tecnologa CMOS Estas caractersticas se
conjugan para lograr un dispositivo altamente

eficiente en el uso de la memoria de datos y


programa y por lo tanto en la velocidad de
ejecucin. Microchip ha dividido sus micros
controladores en tres grandes subfamilias de
acuerdo al nmero de bits de su bus de
instrucciones:
Subfamilia Bits del bus de instrucciones
nomenclatura
Base - Line 12 PIC12XXX y PIC14XXXMid
Range 14 PIC16XXXHigh - End 16 PIC17XXX y
PIC18XXX
Variantes principales
Los micro controladores que produce Microchip
cubren una amplio rango de dispositivos cuyas
caractersticas pueden variar como sigue:
Empaquetado (desde 8 pines hasta 68 pines)
Tecnologa de la memoria incluida
(EPROM, ROM, Flash)
Voltajes de operacin (desde 2.5 v. Hasta
6v)
Frecuencia de operacin (Hasta 20 MHz)

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

Los pines de entrada/salida de este micro


controlador estn organizados en cinco puertos, el
puerto A con 6 lneas, el puerto B con 8 lneas, el
puerto C con 8 lneas, el puerto D con8 lneas y el
puerto E con 3 lneas. Cada pin de esos puertos se
puede configurar como
Entrada
o
como
salida
independiente
programando un par de registros diseados para tal
Fin. En ese registro un bit en "0" configura el pin
del puerto correspondiente como salida y
Un bit en "1" lo configura como entrada. Dichos
pines del micro controlador tambin
Pueden cumplir otras funciones especiales, siempre
y cuando se configuren para ello,
Segn se ver ms adelante.

Arquitectura interna:

[2] Resumen de algunos de los registros de


configuracin:

El oscilador externo
Todo micro controlador requiere un circuito externo
que le indique la velocidad a
La que debe trabajar. Este circuito, que se conoce
como oscilador o reloj, es muy
Simple pero de vital importancia para el buen
funcionamiento del sistema. El
PIC16F877 puede utilizar cuatro tipos de oscilador
diferentes. Estos tipos son:
RC. Oscilador con resistencia y condensador.
XT. Cristal (por ejemplo de 1 a 4 MHz).
HS. Cristal de alta frecuencia (por ejemplo 10 a
20 MHz).
LP. Cristal para baja frecuencia y bajo consumo
de potencia.

BANCO 0:
- TMR0: Registro del temporizador/contador de 8
bits.
- PCL: Byte menos significativo del contador de
programa (PC).
- STATUS: Contiene banderas (bits) que indican
el estado del procesador
Despus de una operacin aritmtica/lgica.
- FSR: Registro de direccionamiento indirecto.
- PORTA, PORTB, PORTC, PORTD, PORTE:
Registro de puertos de E/S de
Datos. Conectan con los pines fsicos del micro.
- PCLATH: Byte alto (ms significativo) del
contador de programa (PC).
- INTCON: Registro de control de las
interrupciones.
- ADRESH: Parte alta del resultado de la
conversin A/D.
- ADCON0: Controla la operacin del mdulo de
conversin A/D

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

BANCO 1:
- OPTION: Registro de control de frecuencia del
TMR0.
- TRISA, TRISB, TRISC, TRISD. TRISE:
Registros de configuracin de la
Operacin de los pines de los puertos.
- ADRESL: Parte baja del resultado de la
conversin A/D.
- ADCON1: Controla la configuracin de los
pines de entrada anloga.
BANCO 2:
- TMR0: Registro del temporizador/contador de 8
bits.
- PCL: Byte menos significativo del contador de
programa (PC).
- FSR: Registro de direccionamiento indirecto.
- EEDATA: Registro de datos de la memoria
EEPROM.
- EEADR: Registro de direccin de la memoria
EEPROM.
- PCLATH: Byte alto (ms significativo) del
contador de programa (PC).
- INTCON: Registro de control de las
interrupciones.

su compilacin es bastante eficiente y ptima


acercndose a la codificacin de lenguaje de
mquina. Lo descriptivo de la sintaxis permite
elaborar de mejor forma los algoritmos olvidndose
de los molestos push y pop usados en el lenguaje de
mquina cuando se usan saltos a subrutinas. En la
primera parte se plantean elementos genricos de
lenguaje C, pero siempre mirando las posibles
aplicaciones con micho Controladores.
Elementos bsicos:
Comentario, este permite la documentacin del
cdigo y se usa de acuerdo a la siguiente sintaxis
/* Este es un comentario */
O
// Este es un comentario:
Inicio y fin de bloque, permite agrupar un nmero
de instrucciones las que pueden ser ejecutadas con
cierta prioridad. Se usa {para iniciar bloque y } para
finalizar bloque.
{ // Inicio de bloque
// Instrucciones
} // Final de bloque
Estructura bsica de un programa:

BANCO 3:
- OPTION: Registro de control de frecuencia del
TMR0.
- EECON1: Control de lectura/escritura de la
memoria EEPROM de datos.
- EECON2: No es un registro fsico.
II. PROCEDIMIENTO
A. Construccin del proyecto
Al realizar el posible esquema de desarrollo del
proyecto encontramos que existen diversas formas
de desarrollar el producto propuesto, para este caso
decidimos usar el lenguaje C para programar el
PIC16F877 ya que las funciones que necesitamos
usar se pueden implementar de una manera ms
resumida en el lenguaje C orientado a micro
controladores.
El Lenguaje C orientado a Microcontroladores es un
programa codificado en lenguaje C resulta muy til
en la aplicacin de micro Controladores, dado que

La estructura de un programa bsico en lenguaje c


se indica en el esquema de la Fig. 1, el cual muestra
un bloque principal llamado main() y bloques de
funciones. Puede ser, dependiendo de la aplicacin,
que solo se requiera del bloque principal.

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

Ventajas
Un ncleo del lenguaje simple, con
funcionalidades aadidas importantes,
como funciones matemticas y de manejo
de archivos, proporcionadas por bibliotecas.
Es un lenguaje muy flexible que permite
programar con mltiples estilos. Uno de los
ms empleados es el estructurado "no
llevado al extremo" (permitiendo ciertas
licencias de ruptura).
Un sistema de tipos que impide operaciones
sin sentido.
Usa un lenguaje de preprocesado, el
preprocesador de C, para tareas como
definir macros e incluir mltiples archivos
de cdigo fuente.
Desventajas
Recoleccin de basura nativa, sin embargo
se encuentran a tal efecto bibliotecas como
la
"libgc"
desarrollada
por
Sun
Microsystems, o el Recolector de basura de
Boehm.

5. Encienden los LED Blancos, Rojos y


Verdes.
6. Encienden los LED Amarillos y Blancos
7. Encienden todos los LED.
8. Comienza el Ciclo nuevamente.
Se deben realizar saltos de 5 segundos entre cada
paso, y al final volver a iniciar el ciclo.
C. Programacin del PIC
.

Usamos la funcin INCLUDE con la librera


16F877.h el cual tiene la informacin sobre los
puertos, bancos de memoria, salidas y entradas del
PIC.
Configuramos un oscilador de 20mHZ en este caso
representado como clock=20000000.
Los FUSES que estamos usando son los fusibles
que sirven al momento de quemar un micro
fsicamente.

Encapsulacin.
Funciones anidadas, aunque GCC tiene esta
caracterstica como extensin.
Polimorfismo en tiempo de cdigo en forma
de sobrecarga, sobrecarga de operadores y
slo dispone de un soporte rudimentario
para la programacin genrica.

B. Levantamiento de Requerimientos
El proyecto debe contener 20 LED (8 Blancos, 4
Rojos, 4 Verdes y 4 Amarillos), 1 PIC16F877 y
resistencias de 300 Ohmios.
El funcionamiento del proyecto debe ser el
siguiente:
1. Encienden los LED Blancos.
2. Encienden los LED Rojos.
3. Encienden los LED Verdes.
4. Encienden los LED Amarillos

Creamos la funcin principal, y seteamos los


puertos B, C y D para que funcionen como salida
digital, se limpian los registros de los puertos.

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

DELAYS_MS, este depende del reloj interno


configurado anteriormente (20mHZ).
Cada vez que se va terminando una rutina de
encendido y apagado de una salida, continua con la
siguiente, al realizar todas las rutinas el ciclo se
termine y vuelve y empieza creando un ciclo
infinito.
D. Flujograma

Se crea un WHILE (ciclo) en el cual creamos la


programacin a partir de programacin binaria, en
esta programacin se configuran el encendido y
apagado de los LED, el retardo se realiza con

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

III. FUNCIONAMIENTO
En el proyecto no usamos matemtica ya que el
lenguaje nos permite configurar los retardos por
medio de parmetros ingresados en el cdigo.
Al simular el proyecto en PROTEUS inicialmente
se cuenta con un pulsador que permite reiniciar el
micro controlador, las resistencias van conectadas a
los LED, y se utilizan con el fin de limitar la
corriente que pasa a travs de los LED y de los
pines del micro controlador, con esto se protegen
los dispositivos, se utilizan los puertos B, C y D del
PIC por facilidad en la simulacin, aclaramos que
los dos ltimos pines del puerto C no se utilizan ya
que estos estn reservados para la comunicacin
serial.

Fundacin Universitaria Catlica Lumen Gentium. Cardona, Casas, Perea. Programacin PIC16F877.

V. CONCLUSIONES
El programar en el lenguaje C orientado a micro
controladores, logro que ampliramos nuestros
conocimientos para poder aplicarnos en un futuro
cercano, es un tipo de programacin al cual no
estamos acostumbrados pero si se tienen buenas
bases de lgica, abstraccin y diseo de algoritmos
se puede construir cualquier tipo de ensamble con
micro controladores.

Los primeros ocho LED Blancos se conectan al


puerto B, los 4 LED Rojos van los primeros cuatro
pines del puerto C, los 4 LED Verdes se distribuyen
en el puerto C y D, 2 se conectan a los pines 5 y 6
del puerto C, y los dos restantes a los dos primeros
pines del puerto D. Finalmente los 4 LED Amarillos
se conectan a los pines 3, 4,5 y 6 del puerto D.
Las resistencias utilizadas se calcularon a partir
del voltaje de los pines del micro (5V) por ley de
Ohm tenemos que corrientes es I=V/R, entonces se
especifica una corriente aproximada de 15 mA, por
lo que la resistencia resultante es de 330 Ohm.
IV. ALGUNOS ERRORES COMUNES
Al realizar el montaje en PROTEUS no calculamos
al iniciar el valor de las resistencias, ocasionando
que no se encendan los LED, la solucin fue
aplicar la ley de Ohm y comprobar la resistencia
resultante.

VI. AUTORES
Alvaro Jose Cardona Hurtado: Estudiante de
Ingenieria en Sistemas 8 Semestres de la
Universidad Catolica Lumen Gentium, actualmente
se encuentra en el cargo laboral de Analista de
Sistemas en el Proyecto Mujeres Ahorradoras en
Accion operado por la caja de compensacin
Comfandi.
Alvaro Enrique Perea Giraldo: Estudiante de
Ingenieria en Sistemas 8 Semestres de la
Universidad Catolica Lumen Gentium, actualmente
se encuentra en el cargo laboral de soporte tcnico
IT en la empresa GAMMA INGENIEROS.
Jorge Enrique Casas Bastidas: Estudiante de
Ingenieria en Sistemas 8 Semestres de la
Universidad Catolica Lumen Gentium, actualmente
se encuentra en el cargo laboral Analista de DSS en
la empresa NIELSEN.
REFERENCIAS

Errores comunes en ambiente real:


Si el micro controlador no responde
correctamente posiblemente sea por
problemas en la memoria, se soluciona
volviendo a descargar el programa o
reiniciando el micro con un pulsador.
Su hubo un corto en algn pin, y se da ese
pin, podemos solucionarlo cambindolo a
cualquier pin del puerto A o a los restantes
del puerto D.

[1] El Microcontrolador PIC16F877


www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf
[2] PIC16F87 X MICROCHIPS
http://www.datasheet.hk/view_download.php?id=106445
8&file=0032%5cpic16f877-20il_253136.pdf

S-ar putea să vă placă și