Download - Ejercicios 02 Tablas
-
8/10/2019 Ejercicios 02 Tablas
1/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 1
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
EJERCICIO PARA LLENAR LOCALIDADES DELA SRAM, MEDIANTE TABLAS QUE SE CREAN
EN LA MEMORIA DEL PROGRAMAENUNCIADO:Desarrollar un programa que permita llenar las primeras localidades de la SRAM conlos cdigos ASCII correspondiente a las letras del siguiente texto:
ESCUELA POLITECNICA NACIONAL
-
8/10/2019 Ejercicios 02 Tablas
2/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 2
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
PRIMERA SOLUCINEsta solucin implica que el programa genere los cdigos ASCII del texto, mediante eldireccionamiento inmediato y luego almacene en la SRAM mediante direccionamientoindirecto con post incremento. Para implementar el programa, el Puntero X (registros
R26 y R27) es inicializado con la primera direccin de la SRAM, a la que se la etiquetacomo DATOS. Y el registro R16 se lo utiliza para generar los cdigos, al que se loetiqueta como AUX.
.NOLIST
.INCLUDE m164pdef.inc
.LIST;.EQU NCOD = 28.DEF AUX = R16;
.DSEGDATOS: .BYTE NCOD;.CSEG
LDI XL,LOW(DATOS)LDI XH,HIGH(DATOS)LDI AUX,'E'ST X+,AUXLDI AUX,'S'ST X+,AUXLDI AUX,'C'ST X+,AUXLDI AUX,'U'ST X+,AUXLDI AUX,'E'ST X+,AUXLDI AUX,'L'ST X+,AUXLDI AUX,'A'ST X+,AUXLDI AUX,' 'ST X+,AUXLDI AUX,'P'ST X+,AUXLDI AUX,'O'ST X+,AUXLDI AUX,'L'ST X+,AUXLDI AUX,'I'ST X+,AUXLDI AUX,'T'ST X+,AUX
LDI AUX,'E'ST X+,AUX
-
8/10/2019 Ejercicios 02 Tablas
3/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 3
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
LDI AUX,'C'ST X+,AUXLDI AUX,'N'ST X+,AUXLDI AUX,'I'
ST X+,AUXLDI AUX,'C'ST X+,AUXLDI AUX,'A'ST X+,AUXLDI AUX,' 'ST X+,AUXLDI AUX,'N'ST X+,AUXLDI AUX,'A'ST X+,AUXLDI AUX,'C'ST X+,AUXLDI AUX,'I'ST X+,AUXLDI AUX,'O'ST X+,AUXLDI AUX,'N'ST X+,AUXLDI AUX,'A'ST X+,AUXLDI AUX,'L'ST X+,AUX
;FIN: RJMP FIN;.EXIT ; FIN DEL MODULO FUENTE
VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DELPROGRAMA EN EL SIMULADOR
28 Localidades ue se llenan
-
8/10/2019 Ejercicios 02 Tablas
4/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 4
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
SEGUNDA SOLUCINComo se puede apreciar la primera solucin no es una solucin eficiente. Lo que lleva aldesarrollo de la segunda solucin, que consiste en un lazo de repeticin donde elprograma no es el que genera los cdigos, sino que los lee desde la memoria del
programa y los almacena en la SRAM.Al implementar el algoritmo de esta solucin, se utiliza al Puntero X para almacenar loscdigos en la SRAM y al Puntero Z (registros R30 y R31) para leerlos desde lamemoria del programa. La inicializacin de este ltimo puntero debe considerar que loscontenidos de la memoria del programa son de 16 bits, es decir que contienen doscdigos en cada localidad, uno en el byte par y otro en el bytes impar.
El registro R16 se lo utiliza para la transferencia del cdigo ASCII de la memoria delprograma hacia la SRAM y R17 es el contador para controlar el lazo de repeticin; espor eso, que se los etiqueta como AUX y CONTADOR.
La tabla de cdigos ASCII se crea en la memoria del programa utilizando en el MduloFuente laDirectiva .DB que Define Bytes Constantes que ocupan localidades de la
Byte ParByte Impar
-
8/10/2019 Ejercicios 02 Tablas
5/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 5
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
FLASH o de la EEPROM. Adems, a la primera lnea de estas directivas se la etiquetapara que el Assembler la utilice como la direccin de inicio de la tabla cuando inicialiceel Puntero Z.
.NOLIST
.INCLUDE m164pdef.inc.LIST;.EQU NCOD = 28.DEF AUX = R16.DEF CONTADOR = R17;.DSEGDATOS: .BYTE NCOD;.CSEG
LDI XL,LOW(DATOS)LDI XH,HIGH(DATOS)LDI ZL,LOW(TABLA
-
8/10/2019 Ejercicios 02 Tablas
6/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 6
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
.DB 0x43
.DB 0x49
.DB 0x4F
.DB 0x4E
.DB 0x41
.DB 0x4C;.EXIT ; FIN DEL MODULO FUENTE
Para inicializar el Puntero Z se utilizan las instrucciones:
LDI ZL,LOW(TABLA
-
8/10/2019 Ejercicios 02 Tablas
7/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 7
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
Finalmente, el resultado del ensamblado no tiene errores, por lo que si se crea elMdulo Objeto; pero existen 28 mensajes de advertencia (WARNING) en las 28 lneasDB que crean la tabla de datos en la FLASH y que pueden influenciar en el malfuncionamiento del programa. Precisamente ese es el caso, el programa no cumple losolicitado.
VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DE LASEGUNDA SOLUCIN QUE NO CUMPLE CON LO SOLICITADO
Uno de los mensajes de advertencia, similar a los restantes, dice:C:\Users\JVelarde\Documents\ATmega\AVRStudio\Tablas\Tabla02\Tabla02.as
m(26): warning: .cseg .db misalignment - padding zero byte 000050 0045 TABLA: .DB 0x45
Esto significa que con la Directiva DB al crear el byte de la constante lo rellena con unbyte de ceros, para no perder el alineamiento de palabras que tiene la memoria deprograma. Es decir, que no solo se han creado los 28 bytes de los cdigos ASCII sino 28palabras con los cdigos ASCII acompaados de un byte de ceros; tal como se observaen la ventana de la memoria del programa del simulador.
28 Localidades llenas No es lo solicitado
Tabla de 28 palabras
Cdigo de Mquina del Programa
-
8/10/2019 Ejercicios 02 Tablas
8/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 8
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
Grficamente la tabla que se ha creado es:
Para solucionar este inconveniente, es necesario incluir dentro del lazo de repeticin, unincremento adicional del Puntero Z mediante la ejecucin de la lectura del byte imparque no se almacena, como se indica a continuacin:
LAZO: LPM AUX,Z+ST X+,AUXLPM AUX,Z+DEC CONTADORBRNE LAZO
Lectura del byte par
Lectura del byte impar
Byte ParByte Impar
-
8/10/2019 Ejercicios 02 Tablas
9/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 9
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
TERCERA SOLUCINPara no desperdiciar espacios de memoria de programa al crear tablas, se utiliza laDirectiva .DW que Define Word o Palabras Constantes que ocupan localidades de laMemoria del Programa o de la EEPROM, quedando la codificacin de la siguienteforma:.NOLIST.INCLUDE m164pdef.inc.LIST;.EQU NCOD = 28.DEF AUX = R16.DEF CONTADOR = R17;.DSEGDATOS: .BYTE NCOD;.CSEG
LDI XL,LOW(DATOS)LDI XH,HIGH(DATOS)LDI ZL,LOW(TABLA
-
8/10/2019 Ejercicios 02 Tablas
10/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 10
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
y luego el impar; es decir primero se lee el cdigo ASCII de la S y luego el de la E y assucesivamente.
VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DE LATERCERA SOLUCIN QUE NO CUMPLE CON LO SOLICITADO
La solucin ser intercambiar los bytes en las palabras, como se muestra a continuacin:
TABLA: .DW 0x5345.DW 0x5543.DW 0x4C45.DW 0x2041.DW 0x4F51.DW 0x494C.DW 0x4554
.DW 0x4E43.DW 0x4349
.DW 0x2041
.DW 0x414E
.DW 0x4943
.DW 0x4E4F
.DW 0x4C41
Tambin se puede crear la tabla con menos lneas de cdigo, separando las constantespor comas.
TABLA: .DW 0x5345, 0x5543, 0x4C45, 0x2041.DW 0x4F51, 0x494C, 0x4554, 0x4E43, 0x4349, 0x2041.DW 0x414E, 0x4943, 0x4E4F, 0x4C41
Regresando a la segunda solucin, la creacin de la tabla se puede apreciar en formams explcita si se usa los mismos smbolos ASCII entre comillas.
TABLA: .DB E.DB S.DB C.DB U.DB E.DB L.DB A
-
8/10/2019 Ejercicios 02 Tablas
11/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 11
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
.DB
.DB P
.DB O
.DB L
.DB I
.DB T.DB E
.DB C
.DB N
.DB I
.DB C
.DB A
.DB
.DB N
.DB A
.DB C
.DB I.DB O
.DB N
.DB A
.DB L
Pero, se mantienen los mensajes de advertencia ya analizados. Tambin se puededisminuir el nmero de lneas para crear la tabla, donde se mantienen los mensajes deadvertencia en las dos primeras de esas lneas y se elimina en la ltima. Esto se debe, aque la ltima tiene un nmero par de constantes y las otras no.
TABLA: .DB E, S, C, U, E, L, A .DB , P, O, L, I, T, E, C, N, I, C, A, .DB N, A, C, I, O, N, A, L
00000a 534500000b 554300000c 4c45C:\Users\JVelarde\Documents\ATmega\AVRStudio\Tablas\Tabla07\Tabla07.as
m(25): warning: .cseg .db misalignment - padding zero byte00000d 0041 TABLA: .DB "E","S","C","U","E","L","A"00000e 502000000f 4c4f000010 5449000011 4345000012 494e000013 4143C:\Users\JVelarde\Documents\ATmega\AVRStudio\Tablas\Tabla07\Tabla07.as
m(26): warning: .cseg .db misalignment - padding zero byte000014 0020 .DB "
","P","O","L","I","T","E","C","N","I","C","A"," "000015 414e000016 4943000017 4e4f000018 4c41 .DB "N","A","C","I","O","N","A","L"
Por eso, se debe tener cuidado de crear tablas de bytes en un nmero par de constantes,para evitar que se rellenen con bytes de ceros debido al alineamiento.
-
8/10/2019 Ejercicios 02 Tablas
12/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 12
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
TABLA: .DB E, S, C, U, E, L, A, .DB P, O, L, I, T, E, C, N, I, C, A, .DB N, A, C, I, O, N, A, L
Tambin se puede agrupar los caracteres dentro de las comillas y mejorar la
presentacin.TABLA: .DB ESCUELA
.DB POLITECNICA
.DB NACIONAL00000a 534500000b 554300000c 4c4500000d 2041 TABLA: .DB "ESCUELA "00000e 4f5000000f 494c000010 4554
000011 4e43000012 4349000013 2041 .DB "POLITECNICA "000014 414e000015 4943000016 4e4f000017 4c41 .DB "NACIONAL"
Por ltimo, para este caso se puede tener una solo lnea con la que se crea toda la tabla.
TABLA: .DB ESCUELA POLITECNICA NACIONAL00000a 534500000b 554300000c 4c4500000d 204100000e 4f5000000f 494c000010 4554000011 4e43000012 4349000013 2041000014 414e000015 4943000016 4e4f000017 4c41 TABLA: .DB "ESCUELA POLITECNICA NACIONAL"
nicamente cambiando la lnea que contiene el texto en comillas y el valor inicial delcontador, este mdulo fuente sirve para llenar las primeras localidades de la SRAM conlos cdigos ASCII del texto:
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS
.NOLIST
.INCLUDE m164pdef.inc
.LIST;
.EQU NCOD = 47.DEF AUX = R16
Valor inicial del contador
-
8/10/2019 Ejercicios 02 Tablas
13/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 13
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
.DEF CONTADOR = R17;.DSEGDATOS: .BYTE NCOD;
.CSEG LDI XL,LOW(DATOS)LDI XH,HIGH(DATOS)LDI ZL,LOW(TABLA
-
8/10/2019 Ejercicios 02 Tablas
14/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 14
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
.EQU NCOD = (FINTBL TABLA) * 2
.DEF AUX = R16
.DEF CONTADOR = R17;.DSEG
DATOS: .BYTE NCOD;.CSEG
LDI XL,LOW(DATOS)LDI XH,HIGH(DATOS)LDI ZL,LOW(TABLA
-
8/10/2019 Ejercicios 02 Tablas
15/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 15
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
carcter especial que se ubica al final del texto. El carcter especial escogido para esteejemplo es el smbolo $.
.NOLIST
.INCLUDE m164pdef.inc
.LIST;
.DEF AUX = R16;.DSEGDATOS: .BYTE 100;.CSEG
LDI XL,LOW(DATOS)LDI XH,HIGH(DATOS)LDI ZL,LOW(TABLA
-
8/10/2019 Ejercicios 02 Tablas
16/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 16
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
.CSEGLDI XL,LOW(DATOS1)LDI XH,HIGH(DATOS1)LDI ZL,LOW(TBL1
-
8/10/2019 Ejercicios 02 Tablas
17/18
SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASHPgina 17
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DELPROGRAMA QUE CREA TRES TABLAS DE DATOS
Tambin se puede codificar este programa utilizando macroinstrucciones y subrutinas.
.NOLIST
.INCLUDE m164pdef.inc
.LIST;.DEF AUX = R16.DEF CONTADOR = R17;.CSEG.MACRO INICIAR
LDI XL,LOW(@0)LDI XH,HIGH(@0)LDI ZL,LOW(@1
-
8/10/2019 Ejercicios 02 Tablas
18/18