Você está na página 1de 3

PR Á C T I C A No.

5
L A B O R A T O R I O D E SIST E M AS M I C R O PR O C ESA D OS
Instrucciones de salto, lazos de repetición y creación de tablas de datos en la F L ASH

N O T A I MPORT A N T E : Para la práctica siguiente (la número 6) los estudiantes


deben traer al menos un microcontrolador y adquirir un programador por grupo,
también necesitarán protoboard, resistencias, diodos, interruptores, pulsantes,
display de 7 segmentos, etc.

1. O BJ E T I V O :
Desarrollar programas para resolver problemas utilizando lazos de repetición, tomando
en cuenta que se producen casos diferentes; por lo que se recurre al uso de instrucciones
que producen bifurcaciones en el programa.

2. I N F O R M A C I Ó N G E N E R A L
Muchos de los algoritmos en un sistema microprocesado son repetitivos, por lo que es
necesario crear las estructura de control para tal fin.

SALTOS INCONDICIONALES: Si el conjunto de instrucciones se deben repetir


incondicionalmente se pueden usar las instrucciones RJMP k (salto relativo), ó JMP k
(salto absoluto). Un esquema general del código sería el siguiente:

lazo:
« DTXtYDHOFyGLJR «
rjmp lazo

SALTOS CONDICIONALES: Si el código debe ejecutarse sólo si se cumple cierta


condición como por ejemplo: si debe repetirse un número determinado de veces, o si un
número es mayor a otro, ó si un registro tiene algún valor, etc. Se deben usar saltos
condicionados. Existen dos maneras de realizar saltos condicionales, la primera es la
ramificación (BRANCH) y la segunda el SKIP.

BRANCH. Con estas instrucciónes solamente se puede probar el estado de una de las
banderas del registro SREG. Si la condición se cumple puede saltar desde 64 posiciones
hacia atrás hasta 63 posiciones delante de la línea donde está la instrucción de salto
condicional. Si la condición no se cumple, continúa con la siguiente instrucción. Como
lo que se prueban son las banderas, normalmente se hace una operación previa la
condicional para que las banderas se actualicen. Ejemplo: este pedazo de código hace
que el código se repita 10 veces:

ldi r16,10 ; se carga el número de veces a repetir el lazo (10 veces)


lazo:
«..
«..
(aquí va el código)
«..
«..
dec r16 ;se decrementa el contador de iteraciones
brne lazo ;si al decrementar el contador r16 no se llega a cero,
;la bandera Z=0,la condición se cumple y salta a la
;etiqueta lazo. Si r16 llega a cero, Z=1, la condición no se
;cumple y continúa con la siguiente instrucción.

SKIP. Con estas instrucciones solamente se puede probar el estado (si es 1 ó 0) de un bit
dentro de un registro, o del estado de un bit en un registro de entrada/salida. La lógica es
la siguiente: si la condición se cumple se salta la siguiente instrucción (no la ejecuta), y
continúa con la que está después. Si no se cumple , continúa ejecutando normalmente la
siguiente instrucción.

««.
««.
sbrs R17,3 ;saltar si el bit 3 del registro r17 está en 1.
Xxxx ;si el bit probado es cero continúa el programa desde aquí
Yyyy ;si el bit probado es 1 (si se cumple la condición), la
;instrucción anterior no se ejecuta y se continúa desde
;aquí.
««.

MANERA DE DETERMINAR DESIGUALDADES ENTRE DATOS. Muchas veces


es necesario tomar alguna acción dependiendo si un registro es mayo, o igual, o menor a
otro registro. En este caso se puede realizar una resta entre los dos datos, ó para que los
operadores no se alteren se puede usar la instrucción CP Rd,Rr que hace una resta,
pero el resultado no lo almacena en ningún lugar, solamente mueve las banderas. Estas
banderas se deben probar con las instrucciones anteriores, y se verifica la bandera Z
para igualdad, y la bandera C para desigualdad.

CREACIÓN DE TABLAS EN MEMORIA FLASH.

La memoria de programa (Memoria FLASH) puede también contener datos, en este


caso esos datos son CONSTANTES. Puede almacenarse información en forma de
tablas. La forma de crear una tabla en flash con datos numéricos se muestra con un
ejemplo:

««.
««. (aquí va el programa)
««.

Tabla1: db 10,14,35,22

La forma de crear una tabla en flash con textos se muestra con un ejemplo:

Mensaje1: db ³Este es un mensaje alfanumérico´

2. PR E PA R A T O R I O
o Revisar el conjunto de instrucciones para los microcontroladores AVR de
8 bits, en particular los saltos incondicionales y condicionados.
o Hacer un resumen de las directivas del ASSEMBLER que crean tablas de
datos en la memoria de programa.
o Realizar un pequeño programa que realice la comparación entre dos
registros, y determine qué valor toman las banderas Z y C dependiendo si
los registros son iguales, ó desiguales.
o Escribir el programa que se indica más abajo, y luego de la última
instrucción crear tres tablas diferentes con los siguientes mensajes, que
deben tener todos la misma longitud, es decir para los mensajes más cortos
rellenar al final con espacios en blanco:

LA TEMPERATURA ESTA SOBRE EL VALOR MAXIMO


LA TEMPERATURA ESTA EN EL RANGO CORRECTO
LA TEMPERATURA ESTA BAJO EL VALOR MINIMO

En la memoria SRAM se deben reservar tres localidades a los que se les


asigna los nombres ACTUAL, MAX y MIN., y se debe reservar un
espacio para copiar uno de los mensajes creados en la FLASH
(denominarlo MENSAJE).

Escribir un programa que copie las localidades ACTUAL, MAX y MIN a


registros, y realice las comparaciones entre ellos y copie el mensaje desde
la FLASH a SRAM (a la dirección de MENSAJE) usando
direccionamiento indirecto con punteros de acuerdo a:

Si el contenido de ACTUAL es mayor que el de MAX, el texto a copiar es


el Nº 1,
Si el contenido de ACTUAL es menor que el de MIN, el texto a copiar es
el Nº 3, y
Si el contenido de ACTUAL es igual o menor que el de MAX, pero mayor
o igual que el de MIN el texto a copiar es el Nº 2

3. PA R T E PR Á C T I C A

Probar el programa ,y para los valores de las etiquetas MENSAJE, ACTUAL, MAX y
MIN que el instructor asigne a cada grupo, obtener el código de máquina. Y comprobar,
mediante el simulador del AVR Studio 4, la ejecución del programa con diferentes
contenidos de las localidades que se comparan; en especial con valores límites.

4. I N F O R M E
o Presentar los resultados de las comprobaciones mediante capturas de pantallas.
o Explicar las restricciones que tiene el programa y la forma en que se puede
mejorar.
o Escribir los cambios que se debe realizar en el programa, si los números que se
comparan son de más de 8 bits.

Você também pode gostar