Vous êtes sur la page 1sur 9

FORMATO DE INFORME DE PRÁCTICA DE

LABORATORIO / TALLERES / CENTROS DE


SIMULACIÓN – PARA ESTUDIANTES

CARRERA: Ing. Eléctrica-Electrónica ASIGNATURA: Sistemas Microprocesados


ESTUDIANTES: John Reinozo Stefany Toro
NRO. PRÁCTICA: TÍTULO PRÁCTICA: Encendido de un led con retardos (delays)
1
programado en ensamblador
OBJETIVO ALCANZADO: Crear un proyecto de programación donde trabajamos con
el software Ensamblador o MPLAB X para poder encender y apagar un LED usando
retardos o Delay´s durante un tiempo programado, en este caso de 1.5 segundos,
esto nos servirá para tener un primer acercamiento con el uso de los puertos PIC y el
conocimiento de algunas instrucciones del lenguaje ensamblador de los
microcontroladores y además la realización de algunas subrutinas.
ACTIVIDADES DESARROLLADAS
1. Lo primero que se hace es abrir el programa MPLAB, y creamos un nuevo proyecto,
en la ventana mostrada seleccionamos Microchip Embedded, y procedemos a dar
click en Standalone Project y a su vez en siguiente.

Figure 1.Creación de proyecto

2. Nos aparece la siguiente ventana con 2 opciones, en la cual escogemos el PIC con
el que vamos a trabajar y comenzar a programar. En nuestro caso el PIC16F877A.
Clic en siguiente.
Figure 2. Ventana de seleccion

3. En la carpeta de Hardware Tools, escogemos la opción Simulator y click en


siguiente.

Figure 3. Ventana de herramientas

4. En la ventana que aparece al seleccionar la opción anterior seleccionamos la


opción mpasm (v5.82).
Click en siguiente.

Figure 4. Ventana de herramientas de compilar

5. Damos el nombre a nuestro proyecto y si queremos modificar donde se localizará


modificamos las rutas de guardado.
Figure 5. Ventana selección nombre de proyecto

6. Al crearse nuestro proyecto aparece todas las opciones que estan dentro del
mismo y para comenzar a programar o modificar algunas de las opciones que estan
por defecto hacemos click derecho y las cambiamos. En nuestro caso comenzamos
directo con la creación del programa, clic derecho en Source Files y seleccionamos
la opción other y en la carpeta Assembler le damos en AssemblyFile.asm que viene
siendo una extensión y el medio para grabar en los PICs.

Figure 6.Ventana selección de lenguaje

7. Escogemos el nombre del proyecto y seleccionamos Finish.


Figure 7. Ventana de ruta

8. Finalmente procedemos a realizar la programación respectiva que viene siendo el


objetivo planteado en la práctica.
Figure 8- Código

Este es el código que utilizamos para poder encender un led por tiempos programados usando
retardos
9. Una vez que se ha programado y comprobado funcionamiento de los códigos
procedemos a pasar el archivo .asm al microcontrolador “PIC16f877A” ubicado como
.hex en la carpeta guardada. Por medio de un grabador el que nosotros utilizamos es
el PICKit 2,
10. Utilizando otro software de diseño y simulación de circuitos eléctricos: “Proteus”, se
simula el esquema presentado en anexos y comprobamos cómo es que cada 1.5
segundo el LED enciende y apaga. Todo esto antes de proceder armar el circuito real
en el protoboard.
Ojo: Hay que combinar MPLAB X y Proteus para que salga la simulación con el μC.
RESULTADO(S) OBTENIDO(S):

Esta parte es la configuración de los Bits que se utilizan al iniciar la programación todas estan
en off porque no hay necesidad de utilizarlas en esta práctica lo unico que usamos es HS de
4KHz en el oscilador que es la primera opción de la configuración.

Figure 9. Código configuración de bits

Definimos las constantes, variables y los valores en hexadecimal


Figure 10. Código creación de constantes

