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][ASM]Jak odczytac z pamieci prg. slowo 16bitowe?

groch75 25 Wrz 2008 08:17 1301 3
REKLAMA
  • #1 5569422
    groch75
    Poziom 12  
    jak odczytac slowo 16 bitowe z tablicy ? odczyt danych 8bitowych nie jest problemem - przez LPM. odczyt 16 bitow jest przez LPM ale trzeba przestawiac ZLSB ?
    w helpie jest cos takiego
    Thus, the least significant bit of the Z pointer selects either low byte (ZLSB = 0) or high byte (ZLSB = 1).
    a potem na koncu przyklad
    
    Example:
    
    ldi ZH, high(Table_1<<1)              ; Initialize Z pointer
    
    ldi ZL, low(Table_1<<1)
    
    lpm r16, Z                                   ; Load constant from program
    
    ; memory pointed to by Z (r31:r30)
    
    ...
    
    Table_1:
    
    .dw 0x5876; 0x76 is addresses when ZLSB = 0
    
    ; 0x58 is addresses when ZLSB = 1
    


    moze coc przegapilem ale nie wiem jak odczytac - pozdrawiam

    Poprawiłem tytuł , dodałem znaczniki [code] , przeniosłem do właściwego działu.
    Autorowi pozostało poprawić litery rozpoczynające zdania i przestrzegać obowiązujących zasad , w kolejnych tematach.
    [zumek]
  • REKLAMA
  • #2 5569680
    zumek
    Poziom 39  
    groch75 napisał:
    jak odczytac slowo 16 bitowe z tablicy ? odczyt danych 8bitowych nie jest problemem - przez LPM. odczyt 16 bitow jest przez LPM ale trzeba przestawiac ZLSB ?

    W AVR-ach , nie da się odczytać 16-bitów jedną instrukcją , ani z pamięci programu , ani z pamięci SRAM.
    W Twoim przypadku , najlepiej użyć LPM , z postinkrementacją Z
    
    Example:
    
    ldi ZH, high(Table_1<<1)              ; Initialize Z pointer
    ldi ZL, low(Table_1<<1)
    
    lpm r16, Z+                                 ; Byte LSB -> r16=0x76
    lpm r17, Z                                   ; Byte MSB ->r17=0x58
    ...
    
    Table_1:
    
    .dw 0x5876; 0x76
    

    No i nie zapominaj o istnieniu ELPM.

    Piotrek
  • REKLAMA
  • #3 5570431
    groch75
    Poziom 12  
    ok - dzieki. ELPM to chyba bardziej do pamieci zewnetrznych, potrzebuje bardziej odczytac dane 16bitowe z tablicy, wieczialem ze jakos podobnie tylko nie bylem pewien jak.
  • #4 5571783
    zumek
    Poziom 39  
    groch75 napisał:
    ... ELPM to chyba bardziej do pamieci zewnetrznych...

    A słyszałeś by któryś z AVR-ów , działał z zewnętrzną pamiecią programu :?:
    Radzę doczytać.

    Piotrek
REKLAMA