从程序存储器中读取一系列数据 - AVR ATmega16

时间:2017-04-05 07:13:28

标签: assembly avr atmega

我正在使用AtmelStudio 7在AVR ATmega16微控制器的汇编中编写此代码。我尝试从程序存储器中读取一些数据并使用它们。我知道我必须使用Z寄存器指向程序存储器,并且预先存储的数据被标签" BCDTo7_Seg"识别。由汇编程序。它确实读取了该表中的第一个数字(我可以使用调试器看到这个过程)但是,当我发布增加Z寄存器时,地址增加但读取值仍然相同!希望有人可以帮助我。以下是代码的一部分:

    /* 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 个答案:

答案 0 :(得分:1)

每次执行时都会在开头设置指针。

ldi ZH,high(BCDTo7_Seg << 1)
ldi ZL,low(BCDTo7_Seg << 1)