Post on 13-Sep-2015
description
Universidad de Carabobo
Facultad de Ingeniera
Escuela de Ingeniera Elctrica
Departamento de Automatizacin
Microprocesadores
PRCTICA N 1
(Semana 1 y 2)
Integrantes:
Vargas Andrea C.I: 24554231
Karabelas Efstatios C.I: 24942073
Naguanagua 11 de Junio del 2015
Laboratorio de Microprocesadores
PRCTICA N 1
MANIPULACIN DE ENTRADAS Y SALIDAS DIGITALES
Objetivo General:
Disear programas en lenguaje ensamblador para manipular entradas y
salidas digitales del microcontrolador, que se relacionen con la resolucin de un
algoritmo, mediante la ayuda de los conceptos bsicos que se han visto en la
materia terica para ponerlo en prctica en este laboratorio.
Objetivos Especficos:
- Verificar los procedimientos para el desarrollo de aplicaciones con
microcontroladores.
- Manipular salidas digitales con el microcontrolador.
- Procesar entradas digitales con el microcontrolador.
- Conectar perifricos digitales (pulsadores, interruptores, leds) con el
microcontrolador.
Semana 1
Descripcin Funcional:
Se mand elaborar una aplicacin con el PIC16F887 que decremento un
contador la cual llamaremos como variable Cont de doce (12) a cero (0), de
una forma cclica con la caracterstica de que cuando llegue al nmero cero (0),
debe retornar al nmero doce (12) y continuar de forma cclica sucesivamente.
Este ciclo de decremento de dicha variable que llamamos Cont se
efectuara despus que el usuario active con un cero lgico Como nos pide la
prctica un interruptor S tambin se tendr un pulsador P para que dicho
usuario cuando lo presiona, la cuenta se detendr, es decir no habr ms
decremento a dicha variable llamada Cont, dicho valor de la variable lo
Laboratorio de Microprocesadores
mostraremos en los puertos C especficos de dicho PIC, los cuales estarn
desde el RC5 hasta el RC2, en pocas palabras un numero de 4 bits, y tambin
se tendr un Led que se debe encender cuando se tenga un resultado en la
salida de dichos puertos, este led estar ubicado en el mismo puerto C pero
especficamente en el pin RC1.
Las variables de entradas se ubicaron de la siguiente manera como nos
especific la prctica: Interruptor S se ubicara en el pin RA5 y el pulsador P
estar ubicado en el pin RA0,
Hay que tener en cuenta que al volver al valor original del Interruptor S
debe apagarse todos los leds para que vuelva a otra posicin el Interruptor S y
comience de nuevo la cuenta.
Diagrama de Flujo:
Para la elaboracin de esta prctica, se pas a elaborar un diagrama de
flujos para especificar ms o menos paso a paso que se tiene, que queremos y
como se logra todo el proceso de la aplicacin a elaborar.
Laboratorio de Microprocesadores
Cdigo Fuente:
Despus de elaborar el diagrama de flujo, pasamos a usar el Bloc de
Notas para elaborar el cdigo fuente para dicha aplicacin que nos pide,
teniendo en cuenta que para este cdigo, ser necesario despus guardarlo en
formato .ASM para copilar la informacin guardada y generar el archivo .Hex
con el programa MPLAB IDE v8.92, este archivo nos ayudara en la parte de
simulacin de este programa y de otro programa que usaremos que ser el
Proteus ISIS 7 Professional
El siguiente Cdigo que se Copilo y se envi a la profesora con xito de
ejecucin y verificado en el saln de clase el primer da fue el siguiente:
------------------------------------------------------------------------------
list p=16F887
#include
Cont EQU 0x20
ORG 0x00
GOTO INICIO
ORG 0x05
INICIO
BSF STATUS,RP0
MOVLW 0xFF
MOVWF TRISA
MOVLW b'00000000'
MOVWF TRISC
BSF STATUS,RP1
CLRF ANSEL
BCF STATUS,RP1
BCF STATUS,RP0
BCF INTCON,GIE
CLRF PORTC
COMENZAR
CLRF PORTC
BTFSC PORTA,5
Laboratorio de Microprocesadores
GOTO COMENZAR
CARGA
MOVLW b'00001100'
MOVWF Cont
CONTADOR
BTFSS PORTA,0
GOTO mostrar
MOVF Cont,0
BTFSC STATUS,Z
GOTO CARGA
DECF Cont,1
GOTO CONTADOR
MOSTRAR
BTFSC PORTA,0
GOTO MOSTRAR
BCF STATUS,C
RLF Cont,1
RLF Cont,0
MOVWF PORTC
BSF PORTC,1
RRF Cont,1
RRF Cont,1
PARAR
BTFSC PORTA,5
GOTO COMENZAR
GOTO PARAR
END
------------------------------------------------------------------------------
Simulaciones en los Programas MPLAB y Proteus
Recordando anteriormente de lo que se dijo con los archivos .ASM y la
compilacin para generar el archivo .Hex, este dicho archivo nos ayudara ha
simular dicha aplicacin que creamos en tiempo real y ver paso a paso lo que
Laboratorio de Microprocesadores
sucede, teniendo en cuenta que en un programa se ver especficamente todo
detallada mente y en otro se ver por encima la parte circuital.
A continuacin, explicaremos detalladamente el funcionamiento de la
simulacin de la aplicacin que elaboramos en el programa MPLAB IDE v8.92
MPLAB:
En este dicho programa, se copilo la informacin dicha anterior mente,
generando un archivo .Hex que nos ayudara a simular lo creado.
Pasamos ha elegir el tipo de simulacin lo cual nos iremos a la pestaa
Debugger y elegimos Select Tool y pasamos a elegir la opcin 5 MPLAB
SIM, esto nos ayudara a simular desde el mismo programa.
Para ver exactamente que podemos observar en la simulacin, usaremos
la ventana Watch y Stimulus, los cual nos ayudara para ver qu valor tiene
las entradas y salidas y poder editar las entradas para cualquier situacin, como
se puede observar en la siguiente imagen:
Para comenzar con la simulacin, tendremos que hacer lo siguiente, el
pulsador L tendr que tener el valor de 1 Ya que como su nombre dice, es un
pulsador, en este caso seria RA0 = 1, y para comenzar el ciclo a contar, el
interruptor S tendr que estar en RA5 =0 para que comience a contar, en
este caso, se puede observar en la siguiente imagen:
Laboratorio de Microprocesadores
Podemos darnos cuenta como WREG, comienza en 12 como se indic
en el cdigo que comenzara a contar, se puede ver como en el PORTA tiene el
valor de 1, que sera el valor del pulsador P como debe estar, y fijarnos como
en el PORTC se tiene el valor de 0 ya que se limpi las entradas y salidas.
Para obtener lo que ya venamos hablando de que hacia esta prctica,
pasamos ha modificar el valor del pulsador, es decir pararemos el contador en
un nmero, en este caso en el nmero cuatro (4).
Modificando el Valor del Button o pulsador.
Como se puede observar en el registro W, se detuvo e contador en el
valor de cuatro (4), y si esperamos a que pase el ciclo, el programa dar
resultado como el valor en donde se detuvo el contador, arrojando el mismo
nmero como se puede ver a continuacin.
Como se puede observar, el valor del PORTC es de 0x12 en
hexadecimal o de 00010010 en binario, si nos damos cuenta de que el resultado
Laboratorio de Microprocesadores
sera desde el RC2 hasta RC5, el resultado que dice dicho puerto es el nmero
cuatro en binario, teniendo cuenta que esta encendido el Led del pin RC1 como
se debera indicar cuando arroja un nmero.
Si volvemos a pasar el interruptor S a 1 y despus a 0, el contador
volver hacer su trabajo y los leds de salida se apagaran, es decir, sera un botn
de reseteo de forma manual.
Ahora pasamos a simular con el otro Programa llamador Proteus:
Proteus:
Con este programa, la parte de simulacin para los datos no se ve ms
en cdigo si no en demostracin, se ve los leds y se interacta con los
interruptores o pulsadores y muchas cosas ms, como podremos ver a
continuacin, el archivo .hex ya est en dicho programa y est en simulacin
con el RA5 en 0, es decir, el programa est contando mas no podemos ver que
numero va contando.
Como se puede observar y ya dicho antes, no se ve o puede observar el
contador, pero si presionamos el pulsador P que se ubica en RA0, veremos
cmo nos arrojara un resultado de un nmero y el Led de resultado que seria
RC1.
Laboratorio de Microprocesadores
El programa nos arrojara un nmero que nosotros paramos al azar, en
este caso, el nmero 100 en binario, que sera el nmero 4, casualidad como el
ejemplo anterior, pero no siempre se mostrara el 4, ahora se ver otro intento de
valor al azar en tiempo diferente para tener resultado diferente.
Laboratorio de Microprocesadores
Semana 2
Descripcin Funcional:
En esta semana, las conexiones de las entradas no cambiaron mucho,
prcticamente no cambiaron, y tampoco la del Led L, pero el funcionamiento
ha cambiado de la siguiente manera.
Cuando se inicia el programa, con el interruptor S, el led L deber
encender para sealizar que el usuario debe comenzar a jugar, introduciendo un
nmero aleatorio, dicho nmero debe ser un numero binario de 3 bits, lo cuales
se introducir en los pines RA3, RA2, RA1, el cual se llamara ENT, en esta
condicin si P esta sin presionar, el micro decrementa constantemente un
contador mediante un registro que denominaremos CNT.
Al presionar el Pulsador, pasara lo siguiente: Se detienen la cuenta CNT,
se apaga el Led L, se calcula el doble del valor de ENT.
Si el valor de CNT es mayor que el resultado referido en (3), el jugador
gana. En este caso se prende el led G (ubicado en el pin RC0). Si CNT es
menor o igual que el resultado referido en (3), entonces el jugador pierde (no se
enciende G). En ambos casos, gane o pierda, el valor de CNT se mostrar en
los pines de salida RC5 ... RC2. La salida se mantendr as hasta que se active
el interruptor S nuevamente y se encienda el led L (se pondrn en cero
nuevamente los restantes bits del puerto C).
Laboratorio de Microprocesadores
Diagrama de Flujo:
Cdigo Fuente:
Como anteriormente explicado, pasamos a crear el cdigo mediante
el cdigo fuente, para as copilarlo y tener el archivo .Hex para simularlo.
------------------------------------------------------------------------------
list p=16F887 #include CNT EQU 0x20 ENT EQU 0X21 ORG 0x00 GOTO INICIO ORG 0x05 INICIO
BSF STATUS,RP0 MOVLW 0xFF MOVWF TRISA MOVLW b'00000000' MOVWF TRISC BSF STATUS,RP1 CLRF ANSEL BCF STATUS,RP1 BCF STATUS,RP0 BCF INTCON,GIE
Laboratorio de Microprocesadores
CLRF PORTC COMENZAR
CLRF PORTC BTFSC PORTA,5 GOTO COMENZAR BSF PORTC,1
CARGA
MOVLW b'00001100' MOVWF CNT
CONTADOR
BTFSS PORTA,0 GOTO CALCULAR MOVF CNT,0 BTFSC STATUS,Z GOTO CARGA DECF CNT,1 GOTO CONTADOR
CALCULAR
BTFSC PORTA,0 GOTO CALCULAR BCF STATUS,C BCF PORTC,1 MOVLW b'00001110' ANDWF PORTA,0 MOVWF ENT RLF CNT,1 RLF CNT,1 MOVF CNT,0 MOVWF PORTC RRF CNT,1 RRF CNT,0 SUBWF ENT,0 BTFSC STATUS,C BSF PORTC,0
parar
BTFSC PORTA,5 GOTO COMENZAR GOTO parar
END
------------------------------------------------------------------------------
Simulaciones en los Programas MPLAB y Proteus
Sencillamente, comenzaremos con la simulacin de Proteus, para facilitar
ms fcil la explicacin del funcionamiento.
Como en la prctica anterior, el programa se activara a contar a partir
cuando el interruptor S este en 0 (Cero), y con un led indicara que est activo
para introducir un numero o para presionar el pulsador P, como se puede
observar en la siguiente imagen.
Laboratorio de Microprocesadores
Si dejamos un nmero menor como 1 o 0 en los pines de introducir
nmero, ya que queremos introducir un nmero menor, tendremos la
oportunidad de ganar, es decir que el contador tenga el mayor nmero que el
usuario, y encienda el led de ganador con el resultado del contador.
Laboratorio de Microprocesadores
Probando con 0 en la entrada, podemos darnos cuenta como nos arroja
ganador ya que el contador tendr la posibilidad desde el 1-12 de ser mayor
que el 0 sin contar el 0 si son iguales.
Ahora si probamos con nmeros altos en la entrada para ver si alguna
vez se puede perder, observaremos que habr un resultado de perdedor y sin
encender el led de ganador.
Con el programa Proteus, se puede explicar por encima esta prctica,
pero con el MPLAB se puede explicar mejor y a mas profundidad los valores
reales que nos da el contador a cualquier movimiento de los interruptores o del
pulsador.
MPLAB:
Comenzamos como debera empezar el programa, con el interruptor S
en 0 para que comience el contador su trabajo y con el led L encendido
esperando el pulsador y el numero a introducir.
Laboratorio de Microprocesadores
Como se observa, ya empez a contar y no hemos introducido nada en
los terminales del nmero de 3 bits, presionado el pulsador, pasamos hacer el
mismo experimento como en proteus, elegir un nmero pequeo como 0-1 para
verificar el modo ganador de este juego.
Se observa como fue ganador y que el contador fue un numero alto y
como el Led ganador se enciende, si ubicamos bien el resultado, seria 1010 y el
led de Ganador que sera RC0.
Ahora si colocamos lo invertido, que si se cola la entrada un nmero alto,
la posibilidad de perder seria alta y pasara lo siguiente:
Se observa como en esta condicin, en led de Ganador, no enciende ya
que el nmero a introducir por el usuario, es mayor al nmero donde se detiene
el contador.
Laboratorio de Microprocesadores
Conclusin
En esta prctica, se pudo observar cmo se elabor lo que se pidi, aplicando la teora que se ha venido estudiando en la materia terica para
aplicarlo en la materia prctica.
Se pudo decir que al principio de cada prctica, la efectividad de que el
programa corriera perfecto eran altas mas no del 100%, teniendo que arreglar
algunos detalles en los diagramas de flujos y en el cdigo fuente, tambin
teniendo en cuenta la cantidad de procesos que iba a tener el cdigo fuente, y
mejoras para ser ms fcil cada paso de dicho cdigo, hay que tener en cuenta
que la mejor forma de simular lo hecho es usando el programa MPLAB, como se
ha venido explicando gracias a la profesora, este programa es sencillo de usar
para verificar los valores que se le den a las variables o registros de importancia,
cosa que el Proteus se limita ya que es un simulador fsico en tiempo real.