datasheet

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

型号

产品描述

搜索

MC9S08SH32CTG

器件型号:MC9S08SH32CTG
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:NXP
厂商官网:https://www.nxp.com
下载文档

器件描述

Development Boards u0026 Kits - S08 / S12 DEMO BRD FOR 9S08SH8

参数

产品属性属性值
产品种类:
Product Category:
8-bit Microcontrollers - MCU
制造商:
Manufacturer:
NXP
RoHS:YES
安装风格:
Mounting Style:
SMD/SMT
封装 / 箱体:
Package / Case:
TSSOP-16
系列:
Series:
S08SH
Core:S08
Data Bus Width:8 bit
Maximum Clock Frequency:40 MHz
Program Memory Size:32 kB
Data RAM Size:1 kB
Number of I/Os:13 I/O
工作电源电压:
Operating Supply Voltage:
5.5 V
最大工作温度:
Maximum Operating Temperature:
+ 85 C
接口类型:
Interface Type:
I2C, SCI, SPI
封装:
Packaging:
Tube
商标:
Brand:
NXP / Freescale
高度:
Height:
1.05 mm
长度:
Length:
5 mm
最小工作温度:
Minimum Operating Temperature:
- 40 C
Moisture Sensitive:Yes
Number of Timers/Counters:2 Timer
Processor Series:MC9S08
Program Memory Type:Flash
工厂包装数量:
Factory Pack Quantity:
96
电源电压-最大:
Supply Voltage - Max:
5.5 V
电源电压-最小:
Supply Voltage - Min:
2.7 V
宽度:
Width:
4.4 mm
单位重量:
Unit Weight:
0.002194 oz

MC9S08SH32CTG器件文档内容

MC9S08SH32

MC9S08SH16

Data Sheet

HCS08

Microcontrollers

MC9S08SH32

Rev. 3

3/2014

freescale.com
MC9S08SH32 Series Features

8-Bit HCS08 Central Processor Unit (CPU)                Peripherals

•  40-MHz HCS08 CPU (central processor unit)            •  ADC — 16-channel, 10-bit resolution, 2.5 μs

•  HC08 instruction set with added BGND instruction        conversion time, automatic compare function,

•  Support for up to 32 interrupt/reset sources            temperature sensor, internal bandgap reference

                                                           channel; runs in stop3

On-Chip Memory                                          •  ACMP — Analog comparators with selectable

•  FLASH read/program/erase over full operating            interrupt on rising, falling, or either edge of

   voltage and temperature                                 comparator output; compare option to fixed

•  Random-access memory (RAM)                              internal bandgap reference voltage; output can be

•  Security circuitry to prevent unauthorized access       optionally routed to TPM module; runs in stop3

   to RAM and FLASH contents                            •  SCI — Full duplex non-return to zero (NRZ); LIN

Power-Saving Modes                                         master extended break generation; LIN slave

•  Two very low power stop modes                           extended break detection; wake up on active edge

•  Reduced power wait mode                              •  SPI — Full-duplex or single-wire bidirectional;

•  Very low power real time counter for use in run,        Double-buffered transmit and receive; Master or

   wait, and stop                                          Slave mode; MSB-first or LSB-first shifting

Clock Source Options                                    •  IIC — Up to 100 kbps with maximum bus loading;

                                                           Multi-master operation; Programmable slave

•  Oscillator (XOSC) — Loop-control Pierce                 address; Interrupt driven byte-by-byte data

   oscillator; Crystal or ceramic resonator range of       transfer; supports broadcast mode and 10-bit

   31.25 kHz to 38.4 kHz or 1 MHz to 16 MHz                addressing

•  Internal Clock Source (ICS) — Internal clock         •  MTIM — 8-bit modulo counter with 8-bit prescaler

   source module containing a frequency-locked             and overflow interrupt

   loop (FLL) controlled by internal or external        •  TPMx — Two 2-channel timer pwm modules

   reference; precision trimming of internal reference     (TPM1, TPM2); Selectable input capture, output

   allows 0.2% resolution and 2% deviation over            compare, or buffered edge- or center-aligned

   temperature and voltage; 1.5% deviation using           PWM on each channel

   internal temperature compensation.                      RTC — (Real-time counter) 8-bit modulus counter

•  ICS supports bus frequencies from 2 MHz to           •

   20 MHz.                                                 with binary or decimal based prescaler; External

                                                           clock source for precise time base, time-of-day,

System Protection                                          calendar or task scheduling functions; Free

•  Watchdog computer operating properly (COP)              running on-chip low power oscillator (1 kHz) for

   reset with option to run from dedicated 1-kHz           cyclic wake-up without external components, runs

   internal clock source or bus clock                      in all MCU modes

•  Low-voltage detection with reset or interrupt;       Input/Output

   selectable trip points                               •  23 general purpose I/O pins (GPIOs) and 1

•  Illegal opcode detection with reset                     output-only pin

•  Illegal address detection with reset                 •  8 interrupt pins with selectable polarity

•  FLASH block protect                                  •  Ganged output option for PTB[5:2] and PTC[3:0];

Development Support                                        allows single write to change state of multiple pins

•  Single-wire background debug interface               •  Hysteresis and configurable pull up device on all

•  Breakpoint capability to allow single breakpoint        input pins; Configurable slew rate and drive

   setting during in-circuit debugging (plus two more      strength on all output pins.

   breakpoints in on-chip debug module)                 Package Options

•  On-chip, in-circuit emulation (ICE) debug module     •  28-TSSOP, 28-SOIC, 20-TSSOP, 16-TSSOP

   containing two comparators and nine trigger

   modes. Eight deep FIFO for storing

   change-of-flow address and event-only data.

   Debug module supports both tag and force

   breakpoints.
MC9S08SH32 Data Sheet

                                                                                   Covers MC9S08SH32

                                                                                   MC9S08SH16

                                                                                   MC9S08SH32

                                                                                   Rev. 3

                                                                                   3/2014

Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.

© Freescale Semiconductor, Inc., 2007-2014. All rights reserved.
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

   1                  10/2007  Updated The ACMP and TPM modules to version 3 and made numerous revi-

                               sions to the Electricals. Updated device numbering scheme.

                               Updated some electricals and made some minor grammatical/formatting revi-

   2                  4/2008   sions. Corrected the SPI block module version. Removed incorrect ADC temper-

                               ature sensor value from the Features section. Updated the package information

                               with a sample mask set identifier.

                               Added a note to the Section 9.1, “Introduction”; updated Section 11.4.5, “Internal

   3                  3/2014   Reference Clock”; updated Section A.14.1, “Radiated Emissions”; updated

                               Figure 4-1, Figure 4-6; updated Table 4-4; updated Table 7-2.

© Freescale Semiconductor, Inc., 2007-2014. All rights reserved.

This product incorporates SuperFlash® Technology licensed from SST.

                               MC9S08SH32 Series Data Sheet, Rev. 3

6                                                                                             Freescale Semiconductor
                         List of Chapters

Chapter 1                Device Overview ...................................................................... 19

Chapter 2                Pins and Connections ............................................................. 23

Chapter 3                Modes of Operation ................................................................. 31

Chapter 4                Memory ..................................................................................... 37

Chapter 5                Resets, Interrupts, and General System Control.................. 59

Chapter 6                Parallel Input/Output Control.................................................. 75

Chapter 7                Central Processor Unit (S08CPUV3) ...................................... 93

Chapter 8                Analog Comparator 5-V (S08ACMPV3)................................ 113

Chapter 9                Analog-to-Digital Converter (S08ADC10V1)........................ 121

Chapter 10               Inter-Integrated Circuit (S08IICV2) ....................................... 149

Chapter 11               Internal Clock Source (S08ICSV2)........................................ 167

Chapter 12               Modulo Timer (S08MTIMV1).................................................. 181

Chapter 13               Real-Time Counter (S08RTCV1) ........................................... 191

Chapter 14               Serial Communications Interface (S08SCIV4)..................... 201

Chapter 15               Serial Peripheral Interface (S08SPIV3) ................................ 221

Chapter 16               Timer Pulse-Width Modulator (S08TPMV3) ......................... 237

Chapter 17               Development Support ........................................................... 261

Appendix A               Electrical Characteristics...................................................... 283

Appendix B               Ordering Information and Mechanical Drawings................ 313

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                   7
                         Contents

Section Number           Title                                                                                                                             Page

                         Chapter 1
                         Device Overview

1.1  Devices in the MC9S08SH32 Series...............................................................................................                       19

1.2  MCU Block Diagram ......................................................................................................................              20

1.3  System Clock Distribution ..............................................................................................................              22

                         Chapter 2
                         Pins and Connections

2.1  Device Pin Assignment ...................................................................................................................             23

2.2  Recommended System Connections ...............................................................................................                        25

     2.2.1  Power ................................................................................................................................         26

     2.2.2  Oscillator (XOSC) ............................................................................................................                 26

     2.2.3  RESET ..............................................................................................................................           27

     2.2.4  Background / Mode Select (BKGD/MS)..........................................................................                                   27

     2.2.5  General-Purpose I/O and Peripheral Ports........................................................................                               28

                         Chapter 3
                         Modes of Operation

3.1  Introduction .....................................................................................................................................    31

3.2  Features ...........................................................................................................................................  31

3.3  Run Mode........................................................................................................................................      31

3.4  Active Background Mode ...............................................................................................................                31

3.5  Wait Mode .......................................................................................................................................     32

3.6  Stop Modes......................................................................................................................................      32

     3.6.1  Stop3 Mode.......................................................................................................................              33

     3.6.2  Stop2 Mode.......................................................................................................................              34

     3.6.3  On-Chip Peripheral Modules in Stop Modes....................................................................                                   34

                         Chapter 4
                         Memory

4.1  MC9S08SH32 Series Memory Map ...............................................................................................                          37

4.2  Reset and Interrupt Vector Assignments .........................................................................................                      38

4.3  Register Addresses and Bit Assignments........................................................................................                        39

4.4  RAM ................................................................................................................................................  46

4.5  FLASH ............................................................................................................................................    46

     4.5.1  Features .............................................................................................................................         47

     4.5.2  Program and Erase Times .................................................................................................                      47

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                                    9
Section Number  Title                                       Page

     4.5.3  Program and Erase Command Execution ......................................................................... 48

     4.5.4  Burst Program Execution.................................................................................................. 49

     4.5.5  Access Errors .................................................................................................................... 51

     4.5.6  FLASH Block Protection.................................................................................................. 51

     4.5.7  Vector Redirection ............................................................................................................ 52

4.6  Security............................................................................................................................................ 52

4.7  FLASH Registers and Control Bits................................................................................................. 53

     4.7.1  FLASH Clock Divider Register (FCDIV) ........................................................................ 54

     4.7.2  FLASH Options Register (FOPT and NVOPT)................................................................ 55

     4.7.3  FLASH Configuration Register (FCNFG) ....................................................................... 56

     4.7.4  FLASH Protection Register (FPROT and NVPROT) ...................................................... 56

     4.7.5  FLASH Status Register (FSTAT)...................................................................................... 57

     4.7.6  FLASH Command Register (FCMD)............................................................................... 58

                Chapter 5
            Resets, Interrupts, and General System Control

5.1  Introduction ..................................................................................................................................... 59

5.2  Features ........................................................................................................................................... 59

5.3  MCU Reset...................................................................................................................................... 59

5.4  Computer Operating Properly (COP) Watchdog............................................................................. 60

5.5  Interrupts ......................................................................................................................................... 61

     5.5.1  Interrupt Stack Frame ....................................................................................................... 62

     5.5.2  External Interrupt Request Pin (IRQ) ............................................................................... 63

     5.5.3  Interrupt Vectors, Sources, and Local Masks ................................................................... 63

5.6  Low-Voltage Detect (LVD) System ................................................................................................ 65

     5.6.1  Power-On Reset Operation ............................................................................................... 65

     5.6.2  Low-Voltage Detection (LVD) Reset Operation............................................................... 65

     5.6.3  Low-Voltage Warning (LVW) Interrupt Operation........................................................... 65

5.7  Reset, Interrupt, and System Control Registers and Control Bits................................................... 65

     5.7.1  Interrupt Pin Request Status and Control Register (IRQSC)............................................ 66

     5.7.2  System Reset Status Register (SRS) ................................................................................. 67

     5.7.3  System Background Debug Force Reset Register (SBDFR)............................................ 68

     5.7.4  System Options Register 1 (SOPT1) ................................................................................ 69

     5.7.5  System Options Register 2 (SOPT2) ................................................................................ 70

     5.7.6  System Device Identification Register (SDIDH, SDIDL)................................................ 71

     5.7.7  System Power Management Status and Control 1 Register (SPMSC1) ........................... 72

     5.7.8  System Power Management Status and Control 2 Register (SPMSC2) ........................... 73

                Chapter 6
                Parallel Input/Output Control

6.1  Port Data and Data Direction .......................................................................................................... 75

6.2  Pull-up, Slew Rate, and Drive Strength .......................................................................................... 76

                MC9S08SH32 Series Data Sheet, Rev. 3

10                                                          Freescale Semiconductor
Section Number           Title                                 Page

6.3  Ganged Output ................................................................................................................................ 77

6.4  Pin Interrupts ................................................................................................................................... 78

     6.4.1  Edge-Only Sensitivity....................................................................................................... 78

     6.4.2  Edge and Level Sensitivity ............................................................................................... 79

     6.4.3  Pull-up/Pull-down Resistors ............................................................................................. 79

     6.4.4  Pin Interrupt Initialization................................................................................................. 79

6.5  Pin Behavior in Stop Modes............................................................................................................ 79

6.6  Parallel I/O and Pin Control Registers ............................................................................................ 80

     6.6.1  Port A Registers ................................................................................................................ 81

     6.6.2  Port B Registers ................................................................................................................ 86

     6.6.3  Port C Registers ................................................................................................................ 90

                         Chapter 7
                         Central Processor Unit (S08CPUV3)

7.1  Introduction ..................................................................................................................................... 93

     7.1.1  Features ............................................................................................................................. 93

7.2  Programmer’s Model and CPU Registers ....................................................................................... 94

     7.2.1  Accumulator (A) ............................................................................................................... 94

     7.2.2  Index Register (H:X) ........................................................................................................ 94

     7.2.3  Stack Pointer (SP) ............................................................................................................. 95

     7.2.4  Program Counter (PC) ...................................................................................................... 95

     7.2.5  Condition Code Register (CCR) ....................................................................................... 95

7.3  Addressing Modes........................................................................................................................... 97

     7.3.1  Inherent Addressing Mode (INH)..................................................................................... 97

     7.3.2  Relative Addressing Mode (REL) .................................................................................... 97

     7.3.3  Immediate Addressing Mode (IMM)................................................................................ 97

     7.3.4  Direct Addressing Mode (DIR) ........................................................................................ 97

     7.3.5  Extended Addressing Mode (EXT) .................................................................................. 98

     7.3.6  Indexed Addressing Mode ................................................................................................ 98

7.4  Special Operations........................................................................................................................... 99

     7.4.1  Reset Sequence ................................................................................................................. 99

     7.4.2  Interrupt Sequence ............................................................................................................ 99

     7.4.3  Wait Mode Operation...................................................................................................... 100

     7.4.4  Stop Mode Operation...................................................................................................... 100

     7.4.5  BGND Instruction........................................................................................................... 101

7.5  HCS08 Instruction Set Summary .................................................................................................. 102

                         Chapter 8
                         Analog Comparator 5-V (S08ACMPV3)

8.1  Introduction ................................................................................................................................... 113

     8.1.1  ACMP Configuration Information.................................................................................. 113

     8.1.2  ACMP/TPM Configuration Information ........................................................................ 113

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                                     11
Section Number  Title                                     Page

8.2  Features ......................................................................................................................................... 115

8.3  Modes of Operation....................................................................................................................... 115

     8.3.1  ACMP in Wait Mode ...................................................................................................... 115

     8.3.2  ACMP in Stop Modes..................................................................................................... 115

     8.3.3  ACMP in Active Background Mode .............................................................................. 115

8.4  Block Diagram .............................................................................................................................. 115

8.5  External Signal Description .......................................................................................................... 117

8.6  Memory Map ................................................................................................................................ 117

     8.6.1  Register Descriptions ...................................................................................................... 117

8.7  Functional Description .................................................................................................................. 119

                Chapter 9
                Analog-to-Digital Converter (S08ADC10V1)

9.1  Introduction ................................................................................................................................... 121

     9.1.1  Channel Assignments ..................................................................................................... 121

     9.1.2  Analog Power and Ground Signal Names ...................................................................... 122

     9.1.3  Alternate Clock ............................................................................................................... 122

     9.1.4  Hardware Trigger............................................................................................................ 122

     9.1.5  Temperature Sensor ........................................................................................................ 122

     9.1.6  Features ........................................................................................................................... 125

     9.1.7  Block Diagram ................................................................................................................ 125

9.2  External Signal Description .......................................................................................................... 126

     9.2.1  Analog Power (VDDAD).................................................................................................. 127

     9.2.2  Analog Ground (VSSAD)................................................................................................. 127

     9.2.3  Voltage Reference High (VREFH) ................................................................................... 127

     9.2.4  Voltage Reference Low (VREFL) .................................................................................... 127

     9.2.5  Analog Channel Inputs (ADx) ........................................................................................ 127

9.3  Register Definition ........................................................................................................................ 127

     9.3.1  Status and Control Register 1 (ADCSC1) ...................................................................... 127

     9.3.2  Status and Control Register 2 (ADCSC2) ...................................................................... 129

     9.3.3  Data Result High Register (ADCRH)............................................................................. 130

     9.3.4  Data Result Low Register (ADCRL).............................................................................. 130

     9.3.5  Compare Value High Register (ADCCVH).................................................................... 131

     9.3.6  Compare Value Low Register (ADCCVL) ..................................................................... 131

     9.3.7  Configuration Register (ADCCFG)................................................................................ 131

     9.3.8  Pin Control 1 Register (APCTL1) .................................................................................. 133

     9.3.9  Pin Control 2 Register (APCTL2) .................................................................................. 134

     9.3.10 Pin Control 3 Register (APCTL3) .................................................................................. 135

9.4  Functional Description .................................................................................................................. 136

     9.4.1  Clock Select and Divide Control .................................................................................... 136

     9.4.2  Input Select and Pin Control ........................................................................................... 137

     9.4.3  Hardware Trigger............................................................................................................ 137

                MC9S08SH32 Series Data Sheet, Rev. 3

12                                                        Freescale Semiconductor
Section Number           Title                                 Page

      9.4.4  Conversion Control......................................................................................................... 137

      9.4.5  Automatic Compare Function......................................................................................... 140

      9.4.6  MCU Wait Mode Operation............................................................................................ 140

      9.4.7  MCU Stop3 Mode Operation.......................................................................................... 140

      9.4.8  MCU Stop1 and Stop2 Mode Operation......................................................................... 141

9.5   Initialization Information .............................................................................................................. 141

      9.5.1  ADC Module Initialization Example ............................................................................. 141

9.6   Application Information................................................................................................................ 143

      9.6.1  External Pins and Routing .............................................................................................. 143

      9.6.2  Sources of Error .............................................................................................................. 145

                         Chapter 10
                         Inter-Integrated Circuit (S08IICV2)

10.1  Introduction ................................................................................................................................... 149

      10.1.1 Module Configuration..................................................................................................... 149

      10.1.2 Features ........................................................................................................................... 151

      10.1.3 Modes of Operation ........................................................................................................ 151

      10.1.4 Block Diagram ................................................................................................................ 151

10.2  External Signal Description .......................................................................................................... 152

      10.2.1 SCL — Serial Clock Line ............................................................................................... 152

      10.2.2 SDA — Serial Data Line ................................................................................................ 152

10.3  Register Definition ........................................................................................................................ 152

      10.3.1 IIC Address Register (IICA)........................................................................................... 153

      10.3.2 IIC Frequency Divider Register (IICF) .......................................................................... 153

      10.3.3 IIC Control Register (IICC1) .......................................................................................... 156

      10.3.4 IIC Status Register (IICS)............................................................................................... 156

      10.3.5 IIC Data I/O Register (IICD) .......................................................................................... 157

      10.3.6 IIC Control Register 2 (IICC2) ....................................................................................... 158

10.4  Functional Description .................................................................................................................. 159

      10.4.1 IIC Protocol..................................................................................................................... 159

      10.4.2 10-bit Address................................................................................................................. 162

      10.4.3 General Call Address ...................................................................................................... 163

10.5  Resets ............................................................................................................................................ 163

10.6  Interrupts ....................................................................................................................................... 163

      10.6.1 Byte Transfer Interrupt.................................................................................................... 163

      10.6.2 Address Detect Interrupt ................................................................................................. 164

      10.6.3 Arbitration Lost Interrupt................................................................................................ 164

10.7  Initialization/Application Information .......................................................................................... 165

                         Chapter 11
                         Internal Clock Source (S08ICSV2)

11.1  Introduction ................................................................................................................................... 167

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                                        13
Section Number  Title                                 Page

      11.1.1 Module Configuration..................................................................................................... 167

      11.1.2 Features ........................................................................................................................... 169

      11.1.3 Block Diagram ................................................................................................................ 169

      11.1.4  Modes of Operation ........................................................................................................ 170

11.2  External Signal Description .......................................................................................................... 171

11.3  Register Definition ........................................................................................................................ 171

      11.3.1 ICS Control Register 1 (ICSC1) ..................................................................................... 172

      11.3.2 ICS Control Register 2 (ICSC2) ..................................................................................... 173

      11.3.3 ICS Trim Register (ICSTRM)......................................................................................... 174

      11.3.4 ICS Status and Control (ICSSC)..................................................................................... 174

11.4  Functional Description .................................................................................................................. 175

      11.4.1  Operational Modes.......................................................................................................... 175

      11.4.2 Mode Switching .............................................................................................................. 177

      11.4.3 Bus Frequency Divider ................................................................................................... 178

      11.4.4 Low Power Bit Usage ..................................................................................................... 178

      11.4.5 Internal Reference Clock ................................................................................................ 178

      11.4.6 Optional External Reference Clock ................................................................................ 178

      11.4.7 Fixed Frequency Clock ................................................................................................... 179

                Chapter 12
                Modulo Timer (S08MTIMV1)

12.1  Introduction ................................................................................................................................... 181

      12.1.1 MTIM Configuration Information .................................................................................. 181

      12.1.2 Features ........................................................................................................................... 183

      12.1.3 Modes of Operation ........................................................................................................ 183

      12.1.4 Block Diagram ................................................................................................................ 184

12.2  External Signal Description .......................................................................................................... 184

12.3  Register Definition ........................................................................................................................ 185

      12.3.1 MTIM Status and Control Register (MTIMSC) ............................................................. 186

      12.3.2 MTIM Clock Configuration Register (MTIMCLK)....................................................... 187

      12.3.3 MTIM Counter Register (MTIMCNT)........................................................................... 188

      12.3.4 MTIM Modulo Register (MTIMMOD).......................................................................... 188

12.4  Functional Description .................................................................................................................. 189

      12.4.1 MTIM Operation Example ............................................................................................. 190

                Chapter 13
                Real-Time Counter (S08RTCV1)

13.1  Introduction ................................................................................................................................... 191

      13.1.1 Features ........................................................................................................................... 193

      13.1.2 Modes of Operation ........................................................................................................ 193

      13.1.3 Block Diagram ................................................................................................................ 194

13.2  External Signal Description .......................................................................................................... 194

                MC9S08SH32 Series Data Sheet, Rev. 3

14                                                    Freescale Semiconductor
Section Number           Title                                       Page

13.3  Register Definition ........................................................................................................................ 194

      13.3.1 RTC Status and Control Register (RTCSC).................................................................... 195

      13.3.2 RTC Counter Register (RTCCNT).................................................................................. 196

      13.3.3 RTC Modulo Register (RTCMOD) ................................................................................ 196

13.4  Functional Description .................................................................................................................. 196

      13.4.1 RTC Operation Example................................................................................................. 197

13.5  Initialization/Application Information .......................................................................................... 198

                         Chapter 14
                         Serial Communications Interface (S08SCIV4)

14.1  Introduction ................................................................................................................................... 201

      14.1.1 Features ........................................................................................................................... 203

      14.1.2 Modes of Operation ........................................................................................................ 203

      14.1.3 Block Diagram ................................................................................................................ 204

14.2  Register Definition ........................................................................................................................ 206

      14.2.1 SCI Baud Rate Registers (SCIxBDH, SCIxBDL) .......................................................... 206

      14.2.2 SCI Control Register 1 (SCIxC1) ................................................................................... 207

      14.2.3 SCI Control Register 2 (SCIxC2) ................................................................................... 208

      14.2.4 SCI Status Register 1 (SCIxS1) ...................................................................................... 209

      14.2.5 SCI Status Register 2 (SCIxS2) ...................................................................................... 211

      14.2.6 SCI Control Register 3 (SCIxC3) ................................................................................... 212

      14.2.7 SCI Data Register (SCIxD)............................................................................................. 213

14.3  Functional Description .................................................................................................................. 213

      14.3.1 Baud Rate Generation ..................................................................................................... 213

      14.3.2 Transmitter Functional Description ................................................................................ 214

      14.3.3 Receiver Functional Description .................................................................................... 215

      14.3.4 Interrupts and Status Flags.............................................................................................. 217

      14.3.5 Additional SCI Functions ............................................................................................... 218

                         Chapter 15
                         Serial Peripheral Interface (S08SPIV3)

15.1  Introduction ................................................................................................................................... 221

      15.1.1 Features ........................................................................................................................... 223

      15.1.2 Block Diagrams .............................................................................................................. 223

      15.1.3 SPI Baud Rate Generation .............................................................................................. 225

15.2  External Signal Description .......................................................................................................... 226

      15.2.1 SPSCK — SPI Serial Clock............................................................................................ 226

      15.2.2 MOSI — Master Data Out, Slave Data In ...................................................................... 226

      15.2.3 MISO — Master Data In, Slave Data Out ...................................................................... 226

      15.2.4 SS — Slave Select .......................................................................................................... 226

15.3  Modes of Operation....................................................................................................................... 227

      15.3.1 SPI in Stop Modes .......................................................................................................... 227

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                                     15
Section Number  Title                                   Page

15.4  Register Definition ........................................................................................................................ 227

      15.4.1 SPI Control Register 1 (SPIxC1) .................................................................................... 227

      15.4.2 SPI Control Register 2 (SPIxC2) .................................................................................... 228

      15.4.3 SPI Baud Rate Register (SPIxBR).................................................................................. 229

      15.4.4 SPI Status Register (SPIxS) ............................................................................................ 230

      15.4.5 SPI Data Register (SPIxD) ............................................................................................. 231

15.5  Functional Description .................................................................................................................. 232

      15.5.1 SPI Clock Formats .......................................................................................................... 232

      15.5.2 SPI Interrupts .................................................................................................................. 235

      15.5.3 Mode Fault Detection ..................................................................................................... 235

                Chapter 16
                Timer Pulse-Width Modulator (S08TPMV3)

16.1  Introduction ................................................................................................................................... 237

      16.1.1 TPM Configuration Information..................................................................................... 237

      16.1.2 TPM Pin Repositioning .................................................................................................. 237

      16.1.3 Features ........................................................................................................................... 239

      16.1.4 Modes of Operation ........................................................................................................ 239

      16.1.5 Block Diagram ................................................................................................................ 240

16.2  Signal Description ......................................................................................................................... 242

      16.2.1 Detailed Signal Descriptions .......................................................................................... 242

16.3  Register Definition ........................................................................................................................ 246

      16.3.1 TPM Status and Control Register (TPMxSC) ................................................................ 246

      16.3.2 TPM-Counter Registers (TPMxCNTH:TPMxCNTL).................................................... 247

      16.3.3 TPM Counter Modulo Registers (TPMxMODH:TPMxMODL).................................... 248

      16.3.4 TPM Channel n Status and Control Register (TPMxCnSC) .......................................... 249

      16.3.5 TPM Channel Value Registers (TPMxCnVH:TPMxCnVL) .......................................... 251

16.4  Functional Description .................................................................................................................. 252

      16.4.1 Counter............................................................................................................................ 253

      16.4.2 Channel Mode Selection ................................................................................................. 255

16.5  Reset Overview ............................................................................................................................. 258

      16.5.1 General............................................................................................................................ 258

      16.5.2 Description of Reset Operation....................................................................................... 258

16.6  Interrupts ....................................................................................................................................... 258

      16.6.1 General............................................................................................................................ 258

      16.6.2 Description of Interrupt Operation ................................................................................. 259

                Chapter 17
                Development Support

17.1  Introduction ................................................................................................................................... 261

      17.1.1 Forcing Active Background............................................................................................ 261

      17.1.2 Features ........................................................................................................................... 262

                MC9S08SH32 Series Data Sheet, Rev. 3

16                                                      Freescale Semiconductor
Section Number           Title                                 Page

17.2  Background Debug Controller (BDC) .......................................................................................... 262

      17.2.1 BKGD Pin Description ................................................................................................... 263

      17.2.2 Communication Details .................................................................................................. 264

      17.2.3 BDC Commands ............................................................................................................. 268

      17.2.4 BDC Hardware Breakpoint............................................................................................. 270

17.3  On-Chip Debug System (DBG) .................................................................................................... 271

      17.3.1 Comparators A and B ..................................................................................................... 271

      17.3.2 Bus Capture Information and FIFO Operation ............................................................... 271

      17.3.3 Change-of-Flow Information .......................................................................................... 272

      17.3.4 Tag vs. Force Breakpoints and Triggers ......................................................................... 272

      17.3.5 Trigger Modes................................................................................................................. 273

      17.3.6 Hardware Breakpoints .................................................................................................... 275

