Data Sheet
ADuC832
Rev. B | Page 31 of 92
MEMORY ORGANIZATION
The ADuC832 contains four different memory blocks:
62 kB of on-chip Flash/EE program memory
4 kB of on-chip Flash/EE data memory
256 bytes of general-purpose RAM
2 kB of internal XRAM
FLASH/EE PROGRAM MEMORY
The ADuC832 provides 62 kB of Flash/EE program memory to
run user code. The user can choose to run code from this
internal memory or from an external program memory.
If the user applies power or resets the device while the EA pin
is pulled low, the part executes code from the external program
space; otherwise, the part defaults to code execution from its inter-
nal 62 kB of Flash/EE program memory. Unlike the ADuC812,
where code execution can overflow from the internal code space to
external code space once the PC becomes greater than 1FFFH,
the ADuC832 does not support the rollover from F7FFH in
internal code space to F800H in external code space. Instead,
the 2048 bytes between F800H and FFFFH appear as NOP
instructions to user code.
This internal code space can be downloaded via the UART
serial port while the device is in-circuit. During runtime, 56 kB
of the program memory can be reprogrammed; thus the code
space can be upgraded in the field using a user defined proto-
col, or it can be used as a data memory (for more details, see
FLASH/EE DATA MEMORY
4 kB of Flash/EE data memory are available to the user and can
be accessed indirectly via a group of control registers mapped
into the Special Function Register (SFR) area. Access to the
Flash/EE data memory is discussed in detail in t
he Using theGENERAL-PURPOSE RAM
The general-purpose RAM is divided into two separate memo-
ries, the upper and the lower 128 bytes of RAM. The lower
128 bytes of RAM can be accessed through direct or indirect
addressing. The upper 128 bytes of RAM can only be accessed
through indirect addressing because it shares the same address
space as the SFR space, which can only be accessed through
direct addressing.
The lower 128 bytes of internal data memory are mapped as shown
i
n Figure 32. The lowest 32 bytes are grouped into four banks of
eight registers addressed as R0 through R7. The next 16 bytes
(128 bits), above the register banks, form a block of bit addressable
memory space at Address 20H through Address 2FH. The stack
can be located anywhere in the internal memory address space,
and the stack depth can be expanded up to 2048 bytes.
A reset initializes the stack pointer to Location 07H and incre-
ments it once before loading the stack to start from Location
08H, which is also the first register (R0) of Register Bank 1.
Thus, if using more than one register bank, the stack pointer
should be initialized to an area of RAM not used for data
storage.
BIT-ADDRESSABLE
(BIT ADDRESSES)
FOUR BANKS OF EIGHT
REGISTERS
R0 TO R7
BANKS
SELECTED
VIA
BITS IN PSW
11
10
01
00
07H
0FH
17H
1FH
2FH
7FH
00H
08H
10H
18H
20H
RESET VALUE OF
STACK POINTER
30H
GENERAL-PURPOSE
AREA
02987-
021
Figure 32. Lower 128 Bytes of Internal Data Memory
The ADuC832 contains 2048 bytes of internal XRAM,
1792 bytes of which can be configured to be used as an
extended 11-bit stack pointer.
By default, the stack operates exactly like an 8052 in that it rolls
over from FFH to 00H in the general-purpose RAM. On the
ADuC832, however, it is possible (by setting CFG832[7]) to
enable the 11-bit extended stack pointer. In this case, the stack
rolls over from 00FFH in RAM to 0100H in XRAM.
The 11-bit stack pointer is visible in the SP and SPH SFRs. The
SP SFR is located at 81H as with a standard 8052. The SPH SFR
is located at B7H. The three LSBs of this SFR contain the three
extra bits necessary to extend the 8-bit stack pointer into an
11-bit stack pointer.
UPPER 1792
BYTES OF
ON-CHIP XRAM
(DATA + STACK
FOR EXSP = 1,
DATA ONLY
FOR EXSP = 0)
256 BYTES OF
ON-CHIP DATA
RAM
(DATA +
STACK)
LOWER 256
BYTES OF
ON-CHIP XRAM
(DATA ONLY)
00H
FFH
00H
07FFH
CFG832[7] = 0
CFG832[7] = 1
100H
02987-
022
Figure 33. Extended Stack Pointer Operation