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

型号

产品描述

搜索

MC9S08GB60CFUER

器件型号:MC9S08GB60CFUER
器件类别:半导体    嵌入式处理器和控制器   
文件大小:13461.05KB,共290页
厂商名称:FREESCALE (NXP )
标准:  
下载文档

器件描述

IC mcu 8bit 60kb flash 64lqfp

参数

Datasheets:
MC9S08GB,GT60,32,16:
Product Photos:
64-LQFP :
Standard Package : 1,500
Category: Integrated Circuits (ICs)
Family: Embedded - Microcontrollers
Series: S08
Packaging : Tape & Reel (TR)
Core Processor: S08
Core Size: 8-Bit
Speed: 40MHz
Connectivity: I²C, SCI, SPI
Peripherals: LVD, POR, PWM, WDT
Number of I/O: 56
Program Memory Size: 60KB (60K x 8)
Program Memory Type: FLASH
EEPROM Size: -
RAM Size: 4K x 8
Voltage - Supply (Vcc/Vdd): 1.8 V ~ 3.6 V
Data Converters: A/D 8x10b
Oscillator Type: Internal
Operating Temperature: -40°C ~ 85°C
Package / Case: 64-LQFP
Supplier Device Package: 64-LQFP (10x10)
For Use With: M68DEMO908GB60E-ND - BOARD DEMO MC9S08GB60M68EVB908GB60E-ND - BOARD EVAL FOR MC9S08GB60

MC9S08GB60CFUER器件文档内容

MC9S08GB60
MC9S08GB32
MC9S08GT60
MC9S08GT32
MC9S08GT16

Data Sheet

HCS08
Microcontrollers

  MC9S08GB60/D
  Rev. 2.3
  12/2004

  freescale.com
MC9S08GB/GT Data Sheet

                Covers: MC9S08GB60
                            MC9S08GB32
                            MC9S08GT60
                            MC9S08GT32
                            MC9S08GT16

                                                        MC9S08GB60
                                                                Rev. 2.3
                                                                12/2004
Revision History

To provide the most up-to-date information, the revision of our documents on the World Wide Web will
be the most current. Your printed copy may be an earlier revision. To verify you have the latest information
available, refer to:

http://freescale.com

The following revision history table summarizes changes contained in this document.

   Revision  Revision                                           Description of Changes
   Number       Date
                         Initial release
       1.0   4/25/2003
       1.1               Electricals change, appendix A only
       1.2   10/2/2003
       1.3   10/29/2003  Electricals change, appendix A only
       1.4   11/12/2003
       1.5               Added module version table; clarifications
             2/10/2004
         2               Fixed typos and made corrections and clarifications
              9/2/2004
       2.2               Added 1-MHz IDD values to Electricals, appendix A
             12/01/2004  Changed format of register names to enable reuse of code (from SCIBD to SCI1BD, even when
       2.3               only one instance of a module on a chip)
                         Added new device: MC9S08GT16 to book. Added new 48-pin QFN package to book. BKGDPE
                         description in Section 5 -- changed PTD0 to PTG0. Changed typo in CPU section that listed
                         MOV instruction as being 6 cycles instead of 5 (Table 8-2).

                         Format to Freescale look-and-feel; Clarified RTI clock sources and other changes in Chapter 5;
                         updated ICG initialization examples; expanded descriptions of LOLS and LOCS bits in ICGS1;
                         updated ICG electricals Table A-9 and added a figure

                         Minor changes to Table 7-4, Table 7-5, Table A-9;
                         Clarifications in Section 11.10.6, "SCI x Control Register 3 (SCIxC3)", Section 11.7, "Interrupts
                         and Status Flags", Section 11.8.1, "8- and 9-Bit Data Modes", PTG availability in 48-pin
                         package (see Table 2-2)

This product incorporates SuperFlash technology licensed from SST.

Freescale, and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
Freescale Semiconductor, Inc., 2004. All rights reserved.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

4                                                                                  Freescale Semiconductor
List of Chapters

Chapter 1   Introduction.............................................................................. 17
Chapter 2   Pins and Connections ............................................................. 23
Chapter 3   Modes of Operation ................................................................. 33
Chapter 4   Memory ..................................................................................... 39
Chapter 5   Resets, Interrupts, and System Configuration ..................... 61
Chapter 6   Parallel Input/Output ............................................................... 77
Chapter 7   Internal Clock Generator (ICG) Module ................................. 97
Chapter 8   Central Processor Unit (CPU)............................................... 125
Chapter 9   Keyboard Interrupt (KBI) Module ......................................... 145
Chapter 10  Timer/PWM (TPM) Module..................................................... 151
Chapter 11  Serial Communications Interface (SCI) Module.................. 167
Chapter 12  Serial Peripheral Interface (SPI) Module.............................. 187
Chapter 13  Inter-Integrated Circuit (IIC) Module .................................... 203
Chapter 14  Analog-to-Digital Converter (ATD) Module ......................... 219
Chapter 15  Development Support ........................................................... 235
Appendix A  Electrical Characteristics...................................................... 259
Appendix B  Ordering Information and Mechanical Drawings................ 281

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    5
Section Number           Contents                          Page

                              Title

                                               Chapter 1
                                             Introduction

1.1 Overview .........................................................................................................................................17
1.2 Features ...........................................................................................................................................17

         1.2.1 Standard Features of the HCS08 Family .........................................................................17
         1.2.2 Features of MC9S08GB/GT Series of MCUs .................................................................17
         1.2.3 Devices in the MC9S08GB/GT Series ............................................................................18
1.3 MCU Block Diagrams .....................................................................................................................19
1.4 System Clock Distribution ..............................................................................................................21

                                               Chapter 2
                                      Pins and Connections

2.1 Introduction .....................................................................................................................................23
2.2 Device Pin Assignment ...................................................................................................................23
2.3 Recommended System Connections ...............................................................................................26

         2.3.1 Power ...............................................................................................................................28
         2.3.2 Oscillator ..........................................................................................................................28
         2.3.3 Reset ................................................................................................................................28
         2.3.4 Background / Mode Select (PTG0/BKGD/MS) ..............................................................29
         2.3.5 General-Purpose I/O and Peripheral Ports .......................................................................29
         2.3.6 Signal Properties Summary .............................................................................................31

                                               Chapter 3
                                        Modes of Operation

3.1 Introduction .....................................................................................................................................33
3.2 Features ...........................................................................................................................................33
3.3 Run Mode ........................................................................................................................................33
3.4 Active Background Mode ................................................................................................................33
3.5 Wait Mode .......................................................................................................................................34
3.6 Stop Modes ......................................................................................................................................34

         3.6.1 Stop1 Mode ......................................................................................................................35
         3.6.2 Stop2 Mode ......................................................................................................................35
         3.6.3 Stop3 Mode ......................................................................................................................36
         3.6.4 Active BDM Enabled in Stop Mode ................................................................................36
         3.6.5 LVD Enabled in Stop Mode .............................................................................................37
         3.6.6 On-Chip Peripheral Modules in Stop Modes ...................................................................37

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    7
Section Number  Title                             Page

                                               Chapter 4
                                                Memory

4.1 MC9S08GB/GT Memory Map .......................................................................................................39
         4.1.1 Reset and Interrupt Vector Assignments ..........................................................................39

4.2 Register Addresses and Bit Assignments ........................................................................................41
4.3 RAM ................................................................................................................................................46
4.4 FLASH ............................................................................................................................................46

         4.4.1 Features ............................................................................................................................47
         4.4.2 Program and Erase Times ................................................................................................47
         4.4.3 Program and Erase Command Execution ........................................................................48
         4.4.4 Burst Program Execution .................................................................................................49
         4.4.5 Access Errors ...................................................................................................................50
         4.4.6 FLASH Block Protection .................................................................................................51
         4.4.7 Vector Redirection ...........................................................................................................52
4.5 Security ............................................................................................................................................52
4.6 FLASH Registers and Control Bits .................................................................................................53
         4.6.1 FLASH Clock Divider Register (FCDIV) .......................................................................54
         4.6.2 FLASH Options Register (FOPT and NVOPT) ..............................................................55
         4.6.3 FLASH Configuration Register (FCNFG) .......................................................................56
         4.6.4 FLASH Protection Register (FPROT and NVPROT) ......................................................56
         4.6.5 FLASH Status Register (FSTAT) .....................................................................................58
         4.6.6 FLASH Command Register (FCMD) ..............................................................................59

                                               Chapter 5
                     Resets, Interrupts, and System Configuration

5.1 Introduction .....................................................................................................................................61
5.2 Features ...........................................................................................................................................61
5.3 MCU Reset ......................................................................................................................................61
5.4 Computer Operating Properly (COP) Watchdog .............................................................................62
5.5 Interrupts .........................................................................................................................................62

         5.5.1 Interrupt Stack Frame ......................................................................................................63
         5.5.2 External Interrupt Request (IRQ) Pin ..............................................................................64

                   5.5.2.1 Pin Configuration Options ..............................................................................64
                   5.5.2.2 Edge and Level Sensitivity ..............................................................................65
         5.5.3 Interrupt Vectors, Sources, and Local Masks ..................................................................65
5.6 Low-Voltage Detect (LVD) System ................................................................................................67
         5.6.1 Power-On Reset Operation ..............................................................................................67
         5.6.2 LVD Reset Operation .......................................................................................................67
         5.6.3 LVD Interrupt Operation .................................................................................................67
         5.6.4 Low-Voltage Warning (LVW) ..........................................................................................67
5.7 Real-Time Interrupt (RTI) ...............................................................................................................67

                MC9S08GB/GT Data Sheet, Rev. 2.3

8                                                 Freescale Semiconductor
Section Number           Title                             Page

5.8 Reset, Interrupt, and System Control Registers and Control Bits ...................................................68
         5.8.1 Interrupt Pin Request Status and Control Register (IRQSC) ...........................................68
         5.8.2 System Reset Status Register (SRS) ................................................................................69
         5.8.3 System Background Debug Force Reset Register (SBDFR) ...........................................71
         5.8.4 System Options Register (SOPT) ....................................................................................71
         5.8.5 System Device Identification Register (SDIDH, SDIDL) ...............................................72
         5.8.6 System Real-Time Interrupt Status and Control Register (SRTISC) ...............................73
         5.8.7 System Power Management Status and Control 1 Register (SPMSC1) ..........................74
         5.8.8 System Power Management Status and Control 2 Register (SPMSC2) ..........................75

                                               Chapter 6
                                       Parallel Input/Output

6.1 Introduction .....................................................................................................................................77
6.2 Features ...........................................................................................................................................79
6.3 Pin Descriptions ..............................................................................................................................79

         6.3.1 Port A and Keyboard Interrupts .......................................................................................79
         6.3.2 Port B and Analog to Digital Converter Inputs ...............................................................80
         6.3.3 Port C and SCI2, IIC, and High-Current Drivers ............................................................80
         6.3.4 Port D, TPM1 and TPM2 .................................................................................................81
         6.3.5 Port E, SCI1, and SPI ......................................................................................................81
         6.3.6 Port F and High-Current Drivers .....................................................................................82
         6.3.7 Port G, BKGD/MS, and Oscillator ..................................................................................82
6.4 Parallel I/O Controls ........................................................................................................................82
         6.4.1 Data Direction Control ....................................................................................................83
         6.4.2 Internal Pullup Control ....................................................................................................83
         6.4.3 Slew Rate Control ............................................................................................................83
6.5 Stop Modes ......................................................................................................................................84
6.6 Parallel I/O Registers and Control Bits ...........................................................................................84
         6.6.1 Port A Registers (PTAD, PTAPE, PTASE, and PTADD) ................................................84
         6.6.2 Port B Registers (PTBD, PTBPE, PTBSE, and PTBDD) ...............................................86
         6.6.3 Port C Registers (PTCD, PTCPE, PTCSE, and PTCDD) ...............................................87
         6.6.4 Port D Registers (PTDD, PTDPE, PTDSE, and PTDDD) ..............................................89
         6.6.5 Port E Registers (PTED, PTEPE, PTESE, and PTEDD) ................................................90
         6.6.6 Port F Registers (PTFD, PTFPE, PTFSE, and PTFDD) ..................................................92
         6.6.7 Port G Registers (PTGD, PTGPE, PTGSE, and PTGDD) ..............................................93

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    9
Section Number  Title                             Page

                                               Chapter 7
                           Internal Clock Generator (ICG) Module

7.1 Introduction .....................................................................................................................................99
         7.1.1 Features ..........................................................................................................................100
         7.1.2 Modes of Operation .......................................................................................................101

7.2 External Signal Description ..........................................................................................................101
         7.2.1 Overview ........................................................................................................................101
         7.2.2 Detailed Signal Descriptions .........................................................................................102
                   7.2.2.1 EXTAL-- External Reference Clock / Oscillator Input ...............................102
                   7.2.2.2 XTAL-- Oscillator Output ...........................................................................102
         7.2.3 External Clock Connections ..........................................................................................102
         7.2.4 External Crystal/Resonator Connections .......................................................................102

7.3 Functional Description ..................................................................................................................103
         7.3.1 Off Mode (Off) ..............................................................................................................103
                    7.3.1.1 BDM Active .................................................................................................103
                    7.3.1.2 OSCSTEN Bit Set .........................................................................................103
                    7.3.1.3 Stop/Off Mode Recovery ..............................................................................104
         7.3.2 Self-Clocked Mode (SCM) ............................................................................................104
         7.3.3 FLL Engaged, Internal Clock (FEI) Mode ....................................................................105
                    7.3.3.1 FLL Engaged Internal Unlocked ..................................................................105
                    7.3.3.2 FLL Engaged Internal Locked ......................................................................106
         7.3.4 FLL Bypassed, External Clock (FBE) Mode ................................................................106
         7.3.5 FLL Engaged, External Clock (FEE) Mode ..................................................................106
                    7.3.5.1 FLL Engaged External Unlocked .................................................................106
                    7.3.5.2 FLL Engaged External Locked .....................................................................107
         7.3.6 FLL Lock and Loss-of-Lock Detection .........................................................................107
         7.3.7 FLL Loss-of-Clock Detection ........................................................................................107
         7.3.8 Clock Mode Requirements ............................................................................................108
         7.3.9 Fixed Frequency Clock ..................................................................................................109

7.4 Initialization/Application Information ..........................................................................................110
         7.4.1 Introduction ....................................................................................................................110
         7.4.2 Example #1: External Crystal = 32 kHz, Bus Frequency = 4.19 MHz .........................112
         7.4.3 Example #2: External Crystal = 4 MHz, Bus Frequency = 20 MHz ............................113
         7.4.4 Example #3: No External Crystal Connection, 5.4 MHz Bus Frequency .....................114
         7.4.5 Example #4: Internal Clock Generator Trim .................................................................116

7.5 ICG Registers and Control Bits .....................................................................................................117
         7.5.1 ICG Control Register 1 (ICGC1) ......................................................................118
         7.5.2 ICG Control Register 2 (ICGC2) ......................................................................119
         7.5.3 ICG Status Register 1 (ICGS1) .................................................................................120
         7.5.4 ICG Status Register 2 (ICGS2) ........................................................................122
         7.5.5 ICG Filter Registers (ICGFLTU, ICGFLTL) .......................................................122
         7.5.6 ICG Trim Register (ICGTRM) ...........................................................................123

                MC9S08GB/GT Data Sheet, Rev. 2.3

10                                                Freescale Semiconductor
Section Number           Title                             Page

                                               Chapter 8
                                 Central Processor Unit (CPU)

8.1 Introduction ...................................................................................................................................125
8.2 Features .........................................................................................................................................126
8.3 Programmer's Model and CPU Registers .....................................................................................126

         8.3.1 Accumulator (A) ............................................................................................................127
         8.3.2 Index Register (H:X) .....................................................................................................127
         8.3.3 Stack Pointer (SP) ..........................................................................................................128
         8.3.4 Program Counter (PC) ...................................................................................................128
         8.3.5 Condition Code Register (CCR) ....................................................................................128
8.4 Addressing Modes .........................................................................................................................130
         8.4.1 Inherent Addressing Mode (INH) ..................................................................................130
         8.4.2 Relative Addressing Mode (REL) .................................................................................130
         8.4.3 Immediate Addressing Mode (IMM) .............................................................................130
         8.4.4 Direct Addressing Mode (DIR) .....................................................................................130
         8.4.5 Extended Addressing Mode (EXT) ...............................................................................131
         8.4.6 Indexed Addressing Mode .............................................................................................131

                   8.4.6.1 Indexed, No Offset (IX) ................................................................................131
                   8.4.6.2 Indexed, No Offset with Post Increment (IX+) .............................................131
                   8.4.6.3 Indexed, 8-Bit Offset (IX1) ...........................................................................131
                   8.4.6.4 Indexed, 8-Bit Offset with Post Increment (IX1+) .......................................131
                   8.4.6.5 Indexed, 16-Bit Offset (IX2) .........................................................................131
                   8.4.6.6 SP-Relative, 8-Bit Offset (SP1) ....................................................................131
                   8.4.6.7 SP-Relative, 16-Bit Offset (SP2) ..................................................................132
8.5 Special Operations .........................................................................................................................132
         8.5.1 Reset Sequence ..............................................................................................................132
         8.5.2 Interrupt Sequence .........................................................................................................132
         8.5.3 Wait Mode Operation .....................................................................................................133
         8.5.4 Stop Mode Operation .....................................................................................................133
         8.5.5 BGND Instruction ..........................................................................................................134
8.6 HCS08 Instruction Set Summary ..................................................................................................134

                                               Chapter 9
                               Keyboard Interrupt (KBI) Module

9.1 Introduction ...................................................................................................................................145
         9.1.1 Port A and Keyboard Interrupt Pins ..............................................................................145

9.2 Features .........................................................................................................................................145
9.3 KBI Block Diagram ......................................................................................................................147
9.4 Keyboard Interrupt (KBI) Module ................................................................................................147

         9.4.1 Pin Enables ....................................................................................................................147
         9.4.2 Edge and Level Sensitivity ............................................................................................147
         9.4.3 KBI Interrupt Controls ...................................................................................................148
9.5 KBI Registers and Control Bits .....................................................................................................148
         9.5.1 KBI Status and Control Register (KBI1SC) ..................................................................148
         9.5.2 KBI Pin Enable Register (KBI1PE) ..............................................................................150

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    11
Section Number  Title                             Page

                                              Chapter 10
                                   Timer/PWM (TPM) Module

10.1 Introduction ...................................................................................................................................151
10.2 Features .........................................................................................................................................151
10.3 TPM Block Diagram .....................................................................................................................153
10.4 Pin Descriptions ............................................................................................................................154

         10.4.1 External TPM Clock Sources ........................................................................................154
         10.4.2 TPMxCHn -- TPMx Channel n I/O Pins ......................................................................154
10.5 Functional Description ..................................................................................................................154
         10.5.1 Counter ..........................................................................................................................155
         10.5.2 Channel Mode Selection ................................................................................................156

                   10.5.2.1 Input Capture Mode ......................................................................................156
                   10.5.2.2 Output Compare Mode .................................................................................156
                   10.5.2.3 Edge-Aligned PWM Mode ...........................................................................156
         10.5.3 Center-Aligned PWM Mode ..........................................................................................157
10.6 TPM Interrupts ..............................................................................................................................159
         10.6.1 Clearing Timer Interrupt Flags ......................................................................................159
         10.6.2 Timer Overflow Interrupt Description ...........................................................................159
         10.6.3 Channel Event Interrupt Description .............................................................................159
         10.6.4 PWM End-of-Duty-Cycle Events ..................................................................................160
10.7 TPM Registers and Control Bits ...................................................................................................160
         10.7.1 Timer x Status and Control Register (TPMxSC) ...........................................................160
         10.7.2 Timer x Counter Registers (TPMxCNTH:TPMxCNTL) ..............................................162
         10.7.3 Timer x Counter Modulo Registers (TPMxMODH:TPMxMODL) ..............................163
         10.7.4 Timer x Channel n Status and Control Register (TPMxCnSC) .....................................163
         10.7.5 Timer x Channel Value Registers (TPMxCnVH:TPMxCnVL) .....................................165

                                              Chapter 11
                     Serial Communications Interface (SCI) Module

11.1 Introduction ...................................................................................................................................167
11.2 Features .........................................................................................................................................169
11.3 SCI System Description ................................................................................................................169
11.4 Baud Rate Generation ...................................................................................................................169
11.5 Transmitter Functional Description ...............................................................................................170

         11.5.1 Transmitter Block Diagram ...........................................................................................170
         11.5.2 Send Break and Queued Idle .........................................................................................172
11.6 Receiver Functional Description ...................................................................................................172
         11.6.1 Receiver Block Diagram ................................................................................................172
         11.6.2 Data Sampling Technique ..............................................................................................174
         11.6.3 Receiver Wakeup Operation ..........................................................................................174

                   11.6.3.1 Idle-Line Wakeup ..........................................................................................175
                   11.6.3.2 Address-Mark Wakeup .................................................................................175
11.7 Interrupts and Status Flags ............................................................................................................175

                MC9S08GB/GT Data Sheet, Rev. 2.3

12                                                Freescale Semiconductor
Section Number           Title                             Page

11.8 Additional SCI Functions ..............................................................................................................176
         11.8.1 8- and 9-Bit Data Modes ................................................................................................176

11.9 Stop Mode Operation ....................................................................................................................176
         11.9.1 Loop Mode .....................................................................................................................177
         11.9.2 Single-Wire Operation ...................................................................................................177

11.10 SCI Registers and Control Bits .....................................................................................................177
         11.10.1 SCI x Baud Rate Registers (SCIxBDH, SCIxBDL) ......................................................177
         11.10.2 SCI x Control Register 1 (SCIxC1) ...............................................................................178
         11.10.3 SCI x Control Register 2 (SCIxC2) ...............................................................................180
         11.10.4 SCI x Status Register 1 (SCIxS1) ..................................................................................181
         11.10.5 SCI x Status Register 2 (SCIxS2) ..................................................................................183
         11.10.6 SCI x Control Register 3 (SCIxC3) ...............................................................................184
         11.10.7 SCI x Data Register (SCIxD) ........................................................................................185

                                              Chapter 12
                          Serial Peripheral Interface (SPI) Module

12.1 Features .........................................................................................................................................189
12.2 Block Diagrams .............................................................................................................................189

         12.2.1 SPI System Block Diagram ...........................................................................................189
         12.2.2 SPI Module Block Diagram ...........................................................................................190
         12.2.3 SPI Baud Rate Generation .............................................................................................192
12.3 Functional Description ..................................................................................................................192
         12.3.1 SPI Clock Formats .........................................................................................................193
         12.3.2 SPI Pin Controls ............................................................................................................195

                    12.3.2.1 SPSCK1 -- SPI Serial Clock ........................................................................195
                    12.3.2.2 MOSI1 -- Master Data Out, Slave Data In ..................................................195
                    12.3.2.3 MISO1 -- Master Data In, Slave Data Out ..................................................195
                    12.3.2.4 SS1 -- Slave Select .......................................................................................195
         12.3.3 SPI Interrupts .................................................................................................................196
         12.3.4 Mode Fault Detection ....................................................................................................196
12.4 SPI Registers and Control Bits ......................................................................................................196
         12.4.1 SPI Control Register 1 (SPI1C1) ...................................................................................197
         12.4.2 SPI Control Register 2 (SPI1C2) ...................................................................................198
         12.4.3 SPI Baud Rate Register (SPI1BR) .................................................................................199
         12.4.4 SPI Status Register (SPI1S) ...........................................................................................201
         12.4.5 SPI Data Register (SPI1D) ............................................................................................202

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    13
Section Number  Title                             Page

                                              Chapter 13
                             Inter-Integrated Circuit (IIC) Module

13.1 Introduction ...................................................................................................................................205
         13.1.1 Features ..........................................................................................................................205
         13.1.2 Modes of Operation .......................................................................................................205
         13.1.3 Block Diagram ...............................................................................................................206
         13.1.4 Detailed Signal Descriptions .........................................................................................206
                   13.1.4.1 SCL1 -- Serial Clock Line ...........................................................................206
                   13.1.4.2 SDA1 -- Serial Data Line ............................................................................206

13.2 Functional Description ..................................................................................................................207
         13.2.1 IIC Protocol ...................................................................................................................207
                    13.2.1.1 START Signal ...............................................................................................208
                    13.2.1.2 Slave Address Transmission .........................................................................208
                    13.2.1.3 Data Transfer .................................................................................................208
                    13.2.1.4 STOP Signal ..................................................................................................209
                    13.2.1.5 Repeated START Signal ...............................................................................209
                    13.2.1.6 Arbitration Procedure ....................................................................................209
                    13.2.1.7 Clock Synchronization ..................................................................................209
                    13.2.1.8 Handshaking .................................................................................................210
                    13.2.1.9 Clock Stretching ............................................................................................210

13.3 Resets ............................................................................................................................................210
13.4 Interrupts .......................................................................................................................................211

         13.4.1 Byte Transfer Interrupt ..................................................................................................211
         13.4.2 Address Detect Interrupt ................................................................................................211
         13.4.3 Arbitration Lost Interrupt ..............................................................................................211
13.5 IIC Registers and Control Bits ......................................................................................................212
         13.5.1 IIC Address Register (IIC1A) ........................................................................................212
         13.5.2 IIC Frequency Divider Register (IIC1F) ........................................................................212
         13.5.3 IIC Control Register (IIC1C) .........................................................................................215
         13.5.4 IIC Status Register (IIC1S) ............................................................................................216
         13.5.5 IIC Data I/O Register (IIC1D) .......................................................................................217

                                              Chapter 14
                        Analog-to-Digital Converter (ATD) Module

14.1 Introduction ...................................................................................................................................221
         14.1.1 Features ..........................................................................................................................221
         14.1.2 Modes of Operation .......................................................................................................221
                    14.1.2.1 Stop Mode .....................................................................................................221
                    14.1.2.2 Power Down Mode .......................................................................................221
         14.1.3 Block Diagram ...............................................................................................................221

14.2 Signal Description .........................................................................................................................222
         14.2.1 Overview ........................................................................................................................222
                    14.2.1.1 Channel Input Pins -- AD1P7AD1P0 ........................................................223

                MC9S08GB/GT Data Sheet, Rev. 2.3

14                                                Freescale Semiconductor
Section Number           Title                             Page

                   14.2.1.2 ATD Reference Pins -- VREFH, VREFL ........................................................223
                    14.2.1.3 ATD Supply Pins -- VDDAD, VSSAD ...........................................................223
14.3 Functional Description ..................................................................................................................223
         14.3.1 Mode Control .................................................................................................................223
         14.3.2 Sample and Hold ............................................................................................................224
         14.3.3 Analog Input Multiplexer ..............................................................................................226
         14.3.4 ATD Module Accuracy Definitions ...............................................................................226
14.4 Resets ............................................................................................................................................229
14.5 Interrupts .......................................................................................................................................229
14.6 ATD Registers and Control Bits ....................................................................................................229
         14.6.1 ATD Control (ATDC) ....................................................................................................230
         14.6.2 ATD Status and Control (ATD1SC) ..............................................................................232
         14.6.3 ATD Result Data (ATD1RH, ATD1RL) ........................................................................234
         14.6.4 ATD Pin Enable (ATD1PE) ...........................................................................................234

                                              Chapter 15
                                      Development Support

15.1 Introduction ...................................................................................................................................235
15.2 Features .........................................................................................................................................236
15.3 Background Debug Controller (BDC) ..........................................................................................237

         15.3.1 BKGD Pin Description ..................................................................................................237
         15.3.2 Communication Details .................................................................................................238
         15.3.3 BDC Commands ............................................................................................................242
         15.3.4 BDC Hardware Breakpoint ............................................................................................244
15.4 On-Chip Debug System (DBG) ....................................................................................................245
         15.4.1 Comparators A and B ....................................................................................................245
         15.4.2 Bus Capture Information and FIFO Operation ..............................................................245
         15.4.3 Change-of-Flow Information .........................................................................................246
         15.4.4 Tag vs. Force Breakpoints and Triggers ........................................................................246
         15.4.5 Trigger Modes ................................................................................................................247
         15.4.6 Hardware Breakpoints ...................................................................................................249
15.5 Registers and Control Bits .............................................................................................................249
         15.5.1 BDC Registers and Control Bits ....................................................................................249

                   15.5.1.1 BDC Status and Control Register (BDCSCR) ..............................................250
                   15.5.1.2 BDC Breakpoint Match Register (BDCBKPT) ............................................251
         15.5.2 System Background Debug Force Reset Register (SBDFR) .........................................251
         15.5.3 DBG Registers and Control Bits ....................................................................................252
                   15.5.3.1 Debug Comparator A High Register (DBGCAH) ........................................252
                   15.5.3.2 Debug Comparator A Low Register (DBGCAL) .........................................252
                   15.5.3.3 Debug Comparator B High Register (DBGCBH) .........................................252
                   15.5.3.4 Debug Comparator B Low Register (DBGCBL) ..........................................252

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    15
Section Number  Title                             Page

                   15.5.3.5 Debug FIFO High Register (DBGFH) ..........................................................253
                   15.5.3.6 Debug FIFO Low Register (DBGFL) ...........................................................253
                   15.5.3.7 Debug Control Register (DBGC) ..................................................................254
                   15.5.3.8 Debug Trigger Register (DBGT) ..................................................................255
                   15.5.3.9 Debug Status Register (DBGS) .....................................................................256

                                              Appendix A
                                    Electrical Characteristics

A.1 Introduction ...................................................................................................................................259
A.2 Absolute Maximum Ratings ..........................................................................................................259
A.3 Thermal Characteristics .................................................................................................................260
A.4 Electrostatic Discharge (ESD) Protection Characteristics ............................................................261
A.5 DC Characteristics .........................................................................................................................261
A.6 Supply Current Characteristics ......................................................................................................265
A.7 ATD Characteristics ......................................................................................................................269
A.8 Internal Clock Generation Module Characteristics .......................................................................271

         A.8.1 ICG Frequency Specifications ........................................................................................271
A.9 AC Characteristics .........................................................................................................................273

         A.9.1 Control Timing ...............................................................................................................273
         A.9.2 Timer/PWM (TPM) Module Timing ..............................................................................274
         A.9.3 SPI Timing ......................................................................................................................275
A.10 FLASH Specifications ...................................................................................................................279

                                              Appendix B
                     Ordering Information and Mechanical Drawings

B.1 Ordering Information ....................................................................................................................281
B.2 Mechanical Drawings ....................................................................................................................281
B.3 64-Pin LQFP Package Drawing ....................................................................................................282
B.4 48-Pin QFN Package Drawing ......................................................................................................283
B.5 44-Pin QFP Package Drawing .......................................................................................................284
B.6 42-Pin SDIP Package Drawing .....................................................................................................285

                MC9S08GB/GT Data Sheet, Rev. 2.3

16                                                Freescale Semiconductor
Chapter 1 Introduction

1.1 Overview

The MC9S08GB/GT are members of the low-cost, high-performance HCS08 Family of 8-bit
microcontroller units (MCUs). All MCUs in the family use the enhanced HCS08 core and are available
with a variety of modules, memory sizes, memory types, and package types.

1.2 Features

Features have been organized to reflect:
    Standard features of the HCS08 Family
    Features of the MC9S08GB/GT MCU

1.2.1 Standard Features of the HCS08 Family

    40-MHz HCS08 CPU (central processor unit)
    HC08 instruction set with added BGND instruction
    Background debugging system (see also Chapter 15, "Development Support")
    Breakpoint capability to allow single breakpoint setting during in-circuit debugging (plus two more

         breakpoints in on-chip debug module)
    Debug module containing two comparators and nine trigger modes. Eight deep FIFO for storing

         change-of-flow addresses and event-only data. Debug module supports both tag and force
         breakpoints.
    Support for up to 32 interrupt/reset sources
    Power-saving modes: wait plus three stops
    System protection features:
         -- Optional computer operating properly (COP) reset
         -- Low-voltage detection with reset or interrupt
         -- Illegal opcode detection with reset
         -- Illegal address detection with reset (some devices don't have illegal addresses)

1.2.2 Features of MC9S08GB/GT Series of MCUs

    On-chip in-circuit programmable FLASH memory with block protection and security options (see
         Table 1-1 for device specific information)

    On-chip random-access memory (RAM) (see Table 1-1 for device specific information)
    8-channel, 10-bit analog-to-digital converter (ATD)
    Two serial communications interface modules (SCI)
    Serial peripheral interface module (SPI)

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    17
Chapter 1 Introduction

    Multiple clock source options:
         -- Internally generated clock with 0.2% trimming resolution and 0.5% deviation across
             voltage.
         -- Crystal
         -- Resonator, or
         -- External clock

    Inter-integrated circuit bus module to operate up to 100 kbps (IIC)
    One 3-channel and one 5-channel 16-bit timer/pulse width modulator (TPM) modules with

         selectable input capture, output compare, and edge-aligned PWM capability on each channel. Each
         timer module may be configured for buffered, centered PWM (CPWM) on all channels (TPMx).
    8-pin keyboard interrupt module (KBI)
    16 high-current pins (limited by package dissipation)
    Software selectable pullups on ports when used as input. Selection is on an individual port bit basis.
         During output mode, pullups are disengaged.
    Internal pullup on RESET and IRQ pin to reduce customer system cost
    Up to 56 general-purpose input/output (I/O) pins, depending on package selection
    64-pin low-profile quad flat package (LQFP) -- MC9S08GBxx
    48-pin quad flat package, no lead (QFN) -- MC9S08GTxx
    44-pin quad flat package (QFP) -- MC9S08GTxx
    42-pin shrink dual in-line package (SDIP) -- MC9S08GTxx

1.2.3 Devices in the MC9S08GB/GT Series

Table 1-1 lists the devices available in the MC9S08GB/GT series and summarizes the differences among
them.

                                          Table 1-1. Devices in the MC9S08GB/GT Series

    Device      FLASH  RAM  TPM                                               I/O  Packages
                                                                                   64 LQFP
    MC9S08GB60  60K    4K   One 3-channel and one                             56
                                                                                   64 LQFP
                            5-channel, 16-bit timer
                                                                                   48 QFN1
    MC9S08GB32  32K    2K   One 3-channel and one                             56    44 QFP
                                                                                    42 SDIP
                            5-channel, 16-bit timer                                48 QFN(1)
                                                                                    44 QFP
    MC9S08GT60  60K    4K   Two 2-channel,                                    39    42 SDIP
                                                                                   48 QFN(1)
                            16-bit timers                                     36    44 QFP
                                                                                    42 SDIP
                                                                              34

    MC9S08GT32  32K    2K   Two 2-channel,                                    39

                            16-bit timers                                     36

                                                                              34

    MC9S08GT16  16K    1K   Two 2-channel,                                    39

                            16-bit timers                                     36

                                                                              34

    1 The 48-pin QFN package has one 3-channel and one 2-channel 16-bit TPM.

                       MC9S08GB/GT Data Sheet, Rev. 2.3

18                                                                                 Freescale Semiconductor
                                                                                           MCU Block Diagrams

1.3 MCU Block Diagrams

These block diagrams show the structure of the MC9S08GB/GT MCUs.

            HCS08 CORE             INTERNAL BUS

            BDC           CPU         DEBUG                                        PORT A  8                   NOTES 1, 6
                                   MODULE (DBG)                                                  PTA7/KBI1P7
                                                                                                 PTA0/KBI1P0

RESET       HCS08 SYSTEM CONTROL         8-BIT KEYBOARD                            PORT B  8                   NOTE 1
NOTE 4                             INTERRUPT MODULE (KBI1)                                       PTB7/AD1P7
            RESETS AND INTERRUPTS                                                                PTB0/AD1P0
IRQ           MODES OF OPERATION         IIC MODULE (IIC1)
NOTES 2, 3     POWER MANAGEMENT
                                   SERIAL COMMUNICATIONS
            RTI             COP    INTERFACE MODULE (SCI1)                                 PTC7
                                                                                           PTC6
            IRQ             LVD    SERIAL COMMUNICATIONS                           PORT C  PTC5                NOTES 1, 5
                                   INTERFACE MODULE (SCI2)                                 PTC4
                                                                                           PTC3/SCL1
                                                                                           PTC2/SDA1
                                                                                           PTC1/RxD2
                                                                                           PTC0/TxD2

                 USER FLASH                                                                PTD7/TPM2CH4
                                                                                           PTD6/TPM2CH3
            (GB60 = 61,268 BYTES)                                                          PTD5/TPM2CH2
            (GB32 = 32,768 BYTES)                                                          PTD4/TPM2CH1
                                                                                           PTD3/TPM2CH0
                                                                                   PORT D  PTD2/TPM1CH2        NOTE 1
                                                                                           PTD1/TPM1CH1
                  USER RAM         3-CHANNEL TIMER/PWM                                     PTD0/TPM1CH0
                                       MODULE (TPM1)
            (GB60 = 4096 BYTES)
            (GB32 = 2048 BYTES)

VDDAD                   10-BIT      5-CHANNEL TIMER/PWM                            PORT E  PTE7                NOTE 1
VSSAD          ANALOG-TO-DIGITAL         MODULE (TPM2)
               CONVERTER (ATD1)                                                            PTE6
VREFH                                 SERIAL PERIPHERAL                                    PTE5/SPSCK1
VREFL            INTERNAL CLOCK    INTERFACE MODULE (SPI1)                                 PTE4/MOSI1
                GENERATOR (ICG)                                                            PTE3/MISO1
                                                                                           PTE2/SS1
            LOW-POWER OSCILLATOR                                                           PTE1/RxD1
                                                                                           PTE0/TxD1

                                                                                   PORT F  8                   NOTES 1, 5
                                                                                                 PTF7PTF0

VDD              VOLTAGE                                                                   PTG7

VSS              REGULATOR                                                         PORT G  PTG6
                                                                                           PTG5
                                                                                                               NOTE 1
                                                                                           PTG4
NOTES:                                                                                     PTG3
      1. Port pins are software configurable with pullup device if input port.             PTG2/EXTAL
      2. Pin contains software configurable pullup/pulldown device if IRQ                  PTG1/XTAL
         enabled (IRQPE = 1).                                                              PTG0/BKGD/MS
      3. IRQ does not have a clamp diode to VDD. IRQ should not be driven
         above VDD.
      4. Pin contains integrated pullup device.
      5. High current drive
      6. Pins PTA[7:4] contain both pullup and pulldown devices. Pulldown
         available when KBI enabled (KBIPn = 1).

                                             Figure 1-1. MC9S08GBxx Block Diagram

                                   MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                19
Chapter 1 Introduction

            HCS08 CORE                   INTERNAL BUS

            BDC         CPU           DEBUG                              PORT A  8
                                   MODULE (DBG)                                        PTA7/KBI1P7
                                                                                       PTA0/KBI1P0                 NOTES 1, 7

RESET       HCS08 SYSTEM CONTROL         8-BIT KEYBOARD                  PORT B  8                                 NOTE 1
NOTE 4                             INTERRUPT MODULE (KBI1)                             PTB7/AD1P7
            RESETS AND INTERRUPTS                                                      PTB0/AD1P0
IRQ           MODES OF OPERATION         IIC MODULE (IIC1)
NOTES 2, 3     POWER MANAGEMENT
                                   SERIAL COMMUNICATIONS
            RTI         COP        INTERFACE MODULE (SCI1)                       PTC6 (NOTE 6)
                                                                                 PTC5 (NOTE 6)
            IRQ         LVD        SERIAL COMMUNICATIONS                 PORT C  PTC4                              NOTES 1, 5
                                   INTERFACE MODULE (SCI2)                       PTC3/SCL1
                  USER FLASH                                                     PTC2/SDA1
                                     3-CHANNEL TIMER/PWM                         PTC1/RxD2
            (GT60 = 61,268 BYTES)         MODULE (TPM1)                          PTC0/TxD2
            (GT32 = 32,768 BYTES)             (NOTE 8)
            (GT16 = 16,384 BYTES)                                                PTD4/TPM2CH1
                                     5-CHANNEL TIMER/PWM
                                          MODULE (TPM2)                  PORT D  PTD3/TPM2CH0                      NOTE 1
                                              (NOTE 8)                           PTD1/TPM1CH1

                    USER RAM           SERIAL PERIPHERAL                         PTD0/TPM1CH0
              (GT60 = 4096 BYTES)  INTERFACE MODULE (SPI1)
VDDAD         (GT32 = 2048 BYTES)                                        PORT E  PTE5/SPSCK1                       NOTE 1
VSSAD         (GT16 = 1024 BYTES)                                                PTE4/MOSI1
VREFH                                                                            PTE3/MISO1
VREFL                   10-BIT                                                   PTE2/SS1
               ANALOG-TO-DIGITAL                                                 PTE1/RxD1
     VDD       CONVERTER (ATD1)                                                  PTE0/TxD1
     VSS
                 INTERNAL CLOCK                                                  PTG2/EXTAL
                GENERATOR (ICG)
                                                                         PORT G  PTG1/XTAL                         NOTE 1
            LOW-POWER OSCILLATOR
                                                                                 PTG0/BKGD/MS
                     VOLTAGE
                    REGULATOR

NOTES:
      1. Port pins are software configurable with pullup device if input port.
      2. Pin contains software configurable pullup/pulldown device if IRQ enabled (IRQPE = 1).
      3. IRQ does not have a clamp diode to VDD. IRQ should not be driven above VDD.
      4. Pin contains integrated pullup device.
      5. High current drive
      6. PTC[6:5] are not available on the 42-pin SDIP package.
      7. Pins PTA[7:4] contain both pullup and pulldown devices. Pulldown available when KBI enabled (KBIPn = 1).
      8. Only two timer channels per TPM are bonded out. All channels are available for use as software compare.

                                   Figure 1-2. MC9S08GTxx Block Diagram

                                   MC9S08GB/GT Data Sheet, Rev. 2.3

20                                                                               Freescale Semiconductor
                                                                                                               System Clock Distribution

Table 1-2 lists the functional versions of the on-chip modules.                               Version

                                                          Table 1-2. Block Versions               3
                                                                                                  2
                                                                     Module                       1
                                                    Analog-to-Digital Converter (ATD)             1
                                                                                                  1
                                                      Internal Clock Generator (ICG)              3
                                                        Inter-Integrated Circuit (IIC)            1
                                                          Keyboard Interrupt (KBI)                2

                                                 Serial Communications Interface (SCI)
                                                     Serial Peripheral Interface (SPI)

                                                  Timer Pulse-Width Modulator (TPM)
                                                      Central Processing Unit (CPU)

1.4 System Clock Distribution

                      SYSTEM               TPM1            TPM2                         IIC1        SCI1       SCI2  SPI1

                     CONTROL
                        LOGIC

     ICGERCLK
                                      RTI

     FFE

                         2

ICG                               FIXED FREQ CLOCK (XCLK)

     ICGOUT                   2  BUSCLK

     ICGLCLK*

                         CPU               BDC                                                ATD1        RAM        FLASH

     * ICGLCLK is the alternate BDC clock source for the MC9S08GB/GT.  ATD has min and max                           FLASH has frequency
                                                                       frequency requirements.                       requirements for program
                                                                       See Chapter 1, "Introduction"                 and erase operation.
                                                                       and Appendix A, "Electrical                   See Appendix A, "Electrical
                                                                       Characteristics.                              Characteristics.

                                  Figure 1-3. System Clock Distribution Diagram

Some of the modules inside the MCU have clock source choices. Figure 1-3 shows a simplified clock
connection diagram. The ICG supplies the clock sources:

    ICGOUT is an output of the ICG module. It is one of the following:
         -- The external crystal oscillator
         -- An external clock source
         -- The output of the digitally-controlled oscillator (DCO) in the frequency-locked loop
             sub-module
         Control bits inside the ICG determine which source is connected.

                                           MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                     21
Chapter 1 Introduction

    FFE is a control signal generated inside the ICG. If the frequency of ICGOUT > 4 the frequency
         of ICGERCLK, this signal is a logic 1 and the fixed-frequency clock will be the ICGERCLK.
         Otherwise the fixed-frequency clock will be BUSCLK.

    ICGLCLK -- Development tools can select this internal self-clocked source (~ 8 MHz) to speed
         up BDC communications in systems where the bus clock is slow.

    ICGERCLK -- External reference clock can be selected as the real-time interrupt clock source.

    MC9S08GB/GT Data Sheet, Rev. 2.3

22                                    Freescale Semiconductor
Chapter 2 Pins and Connections

2.1 Introduction

This section describes signals that connect to package pins. It includes a pinout diagram, a table of signal
properties, and detailed discussion of signals.

2.2 Device Pin Assignment

                         PTG6
                               PTG5
                                      PTG4
                                             PTG3
                                                    PTG2/EXTAL
                                                          PTG1/XTAL
                                                                 PTG0/BKGD/MS
                                                                        VSSAD
                                                                               VDDAD
                                                                                      PTF1
                                                                                             PTF0
                                                                                                    PTA7/KBI1P7
                                                                                                          PTA6/KBI1P6
                                                                                                                 PTA5/KBI1P5
                                                                                                                        PTA4/KBI1P4
                                                                                                                              PTA3/KBI1P3

                         64                                                 49

                             63 62 61 60 59 58 57 56 55 54 53 52 51 50

RESET 1                                                                                                                                          48 PTA2/KBI1P2

PTG7 2                                                                                                                                       47 PTA1/KBI1P1

PTC0/TxD2 3                                                                                                                                  46 PTA0/KBI1P0
PTC1/RxD2 4                                                                                                                                  45 PTF7

PTC2/SDA1 5                                                                                                                                  44 PTF6

PTC3/SCL1 6                                                                                                                                  43 PTF5

PTC4 7                                                                                                                                       42 VREFL
PTC5 8
PTC6 9                                                                                                                                       41  VREFH

                                                                                                                                             40 PTB7/AD1P7

PTC7 10                                                                                                                                      39 PTB6/AD1P6

PTF2 11                                                                                                                                      38 PTB5/AD1P5

PTF3 12                                                                                                                                      37 PTB4/AD1P4

PTF4 13                                                                                                                                      36 PTB3/AD1P3

PTE0/TxD1 14                                                                                                                                 35 PTB2/AD1P2

PTE1/RxD1 15                                                                                                                                 34 PTB1/AD1P1

IRQ 16                                                                                                                                           33 PTB0/AD1P0

                             18 19 20 21 22 23 24 25 26 27 28 29 30 31

                         17                                                 32

                         PTE2/SS1
                               PTE3/MISO1
                                       PTE4/MOSI1
                                             PTE5/SPSCK1

                                                    PTE6
                                                           PTE7

                                                                  VSS
                                                                         VDD
                                                                               PTD0/TPM1CH0
                                                                                      PTD1/TPM1CH1
                                                                                             PTD2/TPM1CH2
                                                                                                    PTD3/TPM2CH0
                                                                                                           PTD4/TPM2CH1
                                                                                                                  PTD5/TPM2CH2
                                                                                                                        PTD6/TPM2CH3
                                                                                                                               PTD7/TPM2CH4

                             Figure 2-1. MC9S08GBxx in 64-Pin LQFP Package

                             MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                                                          23
Chapter 2 Pins and Connections

          RESET 1               48 PTG3
    PTC0/TxD2 2                       47 PTG2/EXTAL
    PTC1/RxD2 3                              46 PTG1/XTAL
    PTC2/SDA1 4                                     45 PTG0/BKGD/MS
    PTC3/SCL1 5                                            44 VSSAD
                                                                  43 VDDAD
            PTC4 6                                                      42 PTA7/KBI1P7
            PTC5 7                                                             41 PTA6/KBI1P6
            PTC6 8                                                                    40 PTA5/KBI1P5
             PTC7 9                                                                          39 PTA4/KBI1P4
     PTE0/TxD1 10                                                                                   38 PTA3/KBI1P3
    PTE1/RxD1 11                                                                                          37 PTA2/KBI1P2
                                                                  36 PTA1/KBI1P1
               IRQ 12                                             35 PTA0/KBI1P0
                                                                  34 VREFL
                                                                  33 VREFH
                                                                  32 PTB7/AD1P7
                                                                  31 PTB6/AD1P6
                                                                  30 PTB5/AD1P5
                                                                  29 PTB4/AD1P4
                                                                  28 PTB3/AD1P3
                                                                  27 PTB2/AD1P2
                                                                  26 PTB1/AD1P1
                                                                  25 PTB0/AD1P0
                                PTE2/SS1 13
                                      PTE3/MISO1 14
                                             PTE4/MOSI1 15
                                                    PTE5/SPSCK1 16

                                                           VSS1 17
                                                                  VSS2 18
                                                                         VDD 19
                                                                                PTD0/TPM1CH0 20
                                                                                       PTD1/TPM1CH1 21
                                                                                             PTD2/TPM1CH2 22
                                                                                                    PTD3/TPM2CH0 23
                                                                                                          PTD4/TPM2CH1 24

                                Figure 2-2. MC9S08GTxx in 48-Pin QFN Package

                                MC9S08GB/GT Data Sheet, Rev. 2.3

24                                                                                                                         Freescale Semiconductor
                                                                                                                                                                                            Device Pin Assignment

      RESET 1            44 PTG2/EXTAL                                                                                                                                               33 PTA1/KBI1P1
PTC0/TxD2 2                    43 PTG1/XTAL
PTC1/RxD2 3                           42 PTG0/BKGD/MS
PTC2/SDA1 4                                  41 VSSAD
PTC3/SCL1 5                                         40 VDDAD
                                                           39 PTA7/KBI1P7
        PTC4 6                                                   38 PTA6/KBI1P6
        PTC5 7                                                          37 PTA5/KBI1P5
        PTC6 8                                                                 36 PTA4/KBI1P4
PTE0/TxD1 9                                                                          35 PTA3/KBI1P3
PTE1/RxD1 10
                                                                                            34 PTA2/KBI1P2
           IRQ 11
                                                                                                                                                                                 32  PTA0/KBI1P0

                                                                                                                                                                                 31  VREFL

                                                                                                                                                                                 30  VREFH

                                                                                                                                                                                 29 PTB7/AD1P7

                                                                                                                                                                                 28  PTB6/AD1P6

                                                                                                                                                                                 27  PTB5/AD1P5

                                                                                                                                                                                 26  PTB4/AD1P4

                                                                                                                                                                                 25  PTB3/AD1P3

                                                                                                                                                                                 24  PTB2/AD1P2

                                      PTE3/MISO1 13  PTE4/MOSI1 14  PTE5/SPSCK1 15  16   17   PTD0/TPM1CH0 18  PTD1/TPM1CH1 19  PTD3/TPM2CH0 20  PTD4/TPM2CH1 21                     23 PTB1/AD1P1

                         PTE2/SS1 12                                                VSS  VDD                                                                      PTB0/AD1P0 22

                         Figure 2-3. MC9S08GTxx in 44-Pin QFP Package

                                      MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                                                                                              25
Chapter 2 Pins and Connections

                                VDDAD       1   42                PTA7/KBI1P7

                                VSSAD       2   41                PTA6/KBI1P6

    PTG0/BKGD/MS                            3   40                PTA5/KBI1P5

                                PTG1/XTAL   4   39                PTA4/KBI1P4

                                PTG2/EXTAL  5   38                PTA3/KBI1P3

                                RESET       6   37                PTA2/KBI1P2

                                PTC0/TxD2   7   36 PTA1/KBI1P1

                                PTC1/RXD2   8   35                PTA0/KBI1P0

                                PTC2/SDA1 9     34                VREFL

                                PTC3/SCL1   10  33                VREFH

                                PTC4        11  32                PTB7/AD1P7

                                PTE0/TxD1   12  31                PTB6/AD1P6

                                PTE1/RxD1   13  30                PTB5/AD1P5

                                IRQ 14          29                PTB4/AD1P4

                                PTE2/SS1 15     28                PTB3/AD1P3

                                PTE3/MISO1 16   27 PTB2/AD1P2

                                PTE4/MOSI1 17   26                PTB1/AD1P1

                                PTE5/SPSCK1 18  25                PTB0/AD1P0

                                VSS         19  24                PTD4/TPM2CH1

                                VDD         20  23                PTD3/TPM2CH0

    PTD0/TPM1CH0 21                             22                PTD1/TPM1CH1

                                Figure 2-4. MC9S08GTxx in 42-Pin SDIP Package

2.3 Recommended System Connections

Figure 2-5 shows pin connections that are common to almost all MC9S08GB60 application systems.
MC9S08GTxx connections will be similar except for the number of I/O pins available. A more detailed
discussion of system connections follows.

                                MC9S08GB/GT Data Sheet, Rev. 2.3

26                                                                              Freescale Semiconductor
                                                                             Recommended System Connections

                                      CBYAD   VREFH     MC9S08GBxx
                                      0.1 F  VDDAD

SYSTEM                   VDD      CBY         VSSAD                 PORT     PTA0/KBI1P0
POWER                             0.1 F      VREFL                   A      PTA1/KBI1P1
                  CBLK +                      VDD                            PTA2/KBI1P2
               +  10 F                                                      PTA3/KBI1P3
                                              VSS                            PTA4/KBI1P4
            3V                                NOTE 4                         PTA5/KBI1P5
                                                                             PTA6/KBI1P6
                                                                             PTA7/KBI1P7

NOTE 1                   RF       RS
         C1
                  X1          C2              XTAL                           PTB0/AD1P0
                                              NOTE 2                         PTB1/AD1P1
                                                                    PORT     PTB2/AD1P2
                                              EXTAL                   B      PTB3/AD1P3
                                              NOTE 2                         PTB4/AD1P4
      BACKGROUND HEADER                                                      PTB5/AD1P5        I/O AND
VDD                                                 BKGD/MS                  PTB6/AD1P6     PERIPHERAL
                                                    NOTE 3                   PTB7/AD1P7    INTERFACE TO
                                                                                           APPLICATION
                                                                             PTC0/TxD2
                                                                             PTC1/RxD2         SYSTEM
                                                                             PTC2/SDA1
                                              RESET                 PORT     PTC3/SCL1
                                                                      C      PTC4
                                                                             PTC5
OPTIONAL                 ASYNCHRONOUS              IRQ                       PTC6
MANUAL                     INTERRUPT                                        PTC7
  RESET                                       PORT
                              INPUT             G

                         PTG0/BKDG/MS         PORT                           PTD0/TPM1CH0
                                                F                            PTD1/TPM1CH1
                              PTG1/XTAL                                      PTD2/TPM1CH2
                                                                             PTD3/TPM2CH0
NOTES:                        PTG2/EXTAL                            PORT     PTD4/TPM2CH1
      1. Not required if            PTG3                              D      PTD5/TPM2CH2
         using the internal         PTG4                                     PTD6/TPM2CH3
         oscillator option.         PTG5                            PORT     PTD7/TPM2CH4
      2. These are the              PTG6                              E
         same pins as               PTG7                                     PTE0/TxD1
         PTG1 and PTG2.                                                      PTE1/RxD1
      3. BKGD/MS is the              PTF0                                    PTE2/SS1
         same pin as PTG0.           PTF1                                    PTE3/MISO1
      4. The 48-pin QFN              PTF2                                    PTE4/MOSI1
         has 2 VSS pins              PTF3                                    PTE5/SPSCK1
         (VSS1 and VSS2),            PTF4                                    PTE6
         both of which must          PTF5                                    PTE7
         be connected to
         GND.

                                  PTF6

                                  PTF7

                                  Figure 2-5. Basic System Connections

                                           MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                  27
Chapter 2 Pins and Connections

2.3.1 Power

VDD and VSS are the primary power supply pins for the MCU. This voltage source supplies power to all
I/O buffer circuitry and to an internal voltage regulator. The internal voltage regulator provides regulated
lower-voltage source to the CPU and other internal circuitry of the MCU.

Typically, application systems have two separate capacitors across the power pins. In this case, there
should be a bulk electrolytic capacitor, such as a 10-F tantalum capacitor, to provide bulk charge storage
for the overall system and a 0.1-F ceramic bypass capacitor located as close to the MCU power pins as
practical to suppress high-frequency noise.

VDDAD and VSSAD are the analog power supply pins for the MCU. This voltage source supplies power to
the ATD. A 0.1-F ceramic bypass capacitor should be located as close to the MCU power pins as practical
to suppress high-frequency noise.

2.3.2 Oscillator

Out of reset, the MCU uses an internally generated clock (self-clocked mode -- fSelf_reset) that is
approximately equivalent to an 8-MHz crystal rate. This frequency source is used during reset startup and
can be enabled as the clock source for stop recovery to avoid the need for a long crystal startup delay. This
MCU also contains a trimmable internal clock generator (ICG) module that can be used to run the MCU.
For more information on the ICG, see Chapter 7, "Internal Clock Generator (ICG) Module."

The oscillator in this MCU is a Pierce oscillator that can accommodate a crystal or ceramic resonator in
either of two frequency ranges selected by the RANGE bit in the ICGC1 register. Rather than a crystal or
ceramic resonator, an external oscillator can be connected to the EXTAL input pin, and the XTAL output
pin can be used as general I/O.

Refer to Figure 2-5 for the following discussion. RS (when used) and RF should be low-inductance
resistors such as carbon composition resistors. Wire-wound resistors, and some metal film resistors, have
too much inductance. C1 and C2 normally should be high-quality ceramic capacitors that are specifically
designed for high-frequency applications.

RF is used to provide a bias path to keep the EXTAL input in its linear range during crystal startup and its
value is not generally critical. Typical systems use 1 M to 10 M. Higher values are sensitive to humidity
and lower values reduce gain and (in extreme cases) could prevent startup.

C1 and C2 are typically in the 5-pF to 25-pF range and are chosen to match the requirements of a specific
crystal or resonator. Be sure to take into account printed circuit board (PCB) capacitance and MCU pin
capacitance when sizing C1 and C2. The crystal manufacturer typically specifies a load capacitance which
is the series combination of C1 and C2 which are usually the same size. As a first-order approximation,
use 10 pF as an estimate of combined pin and PCB capacitance for each oscillator pin (EXTAL and
XTAL).

2.3.3 Reset

RESET is a dedicated pin with a pullup device built in. It has input hysteresis, a high current output driver,
and no output slew rate control. Internal power-on reset and low-voltage reset circuitry typically make
external reset circuitry unnecessary. This pin is normally connected to the standard 6-pin background

    MC9S08GB/GT Data Sheet, Rev. 2.3

28                                    Freescale Semiconductor
                                                                                                                                          Recommended System Connections

debug connector so a development system can directly reset the MCU system. If desired, a manual external
reset can be added by supplying a simple switch to ground (pull reset pin low to force a reset).

Whenever any reset is initiated (whether from an external signal or from an internal system), the reset pin
is driven low for approximately 34 cycles of fSelf_reset, released, and sampled again approximately 38
cycles of fSelf_reset later. If reset was caused by an internal source such as low-voltage reset or watchdog
timeout, the circuitry expects the reset pin sample to return a logic 1. If the pin is still low at this sample
point, the reset is assumed to be from an external source. The reset circuitry decodes the cause of reset and
records it by setting a corresponding bit in the system control reset status register (SRS).

Never connect any significant capacitance to the reset pin because that would interfere with the circuit and
sequence that detects the source of reset. If an external capacitance prevents the reset pin from rising to a
valid logic 1 before the reset sample point, all resets will appear to be external resets.

2.3.4 Background / Mode Select (PTG0/BKGD/MS)

The background/mode select (BKGD/MS) shares its function with an I/O port pin. While in reset, the pin
functions as a mode select pin. Immediately after reset rises the pin functions as the background pin and
can be used for background debug communication. While functioning as a background/mode select pin,
the pin includes an internal pullup device, input hysteresis, a standard output driver, and no output slew
rate control. When used as an I/O port (PTG0) the pin is limited to output only.

If nothing is connected to this pin, the MCU will enter normal operating mode at the rising edge of reset.
If a debug system is connected to the 6-pin standard background debug header, it can hold BKGD/MS low
during the rising edge of reset which forces the MCU to active background mode.

The BKGD pin is used primarily for background debug controller (BDC) communications using a custom
protocol that uses 16 clock cycles of the target MCU's BDC clock per bit time. The target MCU's BDC
clock could be as fast as the bus clock rate, so there should never be any significant capacitance connected
to the BKGD/MS pin that could interfere with background serial communications.

Although the BKGD pin is a pseudo open-drain pin, the background debug communication protocol
provides brief, actively driven, high speedup pulses to ensure fast rise times. Small capacitances from
cables and the absolute value of the internal pullup device play almost no role in determining rise and fall
times on the BKGD pin.

2.3.5 General-Purpose I/O and Peripheral Ports

The remaining 55 pins are shared among general-purpose I/O and on-chip peripheral functions such as
timers and serial I/O systems. (Sixteen of these pins are not bonded out on the 48-pin package, twenty of
these pins are not bonded out on the 44-pin package, and twenty-two are not bonded out on the 42-pin
package.) Immediately after reset, all 55 of these pins are configured as high-impedance general-purpose
inputs with internal pullup devices disabled.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    29
Chapter 2 Pins and Connections

                                                           NOTE
                  To avoid extra current drain from floating input pins, the reset initialization
                  routine in the application program should either enable on-chip pullup
                  devices or change the direction of unused pins to outputs so the pins do not
                  float.

For information about controlling these pins as general-purpose I/O pins, see Chapter 6, "Parallel
Input/Output." For information about how and when on-chip peripheral systems use these pins, refer to the
appropriate section from Table 2-1.

                                                    Table 2-1. Pin Sharing References

    Port Pins  Alternate                                                     Reference1
               Function

    PTA7PTA0  KBI1P7KBI1P0        Chapter 2, "Pins and Connections"

    PTB7PTB0 AD1P7AD1P0           Chapter 14, "Analog-to-Digital Converter (ATD) Module"

    PTC7PTC4                   --  Chapter 6, "Parallel Input/Output"

    PTC3PTC2 SCL1SDA1             Chapter 13, "Inter-Integrated Circuit (IIC) Module"

    PTC1PTC0 RxD2TxD2             Chapter 11, "Serial Communications Interface (SCI) Module"

    PTD7PTD3  TPM2CH4             Chapter 10, "Timer/PWM (TPM) Module"
                 TPM2CH0

    PTD2PTD0  TPM1CH2             Chapter 10, "Timer/PWM (TPM) Module"
                 TPM1CH0

    PTE7PTE6                   --  Chapter 6, "Parallel Input/Output"

    PTE5       SPSCK1               Chapter 12, "Serial Peripheral Interface (SPI) Module"
    PTE4       MISO1
    PTE3       MOSI1
    PTE2       SS1

    PTE1PTE0 RxD1TxD1             Chapter 11, "Serial Communications Interface (SCI) Module"

    PTF7PTF0                   --  Chapter 6, "Parallel Input/Output"

    PTG7PTG3                   --  Chapter 6, "Parallel Input/Output"

    PTG2PTG1 EXTALXTAL            Chapter 7, "Internal Clock Generator (ICG) Module"

    PTG0       BKGD/MS              Chapter 15, "Development Support"

    1 See this section for information about modules that share these pins.

When an on-chip peripheral system is controlling a pin, data direction control bits still determine what is
read from port data registers even though the peripheral module controls the pin direction by controlling
the enable for the pin's output buffer. See Chapter 6, "Parallel Input/Output" for details.

Pullup enable bits for each input pin control whether on-chip pullup devices are enabled whenever the pin
is acting as an input even if it is being controlled by an on-chip peripheral module. When the PTA7PTA4
pins are controlled by the KBI module and are configured for rising-edge/high-level sensitivity, the pullup
enable control bits enable pulldown devices rather than pullup devices. Similarly, when IRQ is configured

                                    MC9S08GB/GT Data Sheet, Rev. 2.3

30                                                                                          Freescale Semiconductor
                                                                                                                                          Recommended System Connections

as the IRQ input and is set to detect rising edges, the pullup enable control bit enables a pulldown device
rather than a pullup device.

2.3.6 Signal Properties Summary

Table 2-2 summarizes I/O pin characteristics. These characteristics are determined by the way the
common pin interfaces are hardwired to internal circuits.

                                                        Table 2-2. Signal Properties

      Pin    Dir         High Current  Output  Pull-Up2                  Comments
     Name                      Pin     Slew 1
      VDD
                         --               --     --
      VSS
                         --               --     --      The 48-pin QFN package has two VSS pins -- VSS1
    VDDAD                                                and VSS2.
    VSSAD                --               --     --
    VREFH                                 --     --      Pin contains integrated pullup.
     VREFL               --               --     --      IRQPE must be set to enable IRQ function.
    RESET                                 --     --      IRQ does not have a clamp diode to VDD. IRQ should
                         --               N      Y       not be driven above VDD.
      IRQ                                                Pullup/pulldown active when IRQ pin function
                         --                      Y       enabled. Pullup forced on when IRQ enabled for
PTA0/KBI1P0                                              falling edges; pulldown forced on when IRQ enabled
PTA1/KBI1P1  I/O         Y                     SWC       for rising edges.
PTA2/KBI1P2                                    SWC
PTA3/KBI1P3  I           --            --      SWC       Pullup/pulldown active when KBI pin function
PTA4/KBI1P4                                    SWC       enabled. Pullup forced on when KBI1Px enabled for
PTA5/KBI1P5  I/O         N             SWC     SWC       falling edges; pulldown forced on when KBI1Px
PTA6/KBI1P6                            SWC     SWC       enabled for rising edges.
PTA7/KBI1P7  I/O         N             SWC     SWC
PTB0/AD1P0                             SWC     SWC       When pin is configured for SCI function, pin is
PTB1/AD1P1   I/O         N             SWC     SWC       configured for partial output drive.
PTB2/AD1P2                             SWC     SWC
PTB3/AD1P3   I/O         N             SWC     SWC
PTB4/AD1P4                             SWC     SWC
PTB5/AD1P5   I/O         N             SWC     SWC
PTB6/AD1P6                             SWC     SWC
PTB7/AD1P7   I/O         N             SWC     SWC
PTC0/TxD2                             SWC     SWC
PTC1/RxD2   I/O         N             SWC     SWC
PTC2/SDA1                              SWC     SWC
PTC3/SCL1   I/O         N             SWC     SWC
                                       SWC     SWC
             I/O         N             SWC
                                       SWC
             I/O         N             SWC
                                       SWC
             I/O         N

             I/O         N

             I/O         N

             I/O         N

             I/O         N

             I/O         N

             I/O         Y

             I/O         Y

             I/O         Y

             I/O         Y

                                       MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                            31
Chapter 2 Pins and Connections

                                   Table 2-2. Signal Properties (continued)

     Pin        Dir  High Current  Output  Pull-Up2                          Comments
    Name                   Pin     Slew 1

    PTC4        I/O             Y  SWC     SWC

    PTC5        I/O             Y  SWC     SWC Not available on 42-pin pkg

    PTC6        I/O             Y  SWC     SWC Not available on 42-pin pkg

    PTC7        I/O             Y  SWC     SWC Not available on 42- or 44-pin pkg

PTD0/TPM1CH0 I/O                N  SWC     SWC

PTD1/TPM1CH1 I/O                N  SWC     SWC

PTD2/TPM1CH2 I/O                N  SWC     SWC Not available on 42- or 44-pin pkg

PTD3/TPM2CH0 I/O                N  SWC     SWC

PTD4/TPM2CH1 I/O                N  SWC     SWC

PTD5/TPM2CH2 I/O                N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

PTD6/TPM2CH3 I/O                N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

PTD7/TPM2CH4 I/O                N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTE0/TxD1   I/O             N  SWC     SWC

    PTE1/RxD1   I/O             N  SWC     SWC

    PTE2/SS1    I/O             N  SWC     SWC

    PTE3/MISO1  I/O             N  SWC     SWC

    PTE4/MOSI1  I/O             N  SWC     SWC

PTE5/SPSCK1 I/O                 N  SWC     SWC

    PTE6        I/O             N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTE7        I/O             N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF0        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF1        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF2        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF3        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF4        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF5        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF6        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTF7        I/O             Y  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

PTG0/BKGD/MS O                  N  SWC     SWC       Pullup enabled and slew rate disabled when BDM
                                                     function enabled.

    PTG1/XTAL   I/O             N  SWC     SWC       Pullup and slew rate disabled when XTAL pin
                                                     function.

    PTG2/EXTAL  I/O             N  SWC     SWC       Pullup and slew rate disabled when EXTAL pin
                                                     function.

    PTG3        I/O             N  SWC     SWC Not available on 42-, or 44-pin pkg

    PTG4        I/O             N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTG5        I/O             N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTG6        I/O             N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

    PTG7        I/O             N  SWC     SWC Not available on 42-, 44-, or 48-pin pkg

1 SWC is software controlled slew rate, the register is associated with the respective port.
2 SWC is software controlled pullup resistor, the register is associated with the respective port.

                                   MC9S08GB/GT Data Sheet, Rev. 2.3

32                                                                                                  Freescale Semiconductor
Chapter 3 Modes of Operation

3.1 Introduction

The operating modes of the MC9S08GB/GT are described in this section. Entry into each mode, exit from
each mode, and functionality while in each of the modes are described.

3.2 Features

    Active background mode for code development
    Wait mode:

         -- CPU shuts down to conserve power
         -- System clocks running
         -- Full voltage regulation maintained
    Stop modes:
         -- System clocks stopped; voltage regulator in standby
         -- Stop1 -- Full power down of internal circuits for maximum power savings
         -- Stop2 -- Partial power down of internal circuits, RAM contents retained
         -- Stop3 -- All internal circuits powered for fast recovery

3.3 Run Mode

This is the normal operating mode for the MC9S08GB/GT. This mode is selected when the BKGD/MS
pin is high at the rising edge of reset. In this mode, the CPU executes code from internal memory with
execution beginning at the address fetched from memory at $FFFE:$FFFF after reset.

3.4 Active Background Mode

The active background mode functions are managed through the background debug controller (BDC) in
the HCS08 core. The BDC, together with the on-chip debug module (DBG), provide the means for
analyzing MCU operation during software development.

Active background mode is entered in any of five ways:
    When the BKGD/MS pin is low at the rising edge of reset
    When a BACKGROUND command is received through the BKGD pin
    When a BGND instruction is executed
    When encountering a BDC breakpoint
    When encountering a DBG breakpoint

After entering active background mode, the CPU is held in a suspended state waiting for serial background
commands rather than executing instructions from the user's application program.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    33
Chapter 3 Modes of Operation

Background commands are of two types:
    Non-intrusive commands, defined as commands that can be issued while the user program is
         running. Non-intrusive commands can be issued through the BKGD pin while the MCU is in run
         mode; non-intrusive commands can also be executed while the MCU is in the active background
         mode. Non-intrusive commands include:
         -- Memory access commands
         -- Memory-access-with-status commands
         -- BDC register access commands
         -- The BACKGROUND command
    Active background commands, which can be executed only while the MCU is in active background
         mode. Active background commands include commands to:
         -- Read or write CPU registers
         -- Trace one user program instruction at a time
         -- Leave active background mode to return to the user's application program (GO)

The active background mode is used to program a bootloader or user application program into the FLASH
program memory before the MCU is operated in run mode for the first time. When the MC9S08GB/GT is
shipped from the Freescale Semiconductor factory, the FLASH program memory is erased by default
unless specifically noted so there is no program that could be executed in run mode until the FLASH
memory is initially programmed. The active background mode can also be used to erase and reprogram
the FLASH memory after it has been previously programmed.

For additional information about the active background mode, refer to Chapter 15, "Development
Support."

3.5 Wait Mode

Wait mode is entered by executing a WAIT instruction. Upon execution of the WAIT instruction, the CPU
enters a low-power state in which it is not clocked. The I bit in CCR is cleared when the CPU enters the
wait mode, enabling interrupts. When an interrupt request occurs, the CPU exits the wait mode and
resumes processing, beginning with the stacking operations leading to the interrupt service routine.

While the MCU is in wait mode, there are some restrictions on which background debug commands can
be used. Only the BACKGROUND command and memory-access-with-status commands are available
when the MCU is in wait mode. The memory-access-with-status commands do not allow memory access,
but they report an error indicating that the MCU is in either stop or wait mode. The BACKGROUND
command can be used to wake the MCU from wait mode and enter active background mode.

3.6 Stop Modes

One of three stop modes is entered upon execution of a STOP instruction when the STOPE bit in the
system option register is set. In all stop modes, all internal clocks are halted. If the STOPE bit is not set
when the CPU executes a STOP instruction, the MCU will not enter any of the stop modes and an illegal
opcode reset is forced. The stop modes are selected by setting the appropriate bits in SPMSC2.

    MC9S08GB/GT Data Sheet, Rev. 2.3

34                                    Freescale Semiconductor
                                                                                                            Stop Modes

Table 3-1 summarizes the behavior of the MCU in each of the stop modes.

                                                      Table 3-1. Stop Mode Behavior

Mode   PDC  PPDC         CPU, Digital  RAM      ICG   ATD                              Regulator  I/O Pins        RTI
                         Peripherals,
Stop1                                                                                              Reset          Off
Stop2                       FLASH                                                                  States   Optionally on
                                                                                                    held    Optionally on
       1    0            Off           Off      Off   Disabled1                        Off         States
                                                                                                    held
       1    1            Off           Standby  Off   Disabled Standby

Stop3  0    Don't        Standby       Standby  Off2  Disabled                         Standby

            care

1 Either ATD stop mode or power-down mode depending on the state of ATDPU.
2 Crystal oscillator can be configured to run in stop3. Please see the ICG registers.

3.6.1 Stop1 Mode

The stop1 mode provides the lowest possible standby power consumption by causing the internal circuitry
of the MCU to be powered down. Stop1 can be entered only if the LVD circuit is not enabled in stop modes
(either LVDE or LVDSE not set).

When the MCU is in stop1 mode, all internal circuits that are powered from the voltage regulator are turned
off. The voltage regulator is in a low-power standby state, as is the ATD.

Exit from stop1 is performed by asserting either of the wake-up pins on the MCU: RESET or IRQ. IRQ is
always an active low input when the MCU is in stop1, regardless of how it was configured before entering
stop1.

Entering stop1 mode automatically asserts LVD. Stop1 cannot be exited until VDD > VLVDH/L rising (VDD
must rise above the LVI rearm voltage).

Upon wake-up from stop1 mode, the MCU will start up as from a power-on reset (POR). The CPU will
take the reset vector.

3.6.2 Stop2 Mode

The stop2 mode provides very low standby power consumption and maintains the contents of RAM and
the current state of all of the I/O pins. Stop2 can be entered only if the LVD circuit is not enabled in stop
modes (either LVDE or LVDSE not set).

Before entering stop2 mode, the user must save the contents of the I/O port registers, as well as any other
memory-mapped registers they want to restore after exit of stop2, to locations in RAM. Upon exit of stop2,
these values can be restored by user software before pin latches are opened.

When the MCU is in stop2 mode, all internal circuits that are powered from the voltage regulator are turned
off, except for the RAM. The voltage regulator is in a low-power standby state, as is the ATD. Upon entry
into stop2, the states of the I/O pins are latched. The states are held while in stop2 mode and after exiting
stop2 mode until a 1 is written to PPDACK in SPMSC2.

                                       MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                     35
Chapter 3 Modes of Operation

Exit from stop2 is performed by asserting either of the wake-up pins: RESET or IRQ, or by an RTI
interrupt. IRQ is always an active low input when the MCU is in stop2, regardless of how it was configured
before entering stop2.

Upon wake-up from stop2 mode, the MCU will start up as from a power-on reset (POR) except pin states
remain latched. The CPU will take the reset vector. The system and all peripherals will be in their default
reset states and must be initialized.

After waking up from stop2, the PPDF bit in SPMSC2 is set. This flag may be used to direct user code to
go to a stop2 recovery routine. PPDF remains set and the I/O pin states remain latched until a 1 is written
to PPDACK in SPMSC2.

To maintain I/O state for pins that were configured as general-purpose I/O, the user must restore the
contents of the I/O port registers, which have been saved in RAM, to the port registers before writing to
the PPDACK bit. If the port registers are not restored from RAM before writing to PPDACK, then the
register bits will assume their reset states when the I/O pin latches are opened and the I/O pins will switch
to their reset states.

For pins that were configured as peripheral I/O, the user must reconfigure the peripheral module that
interfaces to the pin before writing to the PPDACK bit. If the peripheral module is not enabled before
writing to PPDACK, the pins will be controlled by their associated port control registers when the I/O
latches are opened.

3.6.3 Stop3 Mode

Upon entering the stop3 mode, all of the clocks in the MCU, including the oscillator itself, are halted. The
ICG is turned off, the ATD is disabled, and the voltage regulator is put in standby. The states of all of the
internal registers and logic, as well as the RAM content, are maintained. The I/O pin states are not latched
at the pin as in stop2. Instead they are maintained by virtue of the states of the internal logic driving the
pins being maintained.

Exit from stop3 is performed by asserting RESET, an asynchronous interrupt pin, or through the real-time
interrupt. The asynchronous interrupt pins are the IRQ or KBI pins.

If stop3 is exited by means of the RESET pin, then the MCU will be reset and operation will resume after
taking the reset vector. Exit by means of an asynchronous interrupt or the real-time interrupt will result in
the MCU taking the appropriate interrupt vector.

A separate self-clocked source (1 kHz) for the real-time interrupt allows a wakeup from stop2 or stop3
mode with no external components. When RTIS2:RTIS1:RTIS0 = 0:0:0, the real-time interrupt function
and this 1-kHz source are disabled. Power consumption is lower when the 1-kHz source is disabled, but in
that case the real-time interrupt cannot wake the MCU from stop.

3.6.4 Active BDM Enabled in Stop Mode

Entry into the active background mode from run mode is enabled if the ENBDM bit in BDCSCR is set.
This register is described in the Chapter 15, "Development Support," section of this data sheet. If ENBDM
is set when the CPU executes a STOP instruction, the system clocks to the background debug logic remain
active when the MCU enters stop mode so background debug communication is still possible. In addition,

    MC9S08GB/GT Data Sheet, Rev. 2.3

36                                    Freescale Semiconductor
                                                                                                 Stop Modes

the voltage regulator does not enter its low-power standby state but maintains full internal regulation. If
the user attempts to enter either stop1 or stop2 with ENBDM set, the MCU will instead enter stop3.

Most background commands are not available in stop mode. The memory-access-with-status commands
do not allow memory access, but they report an error indicating that the MCU is in either stop or wait
mode. The BACKGROUND command can be used to wake the MCU from stop and enter active
background mode if the ENBDM bit is set. After the device enters background debug mode, all
background commands are available. The table below summarizes the behavior of the MCU in stop when
entry into the background debug mode is enabled.

                                            Table 3-2. BDM Enabled Stop Mode Behavior

                         CPU, Digital

Mode PDC PPDC Peripherals, RAM                  ICG  ATD                    Regulator  I/O Pins        RTI
                                                                              Active             Optionally on
                         FLASH                                                          States
                                                                                         held
Stop3 Don't Don't        Standby       Standby  Active Disabled1
              care care

1 Either ATD stop mode or power-down mode depending on the state of ATDPU.

3.6.5 LVD Enabled in Stop Mode

The LVD system is capable of generating either an interrupt or a reset when the supply voltage drops below
the LVD voltage. If the LVD is enabled in stop by setting the LVDE and the LVDSE bits in SPMSC1 when
the CPU executes a STOP instruction, then the voltage regulator remains active during stop mode. If the
user attempts to enter either stop1 or stop2 with the LVD enabled for stop (LVDSE = 1), the MCU will
instead enter stop3. The table below summarizes the behavior of the MCU in stop when the LVD is
enabled.

                                            Table 3-3. LVD Enabled Stop Mode Behavior

                         CPU, Digital

Mode PDC PPDC Peripherals, RAM                  ICG  ATD                    Regulator  I/O Pins        RTI
                                                                              Active             Optionally on
                         FLASH                                                          States
                                                                                         held
Stop3 Don't Don't        Standby       Standby Standby Disabled1
              care care

1 Either ATD stop mode or power-down mode depending on the state of ATDPU.

3.6.6 On-Chip Peripheral Modules in Stop Modes

When the MCU enters any stop mode, system clocks to the internal peripheral modules are stopped. Even
in the exception case (ENBDM = 1), where clocks to the background debug logic continue to operate,
clocks to the peripheral systems are halted to reduce power consumption. Refer to Section 3.6.1, "Stop1
Mode," Section 3.6.2, "Stop2 Mode," and Section 3.6.3, "Stop3 Mode," for specific information on system
behavior in stop modes.

                                       MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                          37
Chapter 3 Modes of Operation

I/O Pins

    All I/O pin states remain unchanged when the MCU enters stop3 mode.
    If the MCU is configured to go into stop2 mode, all I/O pins states are latched before entering stop.
    If the MCU is configured to go into stop1 mode, all I/O pins are forced to their default reset state

         upon entry into stop.

Memory

    All RAM and register contents are preserved while the MCU is in stop3 mode.
    All registers will be reset upon wake-up from stop2, but the contents of RAM are preserved and

         pin states remain latched until the PPDACK bit is written. The user may save any memory-mapped
         register data into RAM before entering stop2 and restore the data upon exit from stop2.
    All registers will be reset upon wake-up from stop1 and the contents of RAM are not preserved.
         The MCU must be initialized as upon reset. The contents of the FLASH memory are nonvolatile
         and are preserved in any of the stop modes.

ICG -- In stop3 mode, the ICG enters its low-power standby state. Either the oscillator or the internal
reference may be kept running when the ICG is in standby by setting the appropriate control bit. In both
stop2 and stop1 modes, the ICG is turned off. Neither the oscillator nor the internal reference can be kept
running in stop2 or stop1, even if enabled within the ICG module.

TPM -- When the MCU enters stop mode, the clock to the TPM1 and TPM2 modules stop. The modules
halt operation. If the MCU is configured to go into stop2 or stop1 mode, the TPM modules will be reset
upon wake-up from stop and must be reinitialized.

ATD -- When the MCU enters stop mode, the ATD will enter a low-power standby state. No conversion

operation will occur while in stop. If the MCU is configured to go into stop2 or stop1 mode, the ATD will
be reset upon wake-up from stop and must be reinitialized.

KBI -- During stop3, the KBI pins that are enabled continue to function as interrupt sources that are
capable of waking the MCU from stop3. The KBI is disabled in stop1 and stop2 and must be reinitialized
after waking up from either of these modes.

SCI -- When the MCU enters stop mode, the clocks to the SCI1 and SCI2 modules stop. The modules
halt operation. If the MCU is configured to go into stop2 or stop1 mode, the SCI modules will be reset
upon wake-up from stop and must be reinitialized.

SPI -- When the MCU enters stop mode, the clocks to the SPI module stop. The module halts operation.
If the MCU is configured to go into stop2 or stop1 mode, the SPI module will be reset upon wake-up from
stop and must be reinitialized.

IIC -- When the MCU enters stop mode, the clocks to the IIC module stops. The module halts operation.
If the MCU is configured to go into stop2 or stop1 mode, the IIC module will be reset upon wake-up from
stop and must be reinitialized.

Voltage Regulator -- The voltage regulator enters a low-power standby state when the MCU enters any
of the stop modes unless the LVD is enabled in stop mode or BDM is enabled.

    MC9S08GB/GT Data Sheet, Rev. 2.3

38                                    Freescale Semiconductor
Chapter 4 Memory

4.1 MC9S08GB/GT Memory Map

As shown in Figure 4-1, on-chip memory in the MC9S08GB/GT series of MCUs consists of RAM,
FLASH program memory for nonvolatile data storage, plus I/O and control/status registers. The registers
are divided into three groups:

    Direct-page registers ($0000 through $007F)
    High-page registers ($1800 through $182B)
    Nonvolatile registers ($FFB0 through $FFBF)

DIRECT PAGE REGISTERS    $0000               DIRECT PAGE REGISTERS  $0000        DIRECT PAGE REGISTERS  $0000
                                                                    $007F             RAM 1024 BYTES
                         $007F                            RAM       $0080                               $007F
                         $0080                       2048 BYTES                                         $0080
                                                                    $087F                               $047F
           RAM                                                      $0880                               $0480
       4096 BYTES
                         $107F               UNIMPLEMENTED                       UNIMPLEMENTED
          FLASH          $1080                  3968 BYTES                          4992 BYTES
       1920 BYTES
                         $17FF               HIGH PAGE REGISTERS    $17FF        HIGH PAGE REGISTERS    $17FF
HIGH PAGE REGISTERS      $1800                                      $1800                               $1800
                                                UNIMPLEMENTED
                         $182B                     26580 BYTES      $182B                               $182B
                         $182C                                      $182C                               $182C

                                                                    $7FFF        UNIMPLEMENTED
                                                                    $8000          42964 BYTES

   FLASH
59348 BYTES

                                                FLASH                                                   $BFFF
                                             32768 BYTES                                                $C000

                                      $FFFF                         $FFFF           FLASH               $FFFF
MC9S08GB60/MC9S08GT60                                                            16384 BYTES
                                             MC9S08GB32/MC9S08GT32
                                                                                 MC9S08GT16

                                             Figure 4-1. MC9S08GB/GT Memory Map

4.1.1 Reset and Interrupt Vector Assignments

Table 4-1 shows address assignments for reset and interrupt vectors. The vector names shown in this table
are the labels used in the Freescale-provided equate file for the MC9S08GB/GT. For more details about

                                             MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                        39
Chapter 4 Memory

resets, interrupts, interrupt priority, and local interrupt mask controls, refer to Chapter 5, "Resets,
Interrupts, and System Configuration."

                                                 Table 4-1. Reset and Interrupt Vectors

                     Address                Vector               Vector Name
                   (High/Low)
                  $FFC0:FFC1      Unused Vector Space                  Vrti
                               (available for user program)           Viic1
                  $FFCA:FFCB                                          Vatd1
                  $FFCC:FFCD                  RTI                 Vkeyboard1
                  $FFCE:FFCF                   IIC                   Vsci2tx
                  $FFD0:FFD1          ATD Conversion                 Vsci2rx
                  $FFD2:FFD3              Keyboard                  Vsci2err
                  $FFD4:FFD5           SCI2 Transmit                 Vsci1tx
                  $FFD6:FFD7           SCI2 Receive                  Vsci1rx
                  $FFD8:FFD9             SCI2 Error                 Vsci1err
                  $FFDA:FFDB           SCI1 Transmit                  Vspi1
                  $FFDC:FFDD           SCI1 Receive                Vtpm2ovf
                  $FFDE:FFDF             SCI1 Error                Vtpm2ch4
                  $FFE0:FFE1                  SPI                  Vtpm2ch3
                  $FFE2:FFE3          TPM2 Overflow                Vtpm2ch2
                  $FFE4:FFE5         TPM2 Channel 4                Vtpm2ch1
                  $FFE6:FFE7         TPM2 Channel 3                Vtpm2ch0
                  $FFE8:FFE9         TPM2 Channel 2                Vtpm1ovf
                  $FFEA:FFEB         TPM2 Channel 1                Vtpm1ch2
                  $FFEC:FFED         TPM2 Channel 0                Vtpm1ch1
                  $FFEE:FFEF          TPM1 Overflow                Vtpm1ch0
                  $FFF0:FFF1         TPM1 Channel 2                    Vicg
                  $FFF2:FFF3         TPM1 Channel 1                    Vlvd
                  $FFF4:FFF5         TPM1 Channel 0                    Virq
                  $FFF6:FFF7                  ICG                      Vswi
                  $FFF8:FFF9        Low Voltage Detect               Vreset
                  $FFFA:FFFB                  IRQ
                  $FFFC:FFFD                  SWI
                  $FFFE:FFFF                 Reset

                               MC9S08GB/GT Data Sheet, Rev. 2.3

40                                                               Freescale Semiconductor
                                                                                                                                   Register Addresses and Bit Assignments

4.2 Register Addresses and Bit Assignments

The registers in the MC9S08GB/GT are divided into these three groups:

    Direct-page registers are located in the first 128 locations in the memory map, so they are
         accessible with efficient direct addressing mode instructions.

    High-page registers are used much less often, so they are located above $1800 in the memory map.
         This leaves more room in the direct page for more frequently used registers and variables.

    The nonvolatile register area consists of a block of 16 locations in FLASH memory at
         $FFB0$FFBF.
         Nonvolatile register locations include:
         -- Three values which are loaded into working registers at reset
         -- An 8-byte backdoor comparison key which optionally allows a user to gain controlled access
             to secure memory
         Because the nonvolatile register locations are FLASH memory, they must be erased and
         programmed like other FLASH memory locations.

Direct-page registers can be accessed with efficient direct addressing mode instructions. Bit manipulation
instructions can be used to access any bit in any direct-page register. Table 4-2 is a summary of all
user-accessible direct-page registers and control bits.

The direct page registers in Table 4-2 can use the more efficient direct addressing mode which only
requires the lower byte of the address. Because of this, the lower byte of the address in column one is
shown in bold text. In Table 4-3 and Table 4-4 the whole address in column one is shown in bold. In
Table 4-2, Table 4-3, and Table 4-4, the register names in column two are shown in bold to set them apart
from the bit names to the right. Cells that are not associated with named bits are shaded. A shaded cell with
a 0 indicates this unused bit always reads as a 0. Shaded cells with dashes indicate unused or reserved bit
locations that could read as 1s or 0s.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    41
Chapter 4 Memory

                        Table 4-2. Direct-Page Register Summary (Sheet 1 of 3)

Address Register Name    Bit 7      6        5       4       3        2            1     Bit 0

$0000 PTAD               PTAD7    PTAD6    PTAD5   PTAD4  PTAD3    PTAD2        PTAD1    PTAD0
$0001 PTAPE             PTAPE7   PTAPE6   PTAPE5  PTAPE4  PTAPE3   PTAPE2       PTAPE1  PTAPE0
$0002 PTASE             PTASE7   PTASE6   PTASE5  PTASE4  PTASE3   PTASE2       PTASE1  PTASE0
$0003 PTADD             PTADD7   PTADD6   PTADD5  PTADD4  PTADD3   PTADD2       PTADD1  PTADD0
$0004 PTBD               PTBD7    PTBD6    PTBD5   PTBD4  PTBD3    PTBD2        PTBD1    PTBD0
$0005 PTBPE             PTBPE7   PTBPE6   PTBPE5  PTBPE4  PTBPE3   PTBPE2       PTBPE1  PTBPE0
$0006 PTBSE             PTBSE7   PTBSE6   PTBSE5  PTBSE4  PTBSE3   PTBSE2       PTBSE1  PTBSE0
$0007 PTBDD             PTBDD7   PTBDD6   PTBDD5  PTBDD4  PTBDD3   PTBDD2       PTBDD1  PTBDD0
$0008 PTCD              PTCD7     PTCD6   PTCD5   PTCD4   PTCD3    PTCD2        PTCD1    PTCD0
$0009 PTCPE             PTCPE7   PTCPE6   PTCPE5  PTCPE4  PTCPE3   PTCPE2       PTCPE1  PTCPE0
$000A PTCSE             PTCSE7   PTCSE6   PTCSE5  PTCSE4  PTCSE3   PTCSE2       PTCSE1  PTCSE0
$000B PTCDD             PTCDD7   PTCDD6   PTCDD5  PTCDD4  PTCDD3   PTCDD2       PTCDD1  PTCDD0
$000C PTDD              PTDD7     PTDD6   PTDD5   PTDD4   PTDD3    PTDD2        PTDD1    PTDD0
$000D PTDPE             PTDPE7   PTDPE6   PTDPE5  PTDPE4  PTDPE3   PTDPE2       PTDPE1  PTDPE0
$000E PTDSE             PTDSE7   PTDSE6   PTDSE5  PTDSE4  PTDSE3   PTDSE2       PTDSE1  PTDSE0
$000F PTDDD             PTDDD7   PTDDD6   PTDDD5  PTDDD4  PTDDD3   PTDDD2       PTDDD1  PTDDD0
$0010 PTED               PTED7    PTED6    PTED5   PTED4  PTED3    PTED2        PTED1    PTED0
$0011 PTEPE             PTEPE7   PTEPE6   PTEPE5  PTEPE4  PTEPE3   PTEPE2       PTEPE1  PTEPE0
$0012 PTESE             PTESE7   PTESE6   PTESE5  PTESE4  PTESE3   PTESE2       PTESE1  PTESE0
$0013 PTEDD             PTEDD7   PTEDD6   PTEDD5  PTEDD4  PTEDD3   PTEDD2       PTEDD1  PTEDD0
$0014 IRQSC                               IRQEDG   IRQPE           IRQACK        IRQIE  IRQMOD
$0015 Reserved              0        0                      IRQF
$0016 KBI1SC               --       --       --      --      --       --           --      --
$0017 KBI1PE            KBEDG7   KBEDG6   KBEDG5  KBEDG4    KBF    KBACK          KBIE  KBIMOD
$0018 SCI1BDH           KBIPE7   KBIPE6   KBIPE5  KBIPE4           KBIPE2       KBIPE1  KBIPE0
$0019 SCI1BDL               0        0             SBR12  KBIPE3    SBR10        SBR9
$001A SCI1C1             SBR7     SBR6        0            SBR11    SBR2         SBR1    SBR8
$001B SCI1C2            LOOPS    SCISWAI   SBR5    SBR4    SBR3                    PE    SBR0
$001C SCI1S1               TIE     TCIE    RSRC       M    WAKE       ILT         RWU
$001D SCI1S2             TDRE       TC      RIE     ILIE              RE           FE      PT
$001E SCI1C3                0        0     RDRF              TE       NF                  SBK
$001F SCI1D                R8       T8              IDLE     OR        0            0      PF
$0020 SCI2BDH             Bit 7      6        0       0       0      NEIE         FEIE    RAF
$0021 SCI2BDL               0        0     TXDIR      0    ORIE        2                  PEIE
$0022 SCI2C1             SBR7     SBR6                4       3     SBR10           1     Bit 0
$0023 SCI2C2            LOOPS    SCISWAI      5            SBR11    SBR2         SBR9    SBR8
$0024 SCI2S1               TIE     TCIE       0    SBR12   SBR3       ILT        SBR1    SBR0
$0025 SCI2S2             TDRE       TC     SBR5    SBR4    WAKE       RE                   PT
$0026 SCI2C3                0        0     RSRC              TE       NF           PE     SBK
$0027 SCI2D                R8       T8      RIE       M      OR        0          RWU      PF
                          Bit 7      6     RDRF     ILIE      0      NEIE          FE     RAF
                                              0     IDLE   ORIE        2                  PEIE
                                           TXDIR              3                     0     Bit 0
                                              5       0                           FEIE
                                                      0
                                                      4                             1

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

42                                                                              Freescale Semiconductor
                                                                       Register Addresses and Bit Assignments

                         Table 4-2. Direct-Page Register Summary (Sheet 2 of 3)

Address Register Name Bit 7             6    5      4              3             2       1     Bit 0

$0028 SPI1C1             SPIE           SPE  SPTIE  MSTR        CPOL   CPHA              SSOE LSBFE

$0029 SPI1C2             0              0    0      MODFEN BIDIROE               0  SPISWAI SPC0

$002A SPI1BR             0       SPPR2 SPPR1 SPPR0                 0   SPR2              SPR1  SPR0

$002B SPI1S              SPRF           0    SPTEF MODF            0             0       0     0

$002C Reserved           0              0    0      0              0             0       0     0

$002D SPI1D              Bit 7          6    5      4              3             2       1     Bit 0

$002E Reserved           0              0    0      0              0             0       0     0

$002F Reserved           0              0    0      0              0             0       0     0

$0030 TPM1SC             TOF            TOIE CPWMS CLKSB CLKSA         PS2               PS1   PS0

$0031 TPM1CNTH           Bit 15         14   13     12             11  10                9     Bit 8

$0032 TPM1CNTL           Bit 7          6    5      4              3             2       1     Bit 0

$0033 TPM1MODH           Bit 15         14   13     12             11  10                9     Bit 8

$0034 TPM1MODL           Bit 7          6    5      4              3             2       1     Bit 0

$0035 TPM1C0SC           CH0F    CH0IE       MS0B   MS0A ELS0B ELS0A                     0     0

$0036 TPM1C0VH           Bit 15         14   13     12             11  10                9     Bit 8

$0037 TPM1C0VL           Bit 7          6    5      4              3             2       1     Bit 0

$0038 TPM1C1SC           CH1F    CH1IE       MS1B   MS1A ELS1B ELS1A                     0     0

$0039 TPM1C1VH           Bit 15         14   13     12             11  10                9     Bit 8

$003A TPM1C1VL           Bit 7          6    5      4              3             2       1     Bit 0

$003B TPM1C2SC           CH2F    CH2IE       MS2B   MS2A ELS2B ELS2A                     0     0

$003C TPM1C2VH           Bit 15         14   13     12             11  10                9     Bit 8

$003D TPM1C2VL           Bit 7          6    5      4              3             2       1     Bit 0

$003E  Reserved         --             --   --     --             --  --                --    --
$003F
                         --             --   --     --             --  --                --    --

$0040 PTFD               PTFD7 PTFD6 PTFD5 PTFD4 PTFD3 PTFD2 PTFD1 PTFD0

$0041 PTFPE              PTFPE7 PTFPE6 PTFPE5 PTFPE4 PTFPE3 PTFPE2 PTFPE1 PTFPE0

$0042 PTFSE              PTFSE7 PTFSE6 PTFSE5 PTFSE4 PTFSE3 PTFSE2 PTFSE1 PTFSE0

$0043 PTFDD              PTFDD7 PTFDD6 PTFDD5 PTFDD4 PTFDD3 PTFDD2 PTFDD1 PTFDD0

$0044 PTGD               PTGD7 PTGD6 PTGD5 PTGD4 PTGD3 PTGD2 PTGD1 PTGD0

$0045 PTGPE              PTGPE7 PTGPE6 PTGPE5 PTGPE4 PTGPE3 PTGPE2 PTGPE1 PTGPE0

$0046 PTGSE              PTGSE7 PTGSE6 PTGSE5 PTGSE4 PTGSE3 PTGSE2 PTGSE1 PTGSE0

$0047 PTGDD              PTGDD7 PTGDD6 PTGDD5 PTGDD4 PTGDD3 PTGDD2 PTGDD1 PTGDD0

$0048 ICGC1              0       RANGE REFS               CLKS         OSCSTEN 0*              0

$0049 ICGC2              LOLRE               MFD               LOCRE                     RFD

$004A ICGS1                      CLKST       REFST LOLS         LOCK   LOCS              ERCS  ICGIF

$004B ICGS2              0              0    0      0              0             0       0     DCOS

$004C ICGFLTU            0              0    0      0                               FLT

$004D ICGFLTL                                             FLT

$004E ICGTRM                                              TRIM

                         * This bit is reserved for Freescale Semiconductor internal use only. Always write a 0 to this bit.

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                               43
Chapter 4 Memory

                  Table 4-2. Direct-Page Register Summary (Sheet 3 of 3)

Address Register Name Bit 7        6      5       4            3          2          1      Bit 0

$004F Reserved    0                0      0       0            0          0          0      0

$0050   ATD1C     ATDPU        DJM         RES8   SGN                           PRS
$0051   ATD1SC      CCF       ATDIE       ATDCO
$0052   ATD1RH      Bit 7                                                ATDCH
$0053   ATD1RL      Bit 7        6            5
$0054   ATD1PE                   6            5   4            3          2          1        Bit 0
$0055            ATDPE7     ATDPE6       ATDPE5                                              Bit 0
$0057   Reserved     --         --           --   4            3          2          1      ATDPE0
$0058                --         --           --                                                --
$0059   IIC1A                                     ATDPE4 ATDPE3 ATDPE2 ATDPE1                  --
$005A   IIC1F                               MST
$005B   IIC1C                              BUSY   --           --        --          --         0
$005C   IIC1S
$005D  IIC1D                                --   --           --        --          --         0
$005F                                        --                                              RXAK
$0060   Reserved                          CPWMS   ADDR
$0061                                        13                                                --
$0062   TPM2SC               MULT             5                     ICR                        --
$0063   TPM2CNTH                             13                                               PS0
$0064   TPM2CNTL  IICEN            IICIE      5   TX          TXAK       RSTA        0        Bit 8
$0065   TPM2MODH                           MS0B                                               Bit 0
$0066   TPM2MODL  TCF              IAAS      13   ARBL         0         SRW         IICIF    Bit 8
$0067   TPM2C0SC                              5                                               Bit 0
$0068   TPM2C0VH                           MS1B         DATA                                    0
$0069   TPM2C0VL                             13                                               Bit 8
$006A   TPM2C1SC    --               --       5   --           --        --          --       Bit 0
$006B   TPM2C1VH    --               --    MS2B                                                 0
$006C   TPM2C1VL  TOF              TOIE      13   --           --        --          --       Bit 8
$006D   TPM2C2SC  Bit 15             14       5                                               Bit 0
$006E   TPM2C2VH  Bit 7              6     MS3B   CLKSB CLKSA            PS2         PS1        0
$006F   TPM2C2VL  Bit 15             14      13                                               Bit 8
$0070   TPM2C3SC  Bit 7              6        5   12           11        10          9        Bit 0
$0071   TPM2C3VH  CH0F             CH0IE   MS4B                                                 0
$0072   TPM2C3VL  Bit 15             14      13   4            3          2          1        Bit 8
$0073   TPM2C4SC  Bit 7              6        5                                               Bit 0
$0074  TPM2C4VH  CH1F             CH1IE     --   12           11        10          9          0
$007F   TPM2C4VL  Bit 15             14      --                                               Bit 8
                  Bit 7              6            4            3          2          1        Bit 0
        Reserved  CH2F             CH2IE                                                       --
                  Bit 15             14           MS0A ELS0B ELS0A                   0         --
                  Bit 7              6
                  CH3F             CH3IE          12           11        10          9
                  Bit 15             14
                  Bit 7              6            4            3          2          1
                  CH4F             CH4IE
                  Bit 15             14           MS1A ELS1B ELS1A                   0
                  Bit 7              6
                    --               --           12           11        10          9
                    --               --
                                                  4            3          2          1

                                                  MS2A ELS2B ELS2A                   0

                                                  12           11        10          9

                                                  4            3          2          1

                                                  MS3A ELS3B ELS3A                   0

                                                  12           11        10          9

                                                  4            3          2          1

                                                  MS4A ELS4B ELS4A                   0

                                                  12           11        10          9

                                                  4            3          2          1

                                                  --           --        --          --

                                                  --           --        --          --

                             MC9S08GB/GT Data Sheet, Rev. 2.3

44                                                                              Freescale Semiconductor
                                                                    Register Addresses and Bit Assignments

High-page registers, shown in Table 4-3, are accessed much less often than other I/O and control registers
so they have been located outside the direct addressable memory space, starting at $1800.

                                               Table 4-3. High-Page Register Summary

Address Register Name      Bit 7      6       5         4      3        2       1    Bit 0

$1800 SRS                  POR       PIN    COP       ILOP     0      ICG     LVD      0
                             0        0       0         0      0        0       0    BDFR
$1801 SBDFR                        COPT                --      0        0
                          COPE        --   STOPE       --      --      --   BKGDPE     --
$1802 SOPT                  --        --      --       --      --      --      --      --
                            --      REV2      --             ID11              --      --
$1803   Reserved                    ID6             REV0     ID3     ID10     ID9    ID8
$1805                     REV3    RTIACK    REV1       ID4     0       ID2     ID1    ID0
                            ID7   LVDACK     ID5      RTIE  LVDSE    RTIS2           RTIS0
$1806 SDIDH                RTIF   LVWACK  RTICLKS   LVDRE   PPDF     LVDE    RTIS1     0
                          LVDF        --   LVDIE     LVWV      --   PPDACK      0    PPDC
$1807 SDIDL               LVWF        --    LVDV       --      --      --              --
                            --       14       --       --     11       --     PDC      --
$1808 SRTISC                --        6       --       12      3       10      --     Bit 8
                          Bit 15     14      13         4     11        2      --     Bit 0
$1809 SPMSC1               Bit 7      6       5        12      3       10       9     Bit 8
                          Bit 15     14      13         4     11        2       1     Bit 0
$180A SPMSC2               Bit 7      6       5        12      3       10       9     Bit 8
                          Bit 15    ARM      13         4    RWA        2       1     Bit 0
$180B   Reserved          Bit 7   BEGIN      5     BRKEN   TRG3    RWAEN       9   RWBEN
$180F                    DBGEN       BF     TAG         0    CNT3    TRG2       1    TRG0
                         TRGSEL       --      0         0      --    CNT2     RWB    CNT0
$1810 DBGCAH                AF        --   ARMF        --      --      --    TRG1      --
                            --    PRDIV8      --       --    DIV3      --    CNT1      --
$1811 DBGCAL                --    FNORED      --      DIV4     0      DIV2     --    DIV0
                          DIVLD       --    DIV5        0      --       0      --   SEC00
$1812 DBGCBH             KEYEN        0       0        --      0       --     DIV1     --
                            --     FPDIS      --        0    FPS0       0    SEC01     0
$1813 DBGCBL                 0     FCCF   KEYACC     FPS1      0        0      --      0
                         FPOPEN   FCMD6     FPS2   FACCERR  FCMD3   FBLANK      0      0
$1814 DBGFH               FCBEF       --  FPVIOL    FCMD4      --   FCMD2       0   FCMD0
                         FCMD7        --  FCMD5        --      --      --       0      --
$1815 DBGFL                 --                --       --              --   FCMD1      --
                            --                --                               --
$1816 DBGC                                                                     --

$1817 DBGT

$1818 DBGS

$1819   Reserved
$181F

$1820 FCDIV

$1821 FOPT

$1822 Reserved

$1823 FCNFG

$1824 FPROT

$1825 FSTAT

$1826 FCMD

$1827   Reserved
$182B

Nonvolatile FLASH registers, shown in Table 4-4, are located in the FLASH memory. These registers
include an 8-byte backdoor key which optionally can be used to gain access to secure memory resources.
During reset events, the contents of NVPROT and NVOPT in the nonvolatile register area of the FLASH
memory are transferred into corresponding FPROT and FOPT working registers in the high-page registers
to control security and block protection options.

                                  MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                             45
Chapter 4 Memory

                             Table 4-4. Nonvolatile Register Summary

Address Register Name Bit 7         6   5                             4     3                2   1      Bit 0

$FFB0 NVBACKKEY                                                     8-Byte Comparison Key
$FFB7

$FFB8 Reserved        --          --  --                            --    --               --    --     --
$FFBC                                                                                              --     --
                        --          --  --                            --    --               --     0      0
                                                                                                   --     --
$FFBD  NVPROT           FPOPEN FPDIS FPS2                             FPS1  FPS0             0   SEC01  SEC00
$FFBE  Reserved1
                        --          --  --                            --    --               --

$FFBF NVOPT             KEYEN FNORED    0                             0     0                0

1 This location is used to store the factory trim value for the ICG.

Provided the key enable (KEYEN) bit is 1, the 8-byte comparison key can be used to temporarily
disengage memory security. This key mechanism can be accessed only through user code running in secure
memory. (A security key cannot be entered directly through background debug commands.) This security
key can be disabled completely by programming the KEYEN bit to 0. If the security key is disabled, the
only way to disengage security is by mass erasing the FLASH if needed (normally through the background
debug interface) and verifying that FLASH is blank. To avoid returning to secure mode after the next reset,
program the security bits (SEC01:SEC00) to the unsecured state (1:0).

4.3 RAM

The MC9S08GB/GT includes static RAM. The locations in RAM below $0100 can be accessed using the
more efficient direct addressing mode, and any single bit in this area can be accessed with the bit
manipulation instructions (BCLR, BSET, BRCLR, and BRSET). Locating the most frequently accessed
program variables in this area of RAM is preferred.

The RAM retains data when the MCU is in low-power wait, stop2, or stop3 mode. At power-on or after
wakeup from stop1, the contents of RAM are uninitialized. RAM data is unaffected by any reset provided
that the supply voltage does not drop below the minimum value for RAM retention.

For compatibility with older M68HC05 MCUs, the HCS08 resets the stack pointer to $00FF. In the
MC9S08GB/GT, it is usually best to re-initialize the stack pointer to the top of the RAM so the direct page
RAM can be used for frequently accessed RAM variables and bit-addressable program variables. Include
the following 2-instruction sequence in your reset initialization routine (where RamLast is equated to the
highest address of the RAM in the Freescale-provided equate file).

                  LDHX  #RamLast+1     ;point one past RAM
                  TXS                  ;SP<-(H:X-1)

When security is enabled, the RAM is considered a secure memory resource and is not accessible through
BDM or through code executing from non-secure memory. See Section 4.5, "Security" for a detailed
description of the security feature.

4.4 FLASH

The FLASH memory is intended primarily for program storage. In-circuit programming allows the
operating program to be loaded into the FLASH memory after final assembly of the application product.

                                    MC9S08GB/GT Data Sheet, Rev. 2.3

46                                                                                               Freescale Semiconductor
                                                                                                                                                                                    FLASH

It is possible to program the entire array through the single-wire background debug interface. Because no
special voltages are needed for FLASH erase and programming operations, in-application programming
is also possible through other software-controlled communication paths. For a more detailed discussion of
in-circuit and in-application programming, refer to the HCS08 Family Reference Manual, Volume I,
Freescale Semiconductor document order number HCS08RMv1/D.

4.4.1 Features

Features of the FLASH memory include:
    FLASH Size
         -- MC9S08GB60/MC9S08GT60 -- 61268 bytes (120 pages of 512 bytes each)
         -- MC9S08GB32/MC9S08GT32-- 32768 bytes (64 pages of 512 bytes each)
         -- MC9S08GT16 -- 16384 bytes (32 pages of 512 bytes each)
    Single power supply program and erase
    Command interface for fast program and erase operation
    Up to 100,000 program/erase cycles at typical voltage and temperature
    Flexible block protection
    Security feature for FLASH and RAM
    Auto power-down for low-frequency read accesses

4.4.2 Program and Erase Times

Before any program or erase command can be accepted, the FLASH clock divider register (FCDIV) must

be written to set the internal clock for the FLASH module to a frequency (fFCLK) between 150 kHz and
200 kHz (see Table 4.6.1). This register can be written only once, so normally this write is done during

reset initialization. FCDIV cannot be written if the access error flag, FACCERR in FSTAT, is set. The user

must ensure that FACCERR is not set before writing to the FCDIV register. One period of the resulting

clock (1/fFCLK) is used by the command processor to time program and erase pulses. An integer number
of these timing pulses is used by the command processor to complete a program or erase command.

Table 4-5 shows program and erase times. The bus clock frequency and FCDIV determine the frequency
of FCLK (fFCLK). The time for one cycle of FCLK is tFCLK = 1/fFCLK. The times are shown as a number
of cycles of FCLK and as an absolute time for the case where tFCLK = 5 s. Program and erase times
shown include overhead for the command state machine and enabling and disabling of program and erase
voltages.

                                                  Table 4-5. Program and Erase Times

             Parameter          Cycles of FCLK             Time if FCLK = 200 kHz
  Byte program                            9                            45 s
  Byte program (burst)                    4                            20 s1
  Page erase                                                           20 ms
  Mass erase                           4000                           100 ms
1 Excluding start/end overhead        20,000

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                            47
Chapter 4 Memory

4.4.3 Program and Erase Command Execution

The steps for executing any of the commands are listed below. The FCDIV register must be initialized and
any error flags cleared before beginning command execution. The command execution steps are:

    1. Write a data value to an address in the FLASH array. The address and data information from this
         write is latched into the FLASH interface. This write is a required first step in any command
         sequence. For erase and blank check commands, the value of the data is not important. For page
         erase commands, the address may be any address in the 512-byte page of FLASH to be erased. For
         mass erase and blank check commands, the address can be any address in the FLASH memory.
         Whole pages of 512 bytes are the smallest blocks of FLASH that may be erased. In the 60K
         version, there are two instances where the size of a block that is accessible to the user is less than
         512 bytes: the first page following RAM, and the first page following the high page registers. These
         pages are overlapped by the RAM and high page registers, respectively.

                                                           NOTE

                  Do not program any byte in the FLASH more than once after a successful
                  erase operation. Reprogramming bits in a byte which is already
                  programmed is not allowed without first erasing the page in which the byte
                  resides or mass erasing the entire FLASH memory. Programming without
                  first erasing may disturb data stored in the FLASH.

    2. Write the command code for the desired command to FCMD. The five valid commands are blank
         check ($05), byte program ($20), burst program ($25), page erase ($40), and mass erase ($41).
         The command code is latched into the command buffer.

    3. Write a 1 to the FCBEF bit in FSTAT to clear FCBEF and launch the command (including its
         address and data information).

A partial command sequence can be aborted manually by writing a 0 to FCBEF any time after the write to
the memory array and before writing the 1 that clears FCBEF and launches the complete command.
Aborting a command in this way sets the FACCERR access error flag which must be cleared before
starting a new command.

A strictly monitored procedure must be adhered to, or the command will not be accepted. This minimizes
the possibility of any unintended change to the FLASH memory contents. The command complete flag
(FCCF) indicates when a command is complete. The command sequence must be completed by clearing
FCBEF to launch the command. Figure 4-2 is a flowchart for executing all of the commands except for
burst programming. The FCDIV register must be initialized before using any FLASH commands. This
must be done only once following a reset.

    MC9S08GB/GT Data Sheet, Rev. 2.3

48                                    Freescale Semiconductor
                                                                                                 FLASH

                            START

                                                    0
                         FACCERR ?

                         CLEAR ERROR

                         WRITE TO FCDIV(1)             (1) Only required once
                                                         after reset.

                                  WRITE TO FLASH
                         TO BUFFER ADDRESS AND DATA

                           WRITE COMMAND TO FCMD

                           WRITE 1 TO FCBEF            (2) Wait at least four bus cycles before
                                                         checking FCBEF or FCCF.
                         TO LAUNCH COMMAND
                          AND CLEAR FCBEF (2)

                         FPVIO OR                      YES
                         FACCERR ?                                     ERROR EXIT

                                  NO

                                 0
                                                   FCCF ?

                                                         1
                                                   DONE

                         Figure 4-2. FLASH Program and Erase Flowchart

4.4.4 Burst Program Execution

The burst program command is used to program sequential bytes of data in less time than would be
required using the standard program command. This is possible because the high voltage to the FLASH
array does not need to be disabled between program operations. Ordinarily, when a program or erase
command is issued, an internal charge pump associated with the FLASH memory must be enabled to
supply high voltage to the array. Upon completion of the command, the charge pump is turned off. When
a burst program command is issued, the charge pump is enabled and then remains enabled after completion
of the burst program operation if the following two conditions are met:

    1. The next burst program command has been queued before the current program operation has
         completed.

    2. The next sequential address selects a byte on the same physical row as the current byte being
         programmed. A row of FLASH memory consists of 64 bytes. A byte within a row is selected by
         addresses A5 through A0. A new row begins when addresses A5 through A0 are all zero.

The first byte of a series of sequential bytes being programmed in burst mode will take the same amount
of time to program as a byte programmed in standard mode. Subsequent bytes will program in the burst

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                          49
Chapter 4 Memory

program time provided that the conditions above are met. In the case the next sequential address is the
beginning of a new row, the program time for that byte will be the standard time instead of the burst time.
This is because the high voltage to the array must be disabled and then enabled again. If a new burst
command has not been queued before the current command completes, then the charge pump will be
disabled and high voltage removed from the array.

                                                                              START

                                                                                                      0
                                                                          FACCERR ?

                                                                                      1

                                                                        CLEAR ERROR

         WRITE TO FCDIV(1)                (1) Only required once
                                            after reset.

         FCBEF ?                     0

         1

                  WRITE TO FLASH
         TO BUFFER ADDRESS AND DATA

         WRITE COMMAND TO FCMD

           WRITE 1 TO FCBEF               (2) Wait at least four bus cycles before
                                            checking FCBEF or FCCF.
         TO LAUNCH COMMAND
          AND CLEAR FCBEF (2)

         FPVIO OR                    YES

         FACCERR ?                        ERROR EXIT

    YES  NO

         NEW BURST COMMAND ?

         NO

        0
                         FCCF ?

                               1
                          DONE

    Figure 4-3. FLASH Burst Program Flowchart

4.4.5 Access Errors

An access error occurs whenever the command execution protocol is violated.
    Any of the following specific actions will cause the access error flag (FACCERR) in FSTAT to be
         set. FACCERR must be cleared by writing a 1 to FACCERR in FSTAT before any command can
         be processed.

         MC9S08GB/GT Data Sheet, Rev. 2.3

50                                                                                  Freescale Semiconductor
                                                                                                                                                                                    FLASH

    Writing to a FLASH address before the internal FLASH clock frequency has been set by writing
         to the FCDIV register

    Writing to a FLASH address while FCBEF is not set (A new command cannot be started until the
         command buffer is empty.)

    Writing a second time to a FLASH address before launching the previous command (There is only
         one write to FLASH for every command.)

    Writing a second time to FCMD before launching the previous command (There is only one write
         to FCMD for every command.)

    Writing to any FLASH control register other than FCMD after writing to a FLASH address
    Writing any command code other than the five allowed codes ($05, $20, $25, $40, or $41) to

         FCMD
    Accessing (read or write) any FLASH control register other than the write to FSTAT (to clear

         FCBEF and launch the command) after writing the command to FCMD
    The MCU enters stop mode while a program or erase command is in progress (The command is

         aborted.)
    Writing the byte program, burst program, or page erase command code ($20, $25, or $40) with a

         background debug command while the MCU is secured (The background debug controller can
         only do blank check and mass erase commands when the MCU is secure.)
    Writing 0 to FCBEF to cancel a partial command

4.4.6 FLASH Block Protection

Block protection prevents program or erase changes for FLASH memory locations in a designated address
range. Mass erase is disabled when any block of FLASH is protected. The MC9S08GB/GT allows a block
of memory at the end of FLASH, and/or the entire FLASH memory to be block protected. A disable
control bit and a 3-bit control field, allows the user to set the size of this block. A separate control bit allows
block protection of the entire FLASH memory array. All seven of these control bits are located in the
FPROT register (see Section 4.6.4, "FLASH Protection Register (FPROT and NVPROT)").

At reset, the high-page register (FPROT) is loaded with the contents of the NVPROT location which is in
the nonvolatile register block of the FLASH memory. The value in FPROT cannot be changed directly
from application software so a runaway program cannot alter the block protection settings. If the last 512
bytes of FLASH which includes the NVPROT register is protected, the application program cannot alter
the block protection settings (intentionally or unintentionally). The FPROT control bits can be written by
background debug commands to allow a way to erase a protected FLASH memory.

One use for block protection is to block protect an area of FLASH memory for a bootloader program. This
bootloader program then can be used to erase the rest of the FLASH memory and reprogram it. Because
the bootloader is protected, it remains intact even if MCU power is lost in the middle of an erase and
reprogram operation.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    51
Chapter 4 Memory

4.4.7 Vector Redirection

Whenever any block protection is enabled, the reset and interrupt vectors will be protected. Vector
redirection allows users to modify interrupt vector information without unprotecting bootloader and reset
vector space. Vector redirection is enabled by programming the FNORED bit in the NVOPT register
located at address $FFBF to zero. For redirection to occur, at least some portion but not all of the FLASH
memory must be block protected by programming the NVPROT register located at address $FFBD. All of
the interrupt vectors (memory locations $FFC0$FFFD) are redirected, while the reset vector
($FFFE:FFFF) is not. When more than 32K of memory is protected, vector redirection must not be
enabled.

For example, if 512 bytes of FLASH are protected, the protected address region is from $FE00 through
$FFFF. The interrupt vectors ($FFC0$FFFD) are redirected to the locations $FDC0$FDFD. Now, if an
SPI interrupt is taken for instance, the values in the locations $FDE0:FDE1 are used for the vector instead
of the values in the locations $FFE0:FFE1. This allows the user to reprogram the unprotected portion of
the FLASH with new program code including new interrupt vector values while leaving the protected area,
which includes the default vector locations, unchanged.

4.5 Security

The MC9S08GB/GT includes circuitry to prevent unauthorized access to the contents of FLASH and
RAM memory. When security is engaged, FLASH and RAM are considered secure resources. Direct-page
registers, high-page registers, and the background debug controller are considered unsecured resources.
Programs executing within secure memory have normal access to any MCU memory locations and
resources. Attempts to access a secure memory location with a program executing from an unsecured
memory space or through the background debug interface are blocked (writes are ignored and reads return
all 0s).

Security is engaged or disengaged based on the state of two nonvolatile register bits (SEC01:SEC00) in
the FOPT register. During reset, the contents of the nonvolatile location NVOPT are copied from FLASH
into the working FOPT register in high-page register space. A user engages security by programming the
NVOPT location which can be done at the same time the FLASH memory is programmed. The 1:0 state
disengages security while the other three combinations engage security. Notice the erased state (1:1)
makes the MCU secure. During development, whenever the FLASH is erased, it is good practice to
immediately program the SEC00 bit to 0 in NVOPT so SEC01:SEC00 = 1:0. This would allow the MCU
to remain unsecured after a subsequent reset.

The on-chip debug module cannot be enabled while the MCU is secure. The separate background debug
controller can still be used for background memory access commands, but the MCU cannot enter active
background mode except by holding BKGD/MS low at the rising edge of reset.

A user can choose to allow or disallow a security unlocking mechanism through an 8-byte backdoor
security key. If the nonvolatile KEYEN bit in NVOPT/FOPT is 0, the backdoor key is disabled and there

    MC9S08GB/GT Data Sheet, Rev. 2.3

52                                    Freescale Semiconductor
                                                                                                                                             FLASH Registers and Control Bits

is no way to disengage security without completely erasing all FLASH locations. If KEYEN is 1, a secure
user program can temporarily disengage security by:

    1. Writing 1 to KEYACC in the FCNFG register. This makes the FLASH module interpret writes to
         the backdoor comparison key locations (NVBACKKEY through NVBACKKEY+7) as values to
         be compared against the key rather than as the first step in a FLASH program or erase command.

    2. Writing the user-entered key values to the NVBACKKEY through NVBACKKEY+7 locations.
         These writes must be done in order, starting with the value for NVBACKKEY and ending with
         NVBACKKEY+7. STHX should not be used for these writes because these writes cannot be done
         on adjacent bus cycles. User software normally would get the key codes from outside the MCU
         system through a communication interface such as a serial I/O.

    3. Writing 0 to KEYACC in the FCNFG register. If the 8-byte key that was just written matches the
         key stored in the FLASH locations, SEC01:SEC00 are automatically changed to 1:0 and security
         will be disengaged until the next reset.

The security key can be written only from RAM, so it cannot be entered through background commands
without the cooperation of a secure user program. The FLASH memory cannot be accessed by read
operations while KEYACC is set.

The backdoor comparison key (NVBACKKEY through NVBACKKEY+7) is located in FLASH memory
locations in the nonvolatile register space so users can program these locations just as they would program
any other FLASH memory location. The nonvolatile registers are in the same 512-byte block of FLASH
as the reset and interrupt vectors, so block protecting that space also block protects the backdoor
comparison key. Block protects cannot be changed from user application programs, so if the vector space
is block protected, the backdoor security key mechanism cannot permanently change the block protect,
security settings, or the backdoor key.

Security can always be disengaged through the background debug interface by performing these steps:

    1. Disable any block protections by writing FPROT. FPROT can be written only with background
         debug commands, not from application software.

    2. Mass erase FLASH, if necessary.
    3. Blank check FLASH. Provided FLASH is completely erased, security is disengaged until the next

         reset.
         To avoid returning to secure mode after the next reset, program NVOPT so SEC01:SEC00 = 1:0.

4.6 FLASH Registers and Control Bits

The FLASH module has nine 8-bit registers in the high-page register space, three locations in the
nonvolatile register space in FLASH memory that are copied into three corresponding high-page control
registers at reset. There is also an 8-byte comparison key in FLASH memory. Refer to Table 4-3 and
Table 4-4 for the absolute address assignments for all FLASH registers. This section refers to registers and
control bits only by their names. A Freescale-provided equate or header file normally is used to translate
these names into the appropriate absolute addresses.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    53
Chapter 4 Memory

4.6.1 FLASH Clock Divider Register (FCDIV)

Bit 7 of this register is a read-only status flag. Bits 6 through 0 may be read at any time but can be written
only one time. Before any erase or programming operations are possible, write to this register to set the
frequency of the clock for the nonvolatile memory system within acceptable limits.

                  Bit 7              6  5  4             3                 2  1         Bit 0

                  Read: DIVLD
                                         PRDIV8 DIV5 DIV4 DIV3 DIV2 DIV1 DIV0

                  Write:

                  Reset: 0           0  0  0             0                 0  0         0

                            = Unimplemented or Reserved

                  Figure 4-4. FLASH Clock Divider Register (FCDIV)

DIVLD -- Divisor Loaded Status Flag

    When set, this read-only status flag indicates that the FCDIV register has been written since reset.
    Reset clears this bit and the first write to this register causes this bit to become set regardless of the
    data written.

       1 = FCDIV has been written since reset; erase and program operations enabled for FLASH.
       0 = FCDIV has not been written since reset; erase and program operations disabled for FLASH.

PRDIV8 -- Prescale (Divide) FLASH Clock by 8
        1 = Clock input to the FLASH clock divider is the bus rate clock divided by 8.
        0 = Clock input to the FLASH clock divider is the bus rate clock.

DIV5:DIV0 -- Divisor for FLASH Clock Divider

    The FLASH clock divider divides the bus rate clock (or the bus rate clock divided by 8 if PRDIV8 = 1)
    by the value in the 6-bit DIV5:DIV0 field plus one. The resulting frequency of the internal FLASH
    clock must fall within the range of 200 kHz to 150 kHz for proper FLASH operations. Program/erase
    timing pulses are one cycle of this internal FLASH clock, which corresponds to a range of 5 s to
    6.7 s. The automated programming logic uses an integer number of these pulses to complete an erase
    or program operation.

                  if PRDIV8 = 0 -- fFCLK = fBus ([DIV5:DIV0] + 1)                            Eqn. 4-1

                  if PRDIV8 = 1 -- fFCLK = fBus (8 ([DIV5:DIV0] + 1))                      Eqn. 4-2

Table 4-6 shows the appropriate values for PRDIV8 and DIV5:DIV0 for selected bus frequencies.

                            MC9S08GB/GT Data Sheet, Rev. 2.3

54                                                                            Freescale Semiconductor
                                                                            FLASH Registers and Control Bits

                                   Table 4-6. FLASH Clock Divider Settings

  fBus                   PRDIV8         DIV5:DIV0     fFCLK          Program/Erase Timing Pulse
                         (Binary)       (Decimal)                         (5 s Min, 6.7 s Max)
20 MHz                                             192.3 kHz
10 MHz                       1               12     200 kHz                          5.2 s
8 MHz                       0               49     200 kHz                           5 s
4 MHz                       0               39     200 kHz                           5 s
2 MHz                       0               19     200 kHz                           5 s
1 MHz                       0                9     200 kHz                           5 s
200 kHz                      0                4     200 kHz                           5 s
150 kHz                      0                0     150 kHz                           5 s
                             0                0                                      6.7 s

4.6.2 FLASH Options Register (FOPT and NVOPT)

During reset, the contents of the nonvolatile location NVOPT are copied from FLASH into FOPT. Bits 5
through 2 are not used and always read 0. This register may be read at any time, but writes have no meaning
or effect. To change the value in this register, erase and reprogram the NVOPT location in FLASH memory
as usual and then issue a new MCU reset.

                                 Bit 7  6          5          4      3      2  1                                Bit 0
                                                                                                               SEC00
                         Read: KEYEN FNORED        0          0      0      0  SEC01

                         Write:

                         Reset:         This register is loaded from nonvolatile location NVOPT during reset.

                                        = Unimplemented or Reserved

                                 Figure 4-5. FLASH Options Register (FOPT)

KEYEN -- Backdoor Key Mechanism Enable

When this bit is 0, the backdoor key mechanism cannot be used to disengage security. The backdoor
key mechanism is accessible only from user (secured) firmware. BDM commands cannot be used to
write key comparison values that would unlock the backdoor key. For more detailed information about
the backdoor key mechanism, refer to Section 4.5, "Security."

   1 = If user firmware writes an 8-byte value that matches the nonvolatile backdoor key
         (NVBACKKEY through NVBACKKEY+7, in that order), security is temporarily disengaged
         until the next MCU reset.

   0 = No backdoor key access allowed.

FNORED -- Vector Redirection Disable

    When this bit is 1, vector redirection is disabled.
        1 = Vector redirection disabled.
        0 = Vector redirection enabled.

                                        MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                55
Chapter 4 Memory

SEC01:SEC00 -- Security State Code

    This 2-bit field determines the security state of the MCU as shown in Table 4-7. When the MCU is
    secure, the contents of RAM and FLASH memory cannot be accessed by instructions from any
    unsecured source including the background debug interface. For more detailed information about
    security, refer to Section 4.5, "Security."

                                                          Table 4-7. Security States

                            SEC01:SEC00         Description

                            0:0                          secure

                            0:1                          secure

                            1:0                 unsecured

                            1:1                          secure

SEC01:SEC00 changes to 1:0 after successful backdoor key entry or a successful blank check of FLASH.

4.6.3 FLASH Configuration Register (FCNFG)

Bits 7 through 5 may be read or written at any time. Bits 4 through 0 always read 0 and cannot be written.

                  Bit 7     6            5      4                3  2  1  Bit 0

                  Read: 0   0                   0                0  0  0  0
                  Write:
                                        KEYACC

                  Reset: 0  0            0      0                0  0  0  0

                            = Unimplemented or Reserved

                  Figure 4-6. FLASH Configuration Register (FCNFG)

KEYACC -- Enable Writing of Access Key

    This bit enables writing of the backdoor comparison key. For more detailed information about the
    backdoor key mechanism, refer to Section 4.5, "Security."

       1 = Writes to NVBACKKEY ($FFB0$FFB7) are interpreted as comparison key writes.
             Reads of the FLASH return invalid data.

       0 = Writes to $FFB0$FFB7 are interpreted as the start of a FLASH programming or erase
             command.

4.6.4 FLASH Protection Register (FPROT and NVPROT)

During reset, the contents of the nonvolatile location NVPROT is copied from FLASH into FPROT. Bits 0,
1, and 2 are not used and each always reads as 0. This register may be read at any time, but user program
writes have no meaning or effect. Background debug commands can write to FPROT.

                            MC9S08GB/GT Data Sheet, Rev. 2.3

56                                                                     Freescale Semiconductor
                                                                                     FLASH Registers and Control Bits

                         Bit 7  6                 5    4    3                     2  1                  Bit 0

                Read: FPOPEN FPDIS FPS2 FPS1 FPS0                                 0  0                  0

                Write: 1        (1)               (1)  (1)  (1)

                Reset:          This register is loaded from nonvolatile location NVPROT during reset.

                                              = Unimplemented or Reserved
1 Background commands can be used to change the contents of these bits in FPROT.

                         Figure 4-7. FLASH Protection Register (FPROT)

FPOPEN -- Open Unprotected FLASH for Program/Erase
        1 = Any FLASH location, not otherwise block protected or secured, may be erased or programmed.
        0 = Entire FLASH memory is block protected (no program or erase allowed).

FPDIS -- FLASH Protection Disable
        1 = No FLASH block is protected.
        0 = FLASH block specified by FPS2:FPS0 is block protected (program and erase not allowed).

FPS2:FPS1:FPS0 -- FLASH Protect Size Selects

    When FPDIS = 0, this 3-bit field determines the size of a protected block of FLASH locations at the
    high address end of the FLASH (see Table 4-8). Protected FLASH locations cannot be erased or
    programmed.

                                               Table 4-8. High Address Protected Block

FPS2:FPS1:FPS0           Protected Address Range       Protected Block Size          Redirected Vectors1

0:0:0                    $FE00$FFFF                    512 bytes                    $FDC0$FDFD2
                                                       1024 bytes                    $FBC0$FBFD
0:0:1                    $FC00$FFFF                   2048 bytes                     $F7C0$F7FD
0:1:0                    $F800$FFFF                   4096 bytes                    $EFC0$EFFD
0:1:1                    $F000$FFFF                   8192 bytes                    $DFC0$DFFD
1:0:0                    $E000$FFFF                   16384 bytes                   $BFC0$BFFD3
                                                       32768 bytes                   $7FC0$7FFD4
1:0:1                    $C000$FFFF                   32768 bytes                   $7FC0$7FFD4

1:1:0                    $8000$FFFF

1:1:1                    $8000$FFFF

1 No redirection if FPOPEN = 0, or FNORED = 1.
2 Reset vector is not redirected.
3 32K and 60K devices only.
4 60K devices only.

                                MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                        57
Chapter 4 Memory

4.6.5 FLASH Status Register (FSTAT)

Bits 3, 1, and 0 always read 0 and writes have no meaning or effect. The remaining five bits are status bits
that can be read at any time. Writes to these bits have special meanings that are discussed in the bit
descriptions.

                          Bit 7  6     5  4                   3      2  1  Bit 0

                  Read:          FCCF                         0 FBLANK 0   0

                          FCBEF        FPVIOL FACCERR

                  Write:

                  Reset: 1       1     0  0                   0      0  0  0

                                 = Unimplemented or Reserved

                          Figure 4-8. FLASH Status Register (FSTAT)

FCBEF -- FLASH Command Buffer Empty Flag

    The FCBEF bit is used to launch commands. It also indicates that the command buffer is empty so that
    a new command sequence can be executed when performing burst programming. The FCBEF bit is
    cleared by writing a 1 to it or when a burst program command is transferred to the array for
    programming. Only burst program commands can be buffered.

        1 = A new burst program command may be written to the command buffer.
        0 = Command buffer is full (not ready for additional commands).

FCCF -- FLASH Command Complete Flag

    FCCF is set automatically when the command buffer is empty and no command is being processed.
    FCCF is cleared automatically when a new command is started (by writing 1 to FCBEF to register a
    command). Writing to FCCF has no meaning or effect.

        1 = All commands complete
        0 = Command in progress

FPVIOL -- Protection Violation Flag

    FPVIOL is set automatically when FCBEF is cleared to register a command that attempts to erase or
    program a location in a protected block (the erroneous command is ignored). FPVIOL is cleared by
    writing a 1 to FPVIOL.

        1 = An attempt was made to erase or program a protected location.
        0 = No protection violation.

FACCERR -- Access Error Flag

    FACCERR is set automatically when the proper command sequence is not followed exactly (the
    erroneous command is ignored), if a program or erase operation is attempted before the FCDIV register
    has been initialized, or if the MCU enters stop while a command was in progress. For a more detailed
    discussion of the exact actions that are considered access errors, see Section 4.4.5, "Access Errors."
    FACCERR is cleared by writing a 1 to FACCERR. Writing a 0 to FACCERR has no meaning or effect.

        1 = An access error has occurred.
        0 = No access error has occurred.

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

58                                                                      Freescale Semiconductor
                                                                                                                                             FLASH Registers and Control Bits

FBLANK -- FLASH Verified as All Blank (Erased) Flag

    FBLANK is set automatically at the conclusion of a blank check command if the entire FLASH array
    was verified to be erased. FBLANK is cleared by clearing FCBEF to write a new valid command.
    Writing to FBLANK has no meaning or effect.

        1 = After a blank check command is completed and FCCF = 1, FBLANK = 1 indicates the FLASH
             array is completely erased (all $FF).

        0 = After a blank check command is completed and FCCF = 1, FBLANK = 0 indicates the FLASH
             array is not completely erased.

4.6.6 FLASH Command Register (FCMD)

Only five command codes are recognized in normal user modes as shown in Table 4-9. Refer to
Section 4.4.3, "Program and Erase Command Execution" for a detailed discussion of FLASH
programming and erase operations.

                         Bit 7         6              5        4  3  2               1  Bit 0

                         Read: 0       0              0        0  0  0               0  0

                         Write: FCMD7 FCMD6 FCMD5 FCMD4 FCMD3 FCMD2 FCMD1 FCMD0

                         Reset: 0      0              0        0  0  0               0  0

                                   = Unimplemented or Reserved

                         Figure 4-9. FLASH Command Register (FCMD)
                                     Table 4-9. FLASH Commands

                         Command                         FCMD     Equate File Label

                         Blank check                     $05         mBlank
                                                                   mByteProg
                         Byte program                    $20      mBurstProg
                                                                  mPageErase
                         Byte program -- burst mode      $25      mMassErase

                         Page erase (512 bytes/page)     $40

                         Mass erase (all FLASH)          $41

All other command codes are illegal and generate an access error.

It is not necessary to perform a blank check command after a mass erase operation. Only blank check is
required as part of the security unlocking mechanism.

                                   MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                        59
Chapter 4 Memory

                  MC9S08GB/GT Data Sheet, Rev. 2.3

60                                                  Freescale Semiconductor
Chapter 5 Resets, Interrupts, and System Configuration

5.1 Introduction

This section discusses basic reset and interrupt mechanisms and the various sources of reset and interrupts
in the MC9S08GB/GT. Some interrupt sources from peripheral modules are discussed in greater detail
within other sections of this data manual. This section gathers basic information about all reset and
interrupt sources in one place for easy reference. A few reset and interrupt sources, including the computer
operating properly (COP) watchdog and real-time interrupt (RTI), are not part of on-chip peripheral
systems with their own sections but are part of the system control logic.

5.2 Features

Reset and interrupt features include:
    Multiple sources of reset for flexible system configuration and reliable operation:
         -- Power-on detection (POR)
         -- Low voltage detection (LVD) with enable
         -- External RESET pin with enable
         -- COP watchdog with enable and two timeout choices
         -- Illegal opcode
         -- Serial command from a background debug host
    Reset status register (SRS) to indicate source of most recent reset
    Separate interrupt vectors for each module (reduces polling overhead) (see Table 5-1)

5.3 MCU Reset

Resetting the MCU provides a way to start processing from a known set of initial conditions. During reset,
most control and status registers are forced to initial values and the program counter is loaded from the
reset vector ($FFFE:$FFFF). On-chip peripheral modules are disabled and I/O pins are initially configured
as general-purpose high-impedance inputs with pullup devices disabled. The I bit in the condition code
register (CCR) is set to block maskable interrupts so the user program has a chance to initialize the stack
pointer (SP) and system control settings. SP is forced to $00FF at reset.

The MC9S08GB/GT has seven sources for reset:
    Power-on reset (POR)
    Low-voltage detect (LVD)
    Computer operating properly (COP) timer
    Illegal opcode detect
    Background debug forced reset
    The reset pin (RESET)
    Clock generator loss of lock and loss of clock reset

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    61
Chapter 5 Resets, Interrupts, and System Configuration

Each of these sources, with the exception of the background debug forced reset, has an associated bit in
the system reset status register. Whenever the MCU enters reset, the internal clock generator (ICG) module
switches to self-clocked mode with the frequency of fSelf_reset selected. The reset pin is driven low for 34
internal bus cycles where the internal bus frequency is half the ICG frequency. After the 34 cycles are
completed, the pin is released and will be pulled up by the internal pullup resistor, unless it is held low
externally. After the pin is released, it is sampled after another 38 cycles to determine whether the reset pin
is the cause of the MCU reset.

5.4 Computer Operating Properly (COP) Watchdog

The COP watchdog is intended to force a system reset when the application software fails to execute as
expected. To prevent a system reset from the COP timer (when it is enabled), application software must
reset the COP timer periodically. If the application program gets lost and fails to reset the COP before it
times out, a system reset is generated to force the system back to a known starting point. The COP
watchdog is enabled by the COPE bit in SOPT (see Section 5.8.4, "System Options Register (SOPT)" for
additional information). The COP timer is reset by writing any value to the address of SRS. This write does
not affect the data in the read-only SRS. Instead, the act of writing to this address is decoded and sends a
reset signal to the COP timer.

After any reset, the COP timer is enabled. This provides a reliable way to detect code that is not executing
as intended. If the COP watchdog is not used in an application, it can be disabled by clearing the COPE
bit in the write-once SOPT register. Also, the COPT bit can be used to choose one of two timeout periods
(218 or 213 cycles of the bus rate clock). Even if the application will use the reset default settings in COPE
and COPT, the user should still write to write-once SOPT during reset initialization to lock in the settings.
That way, they cannot be changed accidentally if the application program gets lost.

The write to SRS that services (clears) the COP timer should not be placed in an interrupt service routine
(ISR) because the ISR could continue to be executed periodically even if the main application program
fails.

When the MCU is in active background mode, the COP timer is temporarily disabled.

5.5 Interrupts

Interrupts provide a way to save the current CPU status and registers, execute an interrupt service routine
(ISR), and then restore the CPU status so processing resumes where it left off before the interrupt. Other
than the software interrupt (SWI), which is a program instruction, interrupts are caused by hardware events
such as an edge on the IRQ pin or a timer-overflow event. The debug module can also generate an SWI
under certain circumstances.

If an event occurs in an enabled interrupt source, an associated read-only status flag will become set. The
CPU will not respond until and unless the local interrupt enable is set to 1 to enable the interrupt. The I bit
in the CCR is 0 to allow interrupts. The global interrupt mask (I bit) in the CCR is initially set after reset
which masks (prevents) all maskable interrupt sources. The user program initializes the stack pointer and
performs other system setup before clearing the I bit to allow the CPU to respond to interrupts.

    MC9S08GB/GT Data Sheet, Rev. 2.3

62                                    Freescale Semiconductor
                                                                                                                                                                                Interrupts

When the CPU receives a qualified interrupt request, it completes the current instruction before responding
to the interrupt. The interrupt sequence follows the same cycle-by-cycle sequence as the SWI instruction
and consists of:

    Saving the CPU registers on the stack
    Setting the I bit in the CCR to mask further interrupts
    Fetching the interrupt vector for the highest-priority interrupt that is currently pending
    Filling the instruction queue with the first three bytes of program information starting from the

         address fetched from the interrupt vector locations

While the CPU is responding to the interrupt, the I bit is automatically set to avoid the possibility of another
interrupt interrupting the ISR itself (this is called nesting of interrupts). Normally, the I bit is restored to 0
when the CCR is restored from the value stacked on entry to the ISR. In rare cases, the I bit may be cleared
inside an ISR (after clearing the status flag that generated the interrupt) so that other interrupts can be
serviced without waiting for the first service routine to finish. This practice is not recommended for anyone
other than the most experienced programmers because it can lead to subtle program errors that are difficult
to debug.

The interrupt service routine ends with a return-from-interrupt (RTI) instruction which restores the CCR,
A, X, and PC registers to their pre-interrupt values by reading the previously saved information off the
stack.

                                                           NOTE
                  For compatibility with the M68HC08, the H register is not automatically
                  saved and restored. It is good programming practice to push H onto the stack
                  at the start of the interrupt service routine (ISR) and restore it just before the
                  RTI that is used to return from the ISR.

When two or more interrupts are pending when the I bit is cleared, the highest priority source is serviced
first (see Table 5-1).

5.5.1 Interrupt Stack Frame

Figure 5-1 shows the contents and organization of a stack frame. Before the interrupt, the stack pointer
(SP) points at the next available byte location on the stack. The current values of CPU registers are stored
on the stack starting with the low-order byte of the program counter (PCL) and ending with the CCR. After
stacking, the SP points at the next available location on the stack which is the address that is one less than
the address where the CCR was saved. The PC value that is stacked is the address of the instruction in the
main program that would have executed next if the interrupt had not occurred.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    63
Chapter 5 Resets, Interrupts, and System Configuration

    UNSTACKING                                          TOWARD LOWER ADDRESSES
       ORDER

              7                                         0

    51            CONDITION CODE REGISTER                  SP AFTER
    42                    ACCUMULATOR                      INTERRUPT STACKING
    33
    24           INDEX REGISTE*R (LOW BYTE X)              SP BEFORE
    15             PROGRAM COUNTER HIGH                    THE INTERRUPT
                    PROGRAM COUNTER LOW

    STACKING                                            TOWARD HIGHER ADDRESSES
     ORDER

              * High byte (H) of index register is not automatically stacked.

                 Figure 5-1. Interrupt Stack Frame

When an RTI instruction is executed, these values are recovered from the stack in reverse order. As part of
the RTI sequence, the CPU fills the instruction pipeline by reading three bytes of program information,
starting from the PC address just recovered from the stack.

The status flag causing the interrupt must be acknowledged (cleared) before returning from the ISR.
Typically, the flag should be cleared at the beginning of the ISR so that if another interrupt is generated by
this same source, it will be registered so it can be serviced after completion of the current ISR.

5.5.2 External Interrupt Request (IRQ) Pin

External interrupts are managed by the IRQSC status and control register. When the IRQ function is
enabled, synchronous logic monitors the pin for edge-only or edge-and-level events. When the MCU is in
stop mode and system clocks are shut down, a separate asynchronous path is used so the IRQ (if enabled)
can wake the MCU.

5.5.2.1 Pin Configuration Options

The IRQ pin enable (IRQPE) control bit in the IRQSC register must be 1 for the IRQ pin to act as the
interrupt request (IRQ) input. When the pin is configured as an IRQ input, the user can choose the polarity
of edges or levels detected (IRQEDG), whether the pin detects edges-only or edges and levels (IRQMOD),
and whether an event causes an interrupt or only sets the IRQF flag (which can be polled by software).

When the IRQ pin is configured to detect rising edges, an optional pulldown resistor is available rather than
a pullup resistor. BIH and BIL instructions may be used to detect the level on the IRQ pin when the pin is
configured to act as the IRQ input.

                 MC9S08GB/GT Data Sheet, Rev. 2.3

64                                                                               Freescale Semiconductor
                                                                                                                                                                                Interrupts

                                                           NOTE
                  The voltage measured on the pulled up IRQ pin may be as low as VDD 0.7
                  V. The internal gates connected to this pin are pulled all the way to VDD. All
                  other pins with enabled pullup resistors will have an unloaded measurement
                  of VDD.

5.5.2.2 Edge and Level Sensitivity

The IRQMOD control bit re-configures the detection logic so it detects edge events and pin levels. In this
edge detection mode, the IRQF status flag becomes set when an edge is detected (when the IRQ pin
changes from the deasserted to the asserted level), but the flag is continuously set (and cannot be cleared)
as long as the IRQ pin remains at the asserted level.

5.5.3 Interrupt Vectors, Sources, and Local Masks

Table 5-1 provides a summary of all interrupt sources. Higher-priority sources are located toward the
bottom of the table. The high-order byte of the address for the interrupt service routine is located at the
first address in the vector address column, and the low-order byte of the address for the interrupt service
routine is located at the next higher address.

When an interrupt condition occurs, an associated flag bit becomes set. If the associated local interrupt
enable is 1, an interrupt request is sent to the CPU. Within the CPU, if the global interrupt mask (I bit in
the CCR) is 0, the CPU will finish the current instruction, stack the PCL, PCH, X, A, and CCR CPU
registers, set the I bit, and then fetch the interrupt vector for the highest priority pending interrupt.
Processing then continues in the interrupt service routine.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    65
Chapter 5 Resets, Interrupts, and System Configuration

                                    Table 5-1. Vector Summary

    Vector     Vector     Address   Vector Name         Module   Source          Enable        Description
    Priority  Number    (High/Low)
                                                                    Unused Vector Space
     Lower        26   $FFC0/FFC1                                (available for user program)
              through      through

                  31   $FFCA/FFCB

              25 $FFCC/FFCD         Vrti                System   RTIF            RTIE          Real-time interrupt
                                                        control
              24 $FFCE/FFCF         Viic1                        IICIS           IICIE             IIC control
                                                           IIC                                  AD conversion
              23       $FFD0/FFD1   Vatd1                 ATD    COCO            AIEN
                                                          KBI                                      complete
              22       $FFD2/FFD3 Vkeyboard1             SCI2          KBF              KBIE    Keyboard pins
                                                                      TDRE               TIE    SCI2 transmit
              21       $FFD4/FFD5   Vsci2tx              SCI2                           TCIE
                                                                        TC              ILIE     SCI2 receive
              20       $FFD6/FFD7   Vsci2rx              SCI2          IDLE              RIE
                                                                      RDRF             ORIE        SCI2 error
              19       $FFD8/FFD9   Vsci2err             SCI1           OR              NFIE
                                                                        NF              FEIE    SCI1 transmit
              18 $FFDA/FFDB         Vsci1tx              SCI1           FE              PFIE
                                                                        PF               TIE     SCI1 receive
              17       $FFDC/FFDD   Vsci1rx              SCI1         TDRE              TCIE
                                                                        TC              ILIE       SCI1 error
              16 $FFDE/FFDF Vsci1err                      SPI          IDLE              RIE
                                                                      RDRF             ORIE            SPI
              15       $FFE0/FFE1   Vspi1                TPM2           OR              NFIE
                                                         TPM2           NF              FEIE    TPM2 overflow
              14       $FFE2/FFE3 Vtpm2ovf               TPM2           FE              PFIE   TPM2 channel 4
                                                         TPM2           PF              SPIE   TPM2 channel 3
              13       $FFE4/FFE5 Vtpm2ch4               TPM2          SPIF             SPIE   TPM2 channel 2
                                                         TPM2        MODF              SPTIE   TPM2 channel 1
              12       $FFE6/FFE7 Vtpm2ch3               TPM1        SPTEF              TOIE   TPM2 channel 0
                                                         TPM1          TOF             CH4IE    TPM1 overflow
              11       $FFE8/FFE9 Vtpm2ch2               TPM1         CH4F             CH3IE   TPM1 channel 2
                                                         TPM1         CH3F             CH2IE   TPM1 channel 1
              10       $FFEA/FFEB Vtpm2ch1                ICG         CH2F             CH1IE   TPM1 channel 0
                                                        System        CH1F             CH0IE
              9        $FFEC/FFED Vtpm2ch0              control       CH0F              TOIE           ICG
                                                          IRQ          TOF             CH2IE
              8        $FFEE/FFEF Vtpm1ovf               Core         CH2F             CH1IE
                                                                      CH1F             CH0IE
              7        $FFF0/FFF1 Vtpm1ch2              System        CH0F
                                                        control       ICGIF      LOLRE/LOCRE
              6        $FFF2/FFF3 Vtpm1ch1                       (LOLS/LOCS)

              5        $FFF4/FFF5 Vtpm1ch0

              4        $FFF6/FFF7   Vicg

              3        $FFF8/FFF9   Vlvd                         LVDF            LVDIE         Low-voltage detect
                                    Virq
              2        $FFFA/FFFB   Vswi                              IRQF       IRQIE                IRQ pin

              1        $FFFC/FFFD                                      SWI          --         Software interrupt
                                                                   Instruction
    Higher    0        $FFFE/FFFF   Vreset                                       COPE            Watchdog timer
                                                                       COP       LVDRE         Low-voltage detect
                                                                       LVD
                                                                  RESET pin         --             External pin
                                                                 Illegal opcode     --            Illegal opcode

                                    MC9S08GB/GT Data Sheet, Rev. 2.3

66                                                                                             Freescale Semiconductor
                                                                                                                                              Low-Voltage Detect (LVD) System

5.6 Low-Voltage Detect (LVD) System

The MC9S08GB/GT includes a system to protect against low voltage conditions to protect memory
contents and control MCU system states during supply voltage variations. The system comprises a
power-on reset (POR) circuit and an LVD circuit with a user selectable trip voltage, either high (VLVDH)
or low (VLVDL). The LVD circuit is enabled when LVDE in SPMSC1 is high and the trip voltage is selected
by LVDV in SPMSC2. The LVD is disabled upon entering any of the stop modes unless the LVDSE bit is
set. If LVDSE and LVDE are both set, then the MCU cannot enter stop1 or stop2, and the current
consumption in stop3 with the LVD enabled will be greater.

5.6.1 Power-On Reset Operation

When power is initially applied to the MCU, or when the supply voltage drops below the VPOR level, the
POR circuit will cause a reset condition. As the supply voltage rises, the LVD circuit will hold the chip in
reset until the supply has risen above the VLVDL level. Both the POR bit and the LVD bit in SRS are set
following a POR.

5.6.2 LVD Reset Operation

The LVD can be configured to generate a reset upon detection of a low voltage condition by setting
LVDRE to 1. After an LVD reset has occurred, the LVD system will hold the MCU in reset until the supply
voltage has risen above the level determined by LVDV. The LVD bit in the SRS register is set following
either an LVD reset or POR.

5.6.3 LVD Interrupt Operation

When a low voltage condition is detected and the LVD circuit is configured for interrupt operation (LVDE
set, LVDIE set, and LVDRE clear), then LVDF will be set and an LVD interrupt will occur.

5.6.4 Low-Voltage Warning (LVW)

The LVD system has a low voltage warning flag to indicate to the user that the supply voltage is
approaching, but is still above, the LVD voltage. The LVW does not have an interrupt associated with it.
There are two user selectable trip voltages for the LVW, one high (VLVWH) and one low (VLVWL). The trip
voltage is selected by LVWV in SPMSC2.

5.7 Real-Time Interrupt (RTI)

The real-time interrupt function can be used to generate periodic interrupts based on a multiple of the
source clock's period. The RTI has two source clock choices, the external clock input (ICGERCLK) to the
ICG or the RTI's own internal clock. The RTI can be used in run, wait, stop2 and stop3 modes. It is not
available in stop1 mode.

In run and wait modes, only the external clock can be used as the RTI's clock source. In stop2 mode, only
the internal RTI clock can be used. In stop3, either the external clock or internal RTI clock can be used.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    67
Chapter 5 Resets, Interrupts, and System Configuration

When using the external oscillator in stop3 mode, it must be enabled in stop (OSCSTEN = 1) and
configured for low bandwidth operation (RANGE = 0).

The SRTISC register includes a read-only status flag, a write-only acknowledge bit, and a 3-bit control
value (RTIS2:RTIS1:RTIS0) used to select one of seven RTI periods. The RTI has a local interrupt enable,
RTIE, to allow masking of the real-time interrupt. The module can be disabled by writing 0:0:0 to
RTIS2:RTIS1:RTIS0 in which case the clock source input is disabled and no interrupts will be generated.
See Section 5.8.6, "System Real-Time Interrupt Status and Control Register (SRTISC)," for detailed
information about this register.

5.8 Reset, Interrupt, and System Control Registers and Control Bits

One 8-bit register in the direct page register space and eight 8-bit registers in the high-page register space
are related to reset and interrupt systems.

Refer to the direct-page register summary in Chapter 4, "Memory," of this data sheet for the absolute
address assignments for all registers. This section refers to registers and control bits only by their names.
A Freescale-provided equate or header file is used to translate these names into the appropriate absolute
addresses.

Some control bits in the SOPT and SPMSC2 registers are related to modes of operation. Although brief
descriptions of these bits are provided here, the related functions are discussed in greater detail in
Chapter 3, "Modes of Operation."

5.8.1 Interrupt Pin Request Status and Control Register (IRQSC)

This direct page register includes two unimplemented bits which always read 0, four read/write bits, one
read-only status bit, and one write-only bit. These bits are used to configure the IRQ function, report status,
and acknowledge IRQ events.

    Bit 7     6  5  4          3                2       1                Bit 0
                                                                       IRQMOD
    Read: 0   0                IRQF             0
    Write:                                                                 0
                 IRQEDG IRQPE                           IRQIE

                                                IRQACK

    Reset: 0  0  0  0          0                0       0

                           = Unimplemented or Reserved
    Figure 5-2. Interrupt Request Status and Control Register (IRQSC)

IRQEDG -- Interrupt Request (IRQ) Edge Select

    This read/write control bit is used to select the polarity of edges or levels on the IRQ pin that cause
    IRQF to be set. The IRQMOD control bit determines whether the IRQ pin is sensitive to both edges
    and levels or only edges. When the IRQ pin is enabled as the IRQ input and is configured to detect
    rising edges, the optional pullup resistor is re-configured as an optional pulldown resistor.

        1 = IRQ is rising edge or rising edge/high-level sensitive.
        0 = IRQ is falling edge or falling edge/low-level sensitive.

              MC9S08GB/GT Data Sheet, Rev. 2.3

68                                                      Freescale Semiconductor
                                                                                                   Reset, Interrupt, and System Control Registers and Control Bits

IRQPE -- IRQ Pin Enable

    This read/write control bit enables the IRQ pin function. When this bit is set, the IRQ pin can be used
    as an interrupt request. Also, when this bit is set, either an internal pull-up or an internal pull-down
    resistor is enabled depending on the state of the IRQMOD bit.

        1 = IRQ pin function is enabled.
        0 = IRQ pin function is disabled.

IRQF -- IRQ Flag

    This read-only status bit indicates when an interrupt request event has occurred.
        1 = IRQ event detected.
        0 = No IRQ request.

IRQACK -- IRQ Acknowledge

    This write-only bit is used to acknowledge interrupt request events (write 1 to clear IRQF). Writing 0
    has no meaning or effect. Reads always return 0. If edge-and-level detection is selected
    (IRQMOD = 1), IRQF cannot be cleared while the IRQ pin remains at its asserted level.

IRQIE -- IRQ Interrupt Enable

    This read/write control bit determines whether IRQ events generate a hardware interrupt request.
        1 = Hardware interrupt requested whenever IRQF = 1.
        0 = Hardware interrupt requests from IRQF disabled (use polling).

IRQMOD -- IRQ Detection Mode

    This read/write control bit selects either edge-only detection or edge-and-level detection. The
    IRQEDG control bit determines the polarity of edges and levels that are detected as interrupt request
    events. See Section 5.5.2.2, "Edge and Level Sensitivity" for more details.

        1 = IRQ event on falling edges and low levels or on rising edges and high levels.
        0 = IRQ event on falling edges or rising edges only.

5.8.2 System Reset Status Register (SRS)

This register includes six read-only status flags to indicate the source of the most recent reset. When a
debug host forces reset by writing 1 to BDFR in the SBDFR register, none of the status bits in SRS will be
set. Writing any value to this register address clears the COP watchdog timer without affecting the contents
of this register. The reset state of these bits depends on what caused the MCU to reset.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    69
Chapter 5 Resets, Interrupts, and System Configuration

            Bit 7         6                             5    4    3     2    1           Bit 0

    Read: POR             PIN                           COP ILOP  0     ICG  LVD         0

    Write:                Writing any value to SIMRS address clears COP watchdog timer.

    Power-on reset: 1     0                             0    0    0     0    1           0

    Low-voltage reset: U  0                             0    0    0     0    1           0

    Any other reset: 0    1                             (1)  (1)  0     (1)  0           0

                                     U = Unaffected by reset
    1 Any of these reset sources that are active at the time of reset will cause the corresponding bit(s) to be set; bits

       corresponding to sources that are not active at the time of reset will be cleared.

                                               Figure 5-3. System Reset Status (SRS)

POR -- Power-On Reset

    Reset was caused by the power-on detection logic. Because the internal supply voltage was ramping
    up at the time, the low-voltage reset (LVD) status bit is also set to indicate that the reset occurred while
    the internal supply was below the LVD threshold.

        1 = POR caused reset.
        0 = Reset not caused by POR.

PIN -- External Reset Pin

    Reset was caused by an active-low level on the external reset pin.
        1 = Reset came from external reset pin.
        0 = Reset not caused by external reset pin.

COP -- Computer Operating Properly (COP) Watchdog

    Reset was caused by the COP watchdog timer timing out. This reset source may be blocked by
    COPE = 0.

        1 = Reset caused by COP timeout.
        0 = Reset not caused by COP timeout.

ILOP -- Illegal Opcode

    Reset was caused by an attempt to execute an unimplemented or illegal opcode. The STOP instruction
    is considered illegal if stop is disabled by STOPE = 0 in the SOPT register. The BGND instruction is
    considered illegal if active background mode is disabled by ENBDM = 0 in the BDCSC register.

        1 = Reset caused by an illegal opcode.
        0 = Reset not caused by an illegal opcode.

ICG -- Internal Clock Generation Module Reset

    Reset was caused by an ICG module reset.
        1 = Reset caused by ICG module.
        0 = Reset not caused by ICG module.

                          MC9S08GB/GT Data Sheet, Rev. 2.3

70                                                                           Freescale Semiconductor
                                                                                                   Reset, Interrupt, and System Control Registers and Control Bits

LVD -- Low Voltage Detect

    If the LVD reset is enabled (LVDE = LVDRE = 1) and the supply drops below the LVD trip voltage,
    an LVD reset occurs. The LVD function is disabled when the MCU enters stop. To maintain LVD
    operation in stop, the LVDSE bit must be set.

        1 = Reset caused by LVD trip or POR.
        0 = Reset not caused by LVD trip or POR.

5.8.3 System Background Debug Force Reset Register (SBDFR)

This register contains a single write-only control bit. A serial background command such as
WRITE_BYTE must be used to write to SBDFR. Attempts to write this register from a user program are
ignored. Reads always return $00.

                                 Bit 7   6  5        4                3      2  1           Bit 0
                                                                                              0
                         Read: 0         0  0        0                0      0  0
                                                                                           BDFR1
                         Write:                                                               0

Reset: 0                                 0  0        0                0      0  0

                                              = Unimplemented or Reserved
1 BDFR is writable only through serial background debug commands, not from user programs.

                    Figure 5-4. System Background Debug Force Reset Register (SBDFR)

BDFR -- Background Debug Force Reset

    A serial background mode command such as WRITE_BYTE allows an external debug host to force a
    target system reset. Writing 1 to this bit forces an MCU reset. This bit cannot be written from a user
    program.

5.8.4 System Options Register (SOPT)

This register may be read at any time. Bits 3 and 2 are unimplemented and always read 0. This is a
write-once register so only the first write after reset is honored. Any subsequent attempt to write to SOPT
(intentionally or unintentionally) is ignored to avoid accidental changes to these sensitive settings. SOPT
should be written during the user's reset initialization program to set the desired controls even if the desired
settings are the same as the reset settings.

                                 Bit 7   6  5        4                3      2  1          Bit 0

                         Read:                                        0      0
                                   COPE
                                         COPT STOPE                             BKGDPE
                         Write:

Reset:                           1       1  0        1                0      0  1          1

                                         = Unimplemented or Reserved

                                 Figure 5-5. System Options Register (SOPT)

                                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                            71
Chapter 5 Resets, Interrupts, and System Configuration

COPE -- COP Watchdog Enable

    This write-once bit defaults to 1 after reset.
        1 = COP watchdog timer enabled (force reset on timeout).
        0 = COP watchdog timer disabled.

COPT -- COP Watchdog Timeout

    This write-once bit defaults to 1 after reset.
        1 = Long timeout period selected (218 cycles of BUSCLK).
        0 = Short timeout period selected (213 cycles of BUSCLK).

STOPE -- Stop Mode Enable

    This write-once bit defaults to 0 after reset, which disables stop mode. If stop mode is disabled and a
    user program attempts to execute a STOP instruction, an illegal opcode reset is forced.

        1 = Stop mode enabled.
        0 = Stop mode disabled.

BKGDPE -- Background Debug Mode Pin Enable

    The BKGDPE bit enables the PTG0/BKGD/MS pin to function as BKGD/MS. When the bit is clear,
    the pin will function as PTG0, which is an output-only general-purpose I/O. This pin always defaults
    to BKGD/MS function after any reset.

        1 = BKGD pin enabled.
        0 = BKGD pin disabled.

5.8.5 System Device Identification Register (SDIDH, SDIDL)

This read-only register is included so host development systems can identify the HCS08 derivative and
revision number. This allows the development software to recognize where specific memory blocks,
registers, and control bits are located in a target MCU.

    Bit 7       6     5     4                     3  2                                                     1    Bit 0

    Read: REV3  REV2  REV1 REV0 ID11                 ID10                                                  ID9  ID8

    Reset: 01   0(1)  0(1)  0(1)                  0  0                                                     0    0

    Read: ID7   ID6   ID5   ID4   ID3                ID2                                                   ID1  ID0

    Reset: 0    0     0     0                     0  0                                                     1    0

                                                  = Unimplemented or Reserved
    1 The revision number that is hard coded into these bits reflects the current silicon revision level.

                           Figure 5-6. System Device Identification Register (SDIDH, SDIDL)

REV[3:0] -- Revision Number

    The high-order 4 bits of address $1806 are hard coded to reflect the current mask set revision number
    (0F).

                MC9S08GB/GT Data Sheet, Rev. 2.3

72                                                         Freescale Semiconductor
                                                                                                   Reset, Interrupt, and System Control Registers and Control Bits

ID[11:0] -- Part Identification Number
    Each derivative in the HCS08 Family has a unique identification number. The MC9S08GB/GT is hard
    coded to the value $002.

5.8.6 System Real-Time Interrupt Status and Control Register (SRTISC)

This register contains one read-only status flag, one write-only acknowledge bit, three read/write delay
selects, and three unimplemented bits, which always read 0.

                         Bit 7  6  5                   4     3                 2      1   Bit 0
                                                                                         RTIS0
Read: RTIF                         0                         0
Write:                                       RTICLKS RTIE              RTIS2 RTIS1         0

                                RTIACK

Reset: 0                        0  0                   0     0                 0      0

                                = Unimplemented or Reserved

                         Figure 5-7. System RTI Status and Control Register (SRTISC)

RTIF -- Real-Time Interrupt Flag

    This read-only status bit indicates the periodic wakeup timer has timed out.
        1 = Periodic wakeup timer timed out.
        0 = Periodic wakeup timer not timed out.

RTIACK -- Real-Time Interrupt Acknowledge

    This write-only bit is used to acknowledge real-time interrupt request (write 1 to clear RTIF). Writing
    0 has no meaning or effect. Reads always return 0.

RTICLKS -- Real-Time Interrupt Clock Select

    This read/write bit selects the clock source for the real-time interrupt.
        1 = Real-time interrupt request clock source is external clock.
        0 = Real-time interrupt request clock source is internal oscillator.

RTIE -- Real-Time Interrupt Enable

    This read-write bit enables real-time interrupts.
        1 = Real-time interrupts enabled.
        0 = Real-time interrupts disabled.

RTIS2:RTIS1:RTIS0 -- Real-Time Interrupt Period Selects

    These read/write bits select the wakeup period for the RTI. The clock source for the real-time interrupt
    is its own clock source, which oscillates with a period of approximately 1/fext, and it is independent of
    other MCU clock sources. Using an external clock source, the delays will be crystal frequency divided
    by value in RTIS2:RTIS1:RTIS0.

                                MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                   73
Chapter 5 Resets, Interrupts, and System Configuration

                              Table 5-2. Real-Time Interrupt Period

    RTIS2:RTIS1:RTIS0         Internal Clock Source 1                                    External Clock Source 2
                               (tRTI = 1 ms, Nominal)                                            Period = text

    0:0:0              Disable periodic wakeup timer                                     Disable periodic wakeup timer

    0:0:1                        8 ms                                                       text x 256

    0:1:0                        32 ms                                                      tex x 1024

    0:1:1                        64 ms                                                      tex x 2048

    1:0:0                        128 ms                                                     tex x 4096

    1:0:1                        256 ms                                                     text x 8192

    1:1:0                        512 ms                                                     text x 16384

    1:1:1                        1.024 s                                                    tex x 32768

1 See Table A-10 tRTI in Appendix A, "Electrical Characteristics" for the tolerance on these values.
2 text is based on the external clock source, resonator, or crystal selected by the ICG configuration. See Table A-9 for details.

5.8.7 System Power Management Status and Control 1 Register (SPMSC1)

                       Bit 7  6                         5  4  3                          2  1             Bit 0

           Read: LVDF         0                         LVDIE LVDRE1 LVDSE(1) LVDE(1)       0             0

           Write:             LVDACK

           Reset: 0           0                         0  1  1                          1  0             0

                                                  = Unimplemented or Reserved
    1 This bit can be written only one time after reset. Additional writes are ignored.

    Figure 5-8. System Power Management Status and Control 1 Register (SPMSC1)

LVDF -- Low-Voltage Detect Flag
    Provided LVDE = 1, this read-only status bit indicates a low-voltage detect event.

LVDACK -- Low-Voltage Detect Acknowledge

    This write-only bit is used to acknowledge low voltage detection errors (write 1 to clear LVDF). Reads
    always return 0.

LVDIE -- Low-Voltage Detect Interrupt Enable

    This read/write bit enables hardware interrupt requests for LVDF.
        1 = Request a hardware interrupt when LVDF = 1.
        0 = Hardware interrupt disabled (use polling).

                              MC9S08GB/GT Data Sheet, Rev. 2.3

74                                                                                          Freescale Semiconductor
                                                                                                   Reset, Interrupt, and System Control Registers and Control Bits

LVDRE -- Low-Voltage Detect Reset Enable

    This read/write bit enables LVDF events to generate a hardware reset (provided LVDE = 1).
        1 = Force an MCU reset when LVDF = 1.
        0 = LVDF does not generate hardware resets.

LVDSE -- Low-Voltage Detect Stop Enable

    Provided LVDE = 1, this read/write bit determines whether the low-voltage detect function operates
    when the MCU is in stop mode.

        1 = Low-voltage detect enabled during stop mode.
        0 = Low-voltage detect disabled during stop mode.

LVDE -- Low-Voltage Detect Enable

    This read/write bit enables low-voltage detect logic and qualifies the operation of other bits in this
    register.

        1 = LVD logic enabled.
        0 = LVD logic disabled.

5.8.8 System Power Management Status and Control 2 Register (SPMSC2)

This register is used to report the status of the low voltage warning function, and to configure the stop mode
behavior of the MCU.

                         Bit 7  6       5     4              3     2       1                Bit 0

Read: LVWF                          0                        PPDF  0
Write:                          LVWACK
                                        LVDV  LVWV                         PDC              PPDC

                                                                   PPDACK

Power-on reset: 01              0       0     0              0     0       0                0

LVD reset: 0(1)                 0       U     U              0     0       0                0

Any other reset: 0(1)           0       U     U              0     0       0                0

                                = Unimplemented or Reserved        U = Unaffected by reset

1 LVWF will be set in the case when VSupply transitions below the trip point or after reset and VSupply is already below
   VLVW.

Figure 5-9. System Power Management Status and Control 2 Register (SPMSC2)

LVWF -- Low-Voltage Warning Flag

    The LVWF bit indicates the low-voltage warning status.
        1 = Low voltage warning is present or was present.
        0 = Low voltage warning not present.

LVWACK -- Low-Voltage Warning Acknowledge
    The LVWACK bit indicates the low-voltage warning acknowledge.
    Writing a 1 to LVWACK clears LVWF to 0 if a low voltage warning is not present.

                                MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                   75
Chapter 5 Resets, Interrupts, and System Configuration

LVDV -- Low-Voltage Detect Voltage Select

    The LVDV bit selects the LVD trip point voltage (VLVD).
        1 = High trip point selected (VLVD = VLVDH).
        0 = Low trip point selected (VLVD = VLVDL).

LVWV -- Low-Voltage Warning Voltage Select

    The LVWV bit selects the LVW trip point voltage (VLVW).
        1 = High trip point selected (VLVW = VLVWH).
        0 = Low trip point selected (VLVW = VLVWL).

PPDF -- Partial Power Down Flag
    The PPDF bit indicates that the MCU has exited the stop2 mode.
        1 = Stop2 mode recovery.
        0 = Not stop2 mode recovery.

PPDACK -- Partial Power Down Acknowledge
    Writing a 1 to PPDACK clears the PPDF bit.

PDC -- Power Down Control

    The write-once PDC bit controls entry into the power down (stop2 and stop1) modes.
        1 = Power down modes are enabled.
        0 = Power down modes are disabled.

PPDC -- Partial Power Down Control

    The write-once PPDC bit controls which power down mode, stop1 or stop2, is selected.
        1 = Stop2, partial power down, mode enabled if PDC set.
        0 = Stop1, full power down, mode enabled if PDC set.

    MC9S08GB/GT Data Sheet, Rev. 2.3

76                                    Freescale Semiconductor
Chapter 6 Parallel Input/Output

6.1 Introduction

This section explains software controls related to parallel input/output (I/O). The MC9S08GBxx has seven
I/O ports which include a total of 56 general-purpose I/O pins (one of these pins is output only). The
MC9S08GTxx has six I/O ports which include a total of up to 39 general-purpose I/O pins, depending on
the package (one pin, PTG0, is output only). See Chapter 2, "Pins and Connections," for more information
about the logic and hardware aspects of these pins.

Many of these pins are shared with on-chip peripherals such as timer systems, external interrupts, or
keyboard interrupts. When these other modules are not controlling the port pins, they revert to
general-purpose I/O control. For each I/O pin, a port data bit provides access to input (read) and output
(write) data, a data direction bit controls the direction of the pin, and a pullup enable bit enables an internal
pullup device (provided the pin is configured as an input), and a slew rate control bit controls the rise and
fall times of the pins.

                                                           NOTE
                  Not all general-purpose I/O pins are available on all packages. To avoid
                  extra current drain from floating input pins, the user's reset initialization
                  routine in the application program should either enable on-chip pullup
                  devices or change the direction of unconnected pins to outputs so the pins
                  do not float.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    77
Chapter 6 Parallel Input/Output

            HCS08 CORE                      INTERNAL BUS

            BDC                  CPU     DEBUG                                        PORT A  8                   NOTES 1, 6
                                      MODULE (DBG)                                                  PTA7/KBI1P7
                                                                                                    PTA0/KBI1P0

RESET       HCS08 SYSTEM CONTROL            8-BIT KEYBOARD                            PORT B  8
NOTE 4                                INTERRUPT MODULE (KBI1)                                       PTB7/AD1P7
            RESETS AND INTERRUPTS                                                                   PTB0/AD1P0 NOTE 1
IRQ           MODES OF OPERATION            IIC MODULE (IIC1)
NOTES 2, 3     POWER MANAGEMENT
                                      SERIAL COMMUNICATIONS
            RTI                  COP  INTERFACE MODULE (SCI1)                                 PTC7
                                                                                              PTC6
            IRQ                  LVD  SERIAL COMMUNICATIONS                           PORT C  PTC5                NOTES 1, 5
                                      INTERFACE MODULE (SCI2)                                 PTC4
                                                                                              PTC3/SCL1
                                        3-CHANNEL TIMER/PWM                                   PTC2/SDA1
                                             MODULE (TPM1)                                    PTC1/RxD2
                                                                                              PTC0/TxD2
                                        5-CHANNEL TIMER/PWM
                    USER FLASH               MODULE (TPM2)                            PORT D  PTD7/TPM2CH4        NOTE 1
              (GB60 = 61,268 BYTES)                                                           PTD6/TPM2CH3
              (GB32 = 32,768 BYTES)       SERIAL PERIPHERAL                                   PTD5/TPM2CH2
                                      INTERFACE MODULE (SPI1)                                 PTD4/TPM2CH1
                    USER RAM                                                                  PTD3/TPM2CH0
              (GB60 = 4096 BYTES)                                                             PTD2/TPM1CH2
              (GB32 = 2048 BYTES)                                                             PTD1/TPM1CH1
                                                                                              PTD0/TPM1CH0
                        10-BIT
VDDAD          ANALOG-TO-DIGITAL                                                      PORT E  PTE7                NOTE 1
VSSAD          CONVERTER (ATD1)
                                                                                              PTE6
VREFH            INTERNAL CLOCK                                                               PTE5/SPSCK1
VREFL           GENERATOR (ICG)                                                               PTE4/MOSI1
                                                                                              PTE3/MISO1
            LOW-POWER OSCILLATOR                                                              PTE2/SS1
                                                                                              PTE1/RxD1
                                                                                              PTE0/TxD1

                                                                                      PORT F  8                   NOTES 1, 5
                                                                                                    PTF7PTF0

    VDD          VOLTAGE                                                                      PTG7

    VSS          REGULATOR                                                            PORT G  PTG6
                                                                                              PTG5
                                                                                                                  NOTE 1
                                                                                              PTG4
NOTES:                                                                                        PTG3
      1. Port pins are software configurable with pullup device if input port.                PTG2/EXTAL
      2. Pin contains software configurable pullup/pulldown device if IRQ enabled             PTG1/XTAL
         (IRQPE = 1).                                                                         PTG0/BKGD/MS
      3. IRQ does not have a clamp diode to VDD. IRQ should not be driven above VDD.
      4. Pin contains integrated pullup device.
      5. High current drive
      6. Pins PTA[7:4] contain both pullup and pulldown devices. Pulldown
         available when KBI enabled (KBIPn = 1).

                 Figure 6-1. Block Diagram Highlighting Parallel Input/Output Pins

                                      MC9S08GB/GT Data Sheet, Rev. 2.3

78                                                                                            Freescale Semiconductor
                                                                                           Features

6.2 Features

Parallel I/O features, depending on package choice, include:
    A total of 56 general-purpose I/O pins in seven ports (PTG0 is output only)
    High-current drivers on port C and port F pins
    Hysteresis input buffers
    Software-controlled pullups on each input pin
    Software-controlled slew rate output buffers
    Eight port A pins shared with KBI1
    Eight port B pins shared with ATD1
    Eight high-current port C pins shared with SCI2 and IIC1
    Eight port D pins shared with TPM1 and TPM2
    Eight port E pins shared with SCI1 and SPI1
    Eight high-current port F pins
    Eight port G pins shared with EXTAL, XTAL, and BKGD/MS

6.3 Pin Descriptions

The MC9S08GB/GT has a total of 56 parallel I/O pins (one is output only) in seven 8-bit ports
(PTAPTG). Not all pins are bonded out in all packages. Consult the pin assignment in Chapter 2, "Pins
and Connections," for available parallel I/O pins. All of these pins are available for general-purpose I/O
when they are not used by other on-chip peripheral systems.

After reset, BKGD/MS is enabled and therefore is not usable as an output pin until BKGDPE in SOPT is
cleared. The rest of the peripheral functions are disabled. After reset, all data direction and pullup enable
controls are set to 0s. These pins default to being high-impedance inputs with on-chip pullup devices
disabled.

The following paragraphs discuss each port and the software controls that determine each pin's use.

6.3.1 Port A and Keyboard Interrupts

Port A                   Bit 7   6  5  4  3                           2       1     Bit 0

        MCU Pin:         PTA7/   PTA6/ PTA5/ PTA4/ PTA3/           PTA2/   PTA1/   PTA0/
                         KBI1P7  KBI1P6 KBI1P5 KBI1P4 KBI1P3       KBI1P2  KBI1P1  KBI1P0

                                  Figure 6-2. Port A Pin Names

Port A is an 8-bit port shared among the KBI keyboard interrupt inputs and general-purpose I/O. Any pins
enabled as KBI inputs will be forced to act as inputs.

Port A pins are available as general-purpose I/O pins controlled by the port A data (PTAD), data direction
(PTADD), pullup enable (PTAPE), and slew rate control (PTASE) registers. Refer to Section 6.4, "Parallel
I/O Controls," for more information about general-purpose I/O control.

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                    79
Chapter 6 Parallel Input/Output

Port A can be configured to be keyboard interrupt input pins. Refer to Chapter 9, "Keyboard Interrupt
(KBI) Module," for more information about using port A pins as keyboard interrupts pins.

6.3.2 Port B and Analog to Digital Converter Inputs

    Port B            Bit 7       6     5     4     3                  2      1    Bit 0

            MCU Pin:  PTB7/       PTB6/ PTB5/ PTB4/ PTB3/           PTB2/  PTB1/  PTB0/
                      AD1P7       AD1P6 AD1P5 AD1P4 AD1P3           AD1P2  AD1P1  AD1P0

                                   Figure 6-3. Port B Pin Names

Port B is an 8-bit port shared among the ATD inputs and general-purpose I/O. Any pin enabled as an ATD
input will be forced to act as an input.

Port B pins are available as general-purpose I/O pins controlled by the port B data (PTBD), data direction
(PTBDD), pullup enable (PTBPE), and slew rate control (PTBSE) registers. Refer to Section 6.4, "Parallel
I/O Controls," for more information about general-purpose I/O control.

When the ATD module is enabled, analog pin enables are used to specify which pins on port B will be used
as ATD inputs. Refer to Chapter 14, "Analog-to-Digital Converter (ATD) Module," for more information
about using port B pins as ATD pins.

6.3.3 Port C and SCI2, IIC, and High-Current Drivers

    Port C                 Bit 7  6     5     3     3                 2      1     Bit 0
            MCU Pin: PTC7
                                  PTC6  PTC5  PTC4  PTC3/           PTC2/  PTC1/  PTC0/
                                                    SCL1            SDA1   RxD2   TxD2

                                  Figure 6-4. Port C Pin Names

Port C is an 8-bit port which is shared among the SCI2 and IIC1 modules, and general-purpose I/O. When
SCI2 or IIC1 modules are enabled, the pin direction will be controlled by the module or function. Port C
has high current output drivers.

Port C pins are available as general-purpose I/O pins controlled by the port C data (PTCD), data direction
(PTCDD), pullup enable (PTCPE), and slew rate control (PTCSE) registers. Refer to Section 6.4, "Parallel
I/O Controls," for more information about general-purpose I/O control.

When the SCI2 module is enabled, PTC0 serves as the SCI2 module's transmit pin (TxD2) and PTC1
serves as the receive pin (RxD2). Refer to Chapter 11, "Serial Communications Interface (SCI) Module,"
for more information about using PTC0 and PTC1 as SCI pins

When the IIC module is enabled, PTC2 serves as the IIC modules's serial data input/output pin (SDA1)
and PTC3 serves as the clock pin (SCL1). Refer to Chapter 13, "Inter-Integrated Circuit (IIC) Module,"
for more information about using PTC2 and PTC3 as IIC pins.

                                  MC9S08GB/GT Data Sheet, Rev. 2.3

80                                                                         Freescale Semiconductor
                                                                                        Pin Descriptions

6.3.4 Port D, TPM1 and TPM2

Port D                   Bit 7    6        5        4        3        2        1        Bit 0

        MCU Pin:          PTD7/    PTD6/    PTD5/    PTD4/    PTD3/    PTD2/    PTD1/    PTD0/
                         TPM2CH4  TPM2CH3  TPM2CH2  TPM2CH1  TPM2CH0  TPM1CH2  TPM1CH1  TPM1CH0

                                  Figure 6-5. Port D Pin Names

Port D is an 8-bit port shared with the two TPM modules, TPM1 and TPM2, and general-purpose I/O.
When the TPM1 or TPM2 modules are enabled in output compare or input capture modes of operation,
the pin direction will be controlled by the module function.

Port D pins are available as general-purpose I/O pins controlled by the port D data (PTDD), data direction
(PTDDD), pullup enable (PTDPE), and slew rate control (PTDSE) registers. Refer to Section 6.4, "Parallel
I/O Controls" for more information about general-purpose I/O control.

The TPM2 module can be configured to use PTD7PTD3 as either input capture, output compare, PWM,
or external clock input pins (PTD3 only). Refer to Chapter 10, "Timer/PWM (TPM) Module" for more
information about using PTD7PTD3 as timer pins.

The TPM1 module can be configured to use PTD2PTD0 as either input capture, output compare, PWM,
or external clock input pins (PTD0 only). Refer to Chapter 10, "Timer/PWM (TPM) Module" for more
information about using PTD2PTD0 as timer pins.

6.3.5 Port E, SCI1, and SPI

Port E                 Bit 7      6        5        4        3          2        1      Bit 0
        MCU Pin: PTE7
                                  PTE6      PTE5/ PTE4/      PTE3/    PTE2/    PTE1/    PTE0/
                                           SPSCK1 MOSI1      MISO1     SS1     RxD1     TxD1

                                  Figure 6-6. Port E Pin Names

Port E is an 8-bit port shared with the SCI1 module, SPI1 module, and general-purpose I/O. When the SCI
or SPI modules are enabled, the pin direction will be controlled by the module function.

Port E pins are available as general-purpose I/O pins controlled by the port E data (PTED), data direction
(PTEDD), pullup enable (PTEPE), and slew rate control (PTESE) registers. Refer to Section 6.4, "Parallel
I/O Controls" for more information about general-purpose I/O control.

When the SCI1 module is enabled, PTE0 serves as the SCI1 module's transmit pin (TxD1) and PTE1
serves as the receive pin (RxD1). Refer to Chapter 11, "Serial Communications Interface (SCI) Module"
for more information about using PTE0 and PTE1 as SCI pins.

When the SPI module is enabled, PTE2 serves as the SPI module's slave select pin (SS1), PTE3 serves as
the master-in slave-out pin (MISO1), PTE4 serves as the master-out slave-in pin (MOSI1), and PTE5
serves as the SPI clock pin (SPSCK1). Refer to Chapter 12, "Serial Peripheral Interface (SPI) Module for
more information about using PTE5PTE2 as SPI pins.

                                  MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                          81
Chapter 6 Parallel Input/Output

6.3.6 Port F and High-Current Drivers

    Port F                 Bit 7  6  5  4  3                          2      1   Bit 0
            MCU Pin: PTF7                                           PTF2   PTF1  PTF0
                                  PTF6 PTF5 PTF4 PTF3
                                  Figure 6-7. Port F Pin Names

Port F is an 8-bit port general-purpose I/O that is not shared with any peripheral module. Port F has high
current output drivers.

Port F pins are available as general-purpose I/O pins controlled by the port F data (PTFD), data direction
(PTFDD), pullup enable (PTFPE), and slew rate control (PTFSE) registers. Refer to Section 6.4, "Parallel
I/O Controls" for more information about general-purpose I/O control.

6.3.7 Port G, BKGD/MS, and Oscillator

    Port G                 Bit 7  6  5  4  3                           2   1     Bit 0
            MCU Pin: PTG7
                                  PTG6 PTG5 PTG4 PTG3               PTG2/  PTG1/ PTG0/
                                   Figure 6-8. Port G Pin Names     EXTAL  XTAL BKGD/MS

Port G is an 8-bit port which is shared among the background/mode select function, oscillator, and
general-purpose I/O. When the background/mode select function or oscillator is enabled, the pin direction
will be controlled by the module function.

Port G pins are available as general-purpose I/O pins controlled by the port G data (PTGD), data direction
(PTGDD), pullup enable (PTGPE), and slew rate control (PTGSE) registers. Refer to Section 6.4, "Parallel
I/O Controls" for more information about general-purpose I/O control.

The internal pullup for PTG0 is enabled when the background/mode select function is enabled, regardless
of the state of PTGPE0. During reset, the BKGD/MS pin functions as a mode select pin. After the MCU
is out of reset, the BKGD/MS pin becomes the background communications input/output pin. The PTG0
can be configured to be a general-purpose output pin. Refer to Chapter 3, "Modes of Operation",
Chapter 5, "Resets, Interrupts, and System Configuration", and Chapter 15, "Development Support" for
more information about using this pin.

The ICG module can be configured to use PTG2PTG1 ports as crystal oscillator or external clock pins.

Refer to Chapter 13, "Inter-Integrated Circuit (IIC) Module" for more information about using these pins
as oscillator pins.

6.4 Parallel I/O Controls

Provided no on-chip peripheral is controlling a port pin, the pins operate as general-purpose I/O pins that
are accessed and controlled by a data register (PTxD), a data direction register (PTxDD), a pullup enable
register (PTxPE), and a slew rate control register (PTxSE) where x is A, B, C, D, E, F, or G.

                                  MC9S08GB/GT Data Sheet, Rev. 2.3

82                                                                         Freescale Semiconductor
                                                                                                                                                                  Parallel I/O Controls

Reads of the data register return the pin value (if PTxDDn = 0) or the contents of the port data register (if
PTxDDn = 1). Writes to the port data register are latched into the port register whether the pin is controlled
by an on-chip peripheral or the pin is configured as an input. If the corresponding pin is not controlled by
a peripheral and is configured as an output, this level will be driven out the port pin.

6.4.1 Data Direction Control

The data direction control bits determine whether the pin output driver is enabled, and they control what
is read for port data register reads. Each port pin has a data direction control bit. When PTxDDn = 0, the
corresponding pin is an input and reads of PTxD return the pin value. When PTxDDn = 1, the
corresponding pin is an output and reads of PTxD return the last value written to the port data register.
When a peripheral module or system function is in control of a port pin, the data direction control still
controls what is returned for reads of the port data register, even though the peripheral system has
overriding control of the actual pin direction.

For the MC9S08GB/GT MCU, reads of PTG0/BKGD/MS will return the value on the output pin.

It is a good programming practice to write to the port data register before changing the direction of a port
pin to become an output. This ensures that the pin will not be driven momentarily with an old data value
that happened to be in the port data register.

6.4.2 Internal Pullup Control

An internal pullup device can be enabled for each port pin that is configured as an input (PTxDDn = 0).
The pullup device is available for a peripheral module to use, provided the peripheral is enabled and is an
input function as long as the PTxDDn = 0.

For the four configurable KBI module inputs on PTA7PTA4, when a pin is configured to detect rising
edges, the port pullup enable associated with the pin (PTAPEn) selects a pulldown rather than a pullup
device.

6.4.3 Slew Rate Control

Slew rate control can be enabled for each port pin that is configured as an output (PTxDDn = 1) or if a
peripheral module is enabled and its function is an output. Not all peripheral modules' outputs have slew
rate control; refer to Chapter 2, "Pins and Connections" for more information about which pins have slew
rate control.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    83
Chapter 6 Parallel Input/Output

6.5 Stop Modes

Depending on the stop mode, I/O functions differently as the result of executing a STOP instruction. An
explanation of I/O behavior for the various stop modes follows:

    When the MCU enters stop1 mode, all internal registers including general-purpose I/O control and
         data registers are powered down. All of the general-purpose I/O pins assume their reset state:
         output buffers and pullups turned off. Upon exit from stop1, all I/O must be initialized as if the
         MCU had been reset.

    When the MCU enters stop2 mode, the internal registers are powered down as in stop1 but the I/O
         pin states are latched and held. For example, a port pin that is an output driving low continues to
         function as an output driving low even though its associated data direction and output data registers
         are powered down internally. Upon exit from stop2, the pins continue to hold their states until a 1
         is written to the PPDACK bit. To avoid discontinuity in the pin state following exit from stop2, the
         user must restore the port control and data registers to the values they held before entering stop2.
         These values can be stored in RAM before entering stop2 because the RAM is maintained during
         stop2.

    In stop3 mode, all I/O is maintained because internal logic circuity stays powered up. Upon
         recovery, normal I/O function is available to the user.

6.6 Parallel I/O Registers and Control Bits

This section provides information about all registers and control bits associated with the parallel I/O ports.

Refer to tables in Chapter 4, "Memory" for the absolute address assignments for all parallel I/O registers.
This section refers to registers and control bits only by their names. A Freescale-provided equate or header
file normally is used to translate these names into the appropriate absolute addresses.

6.6.1 Port A Registers (PTAD, PTAPE, PTASE, and PTADD)

Port A includes eight pins shared between general-purpose I/O and the KBI module. Port A pins used as
general-purpose I/O pins are controlled by the port A data (PTAD), data direction (PTADD), pullup enable
(PTAPE), and slew rate control (PTASE) registers.

If the KBI takes control of a port A pin, the corresponding PTASE bit is ignored since the pin functions as
an input. As long as PTADD is 0, the PTAPE controls the pullup enable for the KBI function. Reads of
PTAD will return the logic value of the corresponding pin, provided PTADD is 0.

    MC9S08GB/GT Data Sheet, Rev. 2.3

84                                    Freescale Semiconductor
                                                            Parallel I/O Registers and Control Bits

PTAD               Bit 7     6      5      4      3            2      1    Bit 0
PTAPE                     PTAD6  PTAD5  PTAD4  PTAD3        PTAD2  PTAD1  PTAD0
PTASE  Read:
PTADD            PTAD7       0      0      0      0            0      0      0

       Write:

       Reset: 0

                         Read:
                                  PTAPE7 PTAPE6 PTAPE5 PTAPE4 PTAPE3 PTAPE2 PTAPE1 PTAPE0

                         Write:

       Reset: 0           0      0      0               0   0      0      0

                         Read:
                                  PTASE7 PTASE6 PTASE5 PTASE4 PTASE3 PTASE2 PTASE1 PTASE0

                         Write:

       Reset: 0           0      0      0               0   0      0      0

                         Read:
                                  PTADD7 PTADD6 PTADD5 PTADD4 PTADD3 PTADD2 PTADD1 PTADD0

                         Write:

       Reset: 0           0      0      0               0   0      0      0

                          Figure 6-9. Port A Registers

PTADn -- Port A Data Register Bit n (n = 07)

    For port A pins that are inputs, reads return the logic level on the pin. For port A pins that are
    configured as outputs, reads return the last value written to this register.

    Writes are latched into all bits of this register. For port A pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.

    Reset forces PTAD to all 0s, but these 0s are not driven out the corresponding pins because reset also
    configures all port pins as high-impedance inputs with pullups disabled.

PTAPEn -- Pullup Enable for Port A Bit n (n = 07)

    For port A pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled provided the corresponding PTADDn is 0. For port A pins that are configured as outputs,
    these bits are ignored and the internal pullup devices are disabled. When any of bits 7 through 4 of port
    A are enabled as KBI inputs and are configured to detect rising edges/high levels, the pullup enable
    bits enable pulldown rather than pullup devices.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

                          MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                    85
Chapter 6 Parallel Input/Output

PTASEn -- Slew Rate Control Enable for Port A Bit n (n = 07)

    For port A pins that are outputs, these read/write control bits determine whether the slew rate
    controlled outputs are enabled. For port A pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

PTADDn -- Data Direction for Port A Bit n (n = 07)

    These read/write bits control the direction of port A pins and what is read for PTAD reads.
        1 = Output driver enabled for port A bit n and PTAD reads return the contents of PTADn.
        0 = Input (output driver disabled) and reads return the pin value.

6.6.2 Port B Registers (PTBD, PTBPE, PTBSE, and PTBDD)

Port B includes eight general-purpose I/O pins that share with the ATD function. Port B pins used as
general-purpose I/O pins are controlled by the port B data (PTBD), data direction (PTBDD), pullup enable
(PTBPE), and slew rate control (PTBSE) registers.

If the ATD takes control of a port B pin, the corresponding PTBDD, PTBSE, and PTBPE bits are ignored.
When a port B pin is being used as an ATD pin, reads of PTBD will return a 0 of the corresponding pin,
provided PTBDD is 0.

    PTBD               Bit 7     6      5      4      3            2      1    Bit 0
    PTBPE                     PTBD6  PTBD5  PTBD4  PTBD3        PTBD2  PTBD1  PTBD0
    PTBSE  Read:
    PTBDD            PTBD7       0      0      0      0            0      0      0

           Write:

           Reset: 0

           Read:
                    PTBPE7 PTBPE6 PTBPE5 PTBPE4 PTBPE3 PTBPE2 PTBPE1 PTBPE0

           Write:

           Reset: 0           0      0      0      0            0      0      0

           Read:
                    PTBSE7 PTBSE6 PTBSE5 PTBSE4 PTBSE3 PTBSE2 PTBSE1 PTBSE0

           Write:

           Reset: 0           0      0      0      0            0      0      0

           Read:
                    PTBDD7 PTBDD6 PTBDD5 PTBDD4 PTBDD3 PTBDD2 PTBDD1 PTBDD0

           Write:

           Reset: 0           0      0      0      0            0      0      0

                              Figure 6-10. Port B Registers

                              MC9S08GB/GT Data Sheet, Rev. 2.3

86                                                                     Freescale Semiconductor
                                                                                                                                        Parallel I/O Registers and Control Bits

PTBDn -- Port B Data Register Bit n (n = 07)

    For port B pins that are inputs, reads return the logic level on the pin. For port B pins that are configured
    as outputs, reads return the last value written to this register.
    Writes are latched into all bits of this register. For port B pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.
    Reset forces PTBD to all 0s, but these 0s are not driven out on the corresponding pins because reset
    also configures all port pins as high-impedance inputs with pullups disabled.

PTBPEn -- Pullup Enable for Port B Bit n (n = 07)

    For port B pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled. For port B pins that are configured as outputs, these bits are ignored and the internal pullup
    devices are disabled.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

PTBSEn -- Slew Rate Control Enable for Port B Bit n (n = 07)

    For port B pins that are outputs, these read/write control bits determine whether the slew rate controlled
    outputs are enabled. For port B pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

PTBDDn -- Data Direction for Port B Bit n (n = 07)

    These read/write bits control the direction of port B pins and what is read for PTBD reads.
        1 = Output driver enabled for port B bit n and PTBD reads return the contents of PTBDn.
        0 = Input (output driver disabled) and reads return the pin value.

6.6.3 Port C Registers (PTCD, PTCPE, PTCSE, and PTCDD)

Port C includes eight general-purpose I/O pins that share with the SCI2 and IIC modules. Port C pins used
as general-purpose I/O pins are controlled by the port C data (PTCD), data direction (PTCDD), pullup
enable (PTCPE), and slew rate control (PTCSE) registers.

If the SCI2 takes control of a port C pin, the corresponding PTCDD bit is ignored. PTCSE can be used to
provide slew rate on the SCI2 transmit pin, TxD2. PTCPE can be used, provided the corresponding
PTCDD bit is 0, to provide a pullup device on the SCI2 receive pin, RxD2.

If the IIC takes control of a port C pin, the corresponding PTCDD bit is ignored. PTCSE can be used to
provide slew rate on the IIC serial data pin (SDA1), when in output mode and the IIC clock pin (SCL1).
PTCPE can be used, provided the corresponding PTCDD bit is 0, to provide a pullup device on the IIC
serial data pin, when in receive mode.

Reads of PTCD will return the logic value of the corresponding pin, provided PTCDD is 0.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    87
Chapter 6 Parallel Input/Output

    PTCD               Bit 7        6      5      4      3            2      1    Bit 0
    PTCPE                        PTCD6  PTCD5  PTCD4  PTCD3        PTCD2  PTCD1  PTCD0
    PTCSE  Read:
    PTCDD            PTCD7          0      0      0      0            0      0      0

           Write:

           Reset: 0

           Read:
                    PTCPE7 PTCPE6 PTCPE5 PTCPE4 PTCPE3 PTCPE2 PTCPE1 PTCPE0

           Write:

           Reset: 0              0      0      0      0            0      0      0

           Read:
                    PTCSE7 PTCSE6 PTCSE5 PTCSE4 PTCSE3 PTCSE2 PTCSE1 PTCSE0

           Write:

           Reset: 0              0      0      0      0            0      0      0

           Read:
                    PTCDD7 PTCDD6 PTCDD5 PTCDD4 PTCDD3 PTCDD2 PTCDD1 PTCDD0

           Write:

           Reset: 0              0      0      0      0            0      0      0

                                 Figure 6-11. Port C Registers

PTCDn -- Port C Data Register Bit n (n = 07)

    For port C pins that are inputs, reads return the logic level on the pin. For port C pins that are configured
    as outputs, reads return the last value written to this register.

    Writes are latched into all bits of this register. For port C pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.

    Reset forces PTCD to all 0s, but these 0s are not driven out the corresponding pins because reset also
    configures all port pins as high-impedance inputs with pullups disabled.

PTCPEn -- Pullup Enable for Port C Bit n (n = 07)

    For port C pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled. For port C pins that are configured as outputs, these bits are ignored and the internal pullup
    devices are disabled.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

PTCSEn -- Slew Rate Control Enable for Port C Bit n (n = 07)

    For port C pins that are outputs, these read/write control bits determine whether the slew rate controlled
    outputs are enabled. For port B pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

88                                                                        Freescale Semiconductor
                                                                                                                                        Parallel I/O Registers and Control Bits

PTCDDn -- Data Direction for Port C Bit n (n = 07)
    These read/write bits control the direction of port C pins and what is read for PTCD reads.
        1 = Output driver enabled for port C bit n and PTCD reads return the contents of PTCDn.
        0 = Input (output driver disabled) and reads return the pin value.

6.6.4 Port D Registers (PTDD, PTDPE, PTDSE, and PTDDD)

Port D includes eight pins shared between general-purpose I/O, TPM1, and TPM2. Port D pins used as
general-purpose I/O pins are controlled by the port D data (PTDD), data direction (PTDDD), pullup enable
(PTDPE), and slew rate control (PTDSE) registers.

If a TPM takes control of a port D pin, the corresponding PTDDD bit is ignored. When the TPM is in
output compare mode, the corresponding PTDSE can be used to provide slew rate on the pin. When the
TPM is in input capture mode, the corresponding PTDPE can be used, provided the corresponding
PTDDD bit is 0, to provide a pullup device on the pin.

Reads of PTDD will return the logic value of the corresponding pin, provided PTDDD is 0.

PTDD               Bit 7     6      5      4      3            2      1    Bit 0
PTDPE                     PTDD6  PTDD5  PTDD4  PTDD3        PTDD2  PTDD1  PTDD0
PTDSE  Read:
PTDDD            PTDD7       0      0      0      0            0      0      0

       Write:

       Reset: 0

                         Read:
                                  PTDPE7 PTDPE6 PTDPE5 PTDPE4 PTDPE3 PTDPE2 PTDPE1 PTDPE0

                         Write:

       Reset: 0           0      0      0      0            0      0      0

                         Read:
                                  PTDSE7 PTDSE6 PTDSE5 PTDSE4 PTDSE3 PTDSE2 PTDSE1 PTDSE0

                         Write:

       Reset: 0           0      0      0      0            0      0      0

                         Read:
                                  PTDDD7 PTDDD6 PTDDD5 PTDDD4 PTDDD3 PTDDD2 PTDDD1 PTDDD0

                         Write:

       Reset: 0           0      0      0      0            0      0      0

                          Figure 6-12. Port D Registers

                          MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                    89
Chapter 6 Parallel Input/Output

PTDDn -- Port D Data Register Bit n (n = 07)

    For port D pins that are inputs, reads return the logic level on the pin. For port D pins that are
    configured as outputs, reads return the last value written to this register.
    Writes are latched into all bits of this register. For port D pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.
    Reset forces PTDD to all 0s, but these 0s are not driven out the corresponding pins because reset also
    configures all port pins as high-impedance inputs with pullups disabled.

PTDPEn -- Pullup Enable for Port D Bit n (n = 07)

    For port D pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled. For port D pins that are configured as outputs, these bits are ignored and the internal pullup
    devices are disabled.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

PTDSEn -- Slew Rate Control Enable for Port D Bit n (n = 07)

    For port D pins that are outputs, these read/write control bits determine whether the slew rate
    controlled outputs are enabled. For port D pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

PTDDDn -- Data Direction for Port D Bit n (n = 07)

    These read/write bits control the direction of port D pins and what is read for PTDD reads.
        1 = Output driver enabled for port D bit n and PTDD reads return the contents of PTDDn.
        0 = Input (output driver disabled) and reads return the pin value.

6.6.5 Port E Registers (PTED, PTEPE, PTESE, and PTEDD)

Port E includes eight general-purpose I/O pins that share with the SCI1 and SPI modules. Port E pins used
as general-purpose I/O pins are controlled by the port E data (PTED), data direction (PTEDD), pullup
enable (PTEPE), and slew rate control (PTESE) registers.

If the SCI1 takes control of a port E pin, the corresponding PTEDD bit is ignored. PTESE can be used to
provide slew rate on the SCI1 transmit pin, TxD1. PTEPE can be used, provided the corresponding
PTEDD bit is 0, to provide a pullup device on the SCI1 receive pin, RxD1.

If the SPI takes control of a port E pin, the corresponding PTEDD bit is ignored. PTESE can be used to
provide slew rate on the SPI serial output pin (MOSI1 or MISO1) and serial clock pin (SPSCK1)
depending on the SPI operational mode. PTEPE can be used, provided the corresponding PTEDD bit is 0,
to provide a pullup device on the SPI serial input pins (MOSI1 or MISO1) and slave select pin (SS1)
depending on the SPI operational mode.

Reads of PTED will return the logic value of the corresponding pin, provided PTEDD is 0.

    MC9S08GB/GT Data Sheet, Rev. 2.3

90                                    Freescale Semiconductor
                                                            Parallel I/O Registers and Control Bits

PTED               Bit 7     6      5      4      3            2      1    Bit 0
PTEPE  Read:              PTED6  PTED5  PTED4  PTED3        PTED2  PTED1  PTED0
PTESE
PTEDD            PTED7       0      0      0      0            0      0      0
       Write:
       Reset: 0

                         Read:
                                  PTEPE7 PTEPE6 PTEPE5 PTEPE4 PTEPE3 PTEPE2 PTEPE1 PTEPE0

                         Write:

       Reset: 0           0      0      0      0            0      0      0

                         Read:
                                  PTESE7 PTESE6 PTESE5 PTESE4 PTESE3 PTESE2 PTESE1 PTESE0

                         Write:

       Reset: 0           0      0      0      0            0      0      0

                         Read:
                                  PTEDD7 PTEDD6 PTEDD5 PTEDD4 PTEDD3 PTEDD2 PTEDD1 PTEDD0

                         Write:

       Reset: 0           0      0      0      0            0      0      0

                          Figure 6-13. Port E Registers

PTEDn -- Port E Data Register Bit n (n = 07)

    For port E pins that are inputs, reads return the logic level on the pin. For port E pins that are configured
    as outputs, reads return the last value written to this register.

    Writes are latched into all bits in this register. For port E pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.

    Reset forces PTED to all 0s, but these 0s are not driven out the corresponding pins because reset also
    configures all port pins as high-impedance inputs with pullups disabled.

PTEPEn -- Pullup Enable for Port E Bit n (n = 07)

    For port E pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled. For port E pins that are configured as outputs, these bits are ignored and the internal pullup
    devices are disabled.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

PTESEn -- Slew Rate Control Enable for Port E Bit n (n = 07)

    For port E pins that are outputs, these read/write control bits determine whether the slew rate controlled
    outputs are enabled. For port E pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

                          MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                    91
Chapter 6 Parallel Input/Output

PTEDDn -- Data Direction for Port E Bit n (n = 07)
    These read/write bits control the direction of port E pins and what is read for PTED reads.
        1 = Output driver enabled for port E bit n and PTED reads return the contents of PTEDn.
        0 = Input (output driver disabled) and reads return the pin value.

6.6.6 Port F Registers (PTFD, PTFPE, PTFSE, and PTFDD)

Port F includes eight general-purpose I/O pins that are not shared with any peripheral module. Port F pins
used as general-purpose I/O pins are controlled by the port F data (PTFD), data direction (PTFDD), pullup
enable (PTFPE), and slew rate control (PTFSE) registers.

    PTFD               Bit 7     6      5      4      3            2      1    Bit 0
    PTFPE                     PTFD6  PTFD5  PTFD4  PTFD3        PTFD2  PTFD1  PTFD0
    PTFSE  Read:
    PTFDD            PTFD7       0      0      0      0            0      0      0

           Write:

           Reset: 0

           Read:
                    PTFPE7 PTFPE6 PTFPE5 PTFPE4 PTFPE3 PTFPE2 PTFPE1 PTFPE0

           Write:

           Reset: 0           0      0      0      0            0      0      0

           Read:
                    PTFSE7 PTFSE6 PTFSE5 PTFSE4 PTFSE3 PTFSE2 PTFSE1 PTFSE0

           Write:

           Reset: 0           0      0      0      0            0      0      0

           Read:
                    PTFDD7 PTFDD6 PTFDD5 PTFDD4 PTFDD3 PTFDD2 PTFDD1 PTFDD0

           Write:

           Reset: 0           0      0      0      0            0      0      0

                              Figure 6-14. Port F Registers

PTFDn -- Port PTF Data Register Bit n (n = 07)

    For port F pins that are inputs, reads return the logic level on the pin. For port F pins that are configured
    as outputs, reads return the last value written to this register.

    Writes are latched into all bits of this register. For port F pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.

    Reset forces PTFD to all 0s, but these 0s are not driven out the corresponding pins because reset also
    configures all port pins as high-impedance inputs with pullups disabled.

                              MC9S08GB/GT Data Sheet, Rev. 2.3

92                                                                     Freescale Semiconductor
                                                                                                                                        Parallel I/O Registers and Control Bits

PTFPEn -- Pullup Enable for Port F Bit n (n = 07)

    For port F pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled. For port F pins that are configured as outputs, these bits are ignored and the internal pullup
    devices are disabled.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

PTFSEn -- Slew Rate Control Enable for Port F Bit n (n = 07)

    For port F pins that are outputs, these read/write control bits determine whether the slew rate controlled
    outputs are enabled. For port F pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

PTFDDn -- Data Direction for Port F Bit n (n = 07)

    These read/write bits control the direction of port F pins and what is read for PTFD reads.
        1 = Output driver enabled for port F bit n and PTFD reads return the contents of PTFDn.
        0 = Input (output driver disabled) and reads return the pin value.

6.6.7 Port G Registers (PTGD, PTGPE, PTGSE, and PTGDD)

Port G includes eight general-purpose I/O pins that are shared with BKGD/MS function and the oscillator
or external clock pins. Port G pins used as general-purpose I/O pins are controlled by the port G data
(PTGD), data direction (PTGDD), pullup enable (PTGPE), and slew rate control (PTGSE) registers.

Port pin PTG0, while in reset, defaults to the BKGD/MS pin. After the MCU is out of reset, PTG0 can be
configured to be a general-purpose output pin. When BKGD/MS takes control of PTG0, the corresponding
PTGDD, PTGPE, and PTGPSE bits are ignored.

Port pins PTG1 and PTG2 can be configured to be oscillator or external clock pins. When the oscillator
takes control of a port G pin, the corresponding PTGD, PTGDD, PTGSE, and PTGPE bits are ignored.

Reads of PTGD will return the logic value of the corresponding pin, provided PTGDD is 0.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    93
Chapter 6 Parallel Input/Output

    PTGD               Bit 7        6      5      4      3            2      1    Bit 0
    PTGPE                        PTGD6  PTGD5  PTGD4  PTGD3        PTGD2  PTGD1  PTGD0
    PTGSE  Read:
    PTGDD            PTGD7          0      0      0      0            0      0      0

           Write:

           Reset: 0

           Read:
                    PTGPE7 PTGPE6 PTGPE5 PTGPE4 PTGPE3 PTGPE2 PTGPE1 PTGPE0

           Write:

           Reset: 0              0      0      0      0            0      0      0

           Read:
                    PTGSE7 PTGSE6 PTGSE5 PTGSE4 PTGSE3 PTGSE2 PTGSE1 PTGSE0

           Write:

           Reset: 0              0      0      0      0            0      0      0

           Read:
                    PTGDD7 PTGDD6 PTGDD5 PTGDD4 PTGDD3 PTGDD2 PTGDD1 PTGDD0

           Write:

           Reset: 0              0      0      0      0            0      0      0

                                 Figure 6-15. Port G Registers

PTGDn -- Port PTG Data Register Bit n (n = 07)

    For port G pins that are inputs, reads return the logic level on the pin. For port G pins that are
    configured as outputs, reads return the last value written to this register.

    Writes are latched into all bits of this register. For port G pins that are configured as outputs, the logic
    level is driven out the corresponding MCU pin.

    Reset forces PTGD to all 0s, but these 0s are not driven out the corresponding pins because reset also
    configures all port pins as high-impedance inputs with pullups disabled.

PTGPEn -- Pullup Enable for Port G Bit n (n = 07)

    For port G pins that are inputs, these read/write control bits determine whether internal pullup devices
    are enabled. For port G pins that are configured as outputs, these bits are ignored and the internal pullup
    devices are disabled.

        1 = Internal pullup device enabled.
        0 = Internal pullup device disabled.

PTGSEn -- Slew Rate Control Enable for Port G Bit n (n = 07)

    For port G pins that are outputs, these read/write control bits determine whether the slew rate
    controlled outputs are enabled. For port G pins that are configured as inputs, these bits are ignored.

        1 = Slew rate control enabled.
        0 = Slew rate control disabled.

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

94                                                                        Freescale Semiconductor
                                                                                                                                        Parallel I/O Registers and Control Bits

PTGDDn -- Data Direction for Port G Bit n (n = 07)
    These read/write bits control the direction of port G pins and what is read for PTGD reads.
        1 = Output driver enabled for port G bit n and PTGD reads return the contents of PTGDn.
        0 = Input (output driver disabled) and reads return the pin value.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    95
Chapter 6 Parallel Input/Output

                                 MC9S08GB/GT Data Sheet, Rev. 2.3

96                                                                 Freescale Semiconductor
Chapter 7 Internal Clock Generator (ICG) Module

The MC9S08GB/GT microcontroller provides one internal clock generation (ICG) module to create the
system bus frequency. All functions described in this section are available on the MC9S08GB/GT
microcontroller. The EXTAL and XTAL pins share port G bits 2 and 1, respectively. Analog supply lines
VDDA and VSSA are internally derived from the MCU's VDD and VSS pins. Electrical parametric data for
the ICG may be found in Appendix A, "Electrical Characteristics."

                      SYSTEM               TPM1            TPM2        IIC1        SCI1               SCI2  SPI1

                     CONTROL
                        LOGIC

     ICGERCLK
                                      RTI

     FFE

                         2

ICG                               FIXED FREQ CLOCK (XCLK)

     ICGOUT                   2  BUSCLK

     ICGLCLK*

                         CPU               BDC                               ATD1        RAM                     FLASH

     * ICGLCLK is the alternate BDC clock source for the MC9S08GB/GT.  ATD has min and max                  FLASH has frequency
                                                                       frequency requirements.              requirements for program
                                                                       See Chapter 1, "Introduction"        and erase operation.
                                                                       and Appendix A, "Electrical          See Appendix A, "Electrical
                                                                       Characteristics.                     Characteristics.

                          Figure 7-1. System Clock Distribution Diagram

                                              NOTE
     Freescale Semiconductor recommends that FLASH location $FFBE be
     reserved to store a nonvolatile version of ICGTRM. This will allow
     debugger and programmer vendors to perform a manual trim operation and
     store the resultant ICGTRM value for users to access at a later time.

                                           MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                           97
Chapter 7 Internal Clock Generator (ICG) Module        INTERNAL BUS
                                HCS08 CORE
                                                    DEBUG
            BDC           CPU                    MODULE (DBG)                         PORT A  8                   NOTES 1, 6
                                                                                                    PTA7/KBI1P7
                                                                                                    PTA0/KBI1P0

RESET       HCS08 SYSTEM CONTROL                       8-BIT KEYBOARD                 PORT B  8                   NOTE 1
NOTE 4                                           INTERRUPT MODULE (KBI1)                            PTB7/AD1P7
            RESETS AND INTERRUPTS                                                                   PTB0/AD1P0
IRQ           MODES OF OPERATION                       IIC MODULE (IIC1)
NOTES 2, 3     POWER MANAGEMENT
                                                 SERIAL COMMUNICATIONS
            RTI             COP                  INTERFACE MODULE (SCI1)                      PTC7
                                                                                              PTC6
            IRQ             LVD                  SERIAL COMMUNICATIONS    PORT C              PTC5                NOTES 1, 5
                                                 INTERFACE MODULE (SCI2)                      PTC4
                                                                                              PTC3/SCL1
                                                   3-CHANNEL TIMER/PWM                        PTC2/SDA1
                                                        MODULE (TPM1)                         PTC1/RxD2
                                                                                              PTC0/TxD2
                                                   5-CHANNEL TIMER/PWM
                    USER FLASH                          MODULE (TPM2)     PORT D              PTD7/TPM2CH4        NOTE 1
              (GB60 = 61,268 BYTES)                                                           PTD6/TPM2CH3
              (GB32 = 32,768 BYTES)                  SERIAL PERIPHERAL                        PTD5/TPM2CH2
                                                 INTERFACE MODULE (SPI1)                      PTD4/TPM2CH1
                    USER RAM                                                                  PTD3/TPM2CH0
              (GB60 = 4096 BYTES)                                                             PTD2/TPM1CH2
              (GB32 = 2048 BYTES)                                                             PTD1/TPM1CH1
                                                                                              PTD0/TPM1CH0
                        10-BIT
VDDAD          ANALOG-TO-DIGITAL                                          PORT E              PTE7                NOTE 1
VSSAD           CONVERTER (ATD1)
                                                                                              PTE6
VREFH            INTERNAL CLOCK                                                               PTE5/SPSCK1
VREFL            GENERATOR (ICG)                                                              PTE4/MOSI1
                                                                                              PTE3/MISO1
            LOW-POWER OSCILLATOR                                                              PTE2/SS1
                                                                                              PTE1/RxD1
                                                                                              PTE0/TxD1

                                                                                      PORT F  8                   NOTES 1, 5
                                                                                                    PTF7PTF0

    VDD          VOLTAGE                                                                      PTG7

    VSS          REGULATOR                                                            PORT G  PTG6
                                                                                              PTG5
                                                                                                                  NOTE 1
                                                                                              PTG4
NOTES:                                                                                        PTG3
      1. Port pins are software configurable with pullup device if input port.                PTG2/EXTAL
      2. Pin contains software configurable pullup/pulldown device if IRQ                     PTG1/XTAL
         enabled (IRQPE = 1).                                                                 PTG0/BKGD/MS
      3. IRQ does not have a clamp diode to VDD. IRQ should not be driven
         above VDD.
      4. Pin contains integrated pullup device.
      5. High current drive
      6. Pins PTA[7:4] contain both pullup and pulldown devices. Pulldown
         available when KBI enabled (KBIPn = 1).

                                     Figure 7-2. Block Diagram Highlighting ICG Module

                                     MC9S08GB/GT Data Sheet, Rev. 2.3

98                                                                                            Freescale Semiconductor
                                                                                                                                                                             Introduction

7.1 Introduction

Figure 7-3 is a top-level diagram that shows the functional organization of the internal clock generation
(ICG) module. This section includes a general description and a feature list.

         EXTAL                                                              ICG                 CLOCK
                         OSCILLATOR (OSC)                                                       SELECT
          XTAL
                         WITH EXTERNAL REF                                                     OUTPUT
     VDDA                                                                        ICGDCLK CLOCK
(SEE NOTE 2)             SELECT             ICGERCLK
                                                                                               SELECT
     V SSA                                   FREQUENCY DCO                                                 /R
(SEE NOTE 2)                                                                                                            ICGOUT
                                             LOCKED
                                                                                                         FFE
                                        REF  LOOP (FLL)                                                 ICGLCLK

                                 SELECT

                                                       LOSS OF LOCK               FIXED
                                                  AND CLOCK DETECTOR             CLOCK
                                                                                 SELECT
                                            ICGIRCLK
                                   IRG
                INTERNAL TYP 243 kHz         LOCAL CLOCK FOR OPTIONAL USE WITH BDC

                REFERENCE 8 MHz
                GENERATORS RG

NOTES:
       1. See Figure 7-1 for specific use of ICGOUT, FFE, ICGLCLK, ICGERCLK
       2. Not all HCS08 microcontrollers have unique supply pins for the ICG. See the device pin assignments in
            the Pins and Connections section for specifics.

                                                      Figure 7-3. ICG Block Diagram

The ICG provides multiple options for clock sources. This offers a user great flexibility when making
choices between cost, precision, current draw, and performance. As seen in Figure 7-3, the ICG consists
of four functional blocks. Each of these is briefly described here and then in more detail in a later section.

    Oscillator block -- The oscillator block provides means for connecting an external crystal or
         resonator. Two frequency ranges are software selectable to allow optimal startup and stability.
         Alternatively, the oscillator block can be used to route an external square wave to the system clock.
         External sources can provide a very precise clock source.

    Internal reference generator -- The internal reference generator consists of two controlled clock
         sources. One is designed to be approximately 8 MHz and can be selected as a local clock for the
         background debug controller. The other internal reference clock source is typically 243 kHz and
         can be trimmed for finer accuracy via software when a precise timed event is input to the MCU.
         This provides a highly reliable, low-cost clock source.

                                        MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                         99
Internal Clock Generator (ICG) Module

    Frequency-locked loop -- A frequency-locked loop (FLL) stage takes either the internal or
         external clock source and multiplies it to a higher frequency. Status bits provide information when
         the circuit has achieved lock and when it falls out of lock. Additionally, this block can monitor the
         external reference clock and signals whether the clock is valid or not.

    Clock select block -- The clock select block provides several switch options for connecting
         different clock sources to the system clock tree. ICGDCLK is the multiplied clock frequency out
         of the FLL, ICGERCLK is the reference clock frequency from the crystal or external clock source,
         and FFE (fixed frequency enable) is a control signal used to control the system fixed frequency
         clock (XCLK). ICGLCLK is the clock source for the background debug controller (BDC).

The module is intended to be very user friendly with many of the features occurring automatically without
user intervention. To quickly configure the module, go to Section 7.4, "Initialization/Application
Information," and pick an example that best suits the application needs.

7.1.1 Features

Features of the ICG and clock distribution system:
    Several options for the primary clock source allow a wide range of cost, frequency, and precision
         choices:
         -- 32 kHz100 kHz crystal or resonator
         -- 1 MHz16 MHz crystal or resonator
         -- External clock
         -- Internal reference generator
    Defaults to self-clocked mode to minimize startup delays
    Frequency-locked loop (FLL) generates 8 MHz to 40 MHz (for bus rates up to 20 MHz)
         -- Uses external or internal clock as reference frequency
    Automatic lockout of non-running clock sources
    Reset or interrupt on loss of clock or loss of FLL lock
    Digitally-controlled oscillator (DCO) preserves previous frequency settings, allowing fast
         frequency lock when recovering from stop3 mode
    DCO will maintain operating frequency during a loss or removal of reference clock
    Post-FLL divider selects 1 of 8 bus rate divisors (/1 through /128)
    Separate self-clocked source for real-time interrupt
    Trimmable internal clock source supports SCI communications without additional external
         components
    Automatic FLL engagement after lock is acquired

     MC9S08GB/GT Data Sheet, Rev. 2.3

100                                    Freescale Semiconductor
                                                                                                                                                       External Signal Description

7.1.2 Modes of Operation

This is a high-level description only. Detailed descriptions of operating modes are contained in
Section 7.3, "Functional Description."

    Mode 1 -- Off
         The output clock, ICGOUT, is static. This mode may be entered when the STOP instruction is
         executed.

    Mode 2 -- Self-clocked (SCM)
         Default mode of operation that is entered out of reset. The ICG's FLL is open loop and the digitally
         controlled oscillator (DCO) is free running at a frequency set by the filter bits.

    Mode 3 -- FLL engaged internal (FEI)
         In this mode, the ICG's FLL is used to create frequencies that are programmable multiples of the
         internal reference clock.
         -- FLL engaged internal unlocked is a transition state which occurs while the FLL is attempting
             to lock. The FLL DCO frequency is off target and the FLL is adjusting the DCO to match the
             target frequency.
         -- FLL engaged internal locked is a state which occurs when the FLL detects that the DCO is
             locked to a multiple of the internal reference.

    Mode 4 -- FLL bypassed external (FBE)
         In this mode, the ICG is configured to bypass the FLL and use an external clock as the clock source.

    Mode 5 -- FLL engaged external (FEE)
         The ICG's FLL is used to generate frequencies that are programmable multiples of the external
         clock reference.
         -- FLL engaged external unlocked is a transition state which occurs while the FLL is attempting
             to lock. The FLL DCO frequency is off target and the FLL is adjusting the DCO to match the
             target frequency.
         -- FLL engaged external locked is a state which occurs when the FLL detects that the DCO is
             locked to a multiple of the internal reference.

7.2 External Signal Description

7.2.1 Overview

Table 7-1 shows the user-accessible signals available for the ICG.

                                                        Table 7-1. Signal Properties

                         Name   Function                                              Reset State
                                                                                      Analog input
                         EXTAL  External clock/oscillator input                       Analog output
                          XTAL          Oscillator output

                                MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                              101
Internal Clock Generator (ICG) Module

7.2.2 Detailed Signal Descriptions

This section describes each pin signal in detail.

7.2.2.1 EXTAL-- External Reference Clock / Oscillator Input
If the first write to the ICG control register 1 selected FLL engaged external or FLL bypassed modes, this
signal is the analog external/reference clock or the input of the oscillator circuit. If the first write to the ICG
control register 1 selected FLL engaged internal or self-clocked modes, this signal has no effect on the
ICG.

7.2.2.2 XTAL-- Oscillator Output
If the first write to the ICG control register 1 selected FLL engaged external or FLL bypassed modes using
a crystal/resonator reference, this signal is the analog output of the oscillator amplifier circuit. In all other
cases, this signal has no effect on the ICG.

7.2.3 External Clock Connections

If an external clock is used, then the pins are connected as shown below.

                  ICG

         EXTAL    VSS  XTAL
     CLOCK INPUT
                       NOT CONNECTED

     Figure 7-4. External Clock Connections

7.2.4 External Crystal/Resonator Connections

If an external crystal/resonator frequency reference is used, then the pins are connected as shown below.
Recommended component values are listed in Appendix A, "Electrical Characteristics."

     MC9S08GB/GT Data Sheet, Rev. 2.3

102                                          Freescale Semiconductor
                                                               Functional Description

                                    ICG

                         EXTAL      VSS      XTAL

                                                           RS

                                C1       C2

                                                                                             RF

                                                                             CRYSTAL OR RESONATOR

                                     Figure 7-5. External Frequency Reference Connection

7.3 Functional Description

This section provides a functional description of each of the five operating modes of the ICG. Also covered
are the loss of clock and loss of lock errors and requirements for entry into each mode. The ICG is very
flexible, and in some configurations, it is possible to exceed certain clock specifications. When using the
FLL, configure the ICG so that the frequency of ICGDCLK does not exceed its maximum value to ensure
proper MCU operation.

7.3.1 Off Mode (Off)

Normally when the CPU enters stop mode, the ICG will cease all clock activity and is in the off state.
However there are two cases to consider when clock activity continues while the CPU is in stop mode.

7.3.1.1 BDM Active
When the BDM is enabled, the ICG continues activity as originally programmed. This allows access to
memory and control registers via the BDC controller.

7.3.1.2 OSCSTEN Bit Set
When the oscillator is enabled in stop mode (OSCSTEN = 1), the individual clock generators are enabled
but the clock feed to the rest of the MCU is turned off. This option is provided to avoid long oscillator
startup times if necessary, or to run the RTI from the oscillator during stop3.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                        103
Internal Clock Generator (ICG) Module

7.3.1.3 Stop/Off Mode Recovery

Upon the CPU exiting stop mode due to an interrupt, the previously set control bits are valid and the system
clock feed resumes. If FEE is selected, the ICG will source the internal reference until the external clock
is stable. If FBE is selected, the ICG will wait for the external clock to stabilize before enabling ICGOUT.

Upon the CPU exiting stop mode due to a reset, the previously set ICG control bits are ignored and the
default reset values applied. Therefore the ICG will exit stop in SCM mode configured for an
approximately 8 MHz DCO output (4 MHz bus clock) with trim value maintained. If using a crystal, 4096
clocks are detected prior to engaging ICGERCLK. This is incorporated in crystal start-up time.

7.3.2 Self-Clocked Mode (SCM)

Self-clocked mode (SCM) is the default mode of operation and is entered when any of the following
conditions occur:

    After any reset.
    Exiting from off mode when CLKS does not equal 10. If CLKS = X1, the ICG enters this state

         temporarily until the DCO is stable (DCOS = 1).
    CLKS bits are written from X1 to 00.
    CLKS = 1X and ICGERCLK is not detected (both ERCS = 0 and LOCS = 1).

In this state, the FLL loop is open. The DCO is on, and the output clock signal ICGOUT frequency is given
by fICGDCLK / R. The ICGDCLK frequency can be varied from 8 MHz to 40 MHz by writing a new value
into the filter registers (ICGFLTH and ICGFLTL). This is the only mode in which the filter registers can
be written.

If this mode is entered due to a reset, fICGDCLK will default to fSelf_reset which is nominally 8 MHz. If this
mode is entered from FLL engaged internal, fICGDCLK will maintain the previous frequency.If this mode
is entered from FLL engaged external (either by programming CLKS or due to a loss of external reference
clock), fICGDCLK will maintain the previous frequency, but ICGOUT will double if the FLL was unlocked.
If this mode is entered from off mode, fICGDCLK will be equal to the frequency of ICGDCLK before
entering off mode. If CLKS bits are set to 01 or 11 coming out of the Off state, the ICG enters this mode
until ICGDCLK is stable as determined by the DCOS bit. Once ICGDCLK is considered stable, the ICG
automatically closes the loop by switching to FLL engaged (internal or external) as selected by the CLKS
bits.

     MC9S08GB/GT Data Sheet, Rev. 2.3

104                                    Freescale Semiconductor
                                                                                                   Functional Description

          CLKST                                                CLKS                   RFD

          REFERENCE      ICGIRCLK                              CLOCK                   REDUCED     ICGOUT
          DIVIDER (/7)          FLT                            SELECT                 FREQUENCY
                                                               CIRCUIT
             RANGE                                                                    DIVIDER (R)
            MFD                                                     ICGDCLK

          SUBTRACTOR                         DIGITAL             DIGITALLY 1x
                                              LOOP             CONTROLLED
ICGERCLK                                     FILTER            OSCILLATOR

                                             CLKST                                2x
                                                                FLL ANALOG

                          OVERFLOW                      PULSE  ICG2DCLK                    FREQUENCY-
          COUNTER ENABLE                              COUNTER                                LOCKED

                   RANGE                                       RESET AND                    LOOP (FLL)

                                  LOCK AND                     INTERRUPT                          IRQ
                              LOSS OF CLOCK                     CONTROL                          RESET

                                 DETECTOR

          DCOS LOCK LOLS LOCS ERCS                             ICGIF LOLRE LOCRE

                         Figure 7-6. Detailed Frequency-Locked Loop Block Diagram

7.3.3 FLL Engaged, Internal Clock (FEI) Mode

FLL engaged internal (FEI) is entered when any of the following conditions occur:
    CLKS bits are written to 01
    The DCO clock stabilizes (DCOS = 1) while in SCM upon exiting the off state with CLKS = 01

In FLL engaged internal mode, the reference clock is derived from the internal reference clock
ICGIRCLK, and the FLL loop will attempt to lock the ICGDCLK frequency to the desired value, as
selected by the MFD bits.

7.3.3.1 FLL Engaged Internal Unlocked

FEI unlocked is a temporary state that is entered when FEI is entered and the count error (n) output from
the subtractor is greater than the maximum nunlock or less than the minimum nunlock, as required by the
lock detector to detect the unlock condition.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                    105
Internal Clock Generator (ICG) Module

The ICG will remain in this state while the count error (n) is greater than the maximum nlock or less than
the minimum nlock, as required by the lock detector to detect the lock condition.
In this state the output clock signal ICGOUT frequency is given by fICGDCLK / R.

7.3.3.2 FLL Engaged Internal Locked

FLL engaged internal locked is entered from FEI unlocked when the count error (n), which comes from
the subtractor, is less than nlock (max) and greater than nlock (min) for a given number of samples, as
required by the lock detector to detect the lock condition. The output clock signal ICGOUT frequency is
given by fICGDCLK / R. In FEI locked, the filter value is only updated once every four comparison cycles.
The update made is an average of the error measurements taken in the four previous comparisons.

7.3.4 FLL Bypassed, External Clock (FBE) Mode

FLL bypassed external (FBE) is entered when any of the following conditions occur:
    From SCM when CLKS = 10 and ERCS is high
    When CLKS = 10, ERCS = 1 upon entering off mode, and off is then exited
    From FLL engaged external mode if a loss of DCO clock occurs and the external reference is still
         valid (both LOCS = 1 and ERCS = 1)

In this state, the DCO and IRG are off and the reference clock is derived from the external reference clock,
ICGERCLK. The output clock signal ICGOUT frequency is given by fICGERCLK / R. If an external clock
source is used (REFS = 0), then the input frequency on the EXTAL pin can be anywhere in the range
0 MHz to 40 MHz. If a crystal or resonator is used (REFS = 1), then frequency range is either low for
RANGE = 0 or high for RANGE = 1.

7.3.5 FLL Engaged, External Clock (FEE) Mode

The FLL engaged external (FEE) mode is entered when any of the following conditions occur:
    CLKS = 11 and ERCS and DCOS are both high.
    The DCO stabilizes (DCOS = 1) while in SCM upon exiting the off state with CLKS = 11.

In FEE mode, the reference clock is derived from the external reference clock ICGERCLK, and the FLL
loop will attempt to lock the ICGDCLK frequency to the desired value, as selected by the MFD bits. To
run in FEE mode, there must be a working 32 kHz100 kHz or 2 MHz10 MHz external clock source. The
maximum external clock frequency is limited to 10 MHz in FEE mode to prevent over-clocking the DCO.
The minimum multiplier for the FLL, from Table 7-7 is 4. Because 4 X 10 MHz is 40MHz, which is the
operational limit of the DCO, the reference clock cannot be any faster than 10 MHz.

7.3.5.1 FLL Engaged External Unlocked

FEE unlocked is entered when FEE is entered and the count error (n) output from the subtractor is greater
than the maximum nunlock or less than the minimum nunlock, as required by the lock detector to detect the
unlock condition.

     MC9S08GB/GT Data Sheet, Rev. 2.3

106                                    Freescale Semiconductor
                                                                                                                                                              Functional Description

The ICG will remain in this state while the count error (n) is greater than the maximum nlock or less than
the minimum nlock, as required by the lock detector to detect the lock condition.

In this state, the pulse counter, subtractor, digital loop filter, and DCO form a closed loop and attempt to
lock it according to their operational descriptions later in this section. Upon entering this state and until
the FLL becomes locked, the output clock signal ICGOUT frequency is given by fICGDCLK / (2R) This
extra divide by two prevents frequency overshoots during the initial locking process from exceeding
chip-level maximum frequency specifications. Once the FLL has locked, if an unexpected loss of lock
causes it to re-enter the unlocked state while the ICG remains in FEE mode, the output clock signal
ICGOUT frequency is given by fICGDCLK / R.

7.3.5.2 FLL Engaged External Locked

FEE locked is entered from FEE unlocked when the count error (n) is less than nlock (max) and greater
than nlock (min) for a given number of samples, as required by the lock detector to detect the lock
condition. The output clock signal ICGOUT frequency is given by fICGDCLK/R. In FLL engaged external
locked, the filter value is only updated once every four comparison cycles. The update made is an average
of the error measurements taken in the four previous comparisons.

7.3.6 FLL Lock and Loss-of-Lock Detection

To determine the FLL locked and loss-of-lock conditions, the pulse counter counts the pulses of the DCO
for one comparison cycle (see Table 7-3 for explanation of a comparison cycle) and passes this number to
the subtractor. The subtractor compares this value to the value in MFD and produces a count error, n. To
achieve locked status, n must be between nlock (min) and nlock (max). Once the FLL has locked, n must
stay between nunlock (min) and nunlock (max) to remain locked. If n goes outside this range unexpectedly,
the LOLS status bit is set and remains set until cleared by software or until the MCU is reset. LOLS is
cleared by reading ICGS1 then writing 1 to ICGIF (LOLRE = 0), or by a loss-of-lock induced reset
(LOLRE = 1), or by any MCU reset.

If the ICG enters the off state due to stop mode when ENBDM = OSCSTEN = 0, the FLL loses locked
status (LOCK is cleared), but LOLS remains unchanged because this is not an unexpected loss-of-lock
condition. Though it would be unusual, if ENBDM is cleared to 0 while the MCU is in stop, the ICG enters
the off state. Because this is an unexpected stopping of clocks, LOLS will be set when the MCU wakes up
from stop.

Expected loss of lock occurs when the MFD or CLKS bits are changed or in FEI mode only, when the
TRIM bits are changed. In these cases, the LOCK bit will be cleared until the FLL regains lock, but the
LOLS will not be set.

7.3.7 FLL Loss-of-Clock Detection

The reference clock and the DCO clock are monitored under different conditions (see Table 7-2). Provided
the reference frequency is being monitored, ERCS = 1 indicates that the reference clock meets minimum
frequency requirements. When the reference and/or DCO clock(s) are being monitored, if either one falls
below a certain frequency, fLOR and fLOD, respectively, the LOCS status bit will be set to indicate the error.
LOCS will remain set until it is cleared by software or until the MCU is reset. LOCS is cleared by reading

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    107
Internal Clock Generator (ICG) Module

ICGS1 then writing 1 to ICGIF (LOCRE = 0), or by a loss-of-clock induced reset (LOCRE = 1), or by any
MCU reset.

If the ICG is in FEE, a loss of reference clock causes the ICG to enter SCM, and a loss of DCO clock causes
the ICG to enter FBE mode. If the ICG is in FBE mode, a loss of reference clock will cause the ICG to
enter SCM. In each case, the CLKST and CLKS bits will be automatically changed to reflect the new state.

A loss of clock will also cause a loss of lock when in FEE or FEI modes. Because the method of clearing
the LOCS and LOLS bits is the same, this would only be an issue in the unlikely case that LOLRE = 1 and
LOCRE = 0. In this case, the interrupt would be overridden by the reset for the loss of lock.

                                                        Table 7-2. Clock Monitoring

     Mode          CLKS REFST                 ERCS      External Reference  DCO Clock
                                                                 Clock      Monitored?
                   0X or 11            X  Forced Low
                                          Forced Low         Monitored?           No
     Off           10                  0  Real-Time(1)             No             No
                                          Forced Low               No             No
                   10                  1  Forced High                           Yes(2)
                                           Real-Time             Yes(1)         Yes(2)
                   0X                  X   Real-Time               No           Yes(2)
                                          Forced Low               No           Yes(2)
     SCM           10                  0   Real-Time               Yes           Yes
                                          Forced High              Yes           Yes
     (CLKST = 00)  10                  1   Real-Time               No             No
                                                                   Yes            No
                   11                  X   Real-Time               No
                                                                   Yes           Yes
     FEI           0X                  X
                                                                   Yes
     (CLKST = 01)  11                  X

     FBE           10                  0

     (CLKST = 10)  10                  1

           FEE     11                  X
     (CLKST = 11)

     1. If ENABLE is high (waiting for external crystal start-up after exiting stop).
     2. DCO clock will not be monitored until DCOS = 1 upon entering SCM from off or FLL bypassed external mode.

7.3.8 Clock Mode Requirements

A clock mode is requested by writing to CLKS1:CLKS0 and the actual clock mode is indicated by
CLKST1:CLKST0. Provided minimum conditions are met, the status shown in CLKST1:CLKST0 should
be the same as the requested mode in CLKS1:CLKS0. Table 7-3 shows the relationship between CLKS,
CLKST, and ICGOUT. It also shows the conditions for CLKS = CLKST or the reason CLKS  CLKST.

                                                           NOTE

                  If a crystal will be used before the next reset, then be sure to set REFS = 1
                  and CLKS = 1x on the first write to the ICGC1 register. Failure to do so will
                  result in "locking" REFS = 0 which will prevent the oscillator amplifier
                  from being enabled until the next reset occurs.

                                          MC9S08GB/GT Data Sheet, Rev. 2.3

108                                                                         Freescale Semiconductor
                                                                                    Functional Description

                               Table 7-3. ICG State Table

Actual Desired                        Reference   Comparison     ICGOUT         Conditions(1)      Reason
  Mode Mode              Range Frequency           Cycle Time          0                for         CLKS
(CLKST) (CLKS)                                                                                      CLKST
                                     (fREFERENCE)          --                   CLKS = CLKST
                                                           --                                           --
Off   Off               X  0                        8/fICGIRCLK                          --
(XX)  (XX)                                           8/fICGIRCLK
                         X  0                        8/fICGIRCLK  0             --                  ERCS = 0
      FBE                                            8/fICGIRCLK
      (10)                                           8/fICGIRCLK
                                                     8/fICGIRCLK
      SCM                X  fICGIRCLK/7(2)                 --     ICGDCLK/R     Not switching from  --
      (00)                                                 --                      FBE to SCM

      FEI                0  fICGIRCLK/7(1)                        ICGDCLK/R     --                  DCOS = 0

SCM   (01)

(00)  FBE                X  fICGIRCLK/7(1)                        ICGDCLK/R          --              ERCS = 0
                                                                  ICGDCLK/R          --
      (10)                                                        ICGDCLK/R     DCOS = 1            DCOS = 0 or
                                                                                                     ERCS = 0
      FEE                X  fICGIRCLK/7(1)
      (11)                                                                                                 --

      FEI                0  fICGIRCLK/7

FEI   (01)

(01)  FEE                X  fICGIRCLK/7                           ICGDCLK/R     --                  ERCS = 0

      (11)

      FBE                X  0                                     ICGERCLK/R      ERCS = 1                --
                                                                  ICGERCLK/R                        LOCS = 1 &
FBE   (10)                                                        ICGDCLK/R(3)          --           ERCS = 1
                                                                  ICGDCLK/R(2)
(10)  FEE                X  0                                                   ERCS = 1 and              --
                                                                                  DCOS = 1
      (11)                                                                                                --
                                                                                ERCS = 1 and
FEE   FEE                0  fICGERCLK              2/fICGERCLK                    DCOS = 1

(11)  (11)               1  fICGERCLK              128/fICGERCLK

1. CLKST will not update immediately after a write to CLKS. Several bus cycles are required before CLKST updates to the new
   value.

2. The reference frequency has no effect on ICGOUT in SCM, but the reference frequency is still used in making the comparisons
   that determine the DCOS bit

3. After initial LOCK; will be ICGDCLK/2R during initial locking process and while FLL is re-locking after the MFD bits are
   changed.

7.3.9 Fixed Frequency Clock

The ICG provides a fixed frequency clock output, XCLK, for use by on-chip peripherals. This output is
equal to the internal bus clock, BUSCLK, in FBE mode. In FEE mode, XCLK is equal to ICGERCLK 2
when the following conditions are met:

    (P N) R  4 where P is determined by RANGE (see Table 7-5), N and R are determined by
         MFD and RFD, respectively (see Table 7-6).

    LOCK = 1.

If the above conditions are not true, then XCLK is equal to BUSCLK.

                            MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                 109
Internal Clock Generator (ICG) Module

When the ICG is in either FEI or SCM mode, XCLK is turned off. Any peripherals which can use XCLK
as a clock source must not do so when the ICG is in FEI or SCM mode.

7.4 Initialization/Application Information

7.4.1 Introduction

The section is intended to give some basic direction on which configuration a user would want to select
when initializing the ICG. For some applications, the serial communication link may dictate the accuracy
of the clock reference. For other applications, lowest power consumption may be the chief clock
consideration. Still others may have lowest cost as the primary goal. The ICG allows great flexibility in
choosing which is best for any application.

                                             Table 7-4. ICG Configuration Consideration

        FLL             Clock Reference Source = Internal                   Clock Reference Source = External
     Engaged
              FEI                                                  FEE
              4 MHz < fBus < 20 MHz.                               4 MHz < fBus < 20 MHz
              Medium power (will be less than FEE if oscillator    Medium power (will be less than FEI if oscillator
              range = high)                                        range = low)
              Good clock accuracy (After IRG is trimmed)           High clock accuracy
              Lowest system cost (no external components           Medium/High system cost (crystal, resonator or
              required)                                            external clock source required)
              IRG is on. DCO is on. (1)                            IRG is off. DCO is on.

    FLL       SCM                                                  FBE
Bypassed      This mode is mainly provided for quick and reliable  fBus range <= 8 MHz when crystal or resonator is
              system startup.                                      used.
              3 MHz < fBus < 5 MHz (default).                      Lowest power
              3 MHz < fBus < 20 MHz (via filter bits).             Highest clock accuracy
              Medium power                                         Medium/High system cost (Crystal, resonator or
              Poor accuracy.                                       external clock source required)
              IRG is off. DCO is on and open loop.                 IRG is off. DCO is off.

1. The IRG typically consumes 100 A. The FLL and DCO typically consumes 0.5 to 2.5 mA, depending upon output frequency.
    For minimum power consumption and minimum jitter, choose N and R to be as small as possible.

The following sections contain initialization examples for various configurations.
                                                           NOTE

                  Hexadecimal values designated by a preceding $, binary values designated
                  by a preceding %, and decimal values have no preceding character.
Important configuration information is repeated here for reference sake.

              MC9S08GB/GT Data Sheet, Rev. 2.3

110                                                                Freescale Semiconductor
                                                                             Initialization/Application Information

                         Table 7-5. ICGOUT Frequency Calculation Options

                  Clock Scheme               fICGOUT(1)                     P                     Note
                                            fICGDCLK / R                   NA         Typical fICGOUT = 8 MHz
SCM -- self-clocked mode (FLL bypassed
internal)                                      fext / R                    NA                 out of reset
FBE -- FLL bypassed external            (fIRG / 7)* 64*N / R               64
FEI -- FLL engaged internal                                     Range = 0 ; P = 64     Typical fIRG = 243 kHz
FEE -- FLL engaged external                fext * P * N / R      Range = 1; P = 1

1. Ensure that fICGDCLK, which is equal to fICGOUT * R, does not exceed fICGDCLKmax.

                                   Table 7-6. MFD and RFD Decode Table

MFD Value                Multiplication Factor (N)             RFD         Division Factor (R)

     000                                 4                     000                    1
     001                                 6                     001                    2
     010                                 8                     010                    4
     011                                10                     011                    8
     100                                12                     100                   16
     101                                14                     101                   32
     110                                16                     110                   64
     111                                18                     111                   128

Register   Bit 7                6     5             4           3       2             1          Bit 0
ICGC1                             REFS                                                           0
ICGC2     0             RANGE      MFD                   CLKS         OSCSTEN        0(1)
ICGS1                             REFST                                                        ICGIF
ICGS2     LOLRE                                                LOCRE                 RFD       DCOS
ICGFLTU                               0
ICGFLTL                  CLKST        0             LOLS        LOCK   LOCS           ERCS
ICGTRM
           0                    0                   0           0       0             0

           0                    0                   0                        FLT

                                                          FLT

                                                          TRIM

                                 = Unimplemented or Reserved

1. This bit is reserved for Freescale Semiconductor internal use only. Any write operations to this register should
   write a 0 to this bit.

                                                  Figure 7-7. ICG Register Set

                                   MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                              111
Internal Clock Generator (ICG) Module

7.4.2 Example #1: External Crystal = 32 kHz, Bus Frequency = 4.19 MHz

In this example, the FLL will be used (in FEE mode) to multiply the external 32 kHz oscillator up to
8.38-MHz to achieve 4.19 MHz bus frequency.

After the MCU is released from reset, the ICG is in self-clocked mode (SCM) and supplies approximately
8 MHz on ICGOUT, which corresponds to a 4 MHz bus frequency (fBus).
The clock scheme will be FLL engaged, external (FEE). So

                                     fICGOUT = fext * P * N / R ; P = 64, fext = 32 kHz  Eqn. 7-1

Solving for N / R gives:

            N / R = 8.38 MHz /(32 kHz * 64) = 4 ; we can choose N = 4 and R =1           Eqn. 7-2

The values needed in each register to set up the desired operation are:

ICGC1 = $38 (%00111000)

     Bit 7         0                   Unimplemented or reserved, always reads zero
                                       Configures oscillator for low-frequency range; FLL prescale factor is 64
     Bit 6 RANGE 0                     Oscillator using crystal or resonator is requested
                                       FLL engaged, external reference clock mode
     Bit 5 REFS    1                   Oscillator disabled in stop modes
                                       Reserved for Freescale Semiconductor internal use; always write zero
     Bits 4:3 CLKS 11                  Unimplemented or reserved, always reads zero

     Bit 2 OSCSTEN 0

     Bit 1         0

     Bit 0         0

ICGC2 = $00 (%00000000)

     Bit 7 LOLRE 0                     Generates an interrupt request on loss of lock
                                       Sets the MFD multiplication factor to 4
     Bits 6:4 MFD  000                 Generates an interrupt request on loss of clock
                                       Sets the RFD division factor to 1
     Bit 3 LOCRE 0

     Bits 2:0 RFD  000

ICGS1 = $xx
    This is read only except for clearing interrupt flag

ICGS2 = $xx
    This is read only; should read DCOS = 1 before performing any time critical tasks

ICGFLTLU/L = $xx

    Only needed in self-clocked mode; FLT will be adjusted by loop to give 8.38 MHz DCO clock
    Bits 15:12 unused 0000
    Bits 11:0 FLT No need for user initialization

ICGTRM = $xx       Only need to write when trimming internal oscillator; not used when external
    Bits 7:0 TRIM  crystal is clock source

Figure 7-8 shows flow charts for three conditions requiring ICG initialization.

                                       MC9S08GB/GT Data Sheet, Rev. 2.3

112                                                                                      Freescale Semiconductor
                                                                                          Initialization/Application Information

           RECOVERY FROM        QUICK RECOVERY FROM STOP     MINIMUM CURRENT DRAW IN STOP
       RESET, STOP1, OR STOP2      RECOVERY FROM STOP3             RECOVERY FROM STOP3
                                          OSCSTEN = 1                     OSCSTEN = 0
             INITIALIZE ICG
                ICG1 = $38                     CHECK                           CHECK
                ICG2 = $00              FLL LOCK STATUS. NO             FLL LOCK STATUS. NO

                  CHECK                      LOCK = 1?                       LOCK = 1?
           FLL LOCK STATUS. NO                       YES                              YES

                LOCK = 1?                   CONTINUE                         CONTINUE
                         YES

       CONTINUE

                                                                         NOTE: THIS WILL REQUIRE THE OSCILLATOR TO START AND
                                                                         STABILIZE. ACTUAL TIME IS DEPENDENT ON CRYSTAL /RESONATOR
                                                                         AND EXTERNAL CIRCUITRY.

                            Figure 7-8. ICG Initialization for FEE in Example #1

7.4.3 Example #2: External Crystal = 4 MHz, Bus Frequency = 20 MHz

In this example, the FLL will be used (in FEE mode) to multiply the external 4 MHz oscillator up to
40-MHz to achieve 20 MHz bus frequency.

After the MCU is released from reset, the ICG is in self-clocked mode (SCM) and supplies approximately
8 MHz on ICGOUT which corresponds to a 4 MHz bus frequency (fBus).
During reset initialization software, the clock scheme will be set to FLL engaged, external (FEE). So

                                     fICGOUT = fext * P * N / R ; P = 1, fext = 4.00 MHz     Eqn. 7-3

Solving for N / R gives:

       N / R = 40 MHz /(4 MHz * 1) = 10 ; We can choose N = 10 and R = 1                     Eqn. 7-4

The values needed in each register to set up the desired operation are:

ICGC1 = $78 (%01111000)

Bit 7                    0      Unimplemented or reserved, always reads zero
                                Configures oscillator for high-frequency range; FLL prescale factor is 1
Bit 6 RANGE 1                   Requests an oscillator
                                FLL engaged, external reference clock mode
Bit 5 REFS               1      Disables the oscillator in stop modes
                                Reserved for Freescale Semiconductor internal use; always write zero
Bits 4:3 CLKS 11                Unimplemented or reserved, always reads zero

Bit 2 OSCSTEN 0

Bit 1                    0

Bit 0                    0

                                MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                                             113
Internal Clock Generator (ICG) Module

ICGC2 = $30 (%00110000)

     Bit 7 LOLRE  0 Generates an interrupt request on loss of lock
     Bit 6:4 MFD  011 Sets the MFD multiplication factor to 10
     Bit 3 LOCRE  0 Generates an interrupt request on loss of clock
     Bit 2:0 RFD  000 Sets the RFD division factor to 1

ICGS1 = $xx
    This is read only except for clearing interrupt flag

ICGS2 = $xx
    This is read only. Should read DCOS before performing any time critical tasks

ICGFLTLU/L = $xx
    Not used in this example

ICGTRM
    Not used in this example

                      RECOVERY FROM                        RECOVERY
                  RESET, STOP1, OR STOP2                   FROM STOP3

                                       INITIALIZE ICG      SERVICE INTERRUPT
                                        ICG1 = $7A         SOURCE (fBus = 4 MHz)
                                         ICG2 = $30

                                       CHECK           NO

                              FLL LOCK STATUS                    CHECK
                                                           FLL LOCK STATUS NO
                                       LOCK = 1?
                                                               LOCK = 1?
                                       YES                             YES

                                       CONTINUE               CONTINUE

                  Figure 7-9. ICG Initialization and Stop Recovery for Example #2

7.4.4 Example #3: No External Crystal Connection, 5.4 MHz Bus
           Frequency

In this example, the FLL will be used (in FEI mode) to multiply the internal 243 kHz (approximate)
reference clock up to 10.8 MHz to achieve 5.4 MHz bus frequency. This system will also use the trim
function to fine tune the frequency based on an external reference signal.

After the MCU is released from reset, the ICG is in self-clocked mode (SCM) and supplies approximately
8 MHz on ICGOUT which corresponds to a 4 MHz bus frequency (fBus).

                                       MC9S08GB/GT Data Sheet, Rev. 2.3

114                                                                                Freescale Semiconductor
                                                                                            Initialization/Application Information

The clock scheme will be FLL engaged, internal (FEI). So

                                 fICGOUT = (fIRG / 7) * P * N / R ; P = 64, fIRG = 243 kHz  Eqn. 7-5

Solving for N / R gives:

       N / R = 10.8 MHz /(243/7 kHz * 64) = 4.86 ; We can choose N = 10 and R = 2.          Eqn. 7-6

A trim procedure will be required to hone the frequency to exactly 5.4 MHz. An example of the trim
procedure is shown in example #4.

The values needed in each register to set up the desired operation are:

ICGC1 = $28 (%00101000)

Bit 7                    0    Unimplemented or reserved, always reads zero
                              Configures oscillator for low-frequency range; (don't care)
Bit 6 RANGE 0                 Oscillator using crystal or resonator requested (don't care)
                              FLL engaged, internal reference clock mode
Bit 5 REFS               1    Disables the oscillator in stop modes
                              Reserved for Freescale Semiconductor internal use; always write zero
Bits 4:3 CLKS 01              Unimplemented or reserved, always reads zero

Bit 2 OSCSTEN 0

Bit 1                    0

Bit 0                    0

ICGC2 = $31 (%00110001)

Bit 7 LOLRE 0                 Generates an interrupt request on loss of lock
                              Sets the MFD multiplication factor to 10
Bit 6:4 MFD              011  Generates an interrupt request on loss of clock
                              Sets the RFD division factor to 2
Bit 3 LOCRE 0

Bit 2:0 RFD              001

ICGS1 = $xx

This is read only except for clearing interrupt flag

ICGS2 = $xx
    This is read only; good idea to read this before performing time critical operations

ICGFLTLU/L = $xx
    Not used in this example

ICGTRM = $xx                  Only need to write when trimming internal oscillator; done in separate
    Bit 7:0 TRIM              operation (see example #4)

                              MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                             115
Internal Clock Generator (ICG) Module                      RECOVERY
                                                          FROM STOP3
                                       RECOVERY FROM
                                  RESET, STOP1, OR STOP2

      INITIALIZE ICG                                      CHECK                                  NO
        ICG1 = $28
        ICG2 = $31                                        FLL LOCK STATUS.

           CHECK                                          LOCK = 1?
     FLL LOCK STATUS. NO
                                                                                            YES
         LOCK = 1?
                  YES                                     CONTINUE

                                           CONTINUE
                                                                                  NOTE: THIS WILL REQUIRE THE INTERAL REFERENCE CLOCK TO START AND
                                                                                   STABILIZE.

                              Figure 7-10. ICG Initialization and Stop Recovery for Example #3

7.4.5 Example #4: Internal Clock Generator Trim

The internally generated clock source is guaranteed to have a period 25% of the nominal value. In some
case this may be sufficient accuracy. For other applications that require a tight frequency tolerance, a
trimming procedure is provided that will allow a very accurate source. This section outlines one example
of trimming the internal oscillator. Many other possible trimming procedures are valid and can be used.

                                                          MC9S08GB/GT Data Sheet, Rev. 2.3

116                                                                                                  Freescale Semiconductor
                                                                                    ICG Registers and Control Bits

Initial conditions:
1) Clock supplied from ATE has 500 s duty period
2) ICG configured for internal reference with 4 MHz bus

                                                             START TRIM PROCEDURE
                                                               ICGTRM = $80, n = 1

                                          MEASURE
                                 INCOMING CLOCK WIDTH
                            (COUNT = # OF BUS CLOCKS / 4)

COUNT < EXPECTED = 500
(RUNNING TOO SLOW)

                                  CASE ST.ATEMENT COUNT = EXPECTED = 500

           ICGTRM =                                COUNT > EXPECTED = 500           STORE ICGTRM VALUE
     ICGTRM - 128 / (2**n)                         (RUNNING TOO FAST)                  IN NON-VOLATILE
    (DECREASING ICGTRM                                                                      MEMORY
INCREASES THE FREQUENCY)                 ICGTRM =
                                   ICGTRM + 128 / (2**n)
                                 (INCREASING ICGTRM
                            DECREASES THE FREQUENCY)

                                                                                    CONTINUE

                         n = n+1

                                                                                  YES
                                                              IS n > 8?

                                                                     NO

                                                        Figure 7-11. Trim Procedure

In this particular case, the MCU has been attached to a PCB and the entire assembly is undergoing final
test with automated test equipment. A separate signal or message is provided to the MCU operating under
user provided software control. The MCU initiates a trim procedure as outlined in Figure 7-11 while the
tester supplies a precision reference signal.

If the intended bus frequency is near the maximum allowed for the device, it is recommended to trim using
a reduction divisor (R) twice the final value. Once the trim procedure is complete, the reduction divisor
can be restored. This will prevent accidental overshoot of the maximum clock frequency.

7.5 ICG Registers and Control Bits

Refer to the direct-page register summary in the Memory chapter of this data sheet for the absolute address
assignments for all ICG registers. This section refers to registers and control bits only by their names. A
Freescale-provided equate or header file is used to translate these names into the appropriate absolute
addresses.

                            MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                 117
Internal Clock Generator (ICG) Module

7.5.1 ICG Control Register 1 (ICGC1)

     Bit 7     6          5            4          3         2  1   Bit 0

     Read: 0                                         OSCSTEN 0(1)  0
     Write:
               RANGE REFS                   CLKS

     Reset: 0  1          0            0          0         1  0   0

               = Unimplemented or Reserved

     1. This bit is reserved for Freescale Semiconductor internal use only. Any write operations to this register should write
        a 0 to this bit.

                                             Figure 7-12. ICG Control Register 1 (ICGC1)

RANGE -- Frequency Range Select

    The RANGE bit controls the oscillator, reference divider, and FLL loop prescaler multiplication factor
    (P). It selects one of two reference frequency ranges for the ICG. The RANGE bit is write-once after
    a reset. The RANGE bit only has an effect in FLL engaged external and FLL bypassed external modes.

        1 = Oscillator configured for high frequency range. FLL loop prescale factor P is 1.
        0 = Oscillator configured for low frequency range. FLL loop prescale factor P is 64.

REFS -- External Reference Select

    The REFS bit controls the external reference clock source for ICGERCLK. The REFS bit is write-once
    after a reset.

        1 = Oscillator using crystal or resonator requested.
        0 = External clock requested.

CLKS -- Clock Mode Select

    The CLKS bits control the clock mode according to Figure 7-13. If FLL bypassed external is
    requested, it will not be selected until ERCS = 1. If the ICG enters off mode, the CLKS bits will remain
    unchanged.Writes to the CLKS bits will not take effect if a previous write is not complete.

               Figure 7-13. CLKS Clock Select

               CLKS[1:0]                Clock Mode
                    00                  Self-clocked
                    01    FLL engaged, internal reference
                    10    FLL bypassed, external reference
                    11    FLL engaged, external reference

The CLKS bits are writable at any time, unless the first write after a reset was CLKS = 0X, the CLKS bits
cannot be written to 1X until after the next reset (because the EXTAL pin was not reserved).

               MC9S08GB/GT Data Sheet, Rev. 2.3

118                                                            Freescale Semiconductor
                                                                                 ICG Registers and Control Bits

OSCSTEN -- Enable Oscillator in Off Mode

    The OSCSTEN bit controls whether or not the oscillator circuit remains enabled when the ICG enters
    off mode.

        1 = Oscillator enabled when ICG is in off mode, CLKS = 1X and REFST = 1.
        0 = Oscillator disabled when ICG is in off mode unless ENABLE is high, CLKS = 10, and

             REFST = 1.

7.5.2 ICG Control Register 2 (ICGC2)

                                 Bit 7  6          5    4  3                  2  1    Bit 0

                         Read:

                                 LOLRE             MFD     LOCRE                 RFD

                         Write:

                         Reset: 0       0          0    0  0                  0  0    0

                                 Figure 7-14. ICG Control Register 2 (ICGC2)

LOLRE -- Loss of Lock Reset Enable

    The LOLRE bit determines what type of request is made by the ICG following a loss of lock indication.
    The LOLRE bit only has an effect when LOLS is set.

        1 = Generate a reset request on loss of lock.
        0 = Generate an interrupt request on loss of lock.

MFD -- Multiplication Factor

    The MFD bits control the programmable multiplication factor in the FLL loop. The value specified by
    the MFD bits establishes the multiplication factor (N) applied to the reference frequency. Writes to the
    MFD bits will not take effect if a previous write is not complete. Select a low enough value for N such
    that fICGDCLK does not exceed its maximum specified value.

                                             Table 7-7. MFD Multiplication Factor Select

                                        MFD Value  Multiplication Factor (N)

                                             000                   4
                                             001                   6
                                             010                   8
                                             011                  10
                                             100                  12
                                             101                  14
                                             110                  16
                                             111                  18

                                        MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                      119
Internal Clock Generator (ICG) Module

LOCRE -- Loss of Clock Reset Enable

    The LOCRE bit determines how the system handles a loss of clock condition.
        1 = Generate a reset request on loss of clock.
        0 = Generate an interrupt request on loss of clock.

RFD -- Reduced Frequency Divider

    The RFD bits control the value of the divider following the clock select circuitry. The value specified
    by the RFD bits establishes the division factor (R) applied to the selected output clock source. Writes
    to the RFD bits will not take effect if a previous write is not complete.

               Table 7-8. RFD Reduced Frequency Divider Select

                                          RFD          Division Factor (R)

                                          000                     1
                                          001                     2
                                          010                     4
                                          011                     8
                                          100                    16
                                          101                    32
                                          110                    64
                                          111                    128

7.5.3  ICG Status Register 1 (ICGS1)

               Bit 7                             6     5     4           3     2     1   Bit 0
                                                    REFST  LOLS        LOCK  LOCS  ERCS  ICGIF
       Read:                              CLKST
       Write:                                                            0                 1
       Reset:                          0         0  0      0                 0     0       0

                                          = Unimplemented or Reserved

                                             Figure 7-15. ICG Status Register 1 (ICGS1)

CLKST -- Clock Mode Status
    The CLKST bits indicate the current clock mode. The CLKST bits don't update immediately after a
    write to the CLKS bits due to internal synchronization between clock domains.

                                          MC9S08GB/GT Data Sheet, Rev. 2.3

120                                                                                Freescale Semiconductor
                                                                       ICG Registers and Control Bits

                         Table 7-9. CLKST Clock Mode Status

                         CLKST[1:0]               Clock Status
                               00                  Self-clocked
                               01    FLL engaged, internal reference
                               10    FLL bypassed, external reference
                               11    FLL engaged, external reference

REFST -- Reference Clock Status

    The REFST bit indicates which clock reference is currently selected by the Reference Select circuit.
        1 = Crystal/Resonator selected.
        0 = External Clock selected.

LOLS -- FLL Loss of Lock Status

    The LOLS bit is an indication of FLL lock status. If LOLS is set, it remains set until cleared by
    software or an MCU reset.

        1 = FLL has unexpectedly lost lock since LOLS was last cleared, LOLRE determines action taken.
        0 = FLL has not unexpectedly lost lock since LOLS was last cleared.

LOCK -- FLL Lock Status

    The LOCK bit indicates whether the FLL has acquired lock. The LOCK bit is cleared in off,
    self-clocked, and FLL bypassed modes.

        1 = FLL is currently locked.
        0 = FLL is currently unlocked.

LOCS -- Loss Of Clock Status

    The LOCS bit is an indication of ICG loss of clock status. If LOCS is set, it remains set until cleared
    by software on an MCU reset.

        1 = ICG has lost clock since LOCS was last cleared, LOCRE determines action taken.
        0 = ICG has not lost clock since LOCS was last cleared.

ERCS -- External Reference Clock Status

    The ERCS bit is an indication of whether or not the external reference clock (ICGERCLK) meets the
    minimum frequency requirement.

        1 = External reference clock is stable, frequency requirement is met.
        0 = External reference clock is not stable, frequency requirement is not met.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                121
Internal Clock Generator (ICG) Module

ICGIF -- ICG Interrupt Flag

    The ICGIF read/write flag is set when an ICG interrupt request is pending. It is cleared by a reset or
    by reading the ICG status register when ICGIF is set and then writing a 1 to ICGIF. If another ICG
    interrupt occurs before the clearing sequence is complete, the sequence is reset so ICGIF would remain
    set after the clear sequence was completed for the earlier interrupt. Writing a 0 to ICGIF has no effect.

        1 = An ICG interrupt request is pending.
        0 = No ICG interrupt request is pending.

7.5.4 ICG Status Register 2 (ICGS2)

             Bit 7   6   5           4            3    2            1  Bit 0

     Read: 0         0   0           0            0    0            0  DCOS

     Write:

     Reset: 0        0   0           0            0    0            0  0

                     = Unimplemented or Reserved

                                             Figure 7-16. ICG Status Register 2 (ICGS2)

DCOS -- DCO Clock Stable

    The DCOS bit is set when the DCO clock (ICG2DCLK) is stable, meaning the count error has not
    changed by more than nunlock for two consecutive samples and the DCO clock is not static. This bit is
    used when exiting off state if CLKS = X1 to determine when to switch to the requested clock mode. It
    is also used in self-clocked mode to determine when to start monitoring the DCO clock. This bit is
    cleared upon entering the off state.

        1 = DCO clock is stable.
        0 = DCO clock is unstable.

7.5.5 ICG Filter Registers (ICGFLTU, ICGFLTL)

             Bit 15  14  13          12           11   10           9  Bit 8

     Read: 0         0   0           0

                                                               FLT

     Write:

     Reset: 0        0   0           0            0    0            0  0

                     = Unimplemented or Reserved

             Figure 7-17. ICG Upper Filter Register (ICGFLTU)

                     MC9S08GB/GT Data Sheet, Rev. 2.3

122                                                                 Freescale Semiconductor
                                                                                             ICG Registers and Control Bits

                                 Bit 7  6  5                  4                        3  2  1  Bit 0

                         Read:
                                                                                  FLT

                         Write:

Reset: 1                                1  0                  0                        0  0  0  0

                                         Figure 7-18. ICG Lower Filter Register (ICGFLTL)

The filter registers show the filter value (FLT).

FLT -- Filter Value

    The FLT bits indicate the current filter value, which controls the DCO frequency. The FLT bits are
    read only except when the CLKS bits are programmed to self-clocked mode (CLKS = 00). In
    self-clocked mode, any write to ICGFLTU updates the current 12-bit filter value. Writes to the
    ICGFLTU register will not affect FLT if a previous latch sequence is not complete.

7.5.6 ICG Trim Register (ICGTRM)

                                 7      6  5                  4                        3  2  1  0

                         Read:                                   TRIM
                         Write:

                         POR: 1         0  0                  0                        0  0  0  0

Reset: U                                U  U                  U                        U  U  U  U

                                 U = Unaffected by MCU reset

                                               Figure 7-19. ICG Trim Register (ICGTRM)

TRIM -- ICG Trim Setting

    The TRIM bits control the internal reference generator frequency. They allow a 25% adjustment of
    the nominal (POR) period. The bit's effect on period is binary weighted (i.e., bit 1 will adjust twice as
    much as changing bit 0). Increasing the binary value in TRIM will increase the period and decreasing
    the value will decrease the period.

                                        MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                123
Internal Clock Generator (ICG) Module

                                       MC9S08GB/GT Data Sheet, Rev. 2.3

124                                                                      Freescale Semiconductor
Chapter 8 Central Processor Unit (CPU)

8.1 Introduction

This section provides summary information about the registers, addressing modes, and instruction set of
the CPU of the HCS08 Family. For a more detailed discussion, refer to the HCS08 Family Reference
Manual, volume 1, Freescale Semiconductor document order number HCS08RMv1/D.

The HCS08 CPU is fully source- and object-code-compatible with the M68HC08 CPU. Several
instructions and enhanced addressing modes were added to improve C compiler efficiency and to support
a new background debug system which replaces the monitor mode of earlier M68HC08 microcontrollers
(MCU).

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    125
Central Processor Unit (CPU)

8.2 Features

Features of the HCS08 CPU include:
    Object code fully upward-compatible with M68HC05 and M68HC08 Families
    All registers and memory are mapped to a single 64-Kbyte address space
    16-bit stack pointer (any size stack anywhere in 64-Kbyte address space)
    16-bit index register (H:X) with powerful indexed addressing modes
    8-bit accumulator (A)
    Many instructions treat X as a second general-purpose 8-bit register
    Seven addressing modes:
         -- Inherent -- Operands in internal registers
         -- Relative -- 8-bit signed offset to branch destination
         -- Immediate -- Operand in next object code byte(s)
         -- Direct -- Operand in memory at $0000$00FF
         -- Extended -- Operand anywhere in 64-Kbyte address space
         -- Indexed relative to H:X -- Five submodes including auto increment
         -- Indexed relative to SP -- Improves C efficiency dramatically
    Memory-to-memory data move instructions with four address mode combinations
    Overflow, half-carry, negative, zero, and carry condition codes support conditional branching on
         the results of signed, unsigned, and binary-coded decimal (BCD) operations
    Efficient bit manipulation instructions
    Fast 8-bit by 8-bit multiply and 16-bit by 8-bit divide instructions
    STOP and WAIT instructions to invoke low-power operating modes

8.3 Programmer's Model and CPU Registers

Figure 8-1 shows the five CPU registers. CPU registers are not part of the memory map.

     MC9S08GB/GT Data Sheet, Rev. 2.3

126                                    Freescale Semiconductor
                                                                         Programmer's Model and CPU Registers

                             7                               0

                                 ACCUMULATOR                    A

                             16-BIT INDEX REGISTER H:X

                         H INDEX REGISTER (HIGH) INDEX REGISTER (LOW) X

                         15  87                              0
                                                                  SP
                             STACK POINTER

                         15                                  0
                                            PROGRAM COUNTER       PC

                             7                               0

                         CONDITION CODE REGISTER V 1 1 H I N Z C CCR

                                                                                                                CARRY
                                                                                                                ZERO
                                                                                                                NEGATIVE
                                                                                                                INTERRUPT MASK
                                                                                                                HALF-CARRY (FROM BIT 3)
                                                                                                                TWO'S COMPLEMENT OVERFLOW

                                                         Figure 8-1. CPU Registers

8.3.1 Accumulator (A)

The A accumulator is a general-purpose 8-bit register. One operand input to the arithmetic logic unit
(ALU) is connected to the accumulator and the ALU results are often stored into the A accumulator after
arithmetic and logical operations. The accumulator can be loaded from memory using various addressing
modes to specify the address where the loaded data comes from, or the contents of A can be stored to
memory using various addressing modes to specify the address where data from A will be stored.

Reset has no effect on the contents of the A accumulator.

8.3.2 Index Register (H:X)

This 16-bit register is actually two separate 8-bit registers (H and X), which often work together as a 16-bit
address pointer where H holds the upper byte of an address and X holds the lower byte of the address. All
indexed addressing mode instructions use the full 16-bit value in H:X as an index reference pointer;
however, for compatibility with the earlier M68HC05 Family, some instructions operate only on the
low-order 8-bit half (X).

Many instructions treat X as a second general-purpose 8-bit register that can be used to hold 8-bit data
values. X can be cleared, incremented, decremented, complemented, negated, shifted, or rotated. Transfer
instructions allow data to be transferred from A or transferred to A where arithmetic and logical operations
can then be performed.

For compatibility with the earlier M68HC05 Family, H is forced to $00 during reset. Reset has no effect
on the contents of X.

                             MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                  127
Central Processor Unit (CPU)

8.3.3 Stack Pointer (SP)

This 16-bit address pointer register points at the next available location on the automatic last-in-first-out
(LIFO) stack. The stack may be located anywhere in the 64-Kbyte address space that has RAM and can
be any size up to the amount of available RAM. The stack is used to automatically save the return address
for subroutine calls, the return address and CPU registers during interrupts, and for local variables. The
AIS (add immediate to stack pointer) instruction adds an 8-bit signed immediate value to SP. This is most
often used to allocate or deallocate space for local variables on the stack.

SP is forced to $00FF at reset for compatibility with the earlier M68HC05 Family. HCS08 programs
normally change the value in SP to the address of the last location (highest address) in on-chip RAM
during reset initialization to free up direct page RAM (from the end of the on-chip registers to $00FF).

The RSP (reset stack pointer) instruction was included for compatibility with the M68HC05 Family and
is seldom used in new HCS08 programs because it only affects the low-order half of the stack pointer.

8.3.4 Program Counter (PC)

The program counter is a 16-bit register that contains the address of the next instruction or operand to be
fetched.

During normal program execution, the program counter automatically increments to the next sequential
memory location every time an instruction or operand is fetched. Jump, branch, interrupt, and return
operations load the program counter with an address other than that of the next sequential location. This
is called a change-of-flow.

During reset, the program counter is loaded with the reset vector that is located at $FFFE and $FFFF. The
vector stored there is the address of the first instruction that will be executed after exiting the reset state.

8.3.5 Condition Code Register (CCR)

The 8-bit condition code register contains the interrupt mask (I) and five flags that indicate the results of
the instruction just executed. Bits 6 and 5 are set permanently to 1. The following paragraphs describe the
functions of the condition code bits in general terms. For a more detailed explanation of how each
instruction sets the CCR bits, refer to the HCS08 Family Reference Manual, volume 1, Freescale
Semiconductor document order number HCS08RMv1/D.

     7                               0

     CONDITION CODE REGISTER V 1 1 H I N Z C CCR

                                                      CARRY
                                                      ZERO
                                                      NEGATIVE
                                                      INTERRUPT MASK
                                                      HALF-CARRY (FROM BIT 3)
                                                      TWO'S COMPLEMENT OVERFLOW

     Figure 8-2. Condition Code Register

     MC9S08GB/GT Data Sheet, Rev. 2.3

128                                               Freescale Semiconductor
                                                                                                                                    Programmer's Model and CPU Registers

V -- Two's Complement Overflow Flag

    The CPU sets the overflow flag when a two's complement overflow occurs. The signed branch
    instructions BGT, BGE, BLE, and BLT use the overflow flag.

        1 = Overflow
        0 = No overflow

H -- Half-Carry Flag

    The CPU sets the half-carry flag when a carry occurs between accumulator bits 3 and 4 during an
    add-without-carry (ADD) or add-with-carry (ADC) operation. The half-carry flag is required for
    binary-coded decimal (BCD) arithmetic operations. The DAA instruction uses the states of the H and
    C condition code bits to automatically add a correction value to the result from a previous ADD or
    ADC on BCD operands to correct the result to a valid BCD value.

        1 = Carry between bits 3 and 4
        0 = No carry between bits 3 and 4

I -- Interrupt Mask Bit

    When the interrupt mask is set, all maskable CPU interrupts are disabled. CPU interrupts are enabled
    when the interrupt mask is cleared. When a CPU interrupt occurs, the interrupt mask is set
    automatically after the CPU registers are saved on the stack, but before the first instruction of the
    interrupt service routine is executed.

        1 = Interrupts disabled
        0 = Interrupts enabled

    Interrupts are not recognized at the instruction boundary after any instruction that clears I (CLI or
    TAP). This ensures that the next instruction after a CLI or TAP will always be executed without the
    possibility of an intervening interrupt, provided I was set.

N -- Negative Flag

    The CPU sets the negative flag when an arithmetic operation, logic operation, or data manipulation
    produces a negative result, setting bit 7 of the result. Simply loading or storing an 8-bit or 16-bit value
    causes N to be set if the most significant bit of the loaded or stored value was 1.

        1 = Negative result
        0 = Non-negative result

Z -- Zero Flag

    The CPU sets the zero flag when an arithmetic operation, logic operation, or data manipulation
    produces a result of $00 or $0000. Simply loading or storing an 8-bit or 16-bit value causes Z to be set
    if the loaded or stored value was all 0s.

        1 = Zero result
        0 = Non-zero result

C -- Carry/Borrow Flag

    The CPU sets the carry/borrow flag when an addition operation produces a carry out of bit 7 of the
    accumulator or when a subtraction operation requires a borrow. Some instructions -- such as bit test
    and branch, shift, and rotate -- also clear or set the carry/borrow flag.

        1 = Carry out of bit 7
        0 = No carry out of bit 7

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    129
Central Processor Unit (CPU)

8.4 Addressing Modes

Addressing modes define the way the CPU accesses operands and data. In the HCS08, all memory, status
and control registers, and input/output (I/O) ports share a single 64-Kbyte linear address space so a 16-bit
binary address can uniquely identify any memory location. This arrangement means that the same
instructions that access variables in RAM can also be used to access I/O and control registers or nonvolatile
program space.

Some instructions use more than one addressing mode. For instance, move instructions use one addressing
mode to specify the source operand and a second addressing mode to specify the destination address.
Instructions such as BRCLR, BRSET, CBEQ, and DBNZ use one addressing mode to specify the location
of an operand for a test and then use relative addressing mode to specify the branch destination address
when the tested condition is true. For BRCLR, BRSET, CBEQ, and DBNZ, the addressing mode listed in
the instruction set tables is the addressing mode needed to access the operand to be tested, and relative
addressing mode is implied for the branch destination.

8.4.1 Inherent Addressing Mode (INH)

In this addressing mode, operands needed to complete the instruction (if any) are located within CPU
registers so the CPU does not need to access memory to get any operands.

8.4.2 Relative Addressing Mode (REL)

Relative addressing mode is used to specify the destination location for branch instructions. A signed 8-bit
offset value is located in the memory location immediately following the opcode. During execution, if the
branch condition is true, the signed offset is sign-extended to a 16-bit value and is added to the current
contents of the program counter, which causes program execution to continue at the branch destination
address.

8.4.3 Immediate Addressing Mode (IMM)

In immediate addressing mode, the operand needed to complete the instruction is included in the object
code immediately following the instruction opcode in memory. In the case of a 16-bit immediate operand,
the high-order byte is located in the next memory location after the opcode, and the low-order byte is
located in the next memory location after that.

8.4.4 Direct Addressing Mode (DIR)

In direct addressing mode, the instruction includes the low-order eight bits of an address in the direct page
($0000$00FF). During execution a 16-bit address is formed by concatenating an implied $00 for the
high-order half of the address and the direct address from the instruction to get the 16-bit address where
the desired operand is located. This is faster and more memory efficient than specifying a complete 16-bit
address for the operand.

     MC9S08GB/GT Data Sheet, Rev. 2.3

130                                    Freescale Semiconductor
                                                                                                                                                                   Addressing Modes

8.4.5 Extended Addressing Mode (EXT)

In extended addressing mode, the full 16-bit address of the operand is located in the next two bytes of
program memory after the opcode (high byte first).

8.4.6 Indexed Addressing Mode

Indexed addressing mode has seven variations including five that use the 16-bit H:X index register pair and
two that use the stack pointer as the base reference.

8.4.6.1 Indexed, No Offset (IX)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair as the address of
the operand needed to complete the instruction.

8.4.6.2 Indexed, No Offset with Post Increment (IX+)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair as the address of
the operand needed to complete the instruction. The index register pair is then incremented
(H:X = H:X + $0001) after the operand has been fetched. This addressing mode is only used for MOV and
CBEQ instructions.

8.4.6.3 Indexed, 8-Bit Offset (IX1)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair plus an unsigned
8-bit offset included in the instruction as the address of the operand needed to complete the instruction.

8.4.6.4 Indexed, 8-Bit Offset with Post Increment (IX1+)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair plus an unsigned
8-bit offset included in the instruction as the address of the operand needed to complete the instruction.
The index register pair is then incremented (H:X = H:X + $0001) after the operand has been fetched. This
addressing mode is used only for the CBEQ instruction.

8.4.6.5 Indexed, 16-Bit Offset (IX2)
This variation of indexed addressing uses the 16-bit value in the H:X index register pair plus a 16-bit offset
included in the instruction as the address of the operand needed to complete the instruction.

8.4.6.6 SP-Relative, 8-Bit Offset (SP1)
This variation of indexed addressing uses the 16-bit value in the stack pointer (SP) plus an unsigned 8-bit
offset included in the instruction as the address of the operand needed to complete the instruction.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    131
Central Processor Unit (CPU)

8.4.6.7 SP-Relative, 16-Bit Offset (SP2)

This variation of indexed addressing uses the 16-bit value in the stack pointer (SP) plus a 16-bit offset
included in the instruction as the address of the operand needed to complete the instruction.

8.5 Special Operations

The CPU performs a few special operations that are similar to instructions but do not have opcodes like
other CPU instructions. In addition, a few instructions such as STOP and WAIT directly affect other MCU
circuitry. This section provides additional information about these operations.

8.5.1 Reset Sequence

Reset can be caused by a power-on-reset (POR) event, internal conditions such as the COP (computer
operating properly) watchdog, or by assertion of an external active-low reset pin. When a reset event
occurs, the CPU immediately stops whatever it is doing (the MCU does not wait for an instruction
boundary before responding to a reset event). For a more detailed discussion about how the MCU
recognizes resets and determines the source, refer to the Resets, Interrupts, and System Configuration
chapter.

The reset event is considered concluded when the sequence to determine whether the reset came from an
internal source is done and when the reset pin is no longer asserted. At the conclusion of a reset event, the
CPU performs a 6-cycle sequence to fetch the reset vector from $FFFE and $FFFF and to fill the
instruction queue in preparation for execution of the first program instruction.

8.5.2 Interrupt Sequence

When an interrupt is requested, the CPU completes the current instruction before responding to the
interrupt. At this point, the program counter is pointing at the start of the next instruction, which is where
the CPU should return after servicing the interrupt. The CPU responds to an interrupt by performing the
same sequence of operations as for a software interrupt (SWI) instruction, except the address used for the
vector fetch is determined by the highest priority interrupt that is pending when the interrupt sequence
started.

The CPU sequence for an interrupt is:
    1. Store the contents of PCL, PCH, X, A, and CCR on the stack, in that order.
    2. Set the I bit in the CCR.
    3. Fetch the high-order half of the interrupt vector.
    4. Fetch the low-order half of the interrupt vector.
    5. Delay for one free bus cycle.
    6. Fetch three bytes of program information starting at the address indicated by the interrupt vector
         to fill the instruction queue in preparation for execution of the first instruction in the interrupt
         service routine.

After the CCR contents are pushed onto the stack, the I bit in the CCR is set to prevent other interrupts
while in the interrupt service routine. Although it is possible to clear the I bit with an instruction in the

     MC9S08GB/GT Data Sheet, Rev. 2.3

132                                    Freescale Semiconductor
                                                                                                                                                                   Special Operations

interrupt service routine, this would allow nesting of interrupts (which is not recommended because it
leads to programs that are difficult to debug and maintain).

For compatibility with the earlier M68HC05 MCUs, the high-order half of the H:X index register pair (H)
is not saved on the stack as part of the interrupt sequence. The user must use a PSHH instruction at the
beginning of the service routine to save H and then use a PULH instruction just before the RTI that ends
the interrupt service routine. It is not necessary to save H if you are certain that the interrupt service routine
does not use any instructions or auto-increment addressing modes that might change the value of H.

The software interrupt (SWI) instruction is like a hardware interrupt except that it is not masked by the
global I bit in the CCR and it is associated with an instruction opcode within the program so it is not
asynchronous to program execution.

8.5.3 Wait Mode Operation

The WAIT instruction enables interrupts by clearing the I bit in the CCR. It then halts the clocks to the
CPU to reduce overall power consumption while the CPU is waiting for the interrupt or reset event that
will wake the CPU from wait mode. When an interrupt or reset event occurs, the CPU clocks will resume
and the interrupt or reset event will be processed normally.

If a serial BACKGROUND command is issued to the MCU through the background debug interface while
the CPU is in wait mode, CPU clocks will resume and the CPU will enter active background mode where
other serial background commands can be processed. This ensures that a host development system can still
gain access to a target MCU even if it is in wait mode.

8.5.4 Stop Mode Operation

Usually, all system clocks, including the crystal oscillator (when used), are halted during stop mode to
minimize power consumption. In such systems, external circuitry is needed to control the time spent in
stop mode and to issue a signal to wake up the target MCU when it is time to resume processing. Unlike
the earlier M68HC05 and M68HC08 MCUs, the HCS08 can be configured to keep a minimum set of
clocks running in stop mode. This optionally allows an internal periodic signal to wake the target MCU
from stop mode.

When a host debug system is connected to the background debug pin (BKGD) and the ENBDM control
bit has been set by a serial command through the background interface (or because the MCU was reset into
active background mode), the oscillator is forced to remain active when the MCU enters stop mode. In this
case, if a serial BACKGROUND command is issued to the MCU through the background debug interface
while the CPU is in stop mode, CPU clocks will resume and the CPU will enter active background mode
where other serial background commands can be processed. This ensures that a host development system
can still gain access to a target MCU even if it is in stop mode.

Recovery from stop mode depends on the particular HCS08 and whether the oscillator was stopped in stop
mode. Refer to the Modes of Operation chapter for more details.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    133
Central Processor Unit (CPU)

8.5.5 BGND Instruction

The BGND instruction is new to the HCS08 compared to the M68HC08. BGND would not be used in
normal user programs because it forces the CPU to stop processing user instructions and enter the active
background mode. The only way to resume execution of the user program is through reset or by a host
debug system issuing a GO, TRACE1, or TAGGO serial command through the background debug
interface.

Software-based breakpoints can be set by replacing an opcode at the desired breakpoint address with the
BGND opcode. When the program reaches this breakpoint address, the CPU is forced to active background
mode rather than continuing the user program.

8.6 HCS08 Instruction Set Summary

Instruction Set Summary Nomenclature

The nomenclature listed here is used in the instruction descriptions in Table 8-1.

Operators

          ( ) = Contents of register or memory location shown inside parentheses
           = Is loaded with (read: "gets")
           & = Boolean AND

            | = Boolean OR
            = Boolean exclusive-OR
            = Multiply
            = Divide
            : = Concatenate
           + = Add
            = Negate (two's complement)

CPU registers  Accumulator
               Condition code register
           A=  Index register, higher order (most significant) 8 bits
       CCR =   Index register, lower order (least significant) 8 bits
               Program counter
           H=  Program counter, higher order (most significant) 8 bits
           X=  Program counter, lower order (least significant) 8 bits
         PC =  Stack pointer
       PCH =
       PCL =
         SP =

Memory and addressing

         M = A memory location or absolute data, depending on addressing mode

M:M + $0001= A 16-bit value in two consecutive memory locations. The higher-order (most
                      significant) 8 bits are located at the address of M, and the lower-order (least
                      significant) 8 bits are located at the next higher sequential address.

               MC9S08GB/GT Data Sheet, Rev. 2.3

134                                                                                 Freescale Semiconductor
                                                                                                                                                HCS08 Instruction Set Summary

Condition code register (CCR) bits
           V = Two's complement overflow indicator, bit 7
           H = Half carry, bit 4
            I = Interrupt mask, bit 3
           N = Negative indicator, bit 2
           Z = Zero indicator, bit 1
           C = Carry/borrow, bit 0 (carry out of bit 7)

CCR activity notation
            = Bit not affected
           0 = Bit forced to 0
           1 = Bit forced to 1
                 = Bit set or cleared according to results of operation
           U = Undefined after the operation

Machine coding notation
          dd = Low-order 8 bits of a direct address $0000$00FF (high byte assumed to be $00)
          ee = Upper 8 bits of 16-bit offset
           ff = Lower 8 bits of 16-bit offset or 8-bit offset
            ii = One byte of immediate data
            jj = High-order byte of a 16-bit immediate data value
          kk = Low-order byte of a 16-bit immediate data value
          hh = High-order byte of 16-bit extended address
            ll = Low-order byte of 16-bit extended address
           rr = Relative offset

Source form

Everything in the source forms columns, except expressions in italic characters, is literal information that
must appear in the assembly source file exactly as shown. The initial 3- to 5-letter mnemonic is always a
literal expression. All commas, pound signs (#), parentheses, and plus signs (+) are literal characters.

           n -- Any label or expression that evaluates to a single integer in the range 07
      opr8i -- Any label or expression that evaluates to an 8-bit immediate value
     opr16i -- Any label or expression that evaluates to a 16-bit immediate value
     opr8a -- Any label or expression that evaluates to an 8-bit value. The instruction treats this 8-bit

                      value as the low order 8 bits of an address in the direct page of the 64-Kbyte address
                      space ($00xx).
    opr16a -- Any label or expression that evaluates to a 16-bit value. The instruction treats this
                      value as an address in the 64-Kbyte address space.
      oprx8 -- Any label or expression that evaluates to an unsigned 8-bit value, used for
                      indexed addressing
    oprx16 -- Any label or expression that evaluates to a 16-bit value. Because the HCS08
                      has a 16-bit address bus, this can be either a signed or an unsigned value.

                         MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                    135
Central Processor Unit (CPU)

     rel -- Any label or expression that refers to an address that is within 128 to +127
                 locations from the next address after the last byte of object code for the current
                 instruction. The assembler will calculate the 8-bit signed offset and include it in
                 the object code for this instruction.

Address modes   Inherent (no operands)
        INH =   8-bit or 16-bit immediate
       IMM =    8-bit direct
        DIR =   16-bit extended
       EXT =    16-bit indexed no offset
          IX =  16-bit indexed no offset, post increment (CBEQ and MOV only)
         IX+ =  16-bit indexed with 8-bit offset from H:X
         IX1 =  16-bit indexed with 8-bit offset, post increment
       IX1+ =   (CBEQ only)
                16-bit indexed with 16-bit offset from H:X
         IX2 =  8-bit relative offset
       REL =    Stack pointer with 8-bit offset
       SP1 =    Stack pointer with 16-bit offset
       SP2 =
                        Table 8-1. HCS08 Instruction Set Summary (Sheet 1 of 7)

     Source     Operation                  Description                                 Effect  Address
      Form                                                                            on CCR      Mode

                                                                                 VH I NZC                   Opcode
                                                                                                                     Operand
                                                                                                                             Bus Cycles1

ADC #opr8i                                                                                     IMM  A9 ii    2
ADC opr8a
ADC opr16a                                                                                     DIR  B9 dd    3
ADC oprx16,X
ADC oprx8,X                                                                                    EXT  C9 hh ll 4
ADC ,X
ADC oprx16,SP   Add with Carry                       A  (A) + (M) + (C)                       IX2  D9 ee ff 4
ADC oprx8,SP                                                                                   IX1
                Add without Carry                        A  (A) + (M)                               E9 ff    3
ADD #opr8i
ADD opr8a       Add Immediate Value                    SP  (SP) + (M)                          IX   F9       3
ADD opr16a      (Signed) to Stack Pointer  M is sign extended to a 16-bit value
ADD oprx16,X    Add Immediate Value                                                            SP2  9ED9 ee ff 5
ADD oprx8,X     (Signed) to Index                     H:X  (H:X) + (M)
ADD ,X          Register (H:X)             M is sign extended to a 16-bit value                SP1  9EE9 ff  4
ADD oprx16,SP
ADD oprx8,SP    Logical AND                              A  (A) & (M)                          IMM  AB ii    2

AIS #opr8i                                                                                     DIR  BB dd    3

AIX #opr8i                                                                                     EXT  CB hh ll 4

AND #opr8i                                                                                    IX2  DB ee ff 4
AND opr8a                                                                                      IX1
AND opr16a                                                                                          EB ff    3
AND oprx16,X
AND oprx8,X                                                                                    IX   FB       3
AND ,X
AND oprx16,SP                                                                                  SP2  9EDB ee ff 5
AND oprx8,SP
                                                                                               SP1  9EEB ff  4

                                                                                  IMM    A7 ii    2

                                                                                  IMM    AF ii    2

                                                                                               IMM  A4 ii    2

                                                                                               DIR  B4 dd    3

                                                                                               EXT  C4 hh ll 4

                                                                                 0          IX2  D4 ee ff 4
                                                                                               IX1
                                                                                                    E4 ff    3

                                                                                               IX   F4       3

                                                                                               SP2  9ED4 ee ff 5

                                                                                               SP1  9EE4 ff  4

                                           MC9S08GB/GT Data Sheet, Rev. 2.3

136                                                                                                 Freescale Semiconductor
                                                                                           HCS08 Instruction Set Summary

                         Table 8-1. HCS08 Instruction Set Summary (Sheet 2 of 7)

       Source            Operation        Description                        Effect        Address
        Form                                                                on CCR            Mode

ASL opr8a                                                              VH I NZC                         Opcode
ASLA                                                                                                             Operand
ASLX                                                                                                                     Bus Cycles1
ASL oprx8,X
ASL ,X                                                                                     DIR       38 dd    5
ASL oprx8,SP
ASR opr8a                                                                                  INH       48       1
ASRA
ASRX           Arithmetic Shift Left      C                         0                    INH       58       1
ASR oprx8,X    (Same as LSL)                     b7         b0
ASR ,X                                                                                     IX1       68 ff    5
ASR oprx8,SP
BCC rel                                                                                    IX        78       4

BCLR n,opr8a                                                                               SP1       9E68 ff  6

BCS rel                                                                                    DIR       37 dd    5
BEQ rel
                                                                                           INH       47       1
BGE rel
               Arithmetic Shift Right                               C                    INH       57       1
BGND                                                        b0
                                          b7                                               IX1       67 ff    5
BGT rel
                                                                                           IX        77       4
BHCC rel
                                                                                           SP1       9E67 ff  6
BHCS rel
BHI rel        Branch if Carry Bit Clear  Branch if (C) = 0             REL               24 rr    3
BHS rel
BIH rel                                                                                    DIR (b0)  11 dd    5
BIL rel
BIT #opr8i                                                                                 DIR (b1)  13 dd    5
BIT opr8a
BIT opr16a                                                                                 DIR (b2)  15 dd    5
BIT oprx16,X
BIT oprx8,X    Clear Bit n in Memory                 Mn  0                           DIR (b3)  17 dd    5
BIT ,X                                                                                     DIR (b4)  19 dd    5
BIT oprx16,SP
BIT oprx8,SP                                                                               DIR (b5)  1B dd    5

BLE rel                                                                                    DIR (b6)  1D dd    5

BLO rel                                                                                    DIR (b7)  1F dd    5
BLS rel
BLT rel        Branch if Carry Bit Set    Branch if (C) = 1             REL               25 rr    3
               (Same as BLO)
BMC rel
               Branch if Equal            Branch if (Z) = 1             REL               27 rr    3

               Branch if Greater Than or  Branch if (N  V) = 0          REL               90 rr    3
               Equal To
               (Signed Operands)

               Enter Active Background      Waits For and Processes BDM                              82       5+
               if ENBDM = 1               Commands Until GO, TRACE1, or INH

                                                           TAGGO

               Branch if Greater Than     Branch if (Z) | (N  V) = 0    REL               92 rr    3
               (Signed Operands)

               Branch if Half Carry Bit   Branch if (H) = 0             REL               28 rr    3
               Clear

               Branch if Half Carry Bit   Branch if (H) = 1             REL               29 rr    3
               Set

               Branch if Higher           Branch if (C) | (Z) = 0       REL               22 rr    3

               Branch if Higher or Same   Branch if (C) = 0             REL               24 rr    3
               (Same as BCC)

               Branch if IRQ Pin High     Branch if IRQ pin = 1         REL               2F rr    3

               Branch if IRQ Pin Low      Branch if IRQ pin = 0         REL               2E rr    3

                                                                                           IMM       A5 ii    2

                                                                                           DIR       B5 dd    3

                                                       (A) & (M)                           EXT       C5 hh ll 4
                                          (CCR Updated but Operands
               Bit Test                                                0                IX2       D5 ee ff 4
                                                    Not Changed)                           IX1
                                                                                                     E5 ff    3

                                                                                           IX        F5       3

                                                                                           SP2       9ED5 ee ff 5

                                                                                           SP1       9EE5 ff  4

               Branch if Less Than        Branch if (Z) | (N  V) = 1    REL               93 rr    3
               or Equal To
               (Signed Operands)

               Branch if Lower            Branch if (C) = 1             REL               25 rr    3
               (Same as BCS)

               Branch if Lower or Same    Branch if (C) | (Z) = 1       REL               23 rr    3

               Branch if Less Than        Branch if (N  V ) = 1         REL               91 rr    3
               (Signed Operands)

               Branch if Interrupt Mask   Branch if (I) = 0             REL               2C rr    3
               Clear

                                          MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                       137
Central Processor Unit (CPU)

                              Table 8-1. HCS08 Instruction Set Summary (Sheet 3 of 7)

     Source               Operation           Description                          Effect      Address
      Form                                                                        on CCR          Mode

                                                                             VH I NZC                       Opcode
                                                                                                                     Operand
                                                                                                                             Bus Cycles1

BMI rel            Branch if Minus            Branch if (N) = 1               REL                2B rr    3

BMS rel            Branch if Interrupt Mask   Branch if (I) = 1               REL                2D rr    3
                   Set

BNE rel            Branch if Not Equal        Branch if (Z) = 0               REL                26 rr    3

BPL rel            Branch if Plus             Branch if (N) = 0               REL                2A rr    3

BRA rel            Branch Always              No Test                         REL                20 rr    3

BRCLR n,opr8a,rel  Branch if Bit n in Memory  Branch if (Mn) = 0                          DIR (b0)     01 dd rr 5
                   Clear                                                                       DIR (b1)     03 dd rr 5
                                                                                               DIR (b2)     05 dd rr 5
                                                                                               DIR (b3)     07 dd rr 5
                                                                                               DIR (b4)     09 dd rr 5
                                                                                               DIR (b5)     0B dd rr 5
                                                                                               DIR (b6)     0D dd rr 5
                                                                                               DIR (b7)     0F dd rr 5

BRN rel            Branch Never               Uses 3 Bus Cycles               REL                21 rr    3

BRSET n,opr8a,rel  Branch if Bit n in Memory  Branch if (Mn) = 1                          DIR (b0)     00 dd rr 5
                   Set                                                                         DIR (b1)     02 dd rr 5
                                                                                               DIR (b2)     04 dd rr 5
                                                                                               DIR (b3)     06 dd rr 5
                                                                                               DIR (b4)     08 dd rr 5
                                                                                               DIR (b5)     0A dd rr 5
                                                                                               DIR (b6)     0C dd rr 5
                                                                                               DIR (b7)     0E dd rr 5

                                                                                               DIR (b0)     10 dd    5

                                                                                               DIR (b1)     12 dd    5

                                                                                               DIR (b2)     14 dd    5

BSET n,opr8a       Set Bit n in Memory        Mn  1                                      DIR (b3)     16 dd    5
                                                                                               DIR (b4)     18 dd    5

                                                                                               DIR (b5)     1A dd    5

                                                                                               DIR (b6)     1C dd    5

                                                                                               DIR (b7)     1E dd    5

BSR rel            Branch to Subroutine               PC  (PC) + $0002       REL                AD rr    5
                                              push (PCL); SP  (SP) $0001
                                              push (PCH); SP  (SP) $0001

                                                         PC  (PC) + rel

CBEQ opr8a,rel                                Branch if (A) = (M)                              DIR          31 dd rr 5
CBEQA #opr8i,rel                              Branch if (A) = (M)
CBEQX #opr8i,rel                              Branch if (X) = (M)                              IMM          41 ii rr 4
CBEQ oprx8,X+,rel                             Branch if (A) = (M)
CBEQ ,X+,rel       Compare and Branch if      Branch if (A) = (M)                        IMM          51 ii rr 4
CBEQ oprx8,SP,rel  Equal                      Branch if (A) = (M)                              IX1+
                                                                                                            61 ff rr 5

                                                                                               IX+          71 rr    5

                                                                                               SP1          9E61 ff rr 6

CLC                Clear Carry Bit            C0                              0 INH                98       1

CLI                Clear Interrupt Mask Bit   I0                              0 INH                9A       1

CLR opr8a                                     M  $00                                                   DIR  3F dd    5
CLRA                                          A  $00                                                   INH
CLRX                                          X  $00                                                   INH  4F       1
CLRH                                          H  $00                         0 0 1 INH
CLR oprx8,X                                   M  $00                                                   IX1  5F       1
CLR ,X                                        M  $00                                                   IX
CLR oprx8,SP       Clear                      M  $00                                                   SP1  8C       1

                                                                                                            6F ff    5

                                                                                                            7F       4

                                                                                                            9E6F ff  6

CMP #opr8i                                                                                     IMM          A1 ii    2
CMP opr8a
CMP opr16a                                                                                     DIR          B1 dd    3
CMP oprx16,X
CMP oprx8,X                                                   (A) (M)                        EXT          C1 hh ll 4
CMP ,X                                        (CCR Updated But Operands Not
CMP oprx16,SP      Compare Accumulator                                                       IX2          D1 ee ff 4
CMP oprx8,SP       with Memory                               Changed)
                                                                                               IX1          E1 ff    3

                                                                                               IX           F1       3

                                                                                               SP2          9ED1 ee ff 5

                                                                                               SP1          9EE1 ff  4

                                              MC9S08GB/GT Data Sheet, Rev. 2.3

138                                                                                                         Freescale Semiconductor
                                                                                                HCS08 Instruction Set Summary

                           Table 8-1. HCS08 Instruction Set Summary (Sheet 4 of 7)

     Source              Operation           Description                            Effect      Address
      Form                                                                         on CCR          Mode

                                                                              VH I NZC                       Opcode
                                                                                                                      Operand
                                                                                                                              Bus Cycles1

COM opr8a                                             M  (M)= $FF (M)                         DIR          33 dd    5
COMA                                                  A  (A) = $FF (A)
COMX                                                  X  (X) = $FF (X)                        INH          43       1
COM oprx8,X                                          M  (M) = $FF (M)
COM ,X             Complement                        M  (M) = $FF (M)       0            1  INH          53       1
COM oprx8,SP       (One's Complement)                M  (M) = $FF (M)                       IX1
                                                    (H:X) (M:M + $0001)                                  63 ff    5
CPHX opr16a        Compare Index Register    (CCR Updated But Operands Not
CPHX #opr16i       (H:X) with Memory                                                            IX           73       4
CPHX opr8a                                                   Changed)
CPHX oprx8,SP      Compare X (Index                                                             SP1          9E63 ff  6
                   Register Low) with                         (X) (M)
CPX #opr8i         Memory                    (CCR Updated But Operands Not                      EXT          3E hh ll 6
CPX opr8a                                                                                       IMM
CPX opr16a         Decimal Adjust                            Changed)                           DIR          65 jj kk 3
CPX oprx16,X       Accumulator After ADD or                                                     SP1
CPX oprx8,X        ADC of BCD Values                            (A)10                                        75 dd    5
CPX ,X
CPX oprx16,SP      Decrement and Branch if           Decrement A, X, or M                                    9EF3 ff  6
CPX oprx8,SP       Not Zero                           Branch if (result)  0
                                                    DBNZX Affects X Not H                       IMM          A3 ii    2
DAA                Decrement                                                                    DIR
                                                         M  (M) $01                           EXT          B3 dd    3
DBNZ opr8a,rel                                            A  (A) $01                          IX2
DBNZA rel                                                 X  (X) $01                          IX1          C3 hh ll 4
DBNZX rel                                                M  (M) $01                           IX
DBNZ oprx8,X,rel                                         M  (M) $01                           SP2          D3 ee ff 4
DBNZ ,X,rel                                              M  (M) $01                           SP1
DBNZ oprx8,SP,rel                                         A  (H:A)(X)                                       E3 ff    3
                                                         H  Remainder
DEC opr8a                                                                                                    F3       3
DECA                                                       A  (A  M)
DECX                                                                                                         9ED3 ee ff 5
DEC oprx8,X                                              M  (M) + $01
DEC ,X                                                    A  (A) + $01                                       9EE3 ff  4
DEC oprx8,SP                                              X  (X) + $01
                                                         M  (M) + $01         U               INH          72       1
                                                         M  (M) + $01
                                                         M  (M) + $01                           DIR          3B dd rr 7

                                                     PC  Jump Address                           INH          4B rr    4

                                               PC  (PC) + n (n = 1, 2, or 3)              INH          5B rr    4
                                             Push (PCL); SP  (SP) $0001                       IX1
                                             Push (PCH); SP  (SP) $0001                                    6B ff rr 7

                                                PC  Unconditional Address                       IX           7B rr    6

                                                                                                SP1          9E6B ff rr 8

                                                                                                DIR          3A dd    5

                                                                                                INH          4A       1

                                                                                             INH          5A       1
                                                                                                IX1
                                                                                                             6A ff    5

                                                                                                IX           7A       4

                                                                                                SP1          9E6A ff  6

DIV                Divide                                                                   INH          52       6

EOR #opr8i                                                                                      IMM          A8 ii    2
EOR opr8a
EOR opr16a                                                                                      DIR          B8 dd    3
EOR oprx16,X
EOR oprx8,X        Exclusive OR                                                                 EXT          C8 hh ll 4
EOR ,X             Memory with
EOR oprx16,SP      Accumulator                                                0              IX2          D8 ee ff 4
EOR oprx8,SP                                                                                    IX1
                   Increment                                                                                 E8 ff    3
INC opr8a
INCA               Jump                                                                         IX           F8       3
INCX
INC oprx8,X        Jump to Subroutine                                                           SP2          9ED8 ee ff 5
INC ,X
INC oprx8,SP                                                                                    SP1          9EE8 ff  4

JMP opr8a                                                                                       DIR          3C dd    5
JMP opr16a
JMP oprx16,X                                                                                    INH          4C       1
JMP oprx8,X
JMP ,X                                                                                       INH          5C       1
                                                                                                IX1
JSR opr8a                                                                                                    6C ff    5
JSR opr16a
JSR oprx16,X                                                                                    IX           7C       4
JSR oprx8,X
JSR ,X                                                                                          SP1          9E6C ff  6

                                                                                                        DIR  BC dd    3
                                                                                                        EXT
                                                                               IX2                CC hh ll 4
                                                                                                        IX1
                                                                                                        IX   DC ee ff 4

                                                                                                             EC ff    3

                                                                                                             FC       3

                                                                                                        DIR  BD dd    5
                                                                                                        EXT
                                                                               IX2                CD hh ll 6
                                                                                                        IX1
                                                                                                        IX   DD ee ff 6

                                                                                                             ED ff    5

                                                                                                             FD       5

                                             MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                                               139
Central Processor Unit (CPU)

                              Table 8-1. HCS08 Instruction Set Summary (Sheet 5 of 7)

     Source       Operation                  Description                         Effect  Address
      Form                                                                      on CCR      Mode

                                                                           VH I NZC                   Opcode
                                                                                                               Operand
                                                                                                                       Bus Cycles1

LDA #opr8i                                                                               IMM      A6 ii    2
LDA opr8a
LDA opr16a                                                                               DIR      B6 dd    3
LDA oprx16,X
LDA oprx8,X                                                                              EXT      C6 hh ll 4
LDA ,X
LDA oprx16,SP     Load Accumulator from                 A  (M)             0          IX2      D6 ee ff 4
LDA oprx8,SP      Memory                                                                 IX1
                                                                                                  E6 ff    3
LDHX #opr16i      Load Index Register (H:X)
LDHX opr8a        from Memory                                                            IX       F6       3
LDHX opr16a
LDHX ,X           Load X (Index Register                                                 SP2      9ED6 ee ff 5
LDHX oprx16,X     Low) from Memory
LDHX oprx8,X                                                                             SP1      9EE6 ff  4
LDHX oprx8,SP     Logical Shift Left
                  (Same as ASL)                                                        IMM        45 jj kk 3
LDX #opr8i                                                                             DIR
LDX opr8a         Logical Shift Right                                                  EXT        55 dd    4
LDX opr16a                                                                           IX
LDX oprx16,X      Move                                                                 IX2        32 hh ll 5
LDX oprx8,X       Unsigned multiply                                                    IX1
LDX ,X                                       H:X  (M:M + $0001)            0         SP1        9EAE     5
LDX oprx16,SP     Negate
LDX oprx8,SP      (Two's Complement)                                                              9EBE ee ff 6

LSL opr8a         No Operation                                                                    9ECE ff  5
LSLA              Nibble Swap
LSLX              Accumulator                                                                     9EFE ff  5
LSL oprx8,X
LSL ,X            Inclusive OR Accumulator                                               IMM      AE ii    2
LSL oprx8,SP      and Memory
                                                                                         DIR      BE dd    3
LSR opr8a         Push Accumulator onto
LSRA              Stack                                                                  EXT      CE hh ll 4
LSRX              Push H (Index Register
LSR oprx8,X       High) onto Stack                      X  (M)             0          IX2      DE ee ff 4
LSR ,X            Push X (Index Register                                                 IX1
LSR oprx8,SP      Low) onto Stack                                                                 EE ff    3

MOV opr8a,opr8a                                                                          IX       FE       3
MOV opr8a,X+
MOV #opr8i,opr8a                                                                         SP2      9EDE ee ff 5
MOV ,X+,opr8a
                                                                                         SP1      9EEE ff  4
MUL
                                                                                         DIR      38 dd    5
NEG opr8a
NEGA                                                                                     INH      48       1
NEGX
NEG oprx8,X                                  C                          0              INH      58       1
NEG ,X                                              b7          b0
NEG oprx8,SP                                                                             IX1      68 ff    5

NOP                                                                                      IX       78       4

NSA                                                                                      SP1      9E68 ff  6

ORA #opr8i                                                                               DIR      34 dd    5
ORA opr8a
ORA opr16a                                                                               INH      44       1
ORA oprx16,X
ORA oprx8,X                                  0                          C      0       INH      54       1
ORA ,X                                              b7          b0                       IX1
ORA oprx16,SP                                                                                     64 ff    5
ORA oprx8,SP
                                                                                         IX       74       4
PSHA
                                                                                         SP1      9E64 ff  6
PSHH
                                               (M)destination  (M)source                 DIR/DIR  4E dd dd 5
PSHX
                                                H:X  (H:X) + $0001 in      0          DIR/IX+  5E dd    5
                                             IX+/DIR and DIR/IX+ Modes                   IMM/DIR
                                                                                                  6E ii dd 4
                                                     X:A  (X) (A)
                                                M   (M) = $00 (M)                     IX+/DIR  7E dd    5
                                                 A   (A) = $00 (A)
                                                 X   (X) = $00 (X)       0 0 INH        42       5
                                                M   (M) = $00 (M)
                                                M   (M) = $00 (M)                     DIR      30 dd    5
                                                M   (M) = $00 (M)
                                                                                         INH      40       1
                                                    Uses 1 Bus Cycle
                                                                                       INH      50       1
                                                   A  (A[3:0]:A[7:4])
                                                                                         IX1      60 ff    5

                                                                                         IX       70       4

                                                                                         SP1      9E60 ff  6

                                                                            INH        9D       1

                                                                            INH        62       1

                                                                                         IMM      AA ii    2

                                                                                         DIR      BA dd    3

                                                                                         EXT      CA hh ll 4

                                             A  (A) | (M)                  0          IX2      DA ee ff 4
                                                                                         IX1
                                                                                                  EA ff    3

                                                                                         IX       FA       3

                                                                                         SP2      9EDA ee ff 5

                                                                                         SP1      9EEA ff  4

                                             Push (A); SP  (SP) $0001    INH        87       2
                                             Push (H); SP  (SP) $0001
                                             Push (X); SP  (SP) $0001    INH        8B       2

                                                                            INH        89       2

                                             MC9S08GB/GT Data Sheet, Rev. 2.3

140                                                                                           Freescale Semiconductor
                                                                                HCS08 Instruction Set Summary

                         Table 8-1. HCS08 Instruction Set Summary (Sheet 6 of 7)

       Source            Operation            Description                      Effect  Address
        Form                                                                  on CCR      Mode

PULA                                                                     VH I NZC                   Opcode
                                                                                                             Operand
PULH                                                                                                                 Bus Cycles1

PULX           Pull Accumulator from      SP  (SP + $0001); Pull (A)      INH    86       3
               Stack                      SP  (SP + $0001); Pull (H)
ROL opr8a      Pull H (Index Register     SP  (SP + $0001); Pull (X)      INH    8A       3
ROLA           High) from Stack
ROLX           Pull X (Index Register                                     INH    88       3
ROL oprx8,X    Low) from Stack
ROL ,X                                                                                 DIR  39 dd    5
ROL oprx8,SP   Rotate Left through Carry
ROR opr8a                                                                              INH  49       1
RORA           Rotate Right through
RORX           Carry                      C                                          INH  59       1
ROR oprx8,X                                                                            IX1
ROR ,X         Reset Stack Pointer            b7           b0                               69 ff    5
ROR oprx8,SP
               Return from Interrupt                                                   IX   79       4
RSP
               Return from Subroutine                                                  SP1  9E69 ff  6
RTI
               Subtract with Carry                                                     DIR  36 dd    5
RTS
               Set Carry Bit                                                           INH  46       1
SBC #opr8i     Set Interrupt Mask Bit
SBC opr8a                                                  C                         INH  56       1
SBC opr16a     Store Accumulator in                                                    IX1
SBC oprx16,X   Memory                     b7      b0                                        66 ff    5
SBC oprx8,X
SBC ,X         Store H:X (Index Reg.)                                                  IX   76       4
SBC oprx16,SP  Enable Interrupts:
SBC oprx8,SP   Stop Processing                                                         SP1  9E66 ff  6
SEC            Refer to MCU
SEI            Documentation                            SP  $FF          INH    9C       1
STA opr8a                                      (High Byte Not Affected)
STA opr16a     Store X (Low 8 Bits of                                                  INH  80       9
STA oprx16,X   Index Register)            SP  (SP) + $0001; Pull (CCR)
STA oprx8,X    in Memory                    SP  (SP) + $0001; Pull (A)    INH    81       6
STA ,X                                      SP  (SP) + $0001; Pull (X)
STA oprx16,SP
STA oprx8,SP                              SP  (SP) + $0001; Pull (PCH)
STHX opr8a                                SP  (SP) + $0001; Pull (PCL)
STHX opr16a
STHX oprx8,SP                              SP  SP + $0001; Pull (PCH)
                                           SP  SP + $0001; Pull (PCL)
STOP
                                                                                       IMM  A2 ii    2
STX opr8a
STX opr16a                                                                             DIR  B2 dd    3
STX oprx16,X
STX oprx8,X                                                                            EXT  C2 hh ll 4
STX ,X
STX oprx16,SP                                A  (A) (M) (C)                      IX2  D2 ee ff 4
STX oprx8,SP                                                                           IX1
                                                                                            E2 ff    3

                                                                                       IX   F2       3

                                                                                       SP2  9ED2 ee ff 5

                                                                                       SP1  9EE2 ff  4

                                                   C1                     1 INH    99       1
                                                   I1
                                                                         1 INH    9B       1
                                                  M  (A)
                                                                                   DIR      B7 dd    3
                                                                                   EXT
                                                                                   IX2      C7 hh ll 4
                                                                                 IX1
                                                                                   IX       D7 ee ff 4
                                                                                   SP2
                                                                         0       SP1      E7 ff    3

                                                                                            F7       2

                                                                                            9ED7 ee ff 5

                                                                                            9EE7 ff  4

                                                                                   DIR      35 dd    4
                                                                                 EXT
                                           (M:M + $0001)  (H:X)          0                96 hh ll 5
                                          I bit  0; Stop Processing                SP1
                                                                                            9EFF ff  5

                                                                         0 INH    8E       2+

                                                                                   DIR      BF dd    3
                                                                                   EXT
                                                                                   IX2      CF hh ll 4
                                                                                 IX1
                                                                                   IX       DF ee ff 4
                                                                                   SP2
                                                  M  (X)                 0       SP1      EF ff    3

                                                                                            FF       2

                                                                                            9EDF ee ff 5

                                                                                            9EEF ff  4

                                          MC9S08GB/GT Data Sheet, Rev. 2.3

Freescale Semiconductor                                                                              141
Central Processor Unit (CPU)

                              Table 8-1. HCS08 Instruction Set Summary (Sheet 7 of 7)

      Source   Operation                  Description                            Effect  Address
       Form                                                                     on CCR      Mode

                                                                           VH I NZC                   Opcode
                                                                                                               Operand
                                                                                                                       Bus Cycles1

SUB #opr8i                                                                               IMM  A0 ii    2
SUB opr8a
SUB opr16a                                                                               DIR  B0 dd    3
SUB oprx16,X
SUB oprx8,X                                                                              EXT  C0 hh ll 4
SUB ,X
SUB oprx16,SP  Subtract                   A  (A) (M)                                 IX2  D0 ee ff 4
SUB oprx8,SP                                                                             IX1
                                                                                              E0 ff    3

                                                                                         IX   F0       3

                                                                                         SP2  9ED0 ee ff 5

                                                                                         SP1  9EE0 ff  4

                                          PC  (PC) + $0001
                                          Push (PCL); SP  (SP) $0001
                                          Push (PCH); SP  (SP) $0001
                                          Push (X); SP  (SP) $0001
                                          Push (A); SP  (SP) $0001
SWI            Software Interrupt                                           1 INH    83       11

                                          Push (CCR); SP  (SP) $0001
                                          I  1;
                                          PCH  Interrupt Vector High Byte
                                          PCL  Interrupt Vector Low Byte

TAP            Transfer Accumulator to    CCR  (A)                                       INH  84       1
               CCR

TAX            Transfer Accumulator to    X  (A)                            INH    97       1
               X (Index Register Low)

TPA            Transfer CCR to            A  (CCR)                         INH    85       1
               Accumulator

TST opr8a                                 (M) $00                                      DIR  3D dd    4
TSTA                                      (A) $00
TSTX                                      (X) $00                                      INH  4D       1
TST oprx8,X                               (M) $00
TST ,X         Test for Negative or Zero  (M) $00                        0          INH  5D       1
TST oprx8,SP                              (M) $00                                      IX1
                                                                                              6D ff    4

                                                                                         IX   7D       3

                                                                                         SP1  9E6D ff  5

TSX            Transfer SP to Index Reg.  H:X  (SP) + $0001                INH    95       2

TXA            Transfer X (Index Reg.     A  (X)                            INH    9F       1
               Low) to Accumulator

TXS            Transfer Index Reg. to SP  SP  (H:X) $0001                INH    94       2

WAIT           Enable Interrupts; Wait    I bit  0; Halt CPU                0 INH    8F       2+
               for Interrupt

1 Bus clock frequency is one-half of the CPU clock frequency.

                                          MC9S08GB/GT Data Sheet, Rev. 2.3

142                                                                                           Freescale Semiconductor
                                                                                                                                               HCS08 Instruction Set Summary

                                                                Table 8-2. Opcode Map (Sheet 1 of 2)

    Bit-Manipulation     Branch                      Read-Modify-Write                                   Control                               Register/Memory

00    5 10            5  20       3  30       5  40       1 50       1 60       5  70       4   80       9 90       3  A0       2  B0       3  C0 4 D0 4        E0        3  F0       3
                                                                                                                                                  SUB SUB
BRSET0 BSET0                 BRA     NEG         NEGA NEGX NEG                        NEG           RTI        BGE     SUB         SUB                          SUB             SUB

3 DIR 2 DIR              2 REL       2 DIR       1 INH 1 INH 2 IX1                 1        IX  1 INH 2 REL            2 IMM       2 DIR       3 EXT 3 IX2      2 IX1        1        IX

01    5 11            5  21       3  31       5  41       4 51       4 61       5  71       5   81       6 91       3  A1       2  B1       3  C1 4 D1 4        E1        3  F1       3
                                                                                                                                                 CMP CMP
BRCLR0 BCLR0                 BRN     CBEQ        CBEQA CBEQX CBEQ                     CBEQ          RTS        BLT     CMP         CMP                          CMP             CMP

3 DIR 2 DIR              2 REL       3 DIR       3 IMM 3 IMM 3 IX1+                2 IX+        1 INH 2 REL            2 IMM       2 DIR       3 EXT 3 IX2      2 IX1        1        IX

02    5 12            5  22       3  32       5  42       5 52       6 62       1  72       1   82 5+ 92            3  A2       2  B2       3  C2 4 D2 4        E2        3  F2       3
                                                                                                                                                  SBC SBC
BRSET1 BSET1                 BHI     LDHX            MUL        DIV        NSA         DAA      BGND BGT               SBC         SBC                          SBC             SBC

3 DIR 2 DIR              2 REL       3 EXT       1 INH 1 INH 1 INH                 1 INH        1 INH 2 REL            2 IMM       2 DIR       3 EXT 3 IX2      2 IX1        1        IX

03    5 13            5  23       3  33       5  43       1 53       1 63       5  73       4   83 11 93            3  A3       2  B3       3  C3 4 D3 4        E3        3  F3       3
                                                                                                                                                  CPX CPX
BRCLR1 BCLR1                 BLS     COM         COMA COMX COM                        COM           SWI        BLE     CPX         CPX                          CPX             CPX

3 DIR 2 DIR              2 REL       2 DIR       1 INH 1 INH 2 IX1                 1        IX  1 INH 2 REL            2 IMM       2 DIR       3 EXT 3 IX2      2 IX1        1        IX

04    5 14            5  24       3  34       5  44       1 54       1 64       5  74       4   84       1 94       2  A4       2  B4       3  C4 4 D4 4        E4        3  F4       3
                                                                                                                                                 AND AND
BRSET2 BSET2                 BCC         LSR     LSRA LSRX LSR                         LSR          TAP        TXS     AND         AND                          AND             AND

3 DIR 2 DIR              2 REL       2 DIR       1 INH 1 INH 2 IX1                 1        IX  1 INH 1 INH            2 IMM       2 DIR       3 EXT 3 IX2      2 IX1        1        IX

05    5 15            5  25       3  35       4  45       3 55       4 65       3  75       5   85       1 95       2  A5       2 &nb