SUMMARY:As a result of additional product testing and evaluation, some specifications
published in the S3C8248/C8245/P8245/C8247/C8249/P8249 User's Manual,
Revision 3, have been changed. These changes for S3C8248/C8245/P8245
/C8247/C8249/P8249 microcontroller, which are described in detail in the
Revision Descriptions section below, are related to the
followings:
—S3C8248/C8247 moved.
—Chapter 1. Features
—Chapter 19. Electrical Data
DIRECTIONS:Please note the changes in your copy (copies) of the S3C8248/C8245/P8245/
C8247/C8249/P8249 User's Manual, Revision 3. Or, simply attach the Revision
Descriptions of the next page to S3C8248/C8245/P8245/C8247/C8249 /P8249
The information in this publication has been carefully
checked and is believed to be entirely accurate at the
time of publication. Samsung assumes no
responsibility, however, for possible errors or
omissions, or for any consequences resulting from
the use of the information contained herein.
Samsung reserves the right to make changes in its
products or product specifications with the intent to
improve function or design at any time and without
notice and is not required to update this
documentation to reflect such changes.
This publication does not convey to a purchaser of
semiconductor devices described herein any license
under the patent rights of Samsung or others.
Samsung makes no warranty, representation, or
guarantee regarding the suitability of its products for
any particular purpose, nor does Samsung assume
any liability arising out of the application or use of any
product or circuit and specifically disclaims any and
all liability, including without limitation any
consequential or incidental damages.
"Typical" parameters can and do vary in different
applications. All operating parameters, including
"Typicals" must be validated for each customer
application by the customer's technical experts.
Samsung products are not designed, intended, or
authorized for use as components in systems
intended for surgical implant into the body, for other
applications intended to support or sustain life, or for
any other application in which the failure of the
Samsung product could create a situation where
personal injury or death may occur.
Should the Buyer purchase or use a Samsung
product for any such unintended or unauthorized
application, the Buyer shall indemnify and hold
Samsung and its officers, employees, subsidiaries,
affiliates, and distributors harmless against all claims,
costs, damages, expenses, and reasonable attorney
fees arising out of, either directly or indirectly, any
claim of personal injury or death that may be
associated with such unintended or unauthorized use,
even if such claim alleges that Samsung was
negligent regarding the design or manufacture of said
product.
form or by any means, electric or mechanical, by photocopying, recording, or otherwise, without the prior written
consent of Samsung Electronics.
Samsung Electronics' microcontroller business has been awarded full ISO-14001
certification (BSI Certificate No. FM24653). All semiconductor products are
designed and manufactured in accordance with the highest quality standards and
objectives.
Samsung Electronics Co., Ltd.
San #24 Nongseo-Ri, Giheung- Eup
Yongin-City, Gyeonggi-Do, Korea
C.P.O. Box #37, Suwon 449-900
TEL:(82)-(031)-209-1934
FAX: (82)-(331)-209-1889
Home-Page URL: Http://www.samsungsemi.com
Printed in the Republic of Korea
Preface
The S3C8245/P8245/C8249/P8249 Microcontroller User's Manual is designed for application designers and
programmers who are using the S3C8245/P8245/C8249/P8249 microcontroller for application development. It is
organized in two main parts:
Part I Programming ModelPart II Hardware Descriptions
Part I contains software-related information to familiarize you with the microcontroller's architecture, programming
model, instruction set, and interrupt structure. It has six chapters:
Chapter 1Product Overview
Chapter 2Address Spaces
Chapter 3Addressing Modes
Chapter 1, "Product Overview," is a high-level introduction to S3C8245/P8245/C8249/P8249 with general product
descriptions, as well as detailed information about individual pin characteristics and pin circuit types.
Chapter 2, "Address Spaces," describes program and data memory spaces, the internal register file, and register
addressing. Chapter 2 also describes working register addressing, as well as system stack and user-defined stack
operations.
Chapter 3, "Addressing Modes," contains detailed descriptions of the addressing modes that are supported by the
S3C8-series CPU.
Chapter 4, "Control Registers," contains overview tables for all mapped system and peripheral control register values,
as well as detailed one-page descriptions in a standardized format. You can use these easy-to-read, alphabetically
organized, register descriptions as a quick-reference source when writing programs.
Chapter 5, "Interrupt Structure," describes the S3C8245/P8245/C8249/P8249 interrupt structure in detail and further
prepares you for additional information presented in the individual hardware module descriptions in Part II.
Chapter 6, "Instruction Set," describes the features and conventions of the instruction set used for all S3C8-series
microcontrollers. Several summary tables are presented for orientation and reference. Detailed descriptions of each
instruction are presented in a standard format. Each instruction description includes one or more practical examples
of how to use the instruction when writing an application program.
A basic familiarity with the information in Part I will help you to understand the hardware module descriptions in Part
II. If you are not yet familiar with the S3C8-series microcontroller family and are reading this manual for the first time,
we recommend that you first read Chapters 1–3 carefully. Then, briefly look over the detailed information in Chapters
4, 5, and 6. Later, you can reference the information in Part I as necessary.
Chapter 4Control Registers
Chapter 5Interrupt Structure
Chapter 6Instruction Set
Part II "hardware Descriptions," has detailed information about specific hardware components of the
S3C8245/P8245/C8249/P8249 microcontroller. Also included in Part II are electrical, mechanical, OTP, and
development tools data. It has 16 chapters:
Two order forms are included at the back of this manual to facilitate customer order for S3C8245/P8245/
C8249/P8249 microcontrollers: the Mask ROM Order Form, and the Mask Option Selection Form. You can
photocopy these forms, fill them out, and then forward them to your local Samsung Sales Representative.
19-11Main Oscillator Frequency (f
19-12Main Oscillator Clock Stabilization Time (t
19-13Sub Oscillator Frequency (f
19-14Sub Oscillator(crystal) Stabilization Time (t
TCM Test Complement under Mask..............................................................................6-84
TM Test under Mask .................................................................................................6-85
WFI Wait for Interrupt ..................................................................................................6-86
XOR Logical Exclusive OR ...........................................................................................6-87
S3C8245/P8245/C8249/P8249 MICROCONTROLLERxxiii
S3C8245/P8245/C8249/P8249 PRODUCT OVERVIEW
1PRODUCT OVERVIEW
S3C8-SERIES MICROCONTROLLERS
Samsung's S3C8 series of 8-bit single-chip CMOS microcontrollers offers a fast and efficient CPU, a wide range of
integrated peripherals, and various mask-programmable ROM sizes. Among the major CPU features are:
— Efficient register-oriented architecture
— Selectable CPU clock sources
— Idle and Stop power-down mode release by interrupt
— Built-in basic timer with watchdog function
A sophisticated interrupt structure recognizes up to eight interrupt levels. Each level can have one or more interrupt
sources and vectors. Fast interrupt processing (within a minimum of four CPU clocks) can be assigned to specific
interrupt levels.
S3C8245/P8245/C8249/P8249 MICROCONTROLLER
The S3C8245/P8245/C8249/P8249 single-chip CMOS
microcontroller are fabricated using the highly
advanced CMOS process, based on Samsung’s
newest CPU architecture.
The S3C8245, S3C8249 are a microcontroller with a
16K-byte, 32K-byte mask-programmable ROM
embedded respectively.
The S3P8245 is a microcontroller with a 16K-byte
one-time-programmable ROM embedded.
The S3P8249 is a microcontroller with a 32K-byte
one-time-programmable ROM embedded.
Using a proven modular design approach, Samsung
engineers have successfully developed the
S3C8245/P8245/C8249/P8249 by integrating the
following peripheral modules with the powerful SAM8
core:
— Six programmable I/O ports, including five 8-bit
ports and one 5-bit port, for a total of 45 pins.
— Eight bit-programmable pins for external
interrupts.
— One 8-bit basic timer for oscillation stabilization
and watchdog functions (system reset).
— Two 8-bit timer/counter and two 16-bit
timer/counter with selectable operating modes.
— Watch timer for real time.
— 8-input A/D converter
— Serial I/O interface
The S3C8245/P8245/C8249/P8249 is versatile
microcontroller for camera, LCD and ADC application,
etc. They are currently available in 80-pin TQFP and
80-pin QFP package
OTP
The S3P8245/P8249 are OTP (One Time Programmable) version of the S3C8245/C8249 microcontroller. The
S3P8245 microcontroller has an on-chip 16K-byte one-time-programmable EPROM instead of a masked ROM. The
S3P8249 microcontroller has an on-chip 32K-byte one-time-programmable EPROM instead of a masked ROM. The
S3P8245 is comparable to the S3P8245, both in function and in pin configuration.
The S3P8249 is comparable to the S3P8249, both in function and in pin configuration.
1-1
PRODUCT OVERVIEWS3C8245/P8245/C8249/P8249
FEATURES
Memory
•ROM: 32K-byte (S3C8249/P8249)
•ROM: 16K-byte (S3C8245/P8245)
•RAM: 1056-Byte (S3C8249/P8249)
•RAM: 544-Byte (S3C8245/P8245)
•Data memory mapped I/O
Oscillation Sources
•Crystal, ceramic, RC (main)
•Crystal for subsystem clock
•Main system clock frequency 1-10 MHz
(3 MHz at 1.8 V, 10 MHz at 2.7 V)
Schmitt trigger input or output mode
selected by software; software assignable
pull-up. P0.0–P0.7 can be used as inputs
for external interrupts INT0–INT7
(with noise filter and interrupt control).
P1.0–1.7I/OI/O port with bit programmable pins; Input
or output mode selected by software;
Open-drain output mode can be selected
by software; software assignable pull-up.
Alternately P1.0–P1.7 can be used as SI,
SO, SCK, BUZ, T1CAP, T1CLK, T1OUT,
T1PWM
P2.0–P2.7I/OI/O port with bit programmable pins;
normal input and AD input or output mode
selected by software; software assignable
pull-up.
P3.0–P3.4I/OI/O port with bit programmable pins. Input
or push-pull output with software
assignable pull-up. Alternately P3.0–P3.3
can be used as TACAP, TACLK, TAOUT,
TAPWM, TBPWM
Circuit
Type
Pin
Numbers
(note)
Share
Pins
D–420–27INT0–INT7
E–228-35SI, SO, SCK,
BUZ, T1CAP
T1CLK
T1OUT
T1PWM
F–10
F–18
36–42,
43
ADC0–ADC6
V
VLDREF
(ADC7)
D–27–11TACAP
TACLK
TAOUT
TAPWM
TBPWM
P4.0–P4.7I/OI/O port with bit programmable pins. Push-
pull or open drain output and input with
software assignable pull-up.
P4.0–P4.7 can alternately be used as
outputs for LCD SEG
P5.0–P5.7I/OI/O port with bit programmable pins. Push-
pull or open drain output and input with
software assignable pull-up.
P5.0–P5.7 can alternately be used as
outputs for LCD SEG.
–12, 13–
(internal) and Power input for OTP
Writing
X
OUT, XIN
–Main oscillator pins–14, 15–
SO, SCK, SII/OSerial I/O interface clock signalE–233–35P1.5–P1.7
V
VLDREF
IVoltage detector reference voltage inputF–1843P2.7
TACAPITimer A Capture inputD–210P3.3
TACLKITimer A External clock inputD–29P3.2
TAOUT/TAPWMOTimer A output and PWM outputD–28P3.1
TBPWMOTimer B PWM outputD–27P3.0
T1CAPITimer 1 Capture inputE–228P1.0
T1CLKITimer 1 External clock inputE–229P1.1
T1OUT/T1PWMOTimer 1 output and PWM outputE–230P1.2
COM0–COM3OLCD common signal outputH51–54–
SEG0–SEG15OLCD segment outputH55–70–
SEG16–SEG23OLCD segment outputH–1471–78P4.0–P4.7
SEG24–SEG31OLCD Segment outputH–1479–6P5.0–P5.7
V
LC0–VLC2
BUZO0.5, 1, 2 or 4 kHz frequency output for
OLCD power supply–48–50–
E–232P1.4
buzzer sound with 4.19 MHz main
system clock or 32768 Hz subsystem
clock
CA, CB–Capacitor terminal for voltage booster–46–47–
1-7
PRODUCT OVERVIEWS3C8245/P8245/C8249/P8249
PIN CIRCUITS
V
DD
V
DD
Pull-up
Enable
P-Channel
In
Figure 1-4. Pin Circuit Type B (nRESET)
V
DD
Data
Output
Disable
P-Channel
Out
N-Channel
Data
Output
Circuit
Type C
Disable
Figure 1-6. Pin Circuit Type D-2 (P3)
V
V
DD
Data
Output
Pin Circuit
Type C
Disable
Noise
Ext.INT
Filter
I/O
DD
Pull-up
Enable
I/O
1-8
Figure 1-5. Pin Circuit Type C
Input
Normal
Figure 1-7. Pin Circuit Type D-4 (P0)
S3C8245/P8245/C8249/P8249PRODUCT OVERVIEW
V
DD
V
DD
Open drain
Enable
V
DD
Pull-up
Resistor
Pull-up
Enable
Data
Output
Disable
Schmitt Trigger
Figure 1-8. Pin Circuit Type E-2 (P1)
Pull-up
Enable
P-CH
N-CH
I/O
Data
Output
Disable
Circuit
Type C
I/O
ADC & VLD
Enable
Data
VLD
REF
To ADC
Figure 1-10. Pin Circuit Type F-18 (P2.7/VLD
V
DD
V
LC2
V
LC1
REF
)
Data
Output
Circuit
Type C
Disable
ADCEN
Data
To ADC
Figure 1-9. Pin Circuit Type F-10 (P2.0–P2.6)
I/O
SEG/
COM
V
LC0
Figure 1-11. Pin Circuit Type H (SEG/COM)
Out
1-9
PRODUCT OVERVIEWS3C8245/P8245/C8249/P8249
V
LC2
V
LC1
SEG
Output
Disable
V
LC0
Open Drain EN
Data
LCD Out EN
SEG
Output
Disable
Figure 1-12. Pin Circuit Type H-4
V
DD
V
DD
Circuit
Type H-4
Pull-up
Enable
1-10
Figure 1-13. Pin Circuit Type H-14 (P4, P5)
S3C8245/P8245/C8249/P8249ADDRESS SPACES
2ADDRESS SPACES
OVERVIEW
The S3C8245/C8249 microcontroller has two types of address space:
— Internal program memory (ROM)
— Internal register file
A 16-bit address bus supports program memory operations. A separate 8-bit register bus carries addresses and data
between the CPU and the register file.
The S3C8245 has an internal 16-Kbyte mask-programmable ROM. The S3C8249 has an internal 32-Kbyte maskprogrammable ROM.
The 256-byte physical register space is expanded into an addressable area of 320 bytes using addressing modes.
A 16-byte LCD display register file is implemented.
There are 1,109 mapped registers in the internal register file. Of these, 1,040 are for general-purpose.
(This number includes a 16-byte working register common area used as a “scratch area” for data operations, four
192-byte prime register areas, and four 64-byte areas (Set 2)). Thirteen 8-bit registers are used for the CPU and the
system control, and 53 registers are mapped for peripheral controls and data registers. Twelve register locations are
not mapped.
2-1
ADDRESS SPACESS3C8245/P8245/C8249/P8249
PROGRAM MEMORY (ROM)
Program memory (ROM) stores program codes or table data. The S3C8249 has 32K bytes internal maskprogrammable program memory, the S3C8245 has 16K bytes.
The first 256 bytes of the ROM (0H–0FFH) are reserved for interrupt vector addresses. Unused locations in this
address range can be used as normal program memory. If you use the vector address area to store a program code,
be careful not to overwrite the vector addresses stored in these locations.
The ROM address at which a program execution starts after a reset is 0100H.
(Decimal)
32,767
16384
16383
255
(HEX)
7FFFH (S3C8249)
32K-byte
4000H
3FFFH (S3C8245)
16K-byte
0FFH
Interrupt
Vector Area
0
0H
2-2
Figure 2-1. Program Memory Address Space
S3C8245/P8245/C8249/P8249ADDRESS SPACES
REGISTER ARCHITECTURE
In the S3C8245/C8249 implementation, the upper 64-byte area of register files is expanded two 64-byte areas, called
set 1 and set 2. The upper 32-byte area of set 1 is further expanded two 32-byte register banks (bank 0 and bank 1),
and the lower 32-byte area is a single 32-byte common area.
In case of S3C8249/P8249 the total number of addressable 8-bit registers is 1122. Of these 1122 registers, 16 bytes
are for CPU and system control registers, 16 bytes are for LCD data registers, 50 bytes are for peripheral control and
data registers, 16 bytes are used as a shared working registers, and 1024 registers are for general-purpose use,
page 0-page 4 (in case of S3C8245/P8245, page 0-page 2).
You can always address set 1 register locations, regardless of which of the four register pages is currently selected.
Set 1 locations, however, can only be addressed using register addressing modes.
The extension of register space into separately addressable areas (sets, banks, and pages) is supported by various
addressing mode restrictions, the select bank instructions, SB0 and SB1, and the register page pointer (PP).
Specific register types and the area (in bytes) that they occupy in the register file are summarized in Table 2–1.
Table 2-1. S3C8249/P8249 Register Type Summary
Register TypeNumber of Bytes
General-purpose registers (including the 16-byte common
working register area, four 192-byte prime register area,
and four 64-byte set 2 area)
LCD data registers
CPU and system control registers
Mapped clock, peripheral, I/O control, and data registers
Total Addressable Bytes
Table 2-2. S3C8245/P8245 Register Type Summary
Register TypeNumber of Bytes
General-purpose registers (including the 16-byte common
working register area, four 192-byte prime register area,
and four 64-byte set 2 area)
LCD data registers
CPU and system control registers
Mapped clock, peripheral, I/O control, and data registers
Total Addressable Bytes
1,040
16
16
50
1,122
528
16
16
50
610
2-3
ADDRESS SPACESS3C8245/P8245/C8249/P8249
64
Bytes
32
Bytes
16
Bytes
Set1
FFH
E0H
DFH
D0H
CFH
C0H
0FH
Peripheral Control
(Register Addressing Mode)
System Registers
(Register Addressing Mode)
General Purpose Register
(Register Addressing Mode)
Bank 1
Bank 0
System and
Peripheral Control
System and
Registers
Registers
Page 4
Prime
Data Registers
~~
(All addressing modes)
LCD Display Reigster
00H
E0H
Bytes
192
FFH
FFH
FFH
FFH
General-Purpose
Data Registers
(Indirect Register, Indexed
Mode, and Stack
Operations)
C0H
BFH
~
~~
00H
Data Registers
(All Addressing Modes)
Page 1
Page 1
Page 0
Set 2
Page 0
Prime
Page 2
Page3
256
Bytes
~
~
~
~
NOTE:
In case of S3C8245/P8245, there are page 0, page 1, and page 4.
Page 4 is for LCD display register, 16 bytes.
Figure 2-2. Internal Register File Organization
2-4
S3C8245/P8245/C8249/P8249ADDRESS SPACES
REGISTER PAGE POINTER (PP)
The S3C8-series architecture supports the logical expansion of the physical 256-byte internal register file (using an
8-bit data bus) into as many as 16 separately addressable register pages. Page addressing is controlled by the
register page pointer (PP, DFH). In the S3C8245/C8249 microcontroller, a paged register file expansion is
implemented for LCD data registers, and the register page pointer must be changed to address other pages.
After a reset, the page pointer's source value (lower nibble) and the destination value (upper nibble) are always
"0000", automatically selecting page 0 as the source and destination page for register addressing.
A hardware reset operation writes the 4-bit destination and
source values shown above to the register page pointer. These values should
be modified to address other pages.
NOTE:You should refer to page 6-39 and use DJNZ instruction properly when DJNZ instruction is used in your program.
2-5
ADDRESS SPACESS3C8245/P8245/C8249/P8249
REGISTER SET 1
The term set 1 refers to the upper 64 bytes of the register file, locations C0H–FFH.
The upper 32-byte area of this 64-byte space (E0H–FFH) is expanded two 32-byte register banks, bank 0 and bank
1. The set register bank instructions, SB0 or SB1, are used to address one bank or the other. A hardware reset
operation always selects bank 0 addressing.
The upper two 32-byte areas (bank 0 and bank 1) of set 1 (E0H–FFH) contains 50 mapped system and peripheral
control registers. The lower 32-byte area contains 16 system registers (D0H–DFH) and a 16-byte common working
register area (C0H–CFH). You can use the common working register area as a “scratch” area for data operations
being performed in other areas of the register file.
Registers in set 1 locations are directly accessible at all times using Register addressing mode. The 16-byte
working register area can only be accessed using working register addressing (For more information about working
register addressing, please refer to Chapter 3, “Addressing Modes.”)
REGISTER SET 2
The same 64-byte physical space that is used for set 1 locations C0H–FFH is logically duplicated to add another 64
bytes of register space. This expanded area of the register file is called set 2. For the S3C8249,
the set 2 address range (C0H–FFH) is accessible on pages 0–3.
S3C8245, the set 2 address range (C0H-FFH) is accessible on pages 0-1.
The logical division of set 1 and set 2 is maintained by means of addressing mode restrictions. You can use only
Register addressing mode to access set 1 locations. In order to access registers in set 2, you must use Register
Indirect addressing mode or Indexed addressing mode.
The set 2 register area is commonly used for stack operations.
2-6
S3C8245/P8245/C8249/P8249ADDRESS SPACES
PRIME REGISTER SPACE
The lower 192 bytes (00H–BFH) of the S3C8245/C8249's four or two 256-byte register pages is called prime register
area. Prime registers can be accessed using any of the seven addressing modes
(see Chapter 3, "Addressing Modes.")
The prime register area on page 0 is immediately addressable following a reset. In order to address prime registers
on pages 0, 1, 2, 3, or 4 you must set the register page pointer (PP) to the appropriate source and destination
values.
Bank 0
FFH
FCH
E0H
D0H
C0H
CPU and system control
General-purpose
Peripheral and I/O
LCD data register
Set 1
Bank 1
FFH
C0H
BFH
00H
FFH
FFH
FFH
Page 1
Page 0
Set 2
Page 0
Prime
Space
Page 2
Set 2
Page 3
Set 2
Set 2
Page 4
0FH
LCD Data
Register Area
00H
Figure 2-4. Set 1, Set 2, Prime Area Register, and LCD Data Register Map
2-7
ADDRESS SPACESS3C8245/P8245/C8249/P8249
WORKING REGISTERS
Instructions can access specific 8-bit registers or 16-bit register pairs using either 4-bit or 8-bit address fields. When
4-bit working register addressing is used, the 256-byte register file can be seen by the programmer as one that
consists of 32 8-byte register groups or "slices." Each slice comprises of eight 8-bit registers.
Using the two 8-bit register pointers, RP1 and RP0, two working register slices can be selected at any one time to
form a 16-byte working register block. Using the register pointers, you can move this 16-byte register block
anywhere in the addressable register file, except the set 2 area.
The terms slice and block are used in this manual to help you visualize the size and relative locations of selected
working register spaces:
— One working register slice is 8 bytes (eight 8-bit working registers, R0–R7 or R8–R15)
— One working register block is 16 bytes (sixteen 8-bit working registers, R0–R15)
All the registers in an 8-byte working register slice have the same binary value for their five most significant address
bits. This makes it possible for each register pointer to point to one of the 24 slices in the register file. The base
addresses for the two selected 8-byte register slices are contained in register pointers RP0 and RP1.
After a reset, RP0 and RP1 always point to the 16-byte common area in set 1 (C0H–CFH).
1 1 1 1 1 X X X
RP1 (Registers R8-R15)
Each register pointer points to
one 8-byte slice of the register
space, selecting a total 16-byte
working register block.
0 0 0 0 0 X X X
RP0 (Registers R0-R7)
Figure 2-5. 8-Byte Working Register Areas (Slices)
Slice 32
Slice 31
~~
Slice 2
Slice 1
FFH
F8H
F7H
F0H
Set 1
Only
CFH
C0H
10H
FH
8H
7H
0H
2-8
S3C8245/P8245/C8249/P8249ADDRESS SPACES
USING THE REGISTER POINTS
Register pointers RP0 and RP1, mapped to addresses D6H and D7H in set 1, are used to select two movable 8-byte
working register slices in the register file. After a reset, they point to the working register common area: RP0 points
to addresses C0H–C7H, and RP1 points to addresses C8H–CFH.
To change a register pointer value, you load a new value to RP0 and/or RP1 using an SRP or LD instruction.
(see Figures 2-6 and 2-7).
With working register addressing, you can only access those two 8-bit slices of the register file that are currently
pointed to by RP0 and RP1. You cannot, however, use the register pointers to select a working register space in set
2, C0H–FFH, because these locations can be accessed only using the Indirect Register or Indexed addressing
modes.
The selected 16-byte working register block usually consists of two contiguous 8-byte slices. As a general
programming guideline, it is recommended that RP0 point to the "lower" slice and RP1 point to the "upper" slice
(see Figure 2-6). In some cases, it may be necessary to define working register areas in different (non-contiguous)
areas of the register file. In Figure 2-7, RP0 points to the "upper" slice and RP1 to the "lower" slice.
Because a register pointer can point to either of the two 8-byte slices in the working register block, you can flexibly
define the working register area to support program requirements.
+ PROGRAMMING TIP — Setting the Register Pointers
SRP#70H; RP0 ← 70H, RP1 ← 78H
SRP1#48H; RP0 ← no change, RP1 ← 48H,
SRP0#0A0H; RP0 ← A0H, RP1 ← no change
CLRRP0; RP0 ← 00H, RP1 ← no change
LDRP1,#0F8H; RP0 ← no change, RP1 ← 0F8H
Register File
Contains 32
8-Byte Slices
0 0 0 0 1 X X X
RP1
0 0 0 0 0 X X X
RP0
8-Byte Slice
8-Byte Slice
FH (R15)
8H
7H
0H (R0)
16-Byte
Contiguous
Working
Register block
Figure 2-6. Contiguous 16-Byte Working Register Block
2-9
ADDRESS SPACESS3C8245/P8245/C8249/P8249
F7H (R7)
F0H (R0)
16-Byte
Contiguous
working
Register block
7H (R15)
0H (R0)
1 1 1 1 0 X X X
RP0
0 0 0 0 0 X X X
RP1
8-Byte Slice
Register File
Contains 32
8-Byte Slices
8-Byte Slice
Figure 2-7. Non-Contiguous 16-Byte Working Register Block
+ PROGRAMMING TIP — Using the RPs to Calculate the Sum of a Series of Registers
Calculate the sum of registers 80H–85H using the register pointer. The register addresses from 80H through 85H
contain the values 10H, 11H, 12H, 13H, 14H, and 15 H, respectively:
The sum of these six registers, 6FH, is located in the register R0 (80H). The instruction string used in this example
takes 12 bytes of instruction code and its execution time is 36 cycles. If the register pointer is not used to calculate
the sum of these registers, the following instruction sequence would have to be used:
ADD80H,81H; 80H ← (80H) + (81H)
ADC80H,82H; 80H ← (80H) + (82H) + C
ADC80H,83H; 80H ← (80H) + (83H) + C
ADC80H,84H; 80H ← (80H) + (84H) + C
ADC80H,85H; 80H ← (80H) + (85H) + C
Now, the sum of the six registers is also located in register 80H. However, this instruction string takes 15 bytes of
instruction code rather than 12 bytes, and its execution time is 50 cycles rather than 36 cycles.
2-10
S3C8245/P8245/C8249/P8249ADDRESS SPACES
REGISTER ADDRESSING
The S3C8-series register architecture provides an efficient method of working register addressing that takes full
advantage of shorter instruction formats to reduce execution time.
With Register (R) addressing mode, in which the operand value is the content of a specific register or register pair,
you can access any location in the register file except for set 2. With working register addressing, you use a register
pointer to specify an 8-byte working register space in the register file and an 8-bit register within that space.
Registers are addressed either as a single 8-bit register or as a paired 16-bit register space. In a 16-bit register pair,
the address of the first 8-bit register is always an even number and the address of the next register is always an odd
number. The most significant byte of the 16-bit data is always stored in the even-numbered register, and the least
significant byte is always stored in the next (+1) odd-numbered register.
Working register addressing differs from Register addressing as it uses a register pointer to identify a specific 8-byte
working register space in the internal register file and a specific 8-bit register within that space.
MSB
Rn
LSB
Rn+1
Figure 2-8. 16-Bit Register Pair
n = Even address
2-11
ADDRESS SPACESS3C8245/P8245/C8249/P8249
Special-Purpose Registers
Bank 1Bank 1
FFH
Control
Registers
E0H
D0H
C0H
BFH
RP1
RP0
Each register pointer (RP) can independently point
to one of the 24 8-byte "slices" of the register file
(other than set 2). After a reset, RP0 points to
locations C0H-C7H and RP1 to locations C8H-CFH
(that is, to the common working register area).
NOTE:
00H
In the S3C8245/C8249 microcontroller,
pages 0-4 are implemented.
Pages 0-4 contain all of the addressable
registers in the internal register file.
System
Registers
Register
Pointers
General-Purpose Register
FFH
Set 2
CFH
C0H
Prime
Registers
LCD Data
Registers
2-12
Register Addressing Only
Can be Pointed by Register Pointer
Figure 2-9. Register File Addressing
Page 0
All
Addressing
Modes
Page 0
Indirect Register,
Indexed
Addressing
Modes
All
Addressing
Modes
Can be Pointed to
By register Pointer
S3C8245/P8245/C8249/P8249ADDRESS SPACES
COMMON WORKING REGISTER AREA (C0H–CFH)
After a reset, register pointers RP0 and RP1 automatically select two 8-byte register slices in set 1, locations C0H–
CFH, as the active 16-byte working register block:
RP0 → C0H–C7H
RP1 → C8H–CFH
This 16-byte address range is called common area. That is, locations in this area can be used as working registers
by operations that address any location on any page in the register file. Typically, these working registers serve as
temporary buffers for data operations between different pages.
FFH
FCH
E0H
D0H
C0H
Following a hardware reset, register
pointers RP0 and RP1 point to the
common working register area,
locations C0H-CFH.
RP0 =
RP1 =
1 1 0 00 0 0 0
1 1 0 01 0 0 0
Set 1
FFH
FFH
FFH
FFH
C0H
BFH
~~
00H
Page 1
Page 0
Set 2
Set 2
Page 0
Prime
Space
Page 3
Page 2
Set 2
Set 2
~
~
~
Page 4
0FH
LCD Data
Registers
00H
Figure 2-10. Common Working Register Area
2-13
ADDRESS SPACESS3C8245/P8245/C8249/P8249
+ PROGRAMMING TIP — Addressing the Common Working Register Area
As the following examples show, you should access working registers in the common area, locations C0H–CFH,
using working register addressing mode only.
Examples1. LD0C2H,40H; Invalid addressing mode!
Use working register addressing instead:
SRP#0C0H
LDR2,40H; R2 (C2H) → the value in location 40H
2. ADD0C3H,#45H; Invalid addressing mode!
Use working register addressing instead:
SRP#0C0H
ADDR3,#45H; R3 (C3H) → R3 + 45H
4-BIT WORKING REGISTER ADDRESSING
Each register pointer defines a movable 8-byte slice of working register space. The address information stored in a
register pointer serves as an addressing "window" that makes it possible for instructions to access working registers
very efficiently using short 4-bit addresses. When an instruction addresses a location in the selected working
register area, the address bits are concatenated in the following way to form a complete 8-bit address:
— The high-order bit of the 4-bit address selects one of the register pointers ("0" selects RP0, "1" selects RP1).
— The five high-order bits in the register pointer select an 8-byte slice of the register space.
— The three low-order bits of the 4-bit address select one of the eight registers in the slice.
As shown in Figure 2-11, the result of this operation is that the five high-order bits from the register pointer are
concatenated with the three low-order bits from the instruction address to form the complete address. As long as the
address stored in the register pointer remains unchanged, the three bits from the address will always point to an
address in the same 8-byte register slice.
Figure 2-12 shows a typical example of 4-bit working register addressing. The high-order bit of the instruction
"INC R6" is "0", which selects RP0. The five high-order bits stored in RP0 (01110B) are concatenated with the three
low-order bits of the instruction's 4-bit address (110B) to produce the register address 76H (01110110B).
2-14
S3C8245/P8245/C8249/P8249ADDRESS SPACES
RP0
RP1
Selects
RP0 or RP1
AddressOPCODE
Register pointer
provides five
high-order bits
Figure 2-11. 4-Bit Working Register Addressing
RP0
0 1 1 1 00 0 0
0 1 1 1 01 1 0
Together they create an
8-bit register address
Selects RP0
Register
address
(76H)
4-bit address
provides three
low-order bits
RP1
0 1 1 1 10 0 0
R6
0 1 1 01 1 1 0
OPCODE
Instruction
'INC R6'
Figure 2-12. 4-Bit Working Register Addressing Example
2-15
ADDRESS SPACESS3C8245/P8245/C8249/P8249
8-BIT WORKING REGISTER ADDRESSING
You can also use 8-bit working register addressing to access registers in a selected working register area. To
initiate 8-bit working register addressing, the upper four bits of the instruction address must contain the value
"1100B." This 4-bit value (1100B) indicates that the remaining four bits have the same effect as 4-bit working register
addressing.
As shown in Figure 2-13, the lower nibble of the 8-bit address is concatenated in much the same way as for 4-bit
addressing: Bit 3 selects either RP0 or RP1, which then supplies the five high-order bits of the final address; the
three low-order bits of the complete address are provided by the original instruction.
Figure 2-14 shows an example of 8-bit working register addressing. The four high-order bits of the instruction address
(1100B) specify 8-bit working register addressing. Bit 4 ("1") selects RP1 and the five high-order bits in RP1
(10101B) become the five high-order bits of the register address. The three low-order bits of the register address
(011) are provided by the three low-order bits of the 8-bit instruction address. The five address bits from RP1 and the
three address bits from the instruction are concatenated to form the complete register address, 0ABH (10101011B).
These address
bits indicate 8-bit
working register
addressing
Selects
RP0 or RP1
1100
Register pointer
provides five
high-order bits
RP0
RP1
Address
8-bit logical
address
Three low-order bits
8-bit physical address
2-16
Figure 2-13. 8-Bit Working Register Addressing
S3C8245/P8245/C8249/P8249ADDRESS SPACES
RP0
0 1 1 0 00 0 0
1 1 0 0 1 0 1 1
Specifies working
register addressing
Figure 2-14. 8-Bit Working Register Addressing Example
Selects RP1
R11
8-bit address
form instruction
'LD R11, R2'
RP1
1 0 1 0 10 0 0
1 0 1 0 10 1 1
Register
address
(0ABH)
2-17
ADDRESS SPACESS3C8245/P8245/C8249/P8249
SYSTEM AND USER STACK
The S3C8-series microcontrollers use the system stack for data storage, subroutine calls and returns. The PUSH
and POP instructions are used to control system stack operations. The S3C8245/C8249 architecture supports stack
operations in the internal register file.
Stack Operations
Return addresses for procedure calls, interrupts, and data are stored on the stack. The contents of the PC are saved
to stack by a CALL instruction and restored by the RET instruction. When an interrupt occurs, the contents of the
PC and the FLAGS register are pushed to the stack. The IRET instruction then pops these values back to their
original locations. The stack address value is always decreased by one before a push operation and increased by
one after a pop operation. The stack pointer (SP) always points to the stack frame stored on the top of the stack, as
shown in Figure 2-15.
High Address
PCL
PCL
Top of
stack
PCH
Top of
stack
PCH
Flags
Stack contents
after a call
instruction
Low Address
Stack contents
after an
interrupt
Figure 2-15. Stack Operations
User-Defined Stacks
You can freely define stacks in the internal register file as data storage locations. The instructions PUSHUI,
PUSHUD, POPUI, and POPUD support user-defined stack operations.
Stack Pointers (SPL, SPH)
Register locations D8H and D9H contain the 16-bit stack pointer (SP) that is used for system stack operations. The
most significant byte of the SP address, SP15–SP8, is stored in the SPH register (D8H), and the least significant
byte, SP7–SP0, is stored in the SPL register (D9H). After a reset, the SP value is undetermined.
Because only internal memory space is implemented in the S3C8245/C8249, the SPL must be initialized to an 8-bit
value in the range 00H–FFH. The SPH register is not needed and can be used as a general-purpose register, if
necessary.
When the SPL register contains the only stack pointer value (that is, when it points to a system stack in the register
file), you can use the SPH register as a general-purpose data register. However, if an overflow or underflow condition
occurs as a result of increasing or decreasing the stack address value in the SPL register during normal stack
operations, the value in the SPL register will overflow (or underflow) to the SPH register, overwriting any other data
that is currently stored there. To avoid overwriting data in the SPH register, you can initialize the SPL value to "FFH"
instead of "00H".
2-18
S3C8245/P8245/C8249/P8249ADDRESS SPACES
+ PROGRAMMING TIP — Standard Stack Operations Using PUSH and POP
The following example shows you how to perform stack operations in the internal register file using PUSH and POP
instructions:
LDSPL,#0FFH; SPL ← FFH
; (Normally, the SPL is set to 0FFH by the initialization
; routine)
Instructions that are stored in program memory are fetched for execution using the program counter. Instructions
indicate the operation to be performed and the data to be operated on. Addressing mode is the method used to
determine the location of the data operand. The operands specified in SAM88RC instructions may be condition
codes, immediate data, or a location in the register file, program memory, or data memory.
The S3C8-series instruction set supports seven explicit addressing modes. Not all of these addressing modes are
available for each instruction. The seven addressing modes and their symbols are:
In Register addressing mode (R), the operand value is the content of a specified register or register pair
(see Figure 3-1).
Working register addressing differs from Register addressing in that it uses a register pointer to specify an 8-byte
working register space in the register file and an 8-bit register within that space (see Figure 3-2).
Program MemoryRegister File
8-bit Register
File Address
One-Operand
Instruction
(Example)
Sample Instruction:
dst
OPCODE
Point to One
OPERAND
Register in Register
File
Value used in
Instruction Execution
DECCNTR; Where CNTR is the label of an 8-bit register address
4-bit
Working Register
Two-Operand
Instruction
(Example)
Sample Instruction:
Figure 3-1. Register Addressing
Program Memory
dst
OPCODE
src
MSB Point to
RP0 ot RP1
3 LSBs
Point to the
Working Register
(1 of 8)
Register File
RP0 or RP1
Selected
RP points
to start
of working
register
block
OPERAND
3-2
ADDR1, R2; Where R1 and R2 are registers in the currently
selected working register area.
Figure 3-2. Working Register Addressing
S3C8245/P8245/C8249/P8249ADDRESSING MODES
INDIRECT REGISTER ADDRESSING MODE (IR)
In Indirect Register (IR) addressing mode, the content of the specified register or register pair is the address of the
operand. Depending on the instruction used, the actual address may point to a register in the register file, to program
memory (ROM), or to an external memory space (see Figures 3-3 through 3-6).
You can use any 8-bit register to indirectly address another register. Any 16-bit register pair can be used to indirectly
address another memory location. Please note, however, that you cannot access locations C0H–FFH in set 1 using
the Indirect Register addressing mode.
Program MemoryRegister File
8-bit Register
File Address
One-Operand
Instruction
(Example)
dst
OPCODE
Point to One
ADDRESS
Register in Register
File
Address of Operand
used by Instruction
Value used in
Instruction Execution
Sample Instruction:
RL@SHIFT; Where SHIFT is the label of an 8-bit register address
OPERAND
Figure 3-3. Indirect Register Addressing to Register File
3-3
ADDRESSING MODESS3C8245/P8245/C8249/P8249
INDIRECT REGISTER ADDRESSING MODE (Continued)
Register File
Program Memory
Example
Instruction
References
Program
Memory
Sample Instructions:
CALL@RR2
JP@RR2
REGISTER
dst
OPCODE
Points to
Register Pair
Value used in
Instruction
PAIR
Program Memory
OPERAND
Figure 3-4. Indirect Register Addressing to Program Memory
16-Bit
Address
Points to
Program
Memory
3-4
S3C8245/P8245/C8249/P8249ADDRESSING MODES
INDIRECT REGISTER ADDRESSING MODE (Continued)
Register File
MSB Points to
4-bit
Working
Register
Address
RP0 or RP1
Program Memory
dst
OPCODEADDRESS
src
3 LSBs
Point to the
Working Register
(1 of 8)
RP0 or RP1
~~
Selected
RP points
to start fo
working register
block
~~
Sample Instruction:
ORR3, @R6
Figure 3-5. Indirect Working Register Addressing to Register File
Value used in
Instruction
OPERAND
3-5
ADDRESSING MODESS3C8245/P8245/C8249/P8249
INDIRECT REGISTER ADDRESSING MODE (Concluded)
Register File
MSB Points to
4-bit Working
Register Address
Example Instruction
References either
Program Memory or
Data Memory
Program Memory
dst
OPCODE
src
RP0 or RP1
Next 2-bit Point
to Working
Register Pair
(1 of 4)
LSB Selects
Value used in
Instruction
RP0 or RP1
Register
Pair
Program Memory
or
Data Memory
OPERAND
Selected
RP points
to start of
working
register
block
16-Bit
address
points to
program
memory
or data
memory
Sample Instructions:
LCDR5,@RR6; Program memory access
LDER3,@RR14; External data memory access
LDE@RR4, R8; External data memory access
Figure 3-6. Indirect Working Register Addressing to Program or Data Memory
3-6
S3C8245/P8245/C8249/P8249ADDRESSING MODES
INDEXED ADDRESSING MODE (X)
Indexed (X) addressing mode adds an offset value to a base address during instruction execution in order to calculate
the effective operand address (see Figure 3-7). You can use Indexed addressing mode to access locations in the
internal register file or in external memory. Please note, however, that you cannot access locations C0H–FFH in
set 1 using Indexed addressing mode.
In short offset Indexed addressing mode, the 8-bit displacement is treated as a signed integer in the range –128 to
+127. This applies to external memory accesses only (see Figure 3-8.)
For register file addressing, an 8-bit base address provided by the instruction is added to an 8-bit offset contained in
a working register. For external memory accesses, the base address is stored in the working register pair
designated in the instruction. The 8-bit or 16-bit offset given in the instruction is then added to that base address (see
Figure 3-9).
The only instruction that supports Indexed addressing mode for the internal register file is the Load instruction (LD).
The LDC and LDE instructions support Indexed addressing mode for internal program memory and for external data
memory, when implemented.
Two-Operand
Instruction
Example
Sample Instruction:
LD R0, #BASE[R1]; Where BASE is an 8-bit immediate value
Program Memory
Base Address
dst/src
OPCODE
x
Value used in
Instruction
+
3 LSBs
Point to One of the
Woking Register
(1 of 8)
Register File
RP0 or RP1
~~
OPERAND
~~
INDEX
Selected RP
points to
start of
working
register
block
Figure 3-7. Indexed Addressing to Register File
3-7
ADDRESSING MODESS3C8245/P8245/C8249/P8249
INDEXED ADDRESSING MODE (Continued)
Register File
MSB Points to
4-bit Working
Register Address
Program Memory
OFFSET
dst/src
OPCODE
x
RP0 or RP1
NEXT 2 Bits
Point to Working
Register Pair
(1 of 4)
LSB Selects
RP0 or RP1
~~
Register
Pair
Program Memory
or
Data Memory
Selected
RP points
to start of
working
register
block
16-Bit
address
added to
offset
+
8-Bits
16-Bits
16-Bits
Sample Instructions:
LDCR4, #04H[RR2]; The values in the program address (RR2 + 04H)
are loaded into register R4.
LDER4,#04H[RR2]; Identical operation to LDC example, except that
external program memory is accessed.
OPERAND
Value used in
Instruction
Figure 3-8. Indexed Addressing to Program or Data Memory with Short Offset
3-8
S3C8245/P8245/C8249/P8249ADDRESSING MODES
INDEXED ADDRESSING MODE (Concluded)
Register File
MSB Points to
4-bit Working
Register Address
Program Memory
OFFSET
OFFSET
dst/src
OPCODE
src
RP0 or RP1
NEXT 2 Bits
Point to Working
Register Pair
LSB Selects
RP0 or RP1
~~
Register
Pair
Program Memory
or
Data Memory
Selected
RP points
to start of
working
register
block
16-Bit
address
added to
offset
+
8-Bits
16-Bits
16-Bits
Sample Instructions:
LDCR4, #1000H[RR2]; The values in the program address (RR2 + 1000H)
are loaded into register R4.
LDER4,#1000H[RR2]; Identical operation to LDC example, except that
external program memory is accessed.
OPERAND
Value used in
Instruction
Figure 3-9. Indexed Addressing to Program or Data Memory
3-9
ADDRESSING MODESS3C8245/P8245/C8249/P8249
DIRECT ADDRESS MODE (DA)
In Direct Address (DA) mode, the instruction provides the operand's 16-bit memory address. Jump (JP) and Call
(CALL) instructions use this addressing mode to specify the 16-bit destination address that is loaded into the PC
whenever a JP or CALL instruction is executed.
The LDC and LDE instructions can use Direct Address mode to specify the source or destination address for Load
operations to program memory (LDC) or to external data memory (LDE), if implemented.
Program or
Data Memory
Memory
Program Memory
Upper Address Byte
Lower Address Byte
dst/src
Sample Instructions:
LDCR5,1234H; The values in the program address (1234H)
LDER5,1234H; Identical operation to LDC example, except that
"0" or "1"
OPCODE
are loaded into register R5.
external program memory is accessed.
Address
Used
LSB Selects Program
Memory or Data Memory:
"0" = Program Memory
"1" = Data Memory
Figure 3-10. Direct Addressing for Load Instructions
3-10
S3C8245/P8245/C8249/P8249ADDRESSING MODES
DIRECT ADDRESS MODE (Continued)
Program Memory
Next OPCODE
Memory
Address
Used
Upper Address Byte
Lower Address Byte
OPCODE
Sample Instructions:
JPC,JOB1; Where JOB1 is a 16-bit immediate address
CALLDISPLAY; Where DISPLAY is a 16-bit immediate address
Figure 3-11. Direct Addressing for Call and Jump Instructions
3-11
ADDRESSING MODESS3C8245/P8245/C8249/P8249
INDIRECT ADDRESS MODE (IA)
In Indirect Address (IA) mode, the instruction specifies an address located in the lowest 256 bytes of the program
memory. The selected pair of memory locations contains the actual address of the next instruction to be executed.
Only the CALL instruction can use the Indirect Address mode.
Because the Indirect Address mode assumes that the operand is located in the lowest 256 bytes of program
memory, only an 8-bit address is supplied in the instruction; the upper bytes of the destination address are assumed
to be all zeros.
Program Memory
Next Instruction
LSB Must be Zero
Current
Instruction
Lower Address Byte
Upper Address Byte
Sample Instruction:
CALL#40H ; The 16-bit value in program memory addresses 40H
and 41H is the subroutine start address.
dst
OPCODE
Program Memory
Locations 0-255
Figure 3-12. Indirect Addressing
3-12
S3C8245/P8245/C8249/P8249ADDRESSING MODES
RELATIVE ADDRESS MODE (RA)
In Relative Address (RA) mode, a twos-complement signed displacement between – 128 and + 127 is specified in
the instruction. The displacement value is then added to the current PC value. The result is the address of the next
instruction to be executed. Before this addition occurs, the PC contains the address of the instruction immediately
following the current instruction.
Several program control instructions use the Relative Address mode to perform conditional jumps. The instructions
that support RA addressing are BTJRF, BTJRT, DJNZ, CPIJE, CPIJNE, and JR.
Program Memory
Next OPCODE
Program Memory
Address Used
Current
Displacement
Current Instruction
Sample Instructions:
JRULT,$+OFFSET ; Where OFFSET is a value in the range +127 to -128
OPCODE
PC Value
Signed
Displacement Value
+
Figure 3-13. Relative Addressing
3-13
ADDRESSING MODESS3C8245/P8245/C8249/P8249
IMMEDIATE MODE (IM)
In Immediate (IM) addressing mode, the operand value used in the instruction is the value supplied in the operand
field itself. The operand may be one byte or one word in length, depending on the instruction used. Immediate
addressing mode is useful for loading constant values into registers.
Program Memory
OPERAND
OPCODE
(The Operand value is in the instruction)
Sample Instruction:
LD R0,#0AAH
Figure 3-14. Immediate Addressing
3-14
S3C8245/P8245/C8249/P8249CONTROL REGISTER
4CONTROL REGISTERS
OVERVIEW
In this chapter, detailed descriptions of the S3C8245/C8249 control registers are presented in an easy-to-read
format. You can use this chapter as a quick-reference source when writing application programs. Figure 4-1
illustrates the important features of the standard register description format.
Control register descriptions are arranged in alphabetical order according to register mnemonic. More detailed
information about control registers is presented in the context of the specific peripheral hardware descriptions in Part
II of this manual.
Data and counter registers are not described in detail in this reference chapter. More information about all of the
registers used by a specific peripheral is presented in the corresponding peripheral descriptions in Part II of this
manual.
The locations and read/write characteristics of all mapped registers in the S3C8245/C8249 register file are listed in
Table 4-1. The hardware reset value for each mapped register is described in Chapter 8, "nRESET and Power-Down."
Port 0 control High registerP0CONH224E0HR/W
Port 0 control Low registerP0CONL225E1HR/W
Port 0 interrupt control registerP0INT226E2HR/W
Port 0 interrupt pending registerP0PND227E3HR/W
Port 1 control High registerP1CONH228E4HR/W
Port 1 control Low registerP1CONL229E5HR/W
Port 2 control High registerP2CONH230E6HR/W
Port 2 control Low registerP2CONL231E7HR/W
Port 3 control High registerP3CONH232E8HR/W
Port 3 control Low registerP3CONL233E9HR/W
Timer B data register (high byte)TBDATAH234EAHR/W
Timer B data register (low byte)TBDATAL235EBHR/W
Timer B control registerTBCON236ECHR/W
Timer A control registerTACON237EDHR/W
Timer A counter registerTACNT238EEHR
Timer A data registerTADATA239EFHR/W
Serial I/O control registerSIOCON240F0HR/W
Serial I/O data registerSIODATA241F1HR/W
Serial I/O pre-scale registerSIOPS242F2HR/W
Oscillator control registerOSCCON243F3HR/W
STOP control registerSTPCON244F4HR/W
Port 1 pull-up control registerP1PUP245F5HR/W
Port 0 data registerP0246F6HR/W
Port 1 data registerP1247F7HR/W
Port 2 data registerP2248F8HR/W
Port 3 data registerP3249F9HR/W
Port 4 data registerP4250FAHR/W
Port 5 data registerP5251FBHR/W
Location FCH is factory use only.
Basic timer data registerBTCNT253FDHR
External memory timing registerEMT254FEHR/W
Interrupt priority registerIPR255FFHR/W
4-2
S3C8245/P8245/C8249/P8249CONTROL REGISTER
Table 4-3. Set 1, Bank 1 Registers
Register NameMnemonicDecimalHexR/W
Locations E0H–EBH is not mapped.
Port 4 control High registerP4CONH236ECHR/W
Port 4 control Low registerP4CONL237EDHR/W
Port 5 control High registerP5CONH238EEHR/W
Port 5 control Low registerP5CONL239EFHR/W
Locations F0H is factory use only.
Timer 0 control registerT0CON241F1HR/W
Timer 0 counter register (high byte)T0CNTH242F2HR
Timer 0 counter register (low byte)T0CNTL243F3HR
Timer 0 data register (high byte)T0DATAH244F4HR/W
Timer 0 data register (low byte)T0DATAL245F5HR/W
Voltage level detector control registerVLDCON246F6HR/W
A/D converter control registerADCON247F7HR/W
A/D converter data register (high byte)ADDATAH248F8HR/W
A/D converter data register (low byte)ADDATAL249F9HR/W
Watch timer control registerWTCON250FAHR/W
Timer 1 control registerT1CON251FBHR/W
Timer 1 counter register (high byte)T1CNTH252FCHR
Timer 1 counter register (low byte)T1CNTL253FDHR
Timer 1 data register (high byte)T1DATAH254FEHR/W
Timer 1 data register (low byte)T1DATAL255FFHR/W
4-3
CONTROL REGISTERSS3C8245/P8245/C8249/P8249
Bit number(s) that is/are appended to
the register name for bit addressing
Full Register nameRegister ID
FLAGS - System Flags Register
Bit Identifier
nRESET Value
Read/Write
Bit Addressing
Mode
.7Carry Flag (C)
.6Zero Flag (Z)
.5
R/WR/WR/W
Register addressing mode only
0Operation does not generate a carry or borrow condition
0Operation generates carry-out or borrow into high-order bit 7
0
0
Sign Flag (S)
0Operation generates positive number (MSB = "0")
0
Name of individual
bit or related bits
Register address
(hexadecimal)
.7.6.5
xxx
Operation result is a non-zero value
Operation result is zero
Operation generates negative number (MSB = "1")
.4.3.2.1.0
x
R/W
x
R/W
D5H
x
R/W
Register location
in the internal
register file
Set 1
x
R/W
0
R/W
Type of addressing
that must be used to
address the bit
(1-bit, 4-bit, or 8-bit)
4-4
R = Read-only
W = Write-only
R/W = Read/write
'-' = Not used
Description of the
effect of specific
bit settings
Figure 4-1. Register Description Format
Bit number:
MSB = Bit 7
LSB = Bit 0
nRESET value notation:
'-' = Not used
'x' = Undetermined value
'0' = Logic zero
'1' = Logic one
S3C8245/P8245/C8249/P8249CONTROL REGISTER
ADCON — A/D Converter Control Register F7H Set 1, Bank 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Value–0000000
Read/Write–R/WR/WR/WRR/WR/WR/W
Addressing ModeRegister addressing mode only
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Value00000000
Read/WriteR/WR/WR/WR/WR/WR/WR/WR/W
Addressing ModeRegister addressing mode only
.7–.4Watchdog Timer Function Disable Code (for System Reset)
1010Disable watchdog timer function
OthersEnable watchdog timer function
.3–.2Basic Timer Input Clock Selection Bits
00
fxx/4096
01fxx/1024
10fxx/128
(3)
11fxx/16
.1
Basic Timer Counter Clear Bit
(1)
0No effect
1Clear the basic timer counter value
.0
Clock Frequency Divider Clear Bit for Basic Timer and Timer/Counters
(2)
0No effect
1Clear both clock frequency dividers
NOTES:
1. When you write a “1” to BTCON.1, the basic timer counter value is cleared to "00H". Immediately following the write
operation, the BTCON.1 value is automatically cleared to “0”.
2. When you write a "1" to BTCON.0, the corresponding frequency divider is cleared to "00H". Immediately following the
write operation, the BTCON.0 value is automatically cleared to "0".
3. The fxx is selected clock for system (main OSC. or sub OSC.).
4-6
S3C8245/P8245/C8249/P8249CONTROL REGISTER
CLKCON—System Clock Control RegisterD4HSet 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Value00000000
Read/Write–––R/WR/W–––
Addressing ModeRegister addressing mode only
.7–.5Not used for the S3C8245/C8249
.4–.3
.2–.0Not used for the S3C8245/C8249
NOTE : After a reset, the slowest clock (divided by 16) is selected as the system clock. To select faster clock speeds, load
the appropriate v alues to CLKCON.3 and CLKCON.4.
CPU Clock (System Clock) Selection Bits
00fxx/16
01fxx/8
10fxx/2
11fxx
(note)
4-7
CONTROL REGISTERSS3C8245/P8245/C8249/P8249
EMT— External Memory Timing RegisterFEHSet 1, Bank 0
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Value0–––––––
Read/Write––––––––
Addressing ModeRegister addressing mode only
.7–.0Not used for the S3C8245/C8249
4-8
S3C8245/P8245/C8249/P8249CONTROL REGISTER
FLAGS— System Flags RegisterD5HSet 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Valuexxxxxx00
Read/WriteR/WR/WR/WR/WR/WR/WRR/W
Addressing ModeRegister addressing mode only
.7Carry Flag (C)
0Operation does not generate a carry or borrow condition
1Operation generates a carry-out or borrow into high-order bit 7
.6Zero Flag (Z)
0Operation result is a non-zero value
1Operation result is zero
.5Sign Flag (S)
0Operation generates a positive number (MSB = "0")
1Operation generates a negative number (MSB = "1")
.4Overflow Flag (V)
0Operation result is ≤ +127 or ≥ –128
1Operation result is > +127 or < –128
0No carry-out of bit 3 or no borrow into bit 3 by addition or subtraction
1Addition generated carry-out of bit 3 or subtraction generated borrow into bit 3
.1Fast Interrupt Status Flag (FIS)
0Interrupt return (IRET) in progress (when read)
1Fast interrupt service routine in progress (when read)
.0Bank Address Selection Flag (BA)
0Bank 0 is selected
1Bank 1 is selected
4-9
CONTROL REGISTERSS3C8245/P8245/C8249/P8249
IMR— Interrupt Mask RegisterDDHSet 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Valuexxxxxxxx
Read/WriteR/WR/WR/WR/WR/WR/WR/WR/W
Addressing ModeRegister addressing mode only
.2Interrupt Level 2 (IRQ2) Enable Bit; Timer 0 Match
0Disable (mask)
1Enable (unmask)
.1Interrupt Level 1 (IRQ1) Enable Bit; Timer B Match
0Disable (mask)
1Enable (unmask)
.0Interrupt Level 0 (IRQ0) Enable Bit; Timer A Match/Capture or Overflow
0Disable (mask)
1Enable (unmask)
NOTE:When an interrupt level is masked, any interrupt requests that may be issued are not recognized by the CPU.
4-10
S3C8245/P8245/C8249/P8249CONTROL REGISTER
INTPND — Interrupt Pending RegisterD2HSet 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Value–––––000
Read/Write–––––R/WR/WR/W
Addressing ModeRegister addressing mode only
.7–.3Not used for the S3C8245/C8249
.2Timer 1 Overflow Interrupt Pending Bit
Interrupt request is not pending, pending bit clear when write 0
0
Interrupt request is pending
1
.1Timer 1 Match/Capture Interrupt Pending Bit
0Interrupt request is not pending, pending bit clear when write 0
1Interrupt request is pending
.0Timer A Overflow Interrupt Pending bit
0Interrupt request is not pending, pending bit clear when write 0
1Interrupt request is pending
4-11
CONTROL REGISTERSS3C8245/P8245/C8249/P8249
IPH— Instruction Pointer (High Byte) DAH Set 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Valuexxxxxxxx
Read/WriteR/WR/WR/WR/WR/WR/WR/WR/W
Addressing ModeRegister addressing mode only
.7–.0Instruction Pointer Address (High Byte)
The high-byte instruction pointer value is the upper eight bits of the 16-bit instruction
pointer address (IP15–IP8). The lower byte of the IP address is located in the IPL
register (DBH).
IPL— Instruction Pointer (Low Byte) DBHSet 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Valuexxxxxxxx
Read/WriteR/WR/WR/WR/WR/WR/WR/WR/W
Addressing ModeRegister addressing mode only
.7–.0Instruction Pointer Address (Low Byte)
The low-byte instruction pointer value is the lower eight bits of the 16-bit instruction
pointer address (IP7–IP0). The upper byte of the IP address is located in the IPH
register (DAH).
4-12
S3C8245/P8245/C8249/P8249CONTROL REGISTER
IPR— Interrupt Priority RegisterFFHSet 1, Bank 0
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Valuexxxxxxxx
Read/WriteR/WR/WR/WR/WR/WR/WR/WR/W
Addressing ModeRegister addressing mode only
.7, .4, and .1Priority Control Bits for Interrupt Groups A, B, and C
000Group priority undefined
001B > C > A
010A > B > C
011B > A > C
100C > A > B
101C > B > A
110A > C > B
111Group priority undefined
.6Interrupt Subgroup C Priority Control Bit
0IRQ6 > IRQ7
1IRQ7 > IRQ6
.5Interrupt Group C Priority Control Bit
0IRQ5 > (IRQ6, IRQ7)
1(IRQ6, IRQ7) > IRQ5
.3Interrupt Subgroup B Priority Control Bit
0IRQ3 > IRQ4
1IRQ4 > IRQ3
.2Interrupt Group B Priority Control Bit
0IRQ2 > (IRQ3, IRQ4)
1(IRQ3, IRQ4) > IRQ2
.0Interrupt Group A Priority Control Bit
0IRQ0 > IRQ1
1IRQ1 > IRQ0
4-13
CONTROL REGISTERSS3C8245/P8245/C8249/P8249
IRQ— Interrupt Request RegisterDCHSet 1
Bit Identifier.7.6.5.4.3.2.1.0
nRESET Value00000000
Read/WriteRRRRRRRR
Addressing ModeRegister addressing mode only