17.4  Register Definition ........................................................................................................................ 275

      17.4.1 BDC Registers and Control Bits ..................................................................................... 275

      17.4.2 System Background Debug Force Reset Register (SBDFR).......................................... 277

      17.4.3 DBG Registers and Control Bits..................................................................................... 278

                         Appendix A

                         Electrical Characteristics

A.1   Introduction ....................................................................................................................................283

A.2   Parameter Classification.................................................................................................................283

A.3   Absolute Maximum Ratings...........................................................................................................283

A.4   Thermal Characteristics..................................................................................................................285

A.5   ESD Protection and Latch-Up Immunity .......................................................................................287

A.6   DC Characteristics..........................................................................................................................288

A.7   Supply Current Characteristics.......................................................................................................292

A.8   External Oscillator (XOSC) Characteristics ..................................................................................296

A.9   Internal Clock Source (ICS) Characteristics ..................................................................................298

A.10  Analog Comparator (ACMP) Electricals .......................................................................................299

A.11  ADC Characteristics.......................................................................................................................300

A.12  AC Characteristics..........................................................................................................................304

      A.12.1 Control Timing ................................................................................................................304

      A.12.2 TPM/MTIM Module Timing ...........................................................................................306

      A.12.3 SPI....................................................................................................................................307

A.13  Flash Specifications........................................................................................................................310

A.14  EMC Performance..........................................................................................................................311

      A.14.1 Radiated Emissions..........................................................................................................311

                         Appendix B

             Ordering Information and Mechanical Drawings

B.1   Ordering Information .....................................................................................................................313

      B.1.1  Device Numbering Scheme .............................................................................................313

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                                     17
B.2  Package Information and Mechanical Drawings ...........................................................................314
Chapter 1

Device Overview

The MC9S08SH32 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.1         Devices in the MC9S08SH32 Series

Table  1-1  summarizes the feature set available in the MC9S08SH32 series of MCUs.

                         Table 1-1. MC9S08SH32 Series t Features by MCU and Package

                         Feature                  9S08SH32                       9S08SH16

               FLASH size (bytes)                 32768                          16384

               RAM size (bytes)                                        1024

               Pin quantity              28       20               16        28  20        16

               ACMP                                                    yes

               ADC channels              16       12               8         16  12        8

               DBG                                                     yes

               ICS                                                     yes

               IIC                                                     yes

               IRQ                                                     yes

               MTIM                                                    yes

               Pin Interrupts                                          8

               Pin I/O 1                 23       17               13        23  17        13

               RTC                                                     yes

               SCI                                                     yes

               SPI                                                     yes

               TPM1 channels                                           2

               TPM2 channels                                           2

               XOSC                                                    yes

            1  Port I/O count does  not  include  the output-only  PTA4/ACMPO/BKGD/MS.

                                    MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                               19
Chapter 1 Device Overview

1.2         MCU Block Diagram

The block diagram in Figure 1-1 shows the structure of the MC9S08SH32 Series MCU.

                                          BKGD/MS

                 HCS08 CORE

                                                   DEBUG MODULE (DBG)                                                    PTA7/TPM2CH1

            CPU              BDC                                                                                         PTA6/TPM2CH0

                                                   8-BIT MODULO TIMER                         TCLK                       PTA5/IRQ/TCLK/RESET

            HCS08 SYSTEM CONTROL                   MODULE (MTIM)                                                         PTA4/ACMPO/BKGD/MS

            RESETS AND INTERRUPTS                                                             SCL                PORT A  PTA3/PIA3/SCL/ADP3

            MODES OF OPERATION                     IIC MODULE (IIC)                                                      PTA2/PIA2/SD/ADP2

            POWER MANAGEMENT              IRQ                                                 SDA

            COP    IRQ             LVD                                                        SS                         PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                                                                                              MISO                       PTA0/PIA0/TPM1CH0/ADP0/ACMP+

                                                   SERIAL PERIPHERAL                          MOSI

                 USER FLASH                        INTERFACE MODULE (SPI)                     SPSCK

            (MC9S08SH32 = 32,768 BYTES)

            (MC9S08SH16 = 16,384 BYTES)                                                                                  PTB7/SCL/EXTAL

                                                   SERIAL COMMUNICATIONS                      RxD

                                                   INTERFACE MODULE (SCI)                     TxD                        PTB6/SDA/XTAL

                   USER RAM                                                                                              PTB5/TPM1CH1/SS

            (MC9S08SH32/16 = 1024 BYTES)                                                      TCLK               PORT B  PTB4/TPM2CH1/MISO

                                                   16-BIT TIMER/PWM                           TPM1CH0                    PTB3/PIB3/MOSI/ADP7

                                                   MODULE (TPM1)                              TPM1CH1                    PTB2/PIB2/SPSCK/ADP6

            REAL-TIME COUNTER (RTC)

                                                                                              TCLK                       PTB1/PIB1/TxD/ADP5

            40-MHz INTERNAL CLOCK                  16-BIT TIMER/PWM                           TPM2CH0                    PTB0/PIB0/RxD/ADP4

                 SOURCE (ICS)                      MODULE (TPM2)

                                                                                              TPM2CH1

            LOW-POWER OSCILLATOR          EXTAL

            31.25 kHz to 38.4 kHz                                                             ACMPO

                 1 MHz to 16 MHz          XTAL     ANALOG COMPARATOR                          ACMP–

                   (XOSC)                                                         (ACMP)                                 PTC7/ADP15

                                                                                              ACMP+                      PTC6/ADP14

VSS                                                                                                                      PTC5/ADP13

VDD         VOLTAGE REGULATOR                                                     10-BIT      ADP15-ADP0         PORT C  PTC4/ADP12

                                                   ANALOG-TO-DIGITAL                                                     PTC3/ADP11

VDDA/VREFH         VDDA                            CONVERTER (ADC)                                                       PTC2/ADP10

VSSA/VREFL         VSSA                                                                                                  PTC1/TPM1CH1/ADP9

                   VREFH                                                                                                 PTC0/TPM1CH0/ADP8

                   VREFL

                 = Pin can be enabled as part of the ganged output drive feature

            NOTE:  PTC7-PTC0 and PTA7-PTA6 not available on 16--pin Packages

                   PTC7-PTC4 and PTA7-PTA6 not available on 20-pin Packages

                   For the 16-pin and 20-pin packages: VDDA/VREFH and VSSA/VREFL, are double  bonded to VDD and  VSS     respectively.

                   When PTA4 is configured as BKGD, pin becomes bi-directional.

                                          Figure 1-1. MC9S08SH32 Series Block Diagram

                                                 MC9S08SH32 Series Data Sheet, Rev. 3

20                                                                                                                       Freescale Semiconductor
                                                                                Chapter  1  Device  Overview

Table 1-2 provides the   functional version of the on-chip modules

                                       Table 1-2. Module Versions

                                                   Module              Version

                         Analog Comparator (5V)            (ACMP)      3

                         Analog-to-Digital Converter       (ADC)       1

                         Central Processor Unit            (CPU)       3

                         Inter-Integrated Circuit          (IIC)       2

                         Internal Clock Source             (ICS)       2

                         Low Power Oscillator              (XOSC)      1

                         Modulo Timer                      (MTIM)      1

                         On-Chip In-Circuit Emulator       (DBG)       2

                         Real-Time Counter                 (RTC)       1

                         Serial Peripheral Interface       (SPI)       3

                         Serial Communications Interface   (SCI)       4

                         Timer Pulse Width Modulator       (TPM)       3

                         MC9S08SH32 Series Data Sheet, Rev.         3

Freescale Semiconductor                                                                             21
Chapter 1 Device Overview

1.3               System Clock Distribution

Figure 1-2 shows a simplified clock connection diagram. Some modules in the MCU have selectable clock

inputs as shown. The clock inputs to the modules indicate the clock(s) that are used to drive the module

function.

The following defines the clocks used in this MCU:

       •      BUSCLK — The frequency of the bus is always half of ICSOUT.

       •      ICSOUT — Primary output of the ICS and is twice the bus frequency.

       •      ICSLCLK — Development tools can select this clock source to speed up BDC communications in

              systems where the bus clock is configured to run at a very slow frequency.

       •      ICSERCLK — External reference clock can be selected as the RTC clock source and as the

              alternate clock for the ADC module.

       •      ICSIRCLK — Internal reference clock can be selected as the RTC clock source.

       •      ICSFFCLK — Fixed frequency clock can be selected as clock source for the TPM1, TPM2 and

              MTIM modules.

       •      LPOCLK — Independent 1-kHz clock source that can be selected as the clock source for the COP

              and RTC modules.

       •      TCLK — External input clock source for TPM1, TPM2 and MTIM and is referenced as TPMCLK

              in TPM chapters.

                                                                 TCLK

       1 kHZ      LPOCLK                           RTC     COP         TPM1          TPM2  MTIM          SCI         SPI

       LPO

                  ICSERCLK

                  ICSIRCLK

       ICS        ICSFFCLK             ÷2                                    FFCLK*

                                                        SYNC*

                  ICSOUT               ÷2  BUSCLK

                  ICSLCLK

       XOSC

                                  CPU                            BDC                             ADC            IIC       FLASH

                                                                                           ADC has min and max            FLASH has frequency

EXTAL       XTAL                                                                           frequency requirements.        requirements for program

* The fixed frequency clock (FFCLK) is internally                                          See the ADC chapter            and erase operation. See

synchronized to the bus clock and must not exceed one                                      and electricals appendix       the electricals appendix

half of the bus clock frequency.                                                           for details.                   for details.

                                                   Figure  1-2.  System      Clock   Distribution Diagram

                                                        MC9S08SH32 Series Data Sheet, Rev. 3

22                                                                                                                        Freescale Semiconductor
Chapter 2

Pins and Connections

This section describes signals that connect to package pins. It includes pinout diagrams, recommended

system connections, and detailed discussions of signals.

2.1  Device Pin Assignment

Figure 2-1 - Figure 2-3 shows the pin assignments for the MC9S08SH32 Series devices.

                         PTC5/ADP13               1            28  PTC6/ADP14

                         PTC4/ADP12               2            27  PTC7/ADP15

           PTA5/IRQ/TCLK/RESET                    3            26  PTA0/PIA0/TPM1CH0/ADP0/ACMP+

           PTA4/ACMPO/BKGD/MS                     4            25  PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                                         VDD      5            24  PTA2/PIA2/SDA/ADP2

                         VDDA/VREFH               6            23  PTA3/PIA3/SCL/ADP3

                         VSSA/VREFL               7            22  PTA6/TPM2CH0

                                         VSS      8            21  PTA7/TPM2CH1

                         PTB7/SCL/EXTAL           9            20  PTB0/PIB0/RxD/ADP4

                         PTB6/SDA/XTAL            10           19  PTB1/PIB1/TxD/ADP5

                         PTB5/TPM1CH1/SS          11           18  PTB2/PIB2/SPSCK/ADP6

                         PTB4/TPM2CH1/MISO        12           17  PTB3/PIB3/MOSI/ADP7

                         PTC3/ADP11               13           16  PTC0/TPM1CH0/ADP8

                         PTC2/ADP10               14           15  PTC1/TPM1CH1/ADP9

                                         Figure      2-1.  28-Pin SOIC and TSSOP

     PTA5/IRQ/TCLK/RESET                      1            20      PTA0/PIA0/TPM1CH0/ADP0/ACMP+

           PTA4/ACMPO/BKGD/MS                 2            19      PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                         VDD                  3            18      PTA2/PIA2/SDA/ADP2

                         VSS                  4            17      PTA3/PIA3/SCL/ADP3

                         PTB7/SCL/EXTAL       5            16      PTB0/PIB0/RxD/ADP4

                         PTB6/SDA/XTAL        6            15      PTB1/PIB1/TxD/ADP5

           PTB5/TPM1CH1/SS                    7            14      PTB2/PIB2/SPSCK/ADP6

           PTB4/TPM2CH1/MISO                  8            13      PTB3/PIB3/MOSI/ADP7

                         PTC3/ADP11           9            12      PTC0/TPM1CH0/ADP8

                         PTC2/ADP10           10           11      PTC1/TPM1CH1/ADP9

                                                  Figure 2-2. 20-Pin TSSOP

                                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                23
Chapter  2  Pins  and  Connections

                       PTA5/IRQ/TCLK/RESET  1             16      PTA0/PIA0/TPM1CH0/ADP0/ACMP+

                       PTA4/ACMPO/BKGD/MS   2             15      PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                                    VDD     3             14      PTA2/PIA2/SDA/ADP2

                                    VSS     4             13      PTA3/PIA3/SCL/ADP3

                       PTB7/SCL/EXTAL       5             12      PTB0/PIB0/RxD/ADP4

                       PTB6/SDA/XTAL        6             11      PTB1/PIB1/TxD/ADP5

                       PTB5/TPM1CH1/SS      7             10      PTB2/PIB2/SPSCK/ADP6

                       PTB4/TPM2CH1/MISO    8             9       PTB3/PIB3/MOSI/ADP7

                                            Figure  2-3.  16-Pin  TSSOP

                                    MC9S08SH32 Series Data        Sheet, Rev. 3

24                                                                                      Freescale  Semiconductor
                                                                                            Chapter 2 Pins and Connections

2.2          Recommended System Connections

Figure 2-4 shows pin connections that are common to MC9S08SH32 Series application systems.

     BACKGROUND HEADER                                    MC9S08SH32

                                                          BKGD/MS                       PTA0/PIA0/TPM1CH0/ADP0/ACMP+

VDD                                                                                     PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                         VDD                                                            PTA2/PIA2/SDA/ADP2

                                                                      PORT              PTA3/PIA3/SCL/ADP3

                                   4.7 kΩ–10  kΩ                      A

                                                                                        PTA4/ACMPO/BKGD/MS

                                                          RESET                         PTA5/IRQ/TCLK/RESET

                                                                                        PTA6/TPM2CH0

OPTIONAL                           0.1 μF                                               PTA7/TPM2CH1

     MANUAL

     RESET                                                                              PTB0/PIB0/RxD/ADP4

                                                                                        PTB1/PIB1/TxD/ADP5

             PTC0/TPM1CH0/ADP8                                                          PTB2/PIB2/SPSCK/ADP6

             PTC1/TPM1CH1/ADP9                                        PORT              PTB3/PIB3/MOSI/ADP7

                       PTC2/ADP10                                     B                 PTB4/TPM2CH1/MISO

                       PTC3/ADP11                 PORT                                  PTB5/TPM1CH1/SS

                       PTC4/ADP12                      C                                PTB6/SDA/XTAL

                       PTC5/ADP13                                                       PTB7/SCL/EXTAL

                       PTC6/ADP14

                       PTC7/ADP15

                                                                                            RF             RS

                                                  VDD

     +       CBLK   +              CBY                                              C1  X1             C2

     5V      10 μF                 0.1 μF

                                                  VSS

                                                                                                NOTE 1

     SYSTEM                                       VDDA\VREFH

     POWER                         CBY

                                   0.1 μF

                                                  VSSA\VREFL

NOTES:

     1. External crystal circuit not required if using the internal clock option.

     2. RESET pin can only be used to reset into user mode, you can not enter BDM using RESET pin. BDM can be entered

         by holding MS low during POR or writing a 1 to BDFR in SBDFR with MS low after issuing BDM command.

     3. RC filter on RESET pin recommended for noisy environments.

     4. For the 16-pin and 20-pin packages: VDDA/VREFH and VSSA/VREFL are double bonded to VDD and VSS respectively.
     5. When PTA4 is configured as BKGD, pin becomes bi-directional.

                                           Figure 2-4. Basic System Connections

                                              MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                25
Chapter 2 Pins and Connections

2.2.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 near to the MCU power pins as

practical to suppress high-frequency noise. Each pin must have a bypass capacitor for best noise

suppression.

VDDA and VSSA are the analog power supply pins for MCU. This voltage source supplies power to the

ADC module. A 0.1uF ceramic bypass capacitor should be located as near to the MCU power pins as

practical to suppress high-frequency noise. The VREFH and VREFL pins are the voltage reference high and

voltage reference low inputs, respectively for the ADC module. For this MCU, VDDA shares the VREFH

pin and these pins are available only in the 28-pin packages. In the 16-pin and 20-pin packages they are

double bonded to the VDD pin. For this MCU, VSSA shares the VREFL pin and these pins are available only

in the 28-pin packages. In the 16-pin and 20-pin packages they are double bonded to the VSS pin.

2.2.2       Oscillator (XOSC)

Immediately after reset, the MCU uses an internally generated clock provided by the clock source

generator (ICS) module. For more information on the ICS, see Chapter 11, “Internal Clock Source

(S08ICSV2).”

The oscillator (XOSC) in this MCU is a Pierce oscillator that can accommodate a crystal or ceramic

resonator. Rather than a crystal or ceramic resonator, an external oscillator can be connected to the EXTAL

input pin.

Refer to Figure 2-4 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; 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 selecting 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).

                                MC9S08SH32 Series Data Sheet, Rev. 3

26                                                                        Freescale Semiconductor
                                                                  Chapter 2 Pins and Connections

2.2.3  RESET

After a power-on reset (POR), the PTA5/IRQ/TCLK/RESET pin defaults to a general-purpose I/O port pin,

PTA5. Setting RSTPE in SOPT1 configures the pin to be the RESET pin with an open-drain drive

containing an internal pull-up device. After configured as RESET, the pin will remain RESET until the

next POR. The RESET pin when enabled can be used to reset the MCU from an external source when the

pin is driven low.

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 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 non-POR reset is initiated (whether from an external signal or from an internal system), the

RESET pin if enabled is driven low for about 66 bus cycles. The reset circuitry decodes the cause of reset

and records it by setting a corresponding bit in the system reset status register (SRS).

                                                     NOTE

       This pin does not contain a clamp diode to VDD and should not be driven

       above VDD.

       The voltage measured on the internally pulled up RESET pin will not be

       pulled to VDD. The internal gates connected to this pin are pulled to VDD. If

       the RESET pin is required to drive to a VDD level an external pullup should

       be used.

                                                     NOTE

       In EMC-sensitive applications, an external RC filter is recommended on the

       RESET pin. See Figure 2-4 for an example.

2.2.4  Background / Mode Select (BKGD/MS)

During a power-on-reset (POR) or background debug force reset (see Section 5.7.3, “System Background

Debug Force Reset Register (SBDFR),” for more information), the PTA4/ACMPO/BKGD/MS pin

functions as a mode select pin. Immediately after any reset, the pin functions as the background pin and

can be used for background debug communication. When enabled as the BKGD/MS pin (BKGDPE = 1),

an internal pullup device is automatically enabled.

The background debug communication function is enabled when BKGDPE in SOPT1 is set. BKGDPE is

set following any reset of the MCU and must be cleared to use the PTA4/ACMPO/BKGD/MS pin’s

alternative pin function.

If nothing is connected to this pin, the MCU will enter normal operating mode at the rising edge of the

internal reset after a POR or force BDC reset. If a debug system is connected to the 6-pin standard

background debug header, it can hold BKGD/MS low during a POR or immediately after issuing a

background debug force reset, which will force the MCU to active background mode.

                           MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                       27
Chapter 2 Pins and Connections

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 maximum bus clock rate, so there must 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.2.5  General-Purpose I/O and Peripheral Ports

The MC9S08SH32 Series series of MCUs support up to 23 general-purpose I/O pins and 1 output-only

pin, which are shared with on-chip peripheral functions (timers, serial I/O, ADC, etc.).

When a port pin is configured as a general-purpose output or a peripheral uses the port pin as an output,

software can select one of two drive strengths and enable or disable slew rate control. When a port pin is

configured as a general-purpose input or a peripheral uses the port pin as an input, software can enable a

pull-up device. Immediately after reset, all of these pins are configured as high-impedance

general-purpose inputs with internal pull-up devices disabled.

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. For information about controlling these pins as general-purpose I/O

pins, see Chapter 6, “Parallel Input/Output Control.”

The MC9S08SH32 Series devices contain a ganged output drive feature that allows a safe and reliable

method of allowing pins to be tied together externally to produce a higher output current drive. See Section

6.3, “Ganged Output” for more information for configuring the port pins for ganged output drive.

                                NOTE

       To avoid extra current drain from floating input pins, the reset initialization

       routine in the application program should either enable on-chip pull-up

       devices or change the direction of unused pins to outputs so they do not

       float.

       When using the 20-pin devices, the user must either enable on-chip pullup

       devices or change the direction of non-bonded PTC7-PTC4 and PTA7-PTA6

       pins to outputs so the pins do not float.

       When using the 16-pin devices, the user must either enable on-chip pullup

       devices or change the direction of non-bonded out PTC7-PTC0 and

       PTA7-PTA6 pins to outputs so the pins do not float.

                                MC9S08SH32 Series Data Sheet, Rev. 3

28                                                                                        Freescale Semiconductor
                                                                                          Chapter 2 Pins and Connections

                              Table 2-1.    Pin Availability by Package Pin-Count

                  Pin Number                                       Priority

                                                Lowest                                              Highest

              28-pin  20-pin  16-pin  Port Pin       Alt 1       Alt 2             Alt 3            Alt 4       Alt5

              1       —       —       PTC5                                                                 ADP13

              2       —       —       PTC4                                                                 ADP12

              3       1       1       PTA5      IRQ         TCLK                                             RESET1

              4       2       2       PTA4      ACMPO                                     BKGD             MS

              5                                                                                            VDD

              6       3       3                                                           VDDA             VREFH

              7                                                                           VSSA             VREFL

              8       4       4                                                                            VSS

              9       5       5       PTB7      SCL2        EXTAL

              10      6       6       PTB6      SDA2        XTAL

              11      7       7       PTB5      TPM1CH13    SS                     PTC04

              12      8       8       PTB4      TPM2CH15    MISO                   PTC04

              13      9       —       PTC3                                         PTC04  ADP11

              14      10      —       PTC2                                         PTC04  ADP10

              15      11      —       PTC1      TPM1CH13                           PTC04  ADP9

              16      12      —       PTC0      TPM1CH03                           PTC04  ADP8

              17      13      9       PTB3      PIB3        MOSI                   PTC04  ADP7

              18      14      10      PTB2      PIB2        SPSCK                  PTC04  ADP6

              19      15      11      PTB1      PIB1        TxD                           ADP5

              20      16      12      PTB0      PIB0        RxD                           ADP4

              21      —       —       PTA7      TPM2CH15

              22      —       —       PTA6      TPM2CH05

              23      17      13      PTA3      PIA3        SCL2                          ADP3

              24      18      14      PTA2      PIA2        SDA2                          ADP2

              25      19      15      PTA1      PIA1        TPM2CH05                      ADP16            ACMP-6

              26      20      16      PTA0      PIA0        TPM1CH03                      ADP06            ACMP+6

              27      —       —       PTC7                                                                 ADP15

              28      —       —       PTC6                                                                 ADP14

           1  Pin does not contain a clamp diode to VDD and should not be driven above VDD. The voltage measured on

              the internally pulled up RESET in will not be pulled to VDD. The internal gates connected to this pin are

              pulled to VDD.

           2  IIC pins can be repositioned using IICPS in SOPT2, default reset locations are PTA2, PTA3.

           3  TPM1CHx pins can be repositioned using T1CHxPS bits in SOPT2, default reset locations are PTA0, PTB5.

           4  This port pin is part of the ganged output feature. When pin is enabled for ganged output, it will have priority

              over all digital modules. The output data, drive strength and slew-rate control of this port pin will follow the

              configuration for the PTC0 pin, even in 16-pin packages where PTC0 doesn’t bond out.

           5  TPM2CHx pins can be repositioned using T2CHxPS bits in SOPT2, default reset locations are PTA1, PTB4.

           6  If ACMP and ADC are both enabled, both will have access to the pin.

                                      MC9S08SH32 Series Data Sheet, Rev. 3

Freescale  Semiconductor                                                                                                        29
Chapter  2  Pins  and  Connections

                                    MC9S08SH32 Series Data Sheet, Rev. 3

30                                                                        Freescale Semiconductor
Chapter 3

Modes of Operation

3.1  Introduction

The operating modes of the MC9S08SH32 Series are described in this chapter. 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 are running and full regulation

     is maintained

•    Stop modes — System clocks are stopped and voltage regulator is in standby

     — Stop3 — All internal circuits are powered for fast recovery

     — Stop2 — Partial power down of internal circuits, RAM content is retained

3.3  Run Mode

This is the normal operating mode for the MC9S08SH32 Series. This mode is selected upon the MCU

exiting reset if the BKGD/MS pin is high. In this mode, the CPU executes code from internal memory with

execution beginning at the address fetched from memory at 0xFFFE–0xFFFF 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 the following ways:

•    When the BKGD/MS pin is low during POR or immediately after issuing a background debug

     force reset (see Section 5.7.3, “System Background Debug Force Reset Register (SBDFR)”)

•    When a BACKGROUND command is received through the BKGD/MS 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 application program.

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                    31
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/MS pin while the MCU is in

       run mode; non-intrusive commands can also be executed when 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 only be executed 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 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 MC9S08SH32

Series 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 17, “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 two stop modes is entered upon execution of a STOP instruction when STOPE in SOPT1. In any

stop mode, the bus and CPU clocks are halted. The ICS module can be configured to leave the reference

clocks running. See Chapter 11, “Internal Clock Source (S08ICSV2),” for more information.

                              MC9S08SH32 Series Data Sheet, Rev. 3

32                                                                   Freescale Semiconductor
                                                                                          Chapter 3 Modes of Operation

Table 3-1 shows all of the control bits that affect stop mode selection and the mode selected under various

conditions. The selected mode is entered following the execution of a STOP instruction.

                                           Table 3-1. Stop Mode Selection

   STOPE  ENBDM 1        LVDE      LVDSE   PPDC                                Stop Mode

   0      x                     x          x     Stop modes disabled; illegal opcode reset if STOP instruction executed

   1      1                     x          x     Stop3 with BDM enabled 2

   1      0           Both bits must be 1  x     Stop3 with voltage regulator active

   1      0              Either bit a 0    0     Stop3

   1      0              Either bit a 0    1     Stop2

1  ENBDM is located in the BDCSCR, which is only accessible through BDC commands, see Section 17.4.1.1, “BDC Status and

   Control Register (BDCSCR)”.

2  When in Stop3 mode with BDM enabled, The SIDD will be near RIDD levels because internal clocks are enabled.

3.6.1     Stop3 Mode

Stop3 mode is entered by executing a STOP instruction under the conditions as shown in Table 3-1. The

states of all of the internal registers and logic, RAM contents, and I/O pin states are maintained.

Stop3 can be exited by asserting RESET if enabled, or by an interrupt from one of the following sources:

the real-time counter (RTC), LVD system, ACMP, ADC, SCI or any pin interrupts.

If stop3 is exited by means of the RESET pin, then the MCU is reset and operation will resume after taking

the reset vector. Exit by means of one of the internal interrupt sources results in the MCU taking the

appropriate interrupt vector.

3.6.1.1   LVD Enabled in Stop3 Mode

The LVD system is capable of generating either an interrupt or a reset when the supply voltage drops below

the LVD voltage. For configuring the LVD system for interrupt or reset, refer to 5.6, “Low-Voltage Detect

(LVD) System”. If the LVD is enabled in stop3 (LVDE and LVDSE bits in SPMSC1 both set) at the time

the CPU executes a STOP instruction, then the voltage regulator remains active during stop mode.

For the ADC to operate in stop mode, the LVD must be enabled when entering stop3.

For the ACMP to operate in stop mode with compare to internal bandgap option, the LVD must be enabled

when entering stop3.

3.6.1.2   Active BDM Enabled in Stop3 Mode

Entry into the active background mode from run mode is enabled if ENBDM in BDCSCR is set. This

register is described in Chapter 17, “Development Support.” 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. Because of this, background debug communication remains possible. In addition, the voltage

regulator does not enter its low-power standby state but maintains full internal regulation.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                  33
Chapter 3 Modes of Operation

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 entering background debug mode, all background

commands are available.

3.6.2  Stop2 Mode

Stop2 mode is entered by executing a STOP instruction under the conditions as shown in Table 3-1. Most

of the internal circuitry of the MCU is powered off in stop2 with the exception of the RAM. Upon entering

stop2, all I/O pin control signals are latched so that the pins retain their states during stop2.

Exit from stop2 is performed by asserting the wake-up pin (PTA5/IRQ/TCLK/RESET) on the MCU.

In addition, the real-time counter (RTC) can wake the MCU from stop2, if enabled.

Upon wake-up from stop2 mode, the MCU starts up as from a power-on reset (POR):

    •  All module control and status registers are reset

    •  The LVD reset function is enabled and the MCU remains in the reset state if VDD is below the LVD

       trip point (low trip point selected due to POR)

    •  The CPU takes the reset vector

In addition to the above, upon waking up from stop2, the PPDF bit in SPMSC2 is set. This flag is 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 states for pins that were configured as general-purpose I/O before entering stop2, 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 pins will switch to their reset states when PPDACK is written.

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  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.2, “Stop2

Mode,” and Section 3.6.1, “Stop3 Mode,” for specific information on system behavior in stop modes.

                              MC9S08SH32 Series Data Sheet, Rev. 3

