幸运时时彩平台

电子工程世界电子工程世界电子工程世界

产品描述

搜索
 

S3C825

器件型号:S3C825
厂商名称:SAMSUNG
厂商官网:
下载文档

器件描述

8-BIT CMOS MICROCONTROLLERS

文档预览

S3C825器件文档内容

S3C825A/P825A

        8-BIT CMOS
MICROCONTROLLERS

    USER'S MANUAL

               Revision 1
Important Notice

The information in this publication has been             "Typical" parameters can and do vary in different
carefully checked and is believed to be entirely         applications. All operating parameters, including
accurate at the time of publication. Samsung             "Typicals" must be validated for each customer
assumes no responsibility, however, for possible         application by the customer's technical experts.
errors or omissions, or for any consequences
resulting from the use of the information contained      Samsung products are not designed, intended, or
herein.                                                  authorized for use as components in systems
                                                         intended for surgical implant into the body, for other
Samsung reserves the right to make changes in its        applications intended to support or sustain life, or for
products or product specifications with the intent to    any other application in which the failure of the
improve function or design at any time and without       Samsung product could create a situation where
notice and is not required to update this                personal injury or death may occur.
documentation to reflect such changes.
                                                         Should the Buyer purchase or use a Samsung
This publication does not convey to a purchaser of       product for any such unintended or unauthorized
semiconductor devices described herein any license       application, the Buyer shall indemnify and hold
under the patent rights of Samsung or others.            Samsung and its officers, employees, subsidiaries,
                                                         affiliates, and distributors harmless against all
Samsung makes no warranty, representation, or            claims, costs, damages, expenses, and reasonable
guarantee regarding the suitability of its products for  attorney fees arising out of, either directly or
any particular purpose, nor does Samsung assume          indirectly, any claim of personal injury or death that
any liability arising out of the application or use of   may be associated with such unintended or
any product or circuit and specifically disclaims any    unauthorized use, even if such claim alleges that
and all liability, including without limitation any      Samsung was negligent regarding the design or
consequential or incidental damages.                     manufacture of said product.

S3C825A/P825A 8-Bit CMOS Microcontrollers
User's Manual, Revision 1
Publication Number: 21-S3-C825A/P825A-032002

� 2002 Samsung Electronics

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in
any 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 440-900

TEL: (82)-(31)-209-1934
FAX: (82)-(31)-209-1899
Home Page: http://www.samsungsemi.com

Printed in the Republic of Korea
                                     Preface

The S3C825A/P825A Microcontroller User's Manual is designed for application designers and programmers who
are using the S3C825A/P825A microcontroller for application development. It is organized in two main parts:

Part I Programming Model             Part 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 1   Product Overview         Chapter 4   Control Registers
Chapter 2   Address Spaces           Chapter 5   Interrupt Structure
Chapter 3   Addressing Modes         Chapter 6   Instruction Set

Chapter 1, "Product Overview," is a high-level introduction to S3C825A/P825A 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 S3C825A/P825A 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.

Part II "hardware Descriptions," has detailed information about specific hardware components of the
S3C825A/P825A microcontroller. Also included in Part II are electrical, mechanical, OTP, and development tools
data. It has 15 chapters:

Chapter 7   Clock Circuit            Chapter 15  LCD Controller/Driver
                                     Chapter 16  10-bit Analog-to-Digital Converter
Chapter 8   RESET and Power-Down     Chapter 17  Serial I/O Interface
Chapter 9   I/O Ports                Chapter 18  UART
Chapter 10  Basic Timer and Timer 0  Chapter 19  Electrical Data
Chapter 11  Timer 1                  Chapter 20  Mechanical Data
Chapter 12  8-bit Timer 2            Chapter 21  S3P825A OTP
Chapter 13  16-bit Timer 3           Chapter 22  Development Tools
Chapter 14  Watch Timer

Two order forms are included at the back of this manual to facilitate customer order for S3C825A/P825A
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.

S3C825A/P825A MICROCONTROLLER                                                                             iii
                               Table of Contents

           Part I -- Programming Model

Chapter 1  Product Overview

S3C8-Series Microcontrollers...................................................................................................................1-1
S3C825A Microcontroller .........................................................................................................................1-1
OTP.........................................................................................................................................................1-1
Features ..................................................................................................................................................1-2
Block Diagram .........................................................................................................................................1-3
Pin Assignment........................................................................................................................................1-4
Pin Descriptions.......................................................................................................................................1-6
Pin Circuits ..............................................................................................................................................1-8

Chapter 2  Address Spaces

Overview .................................................................................................................................................2-1
Program Memory (ROM) .........................................................................................................................2-2
Register Architecture ...............................................................................................................................2-3

   Register Page Pointer (PP)..................................................................................................................2-5
   Register Set 1......................................................................................................................................2-6
   Register Set 2......................................................................................................................................2-6
   Prime Register Space..........................................................................................................................2-7
   Working Registers ...............................................................................................................................2-8
   Using the Register Points ....................................................................................................................2-9
Register Addressing.................................................................................................................................2-11
   Common Working Register Area (C0H�CFH)......................................................................................2-13
   4-Bit Working Register Addressing ......................................................................................................2-14
   8-Bit Working Register Addressing ......................................................................................................2-16
System and User Stack ...........................................................................................................................2-18

Chapter 3  Addressing Modes

Overview .................................................................................................................................................3-1
Register Addressing Mode (R) .................................................................................................................3-2
Indirect Register Addressing Mode (IR)....................................................................................................3-3
Indexed Addressing Mode (X) ..................................................................................................................3-7
Direct Address Mode (DA) .......................................................................................................................3-10
Indirect Address Mode (IA) ......................................................................................................................3-12
Relative Address Mode (RA)....................................................................................................................3-13
Immediate Mode (IM) ..............................................................................................................................3-14

S3C825A/P825A MICROCONTROLLER                                                                                                                                    v
           Table of Contents (Continued)

Chapter 4  Control Registers

    Overview ................................................................................................................................................ 4-1

Chapter 5  Interrupt Structure

    Overview ................................................................................................................................................ 5-1
           Interrupt Types ............................................................................................................................... 5-2
           S3C825A Interrupt Structure........................................................................................................... 5-3
           Interrupt Vector Addresses ............................................................................................................. 5-5
           Enable/Disable Interrupt Instructions (EI, DI) .................................................................................. 5-7
           System-Level Interrupt Control Registers........................................................................................ 5-7
           Interrupt Processing Control Points................................................................................................. 5-8
           Peripheral Interrupt Control Registers ............................................................................................. 5-9
           System Mode Register (SYM)......................................................................................................... 5-10
           Interrupt Mask Register (IMR)......................................................................................................... 5-11
           Interrupt Priority Register (IPR)....................................................................................................... 5-12
           Interrupt Request Register (IRQ) .................................................................................................... 5-14
           Interrupt Pending Function Types ................................................................................................... 5-15
           Interrupt Source Polling Sequence.................................................................................................. 5-16
           Interrupt Service Routines .............................................................................................................. 5-16
           Generating Interrupt Vector Addresses ........................................................................................... 5-17
           Nesting of Vectored Interrupts ........................................................................................................ 5-17
           Instruction Pointer (IP).................................................................................................................... 5-17
           Fast Interrupt Processing................................................................................................................ 5-17

Chapter 6  Instruction Set

    Overview ................................................................................................................................................ 6-1
           Data Types ..................................................................................................................................... 6-1
           Register Addressing........................................................................................................................ 6-1
           Addressing Modes .......................................................................................................................... 6-1
           Flags Register (Flags) .................................................................................................................... 6-6
           Flag Descriptions............................................................................................................................ 6-7
           Instruction Set Notation .................................................................................................................. 6-8
           Condition Codes ............................................................................................................................. 6-12
           Instruction Descriptions................................................................................................................... 6-13

vi                              S3C825A/P825A MICROCONTROLLER
            Table of Contents (Continued)

            Part II Hardware Descriptions

Chapter 7   Clock Circuit

Overview .................................................................................................................................................7-1
       System Clock Circuit .......................................................................................................................7-1
       Main Oscillator Circuits....................................................................................................................7-2
       Sub Oscillator Circuits .....................................................................................................................7-2
       Clock Status During Power-Down Modes.........................................................................................7-3
       System Clock Control Register (CLKCON) ......................................................................................7-4
       Oscillator Control Register (OSCCON) ............................................................................................7-5
       Switching the CPU Clock.................................................................................................................7-6

Chapter 8   RESET and Power-Down

System Reset ..........................................................................................................................................8-1
       Overview.........................................................................................................................................8-1
       Normal Mode Reset Operation ........................................................................................................8-1
       Hardware Reset Values ...................................................................................................................8-2

Power-Down Modes.................................................................................................................................8-5
       Stop Mode.......................................................................................................................................8-5
       Idle Mode ........................................................................................................................................8-6

Chapter 9   I/O Ports

Overview .................................................................................................................................................9-1
       Port Data Registers .........................................................................................................................9-3
       Port 0, 1 ..........................................................................................................................................9-4
       Port 2 ..............................................................................................................................................9-5
       Port 3 ..............................................................................................................................................9-8
       Port 4 ..............................................................................................................................................9-10
       Port 5 ..............................................................................................................................................9-13
       Port 6, 7, 8 ......................................................................................................................................9-15

Chapter 10  Basic Timer and Timer 0

Overview .................................................................................................................................................10-1
Basic Timer (BT) .....................................................................................................................................10-1

       Basic Timer Control Register (BTCON) ...........................................................................................10-2
       Basic Timer Function Description ....................................................................................................10-3
8-Bit Timer/Counter 0 ..............................................................................................................................10-5
       Timer/Counter 0 Control Register (T0CON).....................................................................................10-5
       Timer 0 Function Description...........................................................................................................10-8

S3C825A/P825A MICROCONTROLLER                                                                                                                                  vii
            Table of Contents (Continued)

Chapter 11  Timer 1

One 16-Bit Timer Mode (Timer 1) ........................................................................................................... 11-1
       Overview ........................................................................................................................................ 11-1
       Function Description....................................................................................................................... 11-1
       Block Diagram................................................................................................................................ 11-3

Two 8-Bit Timers Mode (Timer A and B) ................................................................................................. 11-4
       Overview ........................................................................................................................................ 11-4
       Function Description....................................................................................................................... 11-4

Chapter 12  8-bit Timer 2

Overview ................................................................................................................................................ 12-1
       Function Description....................................................................................................................... 12-1
       Timer 2 Control Register (T2CON) ................................................................................................. 12-2
       Block Diagram................................................................................................................................ 12-3

Chapter 13  16-bit Timer 3

Overview ................................................................................................................................................ 13-1
Timer/Counter 3 Control Register (T3CON) ............................................................................................ 13-1
Timer 3 Function Description .................................................................................................................. 13-4

Chapter 14  Watch Timer

Overview ................................................................................................................................................ 14-1
       Watch Timer Control Register (WTCON)........................................................................................ 14-2
       Watch Timer Circuit Diagram ......................................................................................................... 14-3

Chapter 15  LCD Controller/Driver

Overview ................................................................................................................................................ 15-1
       LCD Circuit Diagram....................................................................................................................... 15-2
       LCD Ram Address Area ................................................................................................................. 15-3
       LCD Control Register (LCON)......................................................................................................... 15-4
       LCD Mode Control Register (LMOD), F3H at Bank 0 of Set 1 ......................................................... 15-5
       LCD Voltage Dividing Resistors ...................................................................................................... 15-6

viii                               S3C825A/P825A MICROCONTROLLER
            Table of Contents (Continued)

Chapter 16  10-bit Analog-to-Digital Converter

Overview .................................................................................................................................................16-1
Function Description ................................................................................................................................16-1

       Conversion Timing ..........................................................................................................................16-2
       A/D Converter Control Register (ADCON) .......................................................................................16-2
       Internal Reference Voltage Levels...................................................................................................16-3
Block Diagram .........................................................................................................................................16-3

Chapter 17  Serial I/O Interface

Overview .................................................................................................................................................17-1
   Programming Procedure......................................................................................................................17-1
   SIO Control Registers (SIOCON).........................................................................................................17-2
   SIO Pre-Scaler Register (SIOPS) ........................................................................................................17-3

SIO Block Diagram ..................................................................................................................................17-3
   Serial I/O Timing Diagram (SIO0, SIO1)..............................................................................................17-4

Chapter 18  UART

Overview .................................................................................................................................................18-1
   Programming Procedure......................................................................................................................18-1
   UART Control Register (UARTCON) ...................................................................................................18-2
   UART Interrupt Pending Bits................................................................................................................18-3
   UART Data Register (Udata) ...............................................................................................................18-4
   UART Baud Rate Data Register (BRDATA) .........................................................................................18-4
   BAUD Rate Calculations......................................................................................................................18-4

Block Diagram .........................................................................................................................................18-6
   UART Mode 0 Function Description.....................................................................................................18-7
   Serial Port Mode 1 Function Description..............................................................................................18-8
   Serial Port Mode 2 Function Description..............................................................................................18-9
   Serial Port Mode 3 Function Description..............................................................................................18-10
   Serial Communication for Multiprocessor Configurations .....................................................................18-11

S3C825A/P825A MICROCONTROLLER                                                                                                                                   ix
            Table of Contents (Concluded)

Chapter 19  Electrical Data

   Overview ................................................................................................................................................ 19-1

Chapter 20  Mechanical Data

   Overview ................................................................................................................................................ 20-1

Chapter 21  S3P825A OTP

   Overview ................................................................................................................................................ 21-1
          Operating Mode Characteristics...................................................................................................... 21-4

Chapter 22  Development Tools

   Overview ................................................................................................................................................ 22-1
          SHINE ............................................................................................................................................ 22-1
          SAMA Assembler ........................................................................................................................... 22-1
          SASM88 ......................................................................................................................................... 22-1
          HEX2ROM...................................................................................................................................... 22-1
          Target Boards................................................................................................................................. 22-1
          TB825A Target Board..................................................................................................................... 22-3
          SMDS2+ Selection (SAM8) ............................................................................................................ 22-4
          Idle LED ......................................................................................................................................... 22-4
          Stop LED........................................................................................................................................ 22-4

x                              S3C825A/P825A MICROCONTROLLER
                               List of Figures

Figure                         Title                Page
Number                                          Number

1-1     Block Diagram........................................................................................................1-3
1-2     S3C825A Pin Assignments (80-TQFP-1212) ..........................................................1-4
1-3     S3C825A Pin Assignments (80-QFP-1420) ............................................................1-5
1-4     Pin Circuit Type A ..................................................................................................1-8
1-5     Pin Circuit Type B (RESET) ...................................................................................1-8
1-6     Pin Circuit Type C ..................................................................................................1-8
1-7     Pin Circuit Type E-4 (P2, P3.4�P3.7, P4, P5) ........................................................1-8
1-8     Pin Circuit Type F-16 (P3.0-P3.3)...........................................................................1-9
1-9     Pin Circuit Type H-23 .............................................................................................1-9
1-10    Pin Circuit Type H-32(P0, P1, P6-P8).....................................................................1-9

2-1     Program Memory Address Space ...........................................................................2-2
2-2     Internal Register File Organization .........................................................................2-4
2-3     Register Page Pointer (PP) ....................................................................................2-5
2-4     Set 1, Set 2, Prime Area Register, and LCD Data Register Map .............................2-7
2-5     8-Byte Working Register Areas (Slices)..................................................................2-8
2-6     Contiguous 16-Byte Working Register Block...........................................................2-9
2-7     Non-Contiguous 16-Byte Working Register Block ...................................................2-10
2-8     16-Bit Register Pair ................................................................................................2-11
2-9     Register File Addressing.........................................................................................2-12
2-10    Common Working Register Area ............................................................................2-13
2-11    4-Bit Working Register Addressing .........................................................................2-15
2-12    4-Bit Working Register Addressing Example ..........................................................2-15
2-13    8-Bit Working Register Addressing .........................................................................2-16
2-14    8-Bit Working Register Addressing Example ..........................................................2-17
2-15    Stack Operations....................................................................................................2-18

3-1     Register Addressing ...............................................................................................3-2
3-2     Working Register Addressing .................................................................................3-2
3-3     Indirect Register Addressing to Register File ..........................................................3-3
3-4     Indirect Register Addressing to Program Memory...................................................3-4
3-5     Indirect Working Register Addressing to Register File ............................................3-5
3-6     Indirect Working Register Addressing to Program or Data Memory ........................3-6
3-7     Indexed Addressing to Register File .......................................................................3-7
3-8     Indexed Addressing to Program or Data Memory with Short Offset ........................3-8
3-9     Indexed Addressing to Program or Data Memory ...................................................3-9
3-10    Direct Addressing for Load Instructions...................................................................3-10
3-11    Direct Addressing for Call and Jump Instructions....................................................3-11
3-12    Indirect Addressing.................................................................................................3-12
3-13    Relative Addressing ...............................................................................................3-13
3-14    Immediate Addressing............................................................................................3-14

S3C825A/P825A MICROCONTROLLER                                                                                                      xi
        List of Figures (Continued)

Figure  Title                            Page
Number                               Number

4-1     Register Description Format .................................................................................. 4-4

5-1     S3C8-Series Interrupt Types.................................................................................. 5-2
5-2     S3C825A Interrupt Structure.................................................................................. 5-4
5-3     ROM Vector Address Area..................................................................................... 5-5
5-4     Interrupt Function Diagram .................................................................................... 5-8
5-5     System Mode Register (SYM)................................................................................ 5-10
5-6     Interrupt Mask Register (IMR)................................................................................ 5-11
5-7     Interrupt Request Priority Groups........................................................................... 5-12
5-8     Interrupt Priority Register (IPR).............................................................................. 5-13
5-9     Interrupt Request Register (IRQ) ........................................................................... 5-14

6-1     System Flags Register (FLAGS)............................................................................ 6-6

7-1     Crystal/Ceramic Oscillator (fx)............................................................................... 7-2
7-2     External Oscillator (fx)........................................................................................... 7-2
7-3     RC Oscillator (fx)................................................................................................... 7-2
7-4     Crystal/Ceramic Oscillator (fxt).............................................................................. 7-2
7-5     External Oscillator (fxt).......................................................................................... 7-2
7-6     System Clock Circuit Diagram ............................................................................... 7-3
7-7     System Clock Control Register (CLKCON) ............................................................ 7-4
7-8     Oscillator Control Register (OSCCON) .................................................................. 7-5
7-9     STOP Control Register (STPCON) ........................................................................ 7-7

9-1     Port Group 0 Control Register (PG0CON) ............................................................. 9-4
9-2     Port 2 High-Byte Control Register (P2CONH) ........................................................ 9-6
9-3     Port 2 Low-Byte Control Register (P2CONL).......................................................... 9-6
9-4     Port 2 Pull-up Control Register (P2PUR) ............................................................... 9-7
9-5     Port 2 Interrupt Control Register (P2INT) ............................................................... 9-7
9-6     Port 3 High-Byte Control Register (P3CONH) ........................................................ 9-8
9-7     Port 3 Low-Byte Control Register (P3CONL).......................................................... 9-9
9-8     Port 3 Pull-up Control Register (P3PUR) ............................................................... 9-9
9-9     Port 4 High-Byte Control Register (P4CONH) ........................................................ 9-10
9-10    Port 4 Low-Byte Control Register (P4CONL).......................................................... 9-11
9-11    Port 4 Interrupt Control Register (P4INT) ............................................................... 9-11
9-12    Port 4 Interrupt Pending Control Register (P4PND)................................................ 9-12
9-13    Port 4 Interrupt Edge Selection Register (P4EDGE) .............................................. 9-12
9-14    Port 5 High-Byte Control Register (P5CONH) ........................................................ 9-13
9-15    Port 5 Low-Byte Control Register (P5CONL).......................................................... 9-14
9-16    Port 5 Pull-up Control Register (P5PUR) ............................................................... 9-14
9-17    Port Group 1 Control Register (PG1CON) ............................................................. 9-15

xii            S3C825A/P825A MICROCONTROLLER
        List of Figures (Continued)

Page                           Title      Page
Number                                Number

10-1    Basic Timer Control Register (BTCON) ..................................................................10-2
10-2    Basic Timer Block Diagram ....................................................................................10-4
10-3    Timer 0 Control Register (T0CON) .........................................................................10-6
10-4    Interrupt Pending Register (INTPND)......................................................................10-7
10-5    Simplified Timer 0 Function Diagram: Interval Timer Mode ....................................10-8
10-6    Simplified Timer 0 Function Diagram: PWM Mode .................................................10-9
10-7    Simplified Timer 0 Function Diagram: Capture Mode .............................................10-10
10-8    Timer 0 Block Diagram...........................................................................................10-11

11-1    Timer 1 Control Register (TACON).........................................................................11-2
11-2    Timer 1 Functional Block Diagram..........................................................................11-3
11-3    Timer A Control Register (TACON) ........................................................................11-5
11-4    Timer B Control Register (TBCON) ........................................................................11-6
11-5    Timer A and B Function Block Diagram..................................................................11-7

12-1    Timer 2 Control Register (T2CON) .........................................................................12-2
12-2    Timer 2 Functional Block Diagram..........................................................................12-3

13-1    Timer 3 Control Register (T3CON) .........................................................................13-2
13-2    Interrupt Pending Register (INTPND)......................................................................13-3
13-3    Simplified Timer 3 Function Diagram: Interval Timer Mode ....................................13-4
13-4    Simplified Timer 3 Function Diagram: PWM Mode .................................................13-5
13-5    Simplified Timer 3 Function Diagram: Capture Mode .............................................13-6
13-6    Timer 3 Block Diagram...........................................................................................13-7

14-1    Watch Timer Control Register (WTCON) ...............................................................14-2
14-2    Watch Timer Circuit Diagram .................................................................................14-3

15-1    LCD Function Diagram ...........................................................................................15-1
15-2    LCD Circuit Diagram ..............................................................................................15-2
15-3    LCD Display Data RAM Organization .....................................................................15-3
15-4    LCD Control Register (LCON) ................................................................................15-4
15-5    LCD Bias Circuit Connection ..................................................................................15-6
15-6    Example 1 for the Usage of LCON.7�.6..................................................................15-7
15-7    Example 2 for the Usage of LCON.7�.6..................................................................15-8
15-8    LCD Signal Waveforms (1/3 Duty, 1/3 Bias)...........................................................15-9
15-9    LCD Signal Waveforms (1/4 Duty, 1/3 Bias)...........................................................15-10
15-10   LCD Signal Waveforms (1/8 Duty, 1/4 Bias)...........................................................15-11
15-11   LCD Signal Waveforms (1/8 Duty, 1/5 Bias)...........................................................15-13

16-1    A/D Converter Control Register (ADCON) ..............................................................16-2
16-2    A/D Converter Data Register (ADDATAH/ADDATAL) .............................................16-3
16-3    A/D Converter Functional Block Diagram ...............................................................16-3
16-4    Recommended A/D Converter Circuit for Highest Absolute Accuracy.....................16-4

S3C825A/P825A MICROCONTROLLER         xiii
        List of Figures (Concluded)

Page    Title                            Page
Number                               Number

17-1    Serial I/O Module Control Register (SIOCON) ....................................................... 17-2
17-2    SIO Prescaler Register (SIOPS) ............................................................................ 17-3
17-3    SIO Functional Block Diagram............................................................................... 17-3
17-4    Serial I/O Timing in Transmit/Receive Mode (Tx at falling, SIOCON.4 = 0) ........... 17-4
17-5    Serial I/O Timing in Transmit/Receive Mode (Tx at rising, SIOCON.4 = 1) ............ 17-4

18-1    UART Control Register (UARTCON) ..................................................................... 18-2
18-2    UART Interrupt Pending Bits (INTPND.5�.4).......................................................... 18-3
18-3    UART Data Register (UDATA)............................................................................... 18-4
18-4    UART Baud Rate Data Register (BRDATA) ........................................................... 18-4
18-5    UART Functional Block Diagram ........................................................................... 18-6
18-6    Timing Diagram for Serial Port Mode 0 Operation ................................................. 18-7
18-7    Timing Diagram for Serial Port Mode 1 Operation ................................................. 18-8
18-8    Timing Diagram for Serial Port Mode 2 Operation ................................................. 18-9
18-9    Timing Diagram for Serial Port Mode 3 Operation ................................................. 18-10
18-10   Connection Example for Multiprocessor Serial Data Communications ................... 18-12

19-1    Input Timing for External Interrupts (P2.4�P2.7, P4).............................................. 19-5
19-2
19-3    Input Timing for RESET ........................................................................................ 19-5
19-4
19-5    Stop Mode Release Timing Initiated by RESET..................................................... 19-6
19-6    Stop Mode Release Timing Initiated by Interrupts.................................................. 19-7
19-7    Serial Data Transfer Timing................................................................................... 19-9
19-8    Clock Timing Measurement at XIN ......................................................................... 19-11
19-9    Clock Timing Measurement at XTIN ....................................................................... 19-11
19-10   Operating Voltage Range ...................................................................................... 19-12
        Waveform for UART Timing Characteristics .......................................................... 19-13
20-1    A.C. Timing Waveform for the UART Module ........................................................ 19-14
20-2
        Package Dimensions (80-QFP-1420C) .................................................................. 20-1
21-1    Package Dimension (80-TQFP-1212) .................................................................... 20-2
21-2
21-3    S3P825A Pin Assignments (80-Pin TQFP Package).............................................. 21-2
        S3P825A Pin Assignments (80-Pin QFP Package) ................................................ 21-3
22-1    Operating Voltage Range ...................................................................................... 21-5
22-2
22-3    SMDS Product Configuration (SMDS2+) ............................................................... 22-2
22-4    TB825A Target Board Configuration ...................................................................... 22-3
        40-Pin Connectors (J101, J102) for TB825A.......................................................... 22-5
        S3C825A Cables for 80-TQFP Package ................................................................ 22-6

xiv            S3C825A/P825A MICROCONTROLLER
                               List of Tables

Table                          Title               Page
Number                                         Number

1-1     S3C825A Pin Descriptions......................................................................................1-6
        S3C825A Register Type Summary .........................................................................2-3
2-1
        Set 1 Registers (INTPND/STPCON/OSCCON are in bank 0 of set 1).....................4-1
4-1     Set 1, Bank 0 Registers ..........................................................................................4-2
4-2     Set 1, Bank 1 Registers ..........................................................................................4-3
4-3
        Interrupt Vectors.....................................................................................................5-6
5-1     Interrupt Control Register Overview........................................................................5-7
5-2     Interrupt Source Control and Data Registers...........................................................5-9
5-3
        Instruction Group Summary....................................................................................6-2
6-1     Flag Notation Conventions .....................................................................................6-8
6-2     Instruction Set Symbols..........................................................................................6-8
6-3     Instruction Notation Conventions ............................................................................6-9
6-4     Opcode Quick Reference .......................................................................................6-10
6-5     Condition Codes.....................................................................................................6-12
6-6
        S3C825A Set 1 Register and Values after RESET..................................................8-2
8-1     S3C825A Set 1, Bank 0 Register Values after RESET ...........................................8-3
8-2     S3C825A Set 1, Bank 1 Register Values after RESET ...........................................8-4
8-3
        S3C825A Port Configuration Overview...................................................................9-2
9-1     Port Data Register Summary..................................................................................9-3
9-2
        LCD Mode Control Register (LMOD) Organization..................................................15-5
15-1    Commonly Used Baud Rates Generated by BRDATA ............................................18-5

18-1

S3C825A/P825A MICROCONTROLLER                                                                                                  xv
        List of Tables (Continued)

Table   Title                           Page
Number                              Number

19-1    Absolute Maximum Ratings ................................................................................... 19-2
19-2    D.C. Electrical Characteristics ............................................................................... 19-2
19-3    A.C. Electrical Characteristics................................................................................ 19-5
19-4    Input/Output Capacitance ...................................................................................... 19-6
19-5    Data Retention Supply Voltage in Stop Mode ........................................................ 19-6
19-6    A/D Converter Electrical Characteristics ................................................................ 19-8
19-7    Synchronous SIO Electrical Characteristics ........................................................... 19-9
19-8    Main Oscillator Characteristics .............................................................................. 19-10
19-9    Sub Oscillator Characteristics................................................................................ 19-10
19-10   Main Oscillator Stabilization Time.......................................................................... 19-11
19-11   Sub Oscillator Stabilization Time ........................................................................... 19-11
19-12   UART Timing Characteristics in Mode 0 (8 MHz)................................................... 19-13

21-1    Descriptions of Pins Used to Read/Write the EPROM............................................ 21-4
21-2    Comparison of S3P825A and S3C825A Features .................................................. 21-4
21-3    Operating Mode Selection Criteria ......................................................................... 21-4

22-1    Power Selection Settings for TB825A .................................................................... 22-4
22-2    The SMDS2+ Tool Selection Setting ..................................................................... 22-4

xvi            S3C825A/P825A MICROCONTROLLER
List of Programming Tips

Description                        Page
Chapter 2: Address Spaces      Number

Using the Page Pointer for RAM clear (Page 0, Page1) .......................................................................2-5
Setting the Register Pointers ...............................................................................................................2-9
Using the RPs to Calculate the Sum of a Series of Registers...............................................................2-10
Addressing the Common Working Register Area .................................................................................2-14
Standard Stack Operations Using PUSH and POP ..............................................................................2-19

Chapter 7: Clock Circuit
       Switching the CPU clock......................................................................................................................7-6

S3C825A/P825A MICROCONTROLLER                                                                                                                            xvii
            List of Register Descriptions

Register                       Full Register Name      Page
Identifier                                         Number

ADCON       A/D Converter Control Register ..............................................................................4-5
BTCON       Basic Timer Control Register..................................................................................4-6
CLKCON      System Clock Control Register...............................................................................4-7
FLAGS       System Flags Register ...........................................................................................4-8
IMR         Interrupt Mask Register ..........................................................................................4-9
INTPND      Interrupt Pending Register......................................................................................4-10
IPH         Instruction Pointer (High Byte) ...............................................................................4-11
IPL         Instruction Pointer (Low Byte) ................................................................................4-11
IPR         Interrupt Priority Register........................................................................................4-12
IRQ         Interrupt Request Register......................................................................................4-13
LCON        LCD Control Register .............................................................................................4-14
LMOD        LCD Mode Control Register....................................................................................4-15
OSSCON      Oscillator Control Register......................................................................................4-16
P2CONH      Port 2 Control Register (High Byte) ........................................................................4-17
P2CONL      Port 2 Control Register (Low Byte) .........................................................................4-18
P2PUR       Port 2 Pull-up Control Register ...............................................................................4-19
P2INT       Port 2 Interrupt Control Register .............................................................................4-20
P3CONH      Port 3 Control Register (High Byte) ........................................................................4-21
P3CONL      Port 3 Control Register (Low Byte) .........................................................................4-22
P3PUR       Port 3 Pull-up Control Register ...............................................................................4-23
P4CONH      Port 4 Control Register (High Byte) ........................................................................4-24
P4CONL      Port 4 Control Register (Low Byte) .........................................................................4-25
P4EDGE      Port 4 Interrupt Edge Selection Register.................................................................4-26
P4INT       Port 4 Interrupt Control Register .............................................................................4-27
P4PND       Port 4 Interrupt Pending Register ...........................................................................4-28
P5CONH      Port 5 Control Register (High Byte) ........................................................................4-29
P5CONL      Port 5 Control Register (Low Byte) .........................................................................4-30
P5PUR       Port 5 Pull-up Control Register ...............................................................................4-31
PG0CON      Port Group 0 Control Register ................................................................................4-32
PG1CON      Port Group 1 Control Register ................................................................................4-33
PP          Register Page Pointer ............................................................................................4-34
RP0         Register Pointer 0...................................................................................................4-35
RP1         Register Pointer 1...................................................................................................4-35
SIOCON      SIO Control Register ..............................................................................................4-36
SPH         Stack Pointer (High Byte) .......................................................................................4-37
SPL         Stack Pointer (Low Byte) ........................................................................................4-37
STPCON      Stop Control Register .............................................................................................4-38
SYM         System Mode Register ...........................................................................................4-39
T0CON       Timer 0 Control Register ........................................................................................4-40
TACON       Timer 1/A Control Register .....................................................................................4-41
TBCON       Timer B Control Register........................................................................................4-42
T2CON       Timer 2 Control Register ........................................................................................4-43
T3CON       Timer 3 Control Register ........................................................................................4-44
UARTCON     UART Control Register...........................................................................................4-45
WTCON       Watch Timer Control Register ................................................................................4-46

S3C825A/P825A MICROCONTROLLER                      xix
xx  S3C825A/P825A MICROCONTROLLER
             List of Instruction Descriptions

Instruction                    Full Register Name      Page
Mnemonic                                           Number

ADC          Add with Carry........................................................................................................6-14
ADD          Add ........................................................................................................................6-15
AND          Logical AND ...........................................................................................................6-16
BAND         Bit AND ..................................................................................................................6-17
BCP          Bit Compare ...........................................................................................................6-18
BITC         Bit Complement .....................................................................................................6-19
BITR         Bit Reset ................................................................................................................6-20
BITS         Bit Set ....................................................................................................................6-21
BOR          Bit OR ....................................................................................................................6-22
BTJRF        Bit Test, Jump Relative on False............................................................................6-23
BTJRT        Bit Test, Jump Relative on True .............................................................................6-24
BXOR         Bit XOR..................................................................................................................6-25
CALL         Call Procedure .......................................................................................................6-26
CCF          Complement Carry Flag .........................................................................................6-27
CLR          Clear ......................................................................................................................6-28
COM          Complement...........................................................................................................6-29
CP           Compare ................................................................................................................6-30
CPIJE        Compare, Increment, and Jump on Equal ..............................................................6-31
CPIJNE       Compare, Increment, and Jump on Non-Equal .......................................................6-32
DA           Decimal Adjust .......................................................................................................6-33
DEC          Decrement .............................................................................................................6-35
DECW         Decrement Word....................................................................................................6-36
DI           Disable Interrupts ...................................................................................................6-37
DIV          Divide (Unsigned)...................................................................................................6-38
DJNZ         Decrement and Jump if Non-Zero ..........................................................................6-39
EI           Enable Interrupts ....................................................................................................6-40
ENTER        Enter ......................................................................................................................6-41
EXIT         Exit ........................................................................................................................6-42
IDLE         Idle Operation ........................................................................................................6-43
INC          Increment ............................................................................................................... 6-44
INCW         Increment Word .....................................................................................................6-45
IRET         Interrupt Return ......................................................................................................6-46
JP           Jump ...................................................................................................................... 6-47
JR           Jump Relative ........................................................................................................6-48
LD           Load.......................................................................................................................6-49
LDB          Load Bit..................................................................................................................6-51

