Académique Documents
Professionnel Documents
Culture Documents
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
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.
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.
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
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.
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
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
CONCLUSIONES:
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
ESQUEMA ELÉCTRICO
Figure 16. Simulación Proteous