34                                                                                 Freescale Semiconductor
                                                                                                    Chapter  3  Modes  of  Operation

                                                Table 3-2. Stop Mode Behavior

                                                                  Mode

                                    Peripheral

                                                   Stop2                           Stop3

                          CPU                      Off                             Standby

                          RAM                      Standby                         Standby

                          FLASH                    Off                             Standby

                          Parallel Port Registers  Off                             Standby

                          ADC                      Off                             Optionally On1

                          ACMP                     Off                             Optionally On2

                          BDM                      Off3                            Optionally On

                          ICS                      Off                             Optionally On4

                          IIC                      Off                             Standby

                          LVD/LVW                  Off5                            Optionally On

                          MTIM                     Off                             Standby

                          RTC                      Optionally On                   Optionally On

                          SCI                      Off                             Standby

                          SPI                      Off                             Standby

                          TPM                      Off                             Standby

                          Voltage Regulator        Standby                         Optionally On6

                          XOSC                     Off                             Optionally On7

                          I/O Pins                 States Held                     States Held

           1              Requires the asynchronous ADC clock and LVD to be enabled, else in

                          standby.

           2              Requires the LVD to be enabled when compare to internal bandgap reference

                          option is enabled.

           3              If ENBDM is set when entering stop2, the MCU will actually enter stop3.

           4              IRCLKEN and IREFSTEN set in ICSC1, else in standby.

           5              If LVDSE is set when entering stop2, the MCU will actually enter stop3.

           6              Voltage regulator will be on if BDM is enabled or if LVD is enabled when

                          entering stop3.

           7              ERCLKEN and EREFSTEN set in ICSC2, else in standby. For high frequency

                          range (RANGE in ICSC2 set) requires the LVD to also be enabled in stop3.

                                             MC9S08SH32 Series Data Sheet, Rev. 3

Freescale  Semiconductor                                                                                                   35
Chapter  3  Modes  of  Operation

                                  MC9S08SH32 Series Data Sheet, Rev. 3

36                                                                      Freescale Semiconductor
Chapter 4

Memory

4.1  MC9S08SH32 Series Memory Map

As shown in Figure 4-1, on-chip memory in the MC9S08SH32 Series series of MCUs consists of RAM,

FLASH program memory for nonvolatile data storage, and I/O and control/status registers. The registers

are divided into three groups:

•    Direct-page registers (0x0000 through 0x007F)

•    High-page registers (0x1800 through 0x185F)

•    Nonvolatile registers (0xFFB0 through 0xFFBF)

                         0x0000                         0x0000

                                 DIRECT PAGE REGISTERS  0x007F  DIRECT PAGE REGISTERS

                         0x007F

                         0x0080                         0x0080

                                 RAM                                   RAM

                                 1024 BYTES                            1024 BYTES

                         0x047F                         0x047F

                         0x0480  UNIMPLEMENTED          0x0480  UNIMPLEMENTED

                         0x17FF  4992 BYTES             0x17FF         4992 BYTES

                         0x1800                         0x1800

                                 HIGH PAGE REGISTERS            HIGH PAGE REGISTERS

                         0x185F                         0x185F

                         0x1860                         0x1860

                                 UNIMPLEMENTED                  UNIMPLEMENTED

                         0x7FFF  26,528 BYTES           0x7FFF         26,528 BYTES

                         0x8000                         0x8000

                                                                UNIMPLEMENTED

                                                                       16,384 BYTES

                                 FLASH

                                 32768 BYTES            0xBFFF

                                                        0xC000

                                                                       FLASH

                                                                       16,384 BYTES

                         0xFFFF                         0xFFFF

                                 9S08SH32                              9S08SH16

                                 Figure 4-1. MC9S08SH32/16 Memory Map

                                 MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                 37
Chapter 4 Memory

4.2  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 Semiconductor provided equate file for the MC9S08SH32 Series.

                                 Table 4-1. Reset and Interrupt Vectors

                  Address        Vector                                  Vector Name

                  (High/Low)

                  0xFFC0:0xFFC1  Reserved                                —

                  0xFFC2:0xFFC3  ACMP                                    Vacmp

                  0xFFC4:0xFFC5  Reserved                                —

                  0xFFC6:0xFFC7  Reserved                                —

                  0xFFC8:0xFFC9  Reserved                                —

                  0xFFCA:0xFFCB  MTIM Overflow                           Vmtim

                  0xFFCC:0xFFCD  RTC                                     Vrtc

                  0xFFCE:0xFFCF  IIC                                     Viic

                  0xFFD0:0xFFD1  ADC Conversion                          Vadc

                  0xFFD2:0xFFD3  Reserved                                —

                  0xFFD4:0xFFD5  Port B Pin Interrupt                    Vportb

                  0xFFD6:0xFFD7  Port A Pin Interrupt                    Vporta

                  0xFFD8:0xFFD9  Reserved                                —

                  0xFFDA:0xFFDB  SCI Transmit                            Vscitx

                  0xFFDC:0xFFDD  SCI Receive                             Vscirx

                  0xFFDE:0xFFDF  SCI Error                               Vsc1err

                  0xFFE0:0xFFE1  SPI                                     Vspi

                  0xFFE2:0xFFE3  TPM2 Overflow                           Vtpm2ovf

                  0xFFE4:0xFFE5  TPM2 Channel 1                          Vtpm2ch1

                  0xFFE6:0xFFE7  TPM2 Channel 0                          Vtpm2ch0

                  0xFFE8:0xFFE9  TPM1 Overflow                           Vtpm1ovf

                  0xFFEA:0xFFEB  Reserved                                —

                  0xFFEC:0xFFED  Reserved                                —

                  0xFFEE:0xFFEF  Reserved                                —

                  0xFFF0:0xFFF1  Reserved                                —

                  0xFFF2:0xFFF3  TPM1 Channel 1                          Vtpm1ch1

                  0xFFF4:0xFFF5  TPM1 Channel 0                          Vtpm1ch0

                  0xFFF6:0xFFF7  Reserved                                —

                  0xFFF8:0xFFF9  Low Voltage Detect                      Vlvd

                  0xFFFA:0xFFFB  IRQ                                     Virq

                  0xFFFC:0xFFFD  SWI                                     Vswi

                  0xFFFE:0xFFFF  Reset                                   Vreset

                                 MC9S08SH32 Series Data Sheet, Rev. 3

38                                                                          Freescale Semiconductor
                                                                                           Chapter 4 Memory

4.3  Register Addresses and Bit Assignments

The registers in the MC9S08SH32 Series are divided into these groups:

•    Direct-page registers are located in the first 128 locations in the memory map; these are accessible

     with efficient direct addressing mode instructions.

•    High-page registers are used much less often, so they are located above 0x1800 in the memory

     map. This leaves more room in the direct page for more frequently used registers and RAM.

•    The nonvolatile register area consists of a block of 16 locations in FLASH memory at

     0xFFB0–0xFFBF. Nonvolatile register locations include:

     — NVPROT and NVOPT are loaded into working registers at reset

     — An 8-byte backdoor comparison key that 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 requires

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

                                        MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                     39
Chapter 4 Memory

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

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

         Name

0x0000   PTAD      PTAD7   PTAD6        PTAD5        PTAD4       PTAD3   PTAD2         PTAD1   PTAD0

0x0001   PTADD     PTADD7  PTADD6  PTADD5      PTADD4            PTADD3  PTADD2        PTADD1  PTADD0

0x0002   PTBD      PTBD7   PTBD6        PTBD5        PTBD4       PTBD3   PTBD2         PTBD1   PTBD0

0x0003   PTBDD     PTBDD7  PTBDD6  PTBDD5      PTBDD4       PTBDD3       PTBDD2        PTBDD1  PTBDD0

0x0004   PTCD      PTCD7   PTCD6        PTCD5        PTCD4       PTCD3   PTCD2         PTCD1   PTCD0

0x0005   PTCDD     PTCDD7  PTCDD6  PTCDD5      PTCDD4       PTCDD3       PTCDD2        PTCDD1  PTCDD0

0x0006   Reserved  —       —            —            —           —           —         —            —

0x0007   Reserved  —       —            —            —           —           0         0            0

0x0008–  Reserved  —       —            —            —           —           —         —            —

0x000D             —       —            —            —           —           —         —            —

0x000E   ACMPSC    ACME    ACBGS        ACF          ACIE        ACO     ACOPE         ACMOD1  ACMOD0

0x000F   Reserved  —       —            —            —           —           —         —            —

0x0010   ADCSC1    COCO    AIEN         ADCO                                 ADCH

0x0011   ADCSC2    ADACT   ADTRG        ACFE         ACFGT       —           —         —            —

0x0012   ADCRH     0       0            0            0           0           0         ADR9    ADR8

0x0013   ADCRL     ADR7    ADR6         ADR5         ADR4        ADR3        ADR2      ADR1    ADR0

0x0014   ADCVH     0       0            0            0           0           0         ADCV9   ADCV8

0x0015   ADCVL     ADCV7   ADCV6        ADCV5        ADCV4       ADCV3   ADCV2         ADCV1   ADCV0

0x0016   ADCCFG    ADLPC          ADIV         ADLSMP                  MODE                 ADICLK

0x0017   APCTL1    ADPC7   ADPC6        ADPC5        ADPC4       ADPC3   ADPC2         ADPC1   ADPC0

0x0018   APCTL2    ADPC15  ADPC14  ADPC13      ADPC12            ADPC11  ADPC10        ADPC9   ADPC8

0x0019   Reserved  —       —            —            —           —           —         —            —

0x001A   IRQSC     0       IRQPDD  IRQEDG            IRQPE       IRQF    IRQACK        IRQIE   IRQMOD

0x001B   Reserved  —       —            —            —           —           —         —            —

0x001C   MTIMSC    TOF     TOIE         TRST         TSTP        0           0         0            0

0x001D   MTIMCLK   0       0                   CLKS                                PS

0x001E   MTIMCNT                                            CNT

0x001F   MTIMMOD                                            MOD

0x0020   TPM1SC    TOF     TOIE    CPWMS             CLKSB       CLKSA       PS2       PS1          PS0

0x0021   TPM1CNTH  Bit 15  14           13           12          11          10        9            Bit 8

0x0022   TPM1CNTL  Bit 7   6            5            4           3           2         1            Bit 0

0x0023   TPM1MODH  Bit 15  14           13           12          11          10        9            Bit 8

0x0024   TPM1MODL  Bit 7   6            5            4           3           2         1            Bit 0

0x0025   TPM1C0SC  CH0F    CH0IE        MS0B         MS0A        ELS0B   ELS0A         0            0

0x0026   TPM1C0VH  Bit 15  14           13           12          11          10        9            Bit 8

0x0027   TPM1C0VL  Bit 7   6            5            4           3           2         1            Bit 0

0x0028   TPM1C1SC  CH1F    CH1IE        MS1B         MS1A        ELS1B   ELS1A         0            0

0x0029   TPM1C1VH  Bit 15  14           13           12          11          10        9            Bit 8

0x002A   TPM1C1VL  Bit 7   6            5            4           3           2         1            Bit 0

                           MC9S08SH32 Series Data Sheet, Rev. 3

40                                                                                 Freescale Semiconductor
                                                                                             Chapter 4 Memory

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

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

               Name

0x002B–  Reserved        —             —      —      —             —                   —     —        —

0x0037                   —             —      —      —             —                   —     —        —

0x0038   SCIBDH          LBKDIE  RXEDGIE      0      SBR12         SBR11             SBR10   SBR9     SBR8

0x0039   SCIBDL          SBR7          SBR6   SBR5   SBR4          SBR3                SBR2  SBR1     SBR0

0x003A   SCIC1           LOOPS   SCISWAI      RSRC   M             WAKE                ILT   PE       PT

0x003B   SCIC2           TIE           TCIE   RIE    ILIE          TE                  RE    RWU      SBK

0x003C   SCIS1           TDRE          TC     RDRF   IDLE          OR                  NF    FE       PF

0x003D   SCIS2           LBKDIF  RXEDGIF      0      RXINV         RWUID             BRK13   LBKDE    RAF

0x003E   SCIC3           R8            T8     TXDIR  TXINV         ORIE                NEIE  FEIE     PEIE

0x003F   SCID            Bit 7         6      5      4                       3         2     1        Bit 0

0x0040–  Reserved        —             —      —      —             —                   —     —        —

0x0047                   —             —      —      —             —                   —     —        —

0x0048   ICSC1                   CLKS                RDIV                            IREFS   IRCLKEN  IREFSTEN

0x0049   ICSC2                   BDIV         RANGE  HGO           LP                EREFS   ERCLKEN  EREFSTEN

0x004A   ICSTRM                                              TRIM

0x004B   ICSSC           0             0      0      IREFST                     CLKST        OSCINIT  FTRIM

0x004C–  Reserved        —             —      —      —             —                   —     —        —

0x004F                   —             —      —      —             —                   —     —        —

0x0050   SPIC1           SPIE          SPE    SPTIE  MSTR          CPOL                CPHA  SSOE     LSBFE

0x0051   SPIC2           0             0      0      MODFEN  BIDIROE                   0     SPISWAI  SPC0

0x0052   SPIBR           0             SPPR2  SPPR1  SPPR0                   0         SPR2  SPR1     SPR0

0x0053   SPIS            SPRF          0      SPTEF  MODF                    0         0     0        0

0x0054   Reserved        0             0      0      0                       0         0     0        0

0x0055   SPID            Bit 7         6      5      4                       3         2     1        Bit 0

0x0056–  Reserved        —             —      —      —             —                   —     —        —

0x0057                   —             —      —      —             —                   —     —        —

0x0058   IICA            AD7           AD6    AD5    AD4           AD3                 AD2   AD1      0

0x0059   IICF                    MULT                                           ICR

0x005A   IICC1           IICEN         IICIE  MST    TX            TXAK                RSTA  0        0

0x005B   IICS            TCF           IAAS   BUSY   ARBL                    0         SRW   IICIF    RXAK

0x005C   IICD                                                DATA

0x005D   IICC2           GCAEN         ADEXT  0      0                       0         AD10  AD9      AD8

0x005E–  Reserved        —             —      —      —             —                   —     —        —

0x005F                   —             —      —      —             —                   —     —        —

0x0060   TPM2SC          TOF           TOIE   CPWMS  CLKSB         CLKSA               PS2   PS1      PS0

0x0061   TPM2CNTH        Bit 15        14     13     12            11                  10    9        Bit 8

0x0062   TPM2CNTL        Bit 7         6      5      4                       3         2     1        Bit 0

0x0063   TPM2MODH        Bit 15        14     13     12            11                  10    9        Bit 8

0x0064   TPM2MODL        Bit 7         6      5      4                       3         2     1        Bit 0

0x0065   TPM2C0SC        CH0F          CH0IE  MS0B   MS0A          ELS0B             ELS0A   0        0

                                       MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                      41
Chapter 4 Memory

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

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

          Name

0x0066    TPM2C0VH  Bit 15  14          13  12          11               10            9   Bit 8

0x0067    TPM2C0VL  Bit 7   6           5   4                     3      2             1   Bit 0

0x0068    TPM2C1SC  CH1F    CH1IE  MS1B     MS1A  ELS1B                  ELS1A         0   0

0x0069    TPM2C1VH  Bit 15  14          13  12          11               10            9   Bit 8

0x006A    TPM2C1VL  Bit 7   6           5   4                     3      2             1   Bit 0

0x006B    Reserved  —       —           —   —           —                —             —   —

0x006C    RTCSC     RTIF        RTCLKS      RTIE                                RTCPS

0x006D    RTCCNT                                RTCCNT

0x006E    RTCMOD                                RTCMOD

0x006F -  Reserved  —       —           —   —           —                —             —   —

0x007F              —       —           —   —           —                —             —   —

                            MC9S08SH32 Series Data Sheet, Rev. 3

42                                                                              Freescale  Semiconductor
                                                                                               Chapter 4 Memory

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 0x1800.

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

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

0x1800    SRS             POR           PIN   COP     ILOP        ILAD             0        LVD             0

0x1801    SBDFR           0             0     0       0                  0         0        0           BDFR

0x1802    SOPT1                   COPT        STOPE   0                  0         IICPS   BKGDPE       RSTPE

0x1803    SOPT2           COPCLKS  COPW       0       ACIC     T2CH1PS        T2CH0PS      T1CH1PS  T1CH0PS

0x1804 –  Reserved        —             —     —       —                  —         —        —           —

0x1805                    —             —     —       —                  —         —        —           —

0x1806    SDIDH           0             —     —       —           ID11             ID10     ID9         ID8

0x1807    SDIDL           ID7           ID6   ID5     ID4                ID3       ID2      ID1         ID0

0x1808    Reserved        —             —     —       —                  —         —        —           —

0x1809    SPMSC1          LVWF     LVWACK     LVWIE   LVDRE    LVDSE               LVDE     0           BGBE

0x180A    SPMSC2          0             0     LVDV    LVWV        PPDF          PPDACK      —           PPDC

0x180B–   Reserved        —             —     —       —                  —         —        —           —

0x180F                    —             —     —       —                  —         —        —           —

0x1810    DBGCAH          Bit 15        14    13      12                 11        10       9           Bit 8

0x1811    DBGCAL          Bit 7         6     5       4                  3         2        1           Bit 0

0x1812    DBGCBH          Bit 15        14    13      12                 11        10       9           Bit 8

0x1813    DBGCBL          Bit 7         6     5       4                  3         2        1           Bit 0

0x1814    DBGFH           Bit 15        14    13      12                 11        10       9           Bit 8

0x1815    DBGFL           Bit 7         6     5       4                  3         2        1           Bit 0

0x1816    DBGC            DBGEN         ARM   TAG     BRKEN       RWA              RWAEN    RWB     RWBEN

0x1817    DBGT            TRGSEL   BEGIN      0       0           TRG3             TRG2     TRG1        TRG0

0x1818    DBGS            AF            BF    ARMF    0           CNT3             CNT2     CNT1        CNT0

0x1819–   Reserved        —             —     —       —                  —         —        —           —

0x181F                    —             —     —       —                  —         —        —           —

0x1820    FCDIV           DIVLD    PRDIV8                                     DIV

0x1821    FOPT            KEYEN    FNORED     0       0                  0         0               SEC

0x1822    Reserved        —             —     —       —                  —         —        —           —

0x1823    FCNFG           0             0     KEYACC  0                  0         0        0               0

0x1824    FPROT                                       FPS                                               FPDIS

0x1825    FSTAT           FCBEF         FCCF  FPVIOL  FACCERR            0      FBLANK      0               0

0x1826    FCMD                                              FCMD

0x1827–   Reserved        —             —     —       —                  —         —        —           —

0x183F                    —             —     —       —                  —         —        —           —

0x1840    PTAPE           PTAPE7   PTAPE6     PTAPE5  PTAPE4   PTAPE3              PTAPE2   PTAPE1  PTAPE0

0x1841    PTASE           PTASE7   PTASE6     PTASE5  PTASE4   PTASE3              PTASE2   PTASE1  PTASE0

0x1842    PTADS           PTADS7   PTADS6     PTADS5  PTADS4   PTADS3              PTADS2   PTADS1  PTADS0

0x1843    Reserved        —             —     —       —                  —         —        —           —

0x1844    PTASC           0             0     0       0           PTAIF            PTAACK   PTAIE   PTAMOD

                                   MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                        43
Chapter 4  Memory

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

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

0x1845     PTAPS           0           0       0           0        PTAPS3      PTAPS2    PTAPS1  PTAPS0

0x1846     PTAES           0           0       0           0        PTAES3      PTAES2    PTAES1  PTAES0

0x1847     Reserved        —           —       —           —                 —         —  —       —

0x1848     PTBPE           PTBPE7      PTBPE6  PTBPE5      PTBPE4   PTBPE3      PTBPE2    PTBPE1  PTBPE0

0x1849     PTBSE           PTBSE7      PTBSE6  PTBSE5      PTBSE4   PTBSE3      PTBSE2    PTBSE1  PTBSE0

0x184A     PTBDS           PTBDS7      PTBDS6  PTBDS5      PTBDS4   PTBDS3      PTBDS2    PTBDS1  PTBDS0

0x184B     Reserved        —           —       —           —                 —         —  —       —

0x184C     PTBSC           0           0       0           0        PTBIF       PTBACK    PTBIE   PTBMOD

0x184D     PTBPS           0           0       0           0        PTBPS3      PTBPS2    PTBPS1  PTBPS0

0x184E     PTBES           0           0       0           0        PTBES3      PTBES2    PTBES1  PTBES0

0x184F     Reserved        —           —       —           —                 —         —  —       —

0x1850     PTCPE           PTCPE7      PTCPE6  PTCPE5      PTCPE4   PTCPE3      PTCPE2    PTCPE1  PTCPE0

0x1851     PTCSE           PTCSE7      PTCSE6  PTCSE5      PTCSE4   PTCSE3      PTCSE2    PTCSE1  PTCSE0

0x1852     PTCDS           PTCDS7      PTCDS6  PTCDS5      PTCDS4   PTCDS3      PTCDS2    PTCDS1  PTCDS0

0x1853     GNGC            GNGPS7      GNGPS6  GNGPS5      GNGPS4   GNGPS3      GNGPS2    GNGPS1  GNGEN

0x1854     Reserved        —           —       —           —                 —         1  1       1

0x1855     Reserved        —           —       —           —                 —         1  1       1

0x1856     Reserved        —           —       —           —                 —         0  0       0

0x1857–    Reserved        —           —       —           —                 —         —  —       —

0x185F                     —           —       —           —                 —         —  —       —

                                       MC9S08SH32 Series Data Sheet, Rev. 3

44                                                                                        Freescale Semiconductor
                                                                                   Chapter 4 Memory

Nonvolatile FLASH registers, shown in Table 4-4, are located in the FLASH memory. These registers

include an 8-byte backdoor key, NVBACKKEY, which 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.

                                Table 4-4. Nonvolatile Register Summary

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

0xFFAE    NVFTRIM        —      —       —                      —          —  —  —                    FTRIM

0xFFAF    NVTRIM                                                    TRIM

0xFFB0 –  NVBACKKEY                        8-Byte Comparison Key

0xFFB7

0xFFB8 –  Reserved       —      —       —                      —          —  —  —                       —

0xFFBC

0xFFBD    NVPROT                                               FPS                                   FPDIS

0xFFBE    Reserved       —      —       —                      —          —  —  —                       —

0xFFBF    NVOPT          KEYEN  FNORED  —                      —          —  —                  SEC

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 (SEC) to the unsecured state (1:0).

                                MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                      45
Chapter 4 Memory

4.4  RAM

The MC9S08SH32 Series includes static RAM. The locations in RAM below 0x0100 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 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 (VRAM).

For compatibility with M68HC05 MCUs, the HCS08 resets the stack pointer to 0x00FF. In the

MC9S08SH32 Series, it is usually best to reinitialize 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 Semiconductor-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.6, “Security”, for a detailed

description of the security feature.

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

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.

                                      MC9S08SH32 Series Data Sheet, Rev. 3

46                                                                          Freescale Semiconductor
                                                                                                  Chapter 4 Memory

4.5.1      Features

Features of the FLASH memory include:

•      FLASH size

       — MC9S08SH32: 32,768 bytes (64 pages of 512 bytes each)

       — MC9S08SH16: 16,384 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 and vector redirection

•      Security feature for FLASH and RAM

•      Auto power-down for low-frequency read accesses

4.5.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 Section 4.7.1, “FLASH Clock Divider Register (FCDIV)”). 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 are 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                         4000                            20 ms

           Mass erase                         20,000                          100 ms

           1  Excluding start/end overhead

                                    MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                        47
Chapter 4 Memory

4.5.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 block of FLASH that may be erased.

                                           NOTE

                  Do not program any byte in the FLASH more than once after a successful

                  erase operation. Reprogramming bits to a byte that 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 (0x05), byte program (0x20), burst program (0x25), page erase (0x40), and mass erase

        (0x41). 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 obeyed or the command will not be accepted. This minimizes the

possibility of any unintended changes 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.

                         MC9S08SH32 Series Data Sheet, Rev. 3

48                                                                                            Freescale Semiconductor
                                                                                                          Chapter 4 Memory

                             WRITE TO FCDIV (Note 1)             Note 1: Required only once after reset.

       FLASH PROGRAM AND        START

       ERASE FLOW

                             FACCERR ?                 0

                                1

                             CLEAR ERROR

                             WRITE TO FLASH

                          TO BUFFER ADDRESS AND DATA

                             WRITE COMMAND TO FCMD

                             WRITE 1 TO FCBEF                    Note 2: Wait at least four bus cycles

                             TO LAUNCH COMMAND                   before checking FCBEF or FCCF.

                             AND CLEAR FCBEF (Note 2)

                             FPVIOL OR                 YES       ERROR EXIT

                             FACCERR ?

                                NO

                          0     FCCF ?

                                1

                                DONE

                         Figure 4-2. FLASH Program and Erase Flowchart

4.5.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 these two conditions are met:

•      The next burst program command has been queued before the current program operation has

       completed.

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

                          MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                   49
Chapter 4 Memory

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

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.

                       WRITE TO FCDIV (Note 1)              Note 1: Required only once after reset.

    FLASH BURST        START

    PROGRAM FLOW

                       FACCERR ?                       0

                       1

                       CLEAR ERROR

                       FCBEF ?                         0

                       1

                       WRITE TO FLASH

                  TO BUFFER ADDRESS AND DATA

                  WRITE COMMAND (0x25) TO FCMD

                       WRITE 1 TO FCBEF                     Note 2: Wait at least four bus cycles before

                       TO LAUNCH COMMAND                    checking FCBEF or FCCF.

                       AND CLEAR FCBEF (Note 2)

                       FPVIO OR                        YES  ERROR EXIT

                       FACCERR ?

                       NO

                  YES  NEW BURST COMMAND ?

                                                   NO

                  0    FCCF ?

                       1

                       DONE

                  Figure 4-3. FLASH Burst Program Flowchart

                  MC9S08SH32 Series Data Sheet, Rev. 3

50                                                                                   Freescale Semiconductor
                                                                             Chapter 4 Memory

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

•      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 (0x05, 0x20, 0x25, 0x40, or 0x41)

       to FCMD

•      Writing 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 (0x20, 0x25, or 0x40) 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.5.6  FLASH Block Protection

The block protection feature prevents the protected region of FLASH from program or erase changes.

Block protection is controlled through the FLASH protection register (FPROT). When enabled, block

protection begins at any 512 byte boundary below the last address of FLASH, 0xFFFF. (See Section 4.7.4,

“FLASH Protection Register (FPROT and NVPROT)”).

After exit from reset, FPROT is loaded with the contents of the NVPROT location, which is in the

nonvolatile register block of the FLASH memory. FPROT cannot be changed directly from application

software so a runaway program cannot alter the block protection settings. Because NVPROT is within the

last 512 bytes of FLASH, if any amount of memory is protected, NVPROT is itself protected and cannot

be altered (intentionally or unintentionally) by the application software. FPROT can be written through

background debug commands, which allows a way to erase and reprogram a protected FLASH memory.

The block protection mechanism is illustrated in Figure 4-4. The FPS bits are used as the upper bits of the

last address of unprotected memory. This address is formed by concatenating FPS7:FPS1 with logic 1 bits

as shown. For example, to protect the last 1536 bytes of memory (addresses 0xFA00 through 0xFFFF), the

FPS bits must be set to 1111 100, which results in the value 0xF9FF as the last address of unprotected

memory. In addition to programming the FPS bits to the appropriate value, FPDIS (bit 0 of NVPROT)

                                  MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                      51
Chapter 4 Memory

must be programmed to logic 0 to enable block protection. Therefore the value 0xF8 must be programmed

into NVPROT to protect addresses 0xFA00 through 0xFFFF.

          FPS7         FPS6  FPS5  FPS4  FPS3  FPS2  FPS1  1   1         1   1   1   1   1   1   1

                  A15  A14   A13   A12   A11   A10   A9    A8  A7        A6  A5  A4  A3  A2  A1  A0

                                   Figure 4-4. Block Protection Mechanism

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.

4.5.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 0xFFBF 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 0xFFBD. All

of the interrupt vectors (memory locations 0xFFC0–0xFFFD) are redirected, though the reset vector

(0xFFFE:FFFF) is not.

For example, if 512 bytes of FLASH are protected, the protected address region is from 0xFE00 through

0xFFFF. The interrupt vectors (0xFFC0–0xFFFD) are redirected to the locations 0xFDC0–0xFDFD. Now,

if an SPI interrupt is taken for instance, the values in the locations 0xFDE0:FDE1 are used for the vector

instead of the values in the locations 0xFFE0: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.6       Security

The MC9S08SH32 Series 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 and the other three combinations engage security. Notice the erased state (1:1) makes

                                   MC9S08SH32 Series Data Sheet, Rev. 3

52                                                                                       Freescale Semiconductor
                                                                                            Chapter 4 Memory

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 of unsecured resources.

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

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 secure memory (either RAM or FLASH), so it cannot be entered

through background commands without the cooperation of a secure user program.

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 exactly 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 taking 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.7  FLASH Registers and Control Bits

The FLASH module has nine 8-bit registers in the high-page register space, two locations (NVOPT,

NVPROT) in the nonvolatile register space in FLASH memory are copied into corresponding high-page

                                     MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                    53
Chapter 4 Memory

control registers (FOPT, FPROT) 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 Semiconductor-provided

equate or header file normally is used to translate these names into the appropriate absolute addresses.

4.7.1       FLASH Clock Divider Register (FCDIV)