S3C825A/P825A MICROCONTROLLER                      xxi
               List of Instruction Descriptions (Continued)

Instruction    Full Register Name                                Page
Mnemonic                                                     Number

LDC/LDE        Load Memory .........................................................................................................6-52
LDCD/LDED      Load Memory and Decrement ................................................................................6-54
LDCI/LDEI      Load Memory and Increment ..................................................................................6-55
LDCPD/LDEPD    Load Memory with Pre-Decrement .........................................................................6-56
LDCPI/LDEPI    Load Memory with Pre-Increment ...........................................................................6-57
LDW            Load Word .............................................................................................................6-58
MULT           Multiply (Unsigned).................................................................................................6-59
NEXT           Next .......................................................................................................................6-60
NOP            No Operation..........................................................................................................6-61
OR             Logical OR .............................................................................................................6-62
POP            Pop from Stack.......................................................................................................6-63
POPUD          Pop User Stack (Decrementing) .............................................................................6-64
POPUI          Pop User Stack (Incrementing)...............................................................................6-65
PUSH           Push to Stack .........................................................................................................6-66
PUSHUD         Push User Stack (Decrementing)............................................................................6-67
PUSHUI         Push User Stack (Incrementing) .............................................................................6-68
RCF            Reset Carry Flag ....................................................................................................6-69
RET            Return ....................................................................................................................6-70
RL             Rotate Left .............................................................................................................6-71
RLC            Rotate Left through Carry .......................................................................................6-72
RR             Rotate Right ...........................................................................................................6-73
RRC            Rotate Right through Carry .....................................................................................6-74
SB0            Select Bank 0 .........................................................................................................6-75
SB1            Select Bank 1 .........................................................................................................6-76
SBC            Subtract with Carry .................................................................................................6-77
SCF            Set Carry Flag ........................................................................................................6-78
SRA            Shift Right Arithmetic..............................................................................................6-79
SRP/SRP0/SRP1  Set Register Pointer ...............................................................................................6-80
STOP           Stop Operation .......................................................................................................6-81
SUB            Subtract..................................................................................................................6-82
SWAP           Swap Nibbles .........................................................................................................6-83
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

xxii                               S3C825A/P825A MICROCONTROLLER
S3C825A/P825A  PRODUCT OVERVIEW

1 PRODUCT 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.

S3C825A MICROCONTROLLER

The S3C825A single-chip microcontroller are fabricated using the highly advanced CMOS process. Its design is
based on the powerful SAM88RC CPU core. Stop and idle (power-down) modes were implemented to reduce
power consumption.
The S3C825A is a microcontroller with a 48K-byte mask-programmable ROM embedded.
The S3P825A is a microcontroller with a 48K-byte one-time-programmable ROM embedded.
Using the SAM88RC modular design approach, the following peripherals were integrated with the SAM88RC
CPU core:
-- Large number of programmable I/O ports (Total 67 pins)
-- Synchronous SIO module
-- Two 8-bit timer/counters
-- Two 16-bit timer/counters
-- LCD controller/driver
-- A/D converter with 4 selectable input pins

OTP

The S3C825A microcontroller is also available in OTP (One Time Programmable) version, S3P825A.
The S3P825A microcontroller has an on-chip 48K-byte one-time-programmable EPROM instead of masked
ROM. The S3P825A is comparable to S3C825A, both in function and in pin configuration.

               1-1
PRODUCT OVERVIEW                                                                                         S3C825A/P825A

FEATURES                                           Watch Timer
                                                   � Interval Time: 3.19ms, 0.25s, 0.5s, 1.0s at
CPU
� SAM88RC CPU core                                      32.768 kHz
                                                   � 0.5/1/2/4 kHz buzzer output selectable
Memory
� 2064-byte internal register file (including LCD  Analog to Digital Converter
                                                   � 4-channel analog input
     display RAM)                                  � 10-bit conversion resolution
� 48K-byte internal program memory area            � 25�s conversion time

Instruction Set                                    Serial I/O Interface
� 78 instructions                                  � 8-bit transmit/receive mode
� Idle and Stop instructions                       � 8-bit receive mode
                                                   � Selectable baud rate or external clock source
67 I/O Pins
� 31 normal I/O pins                               UART
� 36 pins sharing with LCD signals                 � Full-duplex serial I/O interface
                                                   � Four programmable operating modes
Interrupts
� 8 interrupt levels and 23 internal sources       LCD Controller/Driver
� Fast interrupt processing feature                � 28 segments and 8 common terminals
                                                   � 3, 4, and 8 common selectable
8-Bit Basic Timer                                  � Internal resistor circuit for LCD bias
� Watchdog timer function
� 4 kinds of clock source                          Two Power-Down Modes
                                                   � Idle mode: only CPU clock stops
Timer/Counter 0                                    � Stop mode: system clock and CPU clock stop
� Programmable 8-bit internal timer
� External event counter function                  Oscillation Source
� PWM and capture function                         � Crystal, ceramic, or RC for main clock
                                                   � Crystal for sub clock (32.768 kHz)
Timer/Counter 1
� One 16-bit timer/counter mode                    Instruction Execution Time
� Two 8-bit timer/counters A/B mode                � 500 ns at fx=8 MHz (minimum, main clock)
� External event counter function                  � 122�s at fxt=32.768 kHz (sub clock)

Timer/Counter 2                                    Operating Temperature Range
� Programmable 8-bit interval timer                � �25 �C to +85 �C
� External event counter function
                                                   Operating Voltage Range
Timer/Counter 3                                    � 2.0 V to 5.5 V at 4 MHz (main clock)
� Programmable 16-bit interval timer               � 2.2 V to 5.5 V at 8 MHz (main clock)
� External event counter function                  � 2.0 V to 5.5 V at 32.768 kHz (sub clock)
� PWM and capture function
                                                   Package Type
                                                   � 80-pin TQFP-1212, 80-pin QFP-1420

1-2
S3C825A/P825A                                                                                         PRODUCT OVERVIEW

BLOCK DIAGRAM

                                                       RESET     P1.4-P1.7/   P4.0-P4.7/
                                                                 INT0-INT3   INT4-INT11

                        XIN            Main OSC        I/O Port and Interrupt Control     Port 0      P0.0-P0.7/
                     XOUT                                                                 Port 1      SEG16-SEG23
                             Timer 1    Sub OSC                                           Port 2
                      XTIN                                                                            P1.0-P1.7/
                   XTOUT                   8-Bit              SAM88RC Core                Port 3      SEG24-SEG31
                                    Timer/Counter0                                        Port 4
            P2.4/T0CLK                                                                                P2.0
            P3.7/T0CAP                  8-bit Timer A                                                 P2.1
P3.7/T0OUT/T0PWM                        8-bit Timer A                                                 P2.2/T2CLK
                                                                                                      P2.3/T2OUT
            P2.5/T1CLK                     8-Bit                                                      P2.4/INT0/T0CLK
           P2.6/TAOUT               Timer/Counter2                                                    P2.5/INT1/T1CLK
           P2.7/TBOUT                                                                                 P2.6/INT2/TAOUT
                                          16-Bit                                                      P2.7/INT3/TBOUT
            P2.2/T2CLK              Timer/Counter3
            P2.3/T2OUT                                                                                P3.0/AD0
                                           SIO                                                        P3.1/AD1
            P3.5/T3CLK                                                                                P3.2/AD2
            P3.6/T3CAP                Basic Timer                                                     P3.3/AD3
P3.6/T3OUT/T3PWM                                                                                      P3.4
                                                                                                      P3.5/T3CLK
                P5.0/SCK                                                                              P3.6/T3OUT/P
                   P5.1/SI                                                                            P3.6/T3OUT/

                 P5.2/SO                                                                              P3.7/T0OUT/
                                                                                                      T0PWM/T0CAP
               Watchdog                                                                               P4.0-P4.7/
                  Timer                                                                               INT4-INT11

P5.0/BUZ                            Watch Timer                                              Port 5   P5.0/SCK
                                                                                                      P5.1/SI
       P5.4/RXD                    UART                48K-byte   2064-byte                  Port 6   P5.2/SO
       P5.5/TXD                                          ROM     Register File               Port 7   P5.3/BUZ
                                    LCD                                                      Port 8   P5.4/RXD
      P6.0-P6.3/             Driver/Controller                                            10-bit ADC  P5.5/TXD
  COM0-COM3
                                                                                                      P6.0/COM0
      P6.4-P6.7/                                                                                      P6.1/COM1
COM4-COM7/                                                                                           P6.2/COM2
                                                                                                      P6.3/COM3
   SEG0-SEG3                                                                                          P6.4/COM4/SEG0
                                                                                                      P6.5/COM5/SEG1
      P7.0-P8.3/                                                                                      P6.6/COM6/SEG2
SEG4-SEG15                                                                                           P6.7/COM7/SEG3

      P0.0-P1.7/                                                                                      P7.0-P7.7/
SEG16-SEG31                                                                                           SEG4-SEG11

             VLC1                                                                                     P8.0-P8.3/
                                                                                                      SEG12-SEG15

                                                                                                      P3.0-P3.3/
                                                                                                      AD0-AD3

                                                       TEST VDD1/VDD2 VSS1/VSS2

                                                       Figure 1-1. Block Diagram

                                                                                                                       1-3
PRODUCT OVERVIEW                                                                                                                                                                                                                                                                                                                            S3C825A/P825A

PIN ASSIGNMENT

                           80 P1.0/SEG24
                              79 P0.7/SEG23
                                  78 P0.6/SEG22
                                     77 P0.5/SEG21
                                         76 P0.4/SEG20
                                            75 P0.3/SEG19
                                                74 P0.2/SEG18
                                                    73 P0.1/SEG17
                                                       72 P0.0/SEG16
                                                           71 P8.3/SEG15
                                                              70 P8.2/SEG14
                                                                  69 P8.1/SEG13
                                                                      68 P8.0/SEG12
                                                                         67 P7.7/SEG11
                                                                             66 P7.6/SEG10
                                                                                65 P7.5/SEG9
                                                                                    64 P7.4/SEG8
                                                                                        63 P7.3/SEG7
                                                                                           62 P7.2/SEG6
                                                                                               61 P7.1/SEG5

       P1.1/SEG25 1                                                                                           S3C825A                                                                                                                                                                                                                       60 P7.0/SEG4
       P1.2/SEG26 2                                                                                                                                                                                                                                                                                                                         59 P6.7/SEG3/COM7
       P1.3/SEG27 3                                                                                        (80-TQFP-1212)                                                                                                                                                                                                                   58 P6.6/SEG2/COM6
       P1.4/SEG28 4                                                                                                                                                                                                                                                                                                                         57 P6.5/SEG1/COM5
       P1.5/SEG29 5                                                                                                                                                                                                                                                                                                                         56 P6.4/SEG0/COM4
       P1.6/SEG30 6                                                                                                                                                                                                                                                                                                                         55 P6.3/COM3
       P1.7/SEG31 7                                                                                                                                                                                                                                                                                                                         54 P6.2/COM2
                                                                                                                                                                                                                                                                                                                                            53 P6.1/COM1
                 P2.0 8                                                                                                                                                                                                                                                                                                                     52 P6.0/COM0
                 P2.1 9                                                                                                                                                                                                                                                                                                                     51 VDD2
                 VDD1 10                                                                                                                                                                                                                                                                                                                    50 VSS2
                 VSS1 11                                                                                                                                                                                                                                                                                                                    49 VLC1
                XOUT 12                                                                                                                                                                                                                                                                                                                     48 P5.6
                                                                                                                                                                                                                                                                                                                                            47 P5.5/TXD
                   XIN 13                                                                                                                                                                                                                                                                                                                   46 P5.4/RXD
                TEST 14                                                                                                                                                                                                                                                                                                                     45 P5.3/BUZ
                                                                                                                                                                                                                                                                                                                                            44 P5.2/SO
                 XTIN 15                                                                                                                                                                                                                                                                                                                    43 P5.1/SI
              XTOUT 16                                                                                                                                                                                                                                                                                                                      42 P5.0/SCK
             RESET 17                                                                                                                                                                                                                                                                                                                       41 P4.7/INT11
       P2.2/T2CLK 18
      P2.3/T2OUT 19
P2.4/INT0/T0CLK 20

                           P2.5/INT1/T1CLK 21  P2.6/INT2/TAOUT 22  P2.7/INT3/TBOUT 23  24     P3.0/AD0 25  P3.1/AD1 26  P3.2/AD2 27  P3.3/AD3 28  AVSS 29  P3.4 30  P3.5/T3CLK 31  P3.6/T3OUT/T3PWM/T3CAP 32  P3.7/T0OUT/T0PWM/T0CAP 33  P4.0/INT4 34  P4.1/INT5 35  P4.2/INT6 36  P4.3/INT7 37  P4.4/INT8 38  P4.5/INT9 39  P4.6/INT10 40

                                                                                       AVREF

                                    Figure 1-2. S3C825A Pin Assignments (80-TQFP-1212)
1-4
S3C825A/P825A                                                                                                                                                                                                                                                        PRODUCT OVERVIEW

                            80 P0.6/SEG22
                               79 P0.5/SEG21
                                   78 P0.4/SEG20
                                      77 P0.3/SEG19
                                          76 P0.2/SEG18
                                             75 P0.1/SEG17
                                                 74 P0.0/SEG16
                                                     73 P8.3/SEG15
                                                        72 P8.2/SEG14
                                                            71 P8.1/SEG13
                                                               70 P8.0/SEG12
                                                                   69 P7.7/SEG11
                                                                       68 P7.6/SEG10
                                                                          67 P7.5/SEG9
                                                                              66 P7.4/SEG8
                                                                                 65 P7.3/SEG7

       P0.7/SEG23 1                                                               S3C825A                                                                                                                                                                            64 P7.2/SEG6
       P1.0/SEG24 2                                                                                                                                                                                                                                                  63 P7.1/SEG5
       P1.1/SEG25 3                                                              (80-QFP-1420C)                                                                                                                                                                      62 P7.0/SEG4
       P1.2/SEG26 4                                                                                                                                                                                                                                                  61 P6.7/SEG3/COM7
       P1.3/SEG27 5                                                                                                                                                                                                                                                  60 P6.6/SEG2/COM6
       P1.4/SEG28 6                                                                                                                                                                                                                                                  59 P6.5/SEG1/COM5
       P1.5/SEG29 7                                                                                                                                                                                                                                                  58 P6.4/SEG0/COM4
       P1.6/SEG30 8                                                                                                                                                                                                                                                  57 P6.3/COM3
       P1.7/SEG31 9                                                                                                                                                                                                                                                  56 P6.2/COM2
                                                                                                                                                                                                                                                                     55 P6.1/COM1
                  P2.0 10                                                                                                                                                                                                                                            54 P6.0/COM0
                  P2.1 11                                                                                                                                                                                                                                            53 VDD2
                  VDD1 12                                                                                                                                                                                                                                            52 VSS2
                  VSS1 13                                                                                                                                                                                                                                            51 VLC1
                 XOUT 14                                                                                                                                                                                                                                             50 P5.6
                                                                                                                                                                                                                                                                     49 P5.5/TXD
                    XIN 15                                                                                                                                                                                                                                           48 P5.4/RXD
                 TEST 16                                                                                                                                                                                                                                             47 P5.3/BUZ
                                                                                                                                                                                                                                                                     46 P5.2/SO
                  XTIN 17                                                                                                                                                                                                                                            45 P5.1/SI
               XTOUT 18                                                                                                                                                                                                                                              44 P5.0/SCK
              RESET 19                                                                                                                                                                                                                                               43 P4.7/INT11
        P2.2/T2CLK 20                                                                                                                                                                                                                                                42 P4.6/INT10
       P2.3/T2OUT 21                                                                                                                                                                                                                                                 41 P4.5/INT9
P2.4/INT0/T0CLK 22
P2.5/INT1/T1CLK 23
P2.6/INT2/TAOUT 24

                            P2.7/INT3/TBOUT 25  26     P3.0/AD0 27  P3.1/AD1 28  P3.2/AD2 29  P3.3/AD3 30  31    P3.4 32  P3.5/T3CLK 33  P3.6/T3OUT/T3PWM/T3CAP 34  P3.7/T0OUT/T0PWM/T0CAP 35  P4.0/INT4 36  P4.1/INT5 37  P4.2/INT6 38  P4.3/INT7 39  P4.4/INT8 40

                                                AVREF                                                      AVSS

               Figure 1-3. S3C825A Pin Assignments (80-QFP-1420)
                                                                                                                                        1-5
PRODUCT OVERVIEW                                                                       S3C825A/P825A

PIN DESCRIPTIONS

                        Table 1-1. S3C825A Pin Descriptions

     Pin    Pin              Pin                                Circuit      Pin       Share
  Names    Type         Description                              Type    Numbers        Pins
P0.0�P0.7
           I/O 4-bit-programmable I/O port.                     H-32       72�79       SEG16
P1.0�1.7           Input or push-pull, open-drain output and    H-32     (74-80, 1)        �
                   software assignable pull-ups.
P2.0                                                                      80, 1�7      SEG23
P2.1       I/O 4-bit-programmable I/O port.                                 (2-9)
P2.2               Input or push-pull, open-drain output and                           SEG24
P2.3               software assignable pull-ups.                                           �
P2.4
P2.5                                                                                   SEG31
P2.6
P2.7       I/O 1-bit-programmable I/O port.                     E-4       8 (10)                   �
P3.0�P3.3                                                                 9 (11)                   �
                  Schmitt trigger input or push-pull, open-              18 (20)               T2CLK
P3.4                                                                     19 (21)              T2OUT
P3.5              drain output and software assignable pull-             20 (22)           INT0/T0CLK
P3.6                                                                     21 (23)           INT1/T1CLK
P3.7              ups.                                                   22 (24)          INT2/TAOUT
P4.0�P4.7                                                                23 (25)          INT3/TBOUT
                  P2.4�P2.7: Alternately used for external
P5.0              interrupt input (Noise filters, interrupt               25�28              AD0�AD3
P5.1              enable and pending control)                            (27�30)
P5.2                                                                                               �
P5.3       I/O 1-bit-programmable I/O port.                     F-16     30(32)                T3CLK
P5.4               Schmitt trigger input or push-pull,          E-4      31(33)
P5.5               open-drain output, and software                       32(34)        T3OUT/T3PWM/T3CAP
P5.6               assignable pull-ups.                                  33(35)        T0OUT/T0PWM/T0CAP
P6.0-P6.3
P6.4�P6.7  I/O 1-bit-programmable I/O port.                     E-4       34�41            INT4�INT11
                                                                         (36�43)
P7.0�P7.7         Schmitt trigger input or push-pull, open-
P8.0�P8.3
                  drain output and software assignable pull-

                  ups.

                  P4.0�P4.7: Alternately used for external
                  interrupt input (Noise filters, interrupt
                  enable and pending control)

           I/O 1-bit-programmable I/O port.                     E-4         42 (44)          SCK
                                                                            43 (45)            SI
                  Schmitt trigger input or push-pull, open-                 44 (46)           SO
                                                                            45 (47)
                  drain output and software assignable pull-                46 (48)          BUZ
                                                                            47 (49)          RXD
                  ups.                                                      48 (50)          TXD

           I/O 4-bit programmable I/O port. Input or            H-32     52-55(54-57)           �
                   push-pull, open-drain output and software
                   assignable pull-ups.                                  56-59(58-61)  COM0�COM3

                                                                                       COM4�COM7/
                                                                                        SEG0�SEG3

           I/O                                                  H-32 60-67(62-69) SEG4�SEG11

           I/O                                                  H-32 68-71(70-73) SEG12�SEG15

NOTE: Parentheses indicate pin number for 80-QFP-1420 package.

1-6
S3C825A/P825A                                                            PRODUCT OVERVIEW

                     Table 1-1. S3C825A Pin Descriptions (Continued)

         Pin    Pin       Pin                                   Circuit         Pin          Share
      Names    Type  Description                                 Type    Numbers (note)       Pins
VSS1, VDD1                                                               10, 11 (12, 13)
XOUT, XIN      � Power input pins for core block                �        12, 13 (14, 15)         �
TEST                                                                                             �
               � Main oscillator pins                           �             14 (16)            �
XTIN, XTOUT
RESET          � Test signal input pin (must be connected �              15, 16 (17,18)          �
INT0�INT3             to VSS)                                                 17 (19)            �
T0CLK                                                                                      P2.4�P2.7
T0OUT          � Sub oscillator pins                            �        20�23 (22�25)        P2.4
T0PWM                                                                         20 (22)         P3.7
T0CAP          I System reset pin                               B             33 (35)         P3.7
T1CLK                                                                         33 (35)         P3.7
TAOUT          I/O External interrupt input pins                E-4           33 (35)         P2.5
TBOUT                                                                         21 (23)         P2.6
T2CLK          I/O Timer 0 external clock input.                E-4           22 (24)         P2.7
T2OUT                                                                         23 (25)         P2.2
T3CLK          I/O Timer 0 clock output                         E-4           18 (20)         P2.3
T3OUT                                                                         19 (21)         P3.5
T3PWM          I/O Timer 0 PWM output                           E-4           31 (33)         P3.6
T3CAP                                                                         32 (34)         P3.6
AD0�AD3        I/O Timer 0 capture input                        E-4           32 (34)         P3.6
AVREF, AVSS                                                                   32 (34)      P3.0�P3.3
INT4�INT11     I/O Timer 1/A external clock input.              E-4                              �
BUZ                                                                      25�28 (27�30)     P4.0�P4.7
SCK, SI, SO    I/O Timer 1/A clock output                       E-4      24, 29 (26, 31)      P5.3
                                                                         34�41 (36�43)     P5.0�P5.2
RXD, TXD       I/O Timer B clock output                         E-4
VLC1                                                                          45 (47)      P5.4-P5.5
VSS2, VDD2     I/O Timer 2 external clock input.                E-4      42�44 (44�46)           �
COM0�COM3                                                                                        �
SEG0�SEG3      I/O Timer 2 clock output                         E-4       46-47 (48-49)
(COM4�COM7)                                                                   49 (51)      P6.0-P6.3
SEG4�SEG11     I/O Timer 3 external clock input.                E-4                        P6.4-P6.7
SEG12�SEG15                                                              50, 51 (52, 53)
SEG16�SEG23    I/O Timer 3 clock output                         E-4      52�55 (54�57)
SEG24�SEG31                                                              56�59 (58�61)
               I/O Timer 3 PWM output                           E-4

               I/O Timer 3 capture input                        E-4

               I/O Analog input pins for A/D convert module F-16

               � A/D converter reference voltage and ground     �

               I/O External interrupt input pins                E-4

               I/O Buzzer signal output                         E-4

               I/O Serial clock, serial data input, serial data E-4
                       output

               I/O UART data input, output                      E-4

               � LCD bias voltage input pins                    �

               � Power input pins for peripheral block          �

               I/O LCD Common signal output                     H-32
               I/O LCD Common or Segment signal output          H-32

               I/O LCD segment signal output                    H-32      60�67 (62�69)    P7.0-P7.7
               I/O LCD segment signal output                    H-32      68�71 (70�73)    P8.0-P8.3
               I/O LCD segment signal output                    H-32     72�79 (74�80, 1)  P0.0�P0.7
               I/O LCD segment signal output                    H-32       80, 1�7 (2�9)   P1.0�P1.7

NOTE: Parentheses indicate pin number for 80-QFP-1420 package.

                                                                                           1-7
PRODUCT OVERVIEW                                                                  S3C825A/P825A

PIN CIRCUITS                                           Open-drain                 VDD
                                                               Data
                                      VDD                                              P-Channel
                                            P-Channel       Output                            Out
                                                            Disable
              In                                                                       N-Channel
                                            N-Channel
                                                       Figure 1-6. Pin Circuit Type C
             Figure 1-4. Pin Circuit Type A
                                                                            VDD
                                VDD
                     Pull-up                               Open-Drain              Pull-up  Pull-up
                     Resistor                                 Enable   VDD Resistor         Enable
                    In
                                                          Data              P-CH
                                   Schmitt Trigger
                                                       Output                     I/O
       Figure 1-5. Pin Circuit Type B (RESET)          Disable
                                                                            N-CH

                                                                       VSS

                                                                           Schmitt Trigger

                                                       Figure 1-7. Pin Circuit Type E-4 (P2, P3.4�P3.7,
                                                                                   P4, P5)

1-8
S3C825A/P825A                                                                      PRODUCT OVERVIEW

                             VDD

     Pull-up                                         VLC1
      Enable                                         VLC2
Open-drain                                           VLC3

         Data                Circuit
      Output                 Type C
     Disable
                                                I/O
     ADCEN
                                                     COM/SEG                            Out
ADC Select
         Data                                        Output
                                                     Disable

                                                     VLC4

                                                     VLC5

   To ADC                                            VSS
Figure 1-8. Pin Circuit Type F-16 (P3.0-P3.3)
                                                     Figure 1-9. Pin Circuit Type H-23

                                                     VDD

                     Open                                       Pull-up  Resistor
                      Drain                          VDD Resistor        Enable

                      Data                                P-CH

                    Output                                       I/O
                 Disable1                            N-CH

               COM/SEG              Circuit
                    Output        Type H-23

                 Disable2

               Figure 1-10. Pin Circuit Type H-32(P0, P1, P6-P8)
                                                                                                                                    1-9
PRODUCT OVERVIEW         S3C825A/P825A

                  NOTES

1-10
S3C825A/P825A     ADDRESS SPACES

2 ADDRESS SPACES

OVERVIEW

The S3C825A 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 S3C825A has an internal 48-Kbyte mask-programmable ROM.

The 256-byte physical register space is expanded into an addressable area of 320 bytes using addressing modes.

A 32-byte LCD display register file is implemented.

There are 2,137 mapped registers in the internal register file. Of these, 2,064 are for general-purpose.
(This number includes a 16-byte working register common area used as a "scratch area" for data operations,
eight 192-byte prime register areas, and eight 64-byte areas (Set 2)). Thirteen 8-bit registers are used for the
CPU and the system control, and 60 registers are mapped for peripheral controls and data registers. Seven
register locations are not mapped.

                  2-1
ADDRESS SPACES                                            S3C825A/P825A

PROGRAM MEMORY (ROM)

Program memory (ROM) stores program codes or table data. The S3C825A has 48K bytes internal mask-
programmable program memory.

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)               (HEX)
                   49,151               BFFFH

                             48K-bytes
                              Internal
                              Program

                           Memory Area

                255                     FFH

                           Interrupt

                           Vector Area

                0                       0H

                Figure 2-1. Program Memory Address Space

2-2
S3C825A/P825A                                                               ADDRESS SPACES

REGISTER ARCHITECTURE

In the S3C825A 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 S3C825A the total number of addressable 8-bit registers is 2137. Of these 2137 registers, 13 bytes are
for CPU and system control registers, 60 bytes are for peripheral control and data registers, 16 bytes are used as
a shared working registers, and 2048 registers are for general-purpose use, page 0-page 7 (including 32 bytes for
LCD display registers).

You can always address set 1 register locations, regardless of which of the eight 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. S3C825A Register Type Summary

                           Register Type                   Number of Bytes
                                                                   2,064
General-purpose registers (including the 16-byte
common working register area, eight 192-byte prime                   13
register area (including LCD data registers), and eight              60
64-byte set 2 area).                                               2,137
CPU and system control registers
Mapped clock, peripheral, I/O control, and data registers

Total Addressable Bytes

                                                                            2-3
ADDRESS SPACES                                                                                                                   S3C825A/P825A

                        Set 1                                                                          FFH               Page 7
                                                                                                  FFH
                FFH     Bank 1                                                               FFH                Page 1
                                                                                         FFH                Page 0
                FFH            Bank 0
                                System and
           32
         Bytes          PerSPipyehsretieprRamhelegCariasnoltdneCtrrosonl trol

                                                                                                            Set 2

                        Registers

                        (Register Addressing Mode)                                                       Registers
                                                                                                   (Indirect Register,
     64         E0H
                                                                                                     Indexed Mode,
     Bytes DFH          System Registers                                                        and Stack Operations)

                          (Register Addressing Mode)                              C0H                                                               256
                D0H                                                               BFH                                                              Bytes

         CFH            Working Registers                                                                 Page 0                           ~
                                                                                                                                       ~
                        (Working Register                                                                                           ~~
                                                                                                                                 ~
                C0H     Addressing Only)

                1FH                                                                              ~          Prime
                                        Page 7
                                                                                   192        ~     Data Registers
                                                                                  Bytes
                                                                                                    (All Addressing Modes)

           32        ~  Prime                                                  ~
         Bytes
                        Data Registers

                        (All Addressing Modes)

                        LCD Display Register

                00H                                                                      00H

                        Figure 2-2. Internal Register File Organization

2-4
S3C825A/P825A                                                                                   ADDRESS 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 S3C825A 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.

                      MSB .7           Register Page Pointer (PP)     .0 LSB
                                              DFH ,Set 1, R/W

                                 .6 .5 .4 .3 .2 .1

               Destination register page selection bits:  Source register page selection bits:
               0000 Destination: Page 0                   0000 Source: Page 0

               NOTE:  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.

                              Figure 2-3. Register Page Pointer (PP)

+ PROGRAMMING TIP -- Using the Page Pointer for RAM clear (Page 0, Page 1)

RAMCL0  LD            PP,#00H                             ; Destination  0, Source  0
RAMCL1  SRP           #0C0H                               ; Page 0 RAM clear starts
        LD            R0,#0FFH
        CLR           @R0                                 ; R0 = 00H
        DJNZ          R0,RAMCL0                           ; Destination  1, Source  0
        CLR           @R0                                 ; Page 1 RAM clear starts

        LD            PP,#10H                             ; R0 = 00H
        LD            R0,#0FFH
        CLR           @R0
        DJNZ          R0,RAMCL1
        CLR           @R0

NOTE: You should refer to page 6-39 and use DJNZ instruction properly when DJNZ instruction is used in your program.

                                                                                                   2-5
ADDRESS SPACES  S3C825A/P825A

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 57 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 S3C825A,
the set 2 address range (C0H�FFH) is accessible on pages 0-7.

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 of page 0 is commonly used for stack operations.

2-6
S3C825A/P825A                                                       ADDRESS SPACES

PRIME REGISTER SPACE

The lower 192 bytes (00H�BFH) of the S3C825A's eight 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, 4, 5, 6, or 7, you must set the register page pointer (PP) to the appropriate source
and destination values.

                                                    FFH     Page 7

                                                  FFH      Page 6

                                        FFH              Page 5

                                        FFH         Page 4

                                   FFH            Page 3

                                   FFH  Page 2

               Set 1          FFH                 Set 2
                                        Page 1
                                             Set 2
     Bank 0           Bank 1  FFH  PagCeS0eH0t 2

FFH                                     SeBt F2H    Page 0
FCH
E0H                           C0H  Page 0           Prime                        Page 7
D0H                           BFH                   Space
C0H                                                                 1FH
                                                                                LCD Data

                                                                             Register Area
                                                                    00H

     CPU and system control        Prime
     General-purpose               Space
     Peripheral and I/O
     LCD data register                 00H

                              00H

               Figure 2-4. Set 1, Set 2, Prime Area Register, and LCD Data Register Map

                                                                                            2-7
ADDRESS SPACES                                                                     S3C825A/P825A

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).

           11111XXX                       Slice 32                  FFH
        RP1 (Registers R8-R15)            Slice 31                  F8H
                                                                    F7H
     Each register pointer points to                                F0H
     one 8-byte slice of the register
     space, selecting a total 16-byte                                       Set 1
     working register block.                                                Only

           00000XXX                                                 CFH
         RP0 (Registers R0-R7)                                      C0H

                                       ~            ~

                                                                    10H

                                          Slice 2                   FH

                                                                    8H

                                          Slice 1                   7H
                                                                    0H

                Figure 2-5. 8-Byte Working Register Areas (Slices)

2-8
S3C825A/P825A                                                         ADDRESS 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
CLR            RP0        ; RP0  00H, RP1  no change
LD             RP1,#0F8H  ; RP0  no change, RP1  0F8H

00001XXX                  Register File             FH (R15)          16-Byte
          RP1             Contains 32                                 Contiguous
                          8-Byte Slices             8H                Working
00000XXX                                            7H                Register block
          RP0             8-Byte Slice
                          8-Byte Slice              0H (R0)

               Figure 2-6. Contiguous 16-Byte Working Register Block

                                                                                      2-9
ADDRESS SPACES                                                                    S3C825A/P825A

                         8-Byte Slice   F7H (R7)
                                        F0H (R0)
                         Register File
      11110 XXX          Contains 32                                       16-Byte
                 RP0     8-Byte Slices                                     Contiguous
                                                                           working
      00000 XXX          8-Byte Slice                                      Register block
                 RP1
                                        7H (R15)
                                        0H (R0)

                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:

      SRP0      #80H     ; RP0  80H
      ADD       R0,R1    ; R0  R0 + R1
      ADC       R0,R2    ; R0  R0 + R2 + C
      ADC       R0,R3    ; R0  R0 + R3 + C
      ADC       R0,R4    ; R0  R0 + R4 + C
      ADC       R0,R5    ; R0  R0 + R5 + C

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:

      ADD       80H,81H  ; 80H  (80H) + (81H)
      ADC       80H,82H  ; 80H  (80H) + (82H) + C
      ADC       80H,83H  ; 80H  (80H) + (83H) + C
      ADC       80H,84H  ; 80H  (80H) + (84H) + C
      ADC       80H,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
S3C825A/P825A                                    ADDRESS 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  LSB   n = Even address
                Rn  Rn+1

               Figure 2-8. 16-Bit Register Pair

                                                 2-11
