logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega128 - zapis do eeprom

Monde 13 Sty 2009 11:29 1272 1
REKLAMA
  • #1 5991892
    Monde
    Poziom 10  
    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                 ;
    
  • REKLAMA
REKLAMA