Práctica 3
Contador módulo 30
Nombre: Mario Alberto Lara Hernández Matricula: 190558
Nombre: Angel Rafael Ramos Montes Matricula: 177098
Nombre: Miguel Angel Zacarias Hernández Matricula: 168378
Objetivos
Al completar esta práctica el alumno:
➢ Utilizará herramienta de edición y simulación MPLAB para verificar el
funcionamiento del programa realizado.
➢ Será capaz de utilizar instrucciones en ensamblador para el PIC16F877A
que le permitan generar incrementos y decrementos.
➢ Será capaz de diseñar un contador ascendente o descendente módulo
n utilizando un microcontrolador.
Introducción
Dentro del repertorio de instrucciones del microcontrolador, no existe ninguna que
permita comparar el contenido de los registros de memoria de una manera directa.
Para solucionar este problema lo que se puede hacer es restar al contenido del
registro el valor con el que queremos compararlo y analizar el resultado de dicha
operación. Si el resultado de la resta es cero los dos valores son iguales; si por el
contrario el resultado es distinto de cero los valores comparados son distintos. El
bit (Z) en el registro STATUS indica cuando una operación aritmética o lógica
realizada en la ALU da como resultado cero.
El problema planteado para esta práctica consiste en diseñar el hardware y
confeccionar un programa para el PIC 16F877A que comience poniendo a cero un
contador, cheque el estado de un interruptor conectado a RB0; si el interruptor
vale cero la cuenta será ascendente y si vale uno será descendente. El valor del
contador debe ser mostrado en un digito conectado al puerto D, utilizar un led
para las decenas.
Material y equipo
1 Microcontrolador PIC16F84
1 Interruptor
4 Diodo LED´s
4 Resistencia de 330 Ω
1 Resistencia de 1K Ω
1 Digito
Alambres para conexión
Desarrollo
1. Diagrama esquemático.
a) Dibuje un diagrama donde muestre los componentes que utilizará para
la solución del problema y todas las conexiones necesarias.
2. Elaboración del Diagrama de flujo
a) Muestre en un diagrama de flujo la secuencia de pasos necesarios para
elaborar el programa.
3. Programa
a) Anexe el programa.
3) Pruebe el prototipo
a) Arme el circuito y pruébelo, agregue una fotografía del circuito armado.
Evaluación del aprendizaje
a) Explique cómo logró visualizar cada incremento de la cuenta en el digito y el
led.
Utilizando dos variables. Una tenia el valor que decrementaría y la otra el valor
que iba incrementando. La variable que controlaba el contador para que se
reseteara era la variable con el valor que decrementaba.
b) Explique en que consiste el algoritmo para comparar con el límite de la cuenta
en los casos ascendente y descendente.
Consiste en hacer que decremente “Cuenta” y brincar un renglón en caso de que
Cuenta sea cero, si no es cero regresa a decrementar hasta que sea cero, regrese
al ciclo y comienze de nuevo
c) Explique, ¿cómo se declaran las variables o registros propios en el
microcontrolador?.
En este caso se usaron variables como centenas, decenas y unidades.
Inicia en CBLOCK 0x20 luego se inician las variables y posteriormente se escribe
ENDC.
Cuando se comienza el programa se utilizan las variables para asignar su
funcionamiento en el programa al usar comandos como movlw, movwf, call,
decfsz, incf, etc.
d) Explique, ¿qué problemas tuvo en la realización de la práctica? y ¿cómo los
soluciono?
Hubo diversos factores, pero, después de cambiar la cuenta a ascendente.
Tuvimos complicaciones para hacer mas pequeño el contador a 30 segundos. Se
realizo el cambio de retardo en el código, ya que se encontraba en 50 segundos
descendentes y lo definimos ahora como ascendente con un tiempo de 30
segundos.
e) Explique, ¿cómo logró realizar retardos de tiempo para que la cuenta se pueda
visualizar en los leds?
Dentro del primer retardo, colocamos un segundo retardo que es el que se
encargaría de realizar la cuenta en ascendente con los 30 segundos.
Conclusiones individuales
Conclusión Mario Alberto Lara Hernández
En esta práctica aprendí como se usa la instrucción decfsz y las subrutinas. Crear
subrutinas ayudan mucho para la realización del código y que tenga menos
errores, sin ellas nos tomaría más tiempo crear el código. Además no es difícil
llamar a la subrutina porque la única instrucción que se tiene que escribir es call,
y después de la instrucción se pone el nombre de la subrutina que quieres llamar.
Conclusión Angel Rafael Ramos Montes
Me pareció interesante el como se realizó el código para hacer que funcionara la
cuenta de 30 a 0 usando retardos, subrutinas para los retardos, el como se
realizó el código para que usara las centenas, decenas y unidades y pudiera
funcionar el contador a base de operaciones lógicas.
Conclusión Miguel Angel Zacarias Hernández
La práctica estuvo muy interesante, ya que conocimos y aprendimos a realizar
modificaciones con subrutinas en el código. Realizamos cambios en la cuenta
para modificar el funcionamiento del programa en Proteus, cambiando el
corrimiento descendente a cuenta ascendente utilizando retardos. Me pareció
interesante el nuevo funcionamiento y que solo se necesitaba hacer
modificaciones simples en el programa.