ejercicios 02 tablas

Upload: carlos-pillajo

Post on 02-Jun-2018

242 views

Category:

Documents


1 download

TRANSCRIPT

  • 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