ADDRESS SPACES                                                                                        S3C825A/P825A

       Special-Purpose Registers                           General-Purpose Register
                                                                               FFH
       Bank 1   Bank 0                                                                         Set 2
                                                                               C0H
FFH                               Control
                                  Registers
E0H
D0H                               System
C0H                               Registers
BFH
                                                CFH

                RP1
                                  Register

                                  Pointers
                RP0

Each register pointer (RP) can independently point           Prime
to one of the 24 8-byte "slices" of the register file      Registers
(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:  In the S3C825A microcontroller,                                                                LCD Data
00H   pages 0-7 are implemented.                                                                     Registers
       Pages 0-7 contain all of the addressable
       registers in the internal register file.

                                                           Page 0       Page 0

                Register Addressing Only                        All     Indirect Register,            All
                       Can be Pointed by Register Pointer  Addressing
                                                                        Indexed                       Addressing
                                                              Modes
                                                                        Addressing                    Modes

                                                                        Modes

                                                                                                      Can be Pointed

                                                                                                      by register Pointer

                                  Figure 2-9. Register File Addressing

2-12
S3C825A/P825A                                                                                 ADDRESS 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        Page 7

                                                             FFH        Page 6

                                                   FFH               Page 5

                                                   FFH          Page 4

                                              FFH            Page 3

                                              FFH  Page 2

                                      FFH                    Set 2
                                                   Page 1
               Set 1                                    Set 2
                                      FFH     PagCeS0eH0t 2
FFH
FCH                                                SeBt F2H     Page 0
E0H
D0H                                                                                   ~
C0H
                                                                                   ~

                                      C0H     Page 0            Prime           ~        1FH   Page 7
                                      BFH                       Space        ~
                                              Prime                                           LCD Data
                                           ~  Space                     ~                     Registers

                                                                     ~                   00H

Following a hardware reset, register                              ~
pointers RP0 and RP1 point to the
common working register area,                                ~
locations C0H-CFH.
                                      00H
RP0 = 1 1 0 0 0 0 0 0

RP1 = 1 1 0 0 1 0 0 0

                      Figure 2-10. Common Working Register Area

                                                                                                                  2-13
ADDRESS SPACES                                                     S3C825A/P825A

+ 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.

Examples  1. LD  0C2H,40H   ; Invalid addressing mode!

          Use working register addressing instead:

          SRP    #0C0H      ; R2 (C2H)  the value in location 40H
          LD     R2,40H

          2. ADD 0C3H,#45H  ; Invalid addressing mode!

          Use working register addressing instead:

          SRP    #0C0H      ; R3 (C3H)  R3 + 45H
          ADD    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
S3C825A/P825A                                                           ADDRESS SPACES

                      Selects                                      RP0
                      RP0 or RP1                                   RP1

                                   Address  OPCODE

               Register pointer             4-bit address
               provides five                provides three
               high-order bits              low-order bits

                                      Together they create an
                                        8-bit register address

               Figure 2-11. 4-Bit Working Register Addressing

                          RP0                                   RP1
               01110 000                            01111 000

                                 Selects RP0

               01110  110        Register       R6  OPCODE              Instruction
                                 address    0110    1110                'INC R6'
                                 (76H)

               Figure 2-12. 4-Bit Working Register Addressing Example

                                                                                     2-15
ADDRESS SPACES                                                              S3C825A/P825A

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).

                           Selects           Address  RP0
                           RP0 or RP1                 RP1
      These address
      bits indicate 8-bit         1100                8-bit logical
      working register                                address
      addressing

                           Register pointer           Three low-order bits
                           provides five
                           high-order bits

                                                  8-bit physical address

                           Figure 2-13. 8-Bit Working Register Addressing

2-16
S3C825A/P825A                                                                               ADDRESS SPACES

                             RP0                                             RP1
                 01100 000                                        10101 000

                                             Selects RP1          10101  011      Register
                                                                                  address
                                           R11                                    (0ABH)
                                                   8-bit address

                 1 1 0 0 1 0 1 1 form instruction
                                                   'LD R11, R2'

               Specifies working
               register addressing

               Figure 2-14. 8-Bit Working Register Addressing Example

                                                                                            2-17
ADDRESS SPACES                                                S3C825A/P825A

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 S3C825A 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

      Top of          PCL       Top of               PCL
       stack          PCH       stack               PCH

                Stack contents                      Flags
                  after a call
                   instruction                Stack contents
                                                  after an
                                                  interrupt

                              Low Address
                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 S3C825A, 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
S3C825A/P825A                                                      ADDRESS 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:

LD             SPL,#0FFH  ; SPL  FFH
                          ; (Normally, the SPL is set to 0FFH by the initialization
�                         ; routine)

�                         ; Stack address 0FEH  PP
                          ; Stack address 0FDH  RP0
�                         ; Stack address 0FCH  RP1
                          ; Stack address 0FBH  R3
PUSH           PP
                          ; R3  Stack address 0FBH
PUSH           RP0        ; RP1  Stack address 0FCH
                          ; RP0  Stack address 0FDH
PUSH           RP1        ; PP  Stack address 0FEH

PUSH           R3







POP            R3

POP            RP1

POP            RP0

POP            PP

                                                                   2-19
ADDRESS SPACES         S3C825A/P825A

                NOTES

2-20
S3C825A/P825A       ADDRESSING MODES

3 ADDRESSING MODES

OVERVIEW

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:

-- Register (R)
-- Indirect Register (IR)
-- Indexed (X)
-- Direct Address (DA)
-- Indirect Address (IA)
-- Relative Address (RA)
-- Immediate (IM)

                    3-1
ADDRESSING MODES                                                                                     S3C825A/P825A

REGISTER ADDRESSING MODE (R)

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 Memory                           Register File

     8-bit Register                   dst             Point to One         OPERAND
      File Address                OPCODE          Register in Register

     One-Operand                                            File
         Instruction
         (Example)                                         Value used in
                                                  Instruction Execution

     Sample Instruction:                     ; Where CNTR is the label of an 8-bit register address
     DEC CNTR

                                  Figure 3-1. Register Addressing

                                             MSB Point to      Register File
                                             RP0 or RP1        RP0 or RP1

                             Program Memory                                               Selected
                                                                                          RP points
                      4-bit  dst  src            3 LSBs                                   to start
     Working Register                                                                     of working
                                                Point to the                              register
         Two-Operand                         Working Register                             block
              Instruction
              (Example)      OPCODE                (1 of 8)    OPERAND

     Sample Instruction:                     ; Where R1 and R2 are registers in the curruntly
     ADD R1, R2                                  selected working register area.

                                  Figure 3-2. Working Register Addressing

3-2
S3C825A/P825A                                                                            ADDRESSING 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 Memory                        Register File

               8-bit Register           dst             Point to One      ADDRESS
                File Address        OPCODE          Register in Register

               One-Operand                                     File
                   Instruction
                   (Example)                        Address of Operand
                                                     used by Instruction

                                                      Value used in       OPERAND
                                             Instruction Execution

               Sample Instruction:

               RL  @SHIFT           ; Where SHIFT is the label of an 8-bit register address

                   Figure 3-3. Indirect Register Addressing to Register File

                                                                                             3-3
ADDRESSING MODES                                                                                                      S3C825A/P825A

INDIRECT REGISTER ADDRESSING MODE (Continued)

                                                                                                       Register File

        Example    Program Memory                   REGISTER
      Instruction                                       PAIR
     References             dst
                        OPCODE       Points to
        Program                    Register Pair
         Memory                                                                                                       16-Bit
                                                                                                                      Address
                                                    Program Memory                                                    Points to
                                                                                                                      Program
                                                                                                                      Memory

     Sample Instructions:          Value used in    OPERAND
                                       Instruction
     CALL          @RR2
     JP            @RR2

                   Figure 3-4. Indirect Register Addressing to Program Memory

3-4
S3C825A/P825A                                                      ADDRESSING MODES

INDIRECT REGISTER ADDRESSING MODE (Continued)

                            MSB Points to        Register File
                             RP0 or RP1          RP0 or RP1

            Program Memory                    ~                 ~  Selected
                                                                   RP points
     4-bit                      3 LSBs                             to start fo
Working                                                            working register
Register                       Point to the                        block
Address                     Working Register
            dst      src
                                  (1 of 8)
            OPCODE                               ADDRESS

                                              ~                 ~

Sample Instruction:         Value used in
                                Instruction
                                                 OPERAND

OR          R3, @R6

            Figure 3-5. Indirect Working Register Addressing to Register File

                                                                                     3-5
ADDRESSING MODES                                                              S3C825A/P825A

INDIRECT REGISTER ADDRESSING MODE (Concluded)

                                            MSB Points to     Register File
                                             RP0 or RP1       RP0 or RP1

                            Program Memory                                    Selected
                                                                              RP points
             4-bit Working  dst  src                                Register  to start of
         Register Address                                              Pair   working
                            OPCODE          Next 2-bit Point                  register
     Example Instruction                       to Working     Program Memory  block
        References either                                               or
                                             Register Pair                      16-Bit
     Program Memory or                           (1 of 4)       Data Memory     address
             Data Memory                                                        points to
                                             LSB Selects                        program
                                                                                memory
                                                                                or data
                                                                                memory

                                            Value used in     OPERAND
                                                Instruction

     Sample Instructions:

     LDC                    R5,@RR6         ; Program memory access
     LDE                    R3,@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
S3C825A/P825A                                                                    ADDRESSING 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.

                                                            Register File

                                                            RP0 or RP1

                                                         ~                    ~

                                    Value used in           OPERAND              Selected RP
                                        Instruction                              points to
                                                                                 start of
                                                                                 working

                                                                                 register

                                    +                    ~                            block

                 Program Memory                                               ~

Two-Operand      Base Address            3 LSBs             INDEX
    Instruction  dst/src x
      Example                       Point to One of the
                    OPCODE           Woking Register
                                           (1 of 8)

               Sample Instruction:  ; Where BASE is an 8-bit immediate value
               LD R0, #BASE[R1]

                 Figure 3-7. Indexed Addressing to Register File

                                                                                              3-7
ADDRESSING MODES                                                                   S3C825A/P825A

INDEXED ADDRESSING MODE (Continued)

                                         MSB Points to          Register File
                                          RP0 or RP1            RP0 or RP1

                                                             ~                  ~  Selected
                                                                                   RP points
                         Program Memory                                            to start of
                                                                                   working
                         OFFSET            NEXT 2 Bits                             register
                                                                                   block
          4-bit Working  dst/src  x      Point to Working            Register
     Register Address                      Register Pair                Pair         16-Bit
                         OPCODE                (1 of 4)                              address
                                                                Program Memory       added to
                                                                          or         offset

                                         LSB Selects              Data Memory

                                                 +

                                         8-Bits     16-Bits

                                                 16-Bits        OPERAND            Value used in
                                                                                   Instruction

     Sample Instructions:

     LDC                 R4, #04H[RR2]              ; The values in the program address (RR2 + 04H)
                                                       are loaded into register R4.
     LDE                 R4,#04H[RR2]
                                                    ; Identical operation to LDC example, except that
                                                       external program memory is accessed.

     Figure 3-8. Indexed Addressing to Program or Data Memory with Short Offset

3-8
S3C825A/P825A                                                                 ADDRESSING MODES

INDEXED ADDRESSING MODE (Concluded)

                                     MSB Points to        Register File
                                      RP0 or RP1          RP0 or RP1

                    Program Memory                     ~                  ~   Selected
                                                                              RP points
     4-bit Working        OFFSET       NEXT 2 Bits        Register            to start of
Register Address          OFFSET                            Pair              working
                    dst/src src      Point to Working                         register
                         OPCODE        Register Pair                          block

                                                          Program Memory        16-Bit
                                                                    or          address
                                                                                added to
                                                            Data Memory         offset

                                        LSB Selects

                                           +

                                     8-Bits 16-Bits

                                     16-Bits              OPERAND             Value used in
                                                                              Instruction

Sample Instructions:

LDC                 R4, #1000H[RR2]  ; The values in the program address (RR2 + 1000H)
                                        are loaded into register R4.
LDE                 R4,#1000H[RR2]
                                     ; Identical operation to LDC example, except that
                                        external program memory is accessed.

                    Figure 3-9. Indexed Addressing to Program or Data Memory

                                                                                             3-9
ADDRESSING MODES                                                                           S3C825A/P825A

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

                  Program Memory        Memory
                                        Address
                                        Used

                  Upper Address Byte    LSB Selects Program
                  Lower Address Byte    Memory or Data Memory:
                   dst/src "0" or "1"   "0" = Program Memory
                                        "1" = Data Memory
                         OPCODE

                  Sample Instructions:  ; The values in the program address (1234H)
                  LDC R5,1234H              are loaded into register R5.
                  LDE R5,1234H
                                        ; Identical operation to LDC example, except that
                                            external program memory is accessed.

                  Figure 3-10. Direct Addressing for Load Instructions

3-10
S3C825A/P825A                                                  ADDRESSING MODES

DIRECT ADDRESS MODE (Continued)

                      Program Memory

                      Next OPCODE

                                          Memory
                                          Address
                                          Used

                      Upper Address Byte
                      Lower Address Byte

                             OPCODE

Sample Instructions:

JP  C,JOB1            ; Where JOB1 is a 16-bit immediate address
                      ; Where DISPLAY is a 16-bit immediate address
CALL DISPLAY

Figure 3-11. Direct Addressing for Call and Jump Instructions

                                                                     3-11
ADDRESSING MODES                                                                   S3C825A/P825A

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      dst
                  Instruction  OPCODE

                               Lower Address Byte  Program Memory
                               Upper Address Byte  Locations 0-255

      Sample Instruction:

      CALL #40H                ; The 16-bit value in program memory addresses 40H
                                  and 41H is the subroutine start address.

                               Figure 3-12. Indirect Addressing

3-12
S3C825A/P825A                                                               ADDRESSING 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    PC Value            +
                                       OPCODE
               Current Instruction                   Signed
                                                     Displacement Value

               Sample Instructions:

               JR  ULT,$+OFFSET      ; Where OFFSET is a value in the range +127 to -128

                                     Figure 3-13. Relative Addressing

                                                                                          3-13
ADDRESSING MODES                                             S3C825A/P825A

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
S3C825A/P825A                                                 CONTROL REGISTER

4              CONTROL REGISTERS

OVERVIEW

In this chapter, detailed descriptions of the S3C825A 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 S3C825A register file are listed in
Table 4-1. The hardware reset value for each mapped register is described in Chapter 8, "RESET and Power-
Down."

               Table 4-1. Set 1 Registers (INTPND/STPCON/OSCCON are in bank 0 of set 1)

            Register Name        Mnemonic  Address       R/W  RESET Values (bit)

Interrupt pending register                 Decimal  Hex       76543210
STOP control register                         208   D0H
Oscillator control register       INTPND      209   D1H  R/W � � 0 0 0 0 0 0
Basic timer control register     STPCON       210   D2H
System clock control register    OSCCON       211   D3H  R/W 0 0 0 0 0 0 0 0
System flags register             BTCON       212   D4H
Register pointer 0               CLKCON       213   D5H  R/W � � � � 0 0 � 0
Register pointer 1                FLAGS       214   D6H
Stack pointer (high byte)                     215   D7H  R/W 0 0 0 0 0 0 0 0
Stack pointer (low byte)            RP0       216   D8H
Instruction pointer (high byte)     RP1       217   D9H  R/W 0 0 0 0 0 0 0 0
Instruction pointer (low byte)      SPH       218   DAH
Interrupt request register          SPL       219   DBH  R/W x x x x x x 0 0
Interrupt mask register              IPH      220   DCH
System mode register                 IPL      221   DDH  R/W 1 1 0 0 0 � � �
Register page pointer               IRQ       222   DEH
                                    IMR       223   DFH  R/W 1 1 0 0 1 � � �
                                    SYM
                                     PP                  R/W x x x x x x x x

                                                         R/W x x x x x x x x

                                                         R/W x x x x x x x x

                                                         R/W x x x x x x x x

                                                         R 00000000

                                                         R/W x x x x x x x x

                                                         R/W 0 � � x x x 0 0

                                                         R/W 0 0 0 0 0 0 0 0

                                                                                         4-1
CONTROL REGISTERS                                                            S3C825A/P825A

                                         Table 4-2. Set 1, Bank 0 Registers

           Register Name                 Mnemonic  Address            R/W          RESETB Value(bit)
                                                                             76543210
SIO Control Register                               Decimal Hex               00000000
SIO Data Register                                                            00000000
SIO Prescaler Register                   SIOCON 224     E0H           R/W    00000000
Timer 0 Counter Register                                                     00000000
Timer 0 Data Register                    SIODATA 225    E1H           R/W    11111111
Timer 0 Control Register                                                     00000000
Timer B Counter Register                 SIOPS     226  E2H           R/W    00000000
Timer A Counter Register                                                     00000000
Timer B Data Register                    T0CNT     227  E3H           R      11111111
Timer A Data Register                                                        11111111
Timer B Control Register                 T0DATA    228  E4H           R/W    ��000000
Timer 1/A Control Register                                                   00000000
Timer 2 Counter Register                 T0CON     229  E5H           R/W    00000000
Timer 2 Data Register                                                        11111111
Timer 2 Control Register                 TBCNT     230  E6H           R      00000000
A/D Converter Control Register                                               ��000000
                                         TACNT     231  E7H           R      xxxxxxxx
A/D Converter Data Register (high byte)                                      ������xx
A/D Converter Data Register (low byte)   TBDATA 232     E8H           R/W    00��0000
                                                                             ����0000
LCD Control Register                     TADATA 233     E9H           R/W    00000000
LCD Mode Register                                                            00000000
Timer 3 Counter (high byte)              TBCON     234  EAH           R/W    11111111
Timer 3 Counter (low byte)                                                   11111111
Timer 3 Data Register (high byte)        TACON     235  EBH           R/W    00000000
Timer 3 Data Register (low byte)                                             xxxxxxxx
Timer 3 Control Register                 T2CNT     236  ECH           R      00000000
UART data register                                                           11111111
UART control register                    T2DATA    237  EDH           R/W
UART Baud Rate data register                                                 00000000
                                         T2CON     238  EEH           R/W
Basic Timer Counter                                                          xxxxxxxx
                                         ADCON     239  EFH           R/W
Interrupt Priority Register
                                         ADDATAH 240    F0H           R/W

                                         ADDATAL 241    F1H           R/W

                                         LCON      242  F2H           R/W

                                         LMOD      243  F3H           R/W

                                         T3CNTH 244     F4H           R

                                         T3CNTL    245  F5H           R

                                         T3DATAH 246    F6H           R/W

                                         T3DATAL 247    F7H           R/W

                                         T3CON     248  F8H           R/W

                                         UDATA     249  F9H           R/W

                                         UARTCON 250    FAH           R/W

                                         BRDATA 251     FBH           R/W

                                         Location FCH is not mapped.

                                         BTCNT     253  FDH           R/W

                                         Location FEH is not mapped.

                                         IPR       255  FFH           R/W

4-2
S3C825A/P825A                                                               CONTROL REGISTER

                                   Table 4-3. Set 1, Bank 1 Registers

Register Name                      Mnemonic      Address               R/W      RESETB Value(bit)
                                                                            76543210
                                                 Decimal Hex                00000000
                                                                            00000000
Port 2 Control Register(High Byte) P2CONH 224         E0H              R/W  00000000
                                                                            00000000
Port 2 Control Register(Low Byte)  P2CONL        225  E1H              R/W  00000000
                                                                            00000000
Port 2 Pull-up Resistors enable Register P2PUR   226  E2H              R/W  00000000
                                                                            00000000
Port 2 Interrupt Control Register  P2INT         227  E3H              R/W  00000000
                                                                            00000000
Port 3 Control Register(High Byte) P3CONH 228         E4H              R/W  00000000
                                                                            00000000
Port 3 Control Register(Low Byte)  P3CONL        229  E5H              R/W  00000000
                                                                            00000000
Port 3 Pull-up Resistors enable Register P3PUR   230  E6H              R/W  00000000
                                                                            00000000
Port 4 Interrupt Edge Selection Register P4EDGE  231  E7H              R/W  00000000
                                                                            00000000
Port 4 Control Register(High Byte) P4CONH 232         E8H              R/W  00000000
                                                                            00000000
Port 4 Control Register(Low Byte)  P4CONL        233  E9H              R/W  00000000
                                                                            00000000
Port 4 Interrupt Control Register  P4INT         234  EAH              R/W  00000000
                                                                            00000000
Port 4 Interrupt Pending Register  P4PND         235  EBH              R/W  00000000
                                                                            00000000
Port 5 Control Register(High Byte) P5CONH 236         ECH              R/W  00000000

Port 5 Control Register(Low Byte)  P5CONL        237  EDH              R/W

Port 5 Pull-up Resistors enable Register P5PUR   238  EEH              R/W

Watch timer control register       WTCON         239  EFH              R/W

Port 0 Data Register               P0            240  F0H              R/W

Port 1 Data Register               P1            241  F1H              R/W

Port 2 Data Register               P2            242  F2H              R/W

Port 3 Data Register               P3            243  F3H              R/W

Port 4 Data Register               P4            244  F4H              R/W

Port 5 Data Register               P5            245  F5H              R/W

Port 6 Data Register               P6            246  F6H              R/W

Port 7 Data Register               P7            247  F7H              R/W

Port 8 Data Register               P8            248  F8H              R/W

Port Group 0 Control Register      PG0CON 251         F9H              R/W

Port Group 1 Control Register      PG1CON 252         FAH              R/W

                                   Locations FBH-FFH are not mapped.

                                                                            4-3
CONTROL REGISTERS                                                                             S3C825A/P825A

Bit number(s) that is/are appended to           Name of individual                       Register location
the register name for bit addressing            bit or related bits                      in the internal
                                                                                         register file
     Register ID     Register name                                     Register address
                                                                       (hexadecimal)

     FLAGS - System Flags Register                                          D5H          Set 1

     Bit Identifier  .7                     .6  .5  .4                  .3   .2   .1      .0
     RESET Value                                                         x    x    x       0
     Read/Write      x                      x   x   x                  R/W  R/W  R/W     R/W
     Bit Addressing
     Mode            R/W R/W R/W R/W
     .7
                     Register addressing mode only
     .6
                     Carry Flag (C)
     .5                0 Operation does not generate a carry or borrow condition
                       0 Operation generates carry-out or borrow into high-order bit 7

                     Zero Flag (Z)
                       0 Operation result is a non-zero value
                       0 Operation result is zero

                     Sign Flag (S)
                       0 Operation generates positive number (MSB = "0")
                       0 Operation generates negative number (MSB = "1")

                          R = Read-only            Description of the                                         Bit number:
                          W = Write-only           effect of specific                                         MSB = Bit 7
                          R/W = Read/write         bit settings                                               LSB = Bit 0
                          '-' = Not used
                                                                                 RESET value notation:
     Type of addressing                                                          '-' = Not used
     that must be used to                                                        'x' = Undetermined value
     address the bit                                                             '0' = Logic zero
     (1-bit, 4-bit, or 8-bit)                                                    '1' = Logic one

                                       Figure 4-1. Register Description Format

4-4
S3C825A/P825A                                                 CONTROL REGISTER

ADCON -- A/D Converter Control Register                  EFH Set 1, Bank 0

Bit Identifier   .7  .6               .5        .4   .3  .2   .1   .0

RESET Value      �   �                0         0    0   0    0    0

Read/Write       �   �                R/W       R/W  R   R/W  R/W  R/W

Addressing Mode  Register addressing mode only

.7�.6            Not used for the S3C825A

.5�.4            A/D Input Pin Selection Bits
                  0 0 AD0 (P3.0)
                  0 1 AD1 (P3.1)
                  1 0 AD2 (P3.2)
                  1 1 AD3 (P3.3)

.3               End-of-Conversion Bit (read-only)

                 0 Conversion not complete

                 1 Conversion complete

.2�.1            Clock Source Selection Bits
                  0 0 fxx/16
                  0 1 fxx/8
                  1 0 fxx/4
                  1 1 fxx

.0               Start or Enable Bit

                 0 Disable operation

                 1 Start operation (automatically disable operation after conversion complete).

                                                                                                 4-5
CONTROL REGISTERS                                                                 S3C825A/P825A

BTCON -- Basic Timer Control Register                                    D3H       Set 1

Bit Identifier     .7          .6  .5                 .4   .3            .2   .1   .0
RESET Value
Read/Write         0            0  0                  0    0             0    0    0
Addressing Mode
                   R/W  R/W        R/W            R/W      R/W           R/W  R/W  R/W

                   Register addressing mode only

.7�.4              Watchdog Timer Function Disable Code (for System Reset)

                   1 0 1 0 Disable watchdog timer function

                       Others      Enable watchdog timer function

.3�.2              Basic Timer Input Clock Selection Bits
                    0 0 fxx/4096 (3)
                    0 1 fxx/1024
                    1 0 fxx/128
                    1 1 fxx/16

.1                 Basic Timer Counter Clear Bit (1)

                   0 No effect

                   1 Clear the basic timer counter value

.0                 Clock Frequency Divider Clear Bit for all Timers (2)

                   0 No effect

                   1 Clear 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.

4-6
S3C825A/P825A                                                           CONTROL REGISTER

CLKCON -- System Clock Control Register                            D4H      Set 1

Bit Identifier   .7   .6  .5                    .4    .3            .2  .1  .0

RESET Value      0    0   0                     0     0             0   0   0

Read/Write       R/W  �   �                     R/W   R/W           �   �   �

Addressing Mode  Register addressing mode only

.7               Oscillator IRQ Wake-up Function Bit

                 0 Enable IRQ for main wake-up in power down mode

                 1 Disable IRQ for main wake-up in power down mode

.6�.5            Not used for the S3C825A.

.4�.3            CPU Clock (System Clock) Selection Bits (note)
                  0 0 fxx/16
                  0 1 fxx/8
                  1 0 fxx/2
                  1 1 fxx

.2�.0            Not used for the S3C825A.

NOTE: After a reset, the slowest clock (divided by 16) is selected as the system clock. To select faster clock speeds, load
           the appropriate values to CLKCON.3 and CLKCON.4.

                                                                                4-7
CONTROL REGISTERS                                                                         S3C825A/P825A

FLAGS -- System Flags Register                                        D5H                      Set 1

Bit Identifier     .7             .6     .5          .4    .3           .2            .1       .0
RESET Value
Read/Write         x              x         x        x     x            x             0        0
Addressing Mode
                   R/W  R/W              R/W         R/W   R/W        R/W             R        R/W

                   Register addressing mode only

.7                 Carry Flag (C)

                   0 Operation does not generate a carry or borrow condition

                   1 Operation generates a carry-out or borrow into high-order bit 7

.6                 Zero Flag (Z)

                   0 Operation result is a non-zero value

                   1 Operation result is zero

.5                 Sign Flag (S)

                   0 Operation generates a positive number (MSB = "0")

                   1 Operation generates a negative number (MSB = "1")

.4                 Overflow Flag (V)

                   0 Operation result is  +127 or  �128

                   1 Operation result is > +127 or < �128

.3                 Decimal Adjust Flag (D)

                   0 Add operation completed

                   1 Subtraction operation completed

.2                 Half-Carry Flag (H)

                   0 No carry-out of bit 3 or no borrow into bit 3 by addition or subtraction

                   1 Addition generated carry-out of bit 3 or subtraction generated borrow into bit 3

.1                 Fast Interrupt Status Flag (FIS)

                   0 Interrupt return (IRET) in progress (when read)

                   1 Fast interrupt service routine in progress (when read)

.0                 Bank Address Selection Flag (BA)

                   0 Bank 0 is selected

                   1 Bank 1 is selected

4-8
S3C825A/P825A                                                             CONTROL REGISTER

IMR -- Interrupt Mask Register                                     DDH                   Set 1

Bit Identifier   .7   .6            .5          .4   .3            .2     .1             .0
RESET Value
Read/Write       x    x             x           x    x             x      x              x
Addressing Mode
                 R/W  R/W           R/W         R/W  R/W           R/W    R/W            R/W

                 Register addressing mode only

.7               Interrupt Level 7 (IRQ7) Enable Bit; P4.0-P4.3

                 0 Disable (mask)

                 1 Enable (unmask)

.6               Interrupt Level 6 (IRQ6) Enable Bit; P4.4-P4.7

                 0 Disable (mask)

                 1 Enable (unmask)

.5               Interrupt Level 5 (IRQ5) Enable Bit; P2.4-P2.7

                 0 Disable (mask)

                 1 Enable (unmask)

.4               Interrupt Level 4 (IRQ4) Enable Bit; Watch Timer

                 0 Disable (mask)

                 1 Enable (unmask)

.3               Interrupt Level 3 (IRQ3) Enable Bit; SIO, UART Transmit, UART Receive

                 0 Disable (mask)

                 1 Enable (unmask)

.2               Interrupt Level 2 (IRQ2) Enable Bit;Timer 2, Timer 3 match/capture or overflow

                 0 Disable (mask)

                 1 Enable (unmask)

.1               Interrupt Level 1 (IRQ1) Enable Bit; Timer B, Timer 1/A

                 0 Disable (mask)

                 1 Enable (unmask)

.0               Interrupt Level 0 (IRQ0) Enable Bit; Timer 0 Match/Capture or Overflow

                 0 Disable (mask)

                 1 Enable (unmask)

NOTE: When an interrupt level is masked, any interrupt requests that may be issued are not recognized by the CPU.

                                                                                                                   4-9
CONTROL REGISTERS                                                        S3C825A/P825A

INTPND -- Interrupt Pending Register                            D0H  Set 1, Bank 0

Bit Identifier     .7  .6  .5                      .4      .3   .2   .1   .0
RESET Value
Read/Write         �   �   0                       0       0    0    0    0
Addressing Mode
                   �   �   R/W                     R/W     R/W  R/W  R/W  R/W

                   Register addressing mode only

.7�.6              Not used for the S3C825A

.5                 Rx Interrupt Pending Bit (for UART)

                   0 Interrupt request is not pending (when read), pending bit clear (when write 0)

                   1 Interrupt request is pending

.4                 Tx Interrupt Pending Bit (for UART)

                   0 Interrupt request is not pending (when read), pending bit clear (when write 0)

                   1 Interrupt request is pending

.3                 Timer 3 Match/Capture Interrupt Pending Bit

                   0 Interrupt request is not pending (when read), pending bit clear (when write 0)

                   1 Interrupt request is pending

.2                 Timer 3 Overflow Interrupt Pending bit

                   0 Interrupt request is not pending (when read), pending bit clear (when write 0)

                   1 Interrupt request is pending

.1                 Timer 0 Match/Capture Interrupt Pending Bit

                   0 Interrupt request is not pending (when read), pending bit clear (when write 0)

                   1 Interrupt request is pending

.0                 Timer 0 Overflow Interrupt Pending bit

                   0 Interrupt request is not pending (when read), pending bit clear (when write 0)

                   1 Interrupt request is pending

4-10
S3C825A/P825A                                                  CONTROL REGISTER

IPH -- Instruction Pointer (High Byte)                    DAH        Set 1

Bit Identifier   .7   .6                .5       .4  .3   .2   .1    .0
RESET Value                                       x                   x
Read/Write       x    x                 x       R/W  x    x    x    R/W
Addressing Mode
                 R/W  R/W               R/W          R/W  R/W  R/W

                 Register addressing mode only

.7�.0            Instruction 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)                     DBH       Set 1

Bit Identifier   .7   .6                .5      .4   .3   .2   .1   .0
RESET Value
Read/Write       x    x                 x       x    x    x    x    x
Addressing Mode
                 R/W  R/W               R/W     R/W  R/W  R/W  R/W  R/W

                 Register addressing mode only

.7�.0            Instruction 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-11
CONTROL REGISTERS                                                                     S3C825A/P825A

IPR -- Interrupt Priority Register                                 FFH            Set 1, Bank 0

Bit Identifier     .7   .6                       .5   .4      .3   .2             .1   .0
RESET Value
Read/Write         x    x                        x    x       x    x              x    x
Addressing Mode
                   R/W  R/W                      R/W  R/W     R/W  R/W            R/W  R/W

                   Register addressing mode only

.7, .4, and .1     Priority Control Bits for Interrupt Groups A, B, and C (note)
                    0 0 0 Group priority undefined
                    0 0 1 B>C>A
                    0 1 0 A>B>C
                    0 1 1 B>A>C
                    1 0 0 C>A>B
                    1 0 1 C>B>A
                    1 1 0 A>C>B
                    1 1 1 Group priority undefined

.6                 Interrupt Subgroup C Priority Control Bit

                   0 IRQ6 > IRQ7

                   1 IRQ7 > IRQ6

.5                 Interrupt Group C Priority Control Bit

                   0 IRQ5 > (IRQ6, IRQ7)

                   1 (IRQ6, IRQ7) > IRQ5

.3                 Interrupt Subgroup B Priority Control Bit

                   0 IRQ3 > IRQ4

                   1 IRQ4 > IRQ3

.2                 Interrupt Group B Priority Control Bit

                   0 IRQ2 > (IRQ3, IRQ4)

                   1 (IRQ3, IRQ4) > IRQ2

.0                 Interrupt Group A Priority Control Bit

                   0 IRQ0 > IRQ1

                   1 IRQ1 > IRQ0

NOTE: Interrupt Group A - IRQ0, IRQ1
           Interrupt Group B - IRQ2, IRQ3, IRQ4
           Interrupt Group C - IRQ5, IRQ6, IRQ7

4-12
S3C825A/P825A                                                            CONTROL REGISTER

IRQ -- Interrupt Request Register                                 DCH                   Set 1

Bit Identifier   .7         .6     .5           .4  .3            .2     .1             .0

RESET Value      0          0      0            0   0             0      0              0

Read/Write       R          R      R            R   R             R      R              R

Addressing Mode  Register addressing mode only

.7               Level 7 (IRQ7) Request Pending Bit; External Interrupt P4.0-P4.3

                 0 Not pending

                 1 Pending

.6               Level 6 (IRQ6) Request Pending Bit; External Interrupt P4.4-P4.7

                 0 Not pending

                 1 Pending

