
ATmega640/1280/1281/2560/2561
X寄存器, Y寄存器,并
Z寄存器
该寄存器R26..R31有一些额外的功能,其一般用途的使用。
这些寄存器是16位地址指针的数据空间的间接寻址。
三个间接地址寄存器X, Y和Z被定义为在图6中描述。
图6 。
的X,Y和Z寄存器
15
X -寄存器
7
R27 ( 0x1B )
XH
0
7
R26 ( 0x1A的)
XL
0
0
15
Y寄存器
7
R29 ( 0x1D )
15
Z寄存器
7
R31 ( 0x1F的)
YH
0
7
R28 ( 0x1C处)
ZH
0
7
R30 ( 0X1E )
YL
0
0
ZL
0
0
在不同的寻址模式中,这些地址寄存器可以实现固定偏移
位置,自动加一和自动减一(见指令集
有关详细信息,参考) 。
堆栈指针
堆栈主要用于存储临时数据,用于存储局部变量和
中断和调用子程序的返回地址。堆栈指针
总是指向堆栈的顶部。需要注意的是该协议栈实现成长
从更高的存储位置,以降低内存位置。这意味着,一个堆栈
PUSH指令减少堆栈指针。
堆栈指针指向数据SRAM堆栈区所在的子程序和接口
中断堆栈。数据SRAM堆栈空间必须由定义
之前的任何子程序调用的程序执行和使能中断。堆栈
指针必须指向高于0x0200 。堆栈指针的初始值是
内部SRAM的最后一个地址。堆栈指针由一个数据时,减
被压入与PUSH指令的堆栈,并且它是由三个递减
当返回地址被压入堆栈子程序调用或中断。该
堆栈指针加一,当数据被从堆栈中弹出用POP
指令,并且它是由三个递增的数据时,从与堆栈中弹出。
从子程序返回RET或RETI中断返回。
AVR的堆栈指针被实现为两个8位寄存器中的I / O空间。该num-
实际使用的比特误码率是依赖于实现。注意,在一些数据空间
AVR架构的实现是如此之小,只有SPL就足够了。在这
情况下, SPH寄存器不会出现。
位
15
SP15
SP7
7
读/写
读/写
读/写
初始值
0
1
14
SP14
SP6
6
读/写
读/写
0
1
13
SP13
SP5
5
读/写
读/写
1
1
12
SP12
SP4
4
读/写
读/写
0
1
11
SP11
SP3
3
读/写
读/写
0
1
10
SP10
SP2
2
读/写
读/写
0
1
9
SP9
SP1
1
读/写
读/写
0
1
8
SP8
SP0
0
读/写
读/写
1
1
SPH
SPL
13
2549A–AVR–03/05