SN8P2501D
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD
Page 28
Version 1.5
2.4 STACK OPERATION
2.4.1 OVERVIEW
The stack buffer has 4-
level. These buffers are designed to push and pop up program counter’s (PC) data when
interrupt service routine and
“CALL” instruction are executed. The STKP register is a pointer designed to point active
level in order to push or pop up data from stack buffer. The STKnH and STKnL are the stack buffers to store program
counter (PC) data.
RET /
RETI
CALL /
INTERRUPT
STKP = 3
STKP = 2
STKP = 1
STKP = 0
STACK Level
STK3H
STK2H
STK1H
STK0H
STACK Buffer
High Byte
PCH
STKP
STK3L
STK2L
STK1L
STK0L
STACK Buffer
Low Byte
PCL
STKP
STKP - 1
STKP + 1
2.4.2 STACK REGISTERS
The stack pointer (STKP) is a 2-bit register to store the address used to access the stack buffer, 10-bit data memory
(STKnH and STKnL) set aside for temporary storage of stack addresses.
The two stack operations are writing to the top of the stack (push) and reading from the top of stack (pop). Push
operation decrements the STKP and the pop operation increments each time. That makes the STKP always point to
the top address of stack buffer and write the last program counter value (PC) into the stack buffer.
The program counter (PC) value is stored in the stack buffer before a CALL instruction executed or during interrupt
service routine. Stack operation is a LIFO type (Last in and first out). The stack pointer (STKP) and stack buffer
(STKnH and STKnL) are located in the system register area bank 0.
0DFH
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
STKP
GIE
-
-
-
-
-
STKPB1
STKPB0
Read/Write
R/W
-
-
-
-
-
R/W
R/W
After reset
0
-
-
-
-
-
1
1
Bit[2:0]
STKPBn:
Stack pointer (n = 0 ~ 1)
Bit 7
GIE:
Global interrupt control bit.
0 = Disable.
1 = Enable. Please refer to the interrupt chapter.
Example: Stack pointer (STKP) reset, we strongly recommended to clear the stack pointers in the
beginning of the program.
MOV
A, #00000011B
B0MOV
STKP, A