Llamamos a uno de los 4 bancos en los que vamos a trabajar: BCF(Bit clean File) viene siendo
como colocar un 0 en el puerto y BSF(Beat Set File) viene siendo como colocar un 1 en el
siguiente puerto, depende cuál de las 4 configuraciones usemos para utilizar los bancos
bancos 0, 1, 2 o 3. Nosotros estamos usando el banco 0 por el llamado que hicimos de dos
BCF en las entradas RP0 Y RP1.
Hacemos un llamado al banco 1, los códigos MOVLW y MOVWF son para mover los archivos
que estan en esa parte al siguiente banco como esta descrito en verde a lado de cada código
o sea se pasa lo que tenemos en hexadecimal a una entrada analógica o digital.
Ese código binario que se crea la mandamos a guardar en una variable y eso a una entrada o
salida.
Quedando asi vamos al banco uno (0) y elegimos la salida que hemos designado
anteriormente en el puerto para trabajar

Figure 11. Codigo

Esta es la parte de la programación donde se crea un bucle con las condiciones iniciales de
retardo que dimos al principio al asignar las variables, constantes y valores de retardo en
hexadecimal, tomando en cuenta que al ejecutarse cada linea de código pasa un μs antes de
realizar los códigos. Lo que hace esta parte es que activa el puerto A con un BSF pasa un μs
y en la 2da linea llama al retardo para que se quede encendido, la 3ra linea apaga el LED con
un BCF mandando un cero, la 4ta linea llama al retardo y pasa al GOTO que va al inicio del
bucle y lo reinicia.

Figure 12. Código creación de bucle

Esta es la parte donde se producen los cambios lógicos en el tiempo, las constantes las guarda
en unas variables y las mueve de LW a WF donde K2=CONTA3, K1=CONTA2 y K=CONTA
y empieza el decremento (DECFSZ) el primer CONTA(K) empieza en 255, este comenzará a
disminuir hasta llegar a cero y pasará a reducir en una unidad a la segunda variable que es
CONTA2(K1), o sea ((0del primer conta); 255-1 del segundo). Para bajar una segunda
unidad en el segundo CONTA(K1) se repetirá el proceso con el primero hasta llegar a cero y
bajará otra unidad en el segundo dando ((0del primero contA); 254-1 del segundo) y así
hasta que CONTA(K) y CONTA2(K1) sean cero para que pueda decrementar en el último
CONTA(K2). Quedando ((0del primer contA), (0del segundo), 6-1 del tercero) asi
repetitivamente el proceso anterior, hasta que finalmente todos sean cero. Cabe recalcar que
todo este proceso es en microsegundos y la suma de todo el proceso esta aproximado al 1,5
segundos que se pide, la falla es del 0.1% ya que en el programa no sale exactamente 1,5s
sino un valor alrededor del 1,596s
Nota: el NOP es un retardo de 1 uS que tambien ayuda para la ejecución del programa

Figure 13. Código cambios lógicos en el tiempo

Esto es básicamente el cálculo matemático que se produce en la lógica de los tiempos para
prender y apagar un LED en el tiempo designado dando un valor de 1,596s

Figure 14. Cálculo matemático

CONCLUSIONES:

 Mediante la práctica realizada logramos entender el funcionamiento adecuado


de la rutina retardo ya que depende de qué valor le des a cada contador para
que este se tarde más o menos dependiendo como se ajuste mejor en lo que
tu decidas implementar el PIC.
 También entendí como se declaran las variables y el funcionamiento de
algunas funciones de MPLAB como el GOTO, BSF, CLRF, MOVLW, entre
otras.

RECOMENDACIONES:
 Se pide explicar que significa o cómo influye y funciona cada código más a
fondo.
 Verificar que las conexiones de los elementos estén de manera correcta.
 Verificar que el programa realizado se haya grabado de manera satisfactoria
en nuestro PIC.

ANEXO1
FLUJOGRAMA

Inicio

Ir a banco 1

Configurar puerto
A como salida

Ir a banco 0

Encender LED

Llamar a la
subrutina retardo

Apagar LED

Llamar a la
subrutina retardo

FOTOS DE LA PRACTICA

Figure 15. Circuito electrico

ESQUEMA ELÉCTRICO
Figure 16. Simulación Proteous

Adjunto formato digital: Código de programación y simulación.

Vous aimerez peut-être aussi