ATmega8U2/16U2/32U2
图6-3 。
的X,Y和Z寄存器
15
XH
0
7
R26 ( 0x1A的)
XL
0
0
X -寄存器
7
R27 ( 0x1B )
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
在不同的寻址模式中,这些地址寄存器可以实现固定偏移,
自动加一和自动减一(详见指令集) 。
6.6
堆栈指针
堆栈主要用于存储临时数据,用于存储局部变量和用于存储
中断和子程序调用后返回地址。需要注意的是该协议栈实现
从高增长到低内存位置。堆栈指针总是指向
堆栈的顶部。堆栈指针指向数据SRAM堆栈区所在的子程序
和中断堆栈。一个堆栈PUSH指令将减少堆栈指针。
数据SRAM堆栈必须由程序定义的子程序调用前
执行和使能中断。初始堆栈指针的值等于的最后一个地址
内部SRAM和堆栈指针必须指向SRAM的上面开始,看
SEE
表6-1
对堆栈指针的详细信息。
表6-1 。
指令
推
通话
ICALL
RCALL
POP
RET
RETI
堆栈指针指示
堆栈指针
按1递减
2递减
加1
加2
描述
数据被压入堆栈
返回地址被压入堆栈与子程序调用或
打断
数据从堆栈中弹出
返回地址从堆栈中弹出与回报
子程序或中断返回
AVR的堆栈指针被实现为两个8位寄存器中的I / O空间。数
实际使用的位是依赖于实现。请注意,在某些实数据空间
AVR架构的系统蒸发散是如此之小,只有SPL就足够了。在这种情况下, SPH寄存器
将不存在。
11
7799D–AVR–11/10