Bit 7 of this register is a read-only flag. Bits 6: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.

               7   6              5                        4                     3            2        1                       0

       R    DIVLD

                   PRDIV8                                                           DIV

    W

    Reset   0      0              0                        0                     0            0        0                       0

                   = Unimplemented or Reserved

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

                                  Table 4-6. FCDIV Register Field Descriptions

    Field                                                     Description

    7       Divisor Loaded Status Flag — When set, this read-only status flag indicates that the FCDIV register has been

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

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

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

    6       Prescale (Divide) FLASH Clock by 8

    PRDIV8  0     Clock input to the FLASH clock divider is the bus rate clock.

            1     Clock input to the FLASH clock divider is the bus rate clock divided by 8.

    5:0     Divisor for FLASH Clock Divider — The FLASH clock divider divides the bus rate clock (or the bus rate clock

    DIV     divided by 8 if PRDIV8 = 1) by the value in the 6-bit DIV 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. See Equation 4-1 and Equation 4-2.

                                  if PRDIV8 = 0 — fFCLK = fBus ÷ (DIV + 1)                                      Eqn. 4-1

                      if PRDIV8 = 1 — fFCLK = fBus ÷ (8 × (DIV + 1))                                            Eqn. 4-2

Table 4-7   shows the appropriate values for PRDIV8 and DIV for selected bus frequencies.

                                  MC9S08SH32 Series Data Sheet, Rev. 3

54                                                                                                     Freescale Semiconductor
                                                                                                              Chapter 4 Memory

                                    Table 4-7. FLASH      Clock Divider Settings

                 fBus     PRDIV8                  DIV        fFCLK        Program/Erase Timing Pulse

                          (Binary)             (Decimal)                  (5 μs Min, 6.7 μs Max)

                 20 MHz      1                    12      192.3 kHz                         5.2 μs

                 10 MHz      0                    49         200 kHz                        5 μs

                 8 MHz       0                    39         200 kHz                        5 μs

                 4 MHz       0                    19         200 kHz                        5 μs

                 2 MHz       0                    9          200 kHz                        5 μs

                 1 MHz       0                    4          200 kHz                        5 μs

                 200 kHz     0                    0          200 kHz                        5 μs

                 150 kHz     0                    0          150 kHz                        6.7 μs

4.7.2      FLASH Options Register (FOPT and NVOPT)

During reset, the contents of the nonvolatile location NVOPT are copied from FLASH into FOPT. 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.

              7           6                    5          4           3                     2              1           0

       R   KEYEN          FNORED               —          —           —                     —       SEC01       SEC00

W

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

                         = Unimplemented or Reserved

                                  Figure 4-6. FLASH Options Register (FOPT)

                                  Table 4-8. FOPT Register Field Descriptions

Field                                                        Description

7          Backdoor Key Mechanism Enable — When this bit is 0, the backdoor key mechanism cannot be used to

KEYEN      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.6, “Security.”

           0     No backdoor key access allowed.

           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.

6          Vector Redirection Disable — When this bit is 1, then vector redirection is disabled.

FNORED     0     Vector redirection enabled.

           1     Vector redirection disabled.

1:0        Security State Code — This 2-bit field determines the security state of the MCU as shown in Table 4-9. When

SEC0[1:0]  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. SEC01:SEC00 changes to 1:0 after successful

           backdoor key entry or a successful blank check of FLASH.

           For more detailed information about security, refer to Section 4.6, “Security.”

                                    MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                   55
Chapter 4  Memory

                            Table 4-9. Security States1

                         SEC01:SEC00                             Description

                         0:0                                     secure

                         0:1                                     secure

                         1:0                                     unsecured

                         1:1                                     secure

                      1  SEC01:SEC00 changes to 1:0 after successful backdoor

                         key entry or a successful blank check of FLASH.

4.7.3       FLASH  Configuration Register (FCNFG)

               7   6     5                      4                3                 2              1                    0

       R    0      0                            0                0                 0              0                    0

                         KEYACC

    W

    Reset   0      0     0                      0                0                 0              0                    0

                   = Unimplemented or Reserved

                      Figure 4-7. FLASH Configuration Register (FCNFG)

                         Table 4-10. FCNFG Register Field Descriptions

    Field                                               Description

    5       Enable Writing of Access Key — This bit enables writing of the backdoor comparison key. For more detailed

    KEYACC  information about the backdoor key mechanism, refer to Section 4.6, “Security.”

            0      Writes to 0xFFB0–0xFFB7 are interpreted as the start of a FLASH programming or erase command.

            1      Writes to NVBACKKEY (0xFFB0–0xFFB7) are interpreted as comparison key writes.

4.7.4       FLASH Protection Register (FPROT and NVPROT)

During reset, the contents of the nonvolatile location NVPROT are copied from FLASH into FPROT. This

register can be read at any time. If FPDIS = 0, protection can be increased (that is, a smaller value of FPS

can be written). If FPDIS = 1, writes do not change protection.

               7   6     5                      4                3                 2              1                    0

       R                                        FPS(1)                                                            FPDIS(1)

    W

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

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

                         Figure 4-8. FLASH Protection Register (FPROT)

                         MC9S08SH32 Series Data Sheet, Rev. 3

56                                                                                                Freescale Semiconductor
                                                                                                       Chapter 4 Memory

                               Table 4-11. FPROT Register Field Descriptions

Field                                                    Description

7:1       FLASH Protect Select Bits — When FPDIS = 0, this 7-bit field determines the ending address of unprotected

FPS       FLASH locations at the high address end of the FLASH. Protected FLASH locations cannot be erased or

          programmed.

0         FLASH Protection Disable

FPDIS     0     FLASH block specified by [7:1] is block protected (program and erase not allowed).

          1     No FLASH block is protected.

4.7.5     FLASH Status Register (FSTAT)

             7           6                5           4                      3     2                1               0

       R                 FCCF                                                0     FBLANK           0               0

          FCBEF                           FPVIOL      FACCERR

W

Reset     1              1                0           0                      0     0                0               0

                         = Unimplemented or Reserved

                               Figure 4-9. FLASH Status Register (FSTAT)

                               Table 4-12. FSTAT Register Field Descriptions

Field                                                    Description

7         FLASH Command Buffer Empty Flag — The FCBEF bit is used to launch commands. It also indicates that the

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

          0     Command buffer is full (not ready for additional commands).

          1     A new burst program command can be written to the command buffer.

6         FLASH Command Complete Flag — FCCF is set automatically when the command buffer is empty and no

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

          0     Command in progress

          1     All commands complete

5         Protection Violation Flag — FPVIOL is set automatically when a command is written that attempts to erase or

FPVIOL    program a location in a protected block (the erroneous command is ignored). FPVIOL is cleared by writing a 1 to

          FPVIOL.

          0     No protection violation.

          1     An attempt was made to erase or program a protected location.

                                          MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                    57
Chapter 4 Memory

                   Table 4-12. FSTAT Register Field Descriptions (continued)

    Field                                              Description

    4       Access Error Flag — FACCERR is set automatically when the proper command sequence is not obeyed exactly

FACCERR     (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.5.5, “Access Errors.” FACCERR is cleared by

            writing a 1 to FACCERR. Writing a 0 to FACCERR has no meaning or effect.

            0     No access error.

            1     An access error has occurred.

    2       FLASH Verified as All Blank (erased) Flag — FBLANK is set automatically at the conclusion of a blank check

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

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

                  completely erased.

            1     After a blank check command is completed and FCCF = 1, FBLANK = 1 indicates the FLASH array is

                  completely erased (all 0xFF).

4.7.6       FLASH Command Register (FCMD)

Only five command codes are recognized in normal user modes as shown in Table 4-13. Refer to Section

4.5.3, “Program and Erase Command Execution,” for a detailed discussion of FLASH programming and

erase operations.

               7   6                             5  4              3                  2        1                      0

       R    0      0                             0  0              0                  0        0                      0

    W                                                  FCMD

    Reset   0      0                             0  0              0                  0        0                      0

                                    Figure 4-10. FLASH Command Register (FCMD)

                                      Table 4-13. FLASH Commands

                                      Command          FCMD                 Equate File Label

                                      Blank check      0x05                 mBlank

                                    Byte program       0x20                 mByteProg

                   Byte program — burst mode           0x25                 mBurstProg

                   Page erase (512 bytes/page)         0x40                 mPageErase

                   Mass erase (all FLASH)              0x41                 mMassErase

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.

                                      MC9S08SH32 Series Data Sheet, Rev. 3

58                                                                                             Freescale Semiconductor
Chapter 5

Resets, Interrupts, and General System Control

5.1  Introduction

This section discusses basic reset and interrupt mechanisms and the various sources of reset and interrupt

in the MC9S08SH32 Series. Some interrupt sources from peripheral modules are discussed in greater

detail within other sections of this data sheet. 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 are not part of on-chip peripheral systems with their own chapters.

5.2  Features

Reset and interrupt features include:

•    Multiple sources of reset for flexible system configuration and reliable operation

•    System reset status register (SRS) to indicate source of most recent reset

•    Separate interrupt vector for each module (reduces polling overhead) (see Table 5-2)

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 (0xFFFE:0xFFFF). On-chip peripheral modules are disabled and I/O pins are initially

configured as general-purpose high-impedance inputs with pull-up 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 0x00FF at reset.

The MC9S08SH32 Series has the following sources for reset:

•    Power-on reset (POR)

•    External pin reset (PIN) - enabled using RSTPE in SOPT1

•    Low-voltage detect (LVD)

•    Computer operating properly (COP) timer

•    Illegal opcode detect (ILOP)

•    Illegal address detect (ILAD) - access of any address in memory map that is listed as

     unimplemented will produce an illegal address reset

•    Background debug forced reset

Each of these sources, with the exception of the background debug forced reset, has an associated bit in

the system reset status register (SRS).

                                       MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                       59
Chapter 5 Resets, Interrupts, and General System Control

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 counter periodically. If the application program gets lost and fails to reset the COP counter

before it times out, a system reset is generated to force the system back to a known starting point.

After any reset, the COP watchdog is enabled (see Section 5.7.4, “System Options Register 1 (SOPT1),”

for additional information). If the COP watchdog is not used in an application, it can be disabled by

clearing COPT bits in SOPT1.

The COP counter is reset by writing 0x0055 and 0x00AA (in this order) to the address of SRS during the

selected timeout period. Writes do not affect the data in the read-only SRS. As soon as the write sequence

is done, the COP timeout period is restarted. If the program fails to do this during the time-out period, the

MCU will reset. Also, if any value other than 0x0055 or 0x00AA is written to SRS, the MCU is

immediately reset.

The COPCLKS bit in SOPT2 (see Section 5.7.5, “System Options Register 2 (SOPT2),” for additional

information) selects the clock source used for the COP timer. The clock source options are either the bus

clock or an internal 1-kHz clock source. With each clock source, there are three associated time-outs

controlled by the COPT bits in SOPT1. Table 5-1 summaries the control functions of the COPCLKS and

COPT bits. The COP watchdog defaults to operation from the 1-kHz clock source and the longest time-out

(210 cycles).

                                   Table 5-1. COP Configuration Options

          Control Bits             Clock Source           COP Window1 Opens  COP Overflow Count

    COPCLKS         COPT[1:0]                             (COPW = 1)

     N/A                      0:0  N/A                    N/A                COP is disabled

     0                        0:1  1 kHz                  N/A                25 cycles (32 ms2)

     0                        1:0  1 kHz                  N/A                28 cycles (256 ms1)

     0                        1:1  1 kHz                  N/A                210 cycles (1.024 s1)

     1                        0:1  Bus                    6144 cycles        213 cycles

     1                        1:0  Bus                    49,152 cycles      216 cycles

     1                        1:1  Bus                    196,608 cycles     218 cycles

1   Windowed COP operation requires the user to clear the COP timer in the last 25% of the selected timeout period. This column

    displays the minimum number of clock counts required before the COP timer can be reset when in windowed COP mode

    (COPW = 1).

2   Values shown in milliseconds based on tLPO = 1 ms. See tLPO in the appendix Section A.12.1, “Control Timing,” for the

    tolerance of this value.

When the bus clock source is selected, windowed COP operation is available by setting COPW in the

SOPT2 register. In this mode, writes to the SRS register to clear the COP timer must occur in the last 25%

of the selected timeout period. A premature write immediately resets the MCU. When the 1-kHz clock

source is selected, windowed COP operation is not available.

                                   MC9S08SH32 Series Data Sheet, Rev. 3

60                                                                           Freescale Semiconductor
                                                                 Chapter 5 Resets, Interrupts, and General System Control

The COP counter is initialized by the first writes to the SOPT1 and SOPT2 registers after any system reset.

Subsequent writes to SOPT1 and SOPT2 have no effect on COP operation. Even if the application will use

the reset default settings of COPT, COPCLKS, and COPW bits, the user should write to the write-once

SOPT1 and SOPT2 registers during reset initialization to lock in the settings. This will prevent accidental

changes if the application program gets lost.

The write to SRS that services (clears) the COP counter 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.

If the bus clock source is selected, the COP counter does not increment while the MCU is in background

debug mode or while the system is in stop mode. The COP counter resumes when the MCU exits

background debug mode or stop mode.

If the 1-kHz clock source is selected, the COP counter is re-initialized to zero upon entry to either

background debug mode or stop mode and begins from zero upon exit from background debug mode or

stop mode.

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 unless the local interrupt enable is a 1 to enable the interrupt and 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

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.

When the CPU receives a qualified interrupt request, it completes the current instruction before responding

to the interrupt. The interrupt sequence obeys 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

can 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

                              MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                    61
Chapter 5 Resets, Interrupts, and General System Control

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 from the

stack.

                                                          NOTE

                  For compatibility with M68HC08 devices, 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 immediately before the RTI that is used to return from the ISR.

If more than one interrupt is pending when the I bit is cleared, the highest priority source is serviced first

(see Table 5-2).

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.

                  UNSTACKING                                 TOWARD LOWER ADDRESSES

                     ORDER

                            7                             ²                0

                                                                                             SP AFTER

                                                                                             INTERRUPT STACKING

                  5      1                   CONDITION CODE REGISTER

                  4      2                                ACCUMULATOR

                  3      3                   INDEX REGISTER (LOW BYTE X)*

                  2      4                   PROGRAM COUNTER HIGH

                  1      5                   PROGRAM COUNTER LOW                             SP BEFORE

                                                                                             THE INTERRUPT

                                                          ²

                  STACKING                                ²

                  ORDER                                   ²  TOWARD HIGHER ADDRESSES

                            * 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 recovered from the stack.

                         MC9S08SH32 Series Data Sheet, Rev. 3

62                                                                                                          Freescale Semiconductor
                                                                Chapter 5 Resets, Interrupts, and General System Control

The status flag corresponding to the interrupt source must be acknowledged (cleared) before returning

from the ISR. Typically, the flag is 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 Pin (IRQ)

External interrupts are managed by the IRQ status and control register, IRQSC. 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 IRQSC must be 1 in order for the IRQ pin to act as the interrupt

request (IRQ) input. 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.

The IRQ pin, when enabled, defaults to use an internal pull device (IRQPDD = 0), the device is a pull-up

or pull-down depending on the polarity chosen. If the user desires to use an external pull-up or pull-down,

the IRQPDD can be written to a 1 to turn off the internal device.

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.

                                                NOTE

         This pin does not contain a clamp diode to VDD and should not be driven

         above VDD.

         The voltage measured on the internally pulled up IRQ pin will not be pulled

         to VDD. The internal gates connected to this pin are pulled to VDD. If the

         IRQ pin is required to drive to a VDD level an external pullup should be

         used.

5.5.2.2  Edge and Level Sensitivity

The IRQMOD control bit reconfigures the detection logic so it detects edge events and pin levels. In the

edge and level 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-2 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.

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                   63
Chapter 5 Resets, Interrupts, and General System Control

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.

                                       Table 5-2. Vector Summary

Vector    Vector  Address        Vector                   Module   Source           Enable             Description

Priority  Number  (High/Low)     Name

          31      0xFFC0/0xFFC1  —                        —        —                —                      —

Lowest    30      0xFFC2/0xFFC3  Vacmp                    ACMP     ACF              ACIE               Analog comparator

          29      0xFFC4/0xFFC5  —                        —        —                —                      —

          28      0xFFC6/0xFFC7  —                        —        —                —                      —

          27      0xFFC8/0xFFC9  —                        —        —                —                      —

          26      0xFFCA/0xFFCB  Vmtim                    MTIM     TOF              TOIE               MTIM overflow

          25      0xFFCC/0xFFCD  Vrtc                     RTC      RTIF             RTIE               Real-time interrupt

          24      0xFFCE/0xFFCF  Viic                     IIC      IICIS            IICIE              IIC control

          23      0xFFD0/0xFFD1  Vadc                     ADC      COCO             AIEN                   ADC

          22      0xFFD2/0xFFD3  —                        —        —                —                      —

          21      0xFFD4/0xFFD5  Vportb                   Port B   PTBIF            PTBIE              Port B Pins

          20      0xFFD6/0xFFD7  Vporta                   Port A   PTAIF            PTAIE              Port A Pins

          19      0xFFD8/0xFFD9  —                        —        —                —                      —

          18      0xFFDA/0xFFDB  Vscitx                   SCI      TDRE, TC         TIE, TCIE          SCI transmit

                                                                   IDLE, RDRF,      ILIE, RIE,

          17      0xFFDC/0xFFDD  Vscirx                   SCI      LDBKDIF,         LBKDIE,            SCI receive

                                                                   RXEDGIF          RXEDGIE

          16      0xFFDE/0xFFDF  Vscierr                  SCI      OR, NF,          ORIE, NFIE,            SCI error

                                                                   FE, PF           FEIE, PFIE

          15      0xFFE0/0xFFE1  Vspi                     SPI      SPIF, MODF,      SPIE, SPIE, SPTIE      SPI

                                                                   SPTEF

          14      0xFFE2/0xFFE3  Vtpm2ovf                 TPM2     TOF              TOIE               TPM2 overflow

          13      0xFFE4/0xFFE5  Vtpm2ch1                 TPM2     CH1F             CH1IE              TPM2 channel 1

          12      0xFFE6/0xFFE7  Vtpm2ch0                 TPM2     CH0F             CH0IE              TPM2 channel 0

          11      0xFFE8/0xFFE9  Vtpm1ovf                 TPM1     TOF              TOIE               TPM1 overflow

          10      0xFFEA/0xFFEB  —                        —        —                —                      —

          9       0xFFEC/0xFFED  —                        —        —                —                      —

          8       0xFFEE/0xFFEF  —                        —        —                —                      —

          7       0xFFF0/0xFFF1  —                        —        —                —                      —

          6       0xFFF2/0xFFF3  Vtpm1ch1                 TPM1     CH1F             CH1IE              TPM1 channel 1

          5       0xFFF4/0xFFF5  Vtpm1ch0                 TPM1     CH0F             CH0IE              TPM1 channel 0

          4       0xFFF6/0xFFF7  —                        —        —                —                      —

          3       0xFFF8/0xFFF9  Vlvd                     System   LVWF             LVWIE              Low-voltage warning

                                                          control

          2       0xFFFA/0xFFFB  Virq                     IRQ      IRQF             IRQIE                  IRQ pin

          1       0xFFFC/0xFFFD  Vswi                     Core     SWI Instruction  —                  Software interrupt

                                                                   COP,             COPE               Watchdog timer

                                                          System   LVD,             LVDRE              Low-voltage detect

          0       0xFFFE/0xFFFF  Vreset                   control  RESET pin,       —                  External pin

Highest                                                            Illegal opcode,  —                  Illegal opcode

                                                                   Illegal address  —                  Illegal address

                                 MC9S08SH32 Series Data Sheet, Rev. 3

64                                                                                               Freescale Semiconductor
                                             Chapter 5 Resets, Interrupts, and General System Control

5.6         Low-Voltage Detect (LVD) System

The MC9S08SH32 Series includes a system to protect against low voltage conditions in order to protect

memory contents and control MCU system states during supply voltage variations. The system is

comprised of a power-on reset (POR) circuit and a LVD circuit with trip voltages for warning and

detection. The LVD circuit is enabled when LVDE in SPMSC1 is set to 1. The LVD is disabled upon

entering any of the stop modes unless LVDSE is set in SPMSC1. If LVDSE and LVDE are both set, then

the MCU cannot enter stop2, and the current consumption in stop3 with the LVD enabled will be higher.

5.6.1       Power-On Reset Operation

When power is initially applied to the MCU, or when the supply voltage drops below the power-on reset

rearm voltage level, VPOR, the POR circuit will cause a reset condition. As the supply voltage rises, the

LVD circuit will hold the MCU in reset until the supply has risen above the low voltage detection low

threshold, VLVDL. Both the POR bit and the LVD bit in SRS are set following a POR.

5.6.2       Low-Voltage Detection (LVD) Reset Operation

The LVD can be configured to generate a reset upon detection of a low voltage condition by setting

LVDRE to 1. The low voltage detection threshold is determined by the LVDV bit. After an LVD reset has

occurred, the LVD system will hold the MCU in reset until the supply voltage has risen above the low

voltage detection threshold. The LVD bit in the SRS register is set following either an LVD reset or POR.

5.6.3       Low-Voltage Warning (LVW) Interrupt Operation

The LVD system has a low voltage warning flag to indicate to the user that the supply voltage is

approaching the low voltage condition. When a low voltage warning condition is detected and is

configured for interrupt operation (LVWIE set to 1), LVWF in SPMSC1 will be set and an LVW interrupt

request will occur.

5.7         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 Table 4-2 and Table 4-3 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 SOPT1 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.”

                                  MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                         65
Chapter 5 Resets, Interrupts, and General System Control

5.7.1       Interrupt Pin Request Status and Control Register (IRQSC)

This direct page register includes status and control bits, which are used to configure the IRQ function,

report status, and acknowledge IRQ events.

               7      6                          5         4                  3                  2        1               0

       R    0                                                                 IRQF   0

                      IRQPDD           IRQEDG             IRQPE                                         IRQIE       IRQMOD

    W                                                                                IRQACK

    Reset   0         0                          0         0                  0      0                    0               0

                      = Unimplemented or Reserved

                      Figure 5-2. Interrupt Request Status and Control Register (IRQSC)

                                   Table 5-3. IRQSC Register Field Descriptions

    Field                                                           Description

    6       Interrupt Request (IRQ) Pull Device Disable — This read/write control bit is used to disable the internal pullup

    IRQPDD  device when the IRQ pin is enabled (IRQPE = 1) allowing for an external device to be used.

            0     IRQ pull device enabled if IRQPE = 1.

            1     IRQ pull device disabled if IRQPE = 1.

    5       Interrupt Request (IRQ) Edge Select — This read/write control bit is used to select the polarity of edges or

    IRQEDG  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. When IRQEDG = 1 and the internal pull device is enabled, the pull-up device is

            reconfigured as an optional pull-down device.

            0     IRQ is falling edge or falling edge/low-level sensitive.

            1     IRQ is rising edge or rising edge/high-level sensitive.

    4       IRQ Pin Enable — This read/write control bit enables the IRQ pin function. When this bit is set the IRQ pin can

    IRQPE   be used as an interrupt request.

            0     IRQ pin function is disabled.

            1     IRQ pin function is enabled.

    3       IRQ Flag — This read-only status bit indicates when an interrupt request event has occurred.

    IRQF    0     No IRQ request.

            1     IRQ event detected.

    2       IRQ Acknowledge — This write-only bit is used to acknowledge interrupt request events (write 1 to clear IRQF).

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

    1       IRQ Interrupt Enable — This read/write control bit determines whether IRQ events generate an interrupt

    IRQIE   request.

            0     Interrupt request when IRQF set is disabled (use polling).

            1     Interrupt requested whenever IRQF = 1.

    0       IRQ Detection Mode — This read/write control bit selects either edge-only detection or edge-and-level

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

            0     IRQ event on falling edges or rising edges only.

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

                                       MC9S08SH32 Series Data Sheet, Rev. 3

66                                                                                                  Freescale Semiconductor
                                                                      Chapter 5 Resets, Interrupts, and General System Control

5.7.2      System Reset Status Register (SRS)

This high page register includes 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 causes a COP reset when the COP is enabled except the

values 0x55 and 0xAA. Writing a 0x55-0xAA sequence to this 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.

                   7     6                      5              4      3                      2         1                      0

       R   POR           PIN                    COP            ILOP   ILAD                   0         LVD                    0

   W                                     Writing 0x55, 0xAA to SRS address clears COP watchdog timer.

   POR:            1     0                      0              0      0                      0         1                      0

   LVR:            u1    0                      0              0      0                      0         1                      0

Any other          0     Note2                  Note2          Note2  Note2                  0         0                      0

   reset:

1  u = unaffected

2  Any of these reset sources that are active at the time of reset entry will cause the corresponding bit(s) to be set; bits

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

                                         Figure 5-3. System Reset Status (SRS)

                                         Table 5-4. SRS Register Field Descriptions

   Field                                                              Description

   7       Power-On Reset — Reset was caused by the power-on detection logic. Because the internal supply voltage was

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

           0          Reset not caused by POR.

           1          POR caused reset.

   6       External Reset Pin — Reset was caused by an active-low level on the external reset pin.

   PIN     0          Reset not caused by external reset pin.

           1          Reset came from external reset pin.

   5       Computer Operating Properly (COP) Watchdog — Reset was caused by the COP watchdog timer timing out.

   COP     This reset source can be blocked by COPE = 0.

           0          Reset not caused by COP timeout.

           1          Reset caused by COP timeout.

   4       Illegal Opcode — Reset was caused by an attempt to execute an unimplemented or illegal opcode. The STOP

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

           0          Reset not caused by an illegal opcode.

           1          Reset caused by an illegal opcode.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                          67
Chapter 5 Resets, Interrupts, and General System Control

                             Table 5-4. SRS Register Field Descriptions

    Field                                                    Description

    3       Illegal Address — Reset was caused by an attempt to access either data or an instruction at an unimplemented

    ILAD    memory address.

            0     Reset not caused by an illegal address

            1     Reset caused by an illegal address

    1       Low Voltage Detect — If the LVDRE bit is set and the supply drops below the LVD trip voltage, an LVD reset will

    LVD     occur. This bit is also set by POR.

            0     Reset not caused by LVD trip or POR.

            1     Reset caused by LVD trip or POR.

5.7.3       System Background Debug Force Reset Register (SBDFR)

This high page 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 0x00.

               7  6                          5            4  3                              2  1       0

       R    0     0                          0            0  0                              0  0       0

    W                                                                                             BDFR1

    Reset:  0     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)

                             Table 5-5. SBDFR Register Field Descriptions

    Field                                                    Description

    0       Background Debug Force Reset — A serial background command such as WRITE_BYTE can be used to allow

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

                                    MC9S08SH32 Series Data Sheet, Rev. 3

68                                                                                             Freescale Semiconductor
                                                                     Chapter 5 Resets, Interrupts, and General System Control

5.7.4         System Options Register 1 (SOPT1)

This high page register is a write-once register so only the first write after reset is honored. It can be read

at any time. Any subsequent attempt to write to SOPT1 (intentionally or unintentionally) is ignored to

avoid accidental changes to these sensitive settings. SOPT1 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.

                   7        6                    5          4                3     2                     1                     0

       R                                                    0                0

                      COPT                 STOPE                                   IICPS                 BKGDPE   RSTPE

   W

   Reset:          1        1                    0          0                0     0                     1             u(1)

   POR:            1        0                    0          0                0     0                     1                     0

   LVR:            1        0                    0          0                0     0                     1                     u

                         = Unimplemented or Reserved

                               Figure 5-5.          System  Options  Register   1  (SOPT1)

1  u = unaffected

                               Table 5-6. SOPT1 Register Field Descriptions

   Field                                                       Description

   7:6        COP Watchdog Timeout — These write-once bits select the timeout period of the COP. COPT along with

   COPT[1:0]  COPCLKS in SOPT2 defines the COP timeout period. See Table 5-1.

   5          Stop Mode Enable — This write-once bit is used to enable stop mode. If stop mode is disabled and a user

   STOPE      program attempts to execute a STOP instruction, an illegal opcode reset is forced.

              0       Stop mode disabled.

              1       Stop mode enabled.

   2          IIC Pin Select — This bit selects the location of the SDA and SCL pins of the IIC module.

   IICPS      0       SDA on PTA2, SCL on PTA3.

              1       SDA on PTB6, SCL on PTB7.

   1          Background Debug Mode Pin Enable — This write-once bit when set enables the PTA4/ACMPO/BKGD/MS

   BKGDPE     pin to function as BKGD/MS. When clear, the pin functions as one of its output-only alternative functions. This

              pin defaults to the BKGD/MS function following any MCU reset.

              0       PTA4/ACMPO/BKGD/MS pin functions as PTA4 or ACMPO.

              1       PTA4/ACMPO/BKGD/MS pin functions as BKGD/MS.

   0          RESET Pin Enable — This write-once bit when set enables the PTA5/IRQ/TCLK/RESET pin to function as

   RSTPE      RESET. When clear, the pin functions as one of its alternative functions. This pin defaults to a general-purpose

              input port function following a POR reset. When configured as RESET, the pin will be unaffected by LVR or other

              internal resets. When RSTPE is set, an internal pullup device is enabled on RESET.

              0       PTA5/IRQ/TCLK/RESET pin functions as PTA5, IRQ or TCLK.

              1       PTA5/IRQ/TCLK/RESET pin functions as RESET.

                                           MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                           69
Chapter 5 Resets, Interrupts, and General System Control

5.7.5       System Options Register 2 (SOPT2)

This high page register contains bits to configure MCU specific features on the                   MC9S08SH32  Series

