6 stack pointer, Ed in – Rainbow Electronics ATtiny43U User Manual

Page 11

Advertising
background image

11

8048B–AVR–03/09

Figure 4-3.

The X-, Y-, and Z-registers

In the different addressing modes these address registers have functions as fixed displacement,
automatic increment, and automatic decrement (see the instruction set reference for details).

4.6

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

Figure

5-2 on page 16

.

See

Table 4-1

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 implementa-
tions of the AVR architecture is so small that only SPL is needed. In this case, the SPH Register
will not be present.

15

XH

XL

0

X-register

7

0

7

0

R27 (0x1B)

R26 (0x1A)

15

YH

YL

0

Y-register

7

0

7

0

R29 (0x1D)

R28 (0x1C)

15

ZH

ZL

0

Z-register

7

0

7

0

R31 (0x1F)

R30 (0x1E)

Table 4-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

Advertising