.5               Level 5 (IRQ5) Request Pending Bit; External Interrupt P2.4-P2.7

                 0 Not pending

                 1 Pending

.4               Level 4 (IRQ4) Request Pending Bit; Watch Timer

                 0 Not pending

                 1 Pending

.3               Level 3 (IRQ3) Request Pending Bit; SIO, UART Transmit, UART Receive

                 0 Not pending

                 1 Pending

.2               Level 2 (IRQ2) Request Pending Bit; Timer 2, Timer 3 Match/Capture or

                 Overflow

                 0 Not pending

                 1 Pending

.1               Level 1 (IRQ1) Request Pending Bit; Timer B, Timer 1/A

                 0 Not pending

                 1 Pending

.0               Level 0 (IRQ0) Request Pending Bit; Timer 0 Match/Capture or Overflow

                 0 Not pending

                 1 Pending

                                                                                            4-13
CONTROL REGISTERS                                                                    S3C825A/P825A

LCON -- LCD Control Register                               F2H                       Set 1, Bank 0

Bit Identifier     .7   .6    .5                  .4  .3   .2     .1                 .0
RESET Value
Read/Write         0    0     �                   �   0    0      0                  0
Addressing Mode
                   R/W  R/W   �                   �   R/W  R/W    R/W                R/W

                   Register addressing mode only

.7 and .6          LCD Display Control Bits
                    0 0 Display off, P-Tr off
                    0 1 Normal display (using VLC1 with external voltage), P-Tr off
                    1 1 Normal display (using VLC1 with internal voltage), P-Tr on

.5 and .4          Not used for the S3C825A.
.3 and .2
                   LCD Duty and Bias Selection Bits
.1 and .0           0 0 1/3 duty, 1/3 bias; COM0�COM2/SEG0�SEG31
                    0 1 1/4 duty, 1/3 bias; COM0�COM3/SEG0�SEG31
                    1 0 1/8 duty, 1/4 bias; COM0�COM7/SEG4�SEG31
                    1 1 1/8 duty, 1/5 bias; COM0�COM7/SEG4�SEG31

                   LCD Clock Selection Bits
                    0 0 fw/27 (256 Hz when fw is 32.768 kHz)
                    0 1 fw/26 (512 Hz when fw is 32.768 kHz)
                    1 0 fw/25 (1,024 Hz when fw is 32.768 kHz)
                    1 1 fw/24 (2,048 Hz when fw is 32.768 kHz)

4-14
S3C825A/P825A                                                                        CONTROL REGISTER

LMOD -- LCD Mode Control Register                                             F3H           Set 1, Bank 0

Bit Identifier   .7  .6                  .5         .4                 .3     .2            .1         .0
RESET Value
Read/Write       �   �                   �          �                  0      0             0          0
Addressing Mode
                 �   �                   �          �          R/W            R/W    R/W               R/W

                 Register addressing mode only

.7-.4            Not used for the S3C825A.

.3�.0            LCD Port Selection Bit

                     P6.0- P6.4-             P7.0-      P7.4-          P8.0-  P0.0-  P0.4-      P1.0-  P1.4-
                     P6.3 P6.7               P7.3       P7.7           P8.3   P0.3   P0.7       P1.3   P1.7
                                             SEG        SEG            SEG    SEG    SEG        SEG    SEG
                     COM COM4-7/              4-7       8-11           12-15  16-19  20-23      24-27  28-31
                      0-3 SEG0-3
                                             Port       Port           Port   Port   Port       Port   Port
                 0 0 0 0 Port Port           Port       Port           Port   Port   Port       Port   Port
                                             SEG        Port           Port   Port   Port       Port   Port
                 0 0 0 1 COM  COM/SEG        SEG        SEG            Port   Port   Port       Port   Port
                 0 0 1 0 COM  COM/SEG        SEG        SEG            SEG    Port   Port       Port   Port
                 0 0 1 1 COM  COM/SEG        SEG        SEG            SEG    SEG    Port       Port   Port
                 0 1 0 0 COM  COM/SEG        SEG        SEG            SEG    SEG    SEG        Port   Port
                 0 1 0 1 COM  COM/SEG        SEG        SEG            SEG    SEG    SEG        SEG    Port
                 0 1 1 0 COM  COM/SEG        SEG        SEG            SEG    SEG    SEG        SEG    SEG
                 0 1 1 1 COM  COM/SEG
                 1 0 0 0 COM  COM/SEG

NOTE: The SEG0-SEG3 or COM4-COM7 signals are controlled by LCON.3-.2.

                                                                                                           4-15
CONTROL REGISTERS                                                            S3C825A/P825A

OSCCON -- Oscillator Control Register                               D2H  Set 1, Bank 0

Bit Identifier     .7  .6                .5     .4            .3    .2   .1  .0
RESET Value                                                          0
Read/Write         �   �                  �     �             0    R/W   �   0

                   �   �                  �     �             R/W        �   R/W

.7-.4              Not used for S3C825A

.3                 Main Oscillator Control Bit

                   0 Main oscillator RUN

                   1 Main oscillator STOP

.2                 Sub Oscillator Control Bit

                   0 Sub oscillator RUN

                   1 Sub oscillator STOP

.1                 Not used for S3C825A

.0                 System Clock Selection Bit

                   0 Select main oscillator for system clock

                   1 Select sub oscillator for system clock

4-16
S3C825A/P825A                                                             CONTROL REGISTER

P2CONH -- Port 2 Control Register (High Byte)                        E0H  Set 1, Bank 1

Bit Identifier   .7   .6   .5                   .4   .3              .2   .1   .0
RESET Value
Read/Write       0    0    0                    0    0               0    0    0
Addressing Mode
                 R/W  R/W  R/W                  R/W  R/W     R/W          R/W  R/W

                 Register addressing mode only

.7�.6            P2.7/INT3/TBOUT
                  0 0 Input mode; interrupt on falling edge
                  0 1 Output mode, open-drain
                  1 0 Alternative function (TBOUT)
                  1 1 Output mode, push-pull

.5�.4            P2.6/INT2/TAOUT
                  0 0 Input mode; interrupt on falling edge
                  0 1 Output mode, open-drain
                  1 0 Alternative function (TAOUT)
                  1 1 Output mode, push-pull

.3�.2            P2.5/INT1/T1CLK
                  0 0 Input mode (T1CLK); interrupt on falling edge
                  0 1 Output mode, open-drain
                  1 0 Not available
                  1 1 Output mode, push-pull

.1�.0            P2.4/INT0/T0CLK
                  0 0 Input mode (T0CLK); interrupt on falling edge
                  0 1 Output mode, open-drain
                  1 0 Not available
                  1 1 Output mode, push-pull

                                                                                   4-17
CONTROL REGISTERS                                                S3C825A/P825A

P2CONL -- Port 2 Control Register (Low Byte)                E1H  Set 1, Bank 1

Bit Identifier     .7    .6   .5                  .4   .3    .2   .1   .0
RESET Value                                                   0    0    0
Read/Write         0     0    0                   0    0    R/W  R/W  R/W
Addressing Mode
                   R/W   R/W  R/W                 R/W  R/W

                   Register addressing mode only

.7�.6              P2.3/T2OUT
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (T2OUT)
                    1 1 Output mode, push-pull

.5�.4              P2.2/T2CLK
                    0 0 Input mode (T2CLK)
                    0 1 Output mode, open-drain
                    1 0 Not available
                    1 1 Output mode, push-pull

.3�.2              P2.1
                    00
                    01   Input mode
                    10   Output mode, open-drain
                    11   Not available
                         Output mode, push-pull

.1�.0              P2.0
                    00
                    01   Input mode
                    10   Output mode, open-drain
                    11   Not available
                         Output mode, push-pull

4-18
S3C825A/P825A                                                     CONTROL REGISTER

P2PUR -- Port 2 Pull-up Control Register                     E2H  Set 1, Bank 1

Bit Identifier   .7   .6            .5             .4   .3   .2   .1   .0
RESET Value
Read/Write       0    0             0              0    0    0    0    0
Addressing Mode
                 R/W  R/W           R/W            R/W  R/W  R/W  R/W  R/W

                 Register addressing mode only

.7               P2.7 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.6               P2.6 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.5               P2.5 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.4               P2.4 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.3               P2.3 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.2               P2.2 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.1               P2.1 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.0               P2.0 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

                                                                            4-19
CONTROL REGISTERS                                                             S3C825A/P825A

P2INT -- Port 2 Interrupt Control Register                           E3H  Set 1, Bank 1

Bit Identifier     .7   .6   .5                      .4        .3    .2   .1   .0
RESET Value
Read/Write         0    0    0                       0         0     0    0    0
Addressing Mode
                   R/W  R/W  R/W                   R/W         R/W   R/W  R/W  R/W

                   Register addressing mode only

.7                 Port 2 Interrupt Request Pending Bit (P2.7/INT3)

                   0 No interrupt request pending

                   0 Clear pending bit (when write)

                   1 Interrupt request is pending

.6                 Interrupt Control Settings (P2.7/INT3)

                   0 Disable interrupt on P2.7

                   1 Enable interrupt at falling edge on P2.7

.5                 Port 2 Interrupt Request Pending Bit (P2.6/INT2)

                   0 No interrupt request pending

                   0 Clear pending bit (when write)

                   1 Interrupt request is pending

.4                 Interrupt Control Settings (P2.6/INT2)

                   0 Disable interrupt on P2.6

                   1 Enable interrupt at falling edge on P2.6

.3                 Port 2 Interrupt Request Pending Bit (P2.5/INT1)

                   0 No interrupt request pending

                   0 Clear pending bit (when write)

                   1 Interrupt request is pending

.2                 Interrupt Control Settings (P2.5/INT1)

                   0 Disable interrupt on P2.5

                   1 Enable interrupt at falling edge on P2.5

.1                 Port 2 Interrupt Request Pending Bit (P2.4/INT0)

                   0 No interrupt request pending

                   0 Clear pending bit (when write)

                   1 Interrupt request is pending

.0                 Interrupt Control Settings (P2.4/INT0)

                   0 Disable interrupt on P2.4

                   1 Enable interrupt at falling edge on P2.4

4-20
S3C825A/P825A                                                  CONTROL REGISTER

P3CONH -- Port 3 Control Register (High Byte)             E4H  Set 1, Bank 1

Bit Identifier   .7    .6   .5                  .4   .3   .2   .1   .0
RESET Value
Read/Write       0     0    0                   0    0    0    0    0
Addressing Mode
                 R/W   R/W  R/W                 R/W  R/W  R/W  R/W  R/W

                 Register addressing mode only

.7�.6            P3.7/T0OUT/T0PWM/T0CAP
                  0 0 Input mode (T0CAP)
                  0 1 Output mode, open-drain
                  1 0 Alternative function (T0OUT/T0PWM)
                  1 1 Output mode, push-pull

.5�.4            P3.6/T3OUT/T3PWM/T3CAP
                  0 0 Input mode (T3CAP)
                  0 1 Output mode, open-drain
                  1 0 Alternative function (T3OUT/T3PWM)
                  1 1 Output mode, push-pull

.3�.2            P3.5/T3CLK
                  0 0 Input mode(T3CLK)
                  0 1 Output mode, open-drain
                  1 0 Not available
                  1 1 Output mode, push-pull

.1�.0            P3.4
                  00
                  01   Input mode
                  10   Output mode, open-drain
                  11   Not available
                       Output mode, push-pull

                                                                        4-21
CONTROL REGISTERS                                                  S3C825A/P825A

P3CONL -- Port 3 Control Register (Low Byte)                  E5H  Set 1, Bank 1

Bit Identifier     .7   .6   .5                   .4     .3    .2   .1   .0
RESET Value                                                     0    0    0
Read/Write         0    0    0                    0      0    R/W  R/W  R/W
Addressing Mode
                   R/W  R/W  R/W                  R/W    R/W

                   Register addressing mode only

.7�.6              P3.3/AD3
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (ADC mode)
                    1 1 Output mode, push-pull

.5�.4              P3.2/AD2
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (ADC mode)
                    1 1 Output mode, push-pull

.3�.2              P3.1/AD1
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (ADC mode)
                    1 1 Output mode, push-pull

.1�.0              P3.0/AD0
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (ADC mode)
                    1 1 Output mode, push-pull

4-22
S3C825A/P825A                                                     CONTROL REGISTER

P3PUR -- Port 3 Pull-up Control Register                     E6H  Set 1, Bank 1

Bit Identifier   .7   .6   .5                       .4   .3   .2   .1   .0
RESET Value                                          0    0    0    0    0
Read/Write       0    0    0                       R/W  R/W  R/W  R/W  R/W
Addressing Mode
.7               R/W  R/W  R/W

.6               Register addressing mode only

.5               P3.7 Pull-up Resistor Enable Bit
                  0 Pull-up disable
.4                1 Pull-up enable

.3               P3.6 Pull-up Resistor Enable Bit
                  0 Pull-up disable
.2                1 Pull-up enable

.1               P3.5 Pull-up Resistor Enable Bit
                  0 Pull-up disable
.0                1 Pull-up enable

                 P3.4 Pull-up Resistor Enable Bit
                  0 Pull-up disable
                  1 Pull-up enable

                 P3.3 Pull-up Resistor Enable Bit
                  0 Pull-up disable
                  1 Pull-up enable

                 P3.2 Pull-up Resistor Enable Bit
                  0 Pull-up disable
                  1 Pull-up enable

                 P3.1 Pull-up Resistor Enable Bit
                  0 Pull-up disable
                  1 Pull-up enable

                 P3.0 Pull-up Resistor Enable Bit
                  0 Pull-up disable
                  1 Pull-up enable

                                                                       4-23
CONTROL REGISTERS                                                                          S3C825A/P825A

P4CONH -- Port 4 Control Register (High Byte)                                         E8H  Set 1, Bank 1

Bit Identifier     .7   .6   .5                    .4                             .3   .2   .1   .0
RESET Value                                                                             0    0    0
Read/Write         0    0    0                     0                              0   R/W  R/W  R/W
Addressing Mode
                   R/W  R/W  R/W                  R/W  R/W

                   Register addressing mode only

.7 and .6          P4.7/INT11 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input, pull-up mode
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

.5 and .4          P4.6/INT10 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input, pull-up mode
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

.3 and .2          P4.5/INT9 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input, pull-up mode
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

.1 and .0          P4.4/INT8 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input, pull-up mode
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

NOTE: Pins configured as input can be used as interrupt input with noise filter.

4-24
S3C825A/P825A                                                                              CONTROL REGISTER

P4CONL -- Port 4 Control Register (Low Byte)                                          E9H  Set 1, Bank 1

Bit Identifier   .7   .6   .5                   .4                                .3   .2   .1   .0
RESET Value                                                                             0    0    0
Read/Write       0    0    0                    0                                 0   R/W  R/W  R/W
Addressing Mode
                 R/W  R/W  R/W                  R/W  R/W

                 Register addressing mode only

.7 and .6        P4.3/INT7 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input, pull-up mode
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

.5 and .4        P4.2/INT6 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input, pull-up mode
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

.3 and .2        P4.1/INT5 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input, pull-up mode
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

.1 and .0        P4.0/INT4 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input, pull-up mode
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

NOTE: Pins configured as input can be used as interrupt input with noise filter.

                                                                                                4-25
CONTROL REGISTERS                                                       S3C825A/P825A

P4EDGE -- Port 4 Interrupt Edge Selection Register                 E7H  Set 1, Bank 1

Bit Identifier     .7   .6   .5                   .4          .3    .2   .1   .0
RESET Value                                                          0    0    0
Read/Write         0    0    0                    0           0    R/W  R/W  R/W
Addressing Mode
                   R/W  R/W  R/W                  R/W         R/W

                   Register addressing mode only

.7                 P4.7 External Interrupt (INT11) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.6                 P4.6 External Interrupt (INT10) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.5                 P4.5 External Interrupt (INT9) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.4                 P4.4 External Interrupt (INT8) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.3                 P4.3 External Interrupt (INT7) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.2                 P4.2 External Interrupt (INT6) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.1                 P4.1 External Interrupt (INT5) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

.0                 P4.0 External Interrupt (INT4) State Bit

                   0 Falling edge detection

                   1 Rising edge detection

4-26
S3C825A/P825A                                                          CONTROL REGISTER

P4INT -- Port 4 Interrupt Control Register                        EAH  Set 1, Bank 1

Bit Identifier   .7   .6              .5        .4           .3   .2   .1   .0
RESET Value
Read/Write       0    0               0         0            0    0    0    0
Addressing Mode
                 R/W  R/W             R/W       R/W          R/W  R/W  R/W  R/W

                 Register addressing mode only

.7               P4.7 External Interrupt (INT11) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.6               P4.6 External Interrupt (INT10) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.5               P4.5 External Interrupt (INT9) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.4               P4.4 External Interrupt (INT8) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.3               P4.3 External Interrupt (INT7) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.2               P4.2 External Interrupt (INT6) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.1               P4.1 External Interrupt (INT5) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.0               P4.0 External Interrupt (INT4) Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

                                                                                4-27
CONTROL REGISTERS                                                                           S3C825A/P825A

P4PND -- Port 4 Interrupt Pending Register                                         EBH  Set 1, Bank 1

Bit Identifier     .7   .6   .5                   .4                          .3   .2   .1     .0
RESET Value
Read/Write         0    0    0                    0                           0    0    0      0
Addressing Mode
                   R/W  R/W  R/W                  R/W                         R/W  R/W  R/W  R/W

                   Register addressing mode only

.7                 P4.7 External Interrupt (INT11) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.7 interrupt request is pending (when read)

.6                 P4.6 External Interrupt (INT10) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.6 interrupt request is pending (when read)

.5                 P4.5 External Interrupt (INT9) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.5 interrupt request is pending (when read)

.4                 P4.4 External Interrupt (INT8) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.4 interrupt request is pending (when read)

.3                 P4.3 External Interrupt (INT7) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.3 interrupt request is pending (when read)

.2                 P4.2 External Interrupt (INT6) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.2 interrupt request is pending (when read)

.1                 P4.1 External Interrupt (INT5) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.1 interrupt request is pending (when read)

.0                 P4.0 External Interrupt (INT4) Pending Flag

                   0 No interrupt request pending (When read), Clear pending bit (when write)

                   1 P4.0 interrupt request is pending (when read)

NOTE: Writing a "1" to an interrupt pending flag (P4PND.0�.7) has no effect.

4-28
S3C825A/P825A                                                  CONTROL REGISTER

P5CONH -- Port 5 Control Register (High Byte)             ECH  Set 1, Bank 1

Bit Identifier   .7    .6                .5     .4   .3   .2   .1               .0
RESET Value
Read/Write       0     0                 0      0    0    0    0                0
Addressing Mode
                 R/W   R/W  R/W                 R/W  R/W  R/W  R/W              R/W

                 Register addressing mode only

.7               TXD output control bit

                 0 Disable TXD output at P5.5

                 1 Enable TXD output at P5.5

.6               RXD output control bit

                 0 Disable RXD output at P5.4

                 1 Enable RXD output at P5.4

.5�.4            P5.6
                  00
                  01   Input mode
                  10   Output mode, open-drain
                  11   Not available
                       Output mode, push-pull

.3�.2            P5.5/TXD
                  0 0 Input mode
                  0 1 Output mode, open-drain (TXD output depends on P5CONH.7)
                  1 0 Not available
                  1 1 Output mode, push-pull (TXD output depends on P5CONH.7)

.1�.0            P5.4/RXD
                  0 0 Input mode (RXD)
                  0 1 Output mode, open-drain (RXD output depends on P5CONH.6)
                  1 0 Not available
                  1 1 Output mode, push-pull (RXD output depends on P5CONH.6)

                                                                                    4-29
CONTROL REGISTERS                                                 S3C825A/P825A

P5CONL -- Port 5 Control Register (Low Byte)                 EDH  Set 1, Bank 1

Bit Identifier     .7       .6   .5               .4    .3    .2   .1   .0
RESET Value                                                    0    0    0
Read/Write         0        0    0                   0  0    R/W  R/W  R/W
Addressing Mode
                   R/W      R/W  R/W              R/W   R/W

                   Register addressing mode only

.7�.6              P5.3/BUZ
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (BUZ)
                    1 1 Output mode, push-pull

.5�.4              P5.2/SO
                    0 0 Input mode
                    0 1 Output mode, open-drain
                    1 0 Alternative function (SO)
                    1 1 Output mode, push-pull

.3�.2              P5.1/SI
                    00
                    01      Input mode (SI)
                    10      Output mode, open-drain
                    11      Not available
                            Output mode, push-pull

.1�.0              P5.0/SCK
                    0 0 Input mode (SCK)
                    0 1 Output mode, open-drain
                    1 0 Alternative function (SCK out)
                    1 1 Output mode, push-pull

4-30
S3C825A/P825A                                                     CONTROL REGISTER

P5PUR -- Port 5 Pull-up Control Register                     EEH  Set 1, Bank 1

Bit Identifier   .7   .6            .5             .4   .3   .2   .1   .0
RESET Value
Read/Write       0    0             0              0    0    0    0    0
Addressing Mode
                 R/W  R/W           R/W            R/W  R/W  R/W  R/W  R/W

                 Register addressing mode only

.7               Not used for the S3C825A

.6               P5.6 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.5               P5.5 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.4               P5.4 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.3               P5.3 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.2               P5.2 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.1               P5.1 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

.0               P5.0 Pull-up Resistor Enable Bit

                 0 Pull-up disable

                 1 Pull-up enable

                                                                           4-31
CONTROL REGISTERS                                                   S3C825A/P825A

PG0CON -- Port Group 0 Control Register                        F9H  Set 1, Bank 1

Bit Identifier     .7   .6   .5                   .4      .3    .2   .1   .0
RESET Value                                                      0    0    0
Read/Write         0    0    0                    0       0    R/W  R/W  R/W
Addressing Mode
                   R/W  R/W  R/W                  R/W     R/W

                   Register addressing mode only

.7�.6              P1.4-1.7/SEG28-31 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input mode, pull-up
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

.5�.4              P1.0-1.3/SEG24-27 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input mode, pull-up
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

.3�.2              P0.4-0.7/SEG20-23 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input mode, pull-up
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

.1�.0              P0.0-0.3/SEG16-19 Mode Selection Bits
                    0 0 Input mode
                    0 1 Input mode, pull-up
                    1 0 Open-drain output mode
                    1 1 Push-pull output mode

4-32
S3C825A/P825A                                                      CONTROL REGISTER

PG1CON -- Port Group 1 Control Register                       FAH  Set 1, Bank 1

Bit Identifier   .7   .6   .5                   .4       .3   .2   .1              .0
RESET Value
Read/Write       0    0    0                    0        0    0    0               0
Addressing Mode
                 R/W  R/W  R/W                  R/W      R/W  R/W  R/W             R/W

                 Register addressing mode only

.7�.6            P8.0-P8.3/SEG12-15 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input mode, pull-up
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

.5�.4            P7.4-P7.7/SEG8-11 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input mode, pull-up
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

.3�.2            P7.0-P7.3/SEG4-7 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input mode, pull-up
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

.1�.0            P6.0-P6.3/COM0-3 and P6.4-P6.7/COM4-7/SEG0-3 Mode Selection Bits
                  0 0 Input mode
                  0 1 Input mode, pull-up
                  1 0 Open-drain output mode
                  1 1 Push-pull output mode

                                                                                       4-33
CONTROL REGISTERS                                                          S3C825A/P825A

PP -- Register Page Pointer                                       DFH                                                     Set 1

Bit Identifier     .7        .6   .5              .4         .3   .2   .1   .0
RESET Value
Read/Write         0         0    0               0          0    0    0    0
Addressing Mode
                   R/W       R/W  R/W             R/W        R/W  R/W  R/W  R/W

                   Register addressing mode only

.7�.4              Destination Register Page Selection Bits
                    0 0 0 0 Destination: page 0
                    0 0 0 1 Destination: page 1
                    0 0 1 0 Destination: page 2
                    0 0 1 1 Destination: page 3
                    0 1 0 0 Destination: page 4
                    0 1 0 1 Destination: page 5
                    0 1 1 0 Destination: page 6
                    0 1 1 1 Destination: page 7

.3 � .0            Source Register Page Selection Bits
                    0 0 0 0 Source: page 0
                    0 0 0 1 Source: page 1
                    0 0 1 0 Source: page 2
                    0 0 1 1 Source: page 3
                    0 1 0 0 Source: page 4
                    0 1 0 1 Source: page 5
                    0 1 1 0 Source: page 6
                    0 1 1 1 Source: page 7

NOTE: In the S3C825A microcontroller, the internal register file is configured as eight pages (Pages 0-7).
           The pages 0-6 are used for general purpose register file, and page 4 is used for LCD data register or general
           purpose registers.

4-34
S3C825A/P825A                                                 CONTROL REGISTER

RP0 -- Register Pointer 0                                D6H      Set 1

Bit Identifier   .7        .6              .5  .4   .3   .2   .1  .0

RESET Value      1         1               0   0    0    �    �   �

Read/Write       R/W       R/W  R/W            R/W  R/W  �    �   �

Addressing Mode  Register addressing only

.7�.3            Register Pointer 0 Address Value

                 Register pointer 0 can independently point to one of the 256-byte working register
                 areas in the register file. Using the register pointers RP0 and RP1, you can select
                 two 8-byte register slices at one time as active working register space. After a reset,
                 RP0 points to address C0H in register set 1, selecting the 8-byte working register
                 slice C0H�C7H.

.2�.0            Not used for the S3C825A

RP1 -- Register Pointer 1                                D7H      Set 1

Bit Identifier   .7        .6              .5  .4   .3   .2   .1  .0

RESET Value      1         1               0   0    1    �    �   �

Read/Write       R/W       R/W  R/W            R/W  R/W  �    �   �

Addressing Mode  Register addressing only

.7 � .3          Register Pointer 1 Address Value

                 Register pointer 1 can independently point to one of the 256-byte working register
                 areas in the register file. Using the register pointers RP0 and RP1, you can select
                 two 8-byte register slices at one time as active working register space. After a reset,
                 RP1 points to address C8H in register set 1, selecting the 8-byte working register
                 slice C8H�CFH.

.2 � .0          Not used for the S3C825A

                                                                      4-35
CONTROL REGISTERS                                                       S3C825A/P825A

SIOCON -- SIO Control Register                                     E0H  Set 1, Bank 0

Bit Identifier     .7   .6                 .5      .4         .3    .2   .1   .0
RESET Value                                                          0    0    0
Read/Write         0    0                  0       0          0    R/W  R/W  R/W
Addressing Mode
                   R/W  R/W          R/W           R/W        R/W

                   Register addressing mode only

.7                 SIO Shift Clock Selection Bit

                   0 Internal clock (P.S clock)

                   1 External clock (SCK)

.6                 Data Direction Control Bit

                   0 MSB-first mode

                   1 LSB-first mode

.5                 SIO Mode Selection Bit

                   0 Receive-only mode

                   1 Transmit/receive mode

.4                 Shift Clock Edge Selection Bit

                   0 Tx at falling edges, Rx at rising edges

                   1 Tx at rising edges, Rx at falling edges

.3                 SIO Counter Clear and Shift Start Bit

                   0 No action

                   1 Clear 3-bit counter and start shifting

.2                 SIO Shift Operation Enable Bit

                   0 Disable shifter and clock counter

                   1 Enable shifter and clock counter

.1                 SIO Interrupt Enable Bit

                   0 Disable SIO Interrupt

                   1 Enable SIO Interrupt

.0                 SIO Interrupt Pending Bit

                   0 No interrupt pending

                   0 Clear pending condition (when write)

                   1 Interrupt is pending

4-36
S3C825A/P825A                                                  CONTROL REGISTER

SPH -- Stack Pointer (High Byte)                          D8H       Set 1

Bit Identifier   .7   .6          .5            .4   .3   .2   .1   .0
RESET Value
Read/Write       x    x           x             x    x    x    x    x
Addressing Mode
                 R/W  R/W         R/W           R/W  R/W  R/W  R/W  R/W

                 Register addressing mode only

.7�.0            Stack Pointer Address (High Byte)

                 The high-byte stack pointer value is the upper eight bits of the 16-bit stack pointer
                 address (SP15�SP8). The lower byte of the stack pointer value is located in register
                 SPL (D9H). The SP value is undefined following a reset.

SPL -- Stack Pointer (Low Byte)                           D9H       Set 1

Bit Identifier   .7   .6          .5            .4   .3   .2   .1   .0
RESET Value
Read/Write       x    x           x             x    x    x    x    x
Addressing Mode
                 R/W  R/W         R/W           R/W  R/W  R/W  R/W  R/W

                 Register addressing mode only

.7�.0            Stack Pointer Address (Low Byte)

                 The low-byte stack pointer value is the lower eight bits of the 16-bit stack pointer
                 address (SP7�SP0). The upper byte of the stack pointer value is located in register
                 SPH (D8H). The SP value is undefined following a reset.

                                                                        4-37
CONTROL REGISTERS                                                          S3C825A/P825A

STPCON -- Stop Control Register                                   D1H                                   Set 1

Bit Identifier     .7   .6       .5               .4         .3   .2   .1                               .0
RESET Value
Read/Write         0    0        0                0          0    0    0                                0
Addressing Mode
                   R/W  R/W      R/W              R/W        R/W  R/W  R/W                              R/W

                   Register addressing mode only

.7�.0              STOP Control Bits
                    1 0 1 0 0 1 0 1 Enable stop instruction
                     Other values Disable stop instruction

NOTE: Before execute the STOP instruction, set this STPCON register as "10100101b". Otherwise the STOP
           instruction will not execute as well as reset will be generated.

4-38
S3C825A/P825A                                                       CONTROL REGISTER

SYM -- System Mode Register                                    DEH                                                    Set 1

Bit Identifier   .7   .6     .5                     .4    .3   .2   .1                                                .0
RESET Value
Read/Write       0    �      �                      x     x    x    0                                                 0
Addressing Mode
                 R/W  �      �                    R/W     R/W  R/W  R/W  R/W

                 Register addressing mode only

.7               Not used, But you must keep "0"

.6�.5            Not used for the S3C825A

.4�.2            Fast Interrupt Level Selection Bits (1)
                  0 0 0 IRQ0
                  0 0 1 IRQ1
                  0 1 0 IRQ2
                  0 1 1 IRQ3
                  1 0 0 IRQ4
                  1 0 1 IRQ5
                  1 1 0 IRQ6
                  1 1 1 IRQ7

.1               Fast Interrupt Enable Bit (2)

                 0 Disable fast interrupt processing

                 1 Enable fast interrupt processing

.0               Global Interrupt Enable Bit (3)

                 0 Disable all interrupt processing

                 1 Enable all interrupt processing

NOTES:
1. You can select only one interrupt level at a time for fast interrupt processing.
2. Setting SYM.1 to "1" enables fast interrupt processing for the interrupt level currently selected by SYM.2-SYM.4.
3. Following a reset, you must enable global interrupt processing by executing an EI instruction

     (not by writing a "1" to SYM.0).

                                                                                                                          4-39
CONTROL REGISTERS                                                           S3C825A/P825A

T0CON -- Timer 0 Control Register                                  E5H  Set 1, Bank 0

Bit Identifier     .7   .6              .5           .4        .3  .2   .1   .0
RESET Value
Read/Write         0            0       0            0         0   0    0    0
Addressing Mode
                   R/W  R/W             R/W          R/W     R/W   R/W  R/W  R/W

                   Register addressing mode only

.7�.5              Timer 0 Input Clock Selection Bits
                    0 0 0 fxx/1024
                    0 0 1 fxx/256
                    0 1 0 fxx/64
                    0 1 1 fxx/8
                    1 0 0 fxx
                    1 0 1 External clock (T0CLK) falling edge
                    1 1 0 External clock (T0CLK) rising edge
                    1 1 1 Counter stop

.4�.3              Timer 0 Operating Mode Selection Bits
                    0 0 Interval mode
                    0 1 Capture mode (capture on rising edge, counter running, OVF can occur)
                    1 0 Capture mode (capture on falling edge, counter running, OVF can occur)
                    1 1 PWM mode (OVF & match interrupt can occur)

.2                 Timer 0 Counter Clear Bit (note)

                   0 No effect

                   1 Clear the timer 0 counter (when write)

.1                 Timer 0 Match/Capture Interrupt Enable Bit

                   0 Disable interrupt

                   1 Enable interrupt

.0                 Timer 0 Overflow Interrupt Enable

                   0 Disable overflow interrupt

                   1 Enable overflow interrupt

NOTE: When you write a "1" to T0CON.2, the timer 0 counter value is cleared to "00H". Immediately following the write
           operation, the T0CON.2 value is automatically cleared to "0".

4-40
S3C825A/P825A                                                         CONTROL REGISTER

TACON -- Timer 1/A Control Register                              EBH  Set 1, Bank 0

Bit Identifier   .7   .6              .5           .4        .3  .2   .1   .0
RESET Value
Read/Write       0            0       0            0         0   0    0    0
Addressing Mode
                 R/W  R/W             R/W         R/W  R/W       R/W  R/W  R/W

                 Register addressing mode only

.7               Timer 1 Operating Mode Selection Bit

                 0 Two 8-bit timers mode (Timer A/B)

                 1 One 16-bit timer mode (Timer 1)

.6�.4            Timer 1/A Clock Selection Bits
                  0 0 0 fxx/256
                  0 0 1 fxx/64
                  0 1 0 fxx/8
                  0 1 1 fxx
                  1 1 1 External clock (T1CLK) rising edge

.3               Timer 1/A Counter Clear Bit (NOTE)

                 0 No effect

                 1 Clear the timer 1/A counter (when write)

.2               Timer 1/A Counter Run Enable Bit

                 0 Disable Counter Running

                 1 Enable Counter Running

.1               Timer 1/A Interrupt Enable Bit

                 0 Disable interrupt

                 1 Enable interrupt

.0               Timer 1/A Interrupt Pending Bit

                 0 No interrupt pending (when read)

                 0 Clear pending bit (when write)

                 1 Interrupt is pending (when read)