devices.

               7      6                        5          4                           3  2        1                          0

       R    COPCLKS1  COPW1                    0

                                                          ACIC        T2CH1PS            T2CH0PS  T1CH1PS     T1CH0PS

    W

    Reset:  0         0                        0          0           0                  0        0                          0

                      = Unimplemented or Reserved

                         Figure 5-6.              System Options Register 2 (SOPT2)

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

                             Table 5-7. SOPT2 Register Field Descriptions

    Field                                                         Description

    7       COP Watchdog Clock Select — This write-once bit selects the clock source of the COP watchdog.

   COPCLKS  0     Internal 1-kHz clock is source to COP.

            1     Bus clock is source to COP.

    6       COP Window — This write-once bit selects the COP operation mode. When set, the 0x55-0xAA write sequence

    COPW    to the SRS register must occur in the last 25% of the selected period. Any write to the SRS register during the

            first 75% of the selected period will reset the MCU.

            0     Normal COP operation

            1     Window COP operation (only if COPCLKS = 1)

    4       Analog Comparator to Input Capture Enable— This bit connects the output of ACMP to TPM1 input channel 0.

    ACIC    0     ACMP output not connected to TPM1 input channel 0.

            1     ACMP output connected to TPM1 input channel 0.

    3       TPM2CH1 Pin Select— This selects the location of the TPM2CH1 pin of the TPM2 module.

   T2CH1PS  0     TPM2CH1 on PTB4.

            1     TPM2CH1 on PTA7.

    2       TPM2CH0 Pin Select— This bit selects the location of the TPM2CH0 pin of the TPM2 module.

   T2CH0PS  0     TPM2CH0 on PTA1.

            1     TPM2CH0 on PTA6.

    1       TPM1CH1 Pin Select— This selects the location of the TPM1CH1 pin of the TPM1 module.

   T1CH1PS  0     TPM1CH1 on PTB5.

            1     TPM1CH1 on PTC1.

    0       TPM1CH0 Pin Select— This bit selects the location of the TPM1CH0 pin of the TPM1 module.

   T1CH0PS  0     TPM1CH0 on PTA0.

            1     TPM1CH0 on PTC0.

                                        MC9S08SH32 Series Data Sheet, Rev. 3

70                                                                                                Freescale Semiconductor
                                                           Chapter 5 Resets, Interrupts, and General System Control

5.7.6        System Device Identification Register (SDIDH, SDIDL)

These high page read-only registers are 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.

             7           6    5                       4    3                              2                       1    0

       R     0                                             ID11             ID10                                  ID9  ID8

   W

   Reset:    01          —    —                       —    0                              0                       0    0

                         = Unimplemented or Reserved

1  - Bit 7 is a mask option tie off that is used internally to determine that the device is a MC9S08SH32 Series.

                         Figure 5-7. System Device Identification Register — High (SDIDH)

                              Table 5-8. SDIDH Register Field Descriptions

   Field                                                   Description

   7         Bit 7 will read as a 0 for the MC9S08SH32 Series devices; writes have no effect.

   6:4       Bits 6:4 are reserved. Reading these bits will result in an indeterminate value; writes have no effect.

   Reserved

   3:0       Part Identification Number — Each derivative in the HCS08 Family has a unique identification number. The

   ID[11:8]  MC9S08SH32 is hard coded to the value 0x01A. See also ID bits in Table 5-9.

             7           6    5                       4    3                              2                       1    0

       R     ID7         ID6  ID5                     ID4  ID3              ID2                                   ID1  ID0

   W

   Reset:    0           0    0                       1    1                              0                       1    0

                         = Unimplemented or Reserved

                         Figure 5-8. System Device Identification Register — Low (SDIDL)

                              Table 5-9. SDIDL Register Field Descriptions

   Field                                                   Description

   7:0       Part Identification Number — Each derivative in the HCS08 Family has a unique identification              number. The

   ID[7:0]   MC9S08SH32 is hard coded to the value 0x01A. See also ID bits in Table 5-8.

                              MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                             71
Chapter 5 Resets, Interrupts, and General System Control

5.7.7       System Power Management Status and Control 1 Register

            (SPMSC1)

This high page register contains status and control bits to support the low voltage detect function, and to

enable the bandgap voltage reference for use by the ADC module. This register 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.

               7        6                    5                4                       3  2      1                               0

       R    LVWF1       0                                 LVDRE2    LVDSE2               LVDE2  0

                                             LVWIE                                                                              BGBE

    W                   LVWACK

    Reset:  0           0                    0                1     1                    1      0                               0

                        = Unimplemented or Reserved

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

2  This bit can be written only one time after reset. Additional writes are ignored.

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

                           Table 5-10. SPMSC1 Register Field Descriptions

    Field                                                         Description

    7       Low-Voltage Warning Flag — The LVWF bit indicates the low voltage warning status.

    LVWF    0     Low voltage warning is not present.

            1     Low voltage warning is present or was present.

    6       Low-Voltage Warning Acknowledge — The LVWF bit indicates the low voltage warning status.Writing a 1 to

    LVWACK  LVWACK clears LVWF to a 0 if a low voltage warning is not present.

    5       Low-Voltage Warning Interrupt Enable — This bit enables hardware interrupt requests for LVWF.

    LVWIE   0     Hardware interrupt disabled (use polling).

            1     Request a hardware interrupt when LVWF = 1.

    4       Low-Voltage Detect Reset Enable — This write-once bit enables LVD events to generate a hardware reset

    LVDRE   (provided LVDE = 1).

            0     LVD events do not generate hardware resets.

            1     Force an MCU reset when an enabled low-voltage detect event occurs.

    3       Low-Voltage Detect Stop Enable — Provided LVDE = 1, this write-once bit determines whether the low-voltage

    LVDSE   detect function operates when the MCU is in stop mode.

            0     Low-voltage detect disabled during stop mode.

            1     Low-voltage detect enabled during stop mode.

    2       Low-Voltage Detect Enable — This write-once bit enables low-voltage detect logic and qualifies the operation

    LVDE    of other bits in this register.

            0     LVD logic disabled.

            1     LVD logic enabled.

    0       Bandgap Buffer Enable — This bit enables an internal buffer for the bandgap voltage reference for use by the

    BGBE    ADC and ACMP modules.

            0     Bandgap buffer disabled.

            1     Bandgap buffer enabled.

                                             MC9S08SH32 Series Data Sheet, Rev. 3

72                                                                                              Freescale Semiconductor
                                                                       Chapter 5 Resets, Interrupts, and General System Control

5.7.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. This register 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 settingsese

                         7  6          5                    4                         3        2       1                0

           R      0         0          LVDV1                           PPDF                    0       0                PPDC2

                                                            LVWV

           W                                                                                   PPDACK

Power-on Reset:   0         0          0                    0                         0        0       0                0

   LVD Reset:     0         0          u                    u                         0        0       0                0

Any other Reset:  0         0          u                    u                         0        0       0                0

                            = Unimplemented or Reserved                                        u = Unaffected by reset

1  This bit can be written only one time after power-on reset. Additional writes are ignored.

2  This bit can be written only one time after reset. Additional writes are ignored.

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

                            Table 5-11. SPMSC2 Register Field Descriptions

   Field                                                       Description

   5       Low-Voltage Detect Voltage Select — This write-once bit selects the low voltage detect (LVD) trip point setting.

   LVDV    It also selects the warning voltage range. See Table 5-12.

   4       Low-Voltage Warning Voltage Select — This bit selects the low voltage warning (LVW) trip point voltage. See

   LVWV    Table 5-12.

   3       Partial Power Down Flag — This read-only status bit indicates that the MCU has recovered from stop2 mode.

   PPDF    0      MCU has not recovered from stop2 mode.

           1      MCU recovered from stop2 mode.

   2       Partial Power Down Acknowledge — Writing a 1 to PPDACK clears the PPDF bit

   PPDACK

   0       Partial Power Down Control — This write-once bit controls whether stop2 or stop3 mode is selected.

   PPDC    0      Stop3 mode enabled.

           1      Stop2, partial power down, mode enabled.

                                       MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                          73
Chapter  5  Resets,  Interrupts, and General System Control

                             Table 5-12. LVD and LVW trip point typical values1

                        LVDV:LVWV  LVW Trip Point            LVD Trip Point

                        0:0        VLVW0 = 2.74 V                        VLVD0 = 2.56 V

                        0:1        VLVW1 = 2.92 V

                        1:0        VLVW2 = 4.3 V                         VLVD1 = 4.0 V

                        1:1        VLVW3 = 4.6 V

                     1  See Electrical Characteristics appendix for minimum and maximum values.

                                   MC9S08SH32 Series Data Sheet, Rev. 3

74                                                                                               Freescale Semiconductor
Chapter 6

Parallel Input/Output Control

This section explains software controls related to parallel input/output (I/O) and pin control. The

MC9S08SH32 has three parallel I/O ports which include a total of 23 I/O pins and one output-only pin.

See Chapter 2, “Pins and Connections,” for more information about pin assignments and external

hardware considerations of these pins.

Many of these pins are shared with on-chip peripherals such as timer systems, communication systems, or

pin interrupts as shown in Table 2-1. The peripheral modules have priority over the general-purpose I/O

functions so that when a peripheral is enabled, the I/O functions associated with the shared pins are

disabled.

After reset, the shared peripheral functions are disabled and the pins are configured as inputs

(PTxDDn = 0). The pin control functions for each pin are configured as follows: slew rate disabled

PTxSEn = 0, low drive strength selected (PTxDSn = 0), and internal pull-ups disabled (PTxPEn = 0).

                                        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 must either enable on-chip pull-up

           devices or change the direction of unconnected pins to outputs so the pins

           do not float.

6.1        Port Data and Data Direction

Reading and writing of parallel I/Os are performed through the port data registers. The direction, either

input or output, is controlled through the port data direction registers. The parallel I/O port function for an

individual pin is illustrated in the block diagram shown in Figure 6-1.

The data direction control bit (PTxDDn) determines whether the output buffer for the associated pin is

enabled, and also controls the source for port data register reads. The input buffer for the associated pin is

always enabled unless the pin is enabled as an analog function or is an output-only pin.

When a shared digital function is enabled for a pin, the output buffer is controlled by the shared function.

However, the data direction register bit will continue to control the source for reads of the port data register.

When a shared analog function is enabled for a pin, both the input and output buffers are disabled. A value

of 0 is read for any port data bit where the bit is an input (PTxDDn = 0) and the input buffer is disabled. In

general, whenever a pin is shared with both an alternate digital function and an analog function, the analog

function has priority such that if both the digital and analog functions are enabled, the analog function

controls the pin.

                          MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                            75
Chapter 6 Parallel Input/Output Control

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.

                                         PTxDDn

                                         D      Q                                              Output Enable

                                         PTxDn

                                         D      Q                                              Output Data

                                                   1

     Port Read

                        Data

                                                   0                             Synchronizer  Input Data

                        BUSCLK

                                         Figure 6-1. Parallel I/O Block Diagram

6.2  Pull-up, Slew Rate, and Drive Strength

Associated with the parallel I/O ports is a set of registers located in the high page register space that operate

independently of the parallel I/O registers. These registers are used to control pull-ups, slew rate, and drive

strength for the pins.

An internal pull-up device can be enabled for each port pin by setting the corresponding bit in the pull-up

enable register (PTxPEn). The pull-up device is disabled if the pin is configured as an output by the parallel

I/O control logic or any shared peripheral function regardless of the state of the corresponding pull-up

enable register bit. The pull-up device is also disabled if the pin is controlled by an analog function.

Slew rate control can be enabled for each port pin by setting the corresponding bit in the slew rate control

register (PTxSEn). When enabled, slew control limits the rate at which an output can transition in order to

reduce EMC emissions. Slew rate control has no effect on pins that are configured as inputs.

An output pin can be selected to have high output drive strength by setting the corresponding bit in the

drive strength select register (PTxDSn). When high drive is selected, a pin is capable of sourcing and

sinking greater current. Even though every I/O pin can be selected as high drive, the user must ensure that

the total current source and sink limits for the MCU are not exceeded. Drive strength selection is intended

to affect the DC behavior of I/O pins. However, the AC behavior is also affected. High drive allows a pin

to drive a greater load with the same switching speed as a low drive enabled pin into a smaller load.

Because of this, the EMC emissions may be affected by enabling pins as high drive.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

76                                                                                             Freescale Semiconductor
                                                                            Chapter 6 Parallel Input/Output Control

6.3  Ganged Output

The MC9S08SH32 Series devices contain a feature that allows for up to eight port pins to be tied together

externally to allow higher output current drive. The ganged output drive control register (GNGC) is a

write-once register that is used to enabled the ganged output feature and select which port pins will be used

as ganged outputs. The GNGEN bit in GNGC enables ganged output. The GNGPS[7:1] bits are used to

select which pin will be part of the ganged output.

When GNGEN is set, any pin that is enabled as a ganged output will be automatically configured as an

output and follow the data, drive strength and slew rate control of PTC0. The ganged output drive pin

mapping is shown in Table 6-1.

                                                     NOTE

                   See the DC characteristics in the electrical section for maximum Port I/O

                   currents allowed for this MCU.

                   When a pin is enabled as ganged output, this feature will have priority over

                   any digital module. An enabled analog function will have priority over the

                   ganged output pin. See Table 2-1 for information on pin priority.

                                Table 6-1. Ganged Output Pin Enable

                                                     GNGC Register Bits

                   GNGPS7  GNGPS6     GNGPS5         GNGPS4  GNGPS3         GNGPS2                GNGPS1             GNGEN1

   Port Pin 2      PTB5         PTB4  PTB3           PTB2    PTC3           PTC2                  PTC1               PTC0

   Data Direction

     Control               Pin is automatically configured as output when pin is enabled as ganged output.

     Data

     Control                          PTCD0 in PTCD controls data value of output

   Drive Strength

     Control                          PTCDS0 in PTCDS controls drive strength of output

   Slew Rate

     Control                          PTCSE0 in PTCSE controls slew rate of output

1  Ganged output   on PTC3-PTC0 not available on 16-pin packages, however PTC0 control registers are still used  to  control

   ganged output.

2  When GNGEN      = 1, PTC0 is forced to an output, regardless of the value in PTCDD0 in PTCDD.

                                      MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                       77
Chapter 6 Parallel Input/Output Control

6.4         Pin Interrupts

Port A[3:0] and port B[3:0] pins can be configured as external interrupt inputs and as an external means

of waking the MCU from stop3 or wait low-power modes.

The block diagram for the pin interrupts is shown Figure 6-2.

                                                                           PTxACK         BUSCLK

            1                                    VDD                       RESET                        PTxIF

PIxn        0S  PTxPS0                                   D CLR Q

                                                         CK                               SYNCHRONIZER

    PTxES0

                                                                     PORT           STOP  STOP BYPASS          PTx

            1                                                        INTERRUPT FF                              INTERRUPT

                                                                                                               REQUEST

PIxn        0S  PTxPSn                           PTxMOD

                                                                                          PTxIE

    PTxESn

                                         Figure  6-2. Pin Interrupt  Block Diagram

Writing to the PTxPSn bits in the port interrupt pin enable register (PTxPS) independently enables or

disables each port pin interrupt. Each port can be configured as edge sensitive or edge and level sensitive

based on the PTxMOD bit in the port interrupt status and control register (PTxSC). Edge sensitivity can be

software programmed to be either falling or rising; the level can be either low or high. The polarity of the

edge or edge and level sensitivity is selected using the PTxESn bits in the port interrupt edge select register

(PTxES).

Synchronous logic is used to detect edges. Prior to detecting an edge, enabled pin interrupt inputs must be

at the deasserted logic level. A falling edge is detected when an enabled port input signal is seen as a logic

1 (the deasserted level) during one bus cycle and then a logic 0 (the asserted level) during the next cycle.

A rising edge is detected when the input signal is seen as a logic 0 during one bus cycle and then a logic 1

during the next cycle.

6.4.1          Edge-Only Sensitivity

A valid edge on an enabled pin interrupt sets PTxIF in PTxSC. If PTxIE in PTxSC is set, an interrupt

request is presented to the CPU. To clear PTxIF, write a 1 to PTxACK in PTxSC.

                                                         NOTE

                If a pin is enabled for interrupt on edge-sensitive only, a falling (or rising)

                edge on the pin does not latch an interrupt request if another pin interrupt is

                already asserted.

                To prevent losing an interrupt request on one pin because another pin is

                asserted, software can disable the asserted pin interrupt while having the

                unasserted pin interrupt enabled. The asserted status of a pin is reflected by

                its associated I/O general purpose data register.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

78                                                                                          Freescale Semiconductor
                                                                                Chapter 6 Parallel Input/Output Control

6.4.2  Edge and Level Sensitivity

A valid edge or level on an enabled pin interrupt sets PTxIF in PTxSC. If PTxIE in PTxSC is set, an

interrupt request is presented to the CPU. To clear PTxIF, write a 1 to PTxACK in PTxSC provided all

enabled pin interrupt inputs are at their de-asserted levels. PTxIF remains set if any enabled pin interrupt

is asserted while attempting to clear by writing a 1 to PTxACK.

6.4.3  Pull-up/Pull-down Resistors

The pin interrupts can be configured to use an internal pull-up/pull-down resistor using the associated I/O

port pull-up enable register. If an internal resistor is enabled, the PTxES register is used to select whether

the resistor is a pull-up (PTxESn = 0) or a pull-down (PTxESn = 1).

6.4.4  Pin Interrupt Initialization

When a pin interrupt is first enabled, it is possible to get a false interrupt flag. To prevent a false interrupt

request during pin interrupt initialization, the user should do the following:

1.     Mask interrupts by clearing PTxIE in PTxSC.

2.     Select the pin polarity by setting the appropriate PTxESn bits in PTxES.

3.     If using internal pull-up/pull-down device, configure the associated pull enable bits in PTxPE.

4.     Enable the interrupt pins by setting the appropriate PTxPSn bits in PTxPS.

5.     Write to PTxACK in PTxSC to clear any false interrupts.

6.     Set PTxIE in PTxSC to enable interrupts.

6.5    Pin Behavior in Stop Modes

Pin behavior following execution of a STOP instruction depends on the stop mode that is entered. An

explanation of pin behavior for the various stop modes follows:

•      Stop2 mode is a partial power-down mode, whereby I/O latches are maintained in their state as

       before the STOP instruction was executed. CPU register status and the state of I/O registers should

       be saved in RAM before the STOP instruction is executed to place the MCU in stop2 mode. Upon

       recovery from stop2 mode, before accessing any I/O, the user should examine the state of the PPDF

       bit in the SPMSC2 register. If the PPDF bit is 0, I/O must be initialized as if a power on reset had

       occurred. If the PPDF bit is 1, I/O data previously stored in RAM, before the STOP instruction was

       executed, peripherals may require being initialized and restored to their pre-stop condition. The

       user must then write a 1 to the PPDACK bit in the SPMSC2 register. Access to I/O is now permitted

       again in the user application program.

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

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                            79
Chapter 6 Parallel Input/Output Control

6.6  Parallel I/O and Pin Control Registers

This section provides information about the registers associated with the parallel I/O ports. The data and

data direction registers are located in page zero of the memory map. The pull up, slew rate, drive strength,

and interrupt control registers are located in the high page section of the memory map.

Refer to tables in Chapter 4, “Memory,” for the absolute address assignments for all parallel I/O and their

pin control registers. This section refers to registers and control bits only by their names. A Freescale

Semiconductor-provided equate or header file normally is used to translate these names into the

appropriate absolute addresses.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

80                                                                                       Freescale Semiconductor
                                                                                         Chapter 6 Parallel Input/Output Control

6.6.1         Port A Registers

Port A is controlled by the registers listed below.

The pins PTA4 and PTA5 are unique. PTA4 is output-only, so the control bits for the input function will

not have any effect on this pin. PTA5, when configured as an output, is open drain.

                                                     NOTE

                 This PTA5 pin does not contain a clamp diode to VDD and should not be

                 driven above VDD.

                 When the internal pullup device is enabled on PTA5 when used as an input

                 or open drain output the voltage measured on PTA5 will not be pulled to

                 VDD. The internal gates connected to this pin are pulled to VDD. If the PTA5

                 pin is required to drive to a VDD level an external pullup should be used.

6.6.1.1       Port A Data Register (PTAD)

              7          6          5                4       3                           2                1                          0

       R                                             PTAD41

              PTAD7      PTAD6      PTAD5                    PTAD3                       PTAD2            PTAD1  PTAD0

   W

   Reset:     0          0          0                0       0                           0                0                          0

                                    Figure 6-3. Port A Data Register (PTAD)

1  Reads of bit PTAD4 always return the contents of PTAD4, regardless of the value stored in bit PTADD4.

                                Table 6-2. PTAD Register Field Descriptions

   Field                                                Description

              Port A Data Register Bits — For port A pins that are inputs, reads return the logic level on the pin. For port A

   7:0        pins that are configured as outputs, reads return the last value written to this register.

   PTAD[7:0]  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 pull-ups/pull-downs disabled.

                                    MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                 81
Chapter 6 Parallel Input/Output Control

6.6.1.2        Port A Data Direction Register (PTADD)

                  7         6            5             4                             3        2           1                     0

    R                                                  PTADD41

               PTADD7       PTADD6       PTADD5                 PTADD3                        PTADD2      PTADD1     PTADD0

    W

    Reset:     0            0            0             0                             0        0           0                     0

                                    Figure 6-4. Port A Data Direction Register (PTADD)

1   PTADD4 has no effect on the output-only PTA4 pin.

                                         Table 6-3. PTADD Register Field Descriptions

    Field                                                 Description

               Data Direction for Port A Bits — These read/write bits control the direction of port A pins and what  is read for

    7:0        PTAD reads.

   PTADD[7:0]  0     Input (output driver disabled) and reads return the pin value.

               1     Output driver enabled for port A bit n and PTAD reads return the contents of PTADn.

6.6.1.3        Port A Pull Enable Register (PTAPE)

                  7         6            5             4                             3        2           1                     0

    R                                    PTAPE51       PTAPE42

               PTAPE7       PTAPE6                                                PTAPE3      PTAPE2      PTAPE1     PTAPE0

    W

    Reset:     0            0            0             0                             0        0           0                     0

                            Figure 6-5. Internal Pull Enable for Port A Register (PTAPE)

1   PTAPE5 can be used to pullup PTA5 when configured as open drain output pin, however pullup will not pull pin all the way to

   VDD. An external pullup should be used if applications requires PTA5 to be driven to VDD.

2   PTAPE4 has no effect on the output-only PTA4 pin.

                                         Table 6-4. PTAPE Register Field Descriptions

    Field                                                 Description

               Internal Pull Enable for Port A Bits — Each of these control bits determines if the internal pull-up or pull-down

    7:0        device is enabled for the associated PTA pin. For port A pins (except for PTA5) that are configured as outputs,

   PTAPE[7:0]  these bits have no effect and the internal pull devices are disabled.

               0     Internal pull-up/pull-down device disabled for port A bit n.

               1     Internal pull-up/pull-down device enabled for port A bit n.

                                                       NOTE

                     Pull-down devices only apply when using pin interrupt functions, when

                     corresponding edge select and pin select functions are configured to detect

                     rising edges.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

82                                                                                                        Freescale Semiconductor
                                                                                    Chapter 6 Parallel Input/Output Control

6.6.1.4     Port A Slew Rate Enable Register (PTASE)

               7         6       5  4                                    3          2       1                                 0

R

            PTASE7       PTASE6  R  PTASE4                               PTASE3     PTASE2  PTASE1                PTASE0

W

Reset:      0            0       0  0                                    0          0       0                                 0

                         Figure 6-6. Slew Rate Enable for Port A Register (PTASE)

                                 Table 6-5. PTASE Register Field Descriptions

Field                                                                  Description

            Output Slew Rate Enable for Port A Bits — Each of these control bits determines if the output slew rate control

7:6,4:0     is enabled for the associated PTA pin. For port A pins that are configured as inputs, these bits have no effect.

PTASE       0     Output slew rate control disabled for port A bit n.

[7:6, 4:0]  1     Output slew rate control enabled for port A bit n.

5           Reserved Bits — These bits are unused on this MCU, writes have no affect and could read as 1s or 0s.

Reserved

6.6.1.5     Port A Drive Strength Selection Register (PTADS)

               7         6       5  4                                    3          2       1                                 0

R

            PTADS7       PTADS6  R  PTADS4                               PTADS3     PTADS2  PTADS1                PTADS0

W

Reset:      0            0       0  0                                    0          0       0                                 0

                         Figure 6-7. Drive Strength Selection for Port A Register (PTADS)

                                 Table 6-6. PTADS Register Field Descriptions

Field                                                                  Description

            Output Drive Strength Selection for Port A Bits — Each of these control bits selects between low and high

7:6, 4:0    output drive for the associated PTA pin. For port A pins that are configured as inputs, these bits have no effect.

PTADS       0     Low output drive strength selected for port A bit n.

[7:6, 4:0]  1     High output drive strength selected for port A bit n.

5           Reserved Bits — These bits are unused on this MCU, writes have no affect and could read as 1s or 0s.

Reserved

                                 MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                          83
Chapter 6 Parallel Input/Output Control

6.6.1.6     Port A Interrupt Status and Control Register (PTASC)

               7             6                   5           4  3                      2       1                          0

    R       0                0                   0           0  PTAIF                  0

                                                                                               PTAIE             PTAMOD

    W                                                                               PTAACK

    Reset:  0                0                   0           0  0                      0       0                       0

                  Figure 6-8. Port A Interrupt Status and Control Register (PTASC)

                                         Table 6-7. PTASC Register Field Descriptions

    Field                                                       Description

    3       Port A Interrupt Flag — PTAIF indicates when a port A interrupt is detected. Writes have no effect on PTAIF.

    PTAIF   0     No port A interrupt detected.

            1     Port A interrupt detected.

    2       Port A Interrupt Acknowledge — Writing a 1 to PTAACK is part of the flag clearing mechanism. PTAACK

    PTAACK  always reads as 0.

    1       Port A Interrupt Enable — PTAIE determines whether a port A interrupt is enabled.

    PTAIE   0     Port A interrupt request not enabled.

            1     Port A interrupt request enabled.

    0       Port A Detection Mode — PTAMOD (along with the PTAES bits) controls the detection mode of the port A

    PTAMOD  interrupt pins.

            0     Port A pins detect edges only.

            1     Port A pins detect both edges and levels.

6.6.1.7     Port A Interrupt Pin Select Register (PTAPS)

               7             6                   5           4  3                      2       1                          0

    R       0                0                   0           0

                                                                PTAPS3              PTAPS2     PTAPS1            PTAPS0

    W

    Reset:  0                0                   0           0  0                      0       0                       0

                             Figure 6-9. Port A Interrupt Pin Select Register (PTAPS)

                                         Table 6-8. PTAPS Register Field Descriptions

    Field                                                       Description

    3:0     Port A Interrupt Pin Selects — Each of the PTAPSn bits enable the corresponding    port A interrupt  pin.

PTAPS[3:0]  0     Pin not enabled as interrupt.

            1     Pin enabled as interrupt.

                                              MC9S08SH32 Series Data Sheet, Rev. 3

84                                                                                             Freescale Semiconductor
                                                                                           Chapter 6 Parallel Input/Output Control

6.6.1.8     Port A Interrupt Edge Select Register (PTAES)

               7               6  5  4  3                                                  2       1                      0

R           0                  0  0  0

                                        PTAES3                                             PTAES2  PTAES1                 PTAES0

W

Reset:      0                  0  0  0  0                                                  0       0                      0

                                  Figure 6-10. Port A Edge Select Register (PTAES)

                                  Table 6-9. PTAES Register Field Descriptions

Field                                   Description

3:0         Port A Edge Selects — Each of the PTAESn bits serves a dual purpose by selecting the polarity of the active

PTAES[3:0]  interrupt edge as well as selecting a pull-up or pull-down device if enabled.

            0     A pull-up device is connected to the associated pin and detects falling edge/low level for interrupt generation.

            1     A pull-down device is connected to the associated pin and detects rising edge/high level for interrupt

                  generation.

                                  MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                             85
Chapter 6 Parallel Input/Output Control

6.6.2       Port B Registers

Port B is controlled by the registers listed below.

6.6.2.1     Port B Data Register (PTBD)

               7         6               5           4                            3     2               1                          0

       R

            PTBD7        PTBD6           PTBD5       PTBD4   PTBD3                     PTBD2            PTBD1   PTBD0

    W

    Reset:  0            0               0           0                            0     0               0                          0

                                         Figure 6-11. Port B Data Register (PTBD)

                                         Table 6-10. PTBD Register Field Descriptions

    Field                                               Description

    7:0     Port B Data Register Bits — For port B pins that are inputs, reads return the logic level on the pin. For port B

PTBD[7:0]   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 the corresponding pins because reset also configures

            all port pins as high-impedance inputs with pull-ups/pull-downs disabled.

6.6.2.2     Port B Data Direction Register (PTBDD)

               7         6               5           4                            3     2               1                          0

       R

            PTBDD7  PTBDD6               PTBDD5      PTBDD4  PTBDD3                    PTBDD2           PTBDD1  PTBDD0

    W

    Reset:  0            0               0           0                            0     0               0                          0

                            Figure 6-12. Port B Data Direction Register (PTBDD)

                                         Table 6-11. PTBDD Register Field Descriptions

    Field                                               Description

    7:0     Data Direction for Port B Bits — These read/write bits control the direction of port B pins and what is read for

PTBDD[7:0]  PTBD reads.

            0     Input (output driver disabled) and reads return the pin value.

            1     Output driver enabled for port B bit n and PTBD reads return the contents of PTBDn.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

86                                                                                                      Freescale Semiconductor
                                                                                    Chapter 6 Parallel Input/Output Control

