Assembler AVR Attiny 2313

Buenas gente estoy tratando de guardar 5 bytes en la memoria no volatil del integrado
y tengo que poder leerlas despues

Pero no puedo hacer andar las rutinas en_byte y Leo_byte

Si alguno tiene alguna rutina para dicha tarea que este Funcionando.
O en su defecto que me de una manito para poder hacerla andar seria de mucha ayuda

las rutinas estan puestas dentro de un bucle

LDI R17,$05
bucles:
LD R16,X+
RCALL en_byte
DEC R17
BRNE bucles
 
Para escribir en la EEPROM, podés usar esta rutina que te dá la hoja de datos del uC:

Código:
EEPROM_write:
  ; Wait for completion of previous write
  sbic EECR,EEPE
  rjmp EEPROM_write
  
  ; Set up address (r17) in address register
  out EEAR, r17
  ; Write data (r16) to data register
  out EEDR,r16
  
  ; Write logical one to EEMPE
  sbi EECR,EEMPE
  ; Start eeprom write by setting EEPE
  sbi EECR,EEPE
ret

Desde tú código simplemente tenés que hacer esto:

Código:
LOOP_PRINCIPAL:
   ;.... Código
   ldi r17, 10  ;Dirección 10 (decimal, o 0x0A hexa) de la memoria EEPROM
   ldi r16,  128 ;Dato a guardar => 128
   rcall EEPROM_write

De esta forma, almacenás el valor 128 decimal en la posición de memoria 10 decimal de la EEPROM.
 
Atrás
Arriba