Atmel ATmega328P Xplained Mini MEGA328P-XMINI MEGA328P-XMINI Data Sheet

Product codes
MEGA328P-XMINI
Page of 657
13
ATmega48A/PA/88A/PA/168A/PA/328/P [DATASHEET]
Atmel-8271H-AVR- ATmega-Datasheet_08/2014
7.5
Stack Pointer
The Stack is mainly used for storing temporary data, for storing local variables and for storing return addresses 
after interrupts and subroutine calls. Note that the Stack is implemented as growing from higher to lower 
memory locations. The Stack Pointer Register always points to the top of the Stack. The Stack Pointer points to 
the data SRAM Stack area where the Subroutine and Interrupt Stacks are located. A Stack PUSH command will 
decrease the Stack Pointer.
The Stack in the data SRAM must be defined by the program before any subroutine calls are executed or 
interrupts are enabled. Initial Stack Pointer value equals the last address of the internal SRAM and the Stack 
Pointer must be set to point above start of the SRAM, see 
See 
 for Stack Pointer details.
The AVR Stack Pointer is implemented as two 8-bit registers in the I/O space. The number of bits actually used 
is implementation dependent. Note that the data space in some implementations of the AVR architecture is so 
small that only SPL is needed. In this case, the SPH Register will not be present.
7.5.1
SPH and SPL – Stack Pointer High and Stack Pointer Low Register
Table 7-1.
Stack Pointer instructions
Instruction
Stack pointer
Description
PUSH
Decremented by 1
Data is pushed onto the stack
CALL
ICALL
RCALL
Decremented by 2
Return address is pushed onto the stack with a subroutine call or 
interrupt
POP
Incremented by 1
Data is popped from the stack
RET
RETI
Incremented by 2
Return address is popped from the stack with return from 
subroutine or return from interrupt
Bit
15
14
13
12
11
10
9
8
SP15
SP14
SP13
SP12
SP11
SP10
SP9
SP8
SPH
SP7
SP6
SP5
SP4
SP3
SP2
SP1
SP0
SPL
7
6
5
4
3
2
1
0
Read/Write
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Initial Value
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND
RAMEND