6.6.2.3     Port B Pull Enable Register (PTBPE)

               7         6       5                              4               3   2          1                              0

R

            PTBPE7       PTBPE6  PTBPE5  PTBPE4                        PTBPE3       PTBPE2  PTBPE1  PTBPE0

W

Reset:      0            0       0                              0               0   0          0                              0

                         Figure 6-13. Internal Pull Enable for Port B Register (PTBPE)

                                 Table 6-12. PTBPE Register Field Descriptions

Field                                                                  Description

7:0         Internal Pull Enable for Port B Bits — Each of these control bits determines if the internal pull-up or pull-down

PTBPE[7:0]  device is enabled for the associated PTB pin. For port B pins that are configured as outputs, these bits have no

            effect and the internal pull devices are disabled.

            0     Internal pull-up/pull-down device disabled for port B bit n.

            1     Internal pull-up/pull-down device enabled for port B bit n.

                                         NOTE

                  Pull-down devices only apply when using pin interrupt functions, when

                  corresponding edge select and pin select functions are configured to detect

                  rising edges.

6.6.2.4     Port B Slew Rate Enable Register (PTBSE)

               7         6       5                              4               3   2          1                              0

R

            PTBSE7       PTBSE6  PTBSE5  PTBSE4                        PTBSE3       PTBSE2  PTBSE1  PTBSE0

W

Reset:      0            0       0                              0               0   0          0                              0

                         Figure 6-14. Slew Rate Enable for Port B Register (PTBSE)

                                 Table 6-13. PTBSE Register Field Descriptions

Field                                                                  Description

7:0         Output Slew Rate Enable for Port B Bits — Each of these control bits determines if the output slew rate control

PTBSE[7:0]  is enabled for the associated PTB pin. For port B pins that are configured as inputs, these bits have no effect.

            0     Output slew rate control disabled for port B bit n.

            1     Output slew rate control enabled for port B bit n.

                                 MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                          87
Chapter 6 Parallel Input/Output Control

6.6.2.5     Port B Drive Strength Selection Register (PTBDS)

               7             6                   5           4           3              2      1                       0

    R

            PTBDS7  PTBDS6                    PTBDS5     PTBDS4          PTBDS3     PTBDS2     PTBDS1  PTBDS0

    W

    Reset:  0                0                   0           0           0              0      0                       0

                    Figure 6-15. Drive Strength Selection for Port B Register (PTBDS)

                                         Table 6-14. PTBDS Register Field Descriptions

    Field                                                       Description

    7:0     Output Drive Strength Selection for Port B Bits — Each of these control bits selects between low and high

PTBDS[7:0]  output drive for the associated PTB pin. For port B pins that are configured as inputs, these bits have no effect.

            0     Low output drive strength selected for port B bit n.

            1     High output drive strength selected for port B bit n.

6.6.2.6     Port B Interrupt Status and Control Register (PTBSC)

               7             6                   5           4           3              2      1                       0

    R       0                0                   0           0           PTBIF          0

                                                                                               PTBIE   PTBMOD

    W                                                                               PTBACK

    Reset:  0                0                   0           0           0              0      0                       0

                    Figure 6-16. Port B Interrupt Status and Control Register (PTBSC)

                                         Table 6-15. PTBSC Register Field Descriptions

    Field                                                       Description

    3       Port B Interrupt Flag — PTBIF indicates when a Port B interrupt is detected. Writes have no effect on PTBIF.

    PTBIF   0     No Port B interrupt detected.

            1     Port B interrupt detected.

    2       Port B Interrupt Acknowledge — Writing a 1 to PTBACK is part of the flag clearing mechanism. PTBACK

    PTBACK  always reads as 0.

    1       Port B Interrupt Enable — PTBIE determines whether a port B interrupt is enabled.

    PTBIE   0     Port B interrupt request not enabled.

            1     Port B interrupt request enabled.

    0       Port B Detection Mode — PTBMOD (along with the PTBES bits) controls the detection mode of the port B

    PTBMOD  interrupt pins.

            0     Port B pins detect edges only.

            1     Port B pins detect both edges and levels.

                                              MC9S08SH32 Series Data Sheet, Rev. 3

88                                                                                             Freescale Semiconductor
                                                                                           Chapter 6 Parallel Input/Output Control

6.6.2.7     Port B Interrupt Pin Select Register (PTBPS)

               7               6                 5  4  3                                   2       1                            0

R           0                  0                 0  0

                                                       PTBPS3                              PTBPS2  PTBPS1                 PTBPS0

W

Reset:      0                  0                 0  0  0                                   0       0                            0

                               Figure 6-17. Port B Interrupt Pin Select Register (PTBPS)

                                  Table 6-16. PTBPS Register Field Descriptions

Field                                                  Description

3:0         Port B Interrupt Pin Selects — Each of the PTBPSn bits enable the corresponding        port B interrupt       pin.

PTBPS[3:0]  0     Pin not enabled as interrupt.

            1     Pin enabled as interrupt.

6.6.2.8     Port B Interrupt Edge Select Register (PTBES)

               7               6                 5  4  3                                   2       1                            0

R           0                  0                 0  0

                                                       PTBES3                              PTBES2  PTBES1                 PTBES0

W

Reset:      0                  0                 0  0  0                                   0       0                            0

                                  Figure 6-18. Port B Edge Select Register (PTBES)

                                  Table 6-17. PTBES Register Field Descriptions

Field                                                  Description

3:0         Port B Edge Selects — Each of the PTBESn bits serves a dual purpose by selecting the polarity of the active

PTBES[3:0]  interrupt edge as well as selecting a pull-up or pull-down device if enabled.

            0     A pull-up device is connected to the associated pin and detects falling edge/low level for interrupt generation.

            1     A pull-down device is connected to the associated pin and detects rising edge/high level for interrupt

                  generation.

                                             MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                             89
Chapter 6 Parallel Input/Output Control

6.6.3       Port C Registers

Port C is controlled by the registers listed below.

6.6.3.1     Port C Data Register (PTCD)

               7         6               5           4                            3     2                    1                     0

       R

            PTCD7        PTCD6           PTCD5       PTCD4   PTCD3                   PTCD2              PTCD1         PTCD0

    W

    Reset:  0            0               0           0                            0     0               0                          0

                                         Figure 6-19. Port C Data Register (PTCD)

                                         Table 6-18. PTCD Register Field Descriptions

    Field                                               Description

    7:0     Port C Data Register Bits — For port C pins that are inputs, reads return the logic level on the pin. For port C

PTCD[7:0]   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 pull-ups disabled.

6.6.3.2     Port C Data Direction Register (PTCDD)

               7         6               5           4                            3     2                    1                     0

       R

            PTCDD7  PTCDD6               PTCDD5      PTCDD4  PTCDD3                  PTCDD2             PTCDD1        PTCDD0

    W

    Reset:  0            0               0           0                            0     0               0                          0

                            Figure 6-20. Port C Data Direction Register (PTCDD)

                                         Table 6-19. PTCDD Register Field Descriptions

    Field                                               Description

    7:0     Data Direction for Port C Bits — These read/write bits control the direction of port C pins and     what  is read for

PTCDD[7:0]  PTCD reads.

            0     Input (output driver disabled) and reads return the pin value.

            1     Output driver enabled for port C bit n and PTCD reads return the contents of PTCDn.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

90                                                                                                      Freescale Semiconductor
                                                                                    Chapter 6 Parallel Input/Output Control

6.6.3.3     Port C Pull Enable Register (PTCPE)

               7         6       5                   4                 3            2       1                                 0

R

         PTCPE7          PTCPE6  PTCPE5              PTCPE4            PTCPE3       PTCPE2  PTCPE1  PTCPE0

W

Reset:      0            0       0                   0                 0            0       0                                 0

                         Figure 6-21. Internal Pull Enable for Port C Register (PTCPE)

                                 Table 6-20. PTCPE Register Field Descriptions

Field                                                                  Description

7:0         Internal Pull Enable for Port C Bits — Each of these control bits determines if the internal pull-up device is

PTCPE[7:0]  enabled for the associated PTC pin. For port C pins that are configured as outputs, these bits have no effect and

            the internal pull devices are disabled.

            0     Internal pull-up device disabled for port C bit n.

            1     Internal pull-up device enabled for port C bit n.

6.6.3.4     Port C Slew Rate Enable Register (PTCSE)

               7         6       5                   4                 3            2       1                                 0

R

         PTCSE7          PTCSE6  PTCSE5              PTCSE4            PTCSE3       PTCSE2  PTCSE1  PTCSE0

W

Reset:      0            0       0                   0                 0            0       0                                 0

                         Figure 6-22. Slew Rate Enable for Port C Register (PTCSE)

                                 Table 6-21. PTCSE Register Field Descriptions

Field                                                                  Description

7:0         Output Slew Rate Enable for Port C Bits — Each of these control bits determines if the output slew rate control

PTCSE[7:0]  is enabled for the associated PTC pin. For port C pins that are configured as inputs, these bits have no effect.

            0     Output slew rate control disabled for port C bit n.

            1     Output slew rate control enabled for port C bit n.

                                 MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                          91
Chapter 6 Parallel Input/Output Control

6.6.3.5     Port C Drive Strength Selection Register (PTCDS)

               7         6               5       4                        3               2     1                      0

    R

            PTCDS7       PTCDS6          PTCDS5  PTCDS4                   PTCDS3        PTCDS2  PTCDS1            PTCDS0

    W

    Reset:  0            0               0       0                        0               0     0                      0

                    Figure 6-23. Drive Strength Selection for Port C Register (PTCDS)

                                         Table 6-22. PTCDS Register Field Descriptions

    Field                                           Description

    7:0     Output Drive Strength Selection for Port C Bits — Each of these control bits selects between low and high

PTCDS[7:0]  output drive for the associated PTC pin. For port C pins that are configured as inputs, these bits have no effect.

            0     Low output drive strength selected for port C bit n.

            1     High output drive strength selected for port C bit n.

6.6.3.6     Ganged Output Drive Control Register (GNGC)

               7         6               5       4                        3               2     1                      0

    R

            GNGPS7       GNGPS6          GNGPS5  GNGPS4                   GNGPS3        GNGPS2  GNGPS1            GNGEN

    W

    Reset:  0            0               0       0                        0               0     0                      0

                         Figure 6-24. Ganged Output Drive Control Register (GNGC)

                                         Table 6-23. GNGC Register Field Descriptions

    Field                                           Description

    7:1     Ganged Output Pin Select Bits— These write-once control bits selects whether the associated pin (see

GNGP[7:1]   Table 6-1for pins available) is enabled for ganged output. When GNGEN = 1, all enabled ganged output pins will

            be controlled by the data, drive strength and slew rate settings for PTCO.

            0     Associated pin is not part of the ganged output drive.

            1     Associated pin is part of the ganged output drive. Requires GNGEN = 1.

    0       Ganged Output Drive Enable Bit— This write-once control bit selects whether the ganged output drive feature

    GNGEN   is enabled.

            0     Ganged output drive disabled.

            1     Ganged output drive enabled. PTC0 forced to output regardless of the value of PTCDD0 in PTCDD.

                                         MC9S08SH32 Series Data Sheet, Rev. 3

92                                                                                              Freescale Semiconductor
Chapter 7

Central Processor Unit (S08CPUV3)

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

7.1.1   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 0x0000–0x00FF

       — 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

                                MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                  93
Chapter 7 Central Processor Unit (S08CPUV3)

7.2    Programmer’s Model and CPU Registers

Figure 7-1 shows the five CPU registers. CPU registers are not part of                  the   memory     map.

                                                     7                     0

                                                           ACCUMULATOR        A

                               16-BIT INDEX REGISTER H:X

                       H   INDEX REGISTER (HIGH)     INDEX REGISTER (LOW)     X

                           15                     8  7                     0

                                             STACK POINTER                    SP

                           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 7-1. CPU Registers

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

7.2.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 0x00 during reset. Reset has no effect

on the contents of X.

                                             MC9S08SH32 Series Data Sheet, Rev. 3

94                                                                                                       Freescale Semiconductor
                                                                   Chapter 7 Central Processor Unit (S08CPUV3)

7.2.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 0x00FF 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 0x00FF).

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.

7.2.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 0xFFFE and 0xFFFF.

The vector stored there is the address of the first instruction that will be executed after exiting the reset

state.

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

                             MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                        95
Chapter 7  Central Processor Unit (S08CPUV3)

                                                 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 7-2. Condition Code Register

                                     Table 7-1. CCR Register Field Descriptions

    Field                                                       Description

    7      Two’s Complement Overflow Flag — The CPU sets the overflow flag when a two’s complement overflow occurs.

    V      The signed branch instructions BGT, BGE, BLE, and BLT use the overflow flag.

           0  No overflow

           1  Overflow

    4      Half-Carry Flag — The CPU sets the half-carry flag when a carry occurs between accumulator bits 3 and 4 during

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

           0  No carry between bits 3 and 4

           1  Carry between bits 3 and 4

    3      Interrupt Mask Bit — When the interrupt mask is set, all maskable CPU interrupts are disabled. CPU interrupts

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

           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.

           0  Interrupts enabled

           1  Interrupts disabled

    2      Negative Flag — The CPU sets the negative flag when an arithmetic operation, logic operation, or data

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

           0  Non-negative result

           1  Negative result

    1      Zero Flag — The CPU sets the zero flag when an arithmetic operation, logic operation, or data manipulation

    Z      produces a result of 0x00 or 0x0000. 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.

           0  Non-zero result

           1  Zero result

    0      Carry/Borrow Flag — The CPU sets the carry/borrow flag when an addition operation produces a carry out of bit

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

           0  No carry out of bit 7

           1  Carry out of bit 7

                                              MC9S08SH32 Series Data Sheet, Rev. 3

96                                                                                                  Freescale Semiconductor
                                                                Chapter 7 Central Processor Unit (S08CPUV3)

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

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

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

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

7.3.4     Direct Addressing Mode (DIR)

In direct addressing mode, the instruction includes the low-order eight bits of an address in the direct page

(0x0000–0x00FF). During execution a 16-bit address is formed by concatenating an implied 0x00 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.

                          MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                        97
Chapter 7 Central Processor Unit (S08CPUV3)

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

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

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

7.3.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 + 0x0001) after the operand has been fetched. This addressing mode is only used for MOV

and CBEQ instructions.

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

7.3.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 + 0x0001) after the operand has been fetched. This

addressing mode is used only for the CBEQ instruction.

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

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

                                             MC9S08SH32 Series Data Sheet, Rev. 3

98                                                                                 Freescale Semiconductor
                                                                               Chapter 7 Central Processor Unit (S08CPUV3)

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

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

7.4.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 0xFFFE and 0xFFFF and to fill the

instruction queue in preparation for execution of the first program instruction.

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

                                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                         99
Chapter 7 Central Processor Unit (S08CPUV3)

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.

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

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

                                             MC9S08SH32 Series Data Sheet, Rev. 3

100                                                                                Freescale Semiconductor
                                                               Chapter 7 Central Processor Unit (S08CPUV3)

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

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                   101
Chapter 7 Central Processor Unit (S08CPUV3)

7.5           HCS08 Instruction Set Summary

Table 7-2 provides a summary of the HCS08 instruction set in all possible addressing modes. The table

shows operand construction, execution time in internal bus clock cycles, and cycle-by-cycle details for

each addressing mode variation of each instruction.

                                    Table 7-2.      Instruction  Set Summary (Sheet 1               of 9)

                                                                     Address  Mode                  Cycles                       Affect

      Source                        Operation                                       Object Code                Cyc-by-Cyc        on CCR

        Form                                                                                                     Details

                                                                                                                           V  1  1H    IN    Z  C

ADC   #opr8i                                                     IMM                    A9  ii      2       pp

ADC   opr8a                                                      DIR                    B9  dd      3       rpp

ADC   opr16a                                                     EXT                    C9  hh  ll  4       prpp

ADC   oprx16,X   Add  with Carry                                 IX2                    D9  ee  ff  4       prpp           ↕  1  1  ↕  –↕    ↕  ↕

ADC   oprx8,X    A←   (A) + (M) + (C)                            IX1                    E9  ff      3       rpp

ADC   ,X                                                         IX                     F9          3       rfp

ADC   oprx16,SP                                                  SP2                9E  D9  ee  ff  5       pprpp

ADC   oprx8,SP                                                   SP1                9E  E9  ff      4       prpp

ADD   #opr8i                                                     IMM                    AB  ii      2       pp

ADD   opr8a                                                      DIR                    BB  dd      3       rpp

ADD   opr16a                                                     EXT                    CB  hh  ll  4       prpp

ADD   oprx16,X   Add without Carry                               IX2                    DB  ee  ff  4       prpp           ↕  1  1  ↕  –  ↕  ↕  ↕

ADD   oprx8,X    A ← (A) + (M)                                   IX1                    EB  ff      3       rpp

ADD   ,X                                                         IX                     FB          3       rfp

ADD   oprx16,SP                                                  SP2                9E  DB  ee  ff  5       pprpp

ADD   oprx8,SP                                                   SP1                9E  EB  ff      4       prpp

                 Add Immediate Value          (Signed)  to

AIS #opr8i       Stack Pointer                                   IMM                    A7  ii      2       pp             –  1  1  –  –  –  –  –

                 SP ← (SP) + (M)

                 Add Immediate Value          (Signed)  to

AIX #opr8i       Index Register (H:X)                            IMM                    AF  ii      2       pp             –  1  1  –  –  –  –  –

                 H:X ← (H:X) + (M)

AND   #opr8i                                                     IMM                    A4  ii      2       pp

AND   opr8a                                                      DIR                    B4  dd      3       rpp

AND   opr16a                                                     EXT                    C4  hh  ll  4       prpp

AND   oprx16,X   Logical AND                                     IX2                    D4  ee  ff  4       prpp           0  1  1  –  –  ↕  ↕  –

AND   oprx8,X    A ← (A) & (M)                                   IX1                    E4  ff      3       rpp

AND   ,X                                                         IX                     F4          3       rfp

AND   oprx16,SP                                                  SP2                9E  D4  ee  ff  5       pprpp

AND   oprx8,SP                                                   SP1                9E  E4  ff      4       prpp

ASL opr8a        Arithmetic  Shift  Left                         DIR                    38  dd      5       rfwpp

ASLA                                                             INH                    48          1       p

ASLX             C                               0               INH                    58          1       p              ↕  1  1  –  –  ↕  ↕  ↕

ASL oprx8,X           b7                  b0                     IX1                    68  ff      5       rfwpp

ASL ,X                                                           IX                     78          4       rfwp

ASL oprx8,SP     (Same as    LSL)                                SP1                9E  68  ff      6       prfwpp

ASR opr8a                                                        DIR                    37  dd      5       rfwpp

ASRA             Arithmetic  Shift  Right                        INH                    47          1       p

ASRX                                                             INH                    57          1       p              ↕  1  1  –  –  ↕  ↕  ↕

ASR oprx8,X                                   C                  IX1                    67  ff      5       rfwpp

ASR ,X              b7              b0                           IX                     77          4       rfwp

ASR oprx8,SP                                                     SP1                9E  67  ff      6       prfwpp

                                                 MC9S08SH32 Series Data Sheet, Rev. 3

102                                                                                                                 Freescale Semiconductor
                                                                                            Chapter 7 Central Processor Unit (S08CPUV3)

                               Table 7-2. Instruction        Set Summary (Sheet 2 of 9)

                                                                 Address  Mode                  Cycles                      Affect

      Source                   Operation                                        Object Code             Cyc-by-Cyc          on CCR

         Form                                                                                                Details

                                                                                                                      V11H        INZC

BCC  rel        Branch if Carry Bit Clear                    REL                    24 rr       3       ppp           –11–        ––––

                (if C = 0)

                                                             DIR (b0)               11  dd      5       rfwpp

                                                             DIR (b1)               13  dd      5       rfwpp

                                                             DIR (b2)               15  dd      5       rfwpp

BCLR n,opr8a    Clear Bit n in Memory                        DIR (b3)               17  dd      5       rfwpp         –11–        ––––

                (Mn ← 0)                                     DIR (b4)               19  dd      5       rfwpp

                                                             DIR (b5)               1B  dd      5       rfwpp

                                                             DIR (b6)               1D  dd      5       rfwpp

                                                             DIR (b7)               1F  dd      5       rfwpp

BCS  rel        Branch if Carry Bit Set (if C = 1)           REL                    25 rr       3       ppp           –11–        ––––

                (Same as BLO)

BEQ  rel        Branch if Equal (if Z = 1)                   REL                    27 rr       3       ppp           –11–        ––––

BGE  rel        Branch if Greater Than or Equal To           REL                    90 rr       3       ppp           –11–        ––––

                (if N ⊕ V = 0) (Signed)

                Enter active background if ENBDM=1

BGND            Waits for and processes BDM commands         INH                    82          5+      fp...ppp      –11–        ––––

                until GO, TRACE1, or TAGGO

BGT rel         Branch if Greater Than (if Z | (N ⊕ V) = 0)  REL                    92  rr      3       ppp           –  1  1  –  –  –  –  –

                (Signed)

BHCC rel        Branch if Half Carry Bit Clear (if H = 0)    REL                    28  rr      3       ppp           –  1  1  –  –  –  –  –

BHCS rel        Branch if Half Carry Bit Set (if H = 1)      REL                    29  rr      3       ppp           –  1  1  –  –  –  –  –

BHI rel         Branch if Higher (if C | Z = 0)              REL                    22  rr      3       ppp           –  1  1  –  –  –  –  –

BHS rel         Branch if Higher or Same (if C = 0)          REL                    24  rr      3       ppp           –  1  1  –  –  –  –  –

                (Same as BCC)

BIH rel         Branch if IRQ Pin High (if IRQ pin = 1)      REL                    2F  rr      3       ppp           –  1  1  –  –  –  –  –

BIL rel         Branch if IRQ Pin Low (if IRQ pin = 0)       REL                    2E  rr      3       ppp           –  1  1  –  –  –  –  –

BIT  #opr8i                                                  IMM                    A5  ii      2       pp

BIT  opr8a                                                   DIR                    B5  dd      3       rpp

BIT  opr16a     Bit Test                                     EXT                    C5  hh  ll  4       prpp

BIT  oprx16,X   (A) & (M)                                    IX2                    D5  ee  ff  4       prpp          0  1  1  –  –  ↕  ↕  –

BIT  oprx8,X    (CCR Updated but Operands Not Changed)       IX1                    E5  ff      3       rpp

BIT  ,X                                                      IX                     F5          3       rfp

BIT  oprx16,SP                                               SP2                9E  D5  ee  ff  5       pprpp

BIT  oprx8,SP                                                SP1                9E  E5  ff      4       prpp

BLE rel         Branch if Less Than or Equal To              REL                    93  rr      3       ppp           –  1  1  –  –  –  –  –

                (if Z | (N ⊕ V) = 1) (Signed)

BLO rel         Branch if Lower (if C = 1) (Same as BCS)     REL                    25  rr      3       ppp           –  1  1  –  –  –  –  –

BLS rel         Branch if Lower or Same (if C | Z = 1)       REL                    23  rr      3       ppp           –  1  1  –  –  –  –  –

BLT rel         Branch if Less Than (if N ⊕ V = 1) (Signed)  REL                    91  rr      3       ppp           –  1  1  –  –  –  –  –

BMC rel         Branch if Interrupt Mask Clear (if I = 0)    REL                    2C  rr      3       ppp           –  1  1  –  –  –  –  –

BMI rel         Branch if Minus (if N = 1)                   REL                    2B  rr      3       ppp           –  1  1  –  –  –  –  –

BMS rel         Branch if Interrupt Mask Set (if I = 1)      REL                    2D  rr      3       ppp           –  1  1  –  –  –  –  –

BNE rel         Branch if Not Equal (if Z = 0)               REL                    26  rr      3       ppp           –  1  1  –  –  –  –  –

                                            MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                 103
Chapter 7 Central  Processor Unit (S08CPUV3)

                                   Table 7-2.     Instruction     Set Summary (Sheet 3               of 9)

                                                                      Address  Mode                  Cycles                        Affect

      Source                       Operation                                         Object Code                Cyc-by-Cyc         on CCR

        Form                                                                                                      Details

                                                                                                                            V   1  1H    IN    Z  C

BPL rel            Branch if Plus (if N = 0)                      REL                    2A  rr      3       ppp            –   1  1–    ––    –  –

BRA rel            Branch Always                                  REL                    20  rr      3       ppp            –   1  1–    ––    –  –

                                                                  DIR (b0)               01  dd  rr  5       rpppp

                                                                  DIR (b1)               03  dd  rr  5       rpppp

                                                                  DIR (b2)               05  dd  rr  5       rpppp

BRCLR n,opr8a,rel  Branch if Bit n in Memory Clear (if (Mn) = 0)  DIR (b3)               07  dd  rr  5       rpppp          –   1  1–    ––    –  ↕

                                                                  DIR (b4)               09  dd  rr  5       rpppp

                                                                  DIR (b5)               0B  dd  rr  5       rpppp

                                                                  DIR (b6)               0D  dd  rr  5       rpppp

                                                                  DIR (b7)               0F  dd  rr  5       rpppp

BRN rel            Branch Never                                   REL                    21  rr      3       ppp            –   1  1–    ––    –  –

                                                                  DIR (b0)               00  dd  rr  5       rpppp

                                                                  DIR (b1)               02  dd  rr  5       rpppp

                                                                  DIR (b2)               04  dd  rr  5       rpppp

BRSET n,opr8a,rel  Branch if Bit n in Memory Set (if (Mn) = 1)    DIR (b3)               06  dd  rr  5       rpppp          –   1  1–    ––    –  ↕

                                                                  DIR (b4)               08  dd  rr  5       rpppp

                                                                  DIR (b5)               0A  dd  rr  5       rpppp

                                                                  DIR (b6)               0C  dd  rr  5       rpppp

                                                                  DIR (b7)               0E  dd  rr  5       rpppp

                                                                  DIR (b0)               10  dd      5       rfwpp

                                                                  DIR (b1)               12  dd      5       rfwpp

                                                                  DIR (b2)               14  dd      5       rfwpp

BSET n,opr8a       Set Bit n in Memory (Mn ← 1)                   DIR (b3)               16  dd      5       rfwpp          –   1  1  –  –  –  –  –

                                                                  DIR (b4)               18  dd      5       rfwpp

                                                                  DIR (b5)               1A  dd      5       rfwpp

                                                                  DIR (b6)               1C  dd      5       rfwpp

                                                                  DIR (b7)               1E  dd      5       rfwpp

                   Branch to Subroutine

                                 PC ← (PC) + $0002

BSR rel            push (PCL); SP ← (SP) – $0001                  REL                    AD rr       5       ssppp          –   1  1  –  –  –  –  –

                   push (PCH); SP ← (SP) – $0001

                                 PC ← (PC) + rel

CBEQ opr8a,rel     Compare and...  Branch if (A) = (M)            DIR                    31  dd  rr  5       rpppp

CBEQA #opr8i,rel                   Branch if (A) = (M)            IMM                    41  ii  rr  4       pppp

CBEQX #opr8i,rel                   Branch if (X) = (M)            IMM                    51  ii  rr  4       pppp           –   1  1  –  –  –  –  –

CBEQ oprx8,X+,rel                  Branch if (A) = (M)            IX1+                   61  ff  rr  5       rpppp

CBEQ ,X+,rel                       Branch if (A) = (M)            IX+                    71  rr      5       rfppp

CBEQ oprx8,SP,rel                  Branch if (A) = (M)            SP1                9E  61  ff  rr  6       prpppp

CLC                Clear Carry Bit (C ← 0)                        INH                    98          1       p              –   1  1  –  –  –  –  0

CLI                Clear Interrupt Mask Bit (I ← 0)               INH                    9A          1       p              –   1  1  –  0  –  –  –

CLR opr8a          Clear  M ← $00                                 DIR                    3F  dd      5       rfwpp

CLRA                      A ← $00                                 INH                    4F          1       p

CLRX                      X ← $00                                 INH                    5F          1       p

CLRH                      H ← $00                                 INH                    8C          1       p              0   1  1  –  –  0  1  –

CLR oprx8,X               M ← $00                                 IX1                    6F  ff      5       rfwpp

CLR ,X                    M ← $00                                 IX                     7F          4       rfwp

CLR oprx8,SP              M ← $00                                 SP1                9E  6F  ff      6       prfwpp

                                              MC9S08SH32 Series Data Sheet, Rev. 3

104                                                                                                                  Freescale  Semiconductor
                                                                                               Chapter 7 Central Processor Unit (S08CPUV3)

                                      Table 7-2. Instruction Set Summary (Sheet 4 of 9)

                                                                    Address  Mode                  Cycles                       Affect

      Source                          Operation                                    Object Code                Cyc-by-Cyc        on CCR

      Form                                                                                                      Details

                                                                                                                          V  1  1H    IN    Z  C

CMP   #opr8i                                                    IMM                    A1  ii      2       pp

CMP   opr8a                                                     DIR                    B1  dd      3       rpp

CMP   opr16a       Compare Accumulator with Memory              EXT                    C1  hh  ll  4       prpp

CMP   oprx16,X     A–M                                          IX2                    D1  ee  ff  4       prpp           ↕  1  1  –  –↕    ↕  ↕

CMP   oprx8,X      (CCR Updated But Operands Not Changed)       IX1                    E1  ff      3       rpp

CMP   ,X                                                        IX                     F1          3       rfp

CMP   oprx16,SP                                                 SP2                9E  D1  ee  ff  5       pprpp

CMP   oprx8,SP                                                  SP1                9E  E1  ff      4       prpp

