Tema: Lazos y Control de Flujo en HC12.

Anuncio
Microprocesadores. Guía 2
1
Facultad: Ingeniería.
Escuela: Electrónica.
Asignatura: Microprocesadores.
Lugar de ejecución: Laboratorio de
Microprocesadores (Edificio 3, 2a planta).
Tema: Lazos y Control de Flujo en HC12.
Objetivos generales

Analizar las instrucciones de lazo en programas que requieren rutinas repetitivas.
Objetivos específicos
Que el estudiante:
 Analice el uso de algunas instrucciones de control de flujo, haciendo énfasis en las
condiciones (estado de las banderas) que se necesitan para realizar o no el salto.
 Aplique algunas instrucciones de control de flujo en la resolución de problemas
simples como la realización de un lazo repetitivo y la comparación entre dos datos.
 Analizar el concepto de dato “ascii”
Introducción teórica
Instrucciones de bifurcación
Las instrucciones de bifurcación causan que exista un cambio en la secuencia cuando
existan condiciones específicas. El CPU12 usa tres clase de instrucciones de bifurcación,
ellas son: saltos cortos, saltos largos y saltos con una condición de bit.
Las instrucciones de bifurcación también pueden ser clasificadas por el tipo de condición que
debe ser satisfecha para que se dé un salto. Algunas instrucciones pertenecen a más de una
clasificación.
Instrucciones de salto unarios siempre se ejecutan.
Los saltos simples son realizados cuando un bit específico en el registro de condición
de código (CCR) está en un estado específico como resultado de una operación
previa.
Los Saltos sin signo se realizan cuando una comparación o prueba de cantidades sin
signo resultan en una combinación específica de bits en el registro de condición de
código (CCR).
2
Microprocesadores. Guía 2
Los saltos signados se dan cuando la comparación o prueba de cantidades con signo
resultan en una combinación específica de los bits del registro de condición de código.
Instrucciones de salto corto
Las instrucciones de salto corto operan de la siguiente manera. Cuando una condición
específica es cumplida, un valor de desplazamiento con signo de 8 bits es sumado al valor
del contador de programa. La ejecución del programa continúa en la nueva dirección.
El rango numérico del desplazamiento del salto corto es desde $80 (-128) hasta $7F(127)
desde la dirección de la siguiente localidad de memoria después del valor de
desplazamiento.
La Tabla 1 es un sumario de las instrucciones de salto corto.
Tabla 1. Instrucciones de salto corto
Instrucciones de salto largo
Las instrucciones de salto largo operan de la siguiente manera. Cuando una condición
Microprocesadores. Guía 2
1
específica es cumplida, un valor de desplazamiento con signo de 16 bits es sumado al valor
en el contador de programa. La ejecución del programa continúa en la nueva dirección.
Los saltos largos son usados cuando se dan desplazamientos grandes entre pasos de marca
de decisión son necesarios.
El rango numérico del valor de desplazamiento de salto largo es desde $8000 (-32,768) a
$7FFF (32,767) desde la dirección de la siguiente localidad de memoria después del valor de
desplazamiento. Ello permite bifurcaciones desde cualquier localidad en el estándar de mapa
de direcciones de 64Kbytes hacia cualquier otra localidad en el mapa.
La Tabla 2 es un sumario de las instrucciones de salto largo.
Tabla 2. Instrucciones de salto largo
Instrucciones de salto por condición de bit
Estos saltos son realizados cuando bits en un byte de memoria están en un estado
específico. Un operando de máscara es usado para probar la localidad. Si todos los bits en
4
Microprocesadores. Guía 2
esa localidad que corresponden a unos en la máscara están a uno lógico (BRSET) o en cero
lógico (BRCLR), el lazo se realiza.
El rango numérico del desplazamiento de los saltos por condición de bit es desde $80 (-128)
hasta $7F(127) desde la dirección de la siguiente localidad de memoria después del valor de
desplazamiento.
La Tabla 3 es un sumario de las instrucciones de salto por condición de bit.
Tabla 3. Instrucciones de salto por condición de bit
Instrucciones de lazo primitivas
Los lazos primitivos pueden también ser conocidos como bifurcaciones por contador. Las
instrucciones prueban un valor de contador en un registro o acumulador (A, B, D, X, Y, o SP)
para la condición de salto de cero o diferente de cero. Hay versiones de pre-decremento, preincremento y sólo prueba de estas instrucciones.
El rango numérico del desplazamiento de los lazos con contador es desde $80 (-128) hasta
$7F(127) desde la dirección de la siguiente localidad de memoria después del valor de
desplazamiento
La Tabla 4 es un sumario las instrucciones de lazo primitivas
Tabla 4. Instrucciones de lazo primitivas
Microprocesadores. Guía 2
1
Materiales y equipo
•
•
Computadora con Windows 98 o superior con el software CodeWarrior IDE.
Tabla (set) de instrucciones del microcontrolador HC12.
Procedimiento
PARTE I: Ejemplos de uso de lazos
1. Haga un proyecto nuevo en Code Warrior IDE, y modifíquelo de acuerdo al siguiente
código fuente.
;*****************************************************************
;* This stationery serves as the framework for a
*
;* user application (single file, absolute assembly application) *
;* For a more comprehensive program that
*
;* demonstrates the more advanced functionality of this
*
;* processor, please see the demonstration applications
*
;* located in the examples subdirectory of the
*
;* Freescale CodeWarrior for the HC12 Program directory
*
;*****************************************************************
; export symbols
XDEF Entry, _Startup
ABSENTRY Entry
as application entry point
; export 'Entry' symbol
; for absolute assembly: mark this
; Include derivative-specific definitions
INCLUDE 'derivative.inc'
ROMStart
EQU $4000 ; absolute address to place my code/constant
data
; variable/data section
ORG RAMStart
; Insert here your data definition.
fuente ds.b 5
destino ds.b 5
; code section
ORG
Entry:
ROMStart
6
Microprocesadores. Guía 2
_Startup:
LDS
lazo:
#RAMEnd+1
; initialize the stack pointer
LDX #$0000
LDAA fuente,X
SUBA #$20
STAA destino,X
INCX
CPX #$5
BNE lazo
STOP
;**************************************************************
;*
Interrupt Vectors
*
;**************************************************************
ORG
$FFFE
DC.W Entry
; Reset Vector
Listado 1. Programa de ejemplo saltos
2. Compile el programa
3. En el simulador hay una ventana llamada “DATA”, ahí están los dos arreglos
declarados fuente y destino dé clic en el signo más (+) a la par de fuente y luego doble
clic en la palabra “undefined” en el elemento [0], a continuación escriba 0x61, al dar
enter observe el equivalente mostrado.
4. Haga lo mismo con los elementos [1] al [4] con los siguientes datos respectivos: 0x65,
0x69, 0x6F, 0x75.
5. Comience a ejecutar el programa paso a paso, hasta llegar a CPX, verifique el valor
que está en el arreglo llamado destino dando clic en el signo más (+) a la par de este,
analice con una tabla ASCII el por qué de este resultado.
6. Vea el estado de la memoria en la ventana memory, dando clic derecho en esta
ventana, y seleccionando la opción Address y poniendo en el cuadro de diálogo
0x2000
7. Ejecute la instrucción CPX #$5 y verifique el estado de las banderas en el registro
CCR, anótelo en el siguiente espacio: ______________________________
8. Accione otro paso y verifique qué es lo que hace la instrucción BNE lazo:
______________________________ ¿cuál es el estado del IP?
9. Continúe ejecutando el programa observando el valor del registro X, hágalo hasta que
llegue al valor de 5 y llegue hasta CPX #$5 después de correr esta instrucción anote el
estado de las banderas en CCR: _________________________________________
10. Ahora ejecute la instrucción BNE lazo ¿Hizo lo mismo que las veces anteriores? ¿Cuál
es el estado del IP? ______________________________________
11. Pruebe las condiciones para los demás saltos usando operaciones aritméticas para
accionar las banderas.
Microprocesadores. Guía 2
1
Problemas de aplicación:
Haga un programa que a un vector de 10 datos numéricos de 0 a 9 cada dato en el
vector se le sume el valor de $30 y se guarde en otro vector resultado.
Haga un programa que sume 5 bytes en memoria y presente su resultado en la memoria
(utilice el acarreo y lazos), pruebe su programa con dos operandos de $FFFFFFFFFF.
Bibliografía
J. C. Vega Ferreira y otros “Microcontroladores Motorola-Freescale: programación,
familias y sus distintas aplicaciones en la industria”, Alfaomega 20081.
• MOTOROLA “CPU12 Reference Manual”
• Ayuda de programa CodeWarrior IDE.
•
8
Microprocesadores. Guía 2
Hoja de cotejo: 2
Guía 2: Uso de la herramienta de desarrollo y los modos de direccionamiento del HC12.
Alumno:
Maquina No:
Docente:
GL:
Fecha:
EVALUACION
%
1-4
5-7
8-10
CONOCIMIENTO
25%
Conocimiento
deficiente de los
fundamentos
teóricos
Conocimiento y
explicación
incompleta de los
fundamentos
teóricos
Conocimiento
completo y
explicación clara
de los fundamentos
teóricos
APLICACIÓN
DEL
CONOCIMIENTO
70%
No termina el
procedimiento
planteado en la
guía 10%
Termina el
procedimiento con
bastante
asistencia 10%
Termina el
procedimiento de
forma
independiente 10%
No modifica el
programa 30%
Modifica el
programa no
interpreta
correctamente los
resultados 30%
Modifica el
programa
interpretando
correctamente sus
resultados 30%
Sus respuestas son
incompletas 30%
Sus respuestas son
correctas y
completas 30%
No responde a
preguntas de
retroalimentación
30%
ACTITUD
TOTAL
2.5%
Es un observador
pasivo.
Participa
ocasionalmente o
lo hace
constantemente
pero sin
coordinarse con su
compañero.
Participa
propositiva e
integralmente en
toda la práctica.
2.5%
Es ordenado; pero
no hace un uso
adecuado de los
recursos
Hace un uso
adecuado de los
recursos, respeta
las pautas de
seguridad; pero es
desordenado.
Hace un manejo
responsable y
adecuado de los
recursos conforme
a pautas de
seguridad e
higiene.
100%
Nota
Descargar