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