Pilnie poszukuje rady w sprawie zapisu do pamięci eeprom. Mam program który wcześniej zapisywał do pamięci ram a teraz ma do eeprom. Czy ktoś jest wstanie poradzić co jest źle
.DSEG ; segment danych
.ORG 0x100 ; od adr. 0x100
wyniki:
.BYTE 100 ; rezerwacaj 100 bajtów
.CSEG ; segment programu
.EQU limit = 100 ; liczmy do 100 (ograniczenie/stała)
.DEF sumaH = R16 ; starszy bajt
.DEF sumaL = R17 ; młodszy bajt
.DEF zero = R22
.DEF licznik = R21 ;licznik do 100
main:
; ustawianie stosu:
ldi r16, high(RAMEND) ; starszy bajt konca RAM
out SPH, r16 ; zapisz starszy bajt SP
ldi r16, low(RAMEND) ; mlodszy bajt konca RAM
out SPL, r16 ; zapisz mlodszy bajt SP
ldi licznik, 1 ; licznik = 1
ldi sumaH, 0 ; suma = 0
ldi sumaL, 0
ldi zero, 0
petla:
add sumaL, licznik ; suma += licznik
adc sumaH, zero ; dodawanie przeniesienia (suma + 0 + przeniesienie)
call EEzapis ; wywołanie procedury "EEzapis:"
inc licznik ; zwieksz licznik o 1
inc licznik
cpi R21, LIMIT
brlt petla
jmp koniec
koniec:
jmp koniec
EEzapis: ; procedura zapisz do EEPROM
sbic EECR, EERE ; czekaj, aż zostanie zakończony
rjmp EEzapis ; zapis poprzednich danych
out EEARH ,r18 ; ustaw adres R18:R17
out EEARL, r17 ; w rejestrze adresów EEPROM
out EEDR, r16 ; zapisz daną do EEPROM
sbi EECR, EEMWE ; ustaw EEMWE na jeden
sbi EECR, EEWE ; rozpocznij zapis
; (trwa dwa cykle zegara)
ret ;