COM opr8a          Complement             M ← (M)= $FF – (M)    DIR                    33  dd      5       rfwpp

COMA               (One’s Complement)     A ← (A) = $FF – (A)   INH                    43          1       p

COMX                                      X ← (X) = $FF – (X)   INH                    53          1       p              0  1  1  –  –  ↕  ↕  1

COM oprx8,X                               M ← (M) = $FF – (M)   IX1                    63  ff      5       rfwpp

COM ,X                                    M ← (M) = $FF – (M)   IX                     73          4       rfwp

COM oprx8,SP                              M ← (M) = $FF – (M)   SP1                9E  63  ff      6       prfwpp

CPHX opr16a        Compare Index Register (H:X) with Memory     EXT                    3E  hh  ll  6       prrfpp

CPHX #opr16i       (H:X) – (M:M + $0001)                        IMM                    65  jj  kk  3       ppp            ↕  1  1  –  –  ↕  ↕  ↕

CPHX opr8a         (CCR Updated But Operands Not Changed)       DIR                    75  dd      5       rrfpp

CPHX oprx8,SP                                                   SP1                9E  F3  ff      6       prrfpp

CPX  #opr8i                                                     IMM                    A3  ii      2       pp

CPX  opr8a                                                      DIR                    B3  dd      3       rpp

CPX  opr16a        Compare X (Index Register Low) with          EXT                    C3  hh  ll  4       prpp

CPX  oprx16,X      Memory                                       IX2                    D3  ee  ff  4       prpp           ↕  1  1  –  –  ↕  ↕  ↕

CPX  oprx8,X       X–M                                          IX1                    E3  ff      3       rpp

CPX   ,X           (CCR Updated But Operands Not Changed)       IX                     F3          3       rfp

CPX  oprx16,SP                                                  SP2                9E  D3  ee  ff  5       pprpp

CPX  oprx8,SP                                                   SP1                9E  E3  ff      4       prpp

DAA                Decimal Adjust Accumulator                   INH                    72          1       p              U  1  1  –  –  ↕  ↕  ↕

                   After ADD or ADC of BCD Values

DBNZ opr8a,rel                                                  DIR                    3B  dd  rr  7       rfwpppp

DBNZA rel          Decrement A, X, or M and Branch if Not Zero  INH                    4B  rr      4       fppp

DBNZX rel          (if (result) ≠ 0)                            INH                    5B  rr      4       fppp           –  1  1  –  –  –  –  –

DBNZ oprx8,X,rel   DBNZX Affects X Not H                        IX1                    6B  ff  rr  7       rfwpppp

DBNZ ,X,rel                                                     IX                     7B  rr      6       rfwppp

DBNZ oprx8,SP,rel                                               SP1                9E  6B  ff  rr  8       prfwpppp

DEC opr8a          Decrement          M ← (M) – $01             DIR                    3A  dd      5       rfwpp

DECA                                  A ← (A) – $01             INH                    4A          1       p

DECX                                  X ← (X) – $01             INH                    5A          1       p              ↕  1  1  –  –  ↕  ↕  –

DEC oprx8,X                           M ← (M) – $01             IX1                    6A  ff      5       rfwpp

DEC ,X                                M ← (M) – $01             IX                     7A          4       rfwp

DEC oprx8,SP                          M ← (M) – $01             SP1                9E  6A  ff      6       prfwpp

DIV                Divide                                       INH                    52          6       fffffp         –  1  1  –  –  –  ↕  ↕

                   A ← (H:A)÷(X); H ← Remainder

EOR   #opr8i       Exclusive OR Memory with Accumulator         IMM                    A8  ii      2       pp

EOR   opr8a        A ← (A ⊕ M)                                  DIR                    B8  dd      3       rpp

EOR   opr16a                                                    EXT                    C8  hh  ll  4       prpp

EOR   oprx16,X                                                  IX2                    D8  ee  ff  4       prpp           0  1  1  –  –  ↕  ↕  –

EOR   oprx8,X                                                   IX1                    E8  ff      3       rpp

EOR   ,X                                                        IX                     F8          3       rfp

EOR   oprx16,SP                                                 SP2                9E  D8  ee  ff  5       pprpp

EOR  oprx8,SP                                                   SP1                9E  E8  ff      4       prpp

                                          MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                     105
Chapter 7 Central  Processor Unit (S08CPUV3)

                                  Table 7-2. Instruction         Set Summary (Sheet 5               of 9)

                                                                     Address  Mode                  Cycles                        Affect

      Source                           Operation                                    Object Code                Cyc-by-Cyc         on CCR

          Form                                                                                                   Details

                                                                                                                           V   1  1H    IN    Z  C

INC opr8a          Increment  M ← (M) + $01                      DIR                    3C  dd      5       rfwpp

INCA                          A ← (A) + $01                      INH                    4C          1       p

INCX                          X ← (X) + $01                      INH                    5C          1       p              ↕   1  1–    –↕    ↕  –

INC oprx8,X                   M ← (M) + $01                      IX1                    6C  ff      5       rfwpp

INC ,X                        M ← (M) + $01                      IX                     7C          4       rfwp

INC oprx8,SP                  M ← (M) + $01                      SP1                9E  6C  ff      6       prfwpp

JMP   opr8a                                                      DIR                    BC  dd      3       ppp

JMP   opr16a       Jump                                          EXT                    CC  hh  ll  4       pppp

JMP   oprx16,X     PC ← Jump Address                             IX2                    DC  ee  ff  4       pppp           –   1  1  –  –  –  –  –

JMP   oprx8,X                                                    IX1                    EC  ff      3       ppp

JMP   ,X                                                         IX                     FC          3       ppp

JSR   opr8a        Jump to Subroutine                            DIR                    BD  dd      5       ssppp

JSR   opr16a       PC ← (PC) + n (n = 1, 2, or 3)                EXT                    CD  hh  ll  6       pssppp

JSR   oprx16,X     Push (PCL); SP ← (SP) – $0001                 IX2                    DD  ee  ff  6       pssppp         –   1  1  –  –  –  –  –

JSR   oprx8,X      Push (PCH); SP ← (SP) – $0001                 IX1                    ED  ff      5       ssppp

JSR   ,X           PC ← Unconditional Address                    IX                     FD          5       ssppp

LDA   #opr8i                                                     IMM                    A6  ii      2       pp

LDA   opr8a                                                      DIR                    B6  dd      3       rpp

LDA   opr16a                                                     EXT                    C6  hh  ll  4       prpp

LDA   oprx16,X     Load Accumulator from Memory                  IX2                    D6  ee  ff  4       prpp           0   1  1–    –↕    ↕  –

LDA   oprx8,X      A ← (M)                                       IX1                    E6  ff      3       rpp

LDA   ,X                                                         IX                     F6          3       rfp

LDA   oprx16,SP                                                  SP2                9E  D6  ee  ff  5       pprpp

LDA   oprx8,SP                                                   SP1                9E  E6  ff      4       prpp

LDHX    #opr16i                                                  IMM                    45  jj  kk  3       ppp

LDHX    opr8a                                                    DIR                    55  dd      4       rrpp

LDHX    opr16a     Load Index Register (H:X)                     EXT                    32  hh  ll  5       prrpp

LDHX      ,X       H:X ← (M:M + $0001)                           IX                 9E  AE          5       prrfp          0   1  1–    –↕    ↕  –

LDHX    oprx16,X                                                 IX2                9E  BE  ee  ff  6       pprrpp

LDHX    oprx8,X                                                  IX1                9E  CE  ff      5       prrpp

LDHX    oprx8,SP                                                 SP1                9E  FE  ff      5       prrpp

LDX   #opr8i                                                     IMM                    AE  ii      2       pp

LDX   opr8a                                                      DIR                    BE  dd      3       rpp

LDX   opr16a                                                     EXT                    CE  hh  ll  4       prpp

LDX   oprx16,X     Load X (Index Register   Low)   from  Memory  IX2                    DE  ee  ff  4       prpp           0   1  1  –  –  ↕  ↕  –

LDX   oprx8,X      X ← (M)                                       IX1                    EE  ff      3       rpp

LDX   ,X                                                         IX                     FE          3       rfp

LDX   oprx16,SP                                                  SP2                9E  DE  ee  ff  5       pprpp

LDX   oprx8,SP                                                   SP1                9E  EE  ff      4       prpp

LSL opr8a          Logical Shift Left                            DIR                    38  dd      5       rfwpp

LSLA                                                             INH                    48          1       p

LSLX               C                          0                  INH                    58          1       p              ↕   1  1  –  –  ↕  ↕  ↕

LSL oprx8,X              b7             b0                       IX1                    68  ff      5       rfwpp

LSL ,X                                                           IX                     78          4       rfwp

LSL oprx8,SP       (Same as ASL)                                 SP1                9E  68  ff      6       prfwpp

LSR opr8a          Logical Shift Right                           DIR                    34  dd      5       rfwpp

LSRA                                                             INH                    44          1       p

LSRX                                                             INH                    54          1       p              ↕   1  1  –  –  0  ↕  ↕

LSR oprx8,X        0                          C                  IX1                    64  ff      5       rfwpp

LSR ,X                   b7             b0                       IX                     74          4       rfwp

LSR oprx8,SP                                                     SP1                9E  64  ff      6       prfwpp

                                              MC9S08SH32 Series Data Sheet, Rev. 3

106                                                                                                                 Freescale  Semiconductor
                                                                                                 Chapter 7 Central Processor Unit (S08CPUV3)

                                   Table 7-2. Instruction Set Summary (Sheet 6 of 9)

                                                                      Address  Mode                  Cycles                       Affect

      Source                       Operation                                         Object Code                Cyc-by-Cyc        on CCR

      Form                                                                                                        Details

                                                                                                                            V  1  1H    IN    Z  C

MOV opr8a,opr8a   Move                                            DIR/DIR                4E  dd  dd  5       rpwpp

MOV opr8a,X+      (M)destination ← (M)source                      DIR/IX+                5E  dd      5       rfwpp          0  1  1–    –↕    ↕  –

MOV #opr8i,opr8a  In IX+/DIR and DIR/IX+ Modes,                   IMM/DIR                6E  ii  dd  4       pwpp

MOV ,X+,opr8a     H:X ← (H:X) + $0001                             IX+/DIR                7E  dd      5       rfwpp

MUL               Unsigned multiply                               INH                    42          5       ffffp          –  1  10    ––    –  0

                  X:A ← (X) × (A)

NEG opr8a         Negate                   M ← – (M) = $00 – (M)  DIR                    30  dd      5       rfwpp

NEGA              (Two’s Complement)       A ← – (A) = $00 – (A)  INH                    40          1       p

NEGX                                       X ← – (X) = $00 – (X)  INH                    50          1       p              ↕  1  1  –  –  ↕  ↕  ↕

NEG oprx8,X                                M ← – (M) = $00 – (M)  IX1                    60  ff      5       rfwpp

NEG ,X                                     M ← – (M) = $00 – (M)  IX                     70          4       rfwp

NEG oprx8,SP                               M ← – (M) = $00 – (M)  SP1                9E  60  ff      6       prfwpp

NOP               No Operation — Uses 1 Bus Cycle                 INH                    9D          1       p              –  1  1  –  –  –  –  –

NSA               Nibble Swap Accumulator                         INH                    62          1       p              –  1  1  –  –  –  –  –

                  A ← (A[3:0]:A[7:4])

ORA   #opr8i                                                      IMM                    AA  ii      2       pp

ORA   opr8a                                                       DIR                    BA  dd      3       rpp

ORA   opr16a                                                      EXT                    CA  hh  ll  4       prpp

ORA   oprx16,X    Inclusive OR Accumulator and Memory             IX2                    DA  ee  ff  4       prpp           0  1  1–    –↕    ↕  –

ORA   oprx8,X     A ← (A) | (M)                                   IX1                    EA  ff      3       rpp

ORA   ,X                                                          IX                     FA          3       rfp

ORA   oprx16,SP                                                   SP2                9E  DA  ee  ff  5       pprpp

ORA   oprx8,SP                                                    SP1                9E  EA  ff      4       prpp

PSHA              Push Accumulator onto Stack                     INH                    87          2       sp             –  1  1  –  –  –  –  –

                  Push (A); SP ← (SP) – $0001

PSHH              Push H (Index Register High) onto Stack         INH                    8B          2       sp             –  1  1  –  –  –  –  –

                  Push (H); SP ← (SP) – $0001

PSHX              Push X (Index Register Low) onto Stack          INH                    89          2       sp             –  1  1  –  –  –  –  –

                  Push (X); SP ← (SP) – $0001

PULA              Pull Accumulator from Stack                     INH                    86          3       ufp            –  1  1  –  –  –  –  –

                  SP ← (SP + $0001); Pull (A)

PULH              Pull H (Index Register High) from Stack         INH                    8A          3       ufp            –  1  1  –  –  –  –  –

                  SP ← (SP + $0001); Pull (H)

PULX              Pull X (Index Register Low) from Stack          INH                    88          3       ufp            –  1  1  –  –  –  –  –

                  SP ← (SP + $0001); Pull (X)

ROL opr8a         Rotate Left through Carry                       DIR                    39  dd      5       rfwpp

ROLA                                                              INH                    49          1       p

ROLX                                                              INH                    59          1       p              ↕  1  1  –  –  ↕  ↕  ↕

ROL oprx8,X       C                                               IX1                    69  ff      5       rfwpp

ROL ,X                       b7            b0                     IX                     79          4       rfwp

ROL oprx8,SP                                                      SP1                9E  69  ff      6       prfwpp

ROR opr8a         Rotate Right through Carry                      DIR                    36  dd      5       rfwpp

RORA                                                              INH                    46          1       p

RORX                                                              INH                    56          1       p              ↕  1  1  –  –↕    ↕  ↕

ROR oprx8,X                                   C                   IX1                    66  ff      5       rfwpp

ROR ,X                   b7            b0                         IX                     76          4       rfwp

ROR oprx8,SP                                                      SP1                9E  66  ff      6       prfwpp

                                               MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                       107
Chapter 7 Central  Processor Unit (S08CPUV3)

                                  Table 7-2. Instruction   Set Summary (Sheet 7               of 9)

                                                               Address  Mode                  Cycles                       Affect

      Source                      Operation                                   Object Code                Cyc-by-Cyc        on CCR

      Form                                                                                                 Details

                                                                                                                     V  1  1H    IN    Z  C

                   Reset Stack Pointer (Low Byte)

RSP                SPL ← $FF                               INH                    9C          1       p              –  1  1–    ––    –  –

                   (High Byte Not Affected)

                   Return from Interrupt

                   SP ← (SP) + $0001; Pull (CCR)

RTI                SP ← (SP) + $0001; Pull (A)             INH                    80          9       uuuuufppp      ↕  1  1↕    ↕↕    ↕  ↕

                   SP ← (SP) + $0001; Pull (X)

                   SP ← (SP) + $0001; Pull (PCH)

                   SP ← (SP) + $0001; Pull (PCL)

                   Return from Subroutine

RTS                SP ← SP + $0001; Pull (PCH)             INH                    81          5       ufppp          –  1  1–    ––    –  –

                   SP ← SP + $0001; Pull (PCL)

SBC  #opr8i                                                IMM                    A2  ii      2       pp

SBC  opr8a                                                 DIR                    B2  dd      3       rpp

SBC  opr16a                                                EXT                    C2  hh  ll  4       prpp

SBC  oprx16,X      Subtract with Carry                     IX2                    D2  ee  ff  4       prpp           ↕  1  1  –  –  ↕  ↕  ↕

SBC  oprx8,X       A ← (A) – (M) – (C)                     IX1                    E2  ff      3       rpp

SBC   ,X                                                   IX                     F2          3       rfp

SBC  oprx16,SP                                             SP2                9E  D2  ee  ff  5       pprpp

SBC  oprx8,SP                                              SP1                9E  E2  ff      4       prpp

SEC                Set Carry Bit                           INH                    99          1       p              –  1  1  –  –  –  –  1

                   (C ← 1)

SEI                Set Interrupt Mask Bit                  INH                    9B          1       p              –  1  1  –  1  –  –  –

                   (I ← 1)

STA  opr8a                                                 DIR                    B7  dd      3       wpp

STA  opr16a                                                EXT                    C7  hh  ll  4       pwpp

STA  oprx16,X      Store Accumulator in Memory             IX2                    D7  ee  ff  4       pwpp

STA  oprx8,X       M ← (A)                                 IX1                    E7  ff      3       wpp            0  1  1  –  –  ↕  ↕  –

STA   ,X                                                   IX                     F7          2       wp

STA  oprx16,SP                                             SP2                9E  D7  ee  ff  5       ppwpp

STA  oprx8,SP                                              SP1                9E  E7  ff      4       pwpp

STHX opr8a         Store H:X (Index Reg.)                  DIR                    35  dd      4       wwpp

STHX opr16a        (M:M + $0001) ← (H:X)                   EXT                    96  hh  ll  5       pwwpp          0  1  1  –  –  ↕  ↕  –

STHX oprx8,SP                                              SP1                9E  FF  ff      5       pwwpp

                   Enable Interrupts: Stop Processing

STOP               Refer to MCU Documentation              INH                    8E          2       fp...          –  1  1  –  0  –  –  –

                   I bit ← 0; Stop Processing

STX  opr8a                                                 DIR                    BF  dd      3       wpp

STX  opr16a                                                EXT                    CF  hh  ll  4       pwpp

STX  oprx16,X      Store X (Low 8 Bits of Index Register)  IX2                    DF  ee  ff  4       pwpp

STX  oprx8,X       in Memory                               IX1                    EF  ff      3       wpp            0  1  1  –  –  ↕  ↕  –

STX   ,X           M ← (X)                                 IX                     FF          2       wp

STX  oprx16,SP                                             SP2                9E  DF  ee  ff  5       ppwpp

STX  oprx8,SP                                              SP1                9E  EF  ff      4       pwpp

                                               MC9S08SH32 Series Data Sheet, Rev. 3

108                                                                                                          Freescale  Semiconductor
                                                                                            Chapter 7 Central Processor Unit (S08CPUV3)

                                Table 7-2. Instruction       Set Summary (Sheet 8 of 9)

                                                                 Address  Mode                  Cycles                       Affect

      Source                    Operation                                       Object Code                Cyc-by-Cyc        on CCR

        Form                                                                                                 Details

                                                                                                                       V11H        INZC

SUB   #opr8i                                                 IMM                    A0  ii      2       pp

SUB   opr8a                                                  DIR                    B0  dd      3       rpp

SUB   opr16a                                                 EXT                    C0  hh  ll  4       prpp

SUB   oprx16,X   Subtract                                    IX2                    D0  ee  ff  4       prpp           ↕  1  1  –  –  ↕  ↕  ↕

SUB   oprx8,X    A ← (A) – (M)                               IX1                    E0  ff      3       rpp

SUB   ,X                                                     IX                     F0          3       rfp

SUB   oprx16,SP                                              SP2                9E  D0  ee  ff  5       pprpp

SUB   oprx8,SP                                               SP1                9E  E0  ff      4       prpp

                 Software Interrupt

                 PC ← (PC) + $0001

                 Push (PCL); SP ← (SP) – $0001

                 Push (PCH); SP ← (SP) – $0001

SWI              Push (X); SP ← (SP) – $0001                 INH                    83          11      sssssvvfppp    –11–        1–––

                 Push (A); SP ← (SP) – $0001

                 Push (CCR); SP ← (SP) – $0001

                 I ← 1;

                 PCH ← Interrupt Vector High Byte

                 PCL ← Interrupt Vector Low Byte

TAP              Transfer Accumulator to CCR                 INH                    84          1       p              ↕  1  1  ↕  ↕  ↕  ↕  ↕

                 CCR ← (A)

                 Transfer Accumulator to X (Index Register

TAX              Low)                                        INH                    97          1       p              –  1  1  –  –  –  –  –

                 X ← (A)

TPA              Transfer CCR to Accumulator                 INH                    85          1       p              –  1  1  –  –  –  –  –

                 A ← (CCR)

TST opr8a        Test for Negative or Zero    (M) – $00      DIR                    3D  dd      4       rfpp

TSTA                                          (A) – $00      INH                    4D          1       p

TSTX                                          (X) – $00      INH                    5D          1       p              0  1  1  –  –  ↕  ↕  –

TST oprx8,X                                   (M) – $00      IX1                    6D  ff      4       rfpp

TST ,X                                        (M) – $00      IX                     7D          3       rfp

TST oprx8,SP                                  (M) – $00      SP1                9E  6D  ff      5       prfpp

TSX              Transfer SP to Index Reg.                   INH                    95          2       fp             –  1  1  –  –  –  –  –

                 H:X ← (SP) + $0001

TXA              Transfer X (Index Reg. Low) to Accumulator  INH                    9F          1       p              –  1  1  –  –  –  –  –

                 A ← (X)

                                            MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                                                  109
Chapter 7 Central Processor Unit (S08CPUV3)

                                    Table 7-2. Instruction Set Summary (Sheet 9 of 9)

                                                                        Address  Mode                       Cycles                          Affect

      Source                        Operation                                          Object Code                  Cyc-by-Cyc              on CCR

       Form                                                                                                              Details

                                                                                                                                       V11H    INZC

TXS                      Transfer Index Reg. to SP                      INH              94                 2       fp                 –11–    ––––

                         SP ← (H:X) – $0001

WAIT                     Enable Interrupts; Wait for Interrupt          INH              8F                 2+      fp...              –11–    0–––

                         I bit ← 0; Halt CPU

Source Form: Everything in the source forms columns, except expressions in italic characters, is literal information which must appear in the

