Autor Tema: USAR TABLE EM ATMEGA88  (Leído 3497 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sony

  • PIC10
  • *
  • Mensajes: 23
USAR TABLE EM ATMEGA88
« en: 22 de Enero de 2008, 12:47:40 »
ola alguêm me podia dar uma ajuda, em como usar uma table (dw) no atmega, algum exenplo,obrigado desde já

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: USAR TABLE EM ATMEGA88
« Respuesta #1 en: 22 de Enero de 2008, 13:58:52 »
Hola Sony!
especifica bien tu pregunta!
ya que para Atmega hay muchas variantes
un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: USAR TABLE EM ATMEGA88
« Respuesta #2 en: 22 de Enero de 2008, 14:51:23 »
Hola!

Parece que sí está siendo específico, necesita el código ensamblador de algún ejemplo en el que se use una tabla con la instrucción .dw, para el ATMEGA88.  :mrgreen:

Desconectado sony

  • PIC10
  • *
  • Mensajes: 23
Re: USAR TABLE EM ATMEGA88
« Respuesta #3 en: 22 de Enero de 2008, 18:22:22 »
sim o codigo seria para o atmega88, mas se for para outro microcontrolador da atmel tanbêm vale, queria entendêr como isso funciona, eu trabalho em  assembly.

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: USAR TABLE EM ATMEGA88
« Respuesta #4 en: 25 de Enero de 2008, 18:01:33 »
Código: [Seleccionar]
ola alguêm me podia dar uma ajuda, em como usar uma table (dw) no atmega, algum exenplo,obrigado desde já
Hola Sony Trataré De Ayudarte en lo poquito que pueda
aqui te pongo el significado de lo que significa .DB y .DW
Tambien Te pongo Un Ejemplo Asm Hecho con El AvrStudio Para El Atmega88 Y Su Simulacion
Si Quieres Ver Su Simulacion En Avi te Lo E Subido A Esta Pagina Para Que Lo Puedas Ver Mejor

 http://rapidshare.com/files/86569674/Simulacion_En_AvrStudio.avi.html

.DB

Reserva espacio en la memoria de programa o en la memoria eeprom para contener una constante.
Debe estar precedida por una etiqueta que fijará el nombre de la constante.
Esta directiva puede tomar como parámetros un valor o una lista de valores que se colocaran
uno a continuación de otro, separados por coma ( , ). Cada valor debe ser un byte expresado
en cualquier notación (decimal, hexadecimal o binario).
Solo se puede colocar esta directiva en el segmento de código (CSEG) o en el de eeprom (ESEG).

Ejemplos:
.CSEG
claves: .DB 12, 0xEF, 8, 0b01100011, -23, 33
.ESEG
valor: .DB 0xFD


.DW
Directiva similar a .DB pero que reserva 2 bytes o múltiplo de 2 bytes.

Código: [Seleccionar]
;------------------------------------------------------
; FICHERO: ejercicios.asm
;
;------------------------------------------------------
; Declaraciones estandar para este micro Atmega88:
.include "m88def.inc"
;-----------------------------------------------------------
; Definicion de constantes y variables
; --------------------------------------------------------
; Pila
  .equ          PILA                   =0x0FF

;-----------------------------------------------------           
.DSEG       
; MEMORIA RAM       
    .ORG                (PILA+1)

;----------------------------------------------------
;            Vectores de interrupcion
;----------------------------------------------------           
.CSEG       
    .ORG     0x0000         
rjmp        RESET                        ; RESET
; --------------------------------------------------------
;                       RUTINA DE RESET
; --------------------------------------------------------
RESET:  cli
        ldi        r16,HIGH ( PILA )         
out        SPH,r16         
ldi        r16,LOW (PILA )                         
out        SPL,r16         

;*******DESDE AQUÍ VUESTRO CODIGO*****
;-------------------------------------------------------------------------------------------------------------------
; Llamada de la function
;-------------------------------------------------------------------------------------------------------------------

ldi Zh,High(Tabla*2);Inicio Puntero Msb ( La Multiplicacion Es Obligatorio Para Alinear La Direccion Sobre 16 Bits )
ldi Zl,Low(Tabla*2) ;Inicio Puntero Lsb ( Debido A La Estructura De La Memoria Interna )
;-------------------------------------------------------------------------------------------------------------------
; Envio De Una Cadena A La Ram Desde La Memoria Flash
;-------------------------------------------------------------------------------------------------------------------

clr r18
ldi r18,0x10  ; Contador

ldi  YL, 0x60 ; Posiciono r28 En La Direcion $60 De La Ram

Lectura:
lpm          ;Lectura En Flash Por Zh / Zl
mov r16,r0   ;Lo Transfiero En Un Registro Temporal
st  Y+, r16  ;Guardalo En La Memoria E Incremento Y Para Que Apunte Al Siguiente

 
EscribirEEprom:
 
 sbic   Eecr, 1        ;Continua Si La Escritura De La EEPROM esta Lista
 rjmp   EscribirEEprom ;Salta Si No Esta Lista
 out    Eearl, zl      ;Apunta La Direccion Donde Vamos Escribir
 out    Eedr, r16      ;Escribe El Dato A La EEPROM
 sbi    Eecr, 2        ;Mete a 1 el Bit EEMWE(Bit 2 )
 sbi    Eecr, 1        ;Mete à 1 el bit EEWE Salida de Escritura En La EEPROM Con ( Bit 1 )
 inc    zl             ;Pasate Al Proximo Byte En EEPROM

 dec r18
 cpi r18,0x00
 breq stop ;Salta Si La Bandera Z es 1
 rjmp Lectura

;****HASTA AQUÍ VUESTRO CODIGO********

STOP:        rjmp        STOP   ;FIN DEL PROGRAMA

.CSEG 
.ORG 0x0500
Tabla:
.DW 0x1122,0x3344,0x5566,0x7788,0x99AA,0xBBCC,0x5478,0x2600




Desconectado sony

  • PIC10
  • *
  • Mensajes: 23
Re: USAR TABLE EM ATMEGA88
« Respuesta #5 en: 25 de Enero de 2008, 21:55:01 »
ola Belgitaes muito obrigado pelo exenplo,já deu para entender como funciona,sem querêr abusar queria-te pedir mais uma ajuda,tênho este codigo que recebe comandos pela porta rs232 e guardaos na ram,depois lê os comandos da ram e executaos até au fim,acendendo os lédes na placa que eu construi.só que o problêma é que no AVR STUDIO funciona bêm,mas gravando o hex no atmega88 não funciona.queria-te pedir se me sabes dizêr porque não funciona no atmega. desde já o meu obrigado pela tua disponibilidade.
« Última modificación: 25 de Enero de 2008, 22:09:28 por sony »