2017-04-05 67 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) 
相关问题