Logo Studenta

practica-3-comparador - César Esquivel

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO POLITÉCNICO NACIONAL
Escuela Superior de Ingeniería Mecánica y Eléctrica UA
Interfaces Periféricas y Programables I
SEGUNDO DEPARTAMENTAL
PRÁCTICA 3
“COMPARADOR DE 2 CANTIDADES DE 4 BITS”
PROFESOR: VALDÉS MARTÍNEZ RAMÓN
EQUIPO 7
CHÁVEZ CANTORIANO JORGE LUIS
ESQUIVEL GONZÁLEZ CÉSAR ANTAR
LARA TUFIÑO ERANDI ALELI
GRUPO: 7RM1
FECHA DE ENTREGA: 17 – OCTUBRE – 2018
OBJETIVO
Desarrollar una aplicación que nos permita la lectura de dos datos de 4 bits cada 1 y así mismo haga una comparación entre ambos datos, identificando a la salida mediante leds si son iguales o en dado caso de que haya una diferencia identificar cual es mayor al otro.
MARCO TEÓRICO
¿Cómo hacer y simular un programa en MPLAB?
1.- Abrimos MPLAB y damos clic en Project y posteriormente New:
2.- Le asignamos un nombre al proyecto y seleccionamos la carpeta en donde se va a guardar:
3.- Ahora seleccionamos en la barra principal la opción que dice File y después New:
4.- En la ventana que se abre escribimos nuestro código:
5.- Posteriormente debemos de simularlo, así que en la barra principal seleccionamos DebuggerSelect Tool MPLABSIM:
6.- Luego en Debugger nuevamente seleccionamos STIMULUS, en la ventana que aparece seleccionamos los puertos que utilizamos, y en Action nos aparecen las siguientes opciones:
· Set High: Establecer alto
· Set Low: Establecer bajo
· Toggle: Intercambia en cada pulso, primero uno alto y después uno bajo
· Pulse High: Pulso alto
· Pulse Low: Pulso bajo
En nuestra práctica seleccionaremos Toggle debido a su característica, entonces la ventana nos queda de esta forma:
7.- Después damos clic en View Watch, en la ventana que aparece seleccionamos PORTB en la parte superior y lo agregamos, podemos observar cómo se encuentra en hexadecimal y binario:
8.- Habiendo ya configurando lo anterior corremos nuestra simulación dando clic en el símbolo de “play” que se encuentra en la barra de herramientas, damos estímulos y finalmente verificamos el circuito con las combinaciones de las entradas:
*ME FALTA AGREGAR UNA IMAGEN
¿Cómo realizar un programa en AVR Studio?
1. Abrimos el programa Atmel Studio. Después daremos clic en “File”, luego en “New” y por último en “Project…”:
2. Después se abrirá una ventana en la cual, pondremos un nombre y de desearlo, podemos decir la dirección en la que será guardado ese nuevo proyecto. También dejaremos la opción que nos da por default:
3. Ya que le dimos “ok”, a continuación nos dirigirá a la siguiente ventana, en la cual seleccionaremos el AVR que utilizaremos, que para este semestre es el ATmega328P, podemos buscarlo entre toda la gama de opciones que tiene el programa o en la parte superior derecha podemos poner el nombre del que deseamos y automáticamente comienza a buscar el que cumpla con la descripción:
4. Después de seleccionar el AVR, nos manda a la pantalla de programación, que mediante un lenguaje C y un sistema numérico hexadecimal, crearemos los programas para nuestro AVR:
5. Ahora mediante el uso de las instrucciones en C, creamos un programa en el cual declararemos que de un puerto B, sus 3 primeros pin serán entrada y el 4° será salida y para evitar algún corto, los pines que no ocuparemos, se ponen como entradas:
6. Una vez terminado el programa, procedemos a compilarlo (símbolo encerrado en rojo), es decir, pasarlo de un lenguaje ensamblador a uno máquina, o viceversa, de esta forma comprobamos que nuestro programa no tenga errores, ya que el programa los detecta y nos lo marca, de no tener ni un error, nos aparece en la barra de comentarios que tenemos una estructura correcta:
DESARROLLO
ENUNCIADO DE LA APLICACIÓN:
Diseñar una aplicación que simule a un comparador de 4 líneas.
Considerando las líneas de entrada:
	Dato B
	Dato A
	RB7
	RB6
	RB5
	RB4
	RB3
	RB2
	RB1
	RB0
	B3
	B2
	B1
	B0
	A3
	A2
	A1
	A0
