Taller de Microcontroladores

Abstracto— El siguiente informe da a conocer la programación de un microcontrolador PIC16F690 para el encendido secuencial de
led´s.
Palabras claves—PIC16F690, secuencia, datasheet, retardo, Assembler.
I. INTRODUCCIÓN
En el presente documento da a conocer los conceptos básicos para la programación de los microcontroladores PIC en
lenguaje Assembler, el cual está estrechamente ligado a la correcta lectura y entendimiento del datasheet del respectivo
componente que se está utilizando. Todo esto se resume en la realización y resolución de un problema propuesto que se
desarrolla utilizando el PIC16F690.
II. PROBLEMA A RESOLVER
El problema propuesto para esta tarea es el encendido de tres led´s en secuencia a través de la programación de un
microcontrolador PIC16F690 con una frecuencia del reloj interno de 4[ ] en lenguaje assembler y simularlo en el software
proteus.
III. DESARROLLO
Uno de los puntos más importantes en la programación de este tipo de microcontroladores en assembler es el
direccionamiento de los registro, ya que si se declara el microcontrolador como se muestra en la figura 1, se debe direccionar
cada registro que se usara en la programación. Además si se usan registros de propósitos generales, como es este caso, estos se
deben ubicar en sus respectivas direcciones.
Figura 1, Declaración de microcontrolador.
En la figura 2 se puede apreciar el “mapa de memoria” del PIC16F690 (datasheet) en el cual se pueden apreciar las
direcciones de cada registro que se pueden utilizar, ubicados en sus respectivos bancos. En el datasheet también se puede
encontrar la configuración bit a bit de cada registro como se puede ver a continuación. Para la programación y desarrollo de la
solución a este problema se declaró el microcontrolador con “#include p16f690.inc”, por lo que no es necesario direccionar
algunos registros.
Los registros a usar son los siguientes:
• STATUS: Para cambiar de banco.
• TRISC: Para direccionar los pines del puerto C como salida.
• PORTC: Para encender los led´s.
• TMR0: Para poder ejecutar el retardo.
• Propósito General: Para declarar variables para el retardo.
Figura 2, Dirección de registros.
Figura 3, Configuración bit a bit del banco 0.
Figura 4, Configuración bit a bit del banco 1.
Figura 4, Configuración bit a bit del banco 2.
Figura 5, Configuración bit a bit del banco 3.
IV. FUNCIONAMIENTO DEL PROGRAMA COMPILADO
El programa propuesto para la solución del problema expuesto es el que se muestra en la figura 6, en el cual lo primero que
se realiza es incluir el microcontrolador que se programará, se usa “#include” porque de esta manera se evita tener que
direccionar algunos registros como STATUS o PORTX. Luego se declara f, w, cont_x y se le da la dirección del timer,
indefinida, y de propósito general respectivamente.
Se “inicia” el algoritmo direccionando los pines 1, 2, y 3 del puerto C como salida, que será donde se conectaran los tres
led´s para generar la secuencia, para realizar esta acción se debe realizar un cambio al banco 1que es donde se puede utilizar el
registro TRISX, y para luego volver al banco 0 para establecer los estados altos con PORTX. Se da inicio al ciclo que es el que
generará la secuencia de encendido donde se le designa un pin del puerto C a dejar en estado alto luego de un retardo (se verá
más adelante) se designa el segundo led de la secuencia a poner en estado alto el que pasado el mismo retardo anterior da paso
a poner en alto al tercer y último led.
El retardo es la parte más importante del algoritmo ya que es el que nos permitirá visualizar la secuencia ya que la velocidad
de esta es tan rápida que es imperceptible al ojo humano. Este retardo consiste en asignarle valores a los contadores y luego
comenzar a decrementarlos, esto provoca un demora por la cantidad de instrucciones que se ejecutan al hacer el decremento y
la comparación que realiza para analizar si continúa decrementando un contador u otro.
Figura 6, diagrama de flujo del programa.
Figura 7. Programa hecho en el editor de código de proteus.
VI. SIMULACIÓN EN PROTEUS
La simulación en proteus se realiza utilizando:
• PIC16F690.
• 3 resistencias de 220[ ℎ ].
• 3 led´s.
La simulación se realiza al construir un proyecto en la pestaña del editor de código, al hacer esto el programa se carga
inmediatamente al microcontrolador, eso si hay que tener cuidado en cambiar la frecuencia del reloj interno del PIC a 4[ ]
que es uno de los requerimientos del problema. La simulación se puede ver en la siguiente figura:
Figura 8. Simulación en Proteus
VII. CONCLUSIÓN
Como se puede apreciar en documentos anteriores, para la correcta programación de un microcontrolador, sea cual sea, se
debe realizar una correcta lectura y comprensión de la hoja de datos (datasheet) del microcontrolador, esto para poder analizar y
realizar la función y dirección de cada registro ya que la cantidad de aplicaciones que se pueden realizar con, por ejemplo, un
PIC16F690 son muchísimas. Parte primordial de la resolución del problema es el algoritmo que genera el retardo, ya que esta es
la parte que suele generar más problemas al programador, para lo cual se deben comprender bien el set de instrucciones del
microcontrolador.