NOTE: When you write a "1" to TACON.3, the Timer 1/A counter value is cleared to "00H". Immediately following the write
           operation, the TACON.3 value is automatically cleared to "0".

                                                                               4-41
CONTROL REGISTERS                                                          S3C825A/P825A

TBCON -- Timer B Control Register                                 EAH Set 1, Bank0

Bit Identifier     .7  .6               .5           .4      .3   .2   .1   .0
RESET Value
Read/Write         �            �       0            0       0    0    0    0
Addressing Mode
                   �            �       R/W          R/W     R/W  R/W  R/W  R/W

                   Register addressing mode only

.7 and .6          Not used for the S3C825A

.5 and .4          Timer B Clock Selection Bits
                    0 0 fxx/256
                    0 1 fxx/64
                    1 0 fxx/8
                    1 1 fxx

.3                 Timer B Counter Clear Bit (NOTE)

                   0 No effect

                   1 Clear the timer B counter (when write)

.2                 Timer B Counter Run Enable Bit

                   0 Disable Counter Running

                   1 Enable Counter Running

.1                 Timer B Interrupt Enable Bit

                   0 Disable interrupt

                   1 Enable interrupt

.0                 Timer B Interrupt Pending Bit

                   0 No interrupt pending (when read)

                   0 Clear pending bit (when write)

                   1 Interrupt is pending (when read)

NOTE: When you write a "1" to TBCON.3, the Timer B counter value is cleared to "00H". Immediately following the write
           operation, the TBCON.3 value is automatically cleared to "0".

4-42
S3C825A/P825A                                                             CONTROL REGISTER

T2CON -- Timer 2 Control Register                                    EEH  Set 1, Bank 0

Bit Identifier   .7   .6           .5              .4        .3      .2   .1   .0
RESET Value
Read/Write       0    0            0               0         0       0    0    0
Addressing Mode
                 R/W  R/W          R/W             R/W     R/W       R/W  R/W  R/W

                 Register addressing mode only

.7�.5            Timer 2 Input Clock Selection Bits
                  0 0 0 fxx/256
                  0 0 1 fxx/64
                  0 1 0 fxx/8
                  0 1 1 fxx
                  1 1 1 External clock (T2CLK) input

.4               Not used for the S3C825A

.3               Timer 2 Counter Clear Bit (Note)

                 0 No effect

                 1 Clear the timer 2 counter (when write)

.2               Timer 2 Counter Enable Bit

                 0 Disable counting operation

                 1 Enable counting operation

.1               Timer 2 Interrupt Enable Bit

                 0 Disable timer 2 interrupt

                 1 Enable timer 2 interrupt

.0               Timer 2 Interrupt Pending Bit

                 0 No timer 2 interrupt pending (when read)

                 0 Clear timer 2 interrupt pending bit (when write)

                 1 T2 interrupt is pending

NOTE: When you write a "1" to T2CON.3, the timer 2 counter value is cleared to "00H". Immediately following the write
           operation, the T2CON.3 value is automatically cleared to "0".

                                                                                                                       4-43
CONTROL REGISTERS                                                           S3C825A/P825A

T3CON -- Timer 3 Control Register                                  F8H Set 1, Bank0

Bit Identifier     .7   .6              .5            .4       .3  .2   .1   .0
RESET Value
Read/Write         0            0       0             0        0   0    0    0
Addressing Mode
                   R/W  R/W             R/W          R/W     R/W   R/W  R/W  R/W

                   Register addressing mode only

.7�.5              Timer 3 Input Clock Selection Bits
                    0 0 0 fxx/1024
                    0 0 1 fxx/256
                    0 1 0 fxx/64
                    0 1 1 fxx/8
                    1 0 0 fxx
                    1 0 1 External clock (T3CLK) falling edge
                    1 1 0 External clock (T3CLK) rising edge
                    1 1 1 Counter stop

.4 - .3            Timer 3 Operating Mode Selection Bits
                    0 0 Interval mode
                    0 1 Capture mode (capture on rising edge, counter running, OVF can occur)
                    1 0 Capture mode (capture on falling edge, counter running, OVF can occur)
                    1 1 PWM mode (OVF & match interrupt can occur)

.2                 Timer 3 Counter Clear Bit (NOTE)

                   0 No effect

                   1 Clear the timer 3 counter (when write)

.1                 Timer 3 match/capture interrupt enable bit

                   0 Disable interrupt

                   1 Enable interrupt

.0                 Timer 3 overflow interrupt enable

                   0 Disable overflow interrupt

                   1 Enable overflow interrupt

NOTE: When you write a "1" T3CON.2, the timer 3 counter value is cleared to "00H". Immediately following the write
           operation, the T3CON.2 value is automatically cleared to "0".

4-44
S3C825A/P825A                                                          CONTROL REGISTER

UARTCON -- UART Control Register                           FAH Set 1, Bank0

Bit Identifier   .7         .6  .5               .4   .3   .2          .1                         .0
RESET Value
Read/Write       0          0   0                0    0    0           0                          0
Addressing Mode
                 R/W R/W        R/W              R/W  R/W  R/W         R/W                        R/W

                 Register addressing mode only