Y las líneas de salida:
	Condición
	RA2
	RA1
	RA0
	A<B
	0
	0
	1
	A=B
	0
	1
	0
	A>B
	1
	0
	0
DESARROLLO PARA PIC EN MPLAB 
ALGORITMO
1.- Limpiar cada uno de los puertos.
2.- Configurar entradas y salidas y declarar que sean digitales.
3.- Declarar las nuevas variables a utilizar.
4.- Guardar lo del registro B en W y posteriormente lo de W a nuestras variables creadas.
5.- Invertir los nibles.
6.- Realizar la operación lógica AND para separar los valores.
7.- Guardar dato A en W.
8.- Restar al dato B lo de W con la instrucción SUBWF.
9.- Evaluar el bit C del registro Status 
10.- Crear bucles de instrucciones para cada una de las comparaciones con ayuda de la instrucción BTFSC.
11.- Regresar al paso 4.
INSTRUCCIONES
· SUBWF f, d: Substrae W de f, si d es 0 el resultado es almacenado en W y si d es 1 el resultado es almacenado devuelta en el registro f. 
Los bits afectados en el STATUS son: C, DC, Z.
· SWAPF f,d: Intercambia los nibles de f. El nible superior e inferior del registro f son intercambiados. Si d es 0 el resultado es almacenado en el registro W y si d es 1 el resultado es almacenado en el registro f.
Los bits afectados en el STATUS: Ninguno
DIAGRAMA DE FLUJO
CÓDIGO
SIMULACIÓN EN PROTEUS
ARMADO EN PROTOBOARD
DESARROLLO PARA AVR EN AVR STUDIO 
ALGORITMO
1.- Definir o crear tres variables
2.- Configurar puertos de entrada y salida, al igual que las entradas analógicas o digitales.
3.- Mover de puerto B a nuestra primera variable.
4.- Mover de la primera variable a la segunda variable previamente definida y completar con la operación lógica “and” para dejar únicamente los valores de entrada.
5.- Realizar un corrimiento de 4 bits para intercambiar los nibles y completar con la operación lógica “and” para dejar únicamente los valores de entrada, guardar esta operación en la tercer variable. 
6.- Realizar las comparaciones con las combinaciones verdaderas.
· Si b – c < 0 RB0=1, RB1=0 y RB2=0
· Si b – c > 0 RB0=0, RB1=0 y RB2=1
· Si b – c = 0 RB0=1, RB1=1 y RB2=0
7.- Regresar al punto 3.
INSTRUCCIONES
· INT
Denota un tipo entero que almacena valores según el tamaño y el intervalo especificado en la tabla de instrucciones.
· DDRX
Define como entradas o salidas los bits del puerto seleccionado, esto se puede hacer mediante denotación en sistema hexadecimal o binaria.
· X & Y
Es la función lógica and.
· IF
Esta instrucción nos permite comparar valores de una variable y tomar ciertas medidas en caso de que se cumpla o no dicha comparación.
DIAGRAMA DE FLUJO
CÓDIGO
SIMULACIÓN EN PROTEUS
ARMADO EN PROTOBOARD
CONCLUSIONES:
Chávez Cantoriano Jorge Luis
Esquivel González César Antar
En ésta práctica cabe recalcar que parte fundamental es el correcto desarrollo del algoritmo ya que es el medio por el cual nos iremos guiando para realizar nuestra programación, algo a remarcar es el uso del registro STATUS para la elaboración en PIC ya que por medio de bits de este registro es por el cual podremos irnos percatando de cuándo debe encender cada led del comparador que nos indicará si la operación fue cero o en caso de haber un resultado, poder comprender cuál de los datos de entrada era el mayor.
Lara Tufiño Erandi Aleli
Para la realización de esta práctica fue muy importante entender la sintaxis de cada una de las instrucciones y tener muy en cuenta que bits eran afectados en el STATUS ya que de estos dependía nuestra comparación. Le prestamos mucha atención al acomodo de nuestras instrucciones ya que requerían un orden riguroso en el programa, tuvimos el resultado esperado gracias a que prestamos atención a cada uno de los detalles. Es bueno realizar este tipo de circuitos ya que aprendes nuevas instrucciones y vas comprendiendo mucho mejor como debe de ir el código dependiendo de las necesidades de la aplicación.

Continuar navegando