2017-04-05 66 views
0

我正在使用AtmelStudio 7編寫AVR ATmega16單片機的彙編代碼。我試圖從程序存儲器讀取一些數據並使用它們。我知道我必須使用Z寄存器指向程序存儲器,並且彙編器可以通過標籤「BCDTo7_Seg」識別預存的數據。它確實讀取該表中的第一個數字(我可以使用調試器看到這個過程),但是當我遞增Z寄存器時,地址增加,但讀取值仍然相同!希望有人能幫助我。以下是代碼的一部分:從程序存儲器讀取一系列數據 - AVR ATmega16

/* Simply start reading from program memory */ 
    /* The reading from program memory must be done with the starting address: BCDTo7_Seg LABEL */ 

    /* INITIALIZE Z POINTER */ 
    ldi ZH,high(BCDTo7_Seg << 1) 
    ldi ZL,low(BCDTo7_Seg << 1) 
    clr R23 
    /* R23 contains the data must be written to the 7 segment */ 
    /* Post Increment Z after reading each number */ 
    lpm R23,Z+ 
    /* decrement R16 */ 
    dec R16 
    /* Check the loop end point */ 
    brne R_W 
    rjmp start 

回答

1

每次執行它時都會在開始處設置指針。

ldi ZH,high(BCDTo7_Seg << 1) 
ldi ZL,low(BCDTo7_Seg << 1) 
相關問題