assembly source file exactly as shown. The initial 3- to 5-letter mnemonic and the characters (# , ( ) and +) are always a literal characters.

n          Any label or expression that evaluates to a single integer in the range 0-7.

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 direct-page address ($00xx).

opr16a     Any label or expression that evaluates to a 16-bit address.

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, used for indexed addressing.

rel        Any label or expression that refers to an address that is within –128 to +127 locations from the start of the next instruction.

Operation Symbols:                                                      Addressing Modes:

A       Accumulator                                                     DIR            Direct addressing mode

CCR     Condition code register                                         EXT            Extended addressing mode

H       Index register high byte                                        IMM            Immediate addressing mode

M       Memory location                                                 INH            Inherent addressing mode

n       Any bit                                                         IX             Indexed, no offset addressing mode

opr     Operand (one or two bytes)                                      IX1            Indexed, 8-bit offset addressing mode

PC      Program counter                                                 IX2            Indexed, 16-bit offset addressing mode

PCH     Program counter high byte                                       IX+            Indexed, no offset, post increment addressing mode

PCL     Program counter low byte                                        IX1+           Indexed, 8-bit offset, post increment addressing mode

rel     Relative program counter offset byte                            REL            Relative addressing mode

SP      Stack pointer                                                   SP1            Stack pointer, 8-bit offset addressing mode

SPL     Stack pointer low byte                                          SP2            Stack pointer 16-bit offset addressing mode

X       Index register low byte                                         Cycle-by-Cycle Codes:

&       Logical AND                                                     f              Free cycle. This indicates a cycle where the CPU

|       Logical OR                                                                     does not require use of the system buses. An f

⊕       Logical EXCLUSIVE OR                                                           cycle is always one cycle of the system bus clock

()      Contents of                                                                    and is always a read cycle.

+       Add                                                             p              Program fetch; read from next consecutive

–       Subtract, Negation (two’s complement)                                          location in program memory

×       Multiply                                                        r              Read 8-bit operand

÷       Divide                                                          s              Push (write) one byte onto stack

#       Immediate value                                                 u              Pop (read) one byte from stack

←       Loaded with                                                     v              Read vector from $FFxx (high byte first)

:       Concatenated with                                               w              Write 8-bit operand

CCR Bits:                                                               CCR Effects:

V          Overflow bit                                                  ↕              Set or cleared

H          Half-carry bit                                               –              Not affected

I          Interrupt mask                                               U              Undefined

N          Negative bit

Z          Zero bit

C          Carry/borrow bit

                                                    MC9S08SH32 Series Data Sheet, Rev. 3

110                                                                                                                        Freescale Semiconductor
                                                                                                                                     Chapter 7 Central Processor Unit (S08CPUV3)

                                                                    Table 7-3. 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

BRSET0     BSET0             BRA         NEG           NEGA        NEGX          NEG         NEG           RTI          BGE          SUB         SUB         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

BRCLR0     BCLR0             BRN        CBEQ        CBEQA       CBEQX           CBEQ        CBEQ          RTS            BLT        CMP         CMP         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

BRSET1     BSET1             BHI        LDHX            MUL         DIV          NSA         DAA         BGND           BGT          SBC         SBC         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

BRCLR1     BCLR1             BLS        COM            COMA        COMX         COM         COM           SWI            BLE         CPX         CPX         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

BRSET2     BSET2             BCC         LSR           LSRA        LSRX          LSR         LSR          TAP           TXS         AND         AND          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  B5       3  C5       4   D5       4  E5       3  F5       3

BRCLR2     BCLR2             BCS        STHX           LDHX        LDHX         CPHX        CPHX          TPA           TSX          BIT         BIT         BIT          BIT         BIT         BIT

3     DIR  2    DIR      2   REL     2   DIR        3   IMM     2   DIR      3   IMM     2   DIR      1    INH      1    INH     2   IMM     2   DIR     3   EXT      3   IX2     2    IX1    1        IX

06    5    16         5  26       3  36       5     46       1  56        1  66       5  76       4   86        3   96        5  A6       2  B6       3  C6       4   D6       4  E6       3  F6       3

BRSET3     BSET3             BNE         ROR           RORA        RORX          ROR         ROR          PULA         STHX          LDA         LDA         LDA          LDA         LDA         LDA

3     DIR  2    DIR      2   REL     2   DIR        1   INH     1   INH      2   IX1     1        IX  1    INH      3    EXT     2   IMM     2   DIR     3   EXT      3   IX2     2    IX1    1        IX

07    5    17         5  27       3  37       5     47       1  57        1  67       5  77       4   87        2   97        1  A7       2  B7       3  C7       4   D7       4  E7       3  F7       2

BRCLR3     BCLR3             BEQ         ASR           ASRA        ASRX          ASR         ASR         PSHA            TAX         AIS         STA         STA          STA         STA         STA

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

08    5    18         5  28       3  38       5     48       1  58        1  68       5  78       4   88        3   98        1  A8       2  B8       3  C8       4   D8       4  E8       3  F8       3

BRSET4     BSET4            BHCC         LSL           LSLA        LSLX          LSL         LSL          PULX          CLC         EOR         EOR         EOR          EOR         EOR         EOR

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

09    5    19         5  29       3  39       5     49       1  59        1  69       5  79       4   89        2   99        1  A9       2  B9       3  C9       4   D9       4  E9       3  F9       3

BRCLR4     BCLR4            BHCS         ROL           ROLA        ROLX          ROL         ROL         PSHX           SEC         ADC         ADC          ADC         ADC         ADC          ADC

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

0A    5    1A         5  2A       3  3A       5     4A       1  5A        1  6A       5  7A       4   8A        3   9A        1  AA       2  BA       3  CA       4   DA       4  EA       3  FA       3

BRSET5     BSET5             BPL         DEC           DECA        DECX          DEC         DEC          PULH           CLI        ORA         ORA         ORA          ORA         ORA         ORA

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

0B    5    1B         5  2B       3  3B       7     4B       4  5B        4  6B       7  7B       6   8B        2   9B        1  AB       2  BB       3  CB       4   DB       4  EB       3  FB       3

BRCLR5     BCLR5             BMI        DBNZ        DBNZA       DBNZX           DBNZ        DBNZ         PSHH            SEI        ADD         ADD          ADD         ADD         ADD          ADD

3     DIR  2    DIR      2   REL     3   DIR        2   INH     2   INH      3   IX1     2        IX  1    INH      1    INH     2   IMM     2   DIR     3   EXT      3   IX2     2    IX1    1        IX

0C    5    1C         5  2C       3  3C       5     4C       1  5C        1  6C       5  7C       4   8C        1   9C        1              BC       3  CC       4   DC       4  EC       3  FC       3

BRSET6     BSET6             BMC         INC           INCA        INCX          INC         INC         CLRH           RSP                      JMP         JMP         JMP          JMP         JMP

3     DIR  2    DIR      2   REL     2   DIR        1   INH     1   INH      2   IX1     1        IX  1    INH      1    INH                 2   DIR     3   EXT      3   IX2     2    IX1    1        IX

0D    5    1D         5  2D       3  3D       4     4D       1  5D        1  6D       4  7D       3                 9D        1  AD       5  BD       5  CD       6   DD       6  ED       5  FD       5

BRCLR6     BCLR6             BMS         TST           TSTA        TSTX          TST         TST                        NOP          BSR         JSR         JSR          JSR         JSR         JSR

3     DIR  2    DIR      2   REL     2   DIR        1   INH     1   INH      2   IX1     1        IX                1    INH     2   REL     2   DIR     3   EXT      3   IX2     2    IX1    1        IX

0E    5    1E         5  2E       3  3E       6     4E       5  5E        5  6E       4  7E       5   8E        2+  9E           AE       2  BE       3  CE       4   DE       4  EE       3  FE       3

BRSET7     BSET7             BIL        CPHX            MOV         MOV          MOV         MOV         STOP          Page 2        LDX         LDX         LDX          LDX         LDX         LDX

3     DIR  2    DIR      2   REL     3   EXT        3   DD      2   DIX+     3   IMD     2   IX+D     1    INH                   2   IMM     2   DIR     3   EXT      3   IX2     2    IX1    1        IX

0F    5    1F         5  2F       3  3F       5     4F       1  5F        1  6F       5  7F       4   8F        2+  9F        1  AF       2  BF       3  CF       4   DF       4  EF       3  FF       2

BRCLR7     BCLR7             BIH         CLR           CLRA        CLRX          CLR         CLR          WAIT          TXA          AIX         STX         STX          STX         STX         STX

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

INH   Inherent               REL        Relative                    SP1      Stack Pointer, 8-Bit Offset

IMM   Immediate              IX         Indexed, No Offset          SP2      Stack Pointer, 16-Bit Offset

DIR   Direct                 IX1        Indexed, 8-Bit Offset       IX+      Indexed, No Offset with

EXT   Extended               IX2        Indexed, 16-Bit Offset               Post Increment

DD    DIR to DIR             IMD        IMM to DIR                  IX1+     Indexed, 1-Byte Offset with

IX+D  IX+ to DIR             DIX+       DIR to IX+                           Post Increment                                                  Opcode in

                                                                                                                                          Hexadecimal    F0       3   HCS08 Cycles

                                                                                                                                                             SUB      Instruction Mnemonic

                                                                                                                                     Number of Bytes     1        IX  Addressing Mode

                                                                    MC9S08SH32 Series Data Sheet, Rev. 3

   Freescale Semiconductor                                                                                                                                                                        111
Chapter 7 Central Processor       Unit        (S08CPUV3)

                                                          Table 7-3. Opcode                   Map (Sheet    2  of  2)

Bit-Manipulation   Branch                     Read-Modify-Write                                    Control                                 Register/Memory

                                                                     9E60     6                                                                     9ED0    5  9EE0    4

                                                                        NEG                                                                            SUB        SUB

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                     9E61     6                                                                     9ED1    5  9EE1    4

                                                                        CBEQ                                                                           CMP        CMP

                                                                     4     SP1                                                                      4     SP2  3     SP1

                                                                                                                                                    9ED2    5  9EE2    4

                                                                                                                                                       SBC        SBC

                                                                                                                                                    4     SP2  3     SP1

                                                                     9E63     6                                                                     9ED3    5  9EE3    4  9EF3     6

                                                                        COM                                                                            CPX        CPX        CPHX

                                                                     3     SP1                                                                      4     SP2  3     SP1  3     SP1

                                                                     9E64     6                                                                     9ED4    5  9EE4    4

                                                                        LSR                                                                            AND        AND

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                                                                                                    9ED5    5  9EE5    4

                                                                                                                                                       BIT        BIT

                                                                                                                                                    4     SP2  3     SP1

                                                                     9E66     6                                                                     9ED6    5  9EE6    4

                                                                        ROR                                                                            LDA        LDA

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                     9E67     6                                                                     9ED7    5  9EE7    4

                                                                        ASR                                                                            STA        STA

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                     9E68     6                                                                     9ED8    5  9EE8    4

                                                                        LSL                                                                            EOR        EOR

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                     9E69     6                                                                     9ED9    5  9EE9    4

                                                                        ROL                                                                            ADC        ADC

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                     9E6A     6                                                                     9EDA    5  9EEA    4

                                                                        DEC                                                                            ORA        ORA

                                                                     3     SP1                                                                      4     SP2  3     SP1

                                                                     9E6B     8                                                                     9EDB    5  9EEB    4

                                                                        DBNZ                                                                           ADD        ADD

                                                                     4     SP1                                                                      4     SP2  3     SP1

                                                                     9E6C     6

                                                                        INC

                                                                     3     SP1

                                                                     9E6D     5

                                                                        TST

                                                                     3     SP1

                                                                                                               9EAE     5  9EBE     6   9ECE     5  9EDE    5  9EEE    4  9EFE     5

                                                                                                                  LDHX        LDHX         LDHX        LDX        LDX        LDHX

                                                                                                               2       IX  4     IX2    3     IX1   4     SP2  3     SP1  3     SP1

                                                                     9E6F     6                                                                     9EDF    5  9EEF    4  9EFF     5

                                                                        CLR                                                                            STX        STX        STHX

                                                                     3     SP1                                                                      4     SP2  3     SP1  3     SP1

INH    Inherent             REL   Relative                SP1        Stack Pointer, 8-Bit Offset
IMM    Immediate            IX    Indexed, No Offset      SP2        Stack Pointer, 16-Bit Offset
DIR    Direct               IX1   Indexed, 8-Bit Offset   IX+        Indexed, No Offset with
EXT    Extended             IX2   Indexed, 16-Bit Offset             Post Increment
DD     DIR to DIR           IMD   IMM to DIR              IX1+       Indexed, 1-Byte Offset with
IX+D   IX+ to DIR           DIX+  DIR to IX+                         Post Increment

Note:  All Sheet 2 Opcodes  are Preceded by the Page 2 Prebyte (9E)                                         Prebyte (9E) and Opcode in

                                                                                                                        Hexadecimal     9E60     6  HCS08 Cycles
                                                                                                                                                    Instruction Mnemonic
                                                                                                                                           NEG      Addressing Mode
                                                                                                                   Number of Bytes
                                                                                                                                        3     SP1

                                                          MC9S08SH32 Series Data Sheet, Rev. 3

112                                                                                                                                           Freescale Semiconductor
Chapter 8

Analog Comparator 5-V (S08ACMPV3)

8.1    Introduction

The analog comparator module (ACMP) provides a circuit for comparing two analog input voltages or for

comparing one analog input voltage to an internal reference voltage. The comparator circuit is designed to

operate across the full range of the supply voltage (rail-to-rail operation).

Figure 8-1 shows the MC9S08SH32 Series block diagram with the ACMP highlighted.

8.1.1  ACMP Configuration Information

When using the bandgap reference voltage for input to ACMP+, the user must enable the bandgap buffer

by setting BGBE =1 in SPMSC1 see Section 5.7.6, “System Power Management Status and Control 1

Register (SPMSC1)”. For value of bandgap voltage reference see Section A.6, “DC Characteristics”.

8.1.2  ACMP/TPM Configuration Information

The ACMP module can be configured to connect the output of the analog comparator to TPM1 input

capture channel 0 by setting ACIC in SOPT2. With ACIC set, the TPM1CH0 pin is not available externally

regardless of the configuration of the TPM1 module for channel 0.

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                     113
Chapter 8 Analog Comparator 5-V (S08ACMPV3)

                                         BKGD/MS

                 HCS08 CORE

                                                  DEBUG MODULE (DBG)                                                     PTA7/TPM2CH1

            CPU              BDC                                                                                         PTA6/TPM2CH0

                                                  8-BIT MODULO TIMER                      TCLK                           PTA5/IRQ/TCLK/RESET

            HCS08 SYSTEM CONTROL                  MODULE (MTIM)                                                          PTA4/ACMPO/BKGD/MS

            RESETS AND INTERRUPTS                                                         SCL                  PORT A    PTA3/PIA3/SCL/ADP3

            MODES OF OPERATION                    IIC MODULE (IIC)                                                       PTA2/PIA2/SD/ADP2

            POWER MANAGEMENT             IRQ                                              SDA

            COP    IRQ             LVD                                                    SS                             PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                                                                                          MISO                           PTA0/PIA0/TPM1CH0/ADP0/ACMP+

                                                  SERIAL PERIPHERAL                       MOSI

                 USER FLASH                       INTERFACE MODULE (SPI)                  SPSCK

            (MC9S08SH32 = 32,768 BYTES)

            (MC9S08SH16 = 16,384 BYTES)                                                                                  PTB7/SCL/EXTAL

                                                  SERIAL COMMUNICATIONS                   RxD

                                                  INTERFACE MODULE (SCI)                  TxD                            PTB6/SDA/XTAL

                   USER RAM                                                                                              PTB5/TPM1CH1/SS

            MC9S08SH32/16 = 1024 BYTES)                                                   TCLK                 PORT B    PTB4/TPM2CH1/MISO

                                                  16-BIT TIMER/PWM                        TPM1CH0                        PTB3/PIB3/MOSI/ADP7

                                                  MODULE (TPM1)                           TPM1CH1                        PTB2/PIB2/SPSCK/ADP6

            REAL-TIME COUNTER (RTC)

                                                                                          TCLK                           PTB1/PIB1/TxD/ADP5

            40-MHz INTERNAL CLOCK                 16-BIT TIMER/PWM                        TPM2CH0                        PTB0/PIB0/RxD/ADP4

                 SOURCE (ICS)                     MODULE (TPM2)

                                                                                          TPM2CH1

            LOW-POWER OSCILLATOR         EXTAL

            31.25 kHz to 38.4 kHz                                                         ACMPO

                 1 MHz to 16 MHz         XTAL     ANALOG COMPARATOR                       ACMP–

                   (XOSC)                                                         (ACMP)                                 PTC7/ADP15

                                                                                          ACMP+                          PTC6/ADP14

VSS                                                                                                                      PTC5/ADP13

VDD         VOLTAGE REGULATOR                                                     10-BIT  ADP15-ADP0           PORT C    PTC4/ADP12

                                                  ANALOG-TO-DIGITAL                                                      PTC3/ADP11

VDDA/VREFH         VDDA                           CONVERTER (ADC)                                                        PTC2/ADP10

VSSA/VREFL         VSSA                                                                                                  PTC1/TPM1CH1/ADP9

                   VREFH                                                                                                 PTC0/TPM1CH0/ADP8

                   VREFL

                 = Pin can be enabled as part of the ganged output drive feature

            NOTE:  - PTC7-PTC0 and PTA7-PTA6 not available on 16--pin Packages

                   - PTC7-PTC4 and PTA7-PTA6 not available on 20-pin Packages

                   - For the 16-pin and 20-pin packages: VDDA/VREFH and VSSA/VREFL , are double bonded to VDD  and  VSS  respectively.

                   - When PTA4 is configured as BKGD, pin becomes bi-directional.

            Figure 8-1. MC9S08SH32 Series Block Diagram Highlighting ACMP Block and Pins

                                         MC9S08SH32 Series Data Sheet, Rev. 3

114                                                                                                                      Freescale Semiconductor
                                                                            Chapter 8 Analog Comparator (S08ACMPV3)

8.2      Features

The ACMP has the following features:

•      Full rail to rail supply operation.

•      Selectable interrupt on rising edge, falling edge, or either rising or falling edges of comparator

       output.

•      Option to compare to fixed internal bandgap reference voltage.

•      Option to allow comparator output to be visible on a pin, ACMPO.

•      Can operate in stop3 mode

8.3      Modes of Operation

This section defines the ACMP operation in wait, stop and background debug modes.

8.3.1    ACMP in Wait Mode

The ACMP continues to run in wait mode if enabled before executing the WAIT instruction. Therefore,

the ACMP can be used to bring the MCU out of wait mode if the ACMP interrupt, ACIE is enabled. For

lowest possible current consumption, the ACMP should be disabled by software if not required as an

interrupt source during wait mode.

8.3.2    ACMP in Stop Modes

8.3.2.1  Stop3 Mode Operation

The ACMP continues to operate in stop3 mode if enabled and compare operation remains active. If

ACOPE is enabled, comparator output operates as in the normal operating mode and comparator output is

placed onto the external pin. The MCU is brought out of stop when a compare event occurs and ACIE is

enabled; ACF flag sets accordingly.

If stop is exited with a reset, the ACMP will be put into its reset state.

8.3.2.2  Stop2 and Stop1 Mode Operation

During either stop2 and stop1 mode, the ACMP module will be fully powered down. Upon wake-up from

stop2 or stop1 mode, the ACMP module will be in the reset state.

8.3.3    ACMP in Active Background Mode

When the microcontroller is in active background mode, the ACMP will continue to operate normally.

8.4      Block Diagram

The block diagram for the Analog Comparator module is shown Figure 8-2.

                                     MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                    115
Chapter 8 Analog Comparator (S08ACMPV3)

                                                          Internal Bus

     Internal                                                                              ACMP

     Reference

                                                                                           INTERRUPT

                                            ACBGS                                 ACIE     REQUEST

                                            ACME   Status & Control               ACF

                                                          Register

                                                                                  ACOPE

ACMP+                                              ACMOD            set ACF

                                         +                Interrupt

                                         -                Control

ACMP-           Comparator

                                                                                           ACMPO

                Figure 8-2. Analog Comparator      5V (ACMP5) Block               Diagram

                                            MC9S08SH32 Series Data Sheet, Rev. 3

116                                                                                        Freescale Semiconductor
                                                                          Chapter 8 Analog Comparator (S08ACMPV3)

8.5    External Signal Description

The ACMP has two analog input pins, ACMP+ and ACMP- and one digital output pin ACMPO. Each of

these pins can accept an input voltage that varies across the full operating voltage range of the MCU. As

shown in Figure 8-2, the ACMP- pin is connected to the inverting input of the comparator, and the ACMP+

pin is connected to the comparator non-inverting input if ACBGS is a 0. As shown in Figure 8-2, the

ACMPO pin can be enabled to drive an external pin.

The signal properties of ACMP are shown in Table 8-1.

                                 Table 8-1. Signal Properties

                         Signal                    Function               I/O

                         ACMP-   Inverting analog input to the ACMP.      I

                                 (Minus input)

                         ACMP+   Non-inverting analog input to the ACMP.  I

                                 (Positive input)

                         ACMPO   Digital output of the ACMP.              O

8.6    Memory Map

8.6.1  Register Descriptions

The ACMP includes one register:

•      An 8-bit status and control register

Refer to the direct-page register summary in the memory section of this data sheet for the absolute address

assignments for all ACMP registers.This section refers to registers and control bits only by their names.

Some MCUs may have more than one ACMP, so register names include placeholder characters to identify

which ACMP is being referenced.

                                 MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                      117
Chapter 8 Analog Comparator (S08ACMPV3)

8.6.1.1     ACMP Status and Control Register (ACMPSC)

ACMPSC contains the status flag and control bits which are used to enable and configure the ACMP.

                    7                   6         5         4         3                 2     1         0

            R                                                         ACO

                    ACME  ACBGS                   ACF    ACIE                         ACOPE      ACMOD

            W

            Reset:  0                   0         0         0         0                 0     0         0

                          = Unimplemented

                                        Figure 8-3. ACMP Status and Control Register

                       Table 8-2. ACMP Status and Control Register Field Descriptions

     Field                                                     Description

     7      Analog Comparator Module Enable — ACME enables the ACMP module.

     ACME   0       ACMP not enabled

            1       ACMP is enabled

     6      Analog Comparator Bandgap Select — ACBGS is used to select between the bandgap reference voltage or

ACBGS       the ACMP+ pin as the input to the non-inverting input of the analog comparatorr.

            0       External pin ACMP+ selected as non-inverting input to comparator

            1       Internal reference select as non-inverting input to comparator

            Note: refer to this chapter introduction to verify if any other config bits are necessary to enable the bandgap

                    reference in the chip level.

     5      Analog Comparator Flag — ACF is set when a compare event occurs. Compare events are defined by ACMOD.

     ACF    ACF is cleared by writing a one to ACF.

            0       Compare event has not occurred

            1       Compare event has occurred

     4      Analog Comparator Interrupt Enable — ACIE enables the interrupt from the ACMP. When ACIE is set, an

     ACIE   interrupt will be asserted when ACF is set.

            0       Interrupt disabled

            1       Interrupt enabled

     3      Analog Comparator Output — Reading ACO will return the current value of the analog comparator output. ACO

     ACO    is reset to a 0 and will read as a 0 when the ACMP is disabled (ACME = 0).

     2      Analog Comparator Output Pin Enable — ACOPE is used to enable the comparator output to be placed onto

ACOPE       the external pin, ACMPO.

            0       Analog comparator output not available on ACMPO

            1       Analog comparator output is driven out on ACMPO

     1:0    Analog Comparator Mode — ACMOD selects the type of compare event which sets ACF.

ACMOD       00 Encoding 0 — Comparator output falling edge

            01 Encoding 1 — Comparator output rising edge

            10 Encoding 2 — Comparator output falling edge

            11 Encoding 3 — Comparator output rising or falling edge

                                           MC9S08SH32 Series Data Sheet, Rev. 3

118                                                                                           Freescale Semiconductor
                                                               Chapter 8 Analog Comparator (S08ACMPV3)

8.7  Functional Description

The analog comparator can be used to compare two analog input voltages applied to ACMP+ and ACMP-;

or it can be used to compare an analog input voltage applied to ACMP- with an internal bandgap reference

voltage. ACBGS is used to select between the bandgap reference voltage or the ACMP+ pin as the input

to the non-inverting input of the analog comparator. The comparator output is high when the non-inverting

input is greater than the inverting input, and is low when the non-inverting input is less than the inverting

input. ACMOD is used to select the condition which will cause ACF to be set. ACF can be set on a rising

edge of the comparator output, a falling edge of the comparator output, or either a rising or a falling edge

(toggle). The comparator output can be read directly through ACO. The comparator output can be driven

onto the ACMPO pin using ACOPE.

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                        119
Chapter  8  Analog  Comparator  (S08ACMPV3)

                                             MC9S08SH32  Series  Data  Sheet,  Rev.  3

120                                                                                     Freescale Semiconductor
Chapter 9

Analog-to-Digital Converter (S08ADCV1)

9.1    Introduction

The 10-bit analog-to-digital converter (ADC) is a successive approximation ADC designed for operation

within an integrated microcontroller system-on-chip.

                                         NOTE

       •   MC9S08SH32 Series devices operate at a higher voltage range (2.7 V to

           5.5 V) and do not include stop1 mode. Please ignore references to stop1.

       •   MC9S08SH32 Series devices have up to 16 analog inputs.

           Consequently, the APCTL3 register is not available on these devices.

The ADC channel assignments, alternate clock function, and hardware trigger function are configured as

described below for the MC9S08SH32 Series family of devices.

9.1.1  Channel Assignments

The ADC channel assignments for the MC9S08SH32 Series devices are shown in Table 9-1. Reserved

channels convert to an unknown value.This chapter shows bits for all S08ADCV1 channels.

MC9S08SH32 Series MCUs do not use all of these channels. All bits corresponding to channels that are

not available on a device are reserved.

                         Table 9-1. ADC Channel Assignment

ADCH   Channel           Input                                ADCH   Channel             Input

00000     AD0            PTA0/AD0                             10000  AD16                VSS

00001     AD1            PTA1/ADP1                            10001  AD17                VSS

00010     AD2            PTA2/ADP2                            10010  AD18                VSS

00011     AD3            PTA3/ADP3                            10011  AD19                VSS

00100     AD4            PTB0/ADP4                            10100  AD20                VSS

00101     AD5            PTB1/ADP5                            10101  AD21                VSS

00110     AD6            PTB2/ADP6                            10110  AD22                Reserved

00111     AD7            PTB3/ADP7                            10111  AD23                Reserved

01000     AD8            PTC0/ADP8                            11000  AD24                Reserved

01001     AD9            PTC1/ADP9                            11001  AD25                Reserved

01010  AD10              PTC2/ADP10                           11010  AD26        Temperature Sensor1

01011  AD11              PTC3/ADP11                           11011  AD27            Internal Bandgap2

01100  AD12              PTC4/ADP12                           11100  -                   Reserved

01101  AD13              PTC5/ADP13                           11101  VREFH               VDD

01110  AD14              PTC6/ADP14                           11110  VREFL               VSS

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                 121
Chapter 9 Analog-to-Digital Converter (S08ADCV1)

                                Table 9-1. ADC Channel Assignment (continued)

   ADCH      Channel            Input                                 ADCH   Channel          Input

   01111     AD15               PTC7/ADP15                            11111  Module Disabled  None

1  For information, see Section 9.1.5, “Temperature Sensor”.

2  Requires BGBE =1 in SPMSC1 see Section 5.7.6, “System Power Management Status and Control 1 Register (SPMSC1)”. For

   value of bandgap voltage reference see A.6, “DC Characteristics”.

9.1.2        Analog Power and Ground Signal Names

References to VDDAD and VSSAD in this chapter correspond to signals VDDA and VSSA, respectively.

9.1.3        Alternate Clock

The ADC module is capable of performing conversions using the MCU bus clock, the bus clock divided

by two, the local asynchronous clock (ADACK) within the module, or the alternate clock, ALTCLK. The

alternate clock for the MC9S08SH32 Series MCU devices is the external reference clock (ICSERCLK).

The selected clock source must run at a frequency such that the ADC conversion clock (ADCK) runs at a

frequency within its specified range (fADCK) after being divided down from the ALTCLK input as

determined by the ADIV bits.

ALTCLK is active while the MCU is in wait mode provided the conditions described above are met. This

allows ALTCLK to be used as the conversion clock source for the ADC while the MCU is in wait mode.

ALTCLK cannot be used as the ADC conversion clock source while the MCU is in either stop2 or stop3.

9.1.4        Hardware Trigger

The ADC hardware trigger, ADHWT, is the output from the real time counter (RTC). The RTC counter

can be clocked by either ICSERCLK, ICSIRCLK or a nominal 1 kHz clock source.

The period of the RTC is determined by the input clock frequency, the RTCPS bits, and the RTCMOD

register. When the ADC hardware trigger is enabled, a conversion is initiated upon an RTC counter

overflow. The RTIE does not have to be set for RTC to cause a hardware trigger.

The RTC can be configured to cause a hardware trigger in MCU run, wait, and stop3.

9.1.5        Temperature Sensor

To use the on-chip temperature sensor, the user must perform the following:

     •    Configure ADC for long sample with a maximum of 1 MHz clock

     •    Convert the bandgap voltage reference channel (AD27)

          —  By converting the digital value of the bandgap voltage reference channel using the value of

             VBG the user can determine VDD. For value of bandgap voltage, see Section A.6, “DC

             Characteristics”.

     •    Convert the temperature sensor channel (AD26)

                                MC9S08SH32 Series Data Sheet, Rev. 3

122                                                                                           Freescale Semiconductor
                                                                 Chapter 9 Analog-to-Digital Converter (S08ADCV1)

        — By using the calculated value of VDD, convert the digital value of AD26 into a voltage, VTEMP

Equation 9-1 provides an approximate transfer function of the temperature sensor.

                         Temp = 25 - ((VTEMP -VTEMP25) ÷ m)                                            Eqn. 9-1

where:

        —  VTEMP is the voltage of the temperature sensor channel at the ambient temperature.

        —  VTEMP25 is the voltage of the temperature sensor channel at 25°C.

        —  m is the hot or cold voltage versus temperature slope in V/°C.

For temperature calculations, use the VTEMP25 and m values from the ADC Electricals table.

In application code, the user reads the temperature sensor channel, calculates VTEMP, and compares to

VTEMP25. If VTEMP is greater than VTEMP25 the cold slope value is applied in Equation 9-1. If VTEMP is

less than VTEMP25 the hot slope value is applied in Equation 9-1. To improve accuracy the user should

calibrate the bandgap voltage reference and temperature sensor.

Calibrating at 25°C will improve accuracy to ± 4.5°C.

Calibration at three points, -40°C, 25°C, and 125°C will improve accuracy to ± 2.5°C. Once calibration

has been completed, the user will need to calculate the slope for both hot and cold. In application code, the

user would then calculate the temperature using Equation 9-1 as detailed above and then determine if the

temperature is above or below 25°C. Once determined if the temperature is above or below 25°C, the user

can recalculate the temperature using the hot or cold slope value obtained during calibration.

                         MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                        123
Chapter 9 Analog-to-Digital Converter (S08ADCV1)

                                               BKGD/MS

                      HCS08 CORE

                                                        DEBUG MODULE (DBG)                                                      PTA7/TPM2CH1

                 CPU              BDC                                                                                           PTA6/TPM2CH0

                                                        8-BIT MODULO TIMER                          TCLK                        PTA5/IRQ/TCLK/RESET

                 HCS08 SYSTEM CONTROL                   MODULE (MTIM)                                                           PTA4/ACMPO/BKGD/MS

                 RESETS AND INTERRUPTS                                                              SCL                 PORT A  PTA3/PIA3/SCL/ADP3

                 MODES OF OPERATION                     IIC MODULE (IIC)                                                        PTA2/PIA2/SD/ADP2

                 POWER MANAGEMENT              IRQ                                                  SDA

                 COP    IRQ             LVD                                                         SS                          PTA1/PIA1/TPM2CH0/ADP1/ACMP–

                                                                                                    MISO                        PTA0/PIA0/TPM1CH0/ADP0/ACMP+

                                                        SERIAL PERIPHERAL                           MOSI

                      USER FLASH                        INTERFACE MODULE (SPI)                      SPSCK

                 (MC9S08SH32 = 32,768 BYTES)

                 (MC9S08SH16 = 16,384 BYTES)

                                                        SERIAL COMMUNICATIONS                       RxD                         PTB7/SCL/EXTAL

                                                        INTERFACE MODULE (SCI)                      TxD                         PTB6/SDA/XTAL

                        USER RAM                                                                                                PTB5/TPM1CH1/SS

                 (MC9S08SH32/16 = 1024 BYTES)                                                       TCLK                PORT B  PTB4/TPM2CH1/MISO

                                                        16-BIT TIMER/PWM                            TPM1CH0                     PTB3/PIB3/MOSI/ADP7

                                                        MODULE (TPM1)                               TPM1CH1                     PTB2/PIB2/SPSCK/ADP6

                 REAL-TIME COUNTER (RTC)

                                                                                                    TCLK                        PTB1/PIB1/TxD/ADP5

                 40-MHz INTERNAL CLOCK                  16-BIT TIMER/PWM                            TPM2CH0                     PTB0/PIB0/RxD/ADP4

                      SOURCE (ICS)                      MODULE (TPM2)

                                                                                                    TPM2CH1

                 LOW-POWER OSCILLATOR          EXTAL

                 31.25 kHz to 38.4 kHz                                                              ACMPO

                      1 MHz to 16 MHz          XTAL     ANALOG COMPARATOR                           ACMP–

                        (XOSC)                                                         (ACMP)                                   PTC7/ADP15

                                                                                                    ACMP+                       PTC6/ADP14

     VSS                                                                                                                        PTC5/ADP13

     VDD         VOLTAGE REGULATOR                                                     10-BIT       ADP15-ADP0          PORT C  PTC4/ADP12

                                                        ANALOG-TO-DIGITAL                                                       PTC3/ADP11

     VDDA/VREFH         VDDA                            CONVERTER (ADC)                                                         PTC2/ADP10

     VSSA/VREFL         VSSA                                                                                                    PTC1/TPM1CH1/ADP9

                        VREFH                                                                                                   PTC0/TPM1CH0/ADP8

                        VREFL

                      = Pin can be enabled as part of the ganged output drive feature

                 NOTE:  PTC7-PTC0 and PTA7-PTA6 not available on 16--pin Packages

                        PTC7-PTC4 and PTA7-PTA6 not available on 20-pin Packages

                        For the 16-pin and 20-pin packages: VDDA/VREFH and VSSA/VREFL , are double  bonded to VDD  and  VSS     respectively.

                        When PTA4 is configured as BKGD, pin becomes bi-directional.

                 Figure 9-1. MC9S08SH32 Series Block Diagram Highlighting ADC Block and Pins

                                               MC9S08SH32 Series Data Sheet, Rev. 3

124                                                                                                                             Freescale Semiconductor
                                                                    Chapter 9 Analog-to-Digital Converter (S08ADCV1)

9.1.6  Features

Features of the ADC module include:

•      Linear successive approximation algorithm with 10 bits resolution.

•      Up to 28 analog inputs.

•      Output formatted in 10- or 8-bit right-justified format.

•      Single or continuous conversion (automatic return to idle after single conversion).

•      Configurable sample time and conversion speed/power.

•      Conversion complete flag and interrupt.

•      Input clock selectable from up to four sources.

•      Operation in wait or stop3 modes for lower noise operation.

•      Asynchronous clock source for lower noise operation.

•      Selectable asynchronous hardware conversion trigger.

•      Automatic compare with interrupt for less-than, or greater-than or equal-to, programmable value.

9.1.7  Block Diagram

Figure 9-2 provides a block diagram of the ADC module

                                MC9S08SH32 Series Data Sheet, Rev. 3

Freescale Semiconductor                                                                                  125
Chapter  9  Analog-to-Digital  Converter (S08ADCV1)

            3  Compare true                ADCSC1                                                             ADCCFG

                                     AIEN  COCO   ADCO  complete            ADTRG    MODE      ADLSMP  ADLPC                        ADICLK

                               ADCH                                                                                    ADIV                       Async

                                     1     2                                                                                                      Clock Gen

                                                                                                                                            ADACK

            MCU STOP                                                                                          ADCK     Clock                                 Bus Clock

            ADHWT                                       Control                    Sequencer                           Divide                     ÷2

                                                        initialize  sample  convert  transfer                                                                ALTCLK

                                                                                               abort

            AD0

                      •••                                                                                                           AIEN    1                           Interrupt

                                           ADVIN                                                                                    COCO    2

                                                                                     SAR Converter

            AD27

            VREFH                                                                    Data Registers

            VREFL                                                                                             Sum

                                                                                                                       Compare true            3

                                                                                                              Compare

                                                                                                              Logic

                                                                                     Value                                   ACFGT

                                                        Compare Value Registers                                              ADCSC2

                                                                    Figure 9-2. ADC Block Diagram

9.2         External Signal                       Description

The ADC module supports up to                     28 separate analog inputs. It also requires                                                     four       supply/reference/ground

connections.

                                                                    Table                      9-2.    Signal Properties

                                                        Name                                                           Function

                                                  AD27–AD0                                                         Analog Channel inputs

                                                        VREFH                                                      High reference voltage

                                                        VREFL                                                      Low reference voltage

                                                        VDDAD                                                      Analog power supply