.7 � .6          0 0 Mode 0: shift register (fOSC/(16 � (BRDATA + 1))
                 0 1 Mode 1: 8-Bit UART (fOSC/(16 � (BRDATA + 1))
                 1 0 Mode 2: 9-Bit UART fOSC/16
                 1 1 Mode 3: 9-Bit UART (fOSC/(16 � (BRDATA + 1))

.5               Multiprocessor Communication Enable Bit (for modes 2 and 3 only)

                 0 Disable

                 1 Enable

.4               Serial Data Receive Enable Bit

                 0 Disable

                 1 Enable

.3               TB8

                 Location of the 9th data bit to be transmitted in UART mode 2 or 3 ("0" or "1")

.2               RB8

                 Location of the 9th data bit to be received in UART mode 2 or 3 ("0" or "1")

.1               Receive Interrupt Enable Bit

                 0 Disable Rx interrupt

                 1 Enable Rx interrupt

.0               Transmit Interrupt Enable Bit

                 0 Disable Tx interrupt

                 1 Enable Tx interrupt

NOTES:
1. In mode 2 or 3, if the MCE bit is set to "1" then the receive interrupt will not be activated if the received 9th data bit "0".

     In mode 1, if MCE = "1" the receive interrupt will not be activated if a valid stop bit was not received. In mode 0, the
     MCE bit should be "0".
2. The descriptions for 8-bit and 9-bit UART mode do not include start and stop bits for serial data receive and transmit.
3. Rx / Tx interrupt pending bits are in INTPND register.

                                                                                                       4-45
CONTROL REGISTERS                                                                S3C825A/P825A

WTCON -- Watch Timer Control Register                               EFH         Set 1, Bank1

Bit Identifier     .7   .6               .5          .4        .3   .2       .1   .0
RESET Value
Read/Write         0    0                  0         0         0    0        0    0

                   R/W  R/W  R/W                    R/W        R/W  R/W      R/W  R/W

.7                 Watch Timer Clock Selection Bit

                   0 Select main clock divided by 27 (fx/128)

                   1 Select sub clock(fxt)

.6                 Watch Timer Interrupt Enable Bit

                   0 Disable watch timer interrupt

                   1 Enable watch timer interrupt

.5-.4              Buzzer Signal Selection Bits
                    0 0 0.5 kHz
                    0 1 1 kHz
                    1 0 2 kHz
                    1 1 4 kHz

.3-.2              Watch Timer Speed Selection Bits
                    0 0 Set watch timer interrupt to 1s
                    0 1 Set watch timer interrupt to 0.5s
                    1 0 Set watch timer interrupt to 0.25s
                    1 1 Set watch timer interrupt to 3.91ms

.1                 Watch Timer Enable Bit

                   0 Disable watch timer; Clear frequency dividing circuits

                   1 Enable watch timer

.0                 Watch Timer Interrupt Pending Bit

                   0 No interrupt pending (when read)

                   0 Clear pending bit (when write)

                   1 Interrupt is pending (when read)

4-46
S3C825A/P825A                       INTERRUPT STRUCTURE

5              INTERRUPT STRUCTURE

OVERVIEW

The S3C8-series interrupt structure has three basic components: levels, vectors, and sources. The SAM88RC
CPU recognizes up to eight interrupt levels and supports up to 128 interrupt vectors. When a specific interrupt
level has more than one vector address, the vector priorities are established in hardware. A vector address can
be assigned to one or more sources.

Levels

Interrupt levels are the main unit for interrupt priority assignment and recognition. All peripherals and I/O blocks
can issue interrupt requests. In other words, peripheral and I/O operations are interrupt-driven. There are eight
possible interrupt levels: IRQ0�IRQ7, also called level 0�level 7. Each interrupt level directly corresponds to an
interrupt request number (IRQn). The total number of interrupt levels used in the interrupt structure varies from
device to device. The S3C825A interrupt structure recognizes eight interrupt levels.

The interrupt level numbers 0 through 7 do not necessarily indicate the relative priority of the levels. They are just
identifiers for the interrupt levels that are recognized by the CPU. The relative priority of different interrupt levels
is determined by settings in the interrupt priority register, IPR. Interrupt group and subgroup logic controlled by
IPR settings lets you define more complex priority relationships between different levels.

Vectors

Each interrupt level can have one or more interrupt vectors, or it may have no vector address assigned at all.
The maximum number of vectors that can be supported for a given level is 128 (The actual number of vectors
used for S3C8-series devices is always much smaller). If an interrupt level has more than one vector address, the
vector priorities are set in hardware. S3C825A uses twenty three vectors.

Sources

A source is any peripheral that generates an interrupt. A source can be an external pin or a counter overflow.
Each vector can have several interrupt sources. In the S3C825A interrupt structure, there are twenty three
possible interrupt sources.

When a service routine starts, the respective pending bit should be either cleared automatically by hardware or
cleared "manually" by program software. The characteristics of the source's pending mechanism determine which
method would be used to clear its respective pending bit.

                                    5-1
INTERRUPT STRUCTURE                                                               S3C825A/P825A

INTERRUPT TYPES

The three components of the S3C8 interrupt structure described before -- levels, vectors, and sources -- are
combined to determine the interrupt structure of an individual device and to make full use of its available
interrupt logic. There are three possible combinations of interrupt structure components, called interrupt types 1,
2, and 3. The types differ in the number of vectors and interrupt sources assigned to each level (see Figure 5-1):

     Type 1:  One level (IRQn) + one vector (V1) + one source (S1)
     Type 2:  One level (IRQn) + one vector (V1) + multiple sources (S1 � Sn)
     Type 3:  One level (IRQn) + multiple vectors (V1 � Vn) + multiple sources (S1 � Sn , Sn+1 � Sn+m)

In the S3C825A microcontroller, two interrupt types are implemented.

                               Levels  Vectors                        Sources
                 Type 1: IRQn             V1                              S1
                                                                          S1
                 Type 2: IRQn             V1                              S2
                                                                          S3
                                       V1                                 Sn
                                                                          S1
                 Type 3: IRQn          V2                                 S2
                                                                          S3
                                       V3                                 Sn
                                                                          Sn + 1
                                       Vn                                 Sn + 2
                                                                          Sn + m
              NOTES:
              1. The number of Sn and Vn value is expandable.
              2. In the S3C825A implementation,

                   interrupt types 1 and 3 are used.

                     Figure 5-1. S3C8-Series Interrupt Types

5-2
S3C825A/P825A  INTERRUPT STRUCTURE

S3C825A INTERRUPT STRUCTURE

The S3C825A microcontroller supports twenty three interrupt sources. All twenty three of the interrupt sources
have a corresponding interrupt vector address. Eight interrupt levels are recognized by the CPU in this device-
specific interrupt structure, as shown in Figure 5-2.

When multiple interrupt levels are active, the interrupt priority register (IPR) determines the order in which
contending interrupts are to be serviced. If multiple interrupts occur within the same interrupt level, the interrupt
with the lowest vector address is usually processed first (The relative priorities of multiple interrupts within a
single level are fixed in hardware).

When the CPU grants an interrupt request, interrupt processing starts. All other interrupts are disabled and the
program counter value and status flags are pushed to stack. The starting address of the service routine is fetched
from the appropriate vector address (plus the next 8-bit value to concatenate the full 16-bit address) and the
service routine is executed.

               5-3
INTERRUPT STRUCTURE                                                                           S3C825A/P825A

     Levels          Vectors  Sources                         Reset/Clear
     RESET            100H    Basic timer overflow             H/W
      IRQ0             E0H    Timer 0 match/capture            S/W
      IRQ1             E2H    Timer 0 overflow                 H/W,S/W
      IRQ2             E4H    Timer B match                    S/W
      IRQ3             E6H    Timer 1/A match                  S/W
      IRQ4             E8H    Timer 2 match                    S/W
      IRQ5             EAH    Timer 3 match/capture            S/W
                       ECH    Timer 3 overflow                 H/W, S/W
      IRQ6             D0H    SIO interrrupt                   S/W
                       D2H    UART data transmit               S/W
      IRQ7             D4H    UART data receive                S/W
                       D6H    Watch timer                      S/W
                       D8H    P1.0 external interrupt          S/W
                       DAH    P1.1 external interrupt          S/W
                       DBH    P1.2 external interrupt          S/W
                       DCH    P1.3 external interrupt          S/W
                       C0H    P1.4 external interrupt          S/W
                       C2H    P1.5 external interrupt          S/W
                       C4H    P1.6 external interrupt          S/W
                       C6H    P1.7 external interrupt          S/W
                       C8H    P4.0 external interrupt          S/W
                       CAH    P4.1 external interrupt          S/W
                       CCH    P4.2 external interrupt          S/W
                       CEH    P4.3 external interrupt          S/W

     NOTES:
     1. Within a given interrupt level, the low vector address has high priority.

          For example, E0H has higher priority than E2H within the level IRQ0 the priorities
          within each level are set at the factory.
     2. External interrupts are triggered by a rising or falling edge, depending on the
          corresponding control register setting.

                     Figure 5-2. S3C825A Interrupt Structure

5-4
S3C825A/P825A                                                 INTERRUPT STRUCTURE

INTERRUPT VECTOR ADDRESSES

All interrupt vector addresses for the S3C825A interrupt structure are stored in the vector address area of the first
256 bytes of the program memory (ROM).

You can allocate unused locations in the vector address area as normal program memory. If you do so, please be
careful not to overwrite any of the stored vector addresses (Table 5-1 lists all vector addresses).

The program reset address in the ROM is 0100H.

               (Decimal)                      (HEX)
                  49,151                      BFFFH

                               48K-byte
                          Program Memory

                                  Area

               255                            100H   RESET
                                  Interrupt   FFH    Address

                              Vector Address  00H
                                     Area

                  0

               Figure 5-3. ROM Vector Address Area

                                                              5-5
INTERRUPT STRUCTURE                                                       S3C825A/P825A

                     Table 5-1. Interrupt Vectors

     Vector Address              Interrupt Source  Request                Reset/Clear
                                                                          H/W S/W
     Decimal   Hex   Basic timer overflow          Interrupt Priority in
      Value   Value  Timer 0 overflow
                     Timer 0 match/capture         Level  Level
                     Timer 1/A match
     256      100H   Timer B match                 RESET    �            
                     Timer 3 overflow
     226      E2H    Timer 3 match/capture         IRQ0     1               
                     Timer 2 match
     224      E0H    UART data receive                      0               
                     UART data transmit
     230      E6H    SIO interrupt                 IRQ1     1               
                     Watch timer
     228      E4H    P2.7 external interrupt                0               
                     P2.6 external interrupt
     236      ECH    P2.5 external interrupt       IRQ2     2               
                     P2.4 external interrupt
     234      EAH    P4.7 external interrupt                1               
                     P4.6 external interrupt
     232      E8H    P4.5 external interrupt                0               
                     P4.4 external interrupt
     212      D4H    P4.3 external interrupt       IRQ3     2               
                     P4.2 external interrupt
     210      D2H    P4.1 external interrupt                1               
                     P4.0 external interrupt
     208      D0H                                           0               

     214      D6H                                  IRQ4     �               

     222      DEH                                  IRQ5     3               
                                                                           
     220      DCH                                           2               
                                                                           
     218      DAH                                           1

     216      D8H                                           0

     198      C6H                                  IRQ6     3               
                                                                           
     196      C4H                                           2               
                                                                           
     194      C2H                                           1

     192      C0H                                           0

     206      CEH                                  IRQ7     3               
                                                                           
     204      CCH                                           2               
                                                                           
     202      CAH                                           1

     200      C8H                                           0

NOTES:
1. Interrupt priorities are identified in inverse order: "0" is the highest priority, "1" is the next highest, and so on.
2. If two or more interrupts within the same level contend, the interrupt with the lowest vector address usually has priority

     over one with a higher vector address. The priorities within a given level are fixed in hardware.

5-6
S3C825A/P825A                                                            INTERRUPT STRUCTURE

ENABLE/DISABLE INTERRUPT INSTRUCTIONS (EI, DI)

Executing the Enable Interrupts (EI) instruction globally enables the interrupt structure. All interrupts are then
serviced as they occur according to the established priorities.

                                                                       NOTE
     The system initialization routine executed after a reset must always contain an EI instruction to globally
     enable the interrupt structure.

During the normal operation, you can execute the DI (Disable Interrupt) instruction at any time to globally disable
interrupt processing. The EI and DI instructions change the value of bit 0 in the SYM register.

SYSTEM-LEVEL INTERRUPT CONTROL REGISTERS

In addition to the control registers for specific interrupt sources, four system-level registers control interrupt
processing:

-- The interrupt mask register, IMR, enables (un-masks) or disables (masks) interrupt levels.
-- The interrupt priority register, IPR, controls the relative priorities of interrupt levels.
-- The interrupt request register, IRQ, contains interrupt pending flags for each interrupt level (as opposed to

     each interrupt source).
-- The system mode register, SYM, enables or disables global interrupt processing (SYM settings also enable

     fast interrupts and control the activity of external interface, if implemented).

                         Table 5-2. Interrupt Control Register Overview

Control Register         ID      R/W  Function Description

Interrupt mask register  IMR     R/W Bit settings in the IMR register enable or disable interrupt
                                            processing for each of the eight interrupt levels: IRQ0�IRQ7.

Interrupt priority register IPR  R/W Controls the relative processing priorities of the interrupt
                                            levels. The eight levels of S3C825A are organized into three
                                            groups: A, B, and C. Group A is IRQ0 and IRQ1, group B is
                                            IRQ2, IRQ3 and IRQ4, and group C is IRQ5, IRQ6, and IRQ7.

Interrupt request register IRQ   R This register contains a request pending bit for each interrupt
                                          level.

System mode register     SYM     R/W This register enables/disables fast interrupt processing, and
                                            dynamic global interrupt processing.

NOTE: Before IMR register is changed to any value, all interrupts must be disable. Using DI instruction is recommended.

                                                                                                    5-7
INTERRUPT STRUCTURE                                                                    S3C825A/P825A

INTERRUPT PROCESSING CONTROL POINTS

Interrupt processing can therefore be controlled in two ways: globally or by specific interrupt level and source.
The system-level control points in the interrupt structure are:

-- Global interrupt enable and disable (by EI and DI instructions or by direct manipulation of SYM.0 )
-- Interrupt level enable/disable settings (IMR register)
-- Interrupt level priority settings (IPR register)
-- Interrupt source enable/disable settings in the corresponding peripheral control registers

                                                                       NOTE
     When writing an application program that handles interrupt processing, be sure to include the necessary
     register file address (register pointer) information.

                 EI  SQ                      Interrupt Request Register  Polling
          RESET      R                                (Read-only)        Cycle

     IRQ0-IRQ7,
        Interrupts

                         Interrupt Priority                                            Vector
                              Register                                                 Interrupt
                                                                                       Cycle

                                             Interrupt Mask
                                                 Register

                                                             Global Interrupt Control
                                                                 (EI, DI or SYM.0
                                                                   manipulation)

                         Figure 5-4. Interrupt Function Diagram

5-8
S3C825A/P825A                                                                    INTERRUPT STRUCTURE

PERIPHERAL INTERRUPT CONTROL REGISTERS

For each interrupt source there is one or more corresponding peripheral control registers that let you control the
interrupt generated by the related peripheral (see Table 5-3).

                         Table 5-3. Interrupt Source Control and Data Registers

     Interrupt Source    Interrupt Level           Register(s)     Location(s) in Set 1
Timer 0 overflow               IRQ0
Timer 0 match/capture          IRQ1       T0CON                 E5H, bank 0
                                          T0CNT                 E3H, bank 0
Timer 1/A match                IRQ2       T0DATA                E4H, bank 0
                                          INTPND                D0H, bank 0
Timer B match                  IRQ3
                                          TACON                 EBH, bank 0
Timer 3 overflow               IRQ4       TACNT                 E7H, bank 0
Timer 3 match/capture          IRQ5       TADATA                E9H, bank0

Timer 2 match                             TBCON                 EAH, bank 0
                                          TBCNT                 E6H, bank 0
UART data receive                         TBDATA                E8H, bank 0
UART data transmit
                                          T3CON                 F8H, bank 0
SIO interrupt                             T3CNTH, T3CNTL        F4H, F5H, bank 0
                                          T3DATAH, T3DATAL      F6H, F7H, bank 0
Watch timer
P2.7 external interrupt                   T2CON                 EEH, bank 0
P2.6 external interrupt                   T2CNT                 ECH, bank 0
P2.5 external interrupt                   T2DATA                EDH, bank 0
P2.4 external interrupt
P4.7 external interrupt                   UARTCON               FAH, bank 0
P4.6 external interrupt                   UDATA                 F9H, bank 0
P4.5 external interrupt                   BRDATA                FBH, bank 0
P4.4 external interrupt
P4.3 external interrupt                   SIOCON                E0H, bank 0
P4.2 external interrupt                   SIODATA               E1H, bank 0
P4.1 external interrupt                   SIOPS                 E2H, bank 0
P4.0 external interrupt
                                          WTCON                 EFH, bank 1

                                          P2CONH                E0H, bank 1
                                          P2INT                 E3H, bank 1

                         IRQ6             P4CONH                E8H, bank 1
                         IRQ7             P4INT                 EAH, bank 1
                                          P4PND                 EBH, bank 1
                                          P4EDGE                E7H, bank 1

                                          P4CONL                E9H, bank 1
                                          P4INT                 EAH, bank 1
                                          4PND                  EBH, bank 1
                                          P4EDGE                E7H, bank 1

                                                                                         5-9
INTERRUPT STRUCTURE                                             S3C825A/P825A

SYSTEM MODE REGISTER (SYM)

The system mode register, SYM (set 1, DEH), is used to globally enable and disable interrupt processing and to
control fast interrupt processing (see Figure 5-5).

A reset clears SYM.1, and SYM.0 to "0". The 3-bit value for fast interrupt level selection, SYM.4�SYM.2, is
undetermined.

The instructions EI and DI enable and disable global interrupt processing, respectively, by modifying the bit 0
value of the SYM register. In order to enable interrupt processing an Enable Interrupt (EI) instruction must be
included in the initialization routine, which follows a reset operation. Although you can manipulate SYM.0 directly
to enable and disable interrupts during the normal operation, it is recommended to use the EI and DI instructions
for this purpose.

      MSB .7             System Mode Register (SYM)  .0 LSB
                                  DEH, Set 1, R/W

                     .6 .5 .4 .3 .2 .1

      Always logic "0"                               Global interrupt enable bit:
                                                     0 = Disable all interrupts processing
              Not used for the Fast interrupt level  1 = Enable all interrupts processing

              S3C825A   selection bits:              Fast interrupt enable bit:
                                                     0 = Disable fast interrupts processing
                        000  IRQ0                    1 = Enable fast interrupts processing
                        001  IRQ1
                        010  IRQ2
                        011  IRQ3
                        100  IRQ4
                        101  IRQ5
                        110  IRQ6
                        111  IRQ7

                        Figure 5-5. System Mode Register (SYM)

5-10
S3C825A/P825A                                                     INTERRUPT STRUCTURE

INTERRUPT MASK REGISTER (IMR)

The interrupt mask register, IMR (set 1, DDH) is used to enable or disable interrupt processing for individual
interrupt levels. After a reset, all IMR bit values are undetermined and must therefore be written to their required
settings by the initialization routine.

Each IMR bit corresponds to a specific interrupt level: bit 1 to IRQ1, bit 2 to IRQ2, and so on. When the IMR bit
of an interrupt level is cleared to "0", interrupt processing for that level is disabled (masked). When you set a
level's IMR bit to "1", interrupt processing for the level is enabled (not masked).

The IMR register is mapped to register location DDH in set 1. Bit values can be read and written by instructions
using the Register addressing mode.

               MSB .7      Interrupt Mask Register (IMR)  .0 LSB
                                    DDH, Set 1, R/W

                       .6 .5 .4 .3 .2 .1

                                                    IRQ1  IRQ0

                                              IRQ2

                             IRQ5  IRQ4 IRQ3

               IRQ7    IRQ6

                                   Interrupt level enable bits

                                   0 = Disable (mask) interrupt level

                                   1 = Enable (un-mask) interrupt level

               NOTE: Before IMR register is changed to any value, all interrupts must be disable.
                             Using DI instruction is recommended.

               Figure 5-6. Interrupt Mask Register (IMR)

                                                                                                   5-11
INTERRUPT STRUCTURE                                                   S3C825A/P825A

INTERRUPT PRIORITY REGISTER (IPR)

The interrupt priority register, IPR (set 1, bank 0, FFH), is used to set the relative priorities of the interrupt levels
in the microcontroller's interrupt structure. After a reset, all IPR bit values are undetermined and must therefore
be written to their required settings by the initialization routine.

When more than one interrupt sources are active, the source with the highest priority level is serviced first. If two
sources belong to the same interrupt level, the source with the lower vector address usually has the priority (This
priority is fixed in hardware).

To support programming of the relative interrupt level priorities, they are organized into groups and subgroups by
the interrupt logic. Please note that these groups (and subgroups) are used only by IPR logic for the IPR register
priority definitions (see Figure 5-7):

Group A  IRQ0, IRQ1
Group B  IRQ2, IRQ3, IRQ3
Group C  IRQ5, IRQ6, IRQ7

                        IPR           IPR                 IPR
                     Group A       Group B             Group C

              A1              A2   B1         B2       C1         C2
         IRQ0
                                       B21        B22      C21        C22

                     IRQ1          IRQ2 IRQ3  IRQ4     IRQ5 IRQ6  IRQ7

                                           Figure 5-7. Interrupt Request Priority Groups

As you can see in Figure 5-8, IPR.7, IPR.4, and IPR.1 control the relative priority of interrupt groups A, B, and C.
For example, the setting "001B" for these bits would select the group relationship B > C > A. The setting "101B"
would select the relationship C > B > A.

The functions of the other IPR bit settings are as follows:

-- IPR.5 controls the relative priorities of group C interrupts.
-- Interrupt group C includes a subgroup that has an additional priority relationship among the interrupt levels 5,

     6, and 7. IPR.6 defines the subgroup C relationship. IPR.5 controls the interrupt group C.
-- IPR.0 controls the relative priority setting of IRQ0 and IRQ1 interrupts.

5-12
S3C825A/P825A                                                        INTERRUPT STRUCTURE

               MSB .7     Interrupt Priority Register (IPR)  .0 LSB
                               FFH, Set 1, Bank 0, R/W

                       .6 .5 .4 .3 .2 .1

Group priority:                                                                Group A
                                                                               0 = IRQ0 > IRQ1
D7 D4 D1                                                                       1 = IRQ1 > IRQ0
                                                                 Group B
0 0 0 = Undefined                                               0 = IRQ2 > (IRQ3, IRQ4)
0 0 1=B>C>A                                                     1 = (IRQ3, IRQ4) > IRQ2
0 1 0=A>B>C                                       Subgroup B
0 1 1=B>A>C                                       0 = IRQ3 > IRQ4
1 0 0=C>A>B                                       1 = IRQ4 > IRQ3
1 0 1=C>B>A                         Group C
1 1 0=A>C>B                         0 = IRQ5 > (IRQ6, IRQ7)
1 1 1 = Undefined                   1 = (IRQ6, IRQ7) > IRQ5
                       Subgroup C
                       0 = IRQ6 > IRQ7
                       1 = IRQ7 > IRQ6

               Figure 5-8. Interrupt Priority Register (IPR)

                                                                                                5-13
INTERRUPT STRUCTURE                                                                   S3C825A/P825A

INTERRUPT REQUEST REGISTER (IRQ)

You can poll bit values in the interrupt request register, IRQ (set 1, DCH), to monitor interrupt request status for
all levels in the microcontroller's interrupt structure. Each bit corresponds to the interrupt level of the same
number: bit 0 to IRQ0, bit 1 to IRQ1, and so on. A "0" indicates that no interrupt request is currently being issued
for that level. A "1" indicates that an interrupt request has been generated for that level.

IRQ bit values are read-only addressable using Register addressing mode. You can read (test) the contents of
the IRQ register at any time using bit or byte addressing to determine the current interrupt request status of
specific interrupt levels. After a reset, all IRQ status bits are cleared to "0".

You can poll IRQ register values even if a DI instruction has been executed (that is, if global interrupt processing
is disabled). If an interrupt occurs while the interrupt structure is disabled, the CPU will not service it. You can,
however, still detect the interrupt request by polling the IRQ register. In this way, you can determine which events
occurred while the interrupt structure was globally disabled.

                     MSB .7    Interrupt Request Register (IRQ)  .0 LSB
                                      DCH, Set 1, Read-only

                             .6 .5 .4 .3 .2 .1

                                                           IRQ1  IRQ0

                                               IRQ3  IRQ2

                                   IRQ5  IRQ4

                     IRQ7    IRQ6

                                               Interrupt level request pending bits:

                                               0 = Interrupt level is not pending

                                               1 = Interrupt level is pending

                     Figure 5-9. Interrupt Request Register (IRQ)

5-14
S3C825A/P825A  INTERRUPT STRUCTURE

INTERRUPT PENDING FUNCTION TYPES

Overview

There are two types of interrupt pending bits: one type that is automatically cleared by hardware after the
interrupt service routine is acknowledged and executed; the other that must be cleared in the interrupt service
routine.

Pending Bits Cleared Automatically by Hardware

For interrupt pending bits that are cleared automatically by hardware, interrupt logic sets the corresponding
pending bit to "1" when a request occurs. It then issues an IRQ pulse to inform the CPU that an interrupt is
waiting to be serviced. The CPU acknowledges the interrupt source by sending an IACK, executes the service
routine, and clears the pending bit to "0". This type of pending bit is not mapped and cannot, therefore, be read or
written by application software.

In the S3C825A interrupt structure, the timer 0 overflow interrupt (IRQ0) and Timer 3 overflow interrupt (IRQ2)
belongs to this category of interrupts in which pending condition is cleared automatically by hardware.

Pending Bits Cleared by the Service Routine

The second type of pending bit is the one that should be cleared by program software. The service routine must
clear the appropriate pending bit before a return-from-interrupt subroutine (IRET) occurs. To do this, a "0" must
be written to the corresponding pending bit location in the source's mode or control register.

               5-15
INTERRUPT STRUCTURE  S3C825A/P825A

INTERRUPT SOURCE POLLING SEQUENCE

The interrupt request polling and servicing sequence is as follows:
1. A source generates an interrupt request by setting the interrupt request bit to "1".
2. The CPU polling procedure identifies a pending condition for that source.
3. The CPU checks the source's interrupt level.
4. The CPU generates an interrupt acknowledge signal.
5. Interrupt logic determines the interrupt's vector address.
6. The service routine starts and the source's pending bit is cleared to "0" (by hardware or by software).
7. The CPU continues polling for interrupt requests.

INTERRUPT SERVICE ROUTINES

Before an interrupt request is serviced, the following conditions must be met:
-- Interrupt processing must be globally enabled (EI, SYM.0 = "1")
-- The interrupt level must be enabled (IMR register)
-- The interrupt level must have the highest priority if more than one levels are currently requesting service
-- The interrupt must be enabled at the interrupt's source (peripheral control register)

When all the above conditions are met, the interrupt request is acknowledged at the end of the instruction cycle.
The CPU then initiates an interrupt machine cycle that completes the following processing sequence:
1. Reset (clear to "0") the interrupt enable bit in the SYM register (SYM.0) to disable all subsequent interrupts.
2. Save the program counter (PC) and status flags to the system stack.
3. Branch to the interrupt vector to fetch the address of the service routine.
4. Pass control to the interrupt service routine.

When the interrupt service routine is completed, the CPU issues an Interrupt Return (IRET). The IRET restores
the PC and status flags, setting SYM.0 to "1". It allows the CPU to process the next interrupt request.

5-16
S3C825A/P825A  INTERRUPT STRUCTURE

GENERATING INTERRUPT VECTOR ADDRESSES

The interrupt vector area in the ROM (00H�FFH) contains the addresses of interrupt service routines that
correspond to each level in the interrupt structure. Vectored interrupt processing follows this sequence:

1. Push the program counter's low-byte value to the stack.
2. Push the program counter's high-byte value to the stack.
3. Push the FLAG register values to the stack.
4. Fetch the service routine's high-byte address from the vector location.
5. Fetch the service routine's low-byte address from the vector location.
6. Branch to the service routine specified by the concatenated 16-bit vector address.

                                                                       NOTE
     A 16-bit vector address always begins at an even-numbered ROM address within the range of 00H�FFH.

NESTING OF VECTORED INTERRUPTS

It is possible to nest a higher-priority interrupt request while a lower-priority request is being serviced. To do this,
you must follow these steps:

1. Push the current 8-bit interrupt mask register (IMR) value to the stack (PUSH IMR).
2. Load the IMR register with a new mask value that enables only the higher priority interrupt.
3. Execute an EI instruction to enable interrupt processing (a higher priority interrupt will be processed if it

     occurs).
4. When the lower-priority interrupt service routine ends, restore the IMR to its original value by returning the

     previous mask value from the stack (POP IMR).
5. Execute an IRET.

Depending on the application, you may be able to simplify the procedure above to some extent.

INSTRUCTION POINTER (IP)

The instruction pointer (IP) is adopted by all the S3C8-series microcontrollers to control the optional high-speed
interrupt processing feature called fast interrupts. The IP consists of register pair DAH and DBH. The names of IP
registers are IPH (high byte, IP15�IP8) and IPL (low byte, IP7�IP0).

FAST INTERRUPT PROCESSING

The feature called fast interrupt processing allows an interrupt within a given level to be completed in
approximately 6 clock cycles rather than the usual 16 clock cycles. To select a specific interrupt level for fast
interrupt processing, you write the appropriate 3-bit value to SYM.4�SYM.2. Then, to enable fast interrupt
processing for the selected level, you set SYM.1 to "1".

               5-17
INTERRUPT STRUCTURE  S3C825A/P825A

FAST INTERRUPT PROCESSING (Continued)

Two other system registers support fast interrupt processing:

-- The instruction pointer (IP) contains the starting address of the service routine (and is later used to swap the
     program counter values), and

-- When a fast interrupt occurs, the contents of the FLAGS register is stored in an unmapped, dedicated
     register called FLAGS' ("FLAGS prime").

                                                                       NOTE
     For the S3C825A microcontroller, the service routine for any one of the eight interrupt levels: IRQ0�
     IRQ7, can be selected for fast interrupt processing.

Procedure for Initiating Fast Interrupts
To initiate fast interrupt processing, follow these steps:

1. Load the start address of the service routine into the instruction pointer (IP).
2. Load the interrupt level number (IRQn) into the fast interrupt selection field (SYM.4�SYM.2)
3. Write a "1" to the fast interrupt enable bit in the SYM register.

Fast Interrupt Service Routine
When an interrupt occurs in the level selected for fast interrupt processing, the following events occur:

1. The contents of the instruction pointer and the PC are swapped.
2. The FLAG register values are written to the FLAGS' ("FLAGS prime") register.
3. The fast interrupt status bit in the FLAGS register is set.
4. The interrupt is serviced.
5. Assuming that the fast interrupt status bit is set, when the fast interrupt service routine ends, the instruction

     pointer and PC values are swapped back.
6. The content of FLAGS' ("FLAGS prime") is copied automatically back to the FLAGS register.
7. The fast interrupt status bit in FLAGS is cleared automatically.

Relationship to Interrupt Pending Bit Types
As described previously, there are two types of interrupt pending bits: One type that is automatically cleared by
hardware after the interrupt service routine is acknowledged and executed; the other that must be cleared by the
application program's interrupt service routine. You can select fast interrupt processing for interrupts with either
type of pending condition clear function -- by hardware or by software.

Programming Guidelines
Remember that the only way to enable/disable a fast interrupt is to set/clear the fast interrupt enable bit in the
SYM register, SYM.1. Executing an EI or DI instruction globally enables or disables all interrupt processing,
including fast interrupts. If you use fast interrupts, remember to load the IP with a new start address when the fast
interrupt service routine ends.

5-18
S3C825A/P825A      INSTRUCTION SET

6 INSTRUCTION SET

OVERVIEW

The SAM88RC instruction set is specifically designed to support the large register files that are typical of most
SAM8 microcontrollers. There are 78 instructions. The powerful data manipulation capabilities and features of
the instruction set include:

-- A full complement of 8-bit arithmetic and logic operations, including multiply and divide
-- No special I/O instructions (I/O control/data registers are mapped directly into the register file)
-- Decimal adjustment included in binary-coded decimal (BCD) operations
-- 16-bit (word) data can be incremented and decremented
-- Flexible instructions for bit addressing, rotate, and shift operations

DATA TYPES

The SAM8 CPU performs operations on bits, bytes, BCD digits, and two-byte words. Bits in the register file can
be set, cleared, complemented, and tested. Bits within a byte are numbered from 7 to 0, where bit 0 is the least
significant (right-most) bit.

REGISTER ADDRESSING

To access an individual register, an 8-bit address in the range 0-255 or the 4-bit address of a working register is
specified. Paired registers can be used to construct 16-bit data or 16-bit program memory or data memory
addresses. For detailed information about register addressing, please refer to Section 2, "Address Spaces."

ADDRESSING MODES

There are seven explicit addressing modes: Register (R), Indirect Register (IR), Indexed (X), Direct (DA),
Relative (RA), Immediate (IM), and Indirect (IA). For detailed descriptions of these addressing modes, please
refer to Section 3, "Addressing Modes."

                   6-1
INSTRUCTION SET                                                            S3C825A/P825A

                            Table 6-1. Instruction Group Summary

     Mnemonic      Operands  Instruction

Load Instructions  dst       Clear
                   dst,src   Load
CLR                dst,src   Load bit
LD                 dst,src   Load external data memory
LDB                dst,src   Load program memory
LDE                dst,src   Load external data memory and decrement
LDC                dst,src   Load program memory and decrement
LDED               dst,src   Load external data memory and increment
LDCD               dst,src   Load program memory and increment
LDEI               dst,src   Load external data memory with pre-decrement
LDCI               dst,src   Load program memory with pre-decrement
LDEPD              dst,src   Load external data memory with pre-increment
LDCPD              dst,src   Load program memory with pre-increment
LDEPI              dst,src   Load word
LDCPI              dst       Pop from stack
LDW                dst,src   Pop user stack (decrementing)
POP                dst,src   Pop user stack (incrementing)
POPUD              src       Push to stack
POPUI              dst,src   Push user stack (decrementing)
PUSH               dst,src   Push user stack (incrementing)
PUSHUD
PUSHUI

6-2
S3C825A/P825A                                                              INSTRUCTION SET

                         Table 6-1. Instruction Group Summary (Continued)

Mnemonic                 Operands                        Instruction

Arithmetic Instructions

ADC                 dst,src        Add with carry
ADD                 dst,src        Add
CP                  dst,src        Compare
DA                  dst            Decimal adjust
DEC                 dst            Decrement
DECW                dst            Decrement word
DIV                 dst,src        Divide
INC                 dst            Increment
INCW                dst            Increment word
MULT                dst,src        Multiply
SBC                 dst,src        Subtract with carry
SUB                 dst,src        Subtract

Logic Instructions  dst,src        Logical AND
                    dst            Complement
AND                 dst,src        Logical OR
COM                 dst,src        Logical exclusive OR
OR
XOR

                                                                           6-3
INSTRUCTION SET                                                          S3C825A/P825A

                 Table 6-1. Instruction Group Summary (Continued)

     Mnemonic    Operands      Instruction

Program Control Instructions

BTJRF            dst,src       Bit test and jump relative on false
BTJRT            dst,src       Bit test and jump relative on true
CALL             dst           Call procedure
CPIJE            dst,src       Compare, increment and jump on equal
CPIJNE           dst,src       Compare, increment and jump on non-equal
DJNZ             r,dst         Decrement register and jump on non-zero
ENTER                          Enter
EXIT             cc,dst        Exit
IRET             dst           Interrupt return
JP               cc,dst        Jump on condition code
JP                             Jump unconditional
JR                             Jump relative on condition code
NEXT                           Next
RET                            Return
WFI                            Wait for interrupt

Bit Manipulation Instructions  Bit AND
                               Bit compare
BAND             dst,src       Bit complement
BCP              dst,src       Bit reset
BITC             dst           Bit set
BITR             dst           Bit OR
BITS             dst           Bit XOR
BOR              dst,src       Test complement under mask
BXOR             dst,src       Test under mask
TCM              dst,src
TM               dst,src

6-4
S3C825A/P825A                                                               INSTRUCTION SET

                          Table 6-1. Instruction Group Summary (Concluded)

      Mnemonic            Operands  Instruction

Rotate and Shift Instructions

RL              dst                 Rotate left
                                    Rotate left through carry
RLC             dst                 Rotate right
                                    Rotate right through carry
RR              dst                 Shift right arithmetic
                                    Swap nibbles
RRC             dst
                                    Complement carry flag
SRA             dst                 Disable interrupts
                                    Enable interrupts
SWAP            dst                 Enter Idle mode
                                    No operation
CPU Control Instructions            Reset carry flag
                                    Set bank 0
CCF                                 Set bank 1
                                    Set carry flag
DI                                  Set register pointers
                                    Set register pointer 0
EI                                  Set register pointer 1
                                    Enter Stop mode
IDLE

NOP

RCF

SB0

SB1

SCF

SRP             src

SRP0            src

SRP1            src

STOP

                                                                            6-5
INSTRUCTION SET                                                                   S3C825A/P825A

FLAGS REGISTER (FLAGS)

The flags register FLAGS contains eight bits that describe the current status of CPU operations. Four of these
bits, FLAGS.7�FLAGS.4, can be tested and used with conditional jump instructions; two others FLAGS.3 and
FLAGS.2 are used for BCD arithmetic.

The FLAGS register also contains a bit to indicate the status of fast interrupt processing (FLAGS.1) and a bank
address status bit (FLAGS.0) to indicate whether bank 0 or bank 1 is currently being addressed. FLAGS register
can be set or reset by instructions as long as its outcome does not affect the flags, such as, Load instruction.

Logical and Arithmetic instructions such as, AND, OR, XOR, ADD, and SUB can affect the Flags register. For
example, the AND instruction updates the Zero, Sign and Overflow flags based on the outcome of the AND
instruction. If the AND instruction uses the Flags register as the destination, then simultaneously, two write will
occur to the Flags register producing an unpredictable result.

                                System Flags Register (FLAGS)
                                          D5H, Set 1, R/W

                 MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB

     Carry flag (C)                                             Bank address
                                                                status flag (BA)

                 Zero flag (Z)                                 Fast interrupt
                                                               status flag (FIS)

                     Sign flag (S)      Half-carry flag (H)

                     Overflow flag (V)  Decimal adjust flag (D)

                     Figure 6-1. System Flags Register (FLAGS)

6-6
S3C825A/P825A               INSTRUCTION SET

FLAG DESCRIPTIONS

C Carry Flag (FLAGS.7)

          The C flag is set to "1" if the result from an arithmetic operation generates a carry-out from or a borrow to
          the bit 7 position (MSB). After rotate and shift operations, it contains the last value shifted out of the
          specified register. Program instructions can set, clear, or complement the carry flag.

Z  Zero Flag (FLAGS.6)

   For arithmetic and logic operations, the Z flag is set to "1" if the result of the operation is zero. For
   operations that test register bits, and for shift and rotate operations, the Z flag is set to "1" if the result is
   logic zero.

S Sign Flag (FLAGS.5)

          Following arithmetic, logic, rotate, or shift operations, the sign bit identifies the state of the MSB of the
          result. A logic zero indicates a positive number and a logic one indicates a negative number.

V  Overflow Flag (FLAGS.4)

   The V flag is set to "1" when the result of a two's-complement operation is greater than + 127 or less than
   � 128. It is also cleared to "0" following logic operations.

D Decimal Adjust Flag (FLAGS.3)

          The DA bit is used to specify what type of instruction was executed last during BCD operations, so that a
          subsequent decimal adjust operation can execute correctly. The DA bit is not usually accessed by
          programmers, and cannot be used as a test condition.

H Half-Carry Flag (FLAGS.2)

          The H bit is set to "1" whenever an addition generates a carry-out of bit 3, or when a subtraction borrows
          out of bit 4. It is used by the Decimal Adjust (DA) instruction to convert the binary result of a previous
          addition or subtraction into the correct decimal (BCD) result. The H flag is seldom accessed directly by a
          program.

FIS Fast Interrupt Status Flag (FLAGS.1)

          The FIS bit is set during a fast interrupt cycle and reset during the IRET following interrupt servicing.
          When set, it inhibits all interrupts and causes the fast interrupt return to be executed when the IRET
          instruction is executed.

BA Bank Address Flag (FLAGS.0)

          The BA flag indicates which register bank in the set 1 area of the internal register file is currently
          selected, bank 0 or bank 1. The BA flag is cleared to "0" (select bank 0) when you execute the SB0
          instruction and is set to "1" (select bank 1) when you execute the SB1 instruction.

                                                                                                                         6-7
INSTRUCTION SET                                                            S3C825A/P825A

INSTRUCTION SET NOTATION

                 Flag     Table 6-2. Flag Notation Conventions
                   C
                   Z                                      Description
                   S           Carry flag
                   V           Zero flag
                   D           Sign flag
                   H           Overflow flag
                   0           Decimal-adjust flag
                   1           Half-carry flag
                   *           Cleared to logic zero
                   �           Set to logic one
                   x           Set or cleared according to operation
                               Value is unaffected
                               Value is undefined

                 Symbol   Table 6-3. Instruction Set Symbols
                    dst
                    src                                 Description
                    @        Destination operand
                    PC       Source operand
                     IP      Indirect register address prefix
                             Program counter
                 FLAGS       Instruction pointer
                    RP       Flags register (D5H)
                     #       Register pointer
                     H       Immediate operand or register address prefix
                     D       Hexadecimal number suffix
                     B       Decimal number suffix
                    opc      Binary number suffix
                             Opcode

6-8
S3C825A/P825A                                                                       INSTRUCTION SET

                   Table 6-4. Instruction Notation Conventions

Notation           Description                                  Actual Operand Range

cc Condition code                                See list of condition codes in Table 6-6.

r         Working register only                  Rn (n = 0�15)

rb        Bit (b) of working register            Rn.b (n = 0�15, b = 0�7)

r0        Bit 0 (LSB) of working register        Rn (n = 0�15)

rr        Working register pair                  RRp (p = 0, 2, 4, ..., 14)

R         Register or working register           reg or Rn (reg = 0�255, n = 0�15)

Rb Bit 'b' of register or working register       reg.b (reg = 0�255, b = 0�7)

RR Register pair or working register pair        reg or RRp (reg = 0�254, even number only, where
                                                 p = 0, 2, ..., 14)

IA        Indirect addressing mode               addr (addr = 0�254, even number only)

Ir        Indirect working register only         @Rn (n = 0�15)

IR Indirect register or indirect working register @Rn or @reg (reg = 0�255, n = 0�15)

Irr       Indirect working register pair only    @RRp (p = 0, 2, ..., 14)

IRR Indirect register pair or indirect working   @RRp or @reg (reg = 0�254, even only, where
           register pair                         p = 0, 2, ..., 14)

X         Indexed addressing mode                #reg [Rn] (reg = 0�255, n = 0�15)

XS Indexed (short offset) addressing mode #addr [RRp] (addr = range �128 to +127, where
                                                                      p = 0, 2, ..., 14)

xl        Indexed (long offset) addressing mode  #addr [RRp] (addr = range 0�65535, where

                                                 p = 0, 2, ..., 14)

da Direct addressing mode                        addr (addr = range 0�65535)

ra        Relative addressing mode               addr (addr = number in the range +127 to �128 that is
                                                 an offset relative to the address of the next instruction)

im Immediate addressing mode                     #data (data = 0�255)

iml Immediate (long) addressing mode             #data (data = range 0�65535)

                                                                                                   6-9
INSTRUCTION SET                                                       S3C825A/P825A

                        Table 6-5. Opcode Quick Reference

                                        OPCODE MAP

                                 LOWER NIBBLE (HEX)

      �             0       1    2          3        4           5         6         7
                                                               ADD
U     0           DEC     DEC    ADD        ADD       ADD     IR2,R1    ADD       BOR
                   R1      IR1   r1,r2      r1,Ir2   R2,R1     ADC     R1,IM     r0�Rb
                                                              IR2,R1
P     1           RLC     RLC    ADC        ADC       ADC      SUB      ADC       BCP
                   R1      IR1   r1,r2      r1,Ir2   R2,R1    IR2,R1   R1,IM    r1.b, R2
                                                               SBC
P     2            INC     INC   SUB        SUB       SUB     IR2,R1    SUB      BXOR
                   R1      IR1   r1,r2      r1,Ir2   R2,R1      OR     R1,IM     r0�Rb
                                                              IR2,R1
E     3            JP   SRP/0/1  SBC        SBC       SBC      AND      SBC       BTJR
                  IRR1     IM    r1,r2      r1,Ir2   R2,R1    IR2,R1   R1,IM    r2.b, RA
                                                               TCM
R     4            DA      DA    OR          OR       OR      IR2,R1     OR        LDB
                   R1      IR1   r1,r2      r1,Ir2   R2,R1      TM     R1,IM     r0�Rb
                                                              IR2,R1
      5           POP     POP    AND        AND       AND     MULT      AND       BITC
                   R1      IR1   r1,r2      r1,Ir2   R2,R1   IR2,RR1   R1,IM       r1.b
                                                                DIV
N     6           COM     COM    TCM        TCM      TCM     IR2,RR1    TCM      BAND
                   R1      IR1   r1,r2      r1,Ir2   R2,R1      CP     R1,IM     r0�Rb
                                                              IR2,R1
I     7          PUSH    PUSH    TM          TM        TM      XOR       TM        BIT
                   R2      IR2   r1,r2      r1,Ir2   R2,R1    IR2,R1   R1,IM       r1.b
                                                               LDW
B     8          DECW   DECW     PUSHUD PUSHUI MULT          IR2,RR1   MULT         LD
                  RR1      IR1    IR1,R2 IR1,R2 R2,RR1                IM,RR1    r1, x, r2
                                                                LD
B     9            RL      RL    POPUD      POPUI      DIV    R2,IR1     DIV        LD
                   R1      IR1   IR2,R1     IR2,R1   R2,RR1           IM,RR1    r2, x, r1
                                                                LD
L     A          INCW    INCW     CP         CP        CP     IR2,R1     CP       LDC
                  RR1      IR1   r1,r2      r1,Ir2   R2,R1             R1,IM   r1, Irr2, xL

E     B           CLR     CLR    XOR        XOR       XOR               XOR       LDC
                   R1      IR1   r1,r2      r1,Ir2   R2,R1             R1,IM   r2, Irr2, xL

      C           RRC     RRC    CPIJE      LDC      LDW                LDW         LD
                   R1      IR1   Ir,r2,RA                             RR1,IML     r1, Ir2
                                            r1,Irr2 RR2,RR1
                  SRA     SRA                                             LD        LD
H     D            R1      IR1   CPIJNE      LDC     CALL              IR1,IM     Ir1, r2
                                 Irr,r2,RA  r2,Irr1   IA1
                   RR      RR                                             LD      LDC
E     E            R1      IR1   LDCD       LDCI       LD              R1,IM   r1, Irr2, xs
                                 r1,Irr2    r1,Irr2  R2,R1
                 SWAP    SWAP                                           CALL      LDC
X     F            R1      IR1   LDCPD      LDCPI    CALL                DA1   r2, Irr1, xs
                                  r2,Irr1   r2,Irr1  IRR1

6-10
S3C825A/P825A                                                           INSTRUCTION SET

                      Table 6-5. Opcode Quick Reference (Continued)

                                OPCODE MAP

                             LOWER NIBBLE (HEX)

   �             8    9      A      B            C                   D  E    F

U  0            LD     LD    DJNZ     JR     LD       JP                INC  NEXT
               r1,R2  r2,R1  r1,RA  cc,RA   r1,IM   cc,DA
                                                                        r1
               
P  1                                                                         ENTER

P  2                                                                         EXIT

E  3                                                                         WFI

R  4                                                                         SB0

   5                                                                         SB1

N  6                                                                         IDLE

I  7                                                                         STOP

B  8                                                                         DI

B  9                                                                         EI

L  A                                                                         RET

E  B                                                                         IRET

   C                                                                         RCF

H  D                                                                         SCF

E  E                                                                         CCF

X  F            LD     LD    DJNZ     JR     LD       JP                INC  NOP
               r1,R2  r2,R1  r1,RA  cc,RA   r1,IM   cc,DA
                                                                        r1

                                                                                 6-11
INSTRUCTION SET                                                 S3C825A/P825A

CONDITION CODES

The opcode of a conditional jump always contains a 4-bit field called the condition code (cc). This specifies under
which conditions it is to execute the jump. For example, a conditional jump with the condition code for "equal"
after a compare operation only jumps if the two operands are equal. Condition codes are listed in Table 6-6.

The carry (C), zero (Z), sign (S), and overflow (V) flags are used to control the operation of conditional jump
instructions.

                                Table 6-6. Condition Codes

        Binary        Mnemonic                 Description                   Flags Set

0000             F              Always false                    �
1000             T              Always true                     �
0111 (note)      C              Carry                           C=1
1111 (note)      NC             No carry                        C=0
0110 (note)      Z              Zero                            Z=1
1110 (note)      NZ             Not zero                        Z=0
1101             PL             Plus                            S=0
0101             MI             Minus                           S=1
0100             OV             Overflow                        V=1
1100             NOV            No overflow                     V=0
0110 (note)      EQ             Equal                           Z=1
1110 (note)      NE             Not equal                       Z=0
1001             GE             Greater than or equal           (S XOR V) = 0
0001             LT             Less than                       (S XOR V) = 1
1010             GT             Greater than                    (Z OR (S XOR V)) = 0
0010             LE             Less than or equal              (Z OR (S XOR V)) = 1
1111 (note)      UGE            Unsigned greater than or equal  C=0
0111 (note)      ULT            Unsigned less than              C=1
1011             UGT            Unsigned greater than           (C = 0 AND Z = 0) = 1
0011             ULE            Unsigned less than or equal     (C OR Z) = 1

NOTES:
1. It indicates condition codes that are related to two different mnemonics but which test the same flag. For

     example, Z and EQ are both true if the zero flag (Z) is set, but after an ADD instruction, Z would probably be used;
     after a CP instruction, however, EQ would probably be used.
2. For operations involving unsigned numbers, the special condition codes UGE, ULT, UGT, and ULE must be used.

6-12
S3C825A/P825A  INSTRUCTION SET

INSTRUCTION DESCRIPTIONS

This section contains detailed information and programming examples for each instruction in the SAM8
instruction set. Information is arranged in a consistent format for improved readability and for fast referencing.
The following information is included in each instruction description:

-- Instruction name (mnemonic)
-- Full instruction name
-- Source/destination format of the instruction operand
-- Shorthand notation of the instruction's operation
-- Textual description of the instruction's effect
-- Specific flag settings affected by the instruction
-- Detailed description of the instruction's format, execution time, and addressing mode(s)
-- Programming example(s) explaining how to use the instruction

               6-13
INSTRUCTION SET                                                              S3C825A/P825A

ADC -- Add with carry

ADC         dst,src
Operation:
            dst  dst + src + c
Flags:
            The source operand, along with the setting of the carry flag, is added to the destination operand
Format:     and the sum is stored in the destination. The contents of the source are unaffected. Two's-
            complement addition is performed. In multiple precision arithmetic, this instruction permits the
            carry from the addition of low-order operands to be carried into the addition of high-order
            operands.

            C: Set if there is a carry from the most significant bit of the result; cleared otherwise.
            Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result is negative; cleared otherwise.
            V: Set if arithmetic overflow occurs, that is, if both operands are of the same sign and the result

                 is of the opposite sign; cleared otherwise.
            D: Always cleared to "0".
            H: Set if there is a carry from the most significant bit of the low-order four bits of the result;

                 cleared otherwise.

                                     Bytes  Cycles  Opcode                   Addr Mode
                                        2            (Hex)                   dst src
                                                4
                 opc dst | src                  6      12                    r                    r
                                                       13
                                                                             r                    lr

                 opc   src      dst  3      6       14                       R  R

                                            6       15                       R  IR

                 opc   dst      src  3      6       16                       R  IM

Examples:   Given: R1 = 10H, R2 = 03H, C flag = "1", register 01H = 20H, register 02H = 03H, and
            register 03H = 0AH:

            ADC R1,R2                R1 = 14H, R2 = 03H
                                     R1 = 1BH, R2 = 03H
            ADC R1,@R2               Register 01H = 24H, register 02H = 03H
                                     Register 01H = 2BH, register 02H = 03H
            ADC 01H,02H              Register 01H = 32H

            ADC 01H,@02H

            ADC 01H,#11H        

            In the first example, destination register R1 contains the value 10H, the carry flag is set to "1",
            and the source working register R2 contains the value 03H. The statement "ADC R1,R2" adds
            03H and the carry flag value ("1") to the destination value 10H, leaving 14H in register R1.

6-14
S3C825A/P825A                                                               INSTRUCTION SET

ADD -- Add

ADD            dst,src

Operation:     dst  dst + src
Flags:
               The source operand is added to the destination operand and the sum is stored in the destination.
               The contents of the source are unaffected. Two's-complement addition is performed.

               C: Set if there is a carry from the most significant bit of the result; cleared otherwise.
               Z: Set if the result is "0"; cleared otherwise.
               S: Set if the result is negative; cleared otherwise.
               V: Set if arithmetic overflow occurred, that is, if both operands are of the same sign and the

                    result is of the opposite sign; cleared otherwise.
               D: Always cleared to "0".
               H: Set if a carry from the low-order nibble occurred.

Format:

                                    Bytes Cycles  Opcode                    Addr Mode
                                                   (Hex)                    dst src

               opc dst | src        2  4             02                     r                          r
                                                     03
                                       6                                    r                          lr

               opc        src  dst  3  6          04                        R                          R

                                       6          05                        R                          IR

               opc        dst  src  3  6          06                        R                          IM

Examples:      Given: R1 = 12H, R2 = 03H, register 01H = 21H, register 02H = 03H, register 03H = 0AH:

               ADD R1,R2            R1 = 15H, R2 = 03H
                                    R1 = 1CH, R2 = 03H
               ADD R1,@R2           Register 01H = 24H, register 02H = 03H
                                    Register 01H = 2BH, register 02H = 03H
               ADD 01H,02H          Register 01H = 46H

               ADD 01H,@02H

               ADD 01H,#25H   

               In the first example, destination working register R1 contains 12H and the source working
               register R2 contains 03H. The statement "ADD R1,R2" adds 03H to 12H, leaving the value 15H
               in register R1.

                                                                                                       6-15
INSTRUCTION SET                                                                       S3C825A/P825A

AND -- Logical AND

AND         dst,src

Operation:  dst  dst AND src

            The source operand is logically ANDed with the destination operand. The result is stored in the
            destination. The AND operation results in a "1" bit being stored whenever the corresponding bits
            in the two operands are both logic ones; otherwise a "0" bit value is stored. The contents of the
            source are unaffected.

Flags:      C: Unaffected.
Format:     Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result bit 7 is set; cleared otherwise.
            V: Always cleared to "0".
            D: Unaffected.
            H: Unaffected.

                                     Bytes                            Cycles  Opcode  Addr Mode
                                        2                                      (Hex)  dst src
                                                                          4
                 opc dst | src                                            6      52   r                  r
                                                                                 53
                                                                                      r                  lr

                 opc   src      dst                                3  6       54      R                  R

                                                                      6       55      R                  IR

                 opc   dst      src                                3  6       56      R                  IM

Examples:   Given: R1 = 12H, R2 = 03H, register 01H = 21H, register 02H = 03H, register 03H = 0AH:

            AND R1,R2                R1 = 02H, R2 = 03H
                                     R1 = 02H, R2 = 03H
            AND R1,@R2               Register 01H = 01H, register 02H = 03H
                                     Register 01H = 00H, register 02H = 03H
            AND 01H,02H              Register 01H = 21H

            AND 01H,@02H

            AND 01H,#25H        

            In the first example, destination working register R1 contains the value 12H and the source
            working register R2 contains 03H. The statement "AND R1,R2" logically ANDs the source
            operand 03H with the destination operand value 12H, leaving the value 02H in register R1.

6-16
S3C825A/P825A                                                             INSTRUCTION SET

BAND -- Bit AND

BAND           dst,src.b
BAND
Operation:     dst.b,src

Flags:         dst(0)  dst(0) AND src(b)
                         or
Format:
               dst(b)  dst(b) AND src(0)
               The specified bit of the source (or the destination) is logically ANDed with the zero bit (LSB) of
               the destination (or source). The resultant bit is stored in the specified bit of the destination. No
               other bits of the destination are affected. The source is unaffected.

               C: Unaffected.
               Z: Set if the result is "0"; cleared otherwise.
               S: Cleared to "0".
               V: Undefined.
               D: Unaffected.
               H: Unaffected.

                                                        Bytes Cycles  Opcode  Addr Mode
                                                                       (Hex)  dst src
               opc dst | b | 0 src                      3  6
                                                                         67    r0 Rb

               opc src | b | 1 dst                      3  6          67      Rb r0

               NOTE: In the second byte of the 3-byte instruction formats, the destination (or source) address is four
                          bits, the bit address 'b' is three bits, and the LSB address value is one bit in length.

Examples:      Given: R1 = 07H and register 01H = 05H:

               BAND R1,01H.1        R1 = 06H, register 01H = 05H
               BAND 01H.1,R1
                                    Register 01H = 05H, R1 = 07H

               In the first example, source register 01H contains the value 05H (00000101B) and destination
               working register R1 contains 07H (00000111B). The statement "BAND R1,01H.1" ANDs the bit 1
               value of the source register ("0") with the bit 0 value of register R1 (destination), leaving the
               value 06H (00000110B) in register R1.

                                                                              6-17
INSTRUCTION SET                                                             S3C825A/P825A

BCP -- Bit Compare

BCP         dst,src.b
Operation:
Flags:      dst(0) � src(b)

Format:     The specified bit of the source is compared to (subtracted from) bit zero (LSB) of the destination.
            The zero flag is set if the bits are the same; otherwise it is cleared. The contents of both
            operands are unaffected by the comparison.

            C: Unaffected.
            Z: Set if the two bits are the same; cleared otherwise.
            S: Cleared to "0".
            V: Undefined.
            D: Unaffected.
            H: Unaffected.

                 opc dst | b | 0 src                 Bytes  Cycles  Opcode  Addr Mode
                                                        3       6    (Hex)  dst src

                                                                       17    r0 Rb

            NOTE: In the second byte of the instruction format, the destination address is four bits, the bit address 'b'
                       is three bits, and the LSB address value is one bit in length.

Example:    Given: R1 = 07H and register 01H = 01H:

            BCP R1,01H.1              R1 = 07H, register 01H = 01H

            If destination working register R1 contains the value 07H (00000111B) and the source register
            01H contains the value 01H (00000001B), the statement "BCP R1,01H.1" compares bit one of
            the source register (01H) and bit zero of the destination register (R1). Because the bit values are
            not identical, the zero flag bit (Z) is cleared in the FLAGS register (0D5H).

6-18
S3C825A/P825A                                           INSTRUCTION SET

BITC -- Bit Complement

BITC           dst.b
Operation:
Flags:         dst(b)  NOT dst(b)
               This instruction complements the specified bit within the destination without affecting any other
Format:        bits in the destination.

               C: Unaffected.
               Z: Set if the result is "0"; cleared otherwise.
               S: Cleared to "0".
               V: Undefined.
               D: Unaffected.
               H: Unaffected.

                                          Bytes Cycles  Opcode  Addr Mode
                                                         (Hex)       dst
               opc dst | b | 0            2  4
                                                           57         rb

               NOTE: In the second byte of the instruction format, the destination address is four bits, the bit address 'b'
                          is three bits, and the LSB address value is one bit in length.

Example:       Given: R1 = 07H
               BITC R1.1
                                R1 = 05H

               If working register R1 contains the value 07H (00000111B), the statement "BITC R1.1"
               complements bit one of the destination and leaves the value 05H (00000101B) in register R1.
               Because the result of the complement is not "0", the zero flag (Z) in the FLAGS register (0D5H)
               is cleared.

                                                                6-19
INSTRUCTION SET                                                    S3C825A/P825A

BITR -- Bit Reset

BITR        dst.b
Operation:
            dst(b)  0
Flags:      The BITR instruction clears the specified bit within the destination without affecting any other bits
Format:     in the destination.

            No flags are affected.

                 opc dst | b | 0            Bytes  Cycles  Opcode  Addr Mode
                                               2       4    (Hex)       dst

                                                              77         rb

            NOTE: In the second byte of the instruction format, the destination address is four bits, the bit address 'b'
                       is three bits, and the LSB address value is one bit in length.

Example:    Given: R1 = 07H:
            BITR R1.1
                                  R1 = 05H

            If the value of working register R1 is 07H (00000111B), the statement "BITR R1.1" clears bit one
            of the destination register R1, leaving the value 05H (00000101B).

6-20
S3C825A/P825A                                            INSTRUCTION SET

BITS -- Bit Set

BITS           dst.b
Operation:
               dst(b)  1
Flags:         The BITS instruction sets the specified bit within the destination without affecting any other bits
Format:        in the destination.

               No flags are affected.

                                           Bytes Cycles  Opcode  Addr Mode
                                                          (Hex)       dst
               opc dst | b | 1             2  4
                                                            77         rb

               NOTE: In the second byte of the instruction format, the destination address is four bits, the bit address 'b'
                          is three bits, and the LSB address value is one bit in length.

Example:       Given: R1 = 07H:
               BITS R1.3
                                 R1 = 0FH

               If working register R1 contains the value 07H (00000111B), the statement "BITS R1.3" sets bit
               three of the destination register R1 to "1", leaving the value 0FH (00001111B).

                                                                 6-21
INSTRUCTION SET                                                             S3C825A/P825A

BOR -- Bit OR

BOR         dst,src.b
BOR
Operation:  dst.b,src

Flags:      dst(0)  dst(0) OR src(b)
                      or
Format:
            dst(b)  dst(b) OR src(0)
            The specified bit of the source (or the destination) is logically ORed with bit zero (LSB) of the
            destination (or the source). The resulting bit value is stored in the specified bit of the destination.
            No other bits of the destination are affected. The source is unaffected.

            C: Unaffected.
            Z: Set if the result is "0"; cleared otherwise.
            S: Cleared to "0".
            V: Undefined.
            D: Unaffected.
            H: Unaffected.

                 opc dst | b | 0 src                 Bytes  Cycles  Opcode  Addr Mode
                                                        3       6    (Hex)  dst src

                                                                       07    r0 Rb

                 opc src | b | 1 dst                 3      6       07      Rb r0

            NOTE: In the second byte of the 3-byte instruction formats, the destination (or source) address is four
                       bits, the bit address 'b' is three bits, and the LSB address value is one bit.

Examples:   Given: R1 = 07H and register 01H = 03H:

            BOR R1, 01H.1             R1 = 07H, register 01H = 03H

            BOR 01H.2, R1             Register 01H = 07H, R1 = 07H

            In the first example, destination working register R1 contains the value 07H (00000111B) and
            source register 01H the value 03H (00000011B). The statement "BOR R1,01H.1" logically ORs
            bit one of register 01H (source) with bit zero of R1 (destination). This leaves the same value
            (07H) in working register R1.

            In the second example, destination register 01H contains the value 03H (00000011B) and the
            source working register R1 the value 07H (00000111B). The statement "BOR 01H.2,R1" logically
            ORs bit two of register 01H (destination) with bit zero of R1 (source). This leaves the value 07H
            in register 01H.

6-22
S3C825A/P825A                                                      INSTRUCTION SET

BTJRF -- Bit Test, Jump Relative on False

BTJRF          dst,src.b
Operation:
               If src(b) is a "0", then PC  PC + dst
Flags:         The specified bit within the source operand is tested. If it is a "0", the relative address is added to
Format:        the program counter and control passes to the statement whose address is now in the PC;
               otherwise, the instruction following the BTJRF instruction is executed.

               No flags are affected.

                                           Bytes Cycles            Opcode  Addr Mode
                                                                    (Hex)  dst src
                            (Note 1)       3  10
               opc src | b | 0 dst                                    37   RA rb

               NOTE: In the second byte of the instruction format, the source address is four bits, the bit address 'b' is
                          three bits, and the LSB address value is one bit in length.

Example:       Given: R1 = 07H:
               BTJRF SKIP,R1.3
                                        PC jumps to SKIP location

               If working register R1 contains the value 07H (00000111B), the statement "BTJRF SKIP,R1.3"
               tests bit 3. Because it is "0", the relative address is added to the PC and the PC jumps to the
               memory location pointed to by the SKIP. (Remember that the memory location must be within
               the allowed range of + 127 to � 128.)

                                                                           6-23
INSTRUCTION SET                                                  S3C825A/P825A

BTJRT -- Bit Test, Jump Relative on True

BTJRT       dst,src.b
Operation:
            If src(b) is a "1", then PC  PC + dst
Flags:      The specified bit within the source operand is tested. If it is a "1", the relative address is added to
Format:     the program counter and control passes to the statement whose address is now in the PC;
            otherwise, the instruction following the BTJRT instruction is executed.

            No flags are affected.

                              (Note 1)    Bytes  Cycles  Opcode  Addr Mode
                 opc src | b | 1 dst         3      10    (Hex)  dst src

                                                            37   RA rb

            NOTE: In the second byte of the instruction format, the source address is four bits, the bit address 'b' is
                       three bits, and the LSB address value is one bit in length.

Example:    Given: R1 = 07H:

            BTJRT SKIP,R1.1

            If working register R1 contains the value 07H (00000111B), the statement "BTJRT SKIP,R1.1"
            tests bit one in the source register (R1). Because it is a "1", the relative address is added to the
            PC and the PC jumps to the memory location pointed to by the SKIP. (Remember that the
            memory location must be within the allowed range of + 127 to � 128.)

6-24
S3C825A/P825A                                                                       INSTRUCTION SET

BXOR -- Bit XOR

BXOR           dst,src.b
BXOR
Operation:     dst.b,src

Flags:         dst(0)  dst(0) XOR src(b)
                         or
Format:
               dst(b)  dst(b) XOR src(0)
               The specified bit of the source (or the destination) is logically exclusive-ORed with bit zero (LSB)
               of the destination (or source). The result bit is stored in the specified bit of the destination. No
               other bits of the destination are affected. The source is unaffected.

               C: Unaffected.
               Z: Set if the result is "0"; cleared otherwise.
               S: Cleared to "0".
               V: Undefined.
               D: Unaffected.
               H: Unaffected.

                                    Bytes Cycles                  Opcode            Addr Mode
                                                                   (Hex)            dst src
               opc dst | b | 0 src  3  6
                                                                     27              r0 Rb

               opc src | b | 1 dst  3  6                                        27  Rb r0

               NOTE: In the second byte of the 3-byte instruction formats, the destination (or source) address is four
                          bits, the bit address 'b' is three bits, and the LSB address value is one bit in length.

Examples:      Given: R1 = 07H (00000111B) and register 01H = 03H (00000011B):

               BXOR R1,01H.1        R1 = 06H, register 01H = 03H
               BXOR 01H.2,R1
                                    Register 01H = 07H, R1 = 07H

               In the first example, destination working register R1 has the value 07H (00000111B) and source
               register 01H has the value 03H (00000011B). The statement "BXOR R1,01H.1" exclusive-ORs
               bit one of register 01H (source) with bit zero of R1 (destination). The result bit value is stored in
               bit zero of R1, changing its value from 07H to 06H. The value of source register 01H is
               unaffected.

                                                                                    6-25
INSTRUCTION SET                                                             S3C825A/P825A

CALL -- Call Procedure

CALL        dst

Operation:  SP        SP � 1
Flags:      @SP       PCL
            SP        SP �1
            @SP       PCH
            PC        dst

            The current contents of the program counter are pushed onto the top of the stack. The program
            counter value used is the address of the first instruction following the CALL instruction. The
            specified destination address is then loaded into the program counter and points to the first
            instruction of a procedure. At the end of the procedure the return instruction (RET) can be used
            to return to the original program flow. RET pops the top of the stack back into the program
            counter.

            No flags are affected.

Format:

                 opc       dst      Bytes  Cycles                   Opcode             Addr Mode
                                       3      14                     (Hex)                  dst

                                                                       F6                   DA

                 opc  dst           2      12                       F4                 IRR

                 opc  dst           2      14                       D4                 IA

Examples:   Given: R0 = 35H, R1 = 21H, PC = 1A47H, and SP = 0002H:

            CALL 3521H              SP = 0000H
                                    (Memory locations 0000H = 1AH, 0001H = 4AH, where
            CALL @RR0               4AH is the address that follows the instruction.)
            CALL #40H               SP = 0000H (0000H = 1AH, 0001H = 49H)
                                    SP = 0000H (0000H = 1AH, 0001H = 49H)

            In the first example, if the program counter value is 1A47H and the stack pointer contains the
            value 0002H, the statement "CALL 3521H" pushes the current PC value onto the top of the
            stack. The stack pointer now points to memory location 0000H. The PC is then loaded with the
            value 3521H, the address of the first instruction in the program sequence to be executed.

            If the contents of the program counter and stack pointer are the same as in the first example, the
            statement "CALL @RR0" produces the same result except that the 49H is stored in stack
            location 0001H (because the two-byte instruction format was used). The PC is then loaded with
            the value 3521H, the address of the first instruction in the program sequence to be executed.
            Assuming that the contents of the program counter and stack pointer are the same as in the first
            example, if program address 0040H contains 35H and program address 0041H contains 21H, the
            statement "CALL #40H" produces the same result as in the second example.

6-26
S3C825A/P825A                                  INSTRUCTION SET

CCF -- Complement Carry Flag

CCF

Operation:     C  NOT C
Flags:         The carry flag (C) is complemented. If C = "1", the value of the carry flag is changed to logic
               zero; if C = "0", the value of the carry flag is changed to logic one.

               C: Complemented.
               No other flags are affected.

Format:                         Bytes  Cycles  Opcode
                           opc     1       4    (Hex)

                                                  EF

Example:       Given: The carry flag = "0":

               CCF

               If the carry flag = "0", the CCF instruction complements it in the FLAGS register (0D5H),
               changing its value from logic zero to logic one.

                                                                                                          6-27
INSTRUCTION SET                                                                     S3C825A/P825A

CLR -- Clear

CLR         dst

Operation:  dst  "0"
Flags:      The destination location is cleared to "0".

            No flags are affected.

Format:

                 opc  dst                                Bytes  Cycles  Opcode      Addr Mode
                                                            2            (Hex)           dst
                                                                    4
                                                                    4      B0             R
                                                                           B1             IR

Examples:   Given: Register 00H = 4FH, register 01H = 02H, and register 02H = 5EH:

            CLR 00H        Register 00H = 00H
            CLR @01H       Register 01H = 02H, register 02H = 00H

            In Register (R) addressing mode, the statement "CLR 00H" clears the destination register 00H
            value to 00H. In the second example, the statement "CLR @01H" uses Indirect Register (IR)
            addressing mode to clear the 02H register value to 00H.

6-28
S3C825A/P825A                                                          INSTRUCTION SET

COM -- Complement

COM            dst

Operation:     dst  NOT dst
Flags:
               The contents of the destination location are complemented (one's complement); all "1s" are
               changed to "0s", and vice-versa.

               C: Unaffected.
               Z: Set if the result is "0"; cleared otherwise.
               S: Set if the result bit 7 is set; cleared otherwise.
               V: Always reset to "0".
               D: Unaffected.
               H: Unaffected.

Format:

                                                         Bytes Cycles  Opcode  Addr Mode
                                                                        (Hex)       dst
                    opc  dst                             2  4
                                                                          60         R
                                                            4             61         IR

Examples:      Given: R1 = 07H and register 07H = 0F1H:

               COM R1         R1 = 0F8H
               COM @R1        R1 = 07H, register 07H = 0EH

               In the first example, destination working register R1 contains the value 07H (00000111B). The
               statement "COM R1" complements all the bits in R1: all logic ones are changed to logic zeros,
               and vice-versa, leaving the value 0F8H (11111000B).

               In the second example, Indirect Register (IR) addressing mode is used to complement the value
               of destination register 07H (11110001B), leaving the new value 0EH (00001110B).

                                                                                                           6-29
INSTRUCTION SET                                                                       S3C825A/P825A

CP -- Compare

CP          dst,src
Operation:
            dst � src
            The source operand is compared to (subtracted from) the destination operand, and the
            appropriate flags are set accordingly. The contents of both operands are unaffected by the
            comparison.

Flags:      C: Set if a "borrow" occurred (src > dst); cleared otherwise.
            Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result is negative; cleared otherwise.
            V: Set if arithmetic overflow occurred; cleared otherwise.
            D: Unaffected.
            H: Unaffected.

Format:

                                              Bytes           Cycles          Opcode  Addr Mode
                                                 2                4            (Hex)  dst src

                 opc       dst |                                                 A2   r                 r

                           src

                                                                           6  A3      r                 lr

                 opc       src    dst         3                            6  A4      R                 R

                                                                           6  A5      R                 IR

                 opc       dst    src         3                            6  A6      R                 IM

Examples:   1. Given: R1 = 02H and R2 = 03H:

                      CP R1,R2         Set the C and S flags

            Destination working register R1 contains the value 02H and source register R2 contains the
            value 03H. The statement "CP R1,R2" subtracts the R2 value (source/subtrahend) from the R1
            value (destination/minuend). Because a "borrow" occurs and the difference is negative, C and S
            are "1".

            2. Given: R1 = 05H and R2 = 0AH:

                      CP   R1,R2
                      JP   UGE,SKIP
                      INC  R1
            SKIP LD        R3,R1

            In this example, destination working register R1 contains the value 05H which is less than the
            contents of the source working register R2 (0AH). The statement "CP R1,R2" generates C = "1"
            and the JP instruction does not jump to the SKIP location. After the statement "LD R3,R1"
            executes, the value 06H remains in working register R3.

6-30
S3C825A/P825A                                                                                           INSTRUCTION SET

CPIJE -- Compare, Increment, and Jump on Equal

CPIJE          dst,src,RA
Operation:
               If dst � src = "0", PC  PC + RA
Flags:         Ir  Ir + 1
Format:        The source operand is compared to (subtracted from) the destination operand. If the result is "0",
               the relative address is added to the program counter and control passes to the statement whose
               address is now in the program counter. Otherwise, the instruction immediately following the
               CPIJE instruction is executed. In either case, the source pointer is incremented by one before
               the next instruction is executed.

               No flags are affected.

                                   Bytes Cycles                        Opcode                           Addr Mode
                                                                        (Hex)                           dst src

               opc src dst RA      3                               12     C2                            r  Ir

               NOTE: Execution time is 18 cycles if the jump is taken or 16 cycles if it is not taken.

Example:       Given: R1 = 02H, R2 = 03H, and register 03H = 02H:

               CPIJE R1,@R2,SKIP   R2 = 04H, PC jumps to SKIP location

               In this example, working register R1 contains the value 02H, working register R2 the value 03H,
               and register 03 contains 02H. The statement "CPIJE R1,@R2,SKIP" compares the @R2 value
               02H (00000010B) to 02H (00000010B). Because the result of the comparison is equal, the
               relative address is added to the PC and the PC then jumps to the memory location pointed to by
               SKIP. The source register (R2) is incremented by one, leaving a value of 04H. (Remember that
               the memory location must be within the allowed range of + 127 to � 128.)

                                                                                                           6-31
INSTRUCTION SET                                                                                      S3C825A/P825A

CPIJNE -- Compare, Increment, and Jump on Non-Equal

CPIJNE      dst,src,RA
Operation:
            If dst � src "0", PC  PC + RA
Flags:      Ir  Ir + 1
Format:     The source operand is compared to (subtracted from) the destination operand. If the result is not
            "0", the relative address is added to the program counter and control passes to the statement
            whose address is now in the program counter; otherwise the instruction following the CPIJNE
            instruction is executed. In either case the source pointer is incremented by one before the next
            instruction.

            No flags are affected.

                                  Bytes                         Cycles  Opcode                       Addr Mode
                                     3                             12    (Hex)                       dst src

                 opc src dst RA                                            D2                        r  Ir

            NOTE: Execution time is 18 cycles if the jump is taken or 16 cycles if it is not taken.

Example:    Given: R1 = 02H, R2 = 03H, and register 03H = 04H:

            CPIJNE  R1,@R2,SKIP   R2 = 04H, PC jumps to SKIP location

            Working register R1 contains the value 02H, working register R2 (the source pointer) the value
            03H, and general register 03 the value 04H. The statement "CPIJNE R1,@R2,SKIP" subtracts
            04H (00000100B) from 02H (00000010B). Because the result of the comparison is non-equal,
            the relative address is added to the PC and the PC then jumps to the memory location pointed to
            by SKIP. The source pointer register (R2) is also incremented by one, leaving a value of 04H.
            (Remember that the memory location must be within the allowed range of + 127 to � 128.)

6-32
S3C825A/P825A                                                        INSTRUCTION SET

DA -- Decimal Adjust

DA             dst
Operation:
               dst  DA dst

               The destination operand is adjusted to form two 4-bit BCD digits following an addition or
               subtraction operation. For addition (ADD, ADC) or subtraction (SUB, SBC), the following table
               indicates the operation performed. (The operation is undefined if the destination operand was not
               the result of a valid addition or subtraction of BCD digits):

Instruction       Carry          Bits 4�7     H Flag     Bits 0�3    Number Added    Carry
               Before DA       Value (Hex)  Before DA  Value (Hex)        to Byte  After DA
    ADD                                                                       00
    ADC              0              0�9           0         0�9               06        0
                     0              0�8           0         A�F               06        0
    SUB              0              0�9           1         0�3               60        0
    SBC              0              A�F           0         0�9               66        1
                     0              9�F           0         A�F               66        1
                     0              A�F           1         0�3               60        1
                     1              0�2           0         0�9               66        1
                     1              0�2           0         A�F               66        1
                     1              0�3           1         0�3                         1
                     0              0�9           0         0�9         00 = � 00       0
                     0              0�8           1         6�F         FA = � 06       0
                     1              7�F           0         0�9         A0 = � 60       1
                     1              6�F           1         6�F         9A = � 66       1

Flags:         C: Set if there was a carry from the most significant bit; cleared otherwise (see table).
Format:        Z: Set if result is "0"; cleared otherwise.
               S: Set if result bit 7 is set; cleared otherwise.
               V: Undefined.
               D: Unaffected.
               H: Unaffected.

                                                       Bytes Cycles  Opcode        Addr Mode
                                                                      (Hex)             dst
               opc        dst                          2  4
                                                                        40               R
                                                          4             41               IR

                                                                                                          6-33
INSTRUCTION SET                                                     S3C825A/P825A

DA -- Decimal Adjust

DA        (Continued)
Example:
          Given: Working register R0 contains the value 15 (BCD), working register R1 contains
          27 (BCD), and address 27H contains 46 (BCD):

          ADD    R1,R0  ;     C  "0", H  "0", Bits 4�7 = 3, bits 0�3 = C, R1  3CH

          DA     R1     ;     R1  3CH + 06

          If addition is performed using the BCD values 15 and 27, the result should be 42. The sum is
          incorrect, however, when the binary representations are added in the destination location using
          standard binary arithmetic:

                 0001 0101    15

                 + 0010 0111  27

                 0 0 1 1 1 1 0 0 = 3CH

          The DA instruction adjusts this result so that the correct BCD representation is obtained:

                    0011 1100
                 + 0000 0110

                    0 1 0 0 0 0 1 0 = 42

          Assuming the same values given above, the statements

          SUB 27H,R0 ;  C  "0", H  "0", Bits 4�7 = 3, bits 0�3 = 1
          DA @R1 ;      @R1  31�0

          leave the value 31 (BCD) in address 27H (@R1).

6-34
S3C825A/P825A                                                                   INSTRUCTION SET

DEC -- Decrement

DEC            dst

Operation:     dst  dst � 1
Flags:
               The contents of the destination operand are decremented by one.

               C: Unaffected.
               Z: Set if the result is "0"; cleared otherwise.
               S: Set if result is negative; cleared otherwise.
               V: Set if arithmetic overflow occurred; cleared otherwise.
               D: Unaffected.
               H: Unaffected.

Format:

                                                        Bytes Cycles            Opcode  Addr Mode
                                                                                 (Hex)       dst
                    opc  dst                            2  4
                                                                                   00         R
                                                           4                       01         IR

Examples:      Given: R1 = 03H and register 03H = 10H:

               DEC R1         R1 = 02H
               DEC @R1        Register 03H = 0FH

               In the first example, if working register R1 contains the value 03H, the statement "DEC R1"
               decrements the hexadecimal value by one, leaving the value 02H. In the second example, the
               statement "DEC @R1" decrements the value 10H contained in the destination register 03H by
               one, leaving the value 0FH.

                                                                                        6-35
INSTRUCTION SET                                                            S3C825A/P825A

DECW -- Decrement Word

DECW        dst

Operation:  dst  dst � 1
Flags:
            The contents of the destination location (which must be an even address) and the operand
            following that location are treated as a single 16-bit value that is decremented by one.

            C: Unaffected.
            Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result is negative; cleared otherwise.
            V: Set if arithmetic overflow occurred; cleared otherwise.
            D: Unaffected.
            H: Unaffected.

Format:

                 opc  dst  Bytes  Cycles                           Opcode  Addr Mode
                              2                                     (Hex)       dst
                                      8
                                      8                               80        RR
                                                                      81         IR

Examples:   Given: R0 = 12H, R1 = 34H, R2 = 30H, register 30H = 0FH, and register 31H = 21H:
NOTE:
            DECW RR0       R0 = 12H, R1 = 33H
            DECW @R2       Register 30H = 0FH, register 31H = 20H

            In the first example, destination register R0 contains the value 12H and register R1 the value
            34H. The statement "DECW RR0" addresses R0 and the following operand R1 as a 16-bit word
            and decrements the value of R1 by one, leaving the value 33H.

            A system malfunction may occur if you use a Zero flag (FLAGS.6) result together with a DECW
            instruction. To avoid this problem, we recommend that you use DECW as shown in the following
            example:

            LOOP: DECW RR0
                      LD R2,R1
                      OR R2,R0
                      JR NZ,LOOP

6-36
S3C825A/P825A                                         INSTRUCTION SET

DI -- Disable Interrupts

DI

Operation:     SYM (0)  0

               Bit zero of the system mode control register, SYM.0, is cleared to "0", globally disabling all
               interrupt processing. Interrupt requests will continue to set their respective interrupt pending bits,
               but the CPU will not service them while interrupt processing is disabled.

Flags:         No flags are affected.

Format:                                Bytes  Cycles  Opcode
                           opc            1       4    (Hex)

                                                         8F

Example:       Given: SYM = 01H:

               DI

               If the value of the SYM register is 01H, the statement "DI" leaves the new value 00H in the
               register and clears SYM.0 to "0", disabling interrupt processing.

               Before changing IMR, interrupt pending and interrupt source control register, be sure DI state.

                                                              6-37
INSTRUCTION SET                                                                                    S3C825A/P825A

DIV -- Divide (Unsigned)

DIV         dst,src
Operation:
            dst � src
Flags:
            dst (UPPER)  REMAINDER

            dst (LOWER)  QUOTIENT

            The destination operand (16 bits) is divided by the source operand (8 bits). The quotient (8 bits)
            is stored in the lower half of the destination. The remainder (8 bits) is stored in the upper half of
            the destination. When the quotient is  28, the numbers stored in the upper and lower halves of
            the destination for quotient and remainder are incorrect. Both operands are treated as unsigned
            integers.

            C: Set if the V flag is set and quotient is between 28 and 29 �1; cleared otherwise.
            Z: Set if divisor or quotient = "0"; cleared otherwise.
            S: Set if MSB of quotient = "1"; cleared otherwise.
            V: Set if quotient is  28 or if divisor = "0"; cleared otherwise.
            D: Unaffected.
            H: Unaffected.

Format:

                 opc  src  dst  Bytes               Cycles            Opcode                       Addr Mode
                                   3                                   (Hex)                       dst src
                                                     26/10
                                                     26/10               94                        RR R
                                                     26/10               95                        RR IR
                                                                         96                        RR IM

NOTE: Execution takes 10 cycles if the divide-by-zero is attempted; otherwise it takes 26 cycles.

Examples:   Given: R0 = 10H, R1 = 03H, R2 = 40H, register 40H = 80H:

            DIV RR0,R2          R0 = 03H, R1 = 40H

            DIV RR0,@R2         R0 = 03H, R1 = 20H

            DIV RR0,#20H        R0 = 03H, R1 = 80H

            In the first example, destination working register pair RR0 contains the values 10H (R0) and 03H
            (R1), and register R2 contains the value 40H. The statement "DIV RR0,R2" divides the 16-bit
            RR0 value by the 8-bit value of the R2 (source) register. After the DIV instruction, R0 contains
            the value 03H and R1 contains 40H. The 8-bit remainder is stored in the upper half of the
            destination register RR0 (R0) and the quotient in the lower half (R1).

6-38
S3C825A/P825A                                                 INSTRUCTION SET

DJNZ -- Decrement and Jump if Non-Zero

DJNZ           r,dst

Operation:     rr�1

               If r  0, PC  PC + dst

               The working register being used as a counter is decremented. If the contents of the register are
               not logic zero after decrementing, the relative address is added to the program counter and
               control passes to the statement whose address is now in the PC. The range of the relative
               address is +127 to �128, and the original value of the PC is taken to be the address of the
               instruction byte following the DJNZ statement.

               NOTE: In case of using DJNZ instruction, the working register being used as a counter should be set at
                          the one of location 0C0H to 0CFH with SRP, SRP0, or SRP1 instruction.

Flags:         No flags are affected.
Format:

               r | opc  dst            Bytes     Cycles       Opcode      Addr Mode
                                          2                     (Hex)          dst
                                              8 (jump taken)
                                              8 (no jump)         rA           RA
                                                              r = 0 to F

Example:       Given: R1 = 02H and LOOP is the label of a relative address:

               SRP #0C0H
               DJNZ R1,LOOP

               DJNZ is typically used to control a "loop" of instructions. In many cases, a label is used as the
               destination operand instead of a numeric relative address value. In the example, working register
               R1 contains the value 02H, and LOOP is the label for a relative address.

               The statement "DJNZ R1, LOOP" decrements register R1 by one, leaving the value 01H.
               Because the contents of R1 after the decrement are non-zero, the jump is taken to the relative
               address specified by the LOOP label.

                                                                          6-39
INSTRUCTION SET                                            S3C825A/P825A

EI -- Enable Interrupts

EI

Operation:  SYM (0)  1

            An EI instruction sets bit zero of the system mode register, SYM.0 to "1". This allows interrupts to
            be serviced as they occur (assuming they have highest priority). If an interrupt's pending bit was
            set while interrupt processing was disabled (by executing a DI instruction), it will be serviced
            when you execute the EI instruction.

Flags:      No flags are affected.
Format:

                 opc                Bytes  Cycles  Opcode
                                       1       4    (Hex)

                                                      9F

Example:    Given: SYM = 00H:

            EI

            If the SYM register contains the value 00H, that is, if interrupts are currently disabled, the
            statement "EI" sets the SYM register to 01H, enabling all interrupts. (SYM.0 is the enable bit for
            global interrupt processing.)

6-40
S3C825A/P825A                                                                                      INSTRUCTION SET

ENTER -- Enter

ENTER

Operation:     SP                       SP � 2
Flags:                                  IP
               @SP                      PC
                                        @IP
               IP                       IP + 2

               PC

               IP               

               This instruction is useful when implementing threaded-code languages. The contents of the
               instruction pointer are pushed to the stack. The program counter (PC) value is then written to the
               instruction pointer. The program memory word that is pointed to by the instruction pointer is
               loaded into the PC, and the instruction pointer is incremented by two.

               No flags are affected.

Format:                                                       Bytes             Cycles  Opcode
                           opc                                   1                 14    (Hex)

                                                                                           1F

Example:       The diagram below shows one example of how to use an ENTER statement.

                                Before                                          After

Address            Data                                       Address           Data
        IP                                                            IP
            0050                  Address    Enter      Data              0043          Address    Enter      Data
      PC    0040                             Address H              PC    0110                     Address H
            0022                         40  Address L  1F                0020                 40  Address L  1F
       SP                                41  Address H  01           SP                        41  Address H  01
                                         42             10                                     42             10
                                         43                                                    43

22 Data                                      Memory           20 IPH 00                 110 Routine
        Stack                                                 21 IPL 50                           Memory
                                                              22 Data

                                                                      Stack

                                                                                                                    6-41
INSTRUCTION SET                                                                                   S3C825A/P825A

EXIT -- Exit

EXIT

Operation:  IP                          @SP
Flags:                                  SP + 2
            SP                          @IP
                                        IP + 2
            PC

            IP                  

            This instruction is useful when implementing threaded-code languages. The stack value is
            popped and loaded into the instruction pointer. The program memory word that is pointed to by
            the instruction pointer is then loaded into the program counter, and the instruction pointer is
            incremented by two.

            No flags are affected.

Format:                                               Bytes                    Cycles             Opcode (Hex)
                           opc                           1              14 (internal stack)               2F
                                                                        16 (internal stack)

Example:    The diagram below shows one example of how to use an EXIT statement.

                                Before                                  After

Address     0050   Data                         Data  Address     0052  Data                      Data
        IP  0040                                              IP  0060           Address
            0022            Address             60                0022                   60 Main
      PC                                        00          PC
                                    50 PCL old
       SP                           51 PCH                   SP

                                  140 Exit      2F

      20 IPH 00                         Memory        22 Data                     Memory
      21 IPL 50                                               Stack
      22 Data

            Stack

6-42
S3C825A/P825A                                 INSTRUCTION SET

IDLE -- Idle Operation

IDLE
Operation:

Flags:         The IDLE instruction stops the CPU clock while allowing system clock oscillation to continue. Idle
               mode can be released by an interrupt request (IRQ) or an external reset operation.
               In application programs, a IDLE instruction must be immediately followed by at least three NOP
               instructions. This ensures an adeguate time interval for the clock to stabilize before the next
               instruction is executed. If three or more NOP instructons are not used after IDLE instruction,
               leakage current could be flown because of the floating state in the internal bus.

               No flags are affected.

Format:                         Bytes Cycles  Opcode                            Addr Mode
                           opc                 (Hex)                            dst src

                                1  4             6F                             �  �

Example:       The instruction

               IDLE             ; stops the CPU clock but not the system clock
               NOP
               NOP
               NOP

                                                                                   6-43
INSTRUCTION SET                                                                          S3C825A/P825A

INC -- Increment

INC         dst

Operation:  dst  dst + 1
Flags:
            The contents of the destination operand are incremented by one.

            C: Unaffected.
            Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result is negative; cleared otherwise.
            V: Set if arithmetic overflow occurred; cleared otherwise.
            D: Unaffected.
            H: Unaffected.

Format:

                                 Bytes                    Cycles Opcode                  Addr Mode
                                    1                                      (Hex)              dst

                 dst | opc                                4                  rE                 r

                                                                             r = 0 to F

                 opc        dst  2                        4                  20          R

                                                          4                  21          IR

Examples:   Given: R0 = 1BH, register 00H = 0CH, and register 1BH = 0FH:

            INC R0          R0 = 1CH
            INC 00H         Register 00H = 0DH
            INC @R0         R0 = 1BH, register 01H = 10H

            In the first example, if destination working register R0 contains the value 1BH, the statement
            "INC R0" leaves the value 1CH in that same register.

            The next example shows the effect an INC instruction has on register 00H, assuming that it
            contains the value 0CH.

            In the third example, INC is used in Indirect Register (IR) addressing mode to increment the
            value of register 1BH from 0FH to 10H.

6-44
S3C825A/P825A                                                          INSTRUCTION SET

INCW -- Increment Word

INCW           dst

Operation:     dst  dst + 1
Flags:
               The contents of the destination (which must be an even address) and the byte following that
               location are treated as a single 16-bit value that is incremented by one.

               C: Unaffected.
               Z: Set if the result is "0"; cleared otherwise.
               S: Set if the result is negative; cleared otherwise.
               V: Set if arithmetic overflow occurred; cleared otherwise.
               D: Unaffected.
               H: Unaffected.

Format:

                                        Bytes Cycles                   Opcode           Addr Mode
                                                                        (Hex)                dst
                    opc  dst            2  8
                                                                          A0                 RR
                                           8                              A1                  IR

Examples:      Given: R0 = 1AH, R1 = 02H, register 02H = 0FH, and register 03H = 0FFH:
NOTE:
               INCW RR0        R0 = 1AH, R1 = 03H
               INCW @R1        Register 02H = 10H, register 03H = 00H

               In the first example, the working register pair RR0 contains the value 1AH in register R0 and 02H
               in register R1. The statement "INCW RR0" increments the 16-bit destination by one, leaving the
               value 03H in register R1. In the second example, the statement "INCW @R1" uses Indirect
               Register (IR) addressing mode to increment the contents of general register 03H from 0FFH to
               00H and register 02H from 0FH to 10H.

               A system malfunction may occur if you use a Zero (Z) flag (FLAGS.6) result together with an
               INCW instruction. To avoid this problem, we recommend that you use INCW as shown in the
               following example:

               LOOP:     INCW  RR0
                         LD    R2,R1
                         OR    R2,R0
                         JR    NZ,LOOP

                                                                                                            6-45
INSTRUCTION SET                                                                S3C825A/P825A

IRET -- Interrupt Return

IRET        IRET (Normal)  IRET (Fast)

Operation:  FLAGS  @SP     PC  IP
Flags:      SP  SP + 1     FLAGS  FLAGS'
            PC  @SP        FIS  0
            SP  SP + 2
            SYM(0)  1

            This instruction is used at the end of an interrupt service routine. It restores the flag register and
            the program counter. It also re-enables global interrupts. A "normal IRET" is executed only if the
            fast interrupt status bit (FIS, bit one of the FLAGS register, 0D5H) is cleared (= "0"). If a fast
            interrupt occurred, IRET clears the FIS bit that was set at the beginning of the service routine.

            All flags are restored to their original settings (that is, the settings before the interrupt occurred).

Format:

                   IRET                            Bytes  Cycles               Opcode (Hex)
                 (Normal)                             1
                                                          10 (internal stack)  BF
                    opc

                                                          12 (internal stack)

                 IRET                              Bytes  Cycles               Opcode (Hex)
                 (Fast)                               1      6                        BF

                  opc

Example:    In the figure below, the instruction pointer is initially loaded with 100H in the main program
NOTE:       before interrupts are enabled. When an interrupt occurs, the program counter and instruction
            pointer are swapped. This causes the PC to jump to address 100H and the IP to keep the return
            address. The last instruction in the service routine normally is a jump to IRET at address FFH.
            This causes the instruction pointer to be loaded with 100H "again" and the program counter to
            jump back to the main program. Now, the next interrupt can occur and the IP is still correct at
            100H.

                                                            0H

                            FFH         IRET
                           100H
                                        Interrupt
                                        Service
                                        Routine

                                        JP to FFH

                                                      FFFFH

            In the fast interrupt example above, if the last instruction is not a jump to IRET, you must pay
            attention to the order of the last two instructions. The IRET cannot be immediately proceeded by
            a clearing of the interrupt status (as with a reset of the IPR register).

6-46
S3C825A/P825A                                                                              INSTRUCTION SET

JP -- Jump

JP             cc,dst (Conditional)

JP             dst       (Unconditional)

Operation:     If cc is true, PC  dst

Flags:         The conditional JUMP instruction transfers program control to the destination address if the
Format: (1)    condition specified by the condition code (cc) is true; otherwise, the instruction following the JP
               instruction is executed. The unconditional JP simply replaces the contents of the PC with the
               contents of the specified register pair. Control then passes to the statement addressed by the
               PC.

               No flags are affected.

                    (2)                                Bytes  Cycles   Opcode              Addr Mode
                                                          3       8      (Hex)                  dst
                    cc | opc              dst
                                                                          ccD                   DA
                                                                      cc = 0 to F

                    opc        dst                     2      8       30                   IRR

               NOTES:
               1. The 3-byte format is used for a conditional jump and the 2-byte format for an unconditional jump.
               2. In the first byte of the three-byte instruction format (conditional jump), the condition code and the

                    opcode are both four bits.

Examples:      Given: The carry flag (C) = "1", register 00 = 01H, and register 01 = 20H:

               JP        C,LABEL_W  LABEL_W = 1000H, PC = 1000H

               JP        @00H              PC = 0120H

               The first example shows a conditional JP. Assuming that the carry flag is set to "1", the
               statement
               "JP C,LABEL_W" replaces the contents of the PC with the value 1000H and transfers control to
               that location. Had the carry flag not been set, control would then have passed to the statement
               immediately following the JP instruction.

               The second example shows an unconditional JP. The statement "JP @00" replaces the contents
               of the PC with the contents of the register pair 00H and 01H, leaving the value 0120H.

                                                                                                                         6-47
INSTRUCTION SET                                                                    S3C825A/P825A

JR -- Jump Relative

JR          cc,dst
Operation:
            If cc is true, PC  PC + dst
Flags:      If the condition specified by the condition code (cc) is true, the relative address is added to the
Format:     program counter and control passes to the statement whose address is now in the program
            counter; otherwise, the instruction following the JR instruction is executed. (See list of condition
            codes).

            The range of the relative address is +127, �128, and the original value of the program counter is
            taken to be the address of the first instruction byte following the JR statement.

            No flags are affected.

                 (1)                         Bytes            Cycles   Opcode      Addr Mode
                                                2                 6      (Hex)          dst
                 cc | opc  dst
                                                                          ccB           RA
                                                                      cc = 0 to F

            NOTE: In the first byte of the two-byte instruction format, the condition code and the opcode are each
                       four bits.

Example:    Given: The carry flag = "1" and LABEL_X = 1FF7H:

            JR        C,LABEL_X  PC = 1FF7H

            If the carry flag is set (that is, if the condition code is true), the statement "JR C,LABEL_X" will
            pass control to the statement whose address is now in the PC. Otherwise, the program
            instruction following the JR would be executed.

6-48
S3C825A/P825A                                               INSTRUCTION SET

LD -- Load

LD             dst,src

Operation:     dst  src
Flags:         The contents of the source are loaded into the destination. The source's contents are unaffected.

               No flags are affected.

Format:

                                          Bytes Cycles  Opcode      Addr Mode
                                                         (Hex)      dst src

               dst | opc  src             2  4              rC      r   IM
                                                            r8
                                             4                      r   R

               src | opc  dst             2  4          r9          R   r

                                                        r = 0 to F

               opc        dst | src       2  4          C7          r   lr

                                             4          D7          Ir  r

               opc        src        dst  3  6          E4          R   R

                                             6          E5          R   IR

               opc        dst        src  3  6          E6          R   IM

                                             6          D6          IR IM

               opc        src        dst  3  6          F5          IR  R

               opc        dst | src  x    3  6          87          r x [r]

               opc        src | dst  x    3  6          97          x [r] r

                                                                        6-49
INSTRUCTION SET                                                                 S3C825A/P825A

LD -- Load

LD          (Continued)
Examples:
            Given: R0 = 01H, R1 = 0AH, register 00H = 01H, register 01H = 20H,
            register 02H = 02H, LOOP = 30H, and register 3AH = 0FFH:

            LD R0,#10H        R0 = 10H
                              R0 = 20H, register 01H = 20H
            LD R0,01H         Register 01H = 01H, R0 = 01H
                              R1 = 20H, R0 = 01H
            LD 01H,R0         R0 = 01H, R1 = 0AH, register 01H = 0AH
                              Register 00H = 20H, register 01H = 20H
            LD R1,@R0         Register 02H = 20H, register 00H = 01H
                              Register 00H = 0AH
            LD @R0,R1         Register 00H = 01H, register 01H = 10H
                              Register 00H = 01H, register 01H = 02, register 02H = 02H
            LD 00H,01H        R0 = 0FFH, R1 = 0AH
                              Register 31H = 0AH, R0 = 01H, R1 = 0AH
            LD 02H,@00H

            LD 00H,#0AH  

            LD @00H,#10H

            LD @00H,02H

            LD R0,#LOOP[R1]

            LD #LOOP[R0],R1

6-50
S3C825A/P825A                                                          INSTRUCTION SET

LDB -- Load Bit

LDB            dst,src.b
LDB
Operation:     dst.b,src

Flags:         dst(0)  src(b)
Format:                  or

               dst(b)  src(0)
               The specified bit of the source is loaded into bit zero (LSB) of the destination, or bit zero of the
               source is loaded into the specified bit of the destination. No other bits of the destination are
               affected. The source is unaffected.

               No flags are affected.

                                    Bytes Cycles                   Opcode  Addr Mode
                                                                    (Hex)  dst src
               opc dst | b | 0 src  3                           6
                                                                      47    r0 Rb

               opc src | b | 1 dst  3                           6  47      Rb r0

               NOTE: In the second byte of the instruction formats, the destination (or source) address is four bits, the
                          bit address 'b' is three bits, and the LSB address value is one bit in length.

Examples:      Given: R0 = 06H and general register 00H = 05H:

               LDB  R0,00H.2        R0 = 07H, register 00H = 05H

               LDB  00H.0,R0        R0 = 06H, register 00H = 04H

               In the first example, destination working register R0 contains the value 06H and the source
               general register 00H the value 05H. The statement "LD R0,00H.2" loads the bit two value of the
               00H register into bit zero of the R0 register, leaving the value 07H in register R0.

               In the second example, 00H is the destination register. The statement "LD 00H.0,R0" loads bit
               zero of register R0 to the specified bit (bit zero) of the destination register, leaving 04H in
               general register 00H.

                                                                           6-51
INSTRUCTION SET                                                S3C825A/P825A

LDC/LDE -- Load Memory

LDC/LDE     dst,src

Operation:  dst  src

            This instruction loads a byte from program or data memory into a working register or vice-versa.
            The source values are unaffected. LDC refers to program memory and LDE to data memory.
            The assembler makes 'Irr' or 'rr' values an even number for program memory and odd an odd
            number for data memory.

Flags:      No flags are affected.

Format:                                  Bytes Cycles  Opcode  Addr Mode
                1. opc dst | src                        (Hex)  dst src

                                         2  10             C3  r    Irr

            2. opc src | dst             2  10         D3      Irr  r

            3. opc dst | src XS          3  12         E7      r XS [rr]

            4. opc src | dst XS          3  12         F7      XS [rr] r

            5. opc dst | src XLL    XLH  4  14         A7      r XL [rr]

            6. opc src | dst XLL    XLH  4  14         B7      XL [rr] r

            7. opc dst | 0000 DAL   DAH  4  14         A7      r    DA

            8. opc src | 0000 DAL   DAH  4  14         B7      DA   r

            9. opc dst | 0001 DAL   DAH  4  14         A7      r    DA

         10. opc src | 0001 DAL     DAH  4  14         B7      DA   r

            NOTES:
            1. The source (src) or working register pair [rr] for formats 5 and 6 cannot use register pair 0�1.
            2. For formats 3 and 4, the destination address 'XS [rr]' and the source address 'XS [rr]' are each one

                 byte.
            3. For formats 5 and 6, the destination address 'XL [rr] and the source address 'XL [rr]' are each two

                 bytes.
            4. The DA and r source values for formats 7 and 8 are used to address program memory; the second set

                 of values, used in formats 9 and 10, are used to address data memory.

6-52
S3C825A/P825A                                                                          INSTRUCTION SET

LDC/LDE -- Load Memory

LDC/LDE        (Continued)
Examples:
               Given: R0 = 11H, R1 = 34H, R2 = 01H, R3 = 04H; Program memory locations
               0103H = 4FH, 0104H = 1A, 0105H = 6DH, and 1104H = 88H. External data memory
               locations 0103H = 5FH, 0104H = 2AH, 0105H = 7DH, and 1104H = 98H:

               LDC  R0,@RR2             ; R0  contents of program memory location 0104H
                                        ; R0 = 1AH, R2 = 01H, R3 = 04H

               LDE  R0,@RR2             ; R0  contents of external data memory location 0104H
                                        ; R0 = 2AH, R2 = 01H, R3 = 04H

               LDC (note) @RR2,R0       ; 11H (contents of R0) is loaded into program memory
                                        ; location 0104H (RR2),
                                        ; working registers R0, R2, R3  no change

               LDE  @RR2,R0             ; 11H (contents of R0) is loaded into external data memory
                                        ; location 0104H (RR2),
                                        ; working registers R0, R2, R3  no change

               LDC  R0,#01H[RR2] ; R0  contents of program memory location 0105H

                                        ; (01H + RR2),

                                        ; R0 = 6DH, R2 = 01H, R3 = 04H

               LDE  R0,#01H[RR2] ; R0  contents of external data memory location 0105H

                                        ; (01H + RR2), R0 = 7DH, R2 = 01H, R3 = 04H

               LDC (note) #01H[RR2],R0  ; 11H (contents of R0) is loaded into program memory location
                                        ; 0105H (01H + 0104H)

               LDE  #01H[RR2],R0 ; 11H (contents of R0) is loaded into external data memory

                                        ; location 0105H (01H + 0104H)

               LDC  R0,#1000H[RR2] ; R0  contents of program memory location 1104H

                                        ; (1000H + 0104H), R0 = 88H, R2 = 01H, R3 = 04H

               LDE  R0,#1000H[RR2] ; R0  contents of external data memory location 1104H

                                        ; (1000H + 0104H), R0 = 98H, R2 = 01H, R3 = 04H

               LDC  R0,1104H            ; R0  contents of program memory location 1104H, R0 = 88H

               LDE  R0,1104H            ; R0  contents of external data memory location 1104H,
                                        ; R0 = 98H

               LDC (note) 1105H,R0      ; 11H (contents of R0) is loaded into program memory location
                                        ; 1105H, (1105H)  11H

               LDE  1105H,R0            ; 11H (contents of R0) is loaded into external data memory
                                        ; location 1105H, (1105H)  11H

               NOTE: These instructions are not supported by masked ROM type devices.

                                                                                                    6-53
INSTRUCTION SET                                            S3C825A/P825A

LDCD/LDED -- Load Memory and Decrement

LDCD/LDED dst,src

Operation:  dst  src

            rr  rr � 1

            These instructions are used for user stacks or block transfers of data from program or data
            memory to the register file. The address of the memory location is specified by a working register
            pair. The contents of the source location are loaded into the destination location. The memory
            address is then decremented. The contents of the source are unaffected.

            LDCD references program memory and LDED references external data memory. The assembler
            makes 'Irr' an even number for program memory and an odd number for data memory.

Flags:      No flags are affected.
Format:

                                    Bytes  Cycles  Opcode  Addr Mode
                                       2      10    (Hex)  dst src

                 opc dst | src                        E2   r                                      Irr

Examples:   Given: R6 = 10H, R7 = 33H, R8 = 12H, program memory location 1033H = 0CDH, and
            external data memory location 1033H = 0DDH:

            LDCD R8,@RR6            ; 0CDH (contents of program memory location 1033H) is loaded
                                    ; into R8 and RR6 is decremented by one
                                    ; R8 = 0CDH, R6 = 10H, R7 = 32H (RR6  RR6 � 1)

            LDED R8,@RR6            ; 0DDH (contents of data memory location 1033H) is loaded
                                    ; into R8 and RR6 is decremented by one (RR6  RR6 � 1)
                                    ; R8 = 0DDH, R6 = 10H, R7 = 32H

6-54
S3C825A/P825A                                         INSTRUCTION SET

LDCI/LDEI -- Load Memory and Increment

LDCI/LDEI dst,src

Operation:     dst  src

               rr  rr + 1

               These instructions are used for user stacks or block transfers of data from program or data
               memory to the register file. The address of the memory location is specified by a working register
               pair. The contents of the source location are loaded into the destination location. The memory
               address is then incremented automatically. The contents of the source are unaffected.

               LDCI refers to program memory and LDEI refers to external data memory. The assembler
               makes 'Irr' even for program memory and odd for data memory.

Flags:         No flags are affected.
Format:

                                        Bytes Cycles  Opcode  Addr Mode
                                                       (Hex)  dst src

               opc dst | src            2  10            E3   r                                      Irr

Examples:      Given: R6 = 10H, R7 = 33H, R8 = 12H, program memory locations 1033H = 0CDH and
               1034H = 0C5H; external data memory locations 1033H = 0DDH and 1034H = 0D5H:

               LDCI  R8,@RR6           ; 0CDH (contents of program memory location 1033H) is loaded
                                       ; into R8 and RR6 is incremented by one (RR6  RR6 + 1)
                                       ; R8 = 0CDH, R6 = 10H, R7 = 34H

               LDEI  R8,@RR6           ; 0DDH (contents of data memory location 1033H) is loaded
                                       ; into R8 and RR6 is incremented by one (RR6  RR6 + 1)
                                       ; R8 = 0DDH, R6 = 10H, R7 = 34H

                                                                                                     6-55
INSTRUCTION SET                                                              S3C825A/P825A

LDCPD/LDEPD -- Load Memory with Pre-Decrement

LDCPD/      dst,src
LDEPD

Operation:  rr  rr � 1
Flags:      dst  src
            These instructions are used for block transfers of data from program or data memory from the
            register file. The address of the memory location is specified by a working register pair and is
            first decremented. The contents of the source location are then loaded into the destination
            location. The contents of the source are unaffected.

            LDCPD refers to program memory and LDEPD refers to external data memory. The assembler
            makes 'Irr' an even number for program memory and an odd number for external data memory.

            No flags are affected.

Format:

                                                      Bytes  Cycles  Opcode  Addr Mode
                                                         2      14    (Hex)  dst src

                 opc src | dst                                          F2   Irr            r

Examples:   Given: R0 = 77H, R6 = 30H, and R7 = 00H:

            LDCPD @RR6,R0       ; (RR6  RR6 � 1)
                                ; 77H (contents of R0) is loaded into program memory location
                                ; 2FFFH (3000H � 1H)
                                ; R0 = 77H, R6 = 2FH, R7 = 0FFH

            LDEPD @RR6,R0       ; (RR6  RR6 � 1)
                                ; 77H (contents of R0) is loaded into external data memory
                                ; location 2FFFH (3000H � 1H)
                                ; R0 = 77H, R6 = 2FH, R7 = 0FFH

6-56
S3C825A/P825A                                                    INSTRUCTION SET

LDCPI/LDEPI -- Load Memory with Pre-Increment

LDCPI/         dst,src
LDEPI

Operation:     rr  rr + 1
Flags:         dst  src
               These instructions are used for block transfers of data from program or data memory from the
               register file. The address of the memory location is specified by a working register pair and is
               first incremented. The contents of the source location are loaded into the destination location.
               The contents of the source are unaffected.

               LDCPI refers to program memory and LDEPI refers to external data memory. The assembler
               makes 'Irr' an even number for program memory and an odd number for data memory.

               No flags are affected.

Format:

                              Bytes Cycles                       Opcode  Addr Mode
                                                                  (Hex)  dst src

               opc src | dst                              2  14     F3   Irr              r

Examples:      Given: R0 = 7FH, R6 = 21H, and R7 = 0FFH:

               LDCPI @RR6,R0  ; (RR6  RR6 + 1)
                              ; 7FH (contents of R0) is loaded into program memory
                              ; location 2200H (21FFH + 1H)
                              ; R0 = 7FH, R6 = 22H, R7 = 00H

               LDEPI @RR6,R0  ; (RR6  RR6 + 1)
                              ; 7FH (contents of R0) is loaded into external data memory
                              ; location 2200H (21FFH + 1H)
                              ; R0 = 7FH, R6 = 22H, R7 = 00H

                                                                                          6-57
INSTRUCTION SET                                                                      S3C825A/P825A

LDW -- Load Word

LDW         dst,src

Operation:  dst  src
Flags:      The contents of the source (a word) are loaded into the destination. The contents of the source
            are unaffected.

            No flags are affected.

Format:

                 opc  src         dst       Bytes  Cycles           Opcode           Addr Mode
                                               3                     (Hex)           dst src
                                                       8
                                                       8               C4            RR RR
                                                                       C5            RR IR

                 opc  dst              src  4                    8  C6               RR IML

Examples:   Given: R4 = 06H, R5 = 1CH, R6 = 05H, R7 = 02H, register 00H = 1AH,
            register 01H = 02H, register 02H = 03H, and register 03H = 0FH:

            LDW RR6,RR4                     R6 = 06H, R7 = 1CH, R4 = 06H, R5 = 1CH

            LDW 00H,02H                     Register 00H = 03H, register 01H = 0FH,

                                            register 02H = 03H, register 03H = 0FH

            LDW RR2,@R7                     R2 = 03H, R3 = 0FH,

            LDW 04H,@01H                    Register 04H = 03H, register 05H = 0FH

            LDW       RR6,#1234H            R6 = 12H, R7 = 34H

            LDW       02H,#0FEDH            Register 02H = 0FH, register 03H = 0EDH

            In the second example, please note that the statement "LDW 00H,02H" loads the contents of
            the source word 02H, 03H into the destination word 00H, 01H. This leaves the value 03H in
            general register 00H and the value 0FH in register 01H.

            The other examples show how to use the LDW instruction with various addressing modes and
            formats.

6-58
S3C825A/P825A                                                                INSTRUCTION SET

MULT -- Multiply (Unsigned)

MULT           dst,src

Operation:     dst  dst � src

               The 8-bit destination operand (even register of the register pair) is multiplied by the source
               operand (8 bits) and the product (16 bits) is stored in the register pair specified by the destination
               address. Both operands are treated as unsigned integers.

Flags:         C: Set if result is > 255; cleared otherwise.
               Z: Set if the result is "0"; cleared otherwise.
               S: Set if MSB of the result is a "1"; cleared otherwise.
               V: Cleared.
               D: Unaffected.
               H: Unaffected.

Format:

                                    Bytes Cycles                             Opcode  Addr Mode
                                                                              (Hex)  dst src
               opc      src  dst    3                                    22
                                                                                84   RR R
                                                                         22     85   RR IR
                                                                                86   RR IM
                                                                         22

Examples:      Given: Register 00H = 20H, register 01H = 03H, register 02H = 09H, register 03H = 06H:

               MULT     00H, 02H    Register 00H = 01H, register 01H = 20H, register 02H = 09H
               MULT     00H, @01H   Register 00H = 00H, register 01H = 0C0H
               MULT     00H, #30H   Register 00H = 06H, register 01H = 00H

               In the first example, the statement "MULT 00H,02H" multiplies the 8-bit destination operand (in
               the register 00H of the register pair 00H, 01H) by the source register 02H operand (09H). The
               16-bit product, 0120H, is stored in the register pair 00H, 01H.

                                                                                     6-59
INSTRUCTION SET                                                                                  S3C825A/P825A

NEXT -- Next

NEXT

Operation:  PC  @ IP
Flags:      IP  IP + 2
            The NEXT instruction is useful when implementing threaded-code languages. The program
            memory word that is pointed to by the instruction pointer is loaded into the program counter. The
            instruction pointer is then incremented by two.

            No flags are affected.

Format:                                                     Bytes             Cycles  Opcode
                           opc                                 1                 10    (Hex)

                                                                                         0F

Example:    The following diagram shows one example of how to use the NEXT instruction.

                                Before                                        After

Address           Data                                      Address           Data
        IP                                                          IP
            0043                Address               Data              0045          Address               Data
      PC    0120                                                  PC    0130
                                       43  Address H  01                                     43  Address H
                                       44  Address L  10                                     44  Address L
                                       45  Address H                                         45  Address H

                                120 Next                                              130 Routine
                                          Memory                                                Memory

6-60
S3C825A/P825A                                  INSTRUCTION SET

NOP -- No Operation

NOP            No action is performed when the CPU executes this instruction. Typically, one or more NOPs are
Operation:     executed in sequence in order to effect a timing delay of variable duration.

Flags:         No flags are affected.

Format:                         Bytes  Cycles  Opcode
                           opc     1       4    (Hex)

                                                  FF

Example:       When the instruction

               NOP

               is encountered in a program, no operation occurs. Instead, there is a delay in instruction
               execution time.

                                                                                                           6-61
INSTRUCTION SET                                                                       S3C825A/P825A

OR -- Logical OR

OR          dst,src

Operation:  dst  dst OR src

            The source operand is logically ORed with the destination operand and the result is stored in the
            destination. The contents of the source are unaffected. The OR operation results in a "1" being
            stored whenever either of the corresponding bits in the two operands is a "1"; otherwise a "0" is
            stored.

Flags:      C: Unaffected.
Format:     Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result bit 7 is set; cleared otherwise.
            V: Always cleared to "0".
            D: Unaffected.
            H: Unaffected.

                                     Bytes                            Cycles  Opcode  Addr Mode
                                        2                                      (Hex)  dst src
                                                                          4
                 opc dst | src                                            6      42   r                    r
                                                                                 43
                                                                                      r                    lr

                 opc  src       dst                                3  6       44      R                    R

                                                                      6       45      R                    IR

                 opc  dst       src                                3  6       46      R                IM

Examples:   Given: R0 = 15H, R1 = 2AH, R2 = 01H, register 00H = 08H, register 01H = 37H, and
            register 08H = 8AH:

            OR        R0,R1          R0 = 3FH, R1 = 2AH

            OR        R0,@R2         R0 = 37H, R2 = 01H, register 01H = 37H

            OR        00H,01H        Register 00H = 3FH, register 01H = 37H

            OR        01H,@00H       Register 00H = 08H, register 01H = 0BFH

            OR        00H,#02H       Register 00H = 0AH

            In the first example, if working register R0 contains the value 15H and register R1 the value
            2AH, the statement "OR R0,R1" logical-ORs the R0 and R1 register contents and stores the
            result (3FH) in destination register R0.

            The other examples show the use of the logical OR instruction with the various addressing
            modes and formats.

6-62
S3C825A/P825A                                                    INSTRUCTION SET

POP -- Pop From Stack

POP            dst

Operation:     dst  @SP
Flags:         SP  SP + 1
               The contents of the location addressed by the stack pointer are loaded into the destination. The
               stack pointer is then incremented by one.

               No flags affected.

Format:

                                 Bytes Cycles                    Opcode  Addr Mode
                                                                  (Hex)       dst
                    opc  dst     2  8
                                                                    50         R
                                    8                               51         IR

Examples:      Given: Register 00H = 01H, register 01H = 1BH, SPH (0D8H) = 00H, SPL (0D9H) = 0FBH,
               and stack register 0FBH = 55H:

               POP       00H     Register 00H = 55H, SP = 00FCH
               POP       @00H
                                 Register 00H = 01H, register 01H = 55H, SP = 00FCH

               In the first example, general register 00H contains the value 01H. The statement "POP 00H"
               loads the contents of location 00FBH (55H) into destination register 00H and then increments the
               stack pointer by one. Register 00H then contains the value 55H and the SP points to location
               00FCH.

                                                                                     6-63
INSTRUCTION SET                                                S3C825A/P825A

POPUD -- Pop User Stack (Decrementing)

POPUD       dst,src

Operation:  dst  src
Flags:      IR  IR � 1
            This instruction is used for user-defined stacks in the register file. The contents of the register file
            location addressed by the user stack pointer are loaded into the destination. The user stack
            pointer is then decremented.

            No flags are affected.

Format:

                                        Bytes  Cycles  Opcode  Addr Mode
                                           3       8    (Hex)  dst src

                 opc  src  dst                            92   R  IR

Example:    Given: Register 00H = 42H (user stack pointer register), register 42H = 6FH, and
            register 02H = 70H:

            POPUD 02H,@00H  Register 00H = 41H, register 02H = 6FH, register 42H = 6FH

            If general register 00H contains the value 42H and register 42H the value 6FH, the statement
            "POPUD 02H,@00H" loads the contents of register 42H into the destination register 02H. The
            user stack pointer is then decremented by one, leaving the value 41H.

6-64
S3C825A/P825A                                         INSTRUCTION SET

POPUI -- Pop User Stack (Incrementing)

POPUI          dst,src

Operation:     dst  src
Flags:         IR  IR + 1
               The POPUI instruction is used for user-defined stacks in the register file. The contents of the
               register file location addressed by the user stack pointer are loaded into the destination. The user
               stack pointer is then incremented.

               No flags are affected.

Format:

                                        Bytes Cycles  Opcode  Addr Mode
                                                       (Hex)  dst src

               opc      src  dst        3  8             93   R  IR

Example:       Given: Register 00H = 01H and register 01H = 70H:

               POPUI 02H,@00H  Register 00H = 02H, register 01H = 70H, register 02H = 70H

               If general register 00H contains the value 01H and register 01H the value 70H, the statement
               "POPUI 02H,@00H" loads the value 70H into the destination general register 02H. The user
               stack pointer (register 00H) is then incremented by one, changing its value from 01H to 02H.

                                                                 6-65
INSTRUCTION SET                                                   S3C825A/P825A

PUSH -- Push To Stack

PUSH        src

Operation:  SP  SP � 1
Flags:      @SP  src
            A PUSH instruction decrements the stack pointer value and loads the contents of the source
            (src) into the location addressed by the decremented stack pointer. The operation then adds the
            new value to the top of the stack.

            No flags are affected.

Format:

                 opc  src    Bytes        Cycles        Opcode               Addr Mode
                                2                        (Hex)                    dst
                                    8 (internal clock)
                                    8 (external clock)     70                      R

                                    8 (internal clock)

                                    8 (external clock)  71                             IR

Examples:   Given: Register 40H = 4FH, register 4FH = 0AAH, SPH = 00H, and SPL = 00H:

            PUSH 40H         Register 40H = 4FH, stack register 0FFH = 4FH,

                             SPH = 0FFH, SPL = 0FFH

            PUSH @40H        Register 40H = 4FH, register 4FH = 0AAH, stack register

                             0FFH = 0AAH, SPH = 0FFH, SPL = 0FFH

            In the first example, if the stack pointer contains the value 0000H, and general register 40H the
            value 4FH, the statement "PUSH 40H" decrements the stack pointer from 0000 to 0FFFFH. It
            then loads the contents of register 40H into location 0FFFFH and adds this new value to the top
            of the stack.

6-66
S3C825A/P825A                                                                          INSTRUCTION SET

PUSHUD -- Push User Stack (Decrementing)

PUSHUD         dst,src

Operation:     IR  IR � 1
Flags:         dst  src
               This instruction is used to address user-defined stacks in the register file. PUSHUD decrements
               the user stack pointer and loads the contents of the source into the register addressed by the
               decremented stack pointer.

               No flags are affected.

Format:

                                          Bytes Cycles  Opcode                         Addr Mode
                                                         (Hex)                         dst src

               opc      dst  src          3  8             82                          IR  R

Example:       Given: Register 00H = 03H, register 01H = 05H, and register 02H = 1AH:

               PUSHUD @00H,01H    Register 00H = 02H, register 01H = 05H, register 02H = 05H

               If the user stack pointer (register 00H, for example) contains the value 03H, the statement
               "PUSHUD @00H,01H" decrements the user stack pointer by one, leaving the value 02H. The
               01H register value, 05H, is then loaded into the register addressed by the decremented user
               stack pointer.

                                                                                           6-67
INSTRUCTION SET                                                                     S3C825A/P825A

PUSHUI -- Push User Stack (Incrementing)

PUSHUI      dst,src

Operation:  IR  IR + 1
Flags:      dst  src
            This instruction is used for user-defined stacks in the register file. PUSHUI increments the user
            stack pointer and then loads the contents of the source into the register location addressed by
            the incremented user stack pointer.

            No flags are affected.

Format:

                                          Bytes  Cycles  Opcode                     Addr Mode
                                             3       8    (Hex)                     dst src

                 opc  dst  src                              83                      IR  R

Example:    Given: Register 00H = 03H, register 01H = 05H, and register 04H = 2AH:

            PUSHUI @00H,01H     Register 00H = 04H, register 01H = 05H, register 04H = 05H

            If the user stack pointer (register 00H, for example) contains the value 03H, the statement
            "PUSHUI @00H,01H" increments the user stack pointer by one, leaving the value 04H. The 01H
            register value, 05H, is then loaded into the location addressed by the incremented user stack
            pointer.

6-68
S3C825A/P825A                                                                              INSTRUCTION SET

RCF -- Reset Carry Flag

RCF            RCF

Operation:     C0
Flags:         The carry flag is cleared to logic zero, regardless of its previous value.
               C: Cleared to "0".
               No other flags are affected.

Format:                         Bytes                                        Cycles        Opcode
                           opc     1                                             4          (Hex)

                                                                                              CF

Example:       Given: C = "1" or "0":
               The instruction RCF clears the carry flag (C) to logic zero.

                                                                                                   6-69
INSTRUCTION SET                                                                   S3C825A/P825A

RET -- Return

RET

Operation:  PC  @SP
Flags:
            SP  SP + 2
            The RET instruction is normally used to return to the previously executing procedure at the end
            of a procedure entered by a CALL instruction. The contents of the location addressed by the
            stack pointer are popped into the program counter. The next statement that is executed is the
            one that is addressed by the new program counter value.

            No flags are affected.

Format:                           Bytes                             Cycles        Opcode (Hex)
                           opc       1                       8 (internal stack)          AF
                                                             10 (internal stack)

Example:    Given: SP = 00FCH, (SP) = 101AH, and PC = 1234:

            RET                   PC = 101AH, SP = 00FEH

            The statement "RET" pops the contents of stack pointer location 00FCH (10H) into the high byte
            of the program counter. The stack pointer then pops the value in location 00FEH (1AH) into the
            PC's low byte and the instruction at location 101AH is executed. The stack pointer now points to
            memory location 00FEH.

6-70
S3C825A/P825A                                                                                     INSTRUCTION SET

RL -- Rotate Left

RL             dst

Operation:     C  dst (7)

               dst (0)  dst (7)
               dst (n + 1)  dst (n), n = 0�6
               The contents of the destination operand are rotated left one bit position. The initial value of bit 7
               is moved to the bit zero (LSB) position and also replaces the carry flag.

                                        7     0

                                   C

Flags:         C: Set if the bit rotated from the most significant bit position (bit 7) was "1".
Format:        Z: Set if the result is "0"; cleared otherwise.
               S: Set if the result bit 7 is set; cleared otherwise.
               V: Set if arithmetic overflow occurred; cleared otherwise.
               D: Unaffected.
               H: Unaffected.

                                           Bytes Cycles              Opcode                       Addr Mode
                                                                      (Hex)                            dst
                    opc       dst          2     4
                                                                        90                              R
                                                 4                      91                              IR

Examples:      Given: Register 00H = 0AAH, register 01H = 02H and register 02H = 17H:

               RL        00H            Register 00H = 55H, C = "1"

               RL        @01H           Register 01H = 02H, register 02H = 2EH, C = "0"

               In the first example, if general register 00H contains the value 0AAH (10101010B), the statement
               "RL 00H" rotates the 0AAH value left one bit position, leaving the new value 55H (01010101B)
               and setting the carry and overflow flags.

                                                                                                  6-71
INSTRUCTION SET                                                        S3C825A/P825A

RLC -- Rotate Left Through Carry

RLC         dst

Operation:  dst (0)  C

            C  dst (7)
            dst (n + 1)  dst (n), n = 0�6
            The contents of the destination operand with the carry flag are rotated left one bit position. The
            initial value of bit 7 replaces the carry flag (C); the initial value of the carry flag replaces bit zero.

                                  7         0

                            C

Flags:      C: Set if the bit rotated from the most significant bit position (bit 7) was "1".
Format:     Z: Set if the result is "0"; cleared otherwise.
            S: Set if the result bit 7 is set; cleared otherwise.
            V: Set if arithmetic overflow occurred, that is, if the sign of the destination changed during

                 rotation; cleared otherwise.
            D: Unaffected.
            H: Unaffected.

                 opc  dst            Bytes     Cycles          Opcode  Addr Mode
                                        2                       (Hex)       dst
                                                   4
                                                   4              10         R
                                                                  11         IR

Examples:   Given: Register 00H = 0AAH, register 01H = 02H, and register 02H = 17H, C = "0":

            RLC       00H         Register 00H = 54H, C = "1"
            RLC       @01H
                                  Register 01H = 02H, register 02H = 2EH, C = "0"

            In the first example, if general register 00H has the value 0AAH (10101010B), the statement
            "RLC 00H" rotates 0AAH one bit position to the left. The initial value of bit 7 sets the carry flag
            and the initial value of the C flag replaces bit zero of register 00H, leaving the value 55H
            (01010101B). The MSB of register 00H resets the carry flag to "1" and sets the overflow flag.

6-72
S3C825A/P825A                                                                          INSTRUCTION SET

RR -- Rotate Right

RR             dst

Operation:     C  dst (0)

               dst (7)  dst (0)
               dst (n)  dst (n + 1), n = 0�6
               The contents of the destination operand are rotated right one bit position. The initial value of bit
               zero (LSB) is moved to bit 7 (MSB) and also replaces the carry flag (C).

                                        7     0

                                   C

Flags:         C: Set if the bit rotated from the least significant bit position (bit zero) was "1".
Format:        Z: Set if the result is "0"; cleared otherwise.
               S: Set if the result bit 7 is set; cleared otherwise.
               V: Set if arithmetic overflow occurred, that is, if the sign of the destination changed during

                    rotation; cleared otherwise.
               D: Unaffected.
               H: Unaffected.

                                           Bytes Cycles              Opcode            Addr Mode
                                                                      (Hex)                 dst
                    opc       dst          2     4
                                                                        E0                   R
                                                 4                      E1                   IR

Examples:      Given: Register 00H = 31H, register 01H = 02H, and register 02H = 17H:

               RR        00H            Register 00H = 98H, C = "1"

               RR        @01H           Register 01H = 02H, register 02H = 8BH, C = "1"

               In the first example, if general register 00H contains the value 31H (00110001B), the statement
               "RR 00H" rotates this value one bit position to the right. The initial value of bit zero is moved to
               bit 7, leaving the new value 98H (10011000B) in the destination register. The initial bit zero also
               resets the C flag to "1" and the sign flag and overflow flag are also set to "1".

                                                                                                               6-73
INSTRUCTION SET                                                         S3C825A/P825A

RRC -- Rotate Right Through Carry

RRC         dst

Operation:  dst (7)  C

            C  dst (0)

            dst (n)  dst (n + 1), n = 0�6

            The contents of the destination operand and the carry flag are rotated right one bit position. The
            initial value of bit zero (LSB) replaces the carry flag; the initial value of the carry flag replaces bit
            7 (MSB).

                                   7         0

                            C

Flags:      C: Set if the bit rotated from the least significant bit position (bit zero) was "1".
Format:     Z: Set if the result is "0" cleared otherwise.
            S: Set if the result bit 7 is set; cleared otherwise.
            V: Set if arithmetic overflow occurred, that is, if the sign of the destination changed during

                 rotation; cleared otherwise.
            D: Unaffected.