práctica nº5 - Escuela Politécnica Nacional

Anuncio
LABORATORIO DE SISTEMAS MICROPROCESADOS
ESCUELA POLITÉCNICA NACIONAL
Campus Politécnico "J. Rubén Orellana R."
FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
Carrera de Ingeniería Electrónica y Control
Carrera de Ingeniería Electrónica y Telecomunicaciones
Carrera de Ingeniería Electrónica y Redes de Información
Carrera de Ingeniería Eléctrica
LABORATORIO DE SISTEMAS MICROPROCESADOS
PRÁCTICA Nº5
1. TEMA :
INSTRUCCIONES DE SALTO, LAZOS DE REPETICIÓN Y CREACIÓN DE TABLAS DE DATOS EN
LA FLASH.
2. OBJETIVO:
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.
3. INFORMACIÓN
Muchos de los algoritmos en un sistema microprocesado son repetitivos, por lo que es
necesario crear las estructura de control para tal fin.
SALTOS:
SALTOS INCONDICIONALES (Sin condicion):
Si el conjunto de instrucciones se deben repetir incondicionalmente se pueden usar las
instrucciones RJMP k (salto relativo, donde k está en complemento a 2 y es el
número de líneas que debe saltar hacia adelante o hacia atrás ), ó JMP k (salto
absoluto, donde k es cualquier dirección en la zona de programa del micro). Una forma
más fácil de especificar a dónde deben ir los saltos es dejar una etiqueta y en lugar de
especificar k como un número se pone el nombre de la etiqueta a donde se va a saltar.
Un esquema general del código sería el siguiente:
lazo:
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
.....
… (aquí va el código)…
.....
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 instrucciones 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 se
prueban las banderas, normalmente se hace una operación previa la condicional
para que las banderas se actualicen.
MANERA DE DETERMINAR DESIGUALDADES ENTRE DATOS. Muchas veces es
necesario tomar alguna acción dependiendo si un registro es mayor, 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 (comparar; 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 se salto condicional. En
este caso particular se verifica la bandera Z para igualdad, y la bandera C para
desigualdad.
Para determinar igualdad, se puede usar la bandera Z se pone a uno lógico si la última
operación realizada dio como resultado cero, si el resultado fue diferente de cero la
bandera Z se pone a cero lógico.
Si se desea determinar si un número es mayor que otro, se usa la bandera C. Por
ejemplo para saber si el número almacenado en R16 es mayor o igual que el número que
está en R17 puedo hacer lo siguiente:
CP R16,R17 ( también podría hacer SUB R16,R17) Si R16 es mayor o igual a R17
(resultado de la resta positivo o cero) la bandera de CARRY en el SREG se pone a 0L,
pero si R16 es menor que R17 esa bandera se pone a 1L (resultado negativo).
Para completar las comparaciones se pueden usar las instrucciones de salto
condicional como:
BREQ k Salta si Z=1 (si el resultado de la última operación fue cero, caso contrario
continúa con la siguiente instrucción)
BRNE k Salta si Z=0 (si el resultado de la última operación fue diferente de cero, caso
contrario continúa con la siguiente instrucción)
BRCS k ó BRLO k Salta si C=1 (si el resultado de la última operación fue negativo)
BRCC k ó BRSH k Salta si C=0 (si el resultado de la última operación fue positivo ó cero)
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
No conviene usar las instrucciones BRMI , BRPL, BRGE, BRLT con números en binario, pues
éstas están destinadas a ser usadas con números expresados en complemento a 2.
Un ejemplo de uso de estas instrucciones a continuación:
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.
Ejemplo:
…….
…….
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í.
…….
Pueden usarse las siguientes instrucciones:
SBRC Rr,b ( Saltarse la siguiente instrucción si bit b del registro Rr esta en 0L)
SBRS Rr,b ( Saltarse la siguiente instrucción si bit b del registro Rr esta en 1L)
SBIC A,b ( Saltarse la siguiente instrucción si bit b del registro de entrada/salida A esta en
0L)
SBIS A,b ( Saltarse la siguiente instrucción si bit b del registro de entrada/salida A esta en
1L).
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
RESERVAR ESPACIOS DE MEMORIA EN LA SRAM, y USO DE LA SRAM
Si se desea usar la SRAM para almacenar información, una forma adecuada se muestra en
el siguiente pedazo de código:
.include "m164pdef.inc"
.def tempo=R16
......
.DSEG
PUNTAJE1: .byte 1
;Se deja un byte de espacio reservado, asignado a este nombre
RESULTADO: .byte 4 ;Se dejan 4 bytes de espacio reservado, asignado a este nombre
GANADOR: .byte 24 ;Se dejan 24 bytes de espacio reservado, asignado a este nombre
.CSEG
.ORG 0X0
;Aquí inicia el programa
.......
.......
ldi xh,high(GANADOR) ;El puntero X va a apuntar a la primera localidad de las 24
reservadas a ;este nombre, los punteros
ldi xl,low(GANADOR) ;son de 16 bits, por eso se deben cargar 8 bits a la vez. LOW indica
que ;se toman los 8 bits menos significativos, y HIGH indica que se tomen los ;8 bits más
significativos.
ldi yh,high(RESULTADO) ;El puntero y va a apuntar a la primera localidad de las 4
reservadas a ;este nombre, los punteros
ldi yl,low(RESULTADO) ;son de 16 bits, por eso se deben cargar 8 bits a la vez. LOW indica
que ;se toman los 8 bits menos significativos, y HIGH indica que se tomen ;los 8 bits más
significativos.
.......
.......
ldi tempo,’a’ ;Cargo en tempo (R16) el valor ASCII que corresponde a ‘a’
st x+,tempo
;Almaceno el valor que está en tempo (R16) a la primera localidad
;reservada para GANADOR,y el punero X se incrementa y apunta al ;siguiente espacio
reservado para GANADOR.
.......
.......
lds R0,PUNTAJE1
;Carga en R0 el valor almacenado en el espacio de SRAM asignado
a ;PUNTAJE1
.......
.......
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 de
pedazos de código:
…….
…….
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
ldi zh,high(Mensaje1<<1)
;Al usar la instrucción LPM, se usa el puntero Zl
;los bits del 15 al 1 indican la dirección
ldi zl,low(Mensaje1<<1)
;por eso se desplaza una posición a la izquierda con el
operador ;>>1 ( que es igual a mu ltiplicar por 2) luego de esta instrucción ;el puntero Z
apunta al primer elemento de la tabla Mensaje1, ;que en este caso es la primera letra que
corresponde a la "E"
lpm R0,Z+
; R0 recibe el ASCII de la letra E, y el puntero ahora apunta al ;siguiente
elemento, en este caso la letra "s"
lpm R1,Z+
; R1 recibe el ASCII de la letra s , y el puntero ;ahora apunta al siguiente
elemento, en este caso la letra "t"
…….
…….
…….
Tabla1: .db 10,14,35,22
;Creo una tabla llamaba "Tabla1" en la FLASH, esta tabla
se pone ;a continuación del programa que le antecede la forma de crear ;una tabla en
flash con textos se muestra con un ejemplo:
Mensaje1: .db “Este es un mensaje alfanumérico”
Mensaje2: .db “Otro mensaje alfanumérico”
4. TRABAJO PREPARATORIO
4.1 Revisar el conjunto de instrucciones para los microcontroladores AVR de 8 bits, en
particular los saltos incondicionales y condicionales.
4.2 Hacer un resumen de las directivas del ASSEMBLER que crean tablas de datos en la
memoria de programa.
4.3 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, ó si el uno es mayor o menor que el otro. Anotar sus conclusiones.
4.4 Escribir el siguiente programa:
En la memoria SRAM se deben reservar cuatro espacios de memoria de acuerdo al
siguiente detalle: Tres localidades de 1 byte cada una a los que se les asigna los
nombres ACTUAL, TMAX y TMIN, y se debe reservar un espacio adicional llamado
MENSAJE de 42 bytes para copiar uno de los mensajes que se indicará a continuación
correspondiente a todas las letras del texto más extenso incluidos los espacios en blanco.
Escribir un programa que copie el contenido de las localidades de SRAM : ACTUAL, TMAX
y TMIN a tres registros diferentes. Luego debe proceder a comparar estos registros, de
forma que se determine si el valor de ACTUAL está sobre TMAX, bajo TMIN ó entre esos
dos valores. De acuerdo al resultado de la acción anterior se debe copiar hacia el espacio
MENSAJE dejado en SRAM uno de los textos que se crearon como tablas en la memoria
FLASH, de acuerdo al siguiente detalle:
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
LABORATORIO DE SISTEMAS MICROPROCESADOS
Si el contenido de ACTUAL es igual o mayor que el de TMAX, el texto a copiar es el Nº 1.
Si el contenido de ACTUAL es menor o igual que el de TMIN, el texto a copiar es el Nº 3.
Si el contenido de ACTUAL está entre TMAX y TMIN el texto a copiar es el Nº 2
(Recordar que se asume que siempre los tres valores de ACTUAL, TMAX y TMIN van a ser
diferentes)
Los textos a los que se hace mención deben ser creados como tablas en la memoria FLASH
luego de la última instrucción de su programa. Los textos son los siguientes, y todos deben
tener la misma longitud de 42 caracteres. Si el mensaje es más corto se deben poner
espacios en blanco al final:
texto1: "LA TEMPERATURA ESTA SOBRE EL VALOR MAXIMO "
texto2: "LA TEMPERATURA ESTA EN EL RANGO CORRECTO "
texto3: "LA TEMPERATURA ESTA BAJO EL VALOR MINIMO "
5. EQUIPO Y MATERIALES
Computador con Atmel Studio y Proteus
6. PROCEDIMIENTO
6.1 Probar el programa, y
TMIN que el instructor
comprobar, mediante el
diferentes contenidos de
límites.
para los valores de las etiquetas MENSAJE, ACTUAL, TMAX y
asigne a cada grupo, obtener el código de máquina. Y
simulador del AVR Studio, la ejecución del programa con
las localidades que se comparan; en especial con valores
7. INFORME:
7.1 Realizar Presentar los resultados de las comprobaciones mediante capturas de
pantallas.
7.2 Escribir los cambios que se debe realizar en el programa, si los números que se
comparan son de más de 8 bits.
7.3 Presentar adicionalmente lo que el instructor solicite.
Responsables.
Ing. Jhon Pilataxi
Dirección: Ladrón de Guevara E11-253
Teléfono: (02) 2976300 Ext.2209
Quito - Ecuador
Correo: [email protected]
Descargar