MCHC812A4PV5 [FREESCALE]

Microcontrollers; 微控制器
MCHC812A4PV5
型号: MCHC812A4PV5
厂家: Freescale    Freescale
描述:

Microcontrollers
微控制器

微控制器
文件: 总242页 (文件大小:1492K)
中文:  中文翻译
下载:  下载PDF数据表文档文件
MC68HC812A4  
Data Sheet  
M68HC12  
Microcontrollers  
MC68HC812A4  
Rev. 7  
05/2006  
freescale.com  
MC68HC812A4  
Data Sheet  
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. For your  
convenience, the page number designators have been linked to the appropriate location.  
Revision History  
Revision  
Level  
Page  
Number(s)  
Date  
Description  
Figure 1-3. Expanded Wide Mode SRAM Expansion Schematic — Figure  
title changed from FLASH EEPROM to SRAM and address line designators  
corrected  
40  
42  
Figure 1-4. Expanded Narrow Mode SRAM Expansion Schematic — Figure  
title changed from FLASH EEPROM to SRAM and address line designators  
corrected  
August,  
2001  
(Continued  
on next  
page)  
Figure 8-16. Chip-Select Control Register 0 (CSCTL0) — Corrected reset  
value for CSPOE (bit 5)  
138  
156  
170  
209  
4
Figure 10-1. Clock Module Block Diagram — Corrected E- and P-clock  
generator options  
Figure 11-1. PLL Block Diagram — Revised diagram to show correct  
placement of divide-by-two block  
12.11.2 Timer Port Data Direction Register — Descriptive paragraph added  
for clarity  
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.  
© Freescale Semiconductor, Inc., 2006. All rights reserved.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
3
Revision History  
Revision History  
Revision  
Level  
Page  
Number(s)  
Date  
Description  
12.11.3 Data Direction Register for Timer Port — Repetitive information  
removed. See 12.11.2 Timer Port Data Direction Register  
209  
329  
334  
August,  
2001  
(Continued)  
18.12 Control Timing — Minimum values added for PWIRQ and PWTIM  
4
5
18.14 Non-Multiplexed Expansion Bus Timing Table heading changed to  
reflect minimum and maximum values at 8 MHz  
Table 12-3. Prescaler Selection — Added value column and updated prescale  
factors  
197  
328  
40  
September,  
2001  
18.11 EEPROM Characteristics — Corrected minimum and maximum values  
for programming and erase times  
Figure 1-3. Expanded Wide Mode SRAM Expansion Schematic — On sheet  
1 of this schematic removed reference to resistor R2  
August,  
2002  
Figure 1-4. Expanded Narrow Mode SRAM Expansion Schematic — On  
sheet 1 of this schematic removed reference to resistor R2  
6
42  
4.6.2 External Reset — Corrected reference to eight E-clock cycles to nine  
E-clock cycles  
77  
Throughout  
18  
Updated to meet Freescale identity guidelines.  
1.3 Ordering Information — Updated Table 1-1. Ordering Information and  
added Figure 1-1. Device Numbering System.  
Figure 1-4. Expanded Wide Mode SRAM Expansion Schematic (Sheet 1 of 3)  
— Updated sheet 1 and corrected title for sheets 2 and 3.  
24  
26  
Figure 1-5. Expanded Narrow Mode SRAM Expansion Schematic (Sheet 1 of 3)  
— Updated sheet 1 and corrected title for sheets 2 and 3.  
Figure 3-9. Condition Code Register (CCR) — Corrected reset state for bit 7.  
Table 4-1. Interrupt Vector Map — Corrected reference to clock monitor reset.  
4.5 Resets — Reworked paragraph for clarity.  
46  
50  
52  
Figure 5-1. Mode Register (MODE) — Changed reset state designator from  
Peripheral to Special peripheral.  
58  
Figure 10-3. Clock Function Register Map — Removed reference to Special  
Reset for the COP Control Register.  
May,  
2006  
102  
7
Figure 10-9. COP Control Register (COPCTL) — Corrected reset states.  
12.4.1 Prescaler — Corrected number of prescaler divides.  
107  
122  
131  
207  
Figure 12-17. Timer Mask 2 Register (TMSK2) — Corrected reset state for bit 4.  
Table 16-5. ATD Interrupt Sources — Corrected table title.  
18.2 Functional Operating Range — Corrected operating temperature range  
entries.  
222  
226  
18.10 EEPROM Characteristics — Corrected minimum value for minimum  
programming clock frequency.  
18.11 Control Timing — Corrected maximum value for frequency of operation.  
18.12 Peripheral Port Timing — Corrected table heading.  
227  
231  
19.2 Package Dimensions — Replaced package dimension drawing with the  
latest available.  
237  
MC68HC812A4 Data Sheet, Rev. 7  
4
Freescale Semiconductor  
List of Chapters  
Chapter 1 General Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17  
Chapter 2 Register Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29  
Chapter 3 Central Processor Unit (CPU12). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43  
Chapter 4 Resets and Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49  
Chapter 5 Operating Modes and Resource Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55  
Chapter 6 Bus Control and Input/Output (I/O) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63  
Chapter 7 EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73  
Chapter 8 Memory Expansion and Chip-Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79  
Chapter 9 Key Wakeups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93  
Chapter 10 Clock Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101  
Chapter 11 Phase-Lock Loop (PLL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111  
Chapter 12 Standard Timer Module. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117  
Chapter 13 Multiple Serial Interface (MSI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143  
Chapter 14 Serial Communications Interface Module (SCI) . . . . . . . . . . . . . . . . . . . . . . .151  
Chapter 15 Serial Peripheral Interface (SPI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179  
Chapter 16 Analog-to-Digital Converter (ATD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195  
Chapter 17 Development Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211  
Chapter 18 Electrical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221  
Chapter 19 Mechanical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
5
List of Chapters  
MC68HC812A4 Data Sheet, Rev. 7  
6
Freescale Semiconductor  
Table of Contents  
Chapter 1  
General Description  
1.1  
1.2  
1.3  
1.4  
1.5  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17  
Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17  
Ordering Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18  
Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19  
Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20  
Chapter 2  
Register Block  
2.1  
2.2  
2.3  
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  
Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29  
Modes of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42  
Chapter 3  
Central Processor Unit (CPU12)  
3.1  
3.2  
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43  
Programming Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43  
3.3  
CPU Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44  
Accumulators A and B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44  
Accumulator D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44  
Index Registers X and Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45  
Stack Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45  
Program Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45  
Condition Code Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46  
3.3.1  
3.3.2  
3.3.3  
3.3.4  
3.3.5  
3.3.6  
3.4  
3.5  
3.6  
3.7  
Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46  
Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47  
Indexed Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48  
Opcodes and Operands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48  
Chapter 4  
Resets and Interrupts  
4.1  
4.2  
4.3  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49  
Exception Priority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49  
Maskable Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49  
4.4  
4.4.1  
4.4.2  
Interrupt Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51  
Interrupt Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51  
Highest Priority I Interrupt Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
7
Table of Contents  
4.5  
Resets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  
4.5.1  
4.5.2  
4.5.3  
4.5.4  
Power-On Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  
External Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  
COP Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  
Clock Monitor Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  
4.6  
Effects of Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Operating Mode and Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Clock and Watchdog Control Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Parallel I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Central Processor Unit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
Other Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53  
4.6.1  
4.6.2  
4.6.3  
4.6.4  
4.6.5  
4.6.6  
4.6.7  
4.7  
Interrupt Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54  
Chapter 5  
Operating Modes and Resource Mapping  
5.1  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55  
5.2  
5.2.1  
Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55  
Normal Operating Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55  
Normal Expanded Wide Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Normal Expanded Narrow Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Normal Single-Chip Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Special Operating Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Special Expanded Wide Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Special Expanded Narrow Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Special Single-Chip Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Special Peripheral Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
Background Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56  
5.2.1.1  
5.2.1.2  
5.2.1.3  
5.2.2  
5.2.2.1  
5.2.2.2  
5.2.2.3  
5.2.2.4  
5.2.3  
5.3  
Internal Resource Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57  
5.4  
Mode and Resource Mapping Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58  
Mode Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58  
Register Initialization Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59  
RAM Initialization Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60  
EEPROM Initialization Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60  
Miscellaneous Mapping Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61  
5.4.1  
5.4.2  
5.4.3  
5.4.4  
5.4.5  
5.5  
Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62  
Chapter 6  
Bus Control and Input/Output (I/O)  
6.1  
6.2  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
Detecting Access Type from External Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
6.3  
Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63  
Port A Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64  
Port A Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64  
Port B Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65  
Port B Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65  
6.3.1  
6.3.2  
6.3.3  
6.3.4  
MC68HC812A4 Data Sheet, Rev. 7  
8
Freescale Semiconductor  
6.3.5  
6.3.6  
6.3.7  
6.3.8  
Port C Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66  
Port C Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66  
Port D Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67  
Port D Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67  
Port E Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68  
Port E Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68  
Port E Assignment Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69  
Pullup Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71  
Reduced Drive Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72  
6.3.9  
6.3.10  
6.3.11  
6.3.12  
6.3.13  
Chapter 7  
EEPROM  
7.1  
7.2  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73  
EEPROM Programmer’s Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73  
7.3  
EEPROM Control Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74  
EEPROM Module Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74  
EEPROM Block Protect Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75  
EEPROM Test Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75  
EEPROM Programming Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76  
7.3.1  
7.3.2  
7.3.3  
7.3.4  
Chapter 8  
Memory Expansion and Chip-Select  
8.1  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79  
8.2  
8.2.1  
8.2.2  
Generation of Chip-Selects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80  
Chip-Selects Independent of Memory Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80  
Chip-Selects Used in Conjunction with Memory Expansion . . . . . . . . . . . . . . . . . . . . . . . . 81  
8.3  
Chip-Select Stretch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84  
8.4  
Memory Expansion Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85  
Port F Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85  
Port G Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85  
Port F Data Direction Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86  
Port G Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86  
Data Page Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86  
Program Page Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87  
Extra Page Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87  
Window Definition Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87  
Memory Expansion Assignment Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88  
8.4.1  
8.4.2  
8.4.3  
8.4.4  
8.4.5  
8.4.6  
8.4.7  
8.4.8  
8.4.9  
8.5  
Chip-Selects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88  
8.6  
Chip-Select Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89  
Chip-Select Control Register 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89  
Chip-Select Control Register 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90  
Chip-Select Stretch Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91  
8.6.1  
8.6.2  
8.6.3  
8.7  
Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
9
Table of Contents  
Chapter 9  
Key Wakeups  
9.1  
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93  
9.2  
Key Wakeup Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93  
Port D Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93  
Port D Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94  
Port D Key Wakeup Interrupt Enable Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94  
Port D Key Wakeup Flag Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95  
Port H Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95  
Port H Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96  
Port H Key Wakeup Interrupt Enable Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96  
Port H Key Wakeup Flag Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96  
Port J Data Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97  
Port J Data Direction Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97  
Port J Key Wakeup Interrupt Enable Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97  
Port J Key Wakeup Flag Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98  
Port J Key Wakeup Polarity Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98  
Port J Pullup/Pulldown Select Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99  
Port J Pullup/Pulldown Enable Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99  
9.2.1  
9.2.2  
9.2.3  
9.2.4  
9.2.5  
9.2.6  
9.2.7  
9.2.8  
9.2.9  
9.2.10  
9.2.11  
9.2.12  
9.2.13  
9.2.14  
9.2.15  
Chapter 10  
Clock Module  
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101  
10.2 Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101  
10.2.1  
Clock Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101  
10.3 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102  
10.4 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103  
10.4.1  
10.4.2  
10.4.3  
10.4.4  
Computer Operating Properly (COP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103  
Real-Time Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103  
Clock Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103  
Peripheral Clock Divider Chains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103  
10.5 Registers and Reset Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105  
10.5.1  
10.5.2  
10.5.3  
10.5.4  
Real-Time Interrupt Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105  
Real-Time Interrupt Flag Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107  
COP Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107  
Arm/Reset COP Timer Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109  
Chapter 11  
Phase-Lock Loop (PLL)  
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111  
11.2 Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111  
11.3 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112  
11.4 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113  
11.5 Registers and Reset Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113  
11.5.1  
11.5.2  
11.5.3  
Loop Divider Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113  
Reference Divider Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114  
Clock Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114  
MC68HC812A4 Data Sheet, Rev. 7  
10  
Freescale Semiconductor  
Chapter 12  
Standard Timer Module  
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117  
12.2 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117  
12.3 Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118  
12.4 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122  
12.4.1  
12.4.2  
12.4.3  
12.4.4  
12.4.4.1  
12.4.4.2  
Prescaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122  
Input Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122  
Output Compare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122  
Pulse Accumulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123  
Event Counter Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123  
Gated Time Accumulation Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124  
12.5 Registers and Reset Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125  
12.5.1  
12.5.2  
12.5.3  
12.5.4  
12.5.5  
12.5.6  
12.5.7  
12.5.8  
12.5.9  
12.5.10  
12.5.11  
12.5.12  
12.5.13  
12.5.14  
12.5.15  
12.5.16  
12.5.17  
Timer IC/OC Select Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125  
Timer Compare Force Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125  
Timer Output Compare 7 Mask Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126  
Timer Output Compare 7 Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126  
Timer Counter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127  
Timer System Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127  
Timer Control Registers 1 and 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129  
Timer Control Registers 3 and 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130  
Timer Mask Register 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130  
Timer Mask Register 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131  
Timer Flag Register 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132  
Timer Flag Register 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132  
Timer Channel Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133  
Pulse Accumulator Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134  
Pulse Accumulator Flag Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135  
Pulse Accumulator Counter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136  
Timer Test Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137  
12.6 External Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137  
12.6.1  
12.6.2  
Input Capture/Output Compare Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137  
Pulse Accumulator Pin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
12.7 Background Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
12.8 Low-Power Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
12.8.1  
12.8.2  
12.8.3  
Run Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138  
12.9 Interrupt Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139  
12.10 General-Purpose I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139  
12.10.1  
12.10.2  
Timer Port Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139  
Timer Port Data Direction Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140  
12.11 Using the Output Compare Function to Generate a Square Wave . . . . . . . . . . . . . . . . . . . . . 141  
12.11.1  
12.11.2  
12.11.3  
Sample Calculation to Obtain Period Counts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141  
Equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141  
Code Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
11  
Table of Contents  
Chapter 13  
Multiple Serial Interface (MSI)  
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143  
13.2 SCI Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143  
13.3 SPI Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144  
13.4 MSI Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144  
13.5 MSI Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145  
13.6 General-Purpose I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147  
13.6.1  
13.6.2  
13.6.3  
13.6.4  
Port S Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147  
Port S Data Direction Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148  
Port S Pullup and Reduced Drive Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148  
Port S Wired-OR Mode Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149  
Chapter 14  
Serial Communications Interface Module (SCI)  
14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151  
14.2 Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151  
14.3 Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152  
14.4 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153  
14.5 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155  
14.5.1  
14.5.2  
14.5.3  
Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155  
Baud Rate Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156  
Transmitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156  
Character Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156  
Character Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156  
Break Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158  
Idle Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158  
Receiver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159  
Character Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159  
Character Reception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160  
Data Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160  
Framing Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164  
Baud Rate Tolerance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164  
Receiver Wakeup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165  
Single-Wire Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166  
Loop Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167  
14.5.3.1  
14.5.3.2  
14.5.3.3  
14.5.3.4  
14.5.4  
14.5.4.1  
14.5.4.2  
14.5.4.3  
14.5.4.4  
14.5.4.5  
14.5.4.6  
14.5.5  
14.5.6  
14.6 Register Descriptions and Reset Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168  
14.6.1  
14.6.2  
14.6.3  
14.6.4  
14.6.5  
14.6.6  
SCI Baud Rate Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168  
SCI Control Register 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169  
SCI Control Register 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171  
SCI Status Register 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172  
SCI Status Register 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173  
SCI Data Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174  
14.7 External Pin Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
14.7.1  
14.7.2  
TXD Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
RXD Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
MC68HC812A4 Data Sheet, Rev. 7  
12  
Freescale Semiconductor  
14.8 Modes of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
14.9 Low-Power Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
14.9.1  
14.9.2  
14.9.3  
Run Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175  
14.10 Interrupt Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176  
14.11 General-Purpose I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176  
14.12 Serial Character Transmission Using the SCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176  
14.12.1  
14.12.2  
Equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176  
Code Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177  
Chapter 15  
Serial Peripheral Interface (SPI)  
15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179  
15.2 Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179  
15.3 Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180  
15.4 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181  
15.5 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182  
15.5.1  
15.5.2  
15.5.3  
15.5.4  
15.5.5  
15.5.6  
Master Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182  
Slave Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182  
Baud Rate Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183  
Clock Phase and Polarity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183  
SS Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185  
Single-Wire Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185  
15.6 SPI Register Descriptions and Reset Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186  
15.6.1  
15.6.2  
15.6.3  
15.6.4  
15.6.5  
SPI Control Register 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186  
SPI Control Register 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187  
SPI Baud Rate Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188  
SPI Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189  
SPI Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190  
15.7 External Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190  
15.7.1  
15.7.2  
15.7.3  
15.7.4  
MISO (Master In, Slave Out) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190  
MOSI (Master Out, Slave In) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190  
SCK (Serial Clock) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190  
SS (Slave Select). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191  
15.8 Low-Power Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191  
15.8.1  
15.8.2  
15.8.3  
Run Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191  
Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191  
Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191  
15.9 Interrupt Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192  
15.10 General-Purpose I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192  
15.11 Synchronous Character Transmission Using the SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192  
15.11.1  
15.11.2  
Equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192  
Code Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
13  
Table of Contents  
Chapter 16  
Analog-to-Digital Converter (ATD)  
16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195  
16.2 Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195  
16.3 Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196  
16.4 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197  
16.5 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198  
16.6 Registers and Reset Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199  
16.6.1  
16.6.2  
16.6.3  
16.6.4  
16.6.5  
16.6.6  
16.6.7  
16.6.8  
16.6.9  
ATD Control Register 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199  
ATD Control Register 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199  
ATD Control Register 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200  
ADT Control Register 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201  
ATD Control Register 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201  
ATD Control Register 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202  
ATD Status Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204  
ATD Test Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205  
ATD Result Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206  
16.7 Low-Power Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206  
16.7.1  
16.7.2  
16.7.3  
Run Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206  
Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206  
Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207  
16.8 Interrupt Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207  
16.9 General-Purpose Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207  
16.10 Port AD Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207  
16.11 Using the ATD to Measure a Potentiometer Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208  
16.11.1  
16.11.2  
Equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208  
Code Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208  
Chapter 17  
Development Support  
17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211  
17.2 Instruction Queue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211  
17.3 Background Debug Mode (BDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212  
17.3.1  
17.3.2  
17.3.3  
BDM Serial Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212  
Enabling BDM Firmware Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213  
BDM Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215  
17.4 BDM Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217  
17.4.1  
17.4.1.1  
17.4.1.2  
17.4.2  
17.4.3  
17.4.4  
17.4.5  
BDM Instruction Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217  
Hardware Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217  
Firmware Command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218  
BDM Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219  
BDM Shift Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219  
BDM Address Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220  
BDM CCR Holding Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220  
17.5 Instruction Tagging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220  
MC68HC812A4 Data Sheet, Rev. 7  
14  
Freescale Semiconductor  
Chapter 18  
Electrical Characteristics  
18.1 Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221  
18.2 Functional Operating Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222  
18.3 Thermal Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222  
18.4 DC Electrical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223  
18.5 Supply Current. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224  
18.6 ATD Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224  
18.7 ATD DC Electrical Characteristcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225  
18.8 Analog Converter Operating Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225  
18.9 ATD AC Operating Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226  
18.10 EEPROM Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226  
18.11 Control Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227  
18.12 Peripheral Port Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231  
18.13 Non-Multiplexed Expansion Bus Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232  
18.14 SPI Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234  
Chapter 19  
Mechanical Specifications  
19.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237  
19.2 Package Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
15  
Table of Contents  
MC68HC812A4 Data Sheet, Rev. 7  
16  
Freescale Semiconductor  
Chapter 1  
General Description  
1.1 Introduction  
The MC68HC812A4 microcontroller unit (MCU) is a 16-bit device composed of standard on-chip  
peripheral modules connected by an intermodule bus. Modules include:  
16-bit central processor unit (CPU12)  
Lite integration module (LIM)  
Two asynchronous serial communications interfaces  
(SCI0 and SCI1)  
Serial peripheral interface (SPI)  
Timer and pulse accumulator module  
8-bit analog-to-digital converter (ATD)  
1-Kbyte random-access memory (RAM)  
4-Kbyte electrically erasable, programmable read-only memory (EEPROM)  
Memory expansion logic with chip selects, key wakeup ports, and a phase-locked loop (PLL)  
1.2 Features  
Features of the MC68HC812A4 include:  
Low-power, high-speed M68HC12 CPU  
Power-saving stop and wait modes  
Memory:  
1024-byte RAM  
4096-byte EEPROM  
On-chip memory mapping allows expansion to more than 5-Mbyte address space  
Single-wire background debug mode  
Non-multiplexed address and data buses  
Seven programmable chip-selects with clock stretching (expanded modes)  
8-channel, enhanced 16-bit timer with programmable prescaler:  
All channels configurable as input capture or output compare  
Flexible choice of clock source  
16-bit pulse accumulator  
Real-time interrupt circuit  
Computer operating properly (COP) watchdog  
Clock monitor  
Phase-locked loop (PLL)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
17  
General Description  
Two enhanced asynchronous non-return-to-zero (NRZ) serial communication interfaces (SCI)  
Enhanced synchronous serial peripheral interface (SPI)  
8-channel, 8-bit analog-to-digital converter (ATD)  
Up to 24 key wakeup lines with interrupt capability  
Available in 112-lead low-profile quad flat pack (LQFP) packaging  
1.3 Ordering Information  
The MC68HC812A4 is available in 112-lead low-profile quad flat pack (LQFP) packaging.  
Operating temperature range and voltage requirements are specified when ordering the MC68HC812A4  
device. Refer to Table 1-1 for part numbers and to Figure 1-1 for details of the device numbering system.  
Table 1-1. Ordering Information  
Temperature  
Frequency  
(MHz)  
Order Number  
Voltage  
Range  
Designator  
MC68HC812A4CPV8  
XC68HC812A4PV5  
–40 to +85°C  
0 to +70°C  
C
5.0  
3.3  
8.0  
5.0  
M C H C 8 1 2 A 4 X XX E  
Pb FREE  
FAMILY  
PACKAGE DESIGNATOR  
TEMPERATURE RANGE  
Figure 1-1. Device Numbering System  
Evaluation boards, assemblers, compilers, and debuggers are available from Freescale and from  
third-party suppliers. An up-to-date list of products that support the M68HC12 Family of microcontrollers  
can be found on the World Wide Web at this URL:  
http://freescale.com  
Documents to assist in product selection are available from the Freescale Literature Distribution Center  
or local Freescale sales offices.  
MC68HC812A4 Data Sheet, Rev. 7  
18  
Freescale Semiconductor  
Block Diagram  
1.4 Block Diagram  
V
V
V
V
V
RH  
RH  
V
1-KBYTE SRAM  
4-KBYTE EEPROM  
CPU12  
RL  
DDA  
RL  
V
DDA  
V
SSA  
SSA  
PAD7V  
V
/AN7  
AN6  
AN5  
AN4  
AN3  
AN2  
AN1  
AN0  
STBY  
STBY  
PAD6  
PAD5  
PAD4  
PAD3  
PAD2  
PAD1  
PAD0  
A/D  
CONVERTER  
BKGD/TAGHI  
RESET  
EXTAL  
SINGLE-WIRE  
BACKGROUND  
DEBUG MODULE  
PERIODIC INTERRUPT  
COP WATCHDOG  
IOC7/PAI  
IOC6  
IOC5  
IOC4  
IOC3  
IOC2  
IOC1  
IOC0  
PT7  
PT6  
PT5  
PT4  
PT3  
PT2  
PT1  
PT0  
XTAL  
XFC  
CLOCK MONITOR  
PLL CLOCK  
CONTROL  
TIM OC7  
V
DDPLL  
INTERRUPT BLOCK  
V
SSPLL  
PE7  
PE6  
PE5  
PE4  
PE3  
PE2  
PE1  
PE0  
ARST  
IPIPE1/MODB  
IPIPE0/MODA  
ECLK  
LSTRB/TAGLO  
R/W  
IRQ/V  
PS7  
PS6  
PS5  
PS4  
PS3  
PS2  
PS1  
PS0  
SS  
SCK  
SPI0  
SDO/MOSI  
SDI/MISO  
MSI  
SCI1  
PP  
TXD1  
RXD1  
TXD0  
RXD0  
XIRQ  
PJ7  
PJ6  
PJ5  
PJ4  
PJ3  
PJ2  
PJ1  
PJ0  
KWJ7  
KWJ6  
KWJ5  
KWJ4  
KWJ3  
KWJ2  
KWJ1  
KWJ0  
SCI0  
CSP1  
CSP0  
CSD  
CS3  
CS2  
CS1  
PF6  
PF5  
PF4  
PF3  
PF2  
PF1  
PF0  
LIM  
LITE INTEGRATION MODULE  
PH7  
PH6  
PH5  
PH4  
PH3  
PH2  
PH1  
PH0  
KWH7  
CS0  
KWH6  
KWH5  
KWH4  
KWH3  
KWH2  
KWH1  
KWH0  
ADDR21  
ADDR20  
ADDR19  
PG5  
PG4  
PG3  
PG2  
PG1  
PG0  
ADDR18  
ADDR17  
ADDR16  
PC7  
PC6  
PC5  
PC4  
PC3  
PC2  
PC1  
PC0  
DATA15  
DATA14  
DATA13  
DATA12  
DATA11  
DATA10  
DATA9  
ADDR15  
ADDR14  
ADDR13  
ADDR12  
PA7  
PA6  
PA5  
PA4  
PA3  
PA2  
PA1  
PA0  
V
V
x3  
DDEXT  
x3  
SSEXT  
ADDR11  
ADDR10  
ADDR9  
ADDR8  
V
x1  
x1  
DD  
V
SSI  
DATA8  
PD7  
PD6  
PD5  
PD4  
PD3  
PD2  
PD1  
PD0  
DATA7/KWD7  
DATA6/KWD6  
DATA5/KWD5  
DATA4/KWD4  
DATA3/KWD3  
DATA2/KWD2  
DATA1/KWD1  
ADDR7  
ADDR6  
ADDR5  
ADDR4  
ADDR3  
ADDR2  
ADDR1  
ADDR0  
PB7  
PB6  
PB5  
PB4  
PB3  
PB2  
PB1  
PB0  
NON-MULTIPLEXED  
DATA0/KWD0 ADDRESS/DATA BUS  
Figure 1-2. Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
19  
General Description  
1.5 Signal Descriptions  
NOTE  
A line over a signal name indicates an active low signal. For example,  
RESET is active high and RESET is active low.  
The MC68HC812A4 is available in a 112-lead low-profile quad flat pack (LQFP). The pin assignments are  
shown in Figure 1-3. Most pins perform two or more functions, as described in Table 1-2. Individual ports  
are cross referenced in Table 1-3 and Table 1-4.  
VRH  
VRL  
85  
86  
56  
55  
54  
53  
52  
51  
50  
49  
48  
47  
46  
45  
44  
43  
42  
41  
40  
39  
38  
37  
36  
35  
34  
33  
32  
31  
30  
29  
ADDR4/PB4  
ADDR3/PB3  
ADDR2/PB2  
ADDR1/PB1  
ADDR0/PB0  
ARST/PE7  
MODB/IPIPE1/PE6  
MODA/IPIPE0/PE5  
ECLK/PE4  
XTAL  
PAD0/AN0  
PAD1/AN1  
PAD2/AN2  
PAD3/AN3  
PAD4/AN4  
PAD5/AN5  
PAD6/AN6  
PAD7/AN7/VSTBY  
VDDA  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
EXTAL  
VSSPLL  
XFC  
VSSA  
PS0/RxD0  
PS1/TxD0  
PS2/RxD1  
PS3/TxD1  
PS4/SDI/MISO  
PS5/SDO/MOSI  
PS6/SCK  
97  
98  
VDDPLL  
VDDX  
VSSX  
RESET  
MC68HC812A4  
112-LEAD LQFP  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
LSTRB/TAGLO/PE3  
R/W/PE2  
PS7/SS  
IRQ/VPP/PE1  
XIRQ/PE0  
DATA15/PC7  
DATA14/PC6  
DATA13/PC5  
DATA12/PC4  
DATA11/PC3  
DATA10/PC2  
DATA9/PC1  
PT0/IOC0  
PT1/IOC1  
PT2/IOC2  
PT3/IOC3  
PT4/IOC4  
PT5/IOC5  
PT6/IOC6  
PT7/IOC7/PAI  
Figure 1-3. Pin Assignments  
MC68HC812A4 Data Sheet, Rev. 7  
20  
Freescale Semiconductor  
Signal Descriptions  
Table 1-2. Pin Descriptions  
Pin  
Port  
Description  
Operating voltage and ground for the MCU(1)  
Reference voltages for the ADC  
VDD, VSS  
VRH, VRL  
AVDD, AVSS  
Operating voltage and ground for the ADC(2)  
Power and ground for PLL clock control  
VDDPLL, VSSPLL  
Port  
AD  
VSTBY  
RAM standby power input  
Input pins for either a crystal or a CMOS compatible clock(3)  
Asynchronous, non-maskable external interrupt request input  
XTAL, EXTAL  
XIRQ  
PE0  
Asynchronous, maskable external interrupt request input with selectable falling-edge  
triggering or low-level triggering  
IRQ  
R/W  
PE1  
PE2  
PE3  
PE4  
Expansion bus data direction indicator  
General-purpose I/O; read/write in expanded modes  
Low byte strobe (0 = low byte valid)(4)  
General-purpose I/O  
LSTRB  
ECLK  
Timing reference output for external bus clock (normally, half the crystal frequency)  
General-purpose I/O  
BKGD  
MODA  
Mode-select pin determines initial operating mode of the MCU after reset  
Mode-select input determines initial operating mode of the MCU after reset(5)  
Mode-select input determines initial operating mode of the MCU after reset(5)  
PE5  
MODB  
IPIPE0  
IPIPE1  
PE6  
PE5  
PE6  
Instruction queue tracking signals for development systems  
Alternate active-high reset input  
General-purpose I/O  
ARST  
XFC  
PE7  
Loop filter pin for controlled damping of PLL VCO loop  
Active-low bidirectional control signal; input initializes MCU to known startup state; output  
when COP or clock monitor causes a reset  
RESET  
ADDR15–ADDR8  
ADDR7–ADDR0  
DATA15–DATA8  
DATA7–DATA0  
Port A  
Port B  
Port C  
Port D  
Port G  
Single-chip modes: general-purpose I/O  
Expanded modes: external bus pins  
Port D in narrow data bus mode: general-purpose I/O or key wakeup port  
ADDR21–ADDR16  
Memory expansion and general-purpose I/O  
CS3–CS0,CSD,  
CSP1, CSP0  
Chip selects  
General-purpose I/O  
Port F  
Single-wire background debug pin  
Mode-select pin that determines special or normal operating mode after reset  
BKGD  
KWD7–KWD0  
KWH7–KWH0  
Port D  
Port H  
Key wakeup pins that can generate interrupt requests on high-to-low transitions  
General-purpose I/O  
Key wakeup pins that can generate interrupt requests on any transition  
General-purpose I/O  
KWJ7–KWJ0  
Port J  
RxD0  
TxD0  
PS0  
PS1  
Receive pin for SCI0  
Transmit pin for SCI0  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
21  
General Description  
Table 1-2. Pin Descriptions (Continued)  
Pin  
RxD1  
Port  
PS2  
PS3  
PS4  
PS5  
PS6  
PS7  
Port T  
Description  
Receive pin for SCI1  
TxD1  
Transmit pin for SCI1  
SDI/MISO  
SDO/MOSI  
SCK  
Master in/slave out pin for SPI  
Master out/slave in pin for SPI  
Serial clock for SPI  
SS  
Slave select output for SPI in master mode; slave select input in slave mode  
Input capture or output compare channels and pulse accumulator input  
IOC7–IOC0  
1. The MCU operates from a single power supply. Use the customary bypass techniques as very fast signal transitions occur  
on MCU pins.  
2. Separate power supply pins allow the ADC power supply to be bypassed independently of the MCU power supply.  
3. Out of reset the frequency applied to EXTAL is twice the desired E-clock rate. On reset all device clocks are derived from  
the EXTAL input frequency. XTAL is the crystal output.  
4. LSTRB is the exclusive-NOR of A0 and the internal SZ8 signal. SZ8 indicates the size 16/8 access.  
5. After reset, MODA and MODB can be configured as instruction queue tracking signals IPIPE0 and IPIPE1 or as gener-  
al-purpose I/O pins.  
Table 1-3. Port Descriptions  
Port  
Direction  
Function  
Single-chip modes: general-purpose I/O  
Expanded modes: external address bus ADDR15–ADDR8  
Port A  
I/O  
Single-chip modes: general-purpose I/O  
Expanded modes: external address bus ADDR7–ADDR0  
Port B  
Port C  
I/O  
I/O  
I/O  
Single-chip modes: general-purpose I/O  
Expanded wide modes: external data bus DATA15–DATA8  
Expanded narrow modes: external data bus DATA15–DATA8/DATA7–DATA0  
Single-chip and expanded narrow modes: general-purpose I/O  
External data bus DATA7–DATA0 in expanded wide mode(1)  
Port D  
Port E  
Port F  
Port G  
Port H  
External interrupt request inputs, mode select inputs, bus control signals  
General-purpose I/O  
I/O and I(2)  
Chip select  
General-purpose I/O  
I/O  
I/O  
Memory expansion  
General-purpose I/O  
Key wakeup(3)  
General-purpose I/O  
I/O  
Key wakeup(4)  
General-purpose I/O  
Port J  
Port S  
Port T  
I/O  
I/O  
I/O  
I
SCI and SPI ports  
General-purpose I/O  
Timer port  
General-purpose I/O  
ADC port  
General-purpose input  
Port AD  
1. Key wakeup interrupt request can occur when an input goes from high to low.  
2. PE1 and PE0 are input-only pins.  
3. Key wakeup interrupt request can occur when an input goes from high to low.  
4. Key wakeup interrupt request can occur when an input goes from high to low or from low to high.  
MC68HC812A4 Data Sheet, Rev. 7  
22  
Freescale Semiconductor  
Signal Descriptions  
Table 1-4. Port Pullup, Pulldown, and Reduced Drive Summary  
Enable Bit  
Bit Name  
Reduced Drive Control Bit  
Port  
Name  
Resistive  
Input Loads  
Register  
(Address)  
Reset  
State  
Register  
Bit  
Reset  
State  
(Address)  
Name  
Port A  
Port B  
Port C  
Port D  
Pullup  
Pullup  
Pullup  
Pullup  
PUCR ($000C)  
PUCR ($000C)  
PUCR ($000C)  
PUCR ($000C)  
PUPA  
PUPB  
PUPC  
PUPD  
Enabled  
Enabled  
Enabled  
Enabled  
RDRIV ($000D)  
RDRIV ($000D)  
RDRIV ($000D)  
RDRIV ($000D)  
RDPAB Full drive  
RDPAB Full drive  
RDPC  
RDPD  
Full drive  
Full drive  
Port E:  
PE7, PE3,  
PE2, PE0  
Pullup  
PUCR ($000C)  
PUPE  
Enabled  
RDRIV ($000D)  
RDPE  
Full drive  
Port E:  
PE1  
Pullup  
None  
Always enabled  
RDRIV ($000D)  
RDRIV ($000D)  
RDPE  
RDPE  
Full drive  
Full drive  
Port E:  
PE4  
Port E:  
PE6 and PE5  
Pulldown  
Enabled during reset  
Port F  
Port G  
Port H  
Port J  
Pullup  
Pullup  
Pullup  
PUCR ($000C)  
PUPF  
PUPG  
PUPH  
Enabled  
Enabled  
Enabled  
RDRIV ($000D)  
RDRIV ($000D)  
RDRIV ($000D)  
RDRIV ($000D)  
SP0CR2 ($00D1)  
TMSK2 ($008D)  
RDPF  
RDPG  
RDPH  
RDPJ  
RDS  
Full drive  
Full drive  
Full drive  
Full drive  
Full drive  
Full drive  
PUCR ($000C)  
PUCR ($000C)  
PULEJ ($002E)  
SP0CR2 ($00D1)  
TMSK2 ($008D)  
Pullup/down(1)  
Pullup  
PULEJ[7:0] Disabled  
Port S  
Port T  
Port AD  
BKGD  
PUPS  
PUPT  
Enabled  
Enabled  
Pullup  
RDPT  
None  
Pullup  
Enabled  
Full drive  
1. Pullup or pulldown devices for each port J pin can be selected with the PUPSJ register ($002D). After reset, pulldowns are  
selected for all port J pins but must be enabled with PULEJ register.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
23  
General Description  
VDD  
VDD  
VDD  
U1  
4.7 k  
MC68HC812A4  
4.7 k  
14  
VDD  
S1  
15  
42  
79  
1
A0  
A[0..21]  
4
1
2
52  
53  
54  
55  
56  
57  
58  
59  
VSS  
PB0/ADDR00  
A1  
A2  
A3  
A4  
A5  
3
VDDX0  
VDDX1  
VSSX0  
PB1/ADDR01  
PB2/ADDR02  
PB3/ADDR03  
PB4/ADDR04  
PB5/ADDR05  
PE5  
PE6  
SW DIP-2  
41  
44  
43  
45  
VSSX1  
XFC  
VDDPLL  
VSSPLL  
RESET  
A6  
A7  
A8  
Y1  
R3  
PB6/ADDR06  
PB7/ADDR07  
PA0/ADDR08  
RS  
CP  
40  
47  
46  
60  
61  
62  
63  
64  
65  
66  
67  
A9  
XTAL  
EXTAL  
PA1/ADDR09  
PA2/ADDR10  
PA3/ADDR11  
PA4/ADDR12  
PA5/ADDR13  
A10  
A11  
A12  
A13  
CS  
VDD  
PE0 36  
PE0/XIRQ  
PE1/IRQ  
PE2/R/  
C3  
C4  
37  
38  
39  
48  
PE1  
PE2  
PE3  
PE4  
PE5  
PE6  
PE7  
4.7 kΩ  
W
A14  
A15  
PA6/ADDR14  
PA7/ADDR15  
PG0/ADDR16  
PE3/LSTRB  
PE4/ECLK  
PE5/MODA  
S2  
RESET  
11  
12  
13  
16  
17  
18  
A16  
A17  
A18  
A19  
A20  
A21  
49  
50  
51  
A4_RESET  
PE6/MODB  
PE7/ARST  
PG1/ADDR17  
PG2/ADDR18  
PG3/ADDR19  
PG4/ADDR20  
PG5/ADDR21  
PE[0..7]  
19  
BKGD/TAGHI  
PS0/RxD0  
PS0 97  
JP2  
1
2
3
4
5
6
98  
99  
100  
101  
PS1  
PS2  
PS3  
PS4  
PS5  
PS6  
PS7  
VSS  
1
2
3
4
5
6
PS1/RxD0  
PS2/TxD1  
D0  
20  
21  
22  
23  
24  
25  
26  
27  
PD0/KWD0/DATA0  
PD1/KWD1/DATA1  
PD2/KWD2/DATA2  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
PS3/TxD12  
PS4/SDI/MISO  
VDD  
102  
103  
104  
PS5/SD0/MOSI PD3/KWD3/DATA3  
PD4/KWD4/DATA4  
PD5/KWD5/DATA5  
PS7/SS  
PD6/KWD6/DATA6  
HEADER 6  
PS6/SCK  
PS[0..7]  
PT0 105  
PD7/KWD7/DATA7  
PT0/IOC0  
PC0/DATA08  
PT1/IOC1  
PT2/IOC2  
PT3/IOC3  
PT4/IOC4  
PT5/IOC5  
28  
29  
30  
31  
32  
33  
34  
35  
D8  
1
106  
107  
108  
109  
PT1  
PT2  
PT3  
PT4  
PT5  
PT6  
PT7  
D9  
RSET  
U2  
3
PC1/DATA09  
PC2/DATA10  
PC3/DATA11  
PC4/DATA12  
PC5/DATA13  
D10  
D11  
D12  
D13  
MC34064  
GND  
110  
111  
112  
IN  
PT6/IOC6  
PT7/IOC7  
D14  
D15  
PD6/DATA14  
PC7/DATA15  
2
PT[0..7]  
PJ0  
3
D[0..15]  
PJ0/KWJ0  
68  
69  
70  
71  
72  
73  
74  
4
5
6
7
PJ1  
PJ2  
PJ3  
PJ4  
PJ5  
PJ6  
PJ7  
PF0  
PF1  
PF2  
PF3  
PF4  
PJ1/KWJ1  
PJ2/KWJ2  
PJ3/KWJ3  
PJ5/KWJ4  
PJ5/KWJ5  
PF0/CS0  
PF1/CS1  
PF2/CS2  
PF3/CS3  
PF4/CSD  
VDD  
8
9
10  
PF5  
PF6  
PJ6/KWJ6  
PJ7/KWJ7  
PF5/CSP0  
PF6/CSP1  
PJ[0..7]  
PF[0..7]  
PAD0 87  
PH0  
75  
76  
77  
78  
81  
82  
83  
84  
C7  
C8  
0.1  
C9  
0.1  
C6  
1.0  
PAD0  
PH0  
88  
89  
90  
91  
PAD1  
PAD2  
PAD3  
PAD4  
PAD5  
PH1  
PH2  
PH3  
PH4  
PH5  
PAD1  
PAD2  
PAD3  
PAD4  
PAD5  
PH1  
PH2  
PH3  
PH4  
PH5  
µF  
µF  
0.1  
µF  
µF  
VSS  
92  
93  
94  
PAD6  
PAD7  
PH6  
PH7  
PAD6  
PAD7  
PH6  
PH7  
PAD[0..7]  
PH[0..7]  
Figure 1-4. Expanded Wide Mode SRAM Expansion Schematic (Sheet 1 of 3)  
MC68HC812A4 Data Sheet, Rev. 7  
24  
Freescale Semiconductor  
Signal Descriptions  
A[0. . 21]  
U4  
7
A1  
5
IDT71016  
D0  
D1  
D2  
A1  
D0  
8
9
4
3
A2  
A3  
A4  
A5  
A6  
A7  
A8  
A2  
A3  
A4  
A5  
A6  
D1  
D2  
D3  
D4  
D5  
10 D3  
13  
14  
15  
16  
29  
2
1
44  
43  
42  
D4  
D5  
D6  
D7  
D8  
A7  
A8  
A9  
D6  
D7  
D8  
A9 27  
30  
31  
32  
35  
26  
25  
24  
21  
A10  
A11  
A12  
A13  
A14  
A15  
A16  
D9  
A10  
A11  
A12  
A13  
A14  
D9  
D10  
D11  
D12  
D13  
D10  
D11  
D12  
36 D13  
20  
19  
18  
D14  
D15  
37  
38  
A15  
A16  
D14  
D15  
PE2/R/W 17  
WE  
CS  
BLE  
BHE  
D[0. . 15]  
33  
34  
16  
40  
PF6/CSP1  
A0  
PE3  
VCC  
VSS  
VCC  
39  
PF[0. . 7]  
PE[0. . 7]  
Figure 1-4. Expanded Wide Mode SRAM Expansion Schematic (Sheet 2 of 3)  
D[0. . 15]  
A[0. . 21]  
U3  
AM29DL400B  
29  
31  
33  
A0 25  
D0  
D1  
D2  
A0  
DQ0  
24  
23  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
A8  
A1  
A2  
A3  
A4  
A5  
DQ1  
DQ2  
DQ3  
DQ4  
DQ5  
35 D3  
38  
22  
21  
20  
19  
18  
8
D4  
40 D5  
D6  
D7  
D8  
D9  
42  
44  
30  
32  
A6  
A7  
DQ6  
DQ7  
A8  
DQ8  
7
6
5
4
A9  
A10  
A11  
A12  
A13  
A14  
A15  
A16  
A17  
A9  
DQ9  
DQ10  
DQ11  
DQ12  
DQ13  
34 D10  
A10  
A11  
A12  
A13  
36  
39  
D11  
D12  
41 D13  
3
2
PF[0. . 7]  
D14  
D15  
43  
45  
A14  
A15  
DQ14  
DQ15  
VCC  
1
48  
A16  
A17  
R5  
RESISTOR  
PF5/CSP0  
17  
26  
28  
47  
CE  
OE  
12  
37  
27  
RESET  
VCC  
VSS  
RESET  
VCC  
BYTE#  
WE  
RY/BY  
11 PE2/R/  
15  
W
S3  
46  
VSS1  
MODE_SELECT  
PE[0. . 7]  
Figure 1-4. Expanded Wide Mode SRAM Expansion Schematic (Sheet 3 of 3)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
25  
General Description  
VDD  
VDD  
VDD  
U1  
4.7 k  
MC68HC812A4  
4.7 k  
14  
VDD  
S1  
15  
42  
79  
1
A0  
A[0..21]  
1
2
4
52  
53  
54  
55  
56  
57  
58  
59  
VSS  
PB0/ADDR00  
A1  
A2  
A3  
A4  
A5  
3
VDDX0  
VDDX1  
VSSX0  
PB1/ADDR01  
PB2/ADDR02  
PB3/ADDR03  
PB4/ADDR04  
PB5/ADDR05  
PE5  
PE6  
SW DIP-2  
41  
44  
43  
45  
VSSX1  
XFC  
VDDPLL  
VSSPLL  
A6  
A7  
A8  
Y1  
R3  
PB6/ADDR06  
PB7/ADDR07  
PA0/ADDR08  
RS  
CP  
40  
47  
46  
60  
61  
62  
63  
64  
65  
66  
67  
RESET  
XTAL  
EXTAL  
A9  
PA1/ADDR09  
PA2/ADDR10  
PA3/ADDR11  
PA4/ADDR12  
PA5/ADDR13  
A10  
A11  
A12  
A13  
CS  
VDD  
PE0 36  
PE0/XIRQ  
C3  
C4  
37  
38  
39  
48  
PE1  
PE2  
PE3  
PE4  
PE5  
PE6  
PE7  
PE1/IRQ  
PE2/R/W  
4.7 kΩ  
A14  
A15  
PA6/ADDR14  
PA7/ADDR15  
PG0/ADDR16  
PE3/LSTRB  
PE4/ECLK  
PE5/MODA  
S2  
RESET  
11  
12  
13  
16  
17  
18  
A16  
A17  
A18  
A19  
A20  
A21  
49  
50  
51  
A4_RESET  
PE6/MODB  
PE7/ARST  
PG1/ADDR17  
PG2/ADDR18  
PG3/ADDR19  
PG4/ADDR20  
PG5/ADDR21  
PE[0..7]  
19  
BKGD/TAGHI  
PS0/RxD0  
JP2  
PS0 97  
1
2
3
4
5
6
98  
99  
100  
101  
PS1  
PS2  
PS3  
PS4  
PS5  
PS6  
PS7  
1
2
3
4
5
6
VSS  
VDD  
PS1/RxD0  
PS2/TxD1  
D0  
20  
21  
22  
23  
24  
25  
26  
27  
PD0/KWD0/DATA0  
PD1/KWD1/DATA1  
PD2/KWD2/DATA2  
D1  
D2  
D3  
D4  
D5  
D6  
D7  
PS3/TxD12  
PS4/SDI/MISO  
102  
103  
104  
PS5/SD0/MOSI PD3/KWD3/DATA3  
PD4/KWD4/DATA4  
PD5/KWD5/DATA5  
PS6/SCK  
PS7/SS  
HEADER 6  
PS[0..7]  
PD6/KWD6/DATA6  
PD7/KWD7/DATA7  
PC0/DATA08  
PT0 105  
PT0/IOC0  
28  
29  
30  
31  
32  
33  
34  
35  
D8  
1
106  
107  
108  
109  
PT1  
PT2  
PT3  
PT4  
PT5  
PT6  
PT7  
PT1/IOC1  
PT2/IOC2  
PT3/IOC3  
PT4/IOC4  
PT5/IOC5  
D9  
RSET  
U2  
PC1/DATA09  
PC2/DATA10  
PC3/DATA11  
PC4/DATA12  
PC5/DATA13  
D10  
D11  
D12  
D13  
MC34064  
GND  
3
110  
111  
112  
IN  
PT6/IOC6  
PT7/IOC7  
D14  
D15  
PD6/DATA14  
PC7/DATA15  
2
PT[0..7]  
PJ0  
3
D[0..15]  
PJ0/KWJ0  
68  
69  
70  
71  
72  
73  
74  
4
5
6
7
PJ1  
PJ2  
PJ3  
PJ4  
PJ5  
PJ6  
PJ7  
PF0  
PF1  
PF2  
PF3  
PF4  
PJ1/KWJ1  
PJ2/KWJ2  
PJ3/KWJ3  
PJ5/KWJ4  
PJ5/KWJ5  
PF0/CS0  
PF1/CS1  
PF2/CS2  
PF3/CS3  
PF4/CSD  
VDD  
8
9
10  
PF5  
PF6  
PJ6/KWJ6  
PJ7/KWJ7  
PF5/CSP0  
PF6/CSP1  
PJ[0..7]  
PF[0..7]  
PAD0 87  
PH0  
C7  
C8  
0.1  
C9  
0.1  
75  
76  
77  
78  
81  
82  
83  
84  
C6  
1.0  
PAD0  
PH0  
88  
89  
90  
91  
PAD1  
PAD2  
PAD3  
PAD4  
PAD5  
PH1  
PH2  
PH3  
PH4  
PH5  
PAD1  
PAD2  
PAD3  
PAD4  
PAD5  
PH1  
PH2  
PH3  
PH4  
PH5  
µF  
µF  
0.1  
µF  
µF  
VSS  
92  
93  
94  
PAD6  
PAD7  
PH6  
PH7  
PAD6  
PAD7  
PH6  
PH7  
PAD[0..7]  
PH[0..7]  
Figure 1-5. Expanded Narrow Mode SRAM Expansion Schematic (Sheet 1 of 3)  
MC68HC812A4 Data Sheet, Rev. 7  
26  
Freescale Semiconductor  
Signal Descriptions  
A[0. . 21]  
U3  
13  
14  
15  
A0 12  
AM27F010  
D8  
A0  
D0  
11  
10  
A1  
A2  
A3  
A4  
A5  
A6  
A7  
D9  
D10  
A1  
A2  
A3  
A4  
A5  
D1  
D2  
D3  
D4  
D5  
17 D11  
18  
9
8
7
6
5
D12  
19 D13  
D14  
D15  
20  
21  
A6  
A7  
D6  
D7  
A8 27  
A8  
26  
23  
25  
4
A9  
A10  
A11  
A12  
A13  
A14  
A15  
A16  
A9  
A10  
A11  
A12  
A13  
D[0. . 15]  
28  
29  
3
A14  
A15  
A16  
PF[0. . 7]  
2
PF5/CSP0  
PE2/R/W  
22  
24  
31  
CE  
OE  
WE  
VPP  
1
PE[0. . 7]  
Figure 1-5. Expanded Narrow Mode SRAM Expansion Schematic (Sheet 2 of 3)  
D[0. . 15]  
U3  
DS1230Y  
11  
12  
13  
A0 10  
D8  
A0  
D0  
9
8
A1  
A2  
A3  
A4  
A5  
A6  
A7  
D9  
D10  
A1  
A2  
A3  
A4  
A5  
D1  
D2  
D3  
D4  
D5  
15 D11  
16  
17  
18  
19  
7
6
5
4
3
D12  
D13  
D14  
D15  
A6  
A7  
D6  
D7  
A8 25  
A8  
24  
21  
23  
2
A9  
A10  
A11  
A12  
A13  
A14  
A9  
A10  
A11  
A12  
A13  
26  
1
A14  
A[0. . 21]  
PF6/CSP1  
PE2/R/W  
20  
27  
22  
CE  
WE  
OE  
PF[0. . 7]  
PE[0. . 7]  
Figure 1-5. Expanded Narrow Mode SRAM Expansion Schematic (Sheet 3 of 3)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
27  
General Description  
MC68HC812A4 Data Sheet, Rev. 7  
28  
Freescale Semiconductor  
Chapter 2  
Register Block  
2.1 Overview  
The register block can be mapped to any 2-Kbyte boundary within the standard 64-Kbyte address space  
by manipulating bits REG15–REG11 in the INITRG register. INITRG establishes the upper five bits of the  
register block’s 16-bit address.  
The register block occupies the first 512 bytes of the 2-Kbyte block. Figure 2-1 shows the default  
addressing.  
2.2 Register Map  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Port A Data Register  
(PORTA)  
See page 64.  
PA7  
PA6  
PA5  
PA4  
PA3  
PA2  
PA1  
PA0  
$0000  
0
0
0
0
0
0
0
0
Port B Data Register  
(PORTB)  
See page 65.  
PB7  
PB6  
PB5  
PB4  
PB3  
PB2  
PB1  
PB0  
$0001  
$0002  
$0003  
$0004  
$0005  
$0006  
0
0
0
0
DDRA4  
0
0
DDRA3  
0
0
0
DDRA1  
0
0
Port A Data Direction  
Register (DDRA)  
See page 64.  
DDRA7  
DDRA6  
DDRA5  
DDRA2  
DDRA0  
0
0
0
0
0
Port B Data Direction  
Register (DDRB)  
See page 65.  
DDRB7  
DDRB6  
DDRB5  
DDRB4  
0
DDRB3  
0
DDRB2  
DDRB1  
0
DDRB0  
0
PC7  
0
0
PC6  
0
0
PC5  
0
0
PC2  
0
0
PC0  
0
Port C Data Register  
(PORTC)  
See page 66.  
PC4  
0
PC3  
0
PC1  
0
Port D Data Register  
(PORTD)  
See page 67.  
PD7  
0
PD6  
0
PD5  
0
PD4  
0
PD3  
0
PD2  
0
PD1  
0
PD0  
0
Port C Data Direction  
Register (DDRC)  
See page 66.  
DDRC7  
0
DDRC6  
0
DDRC5  
0
DDRC4  
DDRC3  
DDRC2  
0
DDRC1  
DDRC0  
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 1 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
29  
Register Block  
Addr.  
Register Name  
Bit 7  
Bit 7  
0
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Port D Data Direction  
Register (DDRD)  
See page 67.  
Bit 2  
Bit 1  
Bit 0  
$0007  
0
0
0
Port E Data Register  
(PORTE)  
See page 68.  
PE7  
0
PE6  
0
PE5  
0
PD4  
0
PD3  
1
PD2  
PD1  
PD0  
$0008  
$0009  
$000A  
$000B  
$000C  
$000D  
0
0
0
Port E Data Direction  
Register (DDRE)  
See page 68.  
DDRE7  
0
DDRE6  
0
DDRE5  
0
DDRE4  
0
DDRE3  
0
DDRE2  
DDRE1  
DDRE0  
0
1
1
Port E Assignment  
Register (PEAR)  
See page 69.  
ARSIE  
0
PLLTE  
0
PIPOE  
1
NECLK  
0
LSTRE  
1
RDWE  
0
0
0
0
1
0
Mode Register  
(MODE)  
See page 58.  
SMODN  
0
MODB  
0
MODA  
0
ESTR  
1
IVIS  
1
EMD  
1
EME  
1
0
Pullup Control  
Register (PUCR)  
See page 71.  
PUPH  
1
PUPG  
1
PUPF  
1
PUPE  
1
PUPD  
1
PUC  
1
PUPB  
1
PUPA  
1
Reduced Drive  
Register (RDRIV)  
See page 72.  
RDPJ  
RDPH  
RDPG  
RDPF  
RDPE  
PRPD  
RDPC  
RDPAB  
0
0
0
0
0
0
0
0
$000E  
$000F  
Reserved  
Reserved  
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
RAM Initialization Register  
(INITRM)  
See page 60.  
RAM15  
RAM14  
RAM13  
RAM12  
RAM11  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
$0010  
$0011  
$0012  
$0013  
0
REG15  
0
0
REG14  
0
0
0
1
0
Register Initialization  
Register (INITRG)  
See page 59.  
REG13  
REG12  
REG11  
0
0
0
EE12  
1
0
0
0
0
0
EEPROM Initialization  
Register (INITEE)  
See page 60.  
EE15  
0
EE14  
0
EE13  
EEON  
0
0
0
1
0
0
Miscellaneous Mapping  
Control Register (MISC)  
See page 61.  
EWDIR  
0
NDRC  
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 2 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
30  
Freescale Semiconductor  
Register Map  
Addr.  
Register Name  
Bit 7  
RTIE  
0
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
0
Real-Tme Interrupt Control  
Register (RTICTL)  
See page 105.  
RSWAI  
RSBCK  
RTBYP  
RTR2  
RTR1  
RTR0  
$0014  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Real-Time Interrupt Flag Read:  
Register (RTIFLG)  
RTIF  
Write:  
$0015  
See page 107.  
Reset:  
0
CME  
0
0
FCME  
0
0
FCM  
0
0
FCOP  
0
0
DISR  
0
0
CR2  
1
0
CR1  
1
0
CR0  
1
COP Control Register Read:  
(COPCTL)  
Write:  
$0016  
$0017  
See page 107.  
Reset:  
Read:  
0
Bit 7  
0
0
Bit 6  
0
0
Bit 5  
0
0
Bit 4  
0
0
Bit 3  
0
0
Bit 2  
0
0
Bit 1  
0
0
Bit 0  
0
Arm/Reset COP Register  
(COPRST)  
See page 109.  
Write:  
Reset:  
$0018  
Reserved  
R
R
R
R
R
R
R
R
$001D  
Reserved  
R
R
R
R
0
R
0
R
0
R
0
R
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Interrupt Control Register  
(INTCR)  
See page 51.  
IRQE  
IRQEN  
DLY  
1
$001E  
$001F  
0
1
1
1
0
PSEL4  
1
0
PSEL3  
0
0
PSEL2  
0
0
PSEL1  
1
0
0
Highest Priority I Interrupt  
Register (HPRIO)  
See page 51.  
PSEL5  
1
1
1
0
Port D Key Wakeup  
$0020 Interrupt Enable Register  
(KWIED) See page 94.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Port D Key Wakeup Flag  
Register (KWIFD)  
See page 95.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
$0021  
0
0
0
0
0
0
0
0
$0022  
$0023  
Reserved  
Reserved  
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Port H Data Register  
(PORTH)  
See page 95.  
PH7  
0
PH6  
0
PH5  
0
PH4  
0
PH3  
0
PH2  
0
PH1  
0
PH0  
0
$0024  
$0025  
Port H Data Direction  
Register (DDRH)  
See page 96.  
Bit 7  
0
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
0
Bit 1  
Bit 0  
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 3 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
31  
Register Block  
Addr. Register Name  
Port H Key Wakeup  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
$0026 Interrupt Enable Register  
(KWIEH) See page 96.  
0
KWIFH7  
0
0
KWIFH6  
0
0
KWIFH5  
0
0
KWIFH4  
0
0
KWIFH3  
0
0
KWIFH2  
0
0
KWIFH1  
0
0
KWIFH0  
0
Port H Key Wakeup Flag  
Register (KWIFH)  
See page 96.  
$0027  
$0028  
$0029  
Port J Data Register  
(PORTJ)  
See page 97.  
PJ7  
PJ6  
PJ5  
PJ4  
PJ3  
PJ2  
PJ1  
PJ0  
0
0
0
0
0
0
0
0
Port J Data Direction  
Register (DDRJ)  
See page 97.  
DDRJ7  
0
DDRJ6  
0
DDRJ5  
0
DDRJ4  
0
DDRJ3  
0
DDRJ2  
0
DDRJ1  
0
DDRJ0  
0
Port J Key Wakeup Read:  
Interrupt Enable Register  
KWIEJ7  
KWIEJ6  
KWIEJ5  
KWIEJ4  
KWIEJ3  
KWIEJ2  
KWIEJ1  
KWIEJ0  
Write:  
$002A  
(KWIEJ)  
See page 97.  
Reset:  
0
0
0
0
0
0
0
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Port J Key Wakeup Flag  
Register (KWIFJ)  
See page 98.  
KWIFJ7  
0
KWIFJ6  
0
KWIFJ5  
0
KWIFJ4  
0
KWIFJ3  
0
KWIFJ2  
0
KWIFJ1  
0
KWIFJ0  
0
$002B  
$002C  
Port J Key Wakeup  
Polarity Register  
(KPOLJ) See page 98.  
KPOLJ7  
0
KPOLJ6  
0
KPOLJ5  
0
KPOLJ4  
0
KPOLJ3  
0
KPOLJ2  
0
KPOLJ1  
0
KPOLJ0  
0
Port J Key Wakeup Read:  
Pullup/Pulldown Select  
PUPSJ7  
PUPSJ6  
PUPSJ5  
PUPSJ4  
PUPSJ3  
PUPSJ2  
PUPSJ1  
PUPSJ0  
Write:  
$002D  
Register (PUPSJ)  
See page 99.  
Reset:  
0
0
0
0
0
0
0
0
Port J Key Wakeup Read:  
Pullup/Pulldown Enable  
PULEJ7  
PULEJ6  
PULEJ5  
PULEJ4  
PULEJ3  
PULEJ2  
PULEJ1  
PULEJ0  
Write:  
$002E  
$002F  
Register (PULEJ)  
See page 99.  
Reset:  
0
0
0
0
0
0
0
0
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
0
Port F Data Register  
(PORTF)  
See page 85.  
PF6  
PF5  
PF4  
0
PF3  
0
PF2  
PF1  
0
PF0  
$0030  
$0031  
$0032  
0
0
0
0
0
Bit 5  
0
0
Bit 2  
0
0
Bit 0  
0
Port G Data Register  
(PORTG)  
See page 85.  
Bit 4  
0
Bit 3  
0
Bit 1  
0
0
0
0
DDRF6  
0
Port F Data Direction  
Register (DDRF)  
See page 86.  
DDRF5  
DDRF4  
DDRF3  
DDRF2  
0
DDRF1  
DDRF0  
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 4 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
32  
Freescale Semiconductor  
Register Map  
Addr.  
Register Name  
Bit 7  
6
5
DDRG5  
0
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
0
0
Port G Data Direction  
Register (DDRG)  
See page 86.  
DDRG4  
DDRG3  
DDRG2  
DDRG1  
DDRG0  
$0033  
0
PD19  
0
0
PD18  
0
0
0
0
0
0
Data Page Register  
(DPAGE)  
See page 86.  
PD17  
0
PD16  
PD15  
PD14  
PD13  
PD12  
$0034  
$0035  
$0036  
$0037  
$0038  
0
0
0
0
0
Program Page Register  
(PPAGE)  
See page 87.  
PPA21  
0
PPA20  
0
PPA19  
0
PPA18  
PPA17  
PPA16  
PPA15  
PPA14  
0
0
0
0
0
Extra Page Register  
(EPAGE)  
See page 87.  
PEA17  
0
PEA16  
0
PEA15  
0
PEA14  
PEA13  
PEA12  
PEA11  
PEA10  
0
0
0
0
0
0
0
0
0
0
Window Definition  
Register (WINDEF)  
See page 87.  
DWEN  
PWEN  
EWEN  
0
0
0
0
0
0
0
0
0
0
Memory Expansion  
Assignment Register  
(MXAR) See page 88.  
A21E  
A20E  
A19E  
A18E  
A17E  
A16E  
0
0
0
0
0
0
0
0
$0039  
$003A  
$003B  
Reserved  
Reserved  
Reserved  
R
R
R
R
R
R
R
R
R
R
0
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Chip-Select Control  
Register 0 (CSCTL0)  
See page 89.  
CSP1E  
0
CSP0E  
CSDE  
0
CS3E  
0
CS2E  
CS1E  
CS0E  
$003C  
$003D  
$003E  
$003F  
$0040  
0
0
0
CSPA21  
0
0
0
0
0
0
0
Chip-Select Control  
Register 1 (CSCTL1)  
See page 90.  
CSP1FL  
CSDHF  
0
CS3EP  
0
0
0
0
0
0
SRP0B  
1
0
STRDA  
1
0
STRDB  
1
Chip-Select Stretch  
Register 0 (CSSTR0)  
See page 91.  
SRP1A  
1
SRP1B  
1
SRP0A  
1
0
0
Chip-Select Stretch  
Register 1 (CSSTR1)  
See page 91.  
STR3A  
STR3B  
STR2A  
STR2B  
STR1A  
1
STR1B  
1
STR0A  
1
STR0B  
1
0
0
0
0
1
0
1
0
Loop Divider Register High  
(LDVH)  
See page 113.  
LDV11  
LDV10  
1
LDV9  
LDV8  
1
0
0
0
0
1
1
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 5 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
33  
Register Block  
Addr.  
Register Name  
Bit 7  
6
5
4
3
LDV3  
1
2
LDV2  
1
1
LDV1  
1
Bit 0  
LDV0  
1
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Loop Divider Register Low  
(LDVL)  
See page 113.  
LDV7  
LDV6  
LDV5  
LDV4  
$0041  
1
0
1
0
1
0
1
0
Reference Divider  
Register High (RDVH)  
See page 114.  
RDV11  
1
RDV10  
1
RDV9  
1
RDV8  
1
$0042  
$0043  
0
0
0
0
Reference Divider  
Register Low (RDVL)  
See page 114.  
RDV7  
RDV6  
RDV5  
RDV4  
RDV3  
RDV2  
RDV1  
RDV0  
1
1
1
1
1
1
1
1
$0044  
$0045  
$0046  
Reserved  
Reserved  
Reserved  
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
LCKF  
Clock Control Register  
(CLKCTL)  
See page 114.  
PLLON  
PLLS  
BCSC  
BCSB  
BCSA  
MCSB  
MCSA  
$0047  
0
0
0
0
0
0
0
0
$0048  
Reserved  
R
R
R
R
R
R
R
R
$005F  
Reserved  
R
0
R
0
R
0
R
0
R
0
R
0
R
0
R
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
ATD Control Register 0  
(ATDCTL0)  
See page 199.  
$0060  
$0061  
$0062  
$0063  
$0064  
$0065  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
ATD Control Register 1  
(ATDCTL1)  
See page 199.  
0
0
0
0
0
0
0
0
0
0
ASCIE  
0
0
ASCIF  
ATD Control Register 2  
(ATDCTL2)  
See page 200.  
ADPU  
AFFC  
AWAI  
0
0
0
0
0
0
0
0
0
0
0
0
0
FRZ0  
0
ATD Control Register 3  
(ATDCTL3)  
See page 201.  
FRZ1  
0
0
0
0
SMP1  
0
0
SMP0  
0
0
0
PRS3  
0
0
PRS2  
0
ATD Control Register 4  
(ATDCTL4)  
See page 201.  
PRS4  
0
PRS1  
0
PRS0  
1
0
0
ATD Control Register 5  
(ATDCTL5)  
See page 202.  
S8CM  
SCAN  
MULT  
CD  
CC  
0
CB  
CA  
0
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 6 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
34  
Freescale Semiconductor  
Register Map  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SCF  
0
0
0
0
CC2  
CC1  
CC0  
ATD Status Register 1  
(ATDSTAT1)  
See page 204.  
$0066  
0
0
0
0
0
0
0
0
CCF7  
CCF6  
CCF5  
CCF4  
CCF3  
CCF2  
CCF1  
CCF0  
ATD Status Register 2  
(ATDSTAT2)  
See page 204.  
$0067  
$0068  
$0069  
0
0
0
SAR7  
0
0
SAR6  
0
0
0
0
0
ATD Test Register 1  
(ATDTEST1)  
See page 205.  
SAR9  
0
SAR8  
0
SAR5  
0
SAR4  
0
SAR3  
0
SAR2  
0
ATD Test Register 2  
(ATDTEST2)  
See page 205.  
SAR1  
SAR0  
RST  
TSTOUT  
TST3  
TST2  
TST1  
TST0  
0
0
0
0
0
0
0
0
$006A  
Reserved  
R
R
R
R
R
R
R
R
$006E  
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Port AD Data Input  
Register (PORTAD)  
See page 207.  
PAD7  
0
PAD6  
PAD5  
PAD4  
PAD3  
PAD2  
PAD1  
PAD0  
$006F  
0
0
0
0
0
0
0
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 0  
(ADR0H)  
See page 206.  
$0070  
$0071  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 1  
(ADR1H)  
See page 206.  
$0072  
$0073  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 2  
(ADR2H)  
See page 206.  
$0074  
$0075  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 3  
(ADR3H)  
See page 206.  
$0076  
$0077  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 7 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
35  
Register Block  
Addr.  
$0078  
$0079  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 4  
(ADR4H)  
See page 206.  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 5  
(ADR5H)  
See page 206.  
$007A  
$007B  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 6  
(ADR6H)  
See page 206.  
$007C  
$007D  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read: ADRxH7  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 7  
(ADR7H)  
See page 206.  
$007E  
$007F  
Write:  
Reset:  
R
Indeterminate  
Reserved  
R
R
R
R
R
R
R
Read:  
IOS7  
Write:  
Timer IC/OC Select  
Register (TIOS)  
See page 125.  
IOS6  
0
IOS5  
0
IOS4  
0
IOS3  
0
IOS2  
0
IOS1  
0
IOS0  
0
$0080  
$0081  
Reset:  
Read:  
Write:  
Reset:  
0
FOC7  
0
Timer Compare Force  
Register (CFORC)  
See page 125.  
FOC6  
0
FOC5  
0
FOC4  
0
FOC3  
0
FOC2  
0
FOC1  
0
FOC0  
0
Timer Output Read:  
OC7M7  
OC7M6  
OC7M5  
OC7M4  
OC7M3  
OC7M2  
OC7M1  
OC7M0  
Compare 7 Mask Register  
(OC7M)  
See page 126.  
Write:  
$0082  
$0083  
Reset:  
0
0
0
0
0
0
0
0
Timer Output Read:  
OC7D7  
OC7D6  
OC7D5  
OC7D4  
OC7D3  
OC7D2  
OC7D1  
OC7D0  
Compare 7 Data Register  
(OC7D)  
See page 126.  
Write:  
Reset:  
0
0
0
0
0
0
0
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Bit 15  
Bit 14  
Bit 13  
Bit 12  
Bit 11  
Bit 10  
Bit 9  
Bit 8  
Timer Counter Register  
High (TCNTH)  
See page 127.  
$0084  
$0085  
0
0
0
0
0
0
0
0
Bit 7  
BIt 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Timer Counter Register  
Low (TCNTL)  
See page 127.  
0
0
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 8 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
36  
Freescale Semiconductor  
Register Map  
Addr.  
$0086  
$0087  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
0
0
0
0
Timer System Control  
Register (TSCR)  
See page 127.  
TEN  
TSWAI  
TSBCK  
TFFCA  
0
0
0
0
0
0
0
0
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer Control  
Register 1 (TCTL1)  
See page 129.  
OM7  
OL7  
OM6  
OL6  
OM5  
OL5  
OM4  
OL4  
$0088  
$0089  
$008A  
$008B  
$008C  
$008D  
$008E  
$008F  
$0090  
$0091  
$0092  
0
0
OL3  
0
0
OM2  
0
0
OL2  
0
0
OM1  
0
0
OL1  
0
0
OM0  
0
0
OL0  
0
Timer Control  
Register 2 (TCTL2)  
See page 129.  
OM3  
0
Timer Control  
Register 3 (TCTL3)  
See page 130.  
EDG7B  
EDG7A  
0
EDG6B  
0
EDG6A  
0
EDG5B  
0
EDG5A  
0
EDG4B  
0
EDG4A  
0
0
EDG3B  
0
Timer Control  
Register 4 (TCTL4)  
See page 130.  
EDG3A  
0
EDG2B  
0
EDG2A  
0
EDG1B  
0
EDG1A  
0
EDG0B  
0
EDG0A  
0
Timer Mask Register 1  
(TMSK1)  
See page 130.  
C7I  
0
C6I  
C5I  
0
C4I  
0
C3I  
0
C2I  
0
C1I  
0
C0I  
0
0
0
Timer Mask Register 2  
(TMSK2)  
See page 131.  
TOI  
0
PUPT  
1
RDPT  
1
TCRE  
0
PR2  
0
PR1  
0
PR0  
0
0
Timer Flag Register 1  
(TFLG1)  
See page 132.  
C7F  
0
C6F  
C5F  
C4F  
C3F  
C2F  
C1F  
C0F  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Timer Flag Register 2  
(TFLG2)  
See page 132.  
TOF  
0
0
Bit 14  
0
0
Bit 13  
0
0
Bit 12  
0
0
Bit 11  
0
0
Bit 10  
0
0
Bit 9  
0
0
Bit 8  
0
Timer Channel 0 Register  
High (TC0H)  
See page 133.  
Bit 15  
0
Timer Channel 0 Register  
Low (TC0L)  
See page 133.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Timer Channel 1 Register  
High (TC1H)  
See page 133.  
Bit 15  
0
Bit 14  
Bit 13  
Bit 12  
Bit 11  
Bit 10  
0
Bit 9  
Bit 8  
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 9 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
37  
Register Block  
Addr.  
Register Name  
Bit 7  
Bit 7  
0
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer Channel 1 Register  
Low (TC1L)  
See page 133.  
$0093  
Timer Channel 2 Register  
High (TC2H)  
See page 133.  
Bit 15  
0
Bit 14  
0
Bit 13  
0
Bit 12  
0
Bit 11  
0
Bit 10  
0
Bit 9  
0
Bit 8  
0
$0094  
$0095  
$0096  
$0097  
$0098  
$0099  
$009A  
$009B  
$009C  
$009D  
$009E  
Timer Channel 2 Register  
Low (TC2L)  
See page 133.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Timer Channel 3 Register  
High (TC3H)  
See page 133.  
Bit 15  
0
Bit 14  
0
Bit 13  
0
Bit 12  
0
Bit 11  
0
Bit 10  
0
Bit 9  
0
Bit 8  
0
Timer Channel 3 Register  
Low (TC3L)  
See page 133.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Timer Channel 4 Register  
High (TC4H)  
See page 133.  
Bit 15  
0
Bit 14  
0
Bit 13  
0
Bit 12  
0
Bit 11  
0
Bit 10  
0
Bit 9  
0
Bit 8  
0
Timer Channel 4 Register  
Low (TC4L)  
See page 133.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Timer Channel 5 Register  
High (TC5H)  
See page 133.  
Bit 15  
0
Bit 14  
0
Bit 13  
0
Bit 12  
0
Bit 11  
0
Bit 10  
0
Bit 9  
0
Bit 8  
0
Timer Channel 5 Register  
Low (TC5L)  
See page 133.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Timer Channel 6 Register  
High (TC6H)  
See page 133.  
Bit 15  
0
Bit 14  
0
Bit 13  
0
Bit 12  
0
Bit 11  
0
Bit 10  
0
Bit 9  
0
Bit 8  
0
Timer Channel 6 Register  
Low (TC6L)  
See page 133.  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Timer Channel 7 Register  
High (TC7H)  
See page 133.  
Bit 15  
0
Bit 14  
Bit 13  
Bit 12  
Bit 11  
Bit 10  
0
Bit 9  
Bit 8  
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 10 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
38  
Freescale Semiconductor  
Register Map  
Addr.  
Register Name  
Bit 7  
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer Channel 7 Register  
Low (TC7L)  
See page 133.  
Bit 7  
Bit 1  
0
Bit 0  
0
$009F  
0
0
Pulse Accumulator Control  
Register (PACTL)  
See page 134.  
PAEN  
PAMOD  
PEDGE  
CLK1  
CLK0  
PAOVI  
0
PAI  
0
$00A0  
$00A1  
0
0
0
0
0
0
0
0
0
0
0
Bit 0  
Pulse Accumulator Flag  
Register (PAFLG)  
See page 135.  
PAOVF  
0
PAIF  
0
0
0
0
0
0
0
Pulse Accumulator Read:  
Counter Register High  
Bit 15  
Bit 14  
Bit 13  
Bit 12  
Bit 11  
Bit 10  
Bit 9  
Bit 8  
Write:  
$00A2  
$00A3  
(PACNTH)  
See page 136.  
Reset:  
0
0
0
0
0
0
0
0
Pulse Accumulator Read:  
Counter Register Low  
(PACNTL)  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
Write:  
Reset:  
0
0
0
0
0
0
0
0
See page 136.  
Reserved  
$00A4  
R
R
R
R
R
R
R
R
$00AC  
Reserved  
R
0
R
0
R
0
R
0
R
0
R
0
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
TCBYP  
PCBYP  
Timer Test Register  
(TIMTST)  
See page 137.  
$00AD  
$00AE  
$00AF  
0
0
0
0
0
0
0
0
Timer Port Data Register  
(PORTT)  
See page 139.  
PT7  
PT6  
PT5  
PT4  
PT3  
PT2  
PT1  
PT0  
Unaffected by reset  
Timer Port Data Direction  
Register (DDRT)  
See page 140.  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
Bit 0  
0
0
0
0
0
0
0
0
$00B0  
Reserved  
R
R
R
R
R
R
R
R
$00BF  
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SCI 0 Baud Rate Register  
High (SC0BDH)  
See page 168.  
BTST  
0
BSPL  
0
BRLD  
SBR12  
0
SBR11  
0
SBR10  
SBR9  
0
SBR8  
0
$00C0  
$00C1  
0
SBR5  
0
0
SBR2  
1
SCI 0 Baud Rate Register  
Low (SC0BDL)  
See page 168.  
SBR7  
0
SBR6  
SBR4  
SBR3  
SBR1  
SBR0  
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 11 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
39  
Register Block  
Addr.  
Register Name  
Bit 7  
LOOPS  
0
6
WOMS  
0
5
RSRC  
0
4
M
3
WAKE  
0
2
ILT  
0
1
PE  
0
Bit 0  
PT  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SCI 0 Control  
Register 1 (SC0CR1)  
See page 169.  
$00C2  
0
0
SCI 0 Control  
Register 2 (SC0CR2)  
See page 171.  
TIE  
TCIE  
RIE  
ILIE  
TE  
RE  
RWU  
SBK  
$00C3  
$00C4  
$00C5  
$00C6  
$00C7  
$00C8  
$00C9  
$00CA  
$00CB  
$00CC  
$00CD  
0
0
0
0
0
0
0
0
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
PF  
SCI 0 Status  
Register 1 (SC0SR1)  
See page 172.  
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
RAF  
SCI 0 Status  
Register 2 (SC0SR2)  
See page 173.  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R8  
SCI 0 Data Register High  
(SC0DRH)  
See page 174.  
T8  
Unaffected by reset  
R7  
T7  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
R0  
T0  
SCI 0 Data Register Low  
(SC0DRL)  
See page 174.  
Unaffected by reset  
SCI 1 Baud Rate Register  
High (SC1BDH)  
See page 168.  
BTST  
BSPL  
0
BRLD  
0
SBR12  
SBR11  
SBR10  
SBR9  
0
SBR8  
0
0
SBR7  
0
0
SBR4  
0
0
SBR3  
0
0
SBR2  
1
SCI 1 Baud Rate Register  
Low (SC1BDL)  
See page 168.  
SBR6  
0
SBR5  
0
SBR1  
0
SBR0  
0
SCI 1 Control Register 1  
(SC1CR1)  
See page 169.  
LOOPS  
0
WOMS  
0
RSRC  
0
M
WAKE  
0
ILT  
0
PE  
PT  
0
0
0
SCI 1 Control Register 2  
(SC1CR2)  
See page 171.  
TIE  
TCIE  
RIE  
ILIE  
TE  
RE  
RWU  
SBK  
0
0
0
0
0
0
0
0
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
PF  
SCI 1 Status Register 1  
(SC1SR1)  
See page 172.  
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
RAF  
SCI 1 Status Register 2  
(SC1SR2)  
See page 173.  
0
0
0
0
0
0
0
0
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 12 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
40  
Freescale Semiconductor  
Register Map  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
R8  
0
0
0
0
0
0
SCI 1 Data Register High  
(SC1DRH)  
See page 174.  
T8  
$00CE  
Unaffected by reset  
R7  
T7  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
R0  
T0  
SCI 1 Data Register Low  
(SC1DRL)  
See page 174.  
$00CF  
$00D0  
$00D1  
$00D2  
Unaffected by reset  
SPI 0 Control Register 1  
(SP0CR1)  
See page 186.  
SPIE  
SPE  
SWOM  
MSTR  
CPOL  
0
CPHA  
1
SSOE  
LSBF  
0
0
0
0
0
0
0
0
0
0
0
SPI 0 Control Register 2  
(SP0CR2)  
See page 187.  
PUPS  
RDS  
0
SPC0  
0
0
0
0
0
0
0
0
0
1
0
0
SPI Baud Rate Register  
(SP0BR)  
See page 188.  
SPR2  
SPR1  
SPR0  
0
0
0
0
0
0
0
0
0
0
0
0
0
SPIF  
WCOL  
MODF  
SPI Status Register  
(SP0SR)  
See page 189.  
$00D3  
$00D4  
0
0
0
0
0
0
0
0
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SPI Data Register  
(SP0DR)  
See page 190.  
Bit 7  
PS7  
Bit 6  
PS6  
Bit 5  
PS5  
Bit 4  
Bit 3  
Bit 2  
PS2  
Bit 1  
PS1  
Bit 0  
PS0  
$00D5  
$00D6  
$00D7  
Unaffected by reset  
PS4 PS3  
Unaffected by reset  
Port S Data Register  
(PORTS)  
See page 147.  
Port S Data Direction  
Register (DDRS)  
See page 148.  
DDRS7  
DDRS6  
DDRS5  
DDRS4  
DDRS3  
DDRS2  
DDRS1  
DDRS0  
0
0
0
0
0
0
0
0
$00D8  
Reserved  
R
R
R
R
R
R
R
R
$00EF  
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
EEPROM Configuration  
Register (EEMCR)  
See page 74.  
1
1
1
1
1
1
1
1
1
1
EESWAI PROTLCK  
EERC  
$00F0  
$00F1  
1
BPROT6  
1
1
BPROT5  
1
1
BPROT2  
1
0
0
BPROT0  
1
EEPROM Block Protect  
Register (EEPROT)  
See page 75.  
BPROT4  
BPROT3  
BPROT1  
1
1
1
= Unimplemented  
= Reserved  
U = Unaffected  
R
Figure 2-1. Register Map (Sheet 13 of 14)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
41  
Register Block  
Addr.  
Register Name  
Bit 7  
Read: EEODD  
Write:  
6
5
4
3
2
1
Bit 0  
EEVEN  
MARG  
EECPD  
EECPRD  
0
EECPM  
0
EEPROM Test Register  
(EETST)  
See page 75.  
$00F2  
Reset:  
Read:  
Write:  
Reset:  
0
0
0
0
0
0
0
0
0
0
EEPROM Programming  
Register (EEPROG)  
See page 76.  
BULKP  
BYTE  
ROW  
ERASE  
EELAT  
EEPGM  
$00F3  
1
0
0
0
0
0
0
0
$00F4  
Reserved  
R
R
R
R
R
R
R
R
$01FF  
Reserved  
R
R
R
R
R
R
R
R
R
= Unimplemented  
= Reserved  
U = Unaffected  
Figure 2-1. Register Map (Sheet 14 of 14)  
2.3 Modes of Operation  
PORTA, PORTB, PORTC, and data direction registers DDRA, DDRB, and DDRC are not in the map in  
expanded and peripheral modes. PEAR, MODE, PUCR, and RDRIV are not in the map in peripheral  
mode.  
When EMD is set:  
PORTD and DDRD are not the map in wide expanded modes, peripheral mode, and narrow special  
expanded mode.  
PORTE and DDRE are not in the map in peripheral mode and expanded modes.  
KWIED and KWIFD are not in the map in wide expanded modes and narrow special expanded  
mode.  
MC68HC812A4 Data Sheet, Rev. 7  
42  
Freescale Semiconductor  
Chapter 3  
Central Processor Unit (CPU12)  
3.1 Overview  
The CPU12 is a high-speed, 16-bit processor unit. It has full 16-bit data paths and wider internal registers  
(up to 20 bits) for high-speed extended math instructions. The instruction set is a proper superset of the  
M68HC11instruction set. The CPU12 allows instructions with odd byte counts, including many single-byte  
instructions. This provides efficient use of ROM space. An instruction queue buffers program information  
so the CPU always has immediate access to at least three bytes of machine code at the start of every  
instruction. The CPU12 also offers an extensive set of indexed addressing capabilities.  
3.2 Programming Model  
CPU12 registers are an integral part of the CPU and are not addressed as if they were memory locations.  
See Figure 3-1.  
7
A
0
7
B
0
0
8-BIT ACCUMULATORS A AND B  
15  
D
X
16-BIT DOUBLE ACCUMULATOR D (A : B)  
15  
15  
15  
15  
0
0
0
0
INDEX REGISTER X  
INDEX REGISTER Y  
STACK POINTER  
Y
SP  
PC  
PROGRAM COUNTER  
S
X
H
I
N Z V C  
CONDITION CODE REGISTER  
CARRY  
OVERFLOW  
ZERO  
NEGATIVE  
IRQ INTERRUPT MASK (DISABLE)  
HALF-CARRY FOR BCD ARITHMETIC  
XIRQ INTERRUPT MASK (DISABLE)  
STOP DISABLE (IGNORE STOP OPCODES)  
Figure 3-1. Programming Model  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
43  
Central Processor Unit (CPU12)  
3.3 CPU Registers  
This section describes the CPU registers.  
3.3.1 Accumulators A and B  
Accumulators A and B are general-purpose 8-bit accumulators that contain operands and results of  
arithmetic calculations or data manipulations.  
Bit 7  
A7  
6
5
4
3
2
1
Bit 0  
A0  
A6  
A5  
A4  
A3  
A2  
A1  
Reset:  
Unaffected by reset  
Figure 3-2. Accumulator A (A)  
Bit 7  
B7  
6
5
4
3
2
1
Bit 0  
B0  
B6  
B5  
B4  
B3  
B2  
B1  
Reset:  
Unaffected by reset  
Figure 3-3. Accumulator B (B)  
3.3.2 Accumulator D  
Accumulator D is the concatenation of accumulators A and B. Some instructions treat the combination of  
these two 8-bit accumulators as a 16-bit double accumulator.  
Bit 15  
14  
13  
12  
11  
10  
9
8
7
6
5
4
3
2
1
Bit 0  
D15  
(A7)  
D14  
(A6)  
D13  
(A5)  
D12  
(A4)  
D11  
(A3)  
D10  
(A2)  
D9 (A1) D8 (A0) D7 (B7) D6 (B6) D5 (B5) D4 (B4) D3 (B3) D2 (B2) D1 (B1) D0 (B0)  
Unaffected by reset  
Reset:  
Figure 3-4. Accumulator D (D)  
MC68HC812A4 Data Sheet, Rev. 7  
44  
Freescale Semiconductor  
CPU Registers  
3.3.3 Index Registers X and Y  
Index registers X and Y are used for indexed addressing. Indexed addressing adds the value in an index  
register to a constant or to the value in an accumulator to form the effective address of the operand.  
Index registers X and Y can also serve as temporary data storage locations.  
Bit 15  
X15  
14  
13  
12  
11  
10  
9
8
7
6
5
4
3
2
1
Bit 0  
X0  
X14  
X13  
X12  
X11  
X10  
X9  
X8  
X7  
X6  
X5  
X4  
X3  
X2  
X1  
Unaffected by reset  
Reset:  
Figure 3-5. Index Register X (X)  
Bit 15  
Y15  
14  
13  
12  
11  
10  
9
8
7
6
5
4
3
2
1
Bit 0  
Y0  
Y14  
Y13  
Y12  
Y11  
Y10  
Y9  
Y8  
Y7  
Y6  
Y5  
Y4  
Y3  
Y2  
Y1  
Unaffected by reset  
Reset:  
Figure 3-6. Index Register Y (Y)  
3.3.4 Stack Pointer  
The stack pointer (SP) contains the last stack address used. The CPU12 supports an automatic program  
stack that is used to save system context during subroutine calls and interrupts.  
The stack pointer can also serve as a temporary data storage location or as an index register for indexed  
addressing.  
Bit 15  
14  
13  
12  
11  
10  
9
8
7
6
5
4
3
2
1
Bit 0  
SP0  
SP15 SP14 SP13 SP12 SP11 SP10  
SP9  
SP8  
SP7  
SP6  
SP5  
SP4  
SP3  
SP2  
SP1  
Reset:  
Unaffected by reset  
Figure 3-7. Stack Pointer (SP)  
3.3.5 Program Counter  
The program counter contains the address of the next instruction to be executed.  
The program counter can also serve as an index register in all indexed addressing modes except  
autoincrement and autodecrement.  
Bit 15  
14  
13  
12  
11  
10  
9
8
7
6
5
4
3
2
1
Bit 0  
SP0  
SP15 SP14 SP13 SP12 SP11 SP10  
SP9  
SP8  
SP7  
SP6  
SP5  
SP4  
SP3  
SP2  
SP1  
Reset:  
Unaffected by reset  
Figure 3-8. Program Counter (PC)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
45  
Central Processor Unit (CPU12)  
3.3.6 Condition Code Register  
Bit 7  
S
6
X
1
5
H
U
4
I
3
N
U
2
Z
U
1
V
U
Bit 0  
C
1
1
U
Reset:  
U = Unaffected  
Figure 3-9. Condition Code Register (CCR)  
S — Stop Disable Bit  
Setting the S bit disables the STOP instruction.  
X — XIRQ Interrupt Mask Bit  
Setting the X bit masks interrupt requests from the XIRQ pin.  
H — Half-Carry Flag  
The H flag is used only for BCD arithmetic operations. It is set when an ABA, ADD, or ADC instruction  
produces a carry from bit 3 of accumulator A. The DAA instruction uses the H flag and the C flag to  
adjust the result to correct BCD format.  
I — Interrupt Mask Bit  
Setting the I bit disables maskable interrupt sources.  
N — Negative Flag  
The N flag is set when the result of an operation is less than 0.  
Z — Zero Flag  
The Z flag is set when the result of an operation is all 0s.  
V — Two’s Complement Overflow Flag  
The V flag is set when a two’s complement overflow occurs.  
C — Carry/Borrow Flag  
The C flag is set when an addition or subtraction operation produces a carry or borrow.  
3.4 Data Types  
The CPU12 supports four data types:  
1. Bit data  
2. 8-bit and 16-bit signed and unsigned integers  
3. 16-bit unsigned fractions  
4. 16-bit addresses  
A byte is eight bits wide and can be accessed at any byte location. A word is composed of two consecutive  
bytes with the most significant byte at the lower value address. There are no special requirements for  
alignment of instructions or operands.  
MC68HC812A4 Data Sheet, Rev. 7  
46  
Freescale Semiconductor  
Addressing Modes  
3.5 Addressing Modes  
Addressing modes determine how the CPU accesses memory locations to be operated upon. The CPU12  
includes all of the addressing modes of the M68HC11 CPU as well as several new forms of indexed  
addressing. Table 3-1 is a summary of the available addressing modes.  
Table 3-1. Addressing Mode Summary  
Addressing Mode  
Source Format  
Abbreviation  
Description  
Inherent  
INST  
INH  
Operands (if any) are in CPU registers.  
INST #opr8i  
or  
INST #opr16i  
Operand is included in instruction stream.  
8- or 16-bit size implied by context  
Immediate  
IMM  
Operand is the lower 8 bits of an address in the range  
$0000–$00FF.  
Direct  
INST opr8a  
DIR  
Extended  
INST opr16a  
EXT  
Operand is a 16-bit address  
INST rel8  
or  
INST rel16  
An 8-bit or 16-bit relative offset from the current pc is  
supplied in the instruction.  
Relative  
REL  
Indexed  
(5-bit offset)  
INST oprx5,xysp  
INST oprx3,–xys  
INST oprx3,+xys  
IDX  
IDX  
IDX  
5-bit signed constant offset from x, y, sp, or pc  
Auto pre-decrement x, y, or sp by 1 ~ 8  
Auto pre-increment x, y, or sp by 1 ~ 8  
Indexed  
(auto pre-decrement)  
Indexed  
(auto pre-increment)  
Indexed  
(auto  
post-decrement)  
INST oprx3,xys–  
IDX  
Auto post-decrement x, y, or sp by 1 ~ 8  
Auto post-increment x, y, or sp by 1 ~ 8  
Indexed  
(auto post-increment)  
INST oprx3,xys+  
INST abd,xysp  
IDX  
IDX  
Indexed  
(accumulator offset)  
Indexed with 8-bit (A or B) or 16-bit (D) accumulator  
offset from x, y, sp, or pc  
Indexed  
(9-bit offset)  
9-bit signed constant offset from x, y, sp, or pc  
(lower 8-bits of offset in one extension byte)  
INST oprx9,xysp  
INST oprx16,xysp  
IDX1  
IDX2  
Indexed  
(16-bit offset)  
16-bit constant offset from x, y, sp, or pc  
(16-bit offset in two extension bytes)  
Pointer to operand is found at...  
16-bit constant offset from x, y, sp, or pc  
(16-bit offset in two extension bytes)  
Indexed-indirect  
(16-bit offset)  
INST [oprx16,xysp]  
INST [D,xysp]  
[IDX2]  
Indexed-indirect  
(D accumulator  
offset)  
Pointer to operand is found at...  
x, y, sp, or pc plus the value in D  
[D,IDX]  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
47  
Central Processor Unit (CPU12)  
3.6 Indexed Addressing Modes  
The CPU12 indexed modes reduce execution time and eliminate code size penalties for using the Y index  
register. CPU12 indexed addressing uses a postbyte plus zero, one, or two extension bytes after the  
instruction opcode.  
The postbyte and extensions do these tasks:  
Specify which index register is used  
Determine whether a value in an accumulator is used as an offset  
Enable automatic pre- or post-increment or decrement  
Specify use of 5-bit, 9-bit, or 16-bit signed offsets  
Table 3-2. Summary of Indexed Operations  
Postbyte  
Code (xb)  
Source Code  
Syntax  
Comments  
rr: 00 = X, 01 = Y, 10 = SP, 11 = PC  
,r  
5-bit constant offset n = –16 to +15  
r can specify x, y, sp, or pc  
rr0nnnnn n,r  
–n,r  
Constant offset (9- or 16-bit signed)  
z:0 = 9-bit with sign in LSB of postbyte(s)  
1 = 16-bit  
if z = s = 1, 16-bit offset indexed-indirect (see below)  
rr can specify x, y, sp, or pc  
n,r  
111rr0zs  
–n,r  
16-bit offset indexed-indirect  
rr can specify x, y, sp, or pc  
111rr011 [n,r]  
Auto pre-decrement/increment  
n,–r  
rr1pnnnn  
n,r–  
n,+r or Auto post-decrement/increment;  
n,r+ p = pre-(0) or post-(1), n = –8 to –1, +1 to +8  
rr can specify x, y, or sp (pc not a valid choice)  
Accumulator offset (unsigned 8-bit or 16-bit)  
aa:00 = A  
01 = B  
10 = D (16-bit)  
11 = see accumulator D offset indexed-indirect  
rr can specify x, y, sp, or pc  
A,r  
111rr1aa B,r  
D,r  
Accumulator D offset indexed-indirect  
rr can specify x, y, sp, or pc  
111rr111 [D,r]  
3.7 Opcodes and Operands  
The CPU12 uses 8-bit opcodes. Each opcode identifies a particular instruction and associated addressing  
mode to the CPU. Several opcodes are required to provide each instruction with a range of addressing  
capabilities.  
Only 256 opcodes would be available if the range of values were restricted to the number that can be  
represented by 8-bit binary numbers. To expand the number of opcodes, a second page is added to the  
opcode map. Opcodes on the second page are preceded by an additional byte with the value $18.  
To provide additional addressing flexibility, opcodes can also be followed by a postbyte or extension  
bytes. Postbytes implement certain forms of indexed addressing, transfers, exchanges, and loop  
primitives. Extension bytes contain additional program information such as addresses, offsets, and  
immediate data.  
MC68HC812A4 Data Sheet, Rev. 7  
48  
Freescale Semiconductor  
Chapter 4  
Resets and Interrupts  
4.1 Introduction  
Resets and interrupts are exceptions. Each exception has a 16-bit vector that points to the memory  
location of the associated exception-handling routine. Vectors are stored in the upper 128 bytes of the  
standard 64-Kbyte address map.  
The six highest vector addresses are used for resets and non-maskable interrupt sources. The remainder  
of the vectors are used for maskable interrupts, and all must be initialized to point to the address of the  
appropriate service routine.  
4.2 Exception Priority  
A hardware priority hierarchy determines which reset or interrupt is serviced first when simultaneous  
requests are made. Six sources are not maskable. The remaining sources are maskable and any one of  
them can be given priority over other maskable interrupts.  
The priorities of the non-maskable sources are:  
1. POR (power-on reset) or RESET pin  
2. Clock monitor reset  
3. COP (computer operating properly) watchdog reset  
4. Unimplemented instruction trap  
5. Software interrupt instruction (SWI)  
6. XIRQ signal (if X bit in CCR = 0)  
4.3 Maskable Interrupts  
Maskable interrupt sources include on-chip peripheral systems and external interrupt service requests.  
Interrupts from these sources are recognized when the global interrupt mask bit (I) in the CCR is cleared.  
The default state of the I bit out of reset is 1, but it can be written at any time.  
Interrupt sources are prioritized by default but any one maskable interrupt source may be assigned the  
highest priority by means of the HPRIO register. The relative priorities of the other sources remain the  
same.  
An interrupt that is assigned highest priority is still subject to global masking by the I bit in the CCR or by  
any associated local bits. Interrupt vectors are not affected by priority assignment. HPRIO can only be  
written while the I bit is set (interrupts inhibited). Table 4-1 lists interrupt sources and vectors in default  
order of priority.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
49  
Resets and Interrupts  
Table 4-1. Interrupt Vector Map  
Vector  
Address  
Local  
Enable  
CCR HPRIO Value  
Exception Source  
Flag  
Mask  
None  
None  
None  
None  
None  
X bit  
I bit  
to Elevate  
$FFFE, $FFFF Power-on reset  
$FFFC, $FFFD Clock monitor reset  
$FFFA, $FFFB COP reset  
None  
CME, FCME  
COP rate selected  
$FFF8, $FFF9 Unimplemented instruction trap  
$FFF6, $FFF7 SWI instruction  
$FFF4, $FFF5 XIRQ pin  
None  
None  
None  
$FFF2, $FFF3 IRQ pin or key wakeup D  
$FFF0, $FFF1 Real-time interrupt  
$FFEE, $FFEF Timer channel 0  
$FFEC, $FFED Timer channel 1  
$FFEA, $FFEB Timer channel 2  
$FFE8, $FFE9 Timer channel 3  
$FFE6, $FFE7 Timer channel 4  
$FFE4, $FFE5 Timer channel 5  
$FFE2, $FFE3 Timer channel 6  
$FFE0, $FFE1 Timer channel 7  
$FFDE, $FFDF Timer overflow  
IRQEN, KWIED[7–0]  
$F2  
$F0  
$EE  
$EC  
$EA  
$E8  
$E6  
$E4  
$E2  
$E0  
$DE  
$DC  
$DA  
RTIF  
C0F  
C1F  
C2F  
C3F  
C4F  
C5F  
C6F  
C7F  
TOF  
PAOVF  
PAIF  
RTIE  
C0I  
I bit  
I bit  
C1I  
I bit  
C2I  
I bit  
C3I  
I bit  
C4I  
I bit  
C5I  
I bit  
C6I  
I bit  
C7I  
I bit  
TOI  
PAOVI  
PAI  
I bit  
$FFDC, $FFDD Pulse accumulator overflow  
$FFDA, $FFDB Pulse accumulator input edge  
I bit  
I bit  
SPI serial transfer complete  
SPIF  
MODF  
$FFD8, $FFD9  
Mode fault  
SPI0E  
I bit  
I bit  
$D8  
SCI0 transmit data register empty  
SCI0 transmission complete  
$FFD6, $FFD7 SCI0 receive data register full  
SCI0 receiver overrun  
TDRE  
TC  
RDRF  
OR  
TIE  
TCIE  
RIE  
$D6  
RIE  
SCI0 receiver idle  
IDLE  
ILIE  
SCI1 transmit data register empty  
SCI1 transmission complete  
$FFD4, $FFD5 SCI1 receive data register full  
SCI1 receiver overrun  
TDRE  
TC  
RDRF  
OR  
TIE  
TCIE  
RIE  
I bit  
$D4  
RIE  
SCI1 receiver idle  
IDLE  
ILIE  
$FFD2, $FFD3 ATD  
ASCIF  
ASCIE  
KWIEJ[7–0]  
KWIEH[7–0]  
I bit  
I bit  
I bit  
I bit  
$D2  
$D0  
$FFD0, $FFD1 Key wakeup J (stop wakeup)  
$FFCE, $FFCF Key wakeup H (stop wakeup)  
$FF80–$FFCD Reserved  
$CE  
$80–$CC  
MC68HC812A4 Data Sheet, Rev. 7  
50  
Freescale Semiconductor  
Interrupt Registers  
4.4 Interrupt Registers  
This section describes the interrupt registers.  
4.4.1 Interrupt Control Register  
Address: $001E  
Bit 7  
IRQE  
0
6
IRQEN  
1
5
DLY  
1
4
0
3
0
2
0
1
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
0
0
0
0
= Unimplemented  
Figure 4-1. Interrupt Control Register (INTCR)  
Read: Anytime  
Write: Varies from bit to bit  
IRQE — IRQ Edge-Sensitive-Only Bit  
IRQE can be written once in normal modes. In special modes, IRQE can be written anytime, but the  
first write is ignored.  
1 = IRQ responds only to falling edges.  
0 = IRQ pin responds to low levels.  
IRQEN — IRQ Enable Bit  
IRQEN can be written anytime in all modes. The IRQ pin has an internal pullup.  
1 = IRQ pin and key wakeup D connected to interrupt logic  
0 = IRQ pin and key wakeup D disconnected from interrupt logic  
DLY — Oscillator Startup Delay on Exit from Stop Mode Bit  
DLY can be written once in normal modes. In special modes, DLY can be written anytime.  
The delay time of about 4096 cycles is based on the M-clock rate chosen.  
1 = Stabilization delay on exit from stop mode  
0 = No stabilization delay on exit from stop mode  
4.4.2 Highest Priority I Interrupt Register  
Address: $001F  
Bit 7  
1
6
1
5
PSEL5  
1
4
PSEL4  
1
3
PSEL3  
0
2
PSEL2  
0
1
PSEL1  
1
Bit 0  
0
Read:  
Write:  
Reset:  
1
1
0
= Unimplemented  
Figure 4-2. Highest Priority I Interrupt Register (HPRIO)  
Read: Anytime  
Write: Only if I mask in CCR = 1 (interrupts inhibited)  
To give a maskable interrupt source highest priority, write the low byte of the vector address to the HPRIO  
register. For example, writing $F0 to HPRIO assigns highest maskable interrupt priority to the real-time  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
51  
Resets and Interrupts  
interrupt timer ($FFF0). If an unimplemented vector address or a non-I-masked vector address (a value  
higher than $F2) is written, then IRQ is the default highest priority interrupt.  
4.5 Resets  
There are five possible sources of reset:  
1. Power-on reset (POR)  
2. External reset on the RESET pin  
3. Reset from the alternate reset pin, ARST  
4. The computer operating properly (COP) reset  
5. Clock monitor reset  
NOTE  
The first three reset sources all share the power-on reset vector and the last  
two have their own vector for a total of three possible reset vectors.  
Entry into reset is asynchronous and does not require a clock but the MCU cannot sequence out of reset  
without a system clock.  
4.5.1 Power-On Reset  
A positive transition on VDD causes a power-on reset (POR). An external voltage level detector, or other  
external reset circuits, are the usual source of reset in a system. The POR circuit only initializes internal  
circuitry during cold starts and cannot be used to force a reset as system voltage drops.  
4.5.2 External Reset  
The CPU distinguishes between internal and external reset conditions by sensing whether the reset pin  
rises to a logic 1 in less than nine E-clock cycles after an internal device releases reset. When a reset  
condition is sensed, the RESET pin is driven low by an internal device for about 16 E-clock cycles, then  
released. Nine E-clock cycles later, it is sampled. If the pin is still held low, the CPU assumes that an  
external reset has occurred. If the pin is high, it indicates that the reset was initiated internally by either  
the COP system or the clock monitor.  
To prevent a COP or clock monitor reset from being detected during an external reset, hold the reset pin  
low for at least 32 cycles. An external RC power-up delay circuit on the reset pin is not recommended  
since circuit charge time can cause the MCU to misinterpret the type of reset that has occurred.  
4.5.3 COP Reset  
The MCU includes a computer operating properly (COP) system to help protect against software failures.  
When COP is enabled, software must write $55 and $AA (in this order) to the COPRST register to keep  
a watchdog timer from timing out. Other instructions may be executed between these writes. A write of  
any value other than $55 or $AA or software failing to execute the sequence properly causes a COP reset  
to occur.  
4.5.4 Clock Monitor Reset  
If clock frequency falls below a predetermined limit when the clock monitor is enabled, a reset occurs.  
MC68HC812A4 Data Sheet, Rev. 7  
52  
Freescale Semiconductor  
Effects of Reset  
4.6 Effects of Reset  
When a reset occurs, MCU registers and control bits are changed to known startup states, as follows.  
4.6.1 Operating Mode and Memory Map  
The states of the BGND, MODA, and MODB pins during reset determine the operating mode and default  
memory mapping. The SMODN, MODA, and MODB bits in the MODE register reflect the status of the  
mode-select inputs at the rising edge of reset. Operating mode and default maps can subsequently be  
changed according to strictly defined rules.  
4.6.2 Clock and Watchdog Control Logic  
Reset enables the COP watchdog with the CR2–CR0 bits set for the longest timeout period. The clock  
monitor is disabled. The RTIF flag is cleared and automatic hardware interrupts are masked. The rate  
control bits are cleared, and must be initialized before the RTI system is used. The DLY control bit is set  
to specify an oscillator startup delay upon recovery from stop mode.  
4.6.3 Interrupts  
Reset initializes the HPRIO register with the value $F2, causing the IRQ pin to have the highest I bit  
interrupt priority. The IRQ pin is configured for level-sensitive operation (for wired-OR systems). However,  
the I and X bits in the CCR are set, masking IRQ and XIRQ interrupt requests.  
4.6.4 Parallel I/O  
If the MCU comes out of reset in an expanded mode, port A and port B are the address bus. Port C and  
port D are the data bus. In narrow mode, port C alone is the data bus. Port E pins are normally used to  
control the external bus. The PEAR register affects port E pin operation.  
If the MCU comes out of reset in a single-chip mode, all ports are configured as general-purpose,  
high-impedance inputs except in normal narrow expanded mode (NNE). In NNE, PE3 is configured as an  
output driven high.  
In expanded modes, PF5 is an active chip-select.  
4.6.5 Central Processor Unit  
After reset, the CPU fetches a vector from the appropriate address and begins executing instructions. The  
stack pointer and other CPU registers are indeterminate immediately after reset. The CCR X and I  
interrupt mask bits are set to mask any interrupt requests. The S bit is also set to inhibit the STOP  
instruction.  
4.6.6 Memory  
After reset, the internal register block is located at $0000–$01FF and RAM is at $0800–$0BFF. EEPROM  
is located at $1000–$1FFF in expanded modes and at $F000–$FFFF in single-chip modes.  
4.6.7 Other Resources  
The timer, serial communications interface (SCI), serial peripheral interface (SPI), and analog-to-digital  
converter (ATD) are off after reset.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
53  
Resets and Interrupts  
4.7 Interrupt Recognition  
Once enabled, an interrupt request can be recognized at any time after the I bit in the CCR is cleared.  
When an interrupt request is recognized, the CPU responds at the completion of the instruction being  
executed. Interrupt latency varies according to the number of cycles required to complete the instruction.  
Some of the longer instructions can be interrupted and resume normally after servicing the interrupt.  
When the CPU begins to service an interrupt request, it:  
Clears the instruction queue  
Calculates the return address  
Stacks the return address and the contents of the CPU registers as shown in Table 4-2  
Table 4-2. Stacking Order on Entry to Interrupts  
Memory Location  
SP – 2  
Stacked Values  
RTNH : RTNL  
YH : YL  
XH : XL  
SP – 4  
SP – 6  
SP – 8  
SP – 9  
B : A  
CCR  
After stacking the CCR, the CPU:  
Sets the I bit to prevent other interrupts from disrupting the interrupt service routine  
Sets the X bit if an XIRQ interrupt request is pending  
Fetches the interrupt vector for the highest-priority request that was pending at the beginning of the  
interrupt sequence  
Begins execution of the interrupt service routine at the location pointed to by the vector  
If no other interrupt request is pending at the end of the interrupt service routine, an RTI instruction  
recovers the stacked values. Program execution resumes program at the return address.  
If another interrupt request is pending at the end of an interrupt service routine, the RTI instruction  
recovers the stacked values. However, the CPU then:  
Adjusts the stack pointer to point again at the stacked CCR location, SP – 9  
Fetches the vector of the pending interrupt  
Begins execution of the interrupt service routine at the location pointed to by the vector  
MC68HC812A4 Data Sheet, Rev. 7  
54  
Freescale Semiconductor  
Chapter 5  
Operating Modes and Resource Mapping  
5.1 Introduction  
The MCU can operate in eight different modes. Each mode has a different default memory map and  
external bus configuration. After reset, most system resources can be mapped to other addresses by  
writing to the appropriate control registers.  
5.2 Operating Modes  
The states of the BKGD, MODB, and MODA pins during reset determine the operating mode after reset.  
The SMODN, MODB, and MODA bits in the MODE register show the current operating mode and provide  
limited mode switching during operation. The states of the BKGD, MODB, and MODA pins are latched  
into these bits on the rising edge of the reset signal.  
Table 5-1. Mode Selection  
Port A  
Port B  
BKGD MODB MODA  
Mode  
Port C  
Port D  
G.P.(1) I/O  
ADDR  
ADDR  
ADDR  
G.P. I/O  
ADDR  
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
Special single-chip  
Special expanded narrow  
Special peripheral  
G.P. I/O G.P. I/O  
DATA  
DATA  
DATA  
G.P. I/O  
DATA  
Special expanded wide  
Normal single chip  
DATA  
G.P. I/O G.P. I/O  
Normal expanded narrow  
Reserved (forced to peripheral)  
Normal expanded wide  
DATA  
G.P. I/O  
ADDR  
DATA  
DATA  
1. G.P. = General purpose  
The two basic types of operating modes are:  
Normal modes — Some registers and bits are protected against accidental changes.  
Special modes — Protected control registers and bits are allowed greater access for special  
purposes such as testing and emulation.  
A system development and debug feature, background debug mode (BDM), is available in all modes. In  
special single-chip mode, BDM is active immediately after reset.  
5.2.1 Normal Operating Modes  
These modes provide three operating configurations. Background debugging is available in all three  
modes, but must first be enabled for some operations by means of a BDM command. BDM can then be  
made active by another BDM command.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
55  
Operating Modes and Resource Mapping  
5.2.1.1 Normal Expanded Wide Mode  
The 16-bit external address bus uses port A for the high byte and port B for the low byte. The 16-bit  
external data bus uses port C for the high byte and port D for the low byte.  
5.2.1.2 Normal Expanded Narrow Mode  
The 16-bit external address bus uses port A for the high byte and port B for the low byte. The 8-bit external  
data bus uses port C. In this mode, 16-bit data is presented high byte first, followed by the low byte. The  
address is automatically incremented on the second cycle.  
5.2.1.3 Normal Single-Chip Mode  
There are no external buses in normal single-chip mode. The MCU operates as a stand-alone device and  
all program and data resources are on-chip. Port pins can be used for general-purpose I/O (input/output).  
5.2.2 Special Operating Modes  
Special operating modes are commonly used in factory testing and system development.  
5.2.2.1 Special Expanded Wide Mode  
This mode is for emulation of normal expanded wide mode and emulation of normal single-chip mode with  
a 16-bit bus. The bus-control pins of port E are all configured for their bus-control output functions rather  
than general-purpose I/O.  
5.2.2.2 Special Expanded Narrow Mode  
This mode is for emulation of normal expanded narrow mode. External 16-bit data is handled as two  
back-to-back bus cycles, one for the high byte followed by one for the low byte. Internal operations  
continue to use full 16-bit data paths.  
For development purposes, port D can be made available for visibility of 16-bit internal accesses by  
setting the EMD and IVIS control bits.  
5.2.2.3 Special Single-Chip Mode  
This mode can be used to force the MCU to active BDM mode to allow system debug through the BKGD  
pin. There are no external address and data buses in this mode. The MCU operates as a stand-alone  
device and all program and data space are on-chip. External port pins can be used for general-purpose  
I/O.  
5.2.2.4 Special Peripheral Mode  
The CPU is not active in this mode. An external master can control on-chip peripherals for testing  
purposes. It is not possible to change to or from this mode without going through reset. Background  
debugging should not be used while the MCU is in special peripheral mode as internal bus conflicts  
between BDM and the external master can cause improper operation of both modes.  
5.2.3 Background Debug Mode  
Background debug mode (BDM) is an auxiliary operating mode that is used for system development.  
BDM is implemented in on-chip hardware and provides a full set of debug operations. Some BDM  
MC68HC812A4 Data Sheet, Rev. 7  
56  
Freescale Semiconductor  
Internal Resource Mapping  
commands can be executed while the CPU is operating normally. Other BDM commands are firmware  
based and require the BDM firmware to be enabled and active for execution.  
In special single-chip mode, BDM is enabled and active immediately out of reset. BDM is available in all  
other operating modes, but must be enabled before it can be activated. BDM should not be used in special  
peripheral mode because of potential bus conflicts.  
Once enabled, background mode can be made active by a serial command sent via the BKGD pin or  
execution of a CPU12 BGND instruction. While background mode is active, the CPU can interpret special  
debugging commands, and read and write CPU registers, peripheral registers, and locations in memory.  
While BDM is active, the CPU executes code located in a small on-chip ROM mapped to addresses  
$FF20 to $FFFF, and BDM control registers are accessible at addresses $FF00 to $FF06. The BDM ROM  
replaces the regular system vectors while BDM is active. While BDM is active, the user memory from  
$FF00 to $FFFF is not in the map except through serial BDM commands.  
5.3 Internal Resource Mapping  
The internal register block, RAM, and EEPROM have default locations within the 64-Kbyte standard  
address space but may be reassigned to other locations during program execution by setting bits in  
mapping registers INITRG, INITRM, and INITEE. During normal operating modes, these registers can be  
written once. It is advisable to explicitly establish these resource locations during the initialization phase  
of program execution, even if default values are chosen, to protect the registers from inadvertent  
modification later.  
Writes to the mapping registers go into effect between the cycle that follows the write and the cycle after  
that. To assure that there are no unintended operations, a write to one of these registers should be  
followed with a NOP (no operation) instruction.  
If conflicts occur when mapping resources, the register block takes precedence over the other resources;  
RAM or EEPROM addresses occupied by the register block are not available for storage. When active,  
BDM ROM takes precedence over other resources although a conflict between BDM ROM and register  
space is not possible. Table 5-2 shows resource mapping precedence.  
Table 5-2. Mapping Precedence  
Precedence  
Resource  
BDM ROM (if active)  
Register space  
RAM  
1
2
3
4
5
EEPROM  
External memory  
All address space not used by internal resources is external memory by default.  
The memory expansion module manages three memory overlay windows:  
1. Program  
2. Data  
3. One extra page overlay  
The sizes and locations of the program and data overlay windows are fixed. One of two locations can be  
selected for the extra page (EPAGE).  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
57  
Operating Modes and Resource Mapping  
5.4 Mode and Resource Mapping Registers  
This section describes the mode and resource mapping registers.  
5.4.1 Mode Register  
MODE controls the MCU operating mode and various configuration options. This register is not in the map  
in peripheral mode.  
Address: $000B  
Bit 7  
6
5
4
3
2
0
1
Bit 0  
EME  
Read:  
Write:  
SMODN  
MODB  
MODA  
ESTR  
IVIS  
EMD  
Reset States  
Special single-chip:  
Special expanded narrow:  
Special peripheral:  
0
0
0
0
1
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
Special expanded wide:  
Normal single-chip:  
Normal expanded narrow:  
Normal expanded wide:  
Figure 5-1. Mode Register (MODE)  
Read: Anytime  
Write: Varies from bit to bit  
SMODN, MODB, and MODA — Mode Select Special, B, and A Bits  
These bits show the current operating mode and reflect the status of the BKGD, MODB, and MODA  
input pins at the rising edge of reset.  
SMODN can be written only if SMODN = 0 (in special modes) but the first write is ignored. MODB and  
MODA may be written once if SMODN = 1; anytime if SMODN = 0, except that special peripheral and  
reserved modes cannot be selected.  
ESTR — E-Clock Stretch Enable Bit  
ESTR determines if the E-clock behaves as a simple free-running clock or as a bus control signal that  
is active only for external bus cycles.  
1 = E stretches high during external access cycles and low during non-visible internal accesses.  
0 = E never stretches (always free running).  
Normal modes: Write once  
Special modes: Write anytime  
IVIS — Internal Visibility Bit  
IVIS determines whether internal ADDR, DATA, R/W, and LSTRB signals can be seen on the external  
bus during accesses to internal locations. If this bit is set in special narrow mode and EMD = 1 when  
an internal access occurs, the data appears wide on port C and port D. This allows for emulation.  
Visibility is not available when the part is operating in a single-chip mode.  
1 = Internal bus operations are visible on external bus.  
0 = Internal bus operations are not visible on external bus.  
MC68HC812A4 Data Sheet, Rev. 7  
58  
Freescale Semiconductor  
Mode and Resource Mapping Registers  
Normal modes: Write once  
Special modes: Write anytime except the first time  
EMD — Emulate Port D Bit  
This bit only has meaning in special expanded narrow mode.  
In expanded wide modes and special peripheral mode, PORTD, DDRD, KWIED, and KWIFD are  
removed from the memory map regardless of the state of this bit.  
In single-chip modes and normal expanded narrow mode, PORTD, DDRD, KWIED, and KWIFD are in  
the memory map regardless of the state of this bit.  
1 = If in special expanded narrow mode, PORTD, DDRD, KWIED, and KWIFD are removed from  
the memory map. Removing the registers from the map allows the user to emulate the function  
of these registers externally.  
0 = PORTD, DDRD, KWIED, and KWIFD are in the memory map.  
Normal modes: Write once  
Special modes: Write anytime except the first time  
EME — Emulate Port E Bit  
In single-chip mode, PORTE and DDRE are always in the map regardless of the state of this bit.  
1 = If in an expanded mode, PORTE and DDRE are removed from the internal memory map.  
Removing the registers from the map allows the user to emulate the function of these registers  
externally.  
0 = PORTE and DDRE in the memory map  
Normal modes: Write once  
Special modes: Write anytime except the first time  
5.4.2 Register Initialization Register  
After reset, the 512-byte register block resides at location $0000 but can be reassigned to any 2-Kbyte  
boundary within the standard 64-Kbyte address space. Mapping of internal registers is controlled by five  
bits in the INITRG register. The register block occupies the first 512 bytes of the 2-Kbyte block.  
Address: $0011  
Bit 7  
REG15  
0
6
REG14  
0
5
REG13  
0
4
REG12  
0
3
REG11  
0
2
0
0
1
0
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
Figure 5-2. Register Initialization Register (INITRG)  
Read: Anytime  
Write: Once in normal modes; anytime in special modes  
REG15–REG11 — Register Position Bits  
These bits specify the upper five bits of the 16-bit register address.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
59  
Operating Modes and Resource Mapping  
5.4.3 RAM Initialization Register  
After reset, addresses of the 1-Kbyte RAM array begin at location $0800 but can be assigned to any  
2-Kbyte boundary within the standard 64-Kbyte address space. Mapping of internal RAM is controlled by  
five bits in the INITRM register. The RAM array occupies the last 1 Kbyte of the 2-Kbyte block.  
Address: $0010  
Bit 7  
RAM15  
0
6
RAM14  
0
5
RAM13  
0
4
RAM12  
0
3
RAM11  
1
2
0
0
1
0
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
Figure 5-3. RAM Initialization Register (INITRM)  
Read: Anytime  
Write: Once in normal modes; anytime in special modes  
RAM15–RAM11 — RAM Position Bits  
These bits specify the upper five bits of the 16-bit RAM address.  
5.4.4 EEPROM Initialization Register  
The MCU has 4 Kbytes of EEPROM which is activated by the EEON bit in the INITEE register.  
Mapping of internal EEPROM is controlled by four bits in the INITEE register. After reset, EEPROM  
address space begins at location $1000 but can be mapped to any 4-Kbyte boundary within the standard  
64-Kbyte address space.  
Address: $0012  
Bit 7  
6
5
4
3
0
2
0
1
0
Bit 0  
Read:  
Write:  
EE15  
EE14  
EE13  
EE12  
EEON  
Reset:  
Expanded and peripheral:  
Single-chip:  
0
1
0
1
0
1
1
1
0
0
0
0
0
0
1
1
Figure 5-4. EEPROM Initialization Register (INITEE)  
Read: Anytime  
Write: Varies from bit to bit  
EE15–EE12 — EEPROM Position Bits  
These bits specify the upper four bits of the 16-bit EEPROM address.  
Normal modes: Write once  
Special modes: Write anytime  
EEON — EEPROM On Bit  
EEON enables the on-chip EEPROM. EEON is forced to 1 in single-chip modes.  
Write anytime  
1 = EEPROM at address selected by EE15–EE12  
0 = EEPROM removed from memory map  
MC68HC812A4 Data Sheet, Rev. 7  
60  
Freescale Semiconductor  
Mode and Resource Mapping Registers  
5.4.5 Miscellaneous Mapping Control Register  
Additional mapping controls are available that can be used in conjunction with memory expansion and  
chip selects.  
To use memory expansion, the part must be operated in one of the expanded modes. Sections of the  
standard 64-Kbyte memory map have memory expansion windows which allow more than 64 Kbytes to  
be addressed externally. Memory expansion consists of three memory expansion windows and six  
address lines in addition to the existing standard 16 address lines. The memory expansion function  
reuses as many as six of the standard 16 address lines. Usage of chip selects identifies the source of the  
internal address.  
All of the memory expansion windows have a fixed size and two of them have a fixed address location.  
The third has two selectable address locations.  
Address: $0013  
Bit 7  
EWDIR  
0
6
NDRC  
0
5
0
0
4
0
0
3
0
0
2
0
0
1
0
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
Figure 5-5. Miscellaneous Mapping Control Register (MISC)  
Read: Anytime  
Write: Once in normal modes; anytime in special modes  
EWDIR — Extra Window Positioned in Direct Space Bit  
This bit is only valid in expanded modes. If the EWEN bit in the WINDEF register is cleared, then this  
bit has no meaning or effect.  
1 = If EWEN is set, then a 1 in this bit places the EPAGE at $0000–$03FF.  
0 = If EWEN is set, then a 0 in this bit places the EPAGE at $0400–$07FF.  
NDRC — Narrow Data Bus for Register Chip-Select Space Bit  
This function requires at least one of the chip selects CS3–CS0 to be enabled. It effects the external  
512-byte memory space.  
1 = Makes the register-following chip-selects (2, 1, 0, and sometimes 3) active space (512-byte  
block) act the same as an 8-bit only external data bus. Data only goes through port C externally.  
This allows 8-bit and 16-bit external memory devices to be mixed in a system.  
0 = Makes the register-following chip-select active space act as a full 16-bit data bus. In the narrow  
(8-bit) mode, NDRC has no effect.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
61  
Operating Modes and Resource Mapping  
5.5 Memory Map  
Figure 5-6 illustrates the memory map for each mode of operation immediately after reset.  
$0000  
$0800  
$0000  
REGISTERS  
MAPPABLE TO ANY 2-K SPACE  
EXT  
EXT  
$01FF  
$0800  
RAM  
MAPPABLE TO ANY 2-K SPACE  
$0BFF  
$1000  
$1000  
$2000  
EEPROM  
MAPPABLE TO ANY 4-K SPACE  
$1FFF  
EXT  
$F000  
$F000  
$FF00  
$FFFF  
EEPROM  
SINGLE-CHIP MODES  
BDM  
IF ACTIVE  
$FF00  
$FFC0  
$FFFF  
VECTORS  
VECTORS  
$FFFF  
VECTORS  
SINGLE-CHIP  
SPECIAL  
EXPANDED  
SINGLE-CHIP  
NORMAL  
Figure 5-6. Memory Map  
MC68HC812A4 Data Sheet, Rev. 7  
62  
Freescale Semiconductor  
Chapter 6  
Bus Control and Input/Output (I/O)  
6.1 Introduction  
Internally the MCU has full 16-bit data paths, but depending upon the operating mode and control  
registers, the external bus may be 8 or 16 bits. There are cases where 8-bit and 16-bit accesses can  
appear on adjacent cycles using the LSTRB signal to indicate 8-bit or 16-bit data.  
6.2 Detecting Access Type from External Signals  
The external signals LSTRB, R/W, and A0 can be used to determine the type of bus access that is taking  
place. Accesses to the internal RAM module are the only type of access that produce LSTRB = A0 = 1,  
because the internal RAM is specifically designed to allow misaligned 16-bit accesses in a single cycle.  
In these cases, the data for the address that was accessed is on the low half of the data bus and the data  
for address +1 is on the high half of the data bus.  
Table 6-1. Access Type versus Bus Control Pins  
LSTRB  
A0  
0
R/W  
Type of Access  
1
0
1
0
0
1
1
0
0
1
8-bit read of an even address  
8-bit read of an odd address  
8-bit write of an even address  
8-bit write of an odd address  
16-bit read of an even address  
1
0
1
0
16-bit read of an odd address  
(low/high data swapped)  
1
0
1
1
0
1
1
0
0
16-bit write to an even address  
16-bit write to an even address  
(low/high data swapped)  
6.3 Registers  
Not all registers are visible in the memory map under certain conditions. In special peripheral mode, the  
first 16 registers associated with bus expansion are removed from the memory map.  
In expanded modes, some or all of port A, port B, port C, port D, and port E are used for expansion buses  
and control signals. To allow emulation of the single-chip functions of these ports, some of these registers  
must be rebuilt in an external port replacement unit. In any expanded mode, port A, port B, and port C are  
used for address and data lines so registers for these ports, as well as the data direction registers for  
these ports, are removed from the on-chip memory map and become external accesses.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
63  
Bus Control and Input/Output (I/O)  
Port D and its associated data direction register may be removed from the on-chip map when port D is  
needed for 16-bit data transfers. If the MCU is in an expanded wide mode, port C and port D are used for  
16-bit data and the associated port and data direction registers become external accesses. When the  
MCU is in expanded narrow mode, the external data bus is normally 8 bits. To allow full-speed operation  
while allowing visibility of internal 16-bit accesses, a 16-bit-wide data path is required. The emulate port  
D (EMD) control bit in the MODE register may be set to allow such 16-bit transfers. In this case of narrow  
special expanded mode and the EMD bit set, port D and data direction D registers are removed from the  
on-chip memory map and become external accesses so port D may be rebuilt externally.  
In any expanded mode, port E pins may be needed for bus control (for instance, ECLK and R/W). To  
regain the single-chip functions of port E, the emulate port E (EME) control bit in the MODE register may  
be set. In this special case of expanded mode and EME set, PORTE and DDRE registers are removed  
from the on-chip memory map and become external accesses so port E may be rebuilt externally.  
6.3.1 Port A Data Register  
Address: $0000  
Bit 7  
PA7  
0
6
5
4
3
2
1
Bit 0  
PA0  
Read:  
Write:  
Reset:  
PA6  
PA5  
PA4  
PA3  
PA2  
PA1  
0
0
0
0
0
0
0
Expanded and peripheral: ADDR15  
ADDR14  
ADDR13  
ADDR12  
ADDR11  
ADDR10  
ADDR9  
ADDR8  
Figure 6-1. Port A Data Register (PORTA)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
Bits PA7–PA0 are associated with addresses ADDR15–ADDR8 respectively. When this port is not used  
for external addresses such as in single-chip mode, these pins can be used as general-purpose I/O.  
DDRA determines the primary direction of each pin. This register is not in the on-chip map in expanded  
and peripheral modes.  
6.3.2 Port A Data Direction Register  
Address: $0002  
Bit 7  
DDRA7  
0
6
DDRA6  
0
5
DDRA5  
0
4
DDRA4  
0
3
DDRA3  
0
2
DDRA2  
0
1
DDRA1  
0
Bit 0  
DDRA0  
0
Read:  
Write:  
Reset:  
Figure 6-2. Port A Data Direction Register (DDRA)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
This register determines the primary direction for each port A pin when functioning as a general-purpose  
I/O port. DDRA is not in the on-chip map in expanded and peripheral modes.  
1 = Associated pin is an output.  
0 = Associated pin is a high-impedance input.  
MC68HC812A4 Data Sheet, Rev. 7  
64  
Freescale Semiconductor  
Registers  
6.3.3 Port B Data Register  
Address: $0001  
Bit 7  
6
5
4
3
2
1
Bit 0  
PB0  
Read:  
PB7  
Write:  
PB6  
PB5  
PB4  
PB3  
PB2  
PB1  
Reset:  
0
0
0
0
0
0
0
0
Expanded and peripheral: ADDR7  
ADDR6  
ADDR5  
ADDR4  
ADDR3  
ADDR2  
ADDR1  
ADDR0  
Figure 6-3. Port B Data Register (PORTB)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
Bits PB7–PB0 correspond to address lines ADDR7–ADDR0. When this port is not used for external  
addresses such as in single-chip mode, these pins can be used as general-purpose I/O. DDRB  
determines the primary direction of each pin. This register is not in the on-chip map in expanded and  
peripheral modes.  
6.3.4 Port B Data Direction Register  
Address: $0003  
Bit 7  
DDRB7  
0
6
DDRB6  
0
5
DDRB5  
0
4
DDRB4  
0
3
DDRB3  
0
2
DDRB2  
0
1
DDRB1  
0
Bit 0  
DDRB0  
0
Read:  
Write:  
Reset:  
Figure 6-4. Port B Data Direction Register (DDRB)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
This register determines the primary direction for each port B pin when functioning as a general-purpose  
I/O port. DDRB is not in the on-chip map in expanded and peripheral modes.  
1 = Associated pin is an output.  
0 = Associated pin is a high-impedance input.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
65  
Bus Control and Input/Output (I/O)  
6.3.5 Port C Data Register  
Address: $0004  
Bit 7  
6
5
4
3
2
1
Bit 0  
PC0  
Read:  
Write:  
Reset:  
PC7  
0
PC6  
PC5  
PC4  
PC3  
PC2  
PC1  
0
0
0
0
0
0
0
Expanded wide and peripheral: DATA15  
DATA14  
DATA13  
DATA12  
DATA11  
DATA10  
DATA9  
DATA8  
Expanded narrow: DATA15/7 DATA14/6 DATA13/5 DATA12/4 DATA11/3 DATA10/2 DATA9/1 DATA8/0  
Figure 6-5. Port C Data Register (PORTC)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
Bits PC7–PC0 correspond to data lines DATA15–DATA8. When this port is not used for external data  
such as in single-chip mode, these pins can be used as general-purpose I/O. DDRC determines the  
primary direction for each pin. In narrow expanded modes, DATA15–DATA8 and DATA7–DATA0 are  
multiplexed into the MCU through port C pins on successive cycles. This register is not in the on-chip map  
in expanded and peripheral modes.  
When the MCU is operating in special expanded narrow mode and port C and port D are being used for  
internal visibility, internal accesses produce full 16-bit information with DATA15–DATA8 on port C and  
DATA7–DATA0 on port D. This allows the MCU to operate at full speed while making 16-bit access  
information available to external development equipment in a single cycle. In this narrow mode, normal  
16-bit accesses to external memory get split into two successive 8-bit accesses on port C alone.  
6.3.6 Port C Data Direction Register  
Address: $0006  
Bit 7  
DDRC7  
0
6
DDRC6  
0
5
DDRC5  
0
4
DDRC4  
0
3
DDRC3  
0
2
DDRC2  
0
1
DDRC1  
0
Bit 0  
DDRC0  
0
Read:  
Write:  
Reset:  
Figure 6-6. Port C Data Direction Register (DDRC)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
DDRC is not in the on-chip map in expanded and peripheral modes.  
This register determines the primary direction for each port C pin when functioning as a general-purpose  
I/O port.  
1 = Associated pin is an output.  
0 = Associated pin is a high-impedance input.  
MC68HC812A4 Data Sheet, Rev. 7  
66  
Freescale Semiconductor  
Registers  
6.3.7 Port D Data Register  
Address: $0005  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
PD7  
0
PD6  
PD5  
PD4  
PD3  
PD2  
PD1  
PD0  
0
0
0
0
0
0
0
Expanded wide and peripheral: DATA7  
Alternate pin function: KWD7  
DATA6  
KWD6  
DATA5  
KWD5  
DATA4  
KWD4  
DATA3  
KWD3  
DATA2  
KWD2  
DATA1  
KWD1  
DATA0  
KWD0  
Figure 6-7. Port D Data Register (PORTD)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
Bits PD7–PD0 correspond to data lines DATA7–DATA0. When port D is not used for external data, such  
as in single-chip mode, these pins can be used as general-purpose I/O or key wakeup signals. DDRD  
determines the primary direction of each port D pin.  
In special expanded narrow mode, the external data bus is normally limited to eight bits on port C, but the  
emulate port D bit (EMD) in the MODE register can be set to allow port C and port D to be used together  
to provide single-cycle visibility of internal 16-bit accesses for debugging purposes. If the mode is special  
narrow expanded and EMD is set, port D is configured for DATA7–DATA0 of visible internal accesses  
and normal 16-bit external accesses are split into two adjacent 8-bit accesses through port C. This allows  
connection of a single 8-bit external program memory.  
This register is not in the on-chip map in wide expanded and peripheral modes. Also, in special narrow  
expanded mode, the function of this port is determined by the EMD control bit. If EMD is set, this register  
is not in the on-chip map and port D is used for DATA7–DATA0 of visible internal accesses. If EMD is  
clear, this port serves as general-purpose I/O or key wakeup signals.  
6.3.8 Port D Data Direction Register  
Address: $0007  
Bit 7  
Bit 7  
0
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Figure 6-8. Port D Data Direction Register (DDRD)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
When port D is operating as a general-purpose I/O port, this register determines the primary direction for  
each port D pin.  
1 = Associated pin is an output.  
0 = Associated pin is a high-impedance input.  
This register is not in the map in wide expanded and peripheral modes. Also, in special narrow expanded  
mode, the function of this port is determined by the EMD control bit. If EMD is set, this register is not in  
the on-chip map and port D is used for DATA7–DATA0 of visible internal accesses. If EMD is clear, this  
port serves as general-purpose I/O or key wakeup signals.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
67  
Bus Control and Input/Output (I/O)  
6.3.9 Port E Data Register  
Address: $0008  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
PE7  
Write:  
PE6  
PE5  
PE4  
PE3  
PE2  
PE1  
PE0  
Reset:  
Unaffected by reset  
Normal narrow expanded:  
All other modes:  
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
MODB or MODA or  
IPIPE1 IPIPE0  
Alternate pin function:  
ARST  
ECLK  
LSTRB  
R/W  
IRQ  
XIRQ  
Figure 6-9. Port E Data Register (PORTE)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
This register is associated with external bus control signals and interrupt inputs including auxiliary reset  
(ARST), mode select (MODB/IPIPE1, MODA/IPIPE0), E-clock, size (LSTRB), read/write (R/W), IRQ, and  
XIRQ. When the associated pin is not used for one of these specific functions, the pin can be used as  
general-purpose I/O. The port E assignment register (PEAR) selects the function of each pin. DDRE  
determines the primary direction of each port E pin when configured to be general-purpose I/O.  
Some of these pins have software selectable pullups (LSTRB, R/W, and XIRQ). A single control bit  
enables the pullups for all these pins which are configured as inputs. IRQ always has a pullup.  
PE7 can be selected as a high-true auxiliary reset input.  
This register is not in the map in peripheral mode or expanded modes when the EME bit is set.  
6.3.10 Port E Data Direction Register  
Address: $0009  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
DDRE7  
DDRE6  
DDRE5  
DDRE4  
DDRE3  
DDRE2  
DDRE1  
DDRE0  
Reset:  
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
1
0
0
Normal narrow expanded:  
All other modes:  
Figure 6-10. Port E Data Direction Register (DDRE)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
This register determines the primary direction for each port E pin configured as general-purpose I/O.  
1 = Associated pin is an output.  
0 = Associated pin is a high-impedance input.  
PE1 and PE0 are associated with XIRQ and IRQ and cannot be configured as outputs. These pins can  
be read regardless of whether the alternate interrupt functions are enabled.  
This register is not in the map in peripheral mode and expanded modes while the EME control bit is set.  
MC68HC812A4 Data Sheet, Rev. 7  
68  
Freescale Semiconductor  
Registers  
6.3.11 Port E Assignment Register  
Address: $000A  
Bit 7  
6
5
4
3
2
1
0
Bit 0  
0
Read:  
Write:  
ARSIE  
PLLTE  
PIPOE  
NECLK  
LSTRE  
RDWE  
Reset:  
Special single-chip:  
Special expanded narrow:  
Peripheral:  
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0
1
0
0
0
0
0
1
0
1
0
0
1
1
0
1
0
0
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Special expanded wide:  
Normal single-chip  
Normal expanded narrow:  
Normal expanded wide:  
Figure 6-11. Port E Assignment Register (PEAR)  
Read: Anytime, if register is in the map  
Write: Varies from bit to bit if register is in the map  
The PEAR register selects between the general-purpose I/O functions and the alternate bus-control  
functions of port E. The alternate bus-control functions override the associated DDRE bits.  
The reset condition of this register depends on the mode of operation.  
In normal single-chip mode, port E is general-purpose I/O.  
In special single-chip mode, the E-clock is enabled as a timing reference, and the rest of port E is  
general-purpose I/O.  
In normal expanded modes, the E-clock is configured for its alternate bus-control function, and the  
other bits of port E are general-purpose I/O. The reset vector is located in external memory and the  
E-clock may be required for this access. If R/W is needed for external writable resources, PEAR  
can be written during normal expanded modes.  
In special expanded modes, IPIPE1, IPIPE0, E, R/W, and LSTRB are configured as bus-control  
signals.  
In peripheral mode, the PEAR register is not accessible for reads or writes. However, the PLLTE control  
bit is cleared to configure PE6 as a test output from the PLL module.  
ARSIE — Auxiliary Reset Input Enable Bit  
Write anytime.  
1 = PE7 is a high-true reset input; reset timing is the same as that of the low-true RESET pin.  
0 = PE7 is general-purpose I/O.  
PLLTE — PLL Testing Enable Bit  
Normal modes: Write never  
Special modes: Write anytime except the first time  
1 = PE6 is a test signal output from the PLL module (no effect in single-chip or normal expanded  
modes); PIPOE = 1 overrides this function and forces PE6 to be a pipe status output signal.  
0 = PE6 is general-purpose I/O or pipe output.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
69  
Bus Control and Input/Output (I/O)  
PIPOE — Pipe Status Signal Output Enable Bit  
Normal modes: Write once  
Special modes: Write anytime except the first time  
1 = PE6 and PE5 are outputs and indicate the state of the instruction queue; no effect in single-chip  
modes.  
0 = PE6 and PE5 are general-purpose I/O; if PLLTE = 1, PE6 is a test output signal from the PLL  
module.  
NECLK — No External E Clock Bit  
Normal modes: Write anytime  
Special modes: Write never  
In peripheral mode, E is an input; in all other modes, E is an output.  
1 = PE4 is a general-purpose I/O pin.  
0 = PE4 is the external E-clock pin. To get a free-running E-clock in single-chip modes, use  
NECLK = 0 and IVIS = 1. A 16-bit write to PEAR:MODE can configure these bits in one  
operation.  
LSTRE — Low Strobe (LSTRB) Enable Bit  
Normal modes: Write once  
Special modes: Write anytime except the first time  
LSTRE has no effect in single-chip or normal expanded narrow modes.  
1 = PE3 is configured as the LSTRB bus-control output, except in single-chip or normal expanded  
narrow modes.  
0 = PE3 is a general-purpose I/O pin.  
LSTRB is for external writes. After reset in normal expanded mode, LSTRB is disabled. If needed, it  
must be enabled before external writes. External reads do not normally need LSTRB because all 16  
data bits can be driven even if the MCU only needs eight bits of data.  
In normal expanded narrow mode, this pin is reset to an output driving high allowing the pin to be an  
output while in and immediately after reset.  
RDWE — Read/Write Enable Bit  
Normal modes: Write once  
Special modes: Write anytime except the first time  
RDWE has no effect in single-chip modes.  
1 = PE2 is configured as the R/W pin. In single-chip modes, RDWE has no effect and PE2 is a  
general-purpose I/O pin.  
0 = PE2 is a general-purpose I/O pin.  
R/W is used for external writes. After reset in normal expanded mode, it is disabled. If needed, it must  
be enabled before any external writes.  
MC68HC812A4 Data Sheet, Rev. 7  
70  
Freescale Semiconductor  
Registers  
6.3.12 Pullup Control Register  
Address: $000C  
Bit 7  
PUPH  
1
6
PUPG  
1
5
PUPF  
1
4
PUPE  
1
3
PUPD  
1
2
PUC  
1
1
PUPB  
1
Bit 0  
PUPA  
1
Read:  
Write:  
Reset:  
Figure 6-12. Pullup Control Register (PUCR)  
Read: Anytime, if register is in the map  
Write: Anytime, if register is in the map  
This register is not in the map in peripheral mode.  
These bits select pullup resistors for any pin in the corresponding port that is currently configured as an  
input.  
PUPH — Pullup Port H Enable Bit  
1 = Enable pullup devices for all port H input pins  
0 = Port H pullups disabled  
PUPG — Pullup Port G Enable Bit  
1 = Enable pullup devices for all port G input pins  
0 = Port G pullups disabled  
PUPF — Pullup Port F Enable Bit  
1 = Enable pullup devices for all port F input pins  
0 = Port F pullups disabled  
PUPE — Pullup Port E Enable Bit  
1 = Enable pullup devices for port E input pins PE3, PE2, and PE0  
0 = Port E pullups on PE3, PE2, and PE0 disabled  
PUPD — Pullup Port D Enable Bit  
1 = Enable pullup devices for all port D input pins  
0 = Port D pullups disabled  
This bit has no effect if port D is being used as part of the data bus (the pullups are inactive).  
PUPC — Pullup Port C Enable Bit  
1 = Enable pullup devices for all port C input pins  
0 = Port C pullups disabled  
This bit has no effect if port C is being used as part of the data bus (the pullups are inactive).  
PUPB — Pullup Port B Enable Bit  
1 = Enable pullup devices for all port B input pins  
0 = Port B pullups disabled  
This bit has no effect if port B is being used as part of the address bus (the pullups are inactive).  
PUPA — Pullup Port A Enable Bit  
1 = Enable pullup devices for all port A input pins  
0 = Port A pullups disabled  
This bit has no effect if port A is being used as part of the address bus (the pullups are inactive).  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
71  
Bus Control and Input/Output (I/O)  
6.3.13 Reduced Drive Register  
Address: $000D  
Bit 7  
6
5
4
3
2
1
Bit 0  
RDPAB  
Read:  
Write:  
Reset:  
RDPJ  
RDPH  
0
RDPG  
0
RDPF  
0
RDPE  
0
PRPD  
0
RDPC  
0
0
0
Figure 6-13. Reduced Drive Register (RDRIV)  
Read: Anytime, if register is in the map  
Write: Anytime, in normal modes; never in special modes  
This register is not in the map in peripheral mode.  
These bits select reduced drive for the associated port pins. This gives reduced power consumption and  
reduced RFI with a slight increase in transition time (depending on loading). The reduced drive function  
is independent of which function is being used on a particular port.  
RDPJ — Reduced Drive of Port J Bit  
1 = Reduced drive for all port J output pins  
0 = Full drive for all port J output pins  
RDPH — Reduced Drive of Port H Bit  
1 = Reduced drive for all port H output pins  
0 = Full drive for all port H output pins  
RDPG — Reduced Drive of Port G Bit  
1 = Reduced drive for all port G output pins  
0 = Full drive for all port G output pins  
RDPF — Reduced Drive of Port F Bit  
1 = Reduced drive for all port F output pins  
0 = Full drive for all port F output pins  
RDPE — Reduced Drive of Port E Bit  
1 = Reduced drive for all port E output pins  
0 = Full drive for all port E output pins  
RDPD — Reduced Drive of Port D Bit  
1 = Reduced drive for all port D output pins  
0 = Full drive for all port D output pins  
RDPC — Reduced Drive of Port C Bit  
1 = Reduced drive for all port C output pins  
0 = Full drive for all port C output pins  
RDPAB — Reduced Drive of Port A and Port B Bit  
1 = Reduced drive for all port A and port B output pins  
0 = Full drive for all port A and port B output pins  
MC68HC812A4 Data Sheet, Rev. 7  
72  
Freescale Semiconductor  
Chapter 7  
EEPROM  
7.1 Introduction  
The MC68HC812A4 EEPROM (electrically erasable, programmable, read-only memory) serves as a  
4096-byte nonvolatile memory which can be used for frequently accessed static data or as fast access  
program code. Operating system kernels and standard subroutines would benefit from this feature.  
The MC68HC812A4 EEPROM is arranged in a 16-bit configuration. The EEPROM array may be read as  
either bytes, aligned words, or misaligned words. Access times are one bus cycle for byte and aligned  
word access and two bus cycles for misaligned word operations.  
Programming is by byte or aligned word. Attempts to program or erase misaligned words will fail. Only the  
lower byte will be latched and programmed or erased. Programming and erasing of the user EEPROM  
can be done in all modes.  
Each EEPROM byte or aligned word must be erased before programming. The EEPROM module  
supports byte, aligned word, row (32 bytes), or bulk erase, all using the internal charge pump. Bulk  
erasure of odd and even rows is also possible in test modes; the erased state is $FF. The EEPROM  
module has hardware interlocks which protect stored data from corruption by accidentally enabling the  
program/erase voltage. Programming voltage is derived from the internal VDD supply with an internal  
charge pump. The EEPROM has a minimum program/erase life of 10,000 cycles over the complete  
operating temperature range.  
7.2 EEPROM Programmer’s Model  
The EEPROM module consists of two separately addressable sections. The first is a 4-byte memory  
mapped control register block used for control, testing and configuration of the EEPROM array. The  
second section is the EEPROM array itself.  
At reset, the 4-byte register section starts at address $00F0 and the EEPROM array is located from  
addresses $1000 to $1FFF (see Figure 7-1). For information on remapping the register block and  
EEPROM address space, refer to Chapter 5 Operating Modes and Resource Mapping.  
Read/write access to the memory array section can be enabled or disabled by the EEON control bit in the  
INITEE register. This feature allows the access of memory mapped resources that have lower priority than  
the EEPROM memory array. EEPROM control registers can be accessed and EEPROM locations may  
be programmed or erased regardless of the state of EEON.  
Using the normal EEPROG control, it is possible to continue program/erase operations during wait. For  
lowest power consumption during wait, stop program/erase by turning off EEPGM.  
If the stop mode is entered during programming or erasing, program/erase voltage is automatically turned  
off and the RC clock (if enabled) is stopped. However, the EEPGM control bit remains set. When stop  
mode is terminated, the program/erase voltage automatically turns back on if EEPGM is set.  
At low bus frequencies, the RC clock must be turned on for program/erase.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
73  
EEPROM  
$_000  
$_800  
$_C00  
$_E00  
$_F00  
$_F80  
BPROT6  
2 KBYTES  
BPROT5  
1 KBYTE  
BPROT4  
512 BYTES  
BPROT3  
256 BYTES  
SINGLE-CHIP  
VECTORS  
BPROT2  
128 BYTES  
$FF80  
BPROT1  
RESERVED  
64 BYTES  
64 BYTES  
$FFBF  
$FFC0  
$_FC0  
$_FFF  
BPROT0  
VECTORS  
64 BYTES  
64 BYTES  
$FFFF  
Figure 7-1. EEPROM Block Protect Mapping  
7.3 EEPROM Control Registers  
This section describes the EEPROM control registers.  
7.3.1 EEPROM Module Configuration Register  
Address: $00F0  
Bit 7  
6
1
1
5
1
1
4
1
1
3
1
1
2
EESWAI  
1
1
PROTLCK  
0
Bit 0  
EERC  
0
Read:  
Write:  
Reset:  
1
1
Figure 7-2. EEPROM Module Configuration Register (EEMCR)  
Read: Anytime  
Write: Varies from bit to bit  
EESWAI — EEPROM Stops in Wait Mode Bit  
0 = Module is not affected during wait mode.  
1 = Module ceases to be clocked during wait mode.  
This bit should be cleared if the wait mode vectors are mapped in the EEPROM array.  
PROTLCK — Block Protect Write Lock Bit  
0 = Block protect bits and bulk erase protection bit can be written.  
1 = Block protect bits are locked.  
Write once in normal modes (SMODN = 1). Set and clear anytime in special modes (SMODN = 0).  
EERC — EEPROM Charge Pump Clock Bit  
0 = System clock is used as clock source for the internal charge pump; internal RC oscillator is  
stopped.  
1 = Internal RC oscillator drives the charge pump; RC oscillator is required when the system bus  
clock is lower than fPROG  
.
Write: Anytime  
MC68HC812A4 Data Sheet, Rev. 7  
74  
Freescale Semiconductor  
EEPROM Control Registers  
7.3.2 EEPROM Block Protect Register  
Address: $00F1  
Bit 7  
6
BPROT6  
1
5
BPROT5  
1
4
BPROT4  
1
3
BPROT3  
1
2
BPROT2  
1
1
Bit 0  
BPROT0  
1
Read:  
Write:  
Reset:  
1
1
BPROT1  
1
Figure 7-3. EEPROM Block Protect Register (EEPROT)  
Read: Anytime  
Write: Anytime if EEPGM = 0 and PROTLCK = 0  
This register prevents accidental writes to EEPROM.  
BPROT6–BPROT0 — EEPROM Block Protection Bit  
0 = Associated EEPROM block can be programmed and erased.  
1 = Associated EEPROM block is protected from being programmed and erased.  
These bits cannot be modified while programming is taking place (EEPGM = 1).  
Table 7-1. 4-Kbyte EEPROM Block Protection  
Bit Name  
BPROT6  
BPROT5  
BPROT4  
BPROT3  
BPROT2  
BPROT1  
BPROT0  
Block Protected  
$1000 to $17FF  
$1800 to $1BFF  
$1C00 to $1DFF  
$1E00 to $1EFF  
$1F00 to $1F7F  
$1F80 to $1FBF  
$1FC0 to $1FFF  
Block Size  
2048 bytes  
1024 bytes  
512 bytes  
256 bytes  
128 bytes  
64 bytes  
64 bytes  
7.3.3 EEPROM Test Register  
Address: $00F2  
Bit 7  
Read: EEODD  
Write:  
6
5
4
3
2
0
1
Bit 0  
0
EEVEN  
MARG  
EECPD  
EECPRD  
EECPM  
Reset:  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 7-4. EEPROM Test Register (EEPROT)  
Read: Anytime  
Write: In special modes only (SMODN = 0)  
These bits are used for test purposes only. In normal modes, the bits are forced to 0.  
EEODD — Odd Row Programming Bit  
1 = Bulk program/erase all odd rows  
0 = Odd row bulk programming/erasing disabled  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
75  
EEPROM  
EEVEN — Even Row Programming Bit  
1 = Bulk program/erase all even rows  
0 = Even row bulk programming/erasing disabled  
MARG — Program and Erase Voltage Margin Test Enable Bit  
1 = Program and erase margin test  
0 = Normal operation  
This bit is used to evaluate the program/erase voltage margin.  
EECPD — Charge Pump Disable Bit  
1 = Disable charge pump  
0 = Charge pump is turned on during program/erase  
EECPRD — Charge Pump Ramp Disable Bit  
1 = Disable charge pump controlled ramp up  
0 = Charge pump is turned on progressively during program/erase  
This bit is known to enhance write/erase endurance of EEPROM cells.  
ECPM — Charge Pump Monitor Enable Bit  
1 = Output the charge pump voltage on the IRQ/VPP pin  
0 = Normal operation  
7.3.4 EEPROM Programming Register  
Address: $00F3  
Bit 7  
BULKP  
1
6
0
0
5
0
0
4
BYTE  
0
3
ROW  
0
2
ERASE  
0
1
EELAT  
0
Bit 0  
EEPGM  
0
Read:  
Write:  
Reset:  
Figure 7-5. EEPROM Programming Register (EEPROG)  
Read: Anytime  
Write: Varies from bit to bit  
BULKP — Bulk Erase Protection Bit  
1 = EEPROM protected from bulk or row erase  
0 = EEPROM can be bulk erased.  
Write anytime, if EEPGM = 0 and PROTLCK = 0  
BYTE — Byte and Aligned Word Erase Bit  
1 = One byte or one aligned word erase only  
0 = Bulk or row erase enabled  
Write anytime, if EEPGM = 0  
ROW — Row or Bulk Erase Bit (when BYTE = 0)  
1 = Erase only one 32-byte row  
0 = Erase entire EEPROM array  
Write anytime, if EEPGM = 0  
BYTE and ROW have no effect when ERASE = 0.  
If BYTE = 1 and test mode is not enabled, only the location specified by the address written to the  
programming latches is erased. The operation is a byte or an aligned word erase depending on the size  
of written data.  
MC68HC812A4 Data Sheet, Rev. 7  
76  
Freescale Semiconductor  
EEPROM Control Registers  
Table 7-2. Erase Selection  
Byte  
Row  
Block Size  
0
0
1
1
0
1
0
1
Bulk erase entire EEPROM array  
Row erase 32 bytes  
Byte or aligned word erase  
Byte or aligned word erase  
ERASE — Erase Control Bit  
1 = EEPROM configuration for erasure  
0 = EEPROM configuration for programming  
Write anytime, if EEPGM = 0  
This bit configures the EEPROM for erasure or programming.  
EELAT — EEPROM Latch Control Bit  
1 = EEPROM address and data bus latches set up for programming or erasing  
0 = EEPROM set up for normal reads  
Write: Anytime, if EEPGM = 0  
NOTE  
When EELAT is set, the entire EEPROM is unavailable for reads; therefore,  
no program residing in the EEPROM can be executed while attempting to  
program unused EEPROM space. Care should be taken that no references  
to the EEPROM are used while programming. Interrupts should be turned  
off if the vectors are in the EEPROM. Timing and any serial  
communications must be done with polling during the programming  
process.  
BYTE, ROW, ERASE, and EELAT bits can be written simultaneously or in any sequence.  
EEPGM — Program and Erase Enable Bit  
1 = Applies program/erase voltage to EEPROM  
0 = Disables program/erase voltage to EEPROM  
The EEPGM bit can be set only after EELAT has been set. When EELAT and EEPGM are set  
simultaneously, EEPGM remains clear but EELAT is set.  
The BULKP, BYTE, ROW, ERASE, and EELAT bits cannot be changed when EEPGM is set. To  
complete a program or erase, two successive writes to clear EEPGM and EELAT bits are required  
before reading the programmed data. A write to an EEPROM location has no effect when EEPGM is  
set. Latched address and data cannot be modified during program or erase.  
A program or erase operation should follow this sequence:  
1. Write BYTE, ROW, and ERASE to the desired value; write EELAT = 1.  
2. Write a byte or an aligned word to an EEPROM address.  
3. Write EEPGM = 1.  
4. Wait for programming (tPROG) or erase (tErase) delay time.  
5. Write EEPGM = 0.  
6. Write EELAT = 0.  
By jumping from step 5 to step 2, it is possible to program/erase more bytes or words without intermediate  
EEPROM reads.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
77  
EEPROM  
MC68HC812A4 Data Sheet, Rev. 7  
78  
Freescale Semiconductor  
Chapter 8  
Memory Expansion and Chip-Select  
8.1 Introduction  
To use memory expansion, the MCU must be operated in one of the expanded modes. Sections of the  
standard 64-Kbyte address space have memory expansion windows which allow an external address  
space larger than 64 Kbytes. Memory expansion consists of three memory expansion windows and six  
address lines which are used in addition to the standard 16 address lines.  
The memory expansion function reuses as many as six of the standard 16 address lines. To do this, some  
of the upper address lines of internal addresses falling in an active window are overridden. Consequently,  
the address viewed externally may not match the internal address. Usage of chip-selects identify the  
source of the internal address for debugging and selection of the proper external devices.  
All memory expansion windows have a fixed size and two have a fixed address location. The third has  
two selectable address locations. When an internal address falls into one of these active windows, it is  
translated as shown in Table 8-1.  
Addresses ADDR9–ADDR0 are not affected by memory expansion and are the same externally as they  
are internally. Addresses ADDR21–ADDR16 are generated only by memory expansion and are  
individually enabled by software-programmable control bits. If not enabled, they may be used as  
general-purpose I/O (input/output). Addresses ADDR15–ADDR10 can be the internal addresses or they  
can be modified by the memory expansion module. These are not available as general-purpose I/O in  
expanded modes.  
Table 8-1. Memory Expansion Values(1)  
Internal  
Address  
A21  
A20  
A19  
A18  
A17  
A16  
A15  
A14  
A13  
A12  
A11  
A10  
$0000–$03FF  
EWDIR(2)= 1,  
EWEN = 1  
1
1
1
1
PEA17 PEA16 PEA15 PEA14 PEA13 PEA12 PEA11 PEA10  
$0000–$03FF  
EWDIR  
or  
1
1
1
1
1
1
1
1
1
1
A15  
A14  
A13  
A12  
A11  
A10  
EWEN = 0  
$0400–$07FF  
EWDIR = 0,  
EWEN = 1  
PEA17 PEA16 PEA15 PEA14 PEA13 PEA12 PEA11 PEA10  
$0400–$07FF  
EWDIR = 1,  
EWEN = x  
or  
1
1
1
1
1
1
A15  
A14  
A13  
A12  
A11  
A10  
EWDIR = x,  
EWEN = 0  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
79  
Memory Expansion and Chip-Select  
Table 8-1. Memory Expansion Values(1) (Continued)  
Internal  
Address  
A21  
1
A20  
1
A19  
A18  
A17  
A16  
A15  
A14  
A13  
A12  
A11  
A11  
A11  
A10  
A10  
A10  
$0800–$6FFF  
1
1
1
1
A15  
A14  
A13  
A12  
$7000–$7FFF  
DWEN = 1  
1
1
PDA19 PDA18 PDA17 PDA16 PDA15 PDA14 PDA13 PDA12  
$7000–$7FFF  
DWEN = 0  
1
1
1
1
1
1
A15  
A14  
A13  
A13  
A12  
A12  
A11  
A11  
A10  
A10  
$8000–$BFFF  
PWEN = 1  
PPA21 PPA20 PPA19 PPA18 PPA17 PPA16 PPA15 PPA14  
$8000–$BFFF  
PWEN = 0  
1
1
1
1
1
1
1
1
1
1
1
1
A15  
A15  
A14  
A14  
A13  
A13  
A12  
A12  
A11  
A11  
A10  
A10  
$C000–$FFFF  
1. All port G assigned to memory expansion  
2. The EWDIR bit in the MISC register selects the E window address (1 = $0000–$03FF including direct space and  
0 = $0400–$07FF).  
8.2 Generation of Chip-Selects  
To use chip-selects the MCU must be in one of the expanded modes. Each of the seven chip-selects has  
an address space for which it is active — that is, when the current CPU address is in the range of that  
chip-select, it becomes active. Chip-selects are generally used to reduce or eliminate external address  
decode logic. These active low signals usually are connected directly to the chip-select pin of an external  
device.  
8.2.1 Chip-Selects Independent of Memory Expansion  
Three types of chip-selects are program memory chip-selects, other memory chip-selects and peripheral  
chip-selects. Memory chip-selects cover a medium-to-large address space. Peripheral chip-selects  
(CS3–CS0) cover a small address space. The program memory chip-select includes the vector space and  
is generally used with non-volatile memory. To start the user’s program, the program chip-select is  
designed to be active out of reset. This is the only chip-select which has a functional difference from the  
others, so a small memory could use a peripheral chip-select and a peripheral could use a memory  
chip-select.  
Figure 8-1 shows peripheral chip-selects in an expanded portion of the memory map. Table 8-2 shows  
the register settings that correspond to the example. Chip-selects CS2–CS0 always map to the same  
2-Kbyte block as the internal register space. The internal registers cover the first 512 bytes and these  
chip-selects cover all or part of the 512 bytes following the register space blocking out a full 1-Kbyte  
space. CS3 can map with these other chip-selects or be used in a 1-Kbyte space by itself which starts at  
either $0000 or $0400. CS3 can be used only for a 1-Kbyte space when it selects the E page of memory  
expansion and E page is active.  
MC68HC812A4 Data Sheet, Rev. 7  
80  
Freescale Semiconductor  
Generation of Chip-Selects  
CS3 can be used with a 1-Kbyte space in systems not using memory expansion. However, it must be  
made to appear as if memory expansion is in use. One of many possible configurations is:  
Select the desired 1-Kbyte space for EPAGE (EWDIR in MISC in the MMI).  
Write the EPAGE register with $0000, if EWDIR is one or $0001 if EWDIR is 0.  
Designate all port G pins as I/O.  
Enable EPAGE and CS3.  
Make CS3 follow EPAGE.  
8.2.2 Chip-Selects Used in Conjunction with Memory Expansion  
Memory expansion and chip-select functions can work independently, but systems requiring memory  
expansion perform better when chip-selects are also used. For each memory expansion window there is  
a chip-select (or two) designed to function with it.  
Figure 8-2 shows a memory expansion and chip-select example using three chip-selects. Table 8-3  
shows the register settings that correspond to the example. The program space consists of 128 Kbytes  
of addressable memory in eight 16-Kbyte pages. Page 7 is always accessible in the space from $C000  
to $FFFF. The data space consists of 64 Kbytes of addressable memory in 16, 4-Kbyte pages. Unless  
CSD is used to select the external RAM, pages 0 through 6 appear in the $0000 to $6FFF space wherever  
there is no higher priority resource. The extra space consists of four, 1-Kbyte pages making 4 Kbytes of  
addressable memory.  
If memory is increased to the maximum in this example, the program space will consist of 4 Mbytes of  
addressable space with 256 16-Kbyte pages and page $FF always available. The data space will be 1  
Mbyte of addressable space with 256 4-Kbyte pages and pages $F0 to $F6 mirrored to the $0000 to  
$6FFF space. The extra space will be 256 Kbytes of addressable space in 256 1-Kbyte pages.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
81  
Memory Expansion and Chip-Select  
INTERNAL SPACE  
EXTERNAL SPACE  
$0000  
$0100  
$0200  
$0300  
$0400  
$0500  
$0600  
$0700  
$0800  
$0900  
$0A00  
$0B00  
$0C00  
$0D00  
$0E00  
$0F00  
$0FFF  
RAM  
1 KBYTE  
CS3  
1 KBYTE  
REGISTERS  
CS0  
256 BYTES  
CS1  
CS2  
128 BYTES  
128 BYTES  
Figure 8-1. Chip-Selects CS3–CS0 Partial Memory Map  
Table 8-2. Example Register Settings  
Register  
Value  
Meaning  
INITRM  
$00  
Assigns internal RAM to $0000–$0FFF  
Assigns register block to $0800–$09FF and register-following  
chip-selects at $0A00–$0BFF  
INITRG  
$08  
WINDEF  
MXAR  
$20  
$00  
$xF  
$x8  
Enable EPAGE  
No port G lines assigned as extended address  
Enables CS3, CS2, CS1, and CS0  
Makes CS3 follow EPAGE  
CSCTL0  
CSCTL1  
MISC  
%0xxxxxxx Puts EPAGE at $0400–$07FF  
Keeps the translated value of the upper addresses the same as it  
EPAGE  
$01  
would have been before translation; not necessary if all external  
devices use chip-selects  
MC68HC812A4 Data Sheet, Rev. 7  
82  
Freescale Semiconductor  
Generation of Chip-Selects  
INTERNAL SPACE  
EXTERNAL SPACE  
CHIP-SELECT 3: (CS3)  
$0400 TO $07FF  
$0000  
$1000  
$2000  
$3000  
$4000  
$5000  
$6000  
$7000  
$8000  
$9000  
$A000  
$B000  
$C000  
$D000  
$E000  
$F000  
$FFFF  
REGISTERS &  
RAM & CS[3:0]  
0
1
2
PAGE 3  
EEPROM  
DATA CHIP-SELECT: (CSD)  
$0000 TO $7FFF  
DATA WINDOW: $7000 to $7FFF  
NOTE 1  
PAGE xF  
xE  
xD  
xC  
xB  
x4  
x5  
x6  
xA  
x9  
x8  
x7  
x6  
x5  
NOTE 1: Some 4-Kbyte blocks of phys-  
ical external data memory can be se-  
lected by an access to $0000–$6FFF in  
the 64-Kbyte map or as pages 0  
through 6 in the data window. On-chip  
registers, EEPROM, and EPAGE have  
higher priority than CSD.  
x4  
x3  
x2  
x1  
x0  
NOTE 2: The last page of physical pro-  
gram memory can be selected by an  
access to $C000–$FFFF in the  
64-Kbyte map or as page 7 in the pro-  
gram window.  
0
1
2
3
4
5
6
PAGE 7  
PROGRAM CHIP-SELECT 0: (CSP0)  
$8000 TO $FFFF  
PROGRAM PAGES: $8000 to $BFFF  
NOTE 2  
VECTORS  
$FFC0–$FFFF  
Figure 8-2. Memory Expansion and Chip-Select Example  
Table 8-3. Example Register Settings  
Register  
Value  
Meaning  
WINDEF  
$E0  
Enable EPAGE, DPAGE, PPAGE  
Port G bit 0 assigned as extended address  
ADDR16  
MXAR  
CSCTL0  
CSCTL1  
MISC  
$01  
%00111xxx  
$18  
Enables CSP0, CSD, and CS3  
Makes CSD follow $0000–$7FFF and CS3  
select EPAGE  
%0xxxxxxx  
Puts EPAGE at $0400–$09FF  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
83  
Memory Expansion and Chip-Select  
8.3 Chip-Select Stretch  
Each chip-select can be chosen to stretch bus cycles associated with it. Stretch can be zero, one, two, or  
three whole cycles added which allows interfacing to external devices which cannot meet full bus speed  
timing. Figure 8-3, Figure 8-4, Figure 8-5, and Figure 8-6 show the waveforms for zero to three cycles of  
stretch.  
INTERNAL  
E-CLOCK  
CS  
ECLK PIN  
UNSTRETCHED BUS CYCLE  
Figure 8-3. Chip-Select with No Stretch  
INTERNAL  
E-CLOCK  
CS  
STRETCHED  
ECLK PIN  
STRETCHED BY 1 CYCLE  
Figure 8-4. Chip-Select with 1-Cycle Stretch  
INTERNAL  
E-CLOCK  
CS  
STRETCHED  
ECLK PIN  
STRETCHED BY 2 CYCLES  
Figure 8-5. Chip-Select with 2-Cycle Stretch  
INTERNAL  
E-CLOCK  
CS  
STRETCHED  
ECLK PIN  
STRETCHED BY 3 CYCLES  
Figure 8-6. Chip-Select with 3-Cycle Stretch  
MC68HC812A4 Data Sheet, Rev. 7  
84  
Freescale Semiconductor  
Memory Expansion Registers  
The external E-clock may be the stretched E-clock, the E-clock, or no clock depending on the selection  
of control bits ESTR and IVIS in the MODE register and NECLK in the PEAR register.  
8.4 Memory Expansion Registers  
This section describes the memory expansion registers.  
8.4.1 Port F Data Register  
Address: $0030  
Bit 7  
0
6
PF6  
0
5
PF5  
0
4
PF4  
0
3
PF3  
0
2
PF2  
0
1
PF1  
0
Bit 0  
PF0  
0
Read:  
Write:  
Reset:  
0
= Unimplemented  
CSP1 CSP0  
Alternate pin function:  
CSD  
CS3  
CS2  
CS1  
CS0  
Figure 8-7. Port F Data Register (PORTF)  
Read: Anytime  
Write: Anytime  
Seven port F pins are associated with chip-selects. Any pin not used as a chip-select can be used as  
general-purpose I/O. All pins are pulled up when inputs (if pullups are enabled). Enabling a chip-select  
overrides the associated data direction bit and port data bit.  
8.4.2 Port G Data Register  
Address: $0031  
Bit 7  
0
6
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
0
0
= Unimplemented  
ADDR21  
Alternate pin function:  
ADDR20  
ADDR19  
ADDR18  
ADDR17  
ADDR16  
Figure 8-8. Port G Data Register (PORTG)  
Read: Anytime  
Write: Anytime  
Six port G pins are associated with memory expansion. Any pin not used for memory expansion can be  
used as general-purpose I/O. All pins are pulled up when inputs (if pullups are enabled). Enabling a  
memory expansion address with the memory expansion assignment register overrides the associated  
data direction bit and port data bit.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
85  
Memory Expansion and Chip-Select  
8.4.3 Port F Data Direction Register  
Address: $0032  
Bit 7  
0
6
DDRF6  
0
5
DDRF5  
0
4
DDRF4  
0
3
DDRF3  
0
2
DDRF2  
0
1
DDRF1  
0
Bit 0  
DDRF0  
0
Read:  
Write:  
Reset:  
0
= Unimplemented  
Figure 8-9. Port F Data Direction Register (DDRF)  
Read: Anytime  
Write: Anytime  
When port F is active, DDRF determines pin direction.  
1 = Associated bit is an output.  
0 = Associated bit is an input.  
8.4.4 Port G Data Direction Register  
Address: $0033  
Bit 7  
0
6
0
5
DDRG5  
0
4
DDRG4  
0
3
DDRG3  
0
2
DDRG2  
0
1
DDRG1  
0
Bit 0  
DDRG0  
0
Read:  
Write:  
Reset:  
0
0
= Unimplemented  
Figure 8-10. Port G Data Direction Register (DDRG)  
Read: Anytime  
Write: Anytime  
When port G is active, DDRG determines pin direction.  
1 = Associated bit is an output.  
0 = Associated bit is an input.  
8.4.5 Data Page Register  
Address: $0034  
Bit 7  
PD19  
0
6
PD18  
0
5
PD17  
0
4
PD16  
0
3
PD15  
0
2
PD14  
0
1
PD13  
0
Bit 0  
PD12  
0
Read:  
Write:  
Reset:  
Figure 8-11. Data Page Register (DPAGE)  
Read: Anytime  
Write: Anytime  
When enabled (DWEN = 1), the value in this register determines which of the 256 4-Kbyte pages is active  
in the data window. An access to the data page memory area ($7000 to $7FFF) forces the contents of  
DPAGE to address pins ADDR15–ADDR12 and expansion address pins ADDR19–ADDR16. Bits  
ADDR20 and ADDR21 are forced to 1 if enabled by MXAR. Data chip-select (CSD) must be used in  
conjunction with this memory expansion window.  
MC68HC812A4 Data Sheet, Rev. 7  
86  
Freescale Semiconductor  
Memory Expansion Registers  
8.4.6 Program Page Register  
Address: $0035  
Bit 7  
PPA21  
0
6
PPA20  
0
5
PPA19  
0
4
PPA18  
0
3
PPA17  
0
2
PPA16  
0
1
PPA15  
0
Bit 0  
PPA14  
0
Read:  
Write:  
Reset:  
Figure 8-12. Program Page Register (PPAGE)  
Read: Anytime  
Write: Anytime  
When enabled (PWEN = 1), the value in this register determines which of the 256 16-Kbyte pages is  
active in the program window. An access to the program page memory area ($8000 to $BFFF) forces the  
contents of PPAGE to address pins ADDR15–ADDR14 and expansion address pins ADDR21–ADDR16.  
At least one of the program chip-selects (CSP0 or CSP1) must be used in conjunction with this memory  
expansion window. This register is used by the CALL and RTC instructions to facilitate automatic program  
flow changing between pages of program memory.  
8.4.7 Extra Page Register  
Address: $0036  
Bit 7  
PEA17  
0
6
PEA16  
0
5
PEA15  
0
4
PEA14  
0
3
PEA13  
0
2
PEA12  
0
1
PEA11  
0
Bit 0  
PEA10  
0
Read:  
Write:  
Reset:  
Figure 8-13. Extra Page Register (EPAGE)  
Read: Anytime  
Write: Anytime  
When enabled (EWEN = 1), the value in this register determines which of the 256 1-Kbyte pages is active  
in the extra window. An access to the extra page memory area forces the contents of EPAGE to address  
pins ADDR15–ADDR10 and expansion address pins ADDR16–ADDR17. Address bits  
ADDR21–ADDR18 are forced to one (if enabled by MXAR). Chip-select 3 set to follow the extra page  
window (CS3 with CS3EP = 1) must be used in conjunction with this memory expansion window.  
8.4.8 Window Definition Register  
Address: $0037  
Bit 7  
DWEN  
0
6
PWEN  
0
5
EWEN  
0
4
0
0
3
0
0
2
0
0
1
0
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
Figure 8-14. Window Definition Register (WINDEF)  
Read: Anytime  
Write: Anytime  
DWEN — Data Window Enable Bit  
1 = Enables paging of the data space (4 Kbytes: $7000–$7FFF) via the DPAGE register  
0 = Disables DPAGE  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
87  
Memory Expansion and Chip-Select  
PWEN — Program Window Enable Bit  
1 = Enables paging of the program space  
(16 Kbytes: $8000–$BFFF) via the PPAGE register  
0 = Disables PPAGE  
EWEN — Extra Window Enable Bit  
1 = Enables paging of the extra space (1 Kbyte) via the EPAGE register  
0 = Disables EPAGE  
8.4.9 Memory Expansion Assignment Register  
Address: $0038  
Bit 7  
0
6
0
5
A21E  
0
4
A20E  
0
3
A19E  
0
2
A18E  
0
1
A17E  
0
Bit 0  
A16E  
0
Read:  
Write:  
Reset:  
0
0
= Unimplemented  
Figure 8-15. Memory Expansion Assignment Register (MXAR)  
Read: Anytime  
Write: Anytime  
A21E, A20E, A19E, A18E, A17E, and A16E — These bits select the memory expansion pins  
ADDR21–ADDR16.  
1 = Selects memory expansion for the associated bit function, overrides DDRG  
0 = Selects general-purpose I/O for the associated bit function  
In single-chip modes, these bits have no effect.  
8.5 Chip-Selects  
The chip-selects are all active low. All pins in the associated port are pulled up when they are inputs and  
the PUPF bit in PUCR is set.  
If memory expansion is used, usually chip-selects should be used as well, since some translated  
addresses can be confused with untranslated addresses that are not in an expansion window.  
In single-chip modes, enabling the chip-select function does not affect the associated pins.  
The block of register-following chip-selects CS3–CS0 allows many combinations including:  
512-byte CS0  
256-byte CS0 and 256-byte CS1  
256-byte CS0, 128-byte CS1, and 128-byte CS2  
128-byte CS0, 128-byte CS1, 128-byte CS2, and 128-byte CS3  
These register-following chip-selects are available in the 512-byte space next to and higher in address  
than the 512-byte space which includes the registers. For example, if the registers are located at $0800  
to $09FF, then these register-following chip-selects are available in the space from $0A00 to $0BFF.  
MC68HC812A4 Data Sheet, Rev. 7  
88  
Freescale Semiconductor  
Chip-Select Registers  
8.6 Chip-Select Registers  
This section describes the chip-select registers.  
8.6.1 Chip-Select Control Register 0  
Address: $003C  
Bit 7  
0
6
CSP1E  
0
5
CSP0E  
1
4
CSDE  
0
3
CS3E  
0
2
CS2E  
0
1
CS1E  
0
Bit 0  
CS0E  
0
Read:  
Write:  
Reset:  
0
= Unimplemented  
Figure 8-16. Chip-Select Control Register 0 (CSCTL0)  
Read: Anytime  
Write: Anytime  
Bits have no effect on the associated pin in single-chip modes.  
CSP1E — Chip-Select Program 1 Enable Bit  
This bit effectively selects the holes in the memory map. It can be used in conjunction with CSP0 to  
select between two 2-Mbyte devices based on address ADDR21.  
1 = Enables this chip-select which covers the space $8000 to $FFFF or full map $0000 to $FFFF  
0 = Disables this chip-select  
CSP0E — Chip-Select Program 0 Enable Bit  
1 = Enables this chip-select which covers the program space $8000 to $FFFF  
0 = Disables this chip-select  
CSDE — Chip-Select Data Enable Bit  
1 = Enables this chip-select which covers either $0000 to $7FFF (CSDHF = 1) or $7000 to $7FFF  
(CSDHF = 0)  
0 = Disables this chip-select  
CS3E — Chip-Select 3 Enable Bit  
1 = Enables this chip-select which covers a 128-byte space following the register space  
($x280–$x2FF or $xA80–$xAFF) Alternately, it can be active for accesses within the extra page  
window.  
0 = Disables this chip-select  
CS2E — Chip-Select 2 Enable Bit  
1 = Enables this chip-select which covers a 128-byte space following the register space  
($x380–$x3FF or $xB80–$xBFF)  
0 = Disables this chip-select  
CS1E — Chip-Select 1 Enable Bit  
CS2 and CS3 have a higher precedence and can override CS1 for a portion of this space.  
1 = Enables this chip-select which covers a 256-byte space following the register space  
($x300–$x3FF or $xB00–$xBFF)  
0 = Disables this chip-select  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
89  
Memory Expansion and Chip-Select  
CS0E — Chip-Select 0 Enable Bit  
CS1, CS2, and CS3 have higher precedence and can override CS0 for portions of this space.  
1 = Enables this chip-select which covers a 512-byte space following the register space  
($x200–$x3FF or $xA00–$xBFF)  
0 = Disables this chip-select  
8.6.2 Chip-Select Control Register 1  
Address: $003D  
Bit 7  
0
6
CSP1FL  
0
5
CSPA21  
0
4
CSDHF  
0
3
CS3EP  
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
0
0
0
0
= Unimplemented  
Figure 8-17. Chip-Select Control Register 1 (CSCTL1)  
Read: Anytime  
Write: Anytime  
CSP1FL — Program Chip-Select 1 Covers Full Map  
1 = If CSPA21 is cleared, chip-select program 1 covers the entire memory map. If CSPA21 is set,  
this bit has no meaning or effect.  
0 = If CSPA21 is cleared, chip-select program 1 covers half the map, $8000 to $FFFF. If CSPA21  
is set, this bit has no meaning or effect.  
CSPA21 — Program Chip-Select Split Based on ADDR21  
Setting this bit allows two 2-Mbyte memories to make up the 4-Mbyte addressable program space.  
Since ADDR21 is always one in the unpaged $C000 to $FFFF space, CSP0 is active in this space.  
1 = Program chip-selects are both active (if enabled) for space $8000 to $FFFF; CSP0 if ADDR21  
is set and CSP1 if ADDR21 is cleared.  
0 = CSP0 and CSP1 do not rely on ADDR21.  
CSDHF — Data Chip-Select Covers Half the Map  
1 = Data chip-select covers half the memory map ($0000 to $7FFF) including the optional data page  
window ($7000 to $7FFF).  
0 = Data chip-select covers only $7000 to $7FFF (the optional data page window).  
CS3EP — Chip-Select 3 Follows Extra Page  
1 = Chip-select 3 follows accesses to the 1-Kbyte extra page ($0400 to $07FF or $0000 to $03FF).  
Any accesses to this window cause the chip-select to go active. (EWEN must be set to 1.)  
0 = Chip-select 3 includes only accesses to a 128-byte space following the register space.  
MC68HC812A4 Data Sheet, Rev. 7  
90  
Freescale Semiconductor  
Chip-Select Registers  
8.6.3 Chip-Select Stretch Registers  
Each of the seven chip-selects has a 2-bit field in this register which determines the amount of clock  
stretch for accesses in that chip-select space.  
Read: Anytime  
Write: Anytime  
Address: $003E  
Bit 7  
0
6
0
5
SRP1A  
1
4
SRP1B  
1
3
SRP0A  
1
2
SRP0B  
1
1
STRDA  
1
Bit 0  
STRDB  
1
Read:  
Write:  
Reset:  
0
0
= Unimplemented  
Figure 8-18. Chip-Select Stretch Register 0 (CSSTR0)  
Address: $003F  
Bit 7  
6
STR3B  
0
5
STR2A  
1
4
STR2B  
1
3
STR1A  
1
2
STR1B  
1
1
STR0A  
1
Bit 0  
STR0B  
1
Read:  
Write:  
Reset:  
STR3A  
0
Figure 8-19. Chip-Select Stretch Register 1 (CSSTR1)  
Table 8-4. Stretch Bit Definition  
Stretch Bit  
SxxxA  
Stretch Bit  
SxxxB  
Number of E-Clocks  
Stretched  
0
0
1
1
0
1
0
1
0
1
2
3
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
91  
Memory Expansion and Chip-Select  
8.7 Priority  
Only one module or chip-select may be selected at a time. If more than one module shares a space, only  
the highest priority module is selected.  
Table 8-5. Module Priorities  
Priority  
Module or Space  
On-chip register space — 512 bytes fully blocked for registers although some of  
this space is unused  
Highest  
BDM space (internal) — When BDM is active, this 256-byte block of registers  
and ROM appear at $FFxx; cannot overlap RAM or registers  
On-chip RAM  
On-chip EEPROM (if enabled, EEON = 1)  
E space (external) (1) — 1 Kbyte at either $0000 to $03FF or $0400 to $07FF;  
may be used with “extra” memory expansion and CS3  
CS space (external) (1) — 512 bytes following the 512-byte register space; may  
be used with CS3–CS0  
P space (external) (1) — 16 Kbytes fixed at $8000 to $BFFF; may be used with  
program memory expansion and CSP0 and/or CSP1  
D space (external) (1) — 4 Kbytes fixed at $7000 to $7FFF; may be used with  
data memory expansion and CSD or CSP1 (if set for full memory space) or the  
entire half of memory space $0000–$7FFF  
Remaining external (1)  
Lowest  
1. External spaces can be accessed only if the MCU is in expanded mode. Priorities of differ-  
ent external spaces affect chip-selects and memory expansion.  
Only one chip-select is active at any address. In the event that two or more chip-selects cover the same  
address, only the highest priority chip-select is active.  
Chip-selects have this order of priority:  
Highest  
CS3  
Lowest  
CSP1  
CS2  
CS1  
CS0  
CSP0  
CSD  
MC68HC812A4 Data Sheet, Rev. 7  
92  
Freescale Semiconductor  
Chapter 9  
Key Wakeups  
9.1 Introduction  
The key wakeup feature of the MC68HC812A4 issues an interrupt that wakes up the CPU when it is in  
stop or wait mode. Three ports are associated with the key wakeup function: port D, port H, and port J.  
Port D and port H wakeups are triggered with a falling signal edge. Port J key wakeups have a selectable  
falling or rising signal edge as the active edge. For each pin which has an interrupt enabled, there is a  
path to the interrupt request signal which has no clocked devices when the part is in stop mode. This  
allows an active edge to bring the part out of stop.  
Default register addresses, as established after reset, are indicated in the following descriptions. For  
information on remapping the register block, refer to Chapter 5 Operating Modes and Resource Mapping.  
9.2 Key Wakeup Registers  
This section provides a summary of the key wakeup registers.  
9.2.1 Port D Data Register  
Address: $0005  
Bit 7  
6
5
4
3
2
1
Bit 0  
PD0  
Read:  
Write:  
PD7  
PD6  
PD5  
PD4  
PD3  
PD2  
PD1  
Reset:  
0
0
0
0
0
0
0
0
Alternate pin function:  
KWD7  
KWD6  
KWD5  
KWD4  
KWD3  
KWD2  
KWD1  
KWD0  
Figure 9-1. Port D Data Register (PORTD)  
This register is not in the map in wide expanded modes or in special expanded narrow mode with MODE  
register bit EMD set.  
An interrupt is generated when a bit in the KWIFD register and its corresponding KWIED bit are both set.  
These bits correspond to the pins of port D. All eight bits/pins share the same interrupt vector and can  
wake the CPU when it is in stop or wait mode. Key wakeups can be used with the pins configured as  
inputs or outputs.  
Key wakeup port D shares a vector and control bit with IRQ. IRQEN must be set for key wakeup interrupts  
to signal the CPU.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
93  
Key Wakeups  
9.2.2 Port D Data Direction Register  
Address: $0007  
Bit 7  
Bit 7  
0
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Figure 9-2. Port D Data Direction Register (DDRD)  
Read: Anytime  
Write: Anytime  
This register is not in the map in wide expanded modes or in special expanded narrow mode with MODE  
register bit EMD set.  
Data direction register D is associated with port D and designates each pin as an input or output.  
DDRD7–DDRD0 — Data Direction Port D Bits  
1 = Associated pin is an output.  
0 = Associated pin is an input.  
9.2.3 Port D Key Wakeup Interrupt Enable Register  
Address: $0020  
Bit 7  
Bit 7  
0
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Figure 9-3. Port D Key Wakeup Interrupt Enable Register (KWIED)  
Read: Anytime  
Write: Anytime  
This register is not in the map in wide expanded modes and in special expanded narrow mode with MODE  
register bit EMD set.  
KWIED7–KWIED0 — Key Wakeup Port D Interrupt Enable Bits  
1 = Interrupt for the associated bit is enabled.  
0 = Interrupt for the associated bit is disabled.  
MC68HC812A4 Data Sheet, Rev. 7  
94  
Freescale Semiconductor  
Key Wakeup Registers  
9.2.4 Port D Key Wakeup Flag Register  
Address: $0021  
Bit 7  
Bit 7  
0
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Figure 9-4. Port D Key Wakeup Flag Register (KWIFD)  
Read: Anytime  
Write: Anytime  
Each flag is set by a falling edge on its associated input pin. To clear the flag, write 1 to the corresponding  
bit in KWIFD.  
This register is not in the map in wide expanded modes or in special expanded narrow mode with MODE  
register bit EMD set.  
KWIFD7–KWIFD0 — Key Wakeup Port D Flags  
1 = Falling edge on the associated bit has occurred. An interrupt occurs if the associated enable bit  
is set.  
0 = Falling edge on the associated bit has not occurred.  
9.2.5 Port H Data Register  
Address: $0024  
Bit 7  
PH7  
6
5
4
3
2
1
Bit 0  
PH0  
Read:  
Write:  
PH6  
PH5  
PH4  
PH3  
PH2  
PH1  
Reset:  
0
0
0
0
0
0
0
0
Alternate pin function:  
KWH7  
KWH6  
KWH5  
KWH4  
KWH3  
KWH2  
KWH1  
KWH0  
Figure 9-5. Port H Data Register (PORTH)  
Read: Anytime  
Write: Anytime  
Port H is associated with key wakeup H. Key wakeups can be used with the pins designated as inputs or  
outputs. DDRH determines whether each pin is an input or output.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
95  
Key Wakeups  
9.2.6 Port H Data Direction Register  
Address: $0025  
Bit 7  
DDRH7  
0
6
DDRH6  
0
5
DDRH5  
0
4
DDRH4  
0
3
DDRH3  
0
2
DDRH2  
0
1
DDRH1  
0
Bit 0  
DDRH0  
0
Read:  
Write:  
Reset:  
Figure 9-6. Port H Data Direction Register (DDRH)  
Read: Anytime  
Write: Anytime  
Data direction register H is associated with port H and designates each pin as an input or output.  
DDRH7–DDRH0 — Data Direction Port H Bits  
1 = Associated pin is an output.  
0 = Associated pin is an input.  
9.2.7 Port H Key Wakeup Interrupt Enable Register  
Address: $0026  
Bit 7  
KWIEH7  
0
6
KWIEH6  
0
5
KWIEH5  
0
4
KWIEH4  
0
3
KWIEH3  
0
2
KWIEH2  
0
1
KWIEH1  
0
Bit 0  
KWIEH0  
0
Read:  
Write:  
Reset:  
Figure 9-7. Port H Key Wakeup Interrupt Enable Register (KWIEH)  
An interrupt is generated when a bit in the KWIFH register and its corresponding KWIEH bit are both set.  
These bits correspond to the pins of port H.  
KWIEH7–KWIEH0 — Key Wakeup Port H Interrupt Enable Bits  
1 = Interrupt for the associated bit is enabled.  
0 = Interrupt for the associated bit is disabled.  
9.2.8 Port H Key Wakeup Flag Register  
Address: $0027  
Bit 7  
KWIFH7  
0
6
KWIFH6  
0
5
KWIFH5  
0
4
KWIFH4  
0
3
KWIFH3  
0
2
KWIFH2  
0
1
KWIFH1  
0
Bit 0  
KWIFH0  
0
Read:  
Write:  
Reset:  
Figure 9-8. Port H Key Wakeup Flag Register (KWIFH)  
Read: Anytime  
Write: Anytime  
Each flag is set by a falling edge on its associated input pin. To clear the flag, write one to the  
corresponding bit in KWIFH.  
KWIFH7–KWIFH0 — Key Wakeup Port H Flags  
1 = Falling edge on the associated bit has occurred (an interrupt occurs if the associated enable bit  
is set)  
0 = Falling edge on the associated bit has not occurred  
MC68HC812A4 Data Sheet, Rev. 7  
96  
Freescale Semiconductor  
Key Wakeup Registers  
9.2.9 Port J Data Register  
Address: $0028  
Bit 7  
6
5
4
3
2
1
PJ1  
0
Bit 0  
PJ0  
0
Read:  
PJ7  
Write:  
PJ6  
PJ5  
PJ4  
PJ3  
PJ2  
Reset:  
0
0
0
0
0
0
Alternate pin function:  
KWJ7  
KWJ6  
KWJ5  
KWJ2  
KWJ4  
KWJ2  
KWJ1  
KWJ0  
Figure 9-9. Port J Data Register (PORTJ)  
Read: Anytime  
Write: Anytime  
Port J is associated with key wakeup J. Key wakeups can be used with the pins designated as inputs or  
outputs. DDRJ determines whether each pin is an input or output.  
9.2.10 Port J Data Direction Register  
Address: $0029  
Bit 7  
DDRJ7  
0
6
DDRJ6  
0
5
DDRJ5  
0
4
DDRJ4  
0
3
DDRJ3  
0
2
DDRJ2  
0
1
DDRJ1  
0
Bit 0  
DDRJ0  
0
Read:  
Write:  
Reset:  
Figure 9-10. Port J Data Direction Register (DDRJ)  
Determines direction of each port J pin.  
DDRJ7–DDRJ0 — Data Direction Port J Bits  
1 = Associated pin is an output.  
0 = Associated pin is an input.  
9.2.11 Port J Key Wakeup Interrupt Enable Register  
Address: $002A  
Bit 7  
KWIEJ7  
0
6
KWIEJ6  
0
5
KWIEJ5  
0
4
KWIEJ4  
0
3
KWIEJ3  
0
2
KWIEJ2  
0
1
KWIEJ1  
0
Bit 0  
KWIEJ0  
0
Read:  
Write:  
Reset:  
Figure 9-11. Port J Key Wakeup Interrupt Enable  
Register (KWIEJ)  
Read: Anytime  
Write: Anytime  
An interrupt is generated when a bit in the KWIFJ register and its corresponding KWIEJ bit are both set.  
These bits correspond to the pins of port J. All eight bits/pins share the same interrupt vector.  
KWIEJ7–KWIEF0 — Key Wakeup Port J Interrupt Enable Bits  
1 = Interrupt for the associated bit is enabled.  
0 = Interrupt for the associated bit is disabled.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
97  
Key Wakeups  
9.2.12 Port J Key Wakeup Flag Register  
Address: $002B  
Bit 7  
KWIFJ7  
0
6
KWIFJ6  
0
5
KWIFJ5  
0
4
KWIFJ4  
0
3
KWIFJ3  
0
2
KWIFJ2  
0
1
KWIFJ1  
0
Bit 0  
KWIFJ0  
0
Read:  
Write:  
Reset:  
Figure 9-12. Port J Key Wakeup Flag Register (KWIFJ)  
Read: Anytime  
Write: Anytime  
Each flag gets set by an active edge on the associated input pin. This could be a rising or falling edge  
based on the state of the KPOLJ register. To clear the flag, write 1 to the corresponding bit in KWIFJ.  
Initialize this register after initializing KPOLJ so that illegal flags can be cleared.  
KWIFJ7–KWIFJ0 — Key Wakeup Port J Flags  
1 = An active edge on the associated bit has occurred. An interrupt occurs if the associated enable  
bit is set.  
0 = An active edge on the associated bit has not occurred.  
9.2.13 Port J Key Wakeup Polarity Register  
Address: $002C  
Bit 7  
KPOLJ7  
0
6
KPOLJ6  
0
5
KPOLJ5  
0
4
KPOLJ4  
0
3
KPOLJ3  
0
2
KPOLJ2  
0
1
KPOLJ1  
0
Bit 0  
KPOLJ0  
0
Read:  
Write:  
Reset:  
Figure 9-13. Port J Key Wakeup Polarity Register (KPOLJ)  
Read: Anytime  
Write: Anytime  
It is best to clear the flags after initializing this register because changing the polarity of a bit can cause  
the associated flag to set.  
KPOLJ7–KPOLJ0 — Key Wakeup Port J Polarity Select Bits  
1 = Rising edge on the associated port J pin sets the associated flag bit in the KWIFJ register.  
0 = Falling edge on the associated port J pin sets the associated flag bit in the KWIFJ register.  
MC68HC812A4 Data Sheet, Rev. 7  
98  
Freescale Semiconductor  
Key Wakeup Registers  
9.2.14 Port J Pullup/Pulldown Select Register  
Address: $002D  
Bit 7  
PUPSJ7  
0
6
PUPSJ6  
0
5
PUPSJ5  
0
4
PUPSJ4  
0
3
PUPSJ3  
0
2
PUPSJ2  
0
1
PUPSJ1  
0
Bit 0  
PUPSJ0  
0
Read:  
Write:  
Reset:  
Figure 9-14. Port J Pullup/Pulldown Select Register (PUPSJ)  
Read: Anytime  
Write: Anytime  
Each bit in the register corresponds to a port J pin. Each bit selects a pullup or pulldown device for the  
associated port J pin. The pullup or pulldown is active only if enabled by the PULEJ register.  
PUPSJ should be initialized before enabling the pullups/pulldowns (PUPEJ).  
PUPSJ7–PUPSJ0 — Key Wakeup Port J Pullup/Pulldown Select Bits  
1 = Pullup is selected for the associated port J pin.  
0 = Pulldown is selected for the associated port J pin.  
9.2.15 Port J Pullup/Pulldown Enable Register  
Address: $002E  
Bit 7  
PULEJ7  
0
6
PULEJ6  
0
5
PULEJ5  
0
4
PULEJ4  
0
3
PULEJ3  
0
2
PULEJ2  
0
1
PULEJ1  
0
Bit 0  
PULEJ0  
0
Read:  
Write:  
Reset:  
Figure 9-15. Port J Pullup/Pulldown Enable Register (PULEJ)  
Read: Anytime  
Write: Anytime  
Each bit in the register corresponds to a port J pin. If a pin is configured as an input, each bit enables an  
active pullup or pulldown device. PUPSJ selects whether a pullup or a pulldown is the active device.  
PULEJ7–PULEJ0 — Key Wakeup Port J Pullup/Pulldown Enable Bits  
1 = Selected pullup/pulldown device for the associated port J pin is enabled if it is an input.  
0 = Associated port J pin has no pullup/pulldown device.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
99  
Key Wakeups  
MC68HC812A4 Data Sheet, Rev. 7  
100  
Freescale Semiconductor  
Chapter 10  
Clock Module  
10.1 Introduction  
Clock generation circuitry generates the internal and external E-clock signals as well as internal clock  
signals used by the CPU and on-chip peripherals. A clock monitor circuit, a computer operating properly  
(COP) watchdog circuit, and a periodic interrupt circuit are also incorporated into the MCU.  
10.2 Block Diagram  
REGISTER: CLKCTL  
BITS: BCS[C:B:A]  
TCLK  
T-CLOCK  
GENERATOR  
TO CPU  
0:0:0  
MUXCLK  
SYSCLK  
÷ 2  
0:0:1  
0:1:0  
0:1:1  
1:0:0  
1:0:1  
1:1:0  
1:1:1  
÷ 2  
ECLK  
PCLK  
E- AND P-CLOCK  
GENERATOR  
TO BDM,  
BUSES,  
SPI,  
XTAL  
EXTAL  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
ATD  
OSCILLATOR  
REGISTER: CLKCTL  
BITS: MCS[B:A]  
0:0  
÷ 2  
÷ 2  
MCLK  
TO SCI, TIM,  
PA, RTI, COP  
0:1  
1:0  
1:1  
PLLS  
÷ 2  
÷ 2  
PHASE-LOCK  
LOOP  
Figure 10-1. Clock Module Block Diagram  
10.2.1 Clock Generators  
The clock module generates four types of internal clock signals derived from the oscillator:  
1. T-clocks — Drives the CPU  
2. E-clock — Drives the bus interfaces, BDM, SPI, and ATD  
3. P-clock — Drives the bus interfaces, BDM, SPI, and ATD  
4. M-clock — Drives on-chip modules such as the timer, SCI, RTI, COP, and restart-from-stop delay  
time  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
101  
Clock Module  
Figure 10-2 shows clock timing relationships. Four bits in the CLKCTL register control the base clock and  
M-clock divide selection (÷1, ÷2, ÷4, and ÷8 are selectable).  
T1CLK  
T2CLK  
T3CLK  
T4CLK  
INTERNAL ECLK  
PCLK  
MCLK  
1
MCLK  
2
MCLK  
4
MCLK  
8
Note: The MCLK depends on the chosen divider settings in the CLKCTL register.  
Figure 10-2. Internal Clock Relationships  
10.3 Register Map  
NOTE  
The register block can be mapped to any 2-Kbyte boundary within the  
standard 64-Kbyte address space. The register block occupies the first 512  
bytes of the 2-Kbyte block. This register map shows default addressing  
after reset.  
Addr.  
Register Name  
Bit 7  
RTIE  
0
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
0
Real-Time Interrupt  
Control Reg. (RTICTL)  
See page 105.  
RSWAI  
RSBCK  
RTBYP  
RTR2  
RTR1  
RTR0  
$0014  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Real-Time Interrupt Flag Read:  
Register (RTIFLG)  
RTIF  
Write:  
$0015  
See page 107.  
Reset:  
0
CME  
0
0
FCME  
0
0
FCM  
0
0
FCOP  
0
0
DISR  
0
0
CR2  
0
0
CR1  
0
0
CR0  
0
COP Control Register Read:  
(COPCTL)  
Write:  
$0016  
$0017  
See page 107.  
Reset:  
Read:  
0
Bit 7  
0
0
Bit 6  
0
0
Bit 5  
0
0
Bit 4  
0
0
Bit 3  
0
0
Bit 2  
0
0
Bit 1  
0
0
Bit 0  
0
Arm/Reset COP Register  
(COPRST)  
See page 109.  
Write:  
Reset:  
= Unimplemented  
Figure 10-3. Clock Function Register Map  
MC68HC812A4 Data Sheet, Rev. 7  
102  
Freescale Semiconductor  
Functional Description  
10.4 Functional Description  
This section provides a functional description of the MC68HC812A4.  
10.4.1 Computer Operating Properly (COP)  
The COP or watchdog timer is an added check that a program is running and sequencing properly. When  
the COP is being used, software is responsible for keeping a free-running watchdog timer from timing out.  
If the watchdog timer times out, it is an indication that the software is no longer being executed in the  
intended sequence; thus, a system reset is initiated. Three control bits allow selection of seven COP  
timeout periods. When COP is enabled, sometime during the selected period the program must write $55  
and $AA (in this order) to the COPRST register. If the program fails to do this, the part resets. If any value  
other than $55 or $AA is written, the part resets.  
10.4.2 Real-Time Interrupt  
There is a real-time (periodic) interrupt (RTI) available to the user. This interrupt occurs at one of seven  
selected rates. An interrupt flag and an interrupt enable bit are associated with this function. The rate  
select has three bits.  
10.4.3 Clock Monitor  
The clock monitor circuit is based on an internal resistor-capacitor (RC) time delay. If no MCU clock edges  
are detected within this RC time delay, the clock monitor can generate a system reset. The clock monitor  
function is enabled/disabled by the CME control bit in the COPCTL register. This timeout is based on an  
RC delay so that the clock monitor can operate without any MCU clocks.  
CME enables clock monitor.  
1 = Slow or stopped clocks (including the STOP instruction) cause a clock reset sequence.  
0 = Clock monitor is disabled. Slow clocks and STOP instruction may be used.  
Clock monitor timeouts are shown in Table 10-1.  
Table 10-1. Clock Monitor Timeouts  
Supply  
Range  
2–20 µs  
5–100 µs  
5 V 10%  
3 V 10%  
10.4.4 Peripheral Clock Divider Chains  
Figure 10-4, Figure 10-5, and Figure 10-6 summarize the peripheral clock divider chains.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
103  
Clock Module  
÷ 8192  
REGISTER: RTICTL  
BITS:  
RTR[2:1:0]  
REGISTER: COPCTL  
BITS:  
CR[2:1:0]  
0:0:0  
0:0:0  
0:0:1  
0:1:0  
0:1:1  
1:0:0  
1:0:1  
1:1:0  
1:1:1  
0:0:1  
0:1:0  
0:1:1  
1:0:0  
1:0:1  
1:1:0  
1:1:1  
SCI0 BAUD RATE  
GENERATOR  
(³ 1 TO 8191)  
SCI0 RECEIVE  
BAUD RATE  
(16X)  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 4  
÷ 4  
÷ 4  
÷ 4  
÷ 4  
÷ 4  
MCLK  
SCI0 TRANSMIT  
BAUD RATE  
(1X)  
÷ 16  
SCI1 BAUD RATE  
GENERATOR  
(³ 1 TO 8191)  
SCI1 RECEIVE  
BAUD RATE  
(16X)  
SCI1 TRANSMIT  
BAUD RATE  
(1X)  
÷ 16  
TO COP  
TO RTI  
Figure 10-4. Clock Chain for SCI0, SCI1, RTI, and COP  
TEN  
REGISTER: TMSK2  
BITS:  
PR[2:0]  
REGISTER: PACTL  
BITS:  
PAEN:CLK1:CLK0  
MCLK  
0:0:0  
0:0:1  
0:1:0  
0:X:X  
1:0:0  
1:0:1  
1:1:0  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
0:1:1  
PACLK  
256  
PULSE  
ACCUMULATOR  
LOW BYTE  
1:0:0  
1:1:1  
PACLK  
65,536  
PULSE  
ACCUMULATOR  
HIGH BYTE  
(PAOV)  
1:0:1  
PACLK  
GATE LOGIC  
PORT T7  
TO TIM  
COUNTER  
PAMOD  
PAEN  
Figure 10-5. Clock Chain for TIM  
MC68HC812A4 Data Sheet, Rev. 7  
104  
Freescale Semiconductor  
Registers and Reset Initialization  
PRS[4:0]  
PCLK  
5-BIT ATD  
PRESCALER  
ATD CLOCK  
÷ 2  
REGISTER: SP0BR  
BITS:  
SPR2:SPR1:SPR0  
0:0:0  
SPI BIT RATE  
0:0:1  
0:1:0  
0:1:1  
1:0:0  
1:0:1  
1:1:0  
1:1:1  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
÷ 2  
ECLK  
BDM BIT CLOCK  
BKGD IN  
Receive: Detect falling edge; count 12 E-clocks; sample input  
SYNCHRONIZER  
Transmit 1: Detect falling edge; count six E-clocks while output is  
high impedance; drive out one E cycle pulse high; return output  
to high impedance  
BKGD  
DIRECTION  
BKGD PIN  
LOGIC  
Transmit 0: Detect falling edge; drive out low; count nine E-clocks;  
drive out one E cycle pulse high; return output to high-impedance  
BKGD OUT  
Figure 10-6. Clock Chain for SPI, ATD, and BDM  
10.5 Registers and Reset Initialization  
This section describes the registers and reset initialization.  
10.5.1 Real-Time Interrupt Control Register  
Address: $0014  
Bit 7  
RTIE  
0
6
RSWAI  
0
5
RSBCK  
0
4
0
3
RTBYP  
0
2
RTR2  
0
1
RTR1  
0
Bit 0  
RTR0  
0
Read:  
Write:  
Reset:  
0
= Unimplemented  
Figure 10-7. Real-Time Interrupt Control Register (RTICTL)  
Read: Anytime  
Write: Varies from bit to bit  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
105  
Clock Module  
RTIE — Real-Time Interrupt Enable Bit  
Write: Anytime  
RTIE enables interrupt requests generated by the RTIF flag.  
1 = RTIF interrupt requests enabled  
0 = RTIF interrupt requests disabled  
RSWAI — RTI Stop in Wait Bit  
Write: Once in normal modes, anytime in special modes  
RSWAI disables the RTI and the COP during wait mode.  
1 = RTI and COP disabled in wait mode  
0 = RTI and COP enabled in wait mode  
RSBCK — RTI Stop in Background Mode Bit  
Write: Once in normal modes, anytime in special modes  
RSBCK disables the RTI and the COP during background debug mode.  
1 = RTI and COP disabled during background mode  
0 = RTI and COP enabled during background mode  
RTBYP — RTI Bypass Bit  
Write: Never in normal modes, anytime in special modes  
RTBYP allows faster testing by causing the divider chain to be bypassed. The divider chain normally  
divides M by 213. When RTBYP is set, the divider chain divides M by 4.  
1 = Divider chain bypass  
0 = No divider chain bypass  
RTR2, RTR1, RTR0 — Real-Time Interrupt Rate Select Bits  
Write: Anytime  
Rate select for real-time interrupt. The clock used for this module is the module (M) clock.  
Table 10-2. Real-Time Interrupt Rates  
Real-Time Timeout Period  
RTR[2:1:0]  
M-Clock Divisor  
M = 4.0 MHz  
Off  
M = 8.0 MHz  
Off  
000  
001  
010  
011  
100  
101  
110  
111  
Off  
213  
214  
215  
216  
217  
218  
219  
2.048 ms  
1.024 ms  
4.096 ms  
8.196 ms  
2.048 ms  
4.096 ms  
8.196 ms  
16.384 ms  
32.768 ms  
65.536 ms  
16.384 ms  
32.768 ms  
65.536 ms  
131.72 ms  
MC68HC812A4 Data Sheet, Rev. 7  
106  
Freescale Semiconductor  
Registers and Reset Initialization  
10.5.2 Real-Time Interrupt Flag Register  
Address: $0015  
Bit 7  
RTIF  
0
6
0
5
0
4
0
3
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
0
0
= Unimplemented  
Figure 10-8. Real-Time Interrupt Flag Register (RTIFLG)  
RTIF — Real-Time Interrupt Flag  
RTIF is set when the timeout period elapses. RTIF generates an interrupt request if the RTIE bit is set  
in the RTI control register. Clear RTIF by writing to the real-time interrupt flag register with RTIF set.  
1 = Timeout period elapsed  
0 = Timeout period not elapsed  
10.5.3 COP Control Register  
Address: $0016  
Bit 7  
CME  
0
6
FCME  
0
5
FCM  
0
4
FCOP  
0
3
DISR  
0
2
CR2  
0
1
CR1  
0
Bit 0  
CR0  
0
Read:  
Write:  
Reset:  
Figure 10-9. COP Control Register (COPCTL)  
Read: Anytime  
Write: Varies from bit to bit  
CME — Clock Monitor Enable Bit  
Write: Anytime  
CME enables the clock monitor. If the force clock monitor enable bit, FCME, is set, CME has no  
meaning or effect.  
1 = Clock monitor enabled  
0 = Clock monitor disabled  
NOTE  
Clear the CME bit before executing a STOP instruction and set the CME bit  
after exiting stop mode.  
FCME — Force Clock Monitor Enable Bit  
Write: Once in normal modes, anytime in special modes  
FCME forces the clock monitor to be enabled until a reset occurs. When FCME is set, the CME bit has  
no effect.  
1 = Clock monitor enabled  
0 = CME bit enables or disables clock monitor  
NOTE  
Clear the FCME bit in applications that use the STOP instruction and the  
clock monitor.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
107  
Clock Module  
FCM — Force Clock Monitor Reset Bit  
Write: Never in normal modes, anytime in special modes  
FCM forces a reset when the clock monitor is enabled and detects a slow or stopped clock.  
1 = Clock monitor reset enabled  
0 = Normal operation  
NOTE  
When the disable reset bit, DISR, is set, FCM has no effect.  
FCOP — Force COP Reset Bit  
Write: Never in normal modes; anytime in special modes  
FCOP forces a reset when the COP is enabled and times out.  
1 = COP reset enabled  
0 = Normal operation  
NOTE  
When the disable reset bit, DISR, is set, FCOP has no effect.  
DISR — Disable Reset Bit  
Write: Never in normal modes; anytime in special modes  
DISR disables clock monitor resets and COP resets.  
1 = Clock monitor and COP resets disabled  
0 = Normal operation  
CR2, CR1, and CR0 — COP Watchdog Timer Rate Select Bits  
Write: Once in normal modes, anytime in special modes  
The COP system is driven by a constant frequency of M/213. These bits specify an additional division  
factor to arrive at the COP timeout rate. (The clock used for this module is the M-clock.)  
Table 10-3. COP Watchdog Rates  
COP Timeout Period  
CR[2:1:0]  
M-Clock Divisor  
0/+2.048 ms  
M = 4.0 MHz  
Off  
0/+1.024 ms  
M = 8.0 MHz  
Off  
000  
001  
010  
011  
100  
101  
110  
111  
Off  
213  
215  
217  
219  
221  
222  
223  
2.048 ms  
1.024 ms  
8.1920 ms  
32.768 ms  
131.072 ms  
524.288 ms  
1.048 s  
4.096 ms  
16.384 ms  
65.536 ms  
262.144 ms  
524.288 ms  
1.048576 s  
2.097 s  
MC68HC812A4 Data Sheet, Rev. 7  
108  
Freescale Semiconductor  
Registers and Reset Initialization  
10.5.4 Arm/Reset COP Timer Register  
Address: $0017  
Bit 7  
0
6
0
5
0
4
0
3
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
Bit 7  
0
Bit 6  
0
Bit 5  
0
Bit 4  
0
Bit 3  
0
Bit 2  
0
Bit 1  
0
Bit 0  
0
Figure 10-10. Arm/Reset COP Timer Register (COPRST)  
To restart the COP timeout period and avoid a COP reset, write $55 and then $AA to this address before  
the end of the COP timeout period. Other instructions can be executed between these writes. Writing  
anything other than $55 or $AA causes a COP reset to occur.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
109  
Clock Module  
MC68HC812A4 Data Sheet, Rev. 7  
110  
Freescale Semiconductor  
Chapter 11  
Phase-Lock Loop (PLL)  
11.1 Introduction  
The phase-lock loop (PLL) allows slight adjustments in the frequency of the MCU. The smallest increment  
of adjustment is 9.6 kHz to the output frequency (F ) rate assuming an input clock of 16.8 MHz  
Out  
(OSCXTAL) and a reference divider set to 1750. Figure 11-1 shows the PLL dividers and a portion of the  
clock module and Figure 11-2 provides a register map.  
11.2 Block Diagram  
VDDPLL  
CS  
LOOP FILTER  
CP  
SEE Table 11-1  
RS  
XFC  
PIN  
RDV[11:0]  
XTAL PIN  
EXTAL PIN  
UP  
fReference  
REFERENCE  
DIVIDER  
PHASE  
DETECTOR  
CHARGE  
PUMP  
OSCILLATOR  
DOWN  
fLoop  
OUT-OF-LOCK  
DETECTOR  
PLLON  
VCO  
LOOP  
DIVIDER  
LCKF  
LDV[11:0]  
PLLS  
MUX  
MUXCLK  
ECLK  
PCLK  
SYSCLK  
BASE CLOCK  
DIVIDER  
ECLK & PCLK  
GENERATOR  
÷ 2  
TO MPU  
BCS[C:B:A]  
MCLK  
MODULE CLOCK  
DIVIDER  
TO MODULES  
TCLK  
TCLK  
GENERATOR  
TO CPU  
MCS[B:A]  
Figure 11-1. PLL Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
111  
Phase-Lock Loop (PLL)  
Table 11-1. PLL Filter Values  
RS  
CS  
E Clock  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
8,000,000  
Crystal  
32,000  
16,778.40524  
11,864.12412  
3,001.412373  
2,450.642941  
2,237.120698  
2,122.319042  
1,898.259859  
1,732.866242  
1,604.322397  
1,500.706187  
1,355.8999  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
0.000000033  
64,000  
1,000,000  
1,500,000  
1,800,000  
2,000,000  
2,500,000  
3,000,000  
3,500,000  
4,000,000  
4,900,000  
5,000,000  
1,342.272419  
CP = .0033 µF  
11.3 Register Map  
Addr.  
Register Name  
Bit 7  
6
5
4
3
LDV11  
1
2
LDV10  
1
1
LDV9  
1
Bit 0  
LDV8  
1
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
0
0
0
0
Loop Divider Register High  
(LDVH)  
See page 113.  
$0040  
0
0
0
0
Loop Divider Register Low  
(LDVL)  
See page 113.  
LDV7  
LDV6  
LDV5  
LDV4  
LDV3  
1
LDV2  
1
LDV1  
1
LDV0  
1
$0041  
$0042  
$0043  
$0047  
1
0
1
0
1
0
1
0
Reference Divider  
Register High (RDVH)  
See page 114.  
RDV11  
1
RDV10  
1
RDV9  
1
RDV8  
1
0
0
RDV6  
1
0
RDV5  
1
0
RDV4  
1
Reference Divider  
Register Low (RDVL)  
See page 114.  
RDV7  
RDV3  
1
RDV2  
1
RDV1  
1
RDV0  
1
1
LCKF  
Clock Control Register  
(CLKCTL)  
See page 114.  
PLLON  
PLLS  
BCSC  
0
BCSB  
0
BCSA  
0
MCSB  
0
MCSA  
0
0
0
0
= Unimplemented  
Figure 11-2. PLL Register Map  
MC68HC812A4 Data Sheet, Rev. 7  
112  
Freescale Semiconductor  
Functional Description  
11.4 Functional Description  
The PLL may be used to run the MCU from a different timebase than the incoming crystal value. If the  
PLL is selected, it continues to run when it’s in wait or stop mode which results in more power  
consumption than normal. To take full advantage of the reduced power consumption of stop mode, turn  
off the PLL before going into stop.  
Although it is possible to set the divider to command a very high clock frequency, do not exceed the 16.8  
MHz frequency limit for the MCU.  
A passive external loop filter must be placed on the control line (XFC pad). The filter is a second-order,  
low-pass filter to eliminate the VCO input ripple.  
11.5 Registers and Reset Initialization  
This section describes the registers and reset initialization.  
11.5.1 Loop Divider Registers  
Address: $0040  
Bit 7  
0
6
0
5
0
4
0
3
LDV11  
1
2
LDV10  
1
1
LDV9  
1
Bit 0  
LDV8  
1
Read:  
Write:  
Reset:  
0
0
0
0
= Unimplemented  
Figure 11-3. Loop Divider Register High (LDVH)  
Address: $0041  
Bit 7  
6
LDV6  
1
5
LDV5  
1
4
LDV4  
1
3
LDV3  
1
2
LDV2  
1
1
LDV1  
1
Bit 0  
LDV0  
1
Read:  
Write:  
Reset:  
LDV7  
1
Figure 11-4. Loop Divider Register Low (LDVL)  
Read: Anytime  
Write: Anytime  
If the PLL is on, the count in the loop divider (LDV) 12-bit register effectively multiplies up from the PLL  
base frequency.  
CAUTION  
Do not exceed the maximum rated operating frequency for the CPU.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
113  
Phase-Lock Loop (PLL)  
11.5.2 Reference Divider Registers  
Address: $0042  
Bit 7  
0
6
0
5
0
4
0
3
RDV11  
1
2
RDV10  
1
1
RDV9  
1
Bit 0  
RDV8  
1
Read:  
Write:  
Reset:  
0
0
0
0
= Unimplemented  
Figure 11-5. Reference Divider Register High (RDVH)  
Address: $0043  
Bit 7  
6
RDV6  
1
5
RDV5  
1
4
RDV4  
1
3
RDV3  
1
2
RDV2  
1
1
RDV1  
1
Bit 0  
RDV0  
1
Read:  
Write:  
Reset:  
RDV7  
1
Figure 11-6. Reference Divider Register Low (RDVL)  
Read: Anytime  
Write: Anytime  
The count in the reference divider (RDV) 12-bit register divides the crystal oscillator clock input.  
In the reset condition, both LDV and RDV are set to the maximum count which produces an internal  
frequency at the phase detector of 8.2 kHz and a final output frequency of 16.8 MHz with a 16.8 MHz input  
clock.  
11.5.3 Clock Control Register  
Address: $0047  
Bit 7  
6
PLLON  
0
5
PLLS  
0
4
BCSC  
0
3
BCSB  
0
2
BCSA  
0
1
MCSB  
0
Bit 0  
MCSA  
0
Read:  
Write:  
Reset:  
LCKF  
0
= Unimplemented  
Figure 11-7. Clock Control Register (CLKCTL)  
Read: Anytime  
Write: Anytime  
LCKF — Lock Flag  
This read-only flag is set when the PLL frequency is at least half the target frequency and no more than  
twice the target frequency.  
1 = PLL locked  
0 = PLL not locked  
PLLON — PLL On Bit  
Setting PLLON turns on the PLL.  
1 = PLL on  
0 = PLL off  
MC68HC812A4 Data Sheet, Rev. 7  
114  
Freescale Semiconductor  
Registers and Reset Initialization  
PLLS — PLL Select Bit (PLL output or crystal input frequency)  
PLLS selects the PLL after the LCKF flag is set.  
1 = PLL selected  
0 = Crystal input selected  
BCS[C:B:A] — Base Clock Select Bits  
These bits determine the frequency of SYSCLK. SYSCLK is the source clock for the MCU, including  
the CPU and buses. See Table 11-2. SYSCLK and is twice the bus rate. MUXCLK is either the PLL  
output or the crystal input frequency as selected by the PLLS bit.  
Table 11-2. Base Clock Selection  
BCSC:BCSB:BCSA  
SYSCLK  
000  
MUXCLK  
MUXCLK  
------------------------  
001  
010  
011  
100  
101  
110  
111  
2
MUXCLK  
------------------------  
4
MUXCLK  
------------------------  
8
MUXCLK  
------------------------  
16  
MUXCLK  
------------------------  
32  
MUXCLK  
------------------------  
64  
MUXCLK  
------------------------  
128  
MCSA and MCSB — Module Clock Select Bits  
These bits determine the clock used by some sections of some of the modules such as the baud rate  
generators of the SCIs, the timer counter, the RTI, and COP. See Table 11-3. MCLK is the module  
clock and PCLK is an internal bus rate clock.  
Table 11-3. Module Clock Selection  
MCS[B:A]  
MCLK  
00  
PCLK  
PCLK  
----------------  
01  
10  
11  
2
PCLK  
----------------  
4
PCLK  
----------------  
8
The BCSx and MCSx bits can be changed with a single-write access. In combination, these bits can be  
used to “throttle” the CPU clock rate without affecting the MCLK rate; timing and baud rates can remain  
constant as the processor speed is changed to match system requirements. This can save overall system  
power.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
115  
Phase-Lock Loop (PLL)  
MC68HC812A4 Data Sheet, Rev. 7  
116  
Freescale Semiconductor  
Chapter 12  
Standard Timer Module  
12.1 Introduction  
The standard timer module is a 16-bit, 8-channel timer with:  
Input capture  
Output compare  
Pulse accumulator functions  
A block diagram is given in Figure 12-1.  
12.2 Register Map  
A summary of the input/oputput (I/O) registers is shown in Figure 12-2.  
NOTE  
The register block can be mapped to any 2-Kbyte boundary within the  
standard 64-Kbyte address space. The register block occupies the first 512  
bytes of the 2-Kbyte block. This register map shows default addressing  
after reset.  
In normal modes, writing to a reserved bit has no effect and reading returns  
logic 0.  
In any mode, writing to an unimplemented bit has no effect and reading  
returns a logic 0.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
117  
Standard Timer Module  
12.3 Block Diagram  
CLK[1:0]  
PR[2:1:0]  
PACLK  
PACLK/256  
PACLK/65536  
CHANNEL 7 OUTPUT COMPARE  
TCRE  
MUX  
MODULE  
PRESCALER  
CLOCK  
CxI  
TIMCNTH:TIMCNTL  
16-BIT COUNTER  
CxF  
CLEAR COUNTER  
TOF  
TOI  
INTERRUPT  
REQUEST  
INTERRUPT  
LOGIC  
TE  
CHANNEL 0  
16-BIT COMPARATOR  
TIMC0H:TIMC0L  
16-BIT LATCH  
EDGE  
DETECT  
C0F  
IOS0  
CH. 0 CAPTURE  
CH. 0 COMPARE  
PT0  
LOGIC  
PAD  
EDG0A  
EDG0B  
OM0  
OL0  
CHANNEL 1  
16-BIT COMPARATOR  
TIMC1H:TIMC1L  
16-BIT LATCH  
EDGE  
DETECT  
C1F  
IOS1  
CH. 1 CAPTURE  
CH. 1 COMPARE  
PT1  
LOGIC  
PAD  
EDG1A  
EDG1B  
OM1  
OL1  
CHANNELS 2–6  
CHANNEL 7  
16-BIT COMPARATOR  
TIMC7H:TIMC7L  
16-BIT LATCH  
EDGE  
DETECT  
C7F  
IOS7  
CH. 7 CAPTURE  
PA INPUT  
PT7  
LOGIC  
PAD  
EDG7A  
EDG7B  
OM7  
OL7  
CH. 7 COMPARE  
PEDGE  
PAE  
EDGE  
DETECT  
PAOVF  
TIMPACNTH:TIMPACNTL  
16-BIT COUNTER  
PACLK/65536  
PACLK/256  
PACLK  
PAMOD  
PAIF  
INTERRUPT  
REQUEST  
INTERRUPT  
LOGIC  
MODULE CLOCK  
DIVIDE-BY-64  
PAOVI  
PAOVF  
PAI  
PAIF  
Figure 12-1. Timer Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
118  
Freescale Semiconductor  
Block Diagram  
Addr.  
Register Name  
Bit 7  
IOS7  
0
6
IOS6  
0
5
IOS5  
0
4
IOS4  
0
3
IOS3  
0
2
IOS2  
0
1
Bit 0  
IOS0  
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer IC/OC Select  
Register (TIOS)  
See page 125.  
IOS1  
0
$0080  
Timer Compare Force  
Register (CFORC)  
See page 125.  
FOC7  
0
FOC6  
0
FOC5  
0
FOC4  
0
FOC3  
0
FOC2  
0
FOC1  
0
FOC0  
0
$0081  
$0082  
Timer Output Read:  
OC7M7  
OC7M6  
OC7M5  
OC7M4  
OC7M3  
OC7M2  
OC7M1  
OC7M0  
Compare 7 Mask Register  
(OC7M)  
See page 126.  
Write:  
Reset:  
0
0
0
0
0
0
0
0
Timer Output Read:  
OC7D7  
OC7D6  
OC7D5  
OC7D4  
OC7D3  
OC7D2  
OC7D1  
OC7D0  
Compare 7 Data Register  
(OC7D)  
See page 126.  
Write:  
$0083  
Reset:  
0
0
0
0
0
0
0
9
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Bit 15  
14  
13  
12  
11  
10  
Bit 8  
Timer Counter Register  
High (TCNTH)  
See page 127.  
$0084  
$0085  
0
0
6
0
5
0
4
0
3
0
2
0
1
0
Bit 7  
Bit 0  
Timer Counter Register  
Low (TCNTL)  
See page 127.  
0
0
0
0
0
0
0
0
0
0
0
0
Timer System Control  
Register (TSCR)  
See page 127.  
TEN  
TSWAI  
TSBCK  
TFFCA  
$0086  
$0087  
0
0
0
0
0
0
0
0
Reserved  
R
R
R
R
R
R
R
R
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer Control  
Register 1 (TCTL1)  
See page 129.  
OM7  
OL7  
OM6  
OL6  
OM5  
OL5  
OM4  
OL4  
$0088  
$0089  
$008A  
$008B  
$008C  
0
0
0
0
OL2  
0
0
OM1  
0
0
0
0
Timer Control  
Register 2 (TCTL2)  
See page 129.  
OM3  
OL3  
OM2  
OL1  
OM0  
OL0  
0
0
0
0
0
0
Timer Control  
Register 3 (TCTL3)  
See page 130.  
EDG7B  
EDG7A  
EDG6B  
EDG6A  
0
EDG5B  
0
EDG5A  
EDG4B  
EDG4A  
0
0
0
0
0
0
Timer Control  
Register 4 (TCTL4)  
See page 130.  
EDG3B  
EDG3A  
EDG2B  
EDG2A  
0
EDG1B  
0
EDG1A  
EDG0B  
EDG0A  
0
C7I  
0
0
C6I  
0
0
C5I  
0
0
C2I  
0
0
C1I  
0
0
C0I  
0
Timer Mask Register 1  
(TMSK1)  
See page 130.  
C4I  
C3I  
0
0
= Unimplemented  
R
= Reserved  
Figure 12-2. I/O Register Summary (Sheet 1 of 4)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
119  
Standard Timer Module  
Addr.  
Register Name  
Bit 7  
TOI  
0
6
5
PUPT  
1
4
RDPT  
1
3
TCRE  
0
2
1
Bit 0  
PR0  
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
0
Timer Mask Register 2  
(TMSK2)  
See page 131.  
PR2  
0
PR1  
0
$008D  
0
Timer Flag Register 1  
(TFLG1)  
See page 132.  
C7F  
0
C6F  
C5F  
C4F  
C3F  
C2F  
C1F  
C0F  
$008E  
$008F  
$0090  
$0091  
$0092  
$0093  
$0094  
$0095  
$0096  
$0097  
$0098  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Timer Flag Register 2  
(TFLG2)  
See page 132.  
TOF  
0
0
14  
0
0
13  
0
0
12  
0
0
11  
0
0
10  
0
0
9
0
1
0
9
0
1
0
9
0
1
0
9
0
1
0
9
0
0
Bit 8  
0
Timer Channel 0 Register  
High (TC0H)  
See page 133.  
Bit 15  
0
Timer Channel 0 Register  
Low (TC0L)  
See page 133.  
Bit 7  
0
6
5
4
3
2
Bit 0  
0
0
0
0
0
0
Timer Channel 1 Register  
High (TC1H)  
See page 133.  
Bit 15  
0
14  
0
13  
0
12  
0
11  
0
10  
0
Bit 8  
0
Timer Channel 1 Register  
Low (TC1L)  
See page 133.  
Bit 7  
0
6
5
4
3
2
Bit 0  
0
0
0
0
0
0
Timer Channel 2 Register  
High (TC2H)  
See page 133.  
Bit 15  
0
14  
0
13  
0
12  
0
11  
0
10  
0
Bit 8  
0
Timer Channel 2 Register  
Low (TC2L)  
See page 133.  
Bit 7  
0
6
5
4
3
2
Bit 0  
0
0
0
0
0
0
Timer Channel 3 Register  
High (TC3H)  
See page 133.  
Bit 15  
0
14  
0
13  
0
12  
0
11  
0
10  
0
Bit 8  
0
Timer Channel 3 Register  
Low (TC3L)  
See page 133.  
Bit 7  
0
6
5
4
3
2
Bit 0  
0
0
0
0
0
0
Timer Channel 4 Register  
High (TC4H)  
See page 133.  
Bit 15  
0
14  
13  
0
12  
11  
10  
0
Bit 8  
0
0
0
0
= Unimplemented  
R
= Reserved  
Figure 12-2. I/O Register Summary (Sheet 2 of 4)  
MC68HC812A4 Data Sheet, Rev. 7  
120  
Freescale Semiconductor  
Block Diagram  
Addr.  
Register Name  
Bit 7  
Bit 7  
0
6
6
5
4
3
3
2
2
1
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer Channel 4 Register  
Low (TC4L)  
See page 133.  
5
4
1
$0099  
0
0
0
0
0
0
Timer Channel 5 Register  
High (TC5H)  
See page 133.  
Bit 15  
0
14  
0
13  
12  
11  
0
10  
0
9
Bit 8  
0
$009A  
$009B  
$009C  
$009D  
$009E  
$009F  
$00A0  
$00A1  
0
0
0
Timer Channel 5 Register  
Low (TC5L)  
See page 133.  
Bit 7  
0
6
5
4
3
2
1
Bit 0  
0
0
0
0
0
0
0
Timer Channel 6 Register  
High (TC6H)  
See page 133.  
Bit 15  
0
14  
0
13  
12  
11  
0
10  
0
9
Bit 8  
0
0
0
0
Timer Channel 6 Register  
Low (TC6L)  
See page 133.  
Bit 7  
0
6
5
4
3
2
1
Bit 0  
0
0
0
0
0
0
0
Timer Channel 7 Register  
High (TC7H)  
See page 133.  
Bit 15  
0
14  
0
13  
12  
11  
0
10  
0
9
Bit 8  
0
0
0
0
Timer Channel 7 Register  
Low (TC7L)  
See page 133.  
Bit 7  
6
5
0
4
0
3
2
1
0
0
0
0
0
0
0
0
Pulse Accumulator Control  
Register (PACTL)  
See page 134.  
PAEN  
PAMOD  
PEDGE  
CLK1  
CLK0  
PAOVI  
PAI  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Pulse Accumulator Flag  
Register (PAFLG)  
See page 135.  
PAOVF  
PAIF  
0
0
0
0
0
0
0
0
9
Pulse Accumulator Read:  
Counter Register High  
Bit 15  
14  
13  
12  
11  
10  
Bit 8  
Write:  
$00A2  
$00A3  
(PACNTH)  
See page 136.  
Reset:  
0
Bit 7  
0
0
6
0
0
0
5
0
0
0
4
0
0
0
3
0
0
0
2
0
0
0
0
Bit 0  
0
Pulse Accumulator Read:  
Counter Register Low  
1
0
Write:  
(PACNTL)  
See page 136.  
Reset:  
Read:  
Write:  
Reset:  
0
TCBYP  
PCBYP  
Timer Test Register  
(TIMTST)  
See page 137.  
$00AD  
0
0
0
0
0
0
0
0
= Unimplemented  
R
= Reserved  
Figure 12-2. I/O Register Summary (Sheet 3 of 4)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
121  
Standard Timer Module  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Timer Port Data Register  
(PORTT)  
See page 139.  
PT7  
PT6  
PT5  
PT4  
PT3  
PT2  
PT1  
PT0  
$00AE  
Unaffected by reset  
Timer Port Data Direction  
Register (DDRT)  
See page 140.  
Bit 7  
0
5
0
5
0
4
3
2
0
1
0
Bit 0  
0
$00AF  
0
0
= Unimplemented  
R
= Reserved  
Figure 12-2. I/O Register Summary (Sheet 4 of 4)  
12.4 Functional Description  
This section provides a functional description of the standard timer.  
12.4.1 Prescaler  
The prescaler divides the module clock by 1, 2, 4, 8, 16, or 32. The prescaler select bits, PR2, PR1, and  
PR0, select the prescaler divisor. PR2, PR1, and PR0 are in the timer mask 2 register (TMSK2).  
12.4.2 Input Capture  
Clearing the I/O (input/output) select bit, IOSx, configures channel x as an input capture channel. The  
input capture function captures the time at which an external event occurs. When an active edge occurs  
on the pin of an input capture channel, the timer transfers the value in the timer counter into the timer  
channel registers, TIMCxH and TIMCxL.  
In 8-bit MCUs, the low byte of the timer channel register (TIMCxL) is held for one bus cycle after the high  
byte (TIMCxH) is read. This allows coherent reading of the timer channel such that an input capture does  
not occur between two back-to-back 8-bit reads. To read the 16-bit timer channel register, use a  
double-byte read instruction such as LDD or LDX.  
The minimum pulse width for the input capture input is greater than two module clocks.  
The input capture function does not force data direction. The timer port data direction register controls the  
data direction of an input capture pin. Pin conditions can trigger an input capture on a pin configured as  
an input. Software can trigger an input capture on an input capture pin configured as an output.  
An input capture on channel x sets the CxF flag. The CxI bit enables the CxF flag to generate interrupt  
requests.  
12.4.3 Output Compare  
Setting the I/O select bit, IOSx, configures channel x as an output compare channel. The output compare  
function can generate a periodic pulse with a programmable polarity, duration, and frequency. When the  
timer counter reaches the value in the channel registers of an output compare channel, the timer can set,  
clear, or toggle the channel pin. An output compare on channel x sets the CxF flag. The CxI bit enables  
the CxF flag to generate interrupt requests.  
The output mode and level bits, OMx and OLx, select set, clear, or toggle on output compare. Clearing  
both OMx and OLx disconnects the pin from the output logic.  
MC68HC812A4 Data Sheet, Rev. 7  
122  
Freescale Semiconductor  
Functional Description  
Setting a force output compare bit, FOCx, causes an immediate output compare on channel x. A forced  
output compare does not set the channel flag.  
An output compare on channel 7 overrides output compares on all other output compare channels. A  
channel 7 output compare causes any unmasked bits in the output compare 7 data register to transfer to  
the timer port data register. The output compare 7 mask register masks the bits in the output compare 7  
data register. The timer counter reset enable bit, TCRE, enables channel 7 output compares to reset the  
timer counter. A channel 7 output compare can reset the timer counter even if the OC7/PAI pin is being  
used as the pulse accumulator input.  
An output compare overrides the data direction bit of the output compare pin but does not change the  
state of the data direction bit.  
Writing to the timer port bit of an output compare pin does not affect the pin state. The value written is  
stored in an internal latch. When the pin becomes available for general-purpose output, the last value  
written to the bit appears at the pin.  
12.4.4 Pulse Accumulator  
The pulse accumulator (PA) is a 16-bit counter that can operate in two modes:  
Event counter mode — Counting edges of selected polarity on the pulse accumulator input pin, PAI  
Gated time accumulation mode — Counting pulses from a divide-by-64 clock  
The PA mode bit, PAMOD, selects the mode of operation.  
The minimum pulse width for the PAI input is greater than two module clocks.  
12.4.4.1 Event Counter Mode  
Clearing the PAMOD bit configures the PA for event counter operation. An active edge on the PAI pin  
increments the PA. The PA edge bit, PEDGE, selects falling edges or rising edges to increment the PA.  
An active edge on the PAI pin sets the PA input flag, PAIF. The PA input interrupt enable bit, PAI, enables  
the PAIF flag to generate interrupt requests.  
NOTE  
The PAI input and timer channel 7 use the same pin. To use the PAI input,  
disconnect it from the output logic by clearing the channel 7 output mode  
and output level bits, OM7 and OL7. Also clear the channel 7 output  
compare 7 mask bit, OC7M7.  
The PA counter registers, TIMPACNTH/L, reflect the number of active input edges on the PAI pin since  
the last reset.  
The PA overflow flag, PAOVF, is set when the PA rolls over from $FFFF to $0000. The PA overflow  
interrupt enable bit, PAOVI, enables the PAOVF flag to generate interrupt requests.  
NOTE  
The PA can operate in event counter mode even when the timer enable bit,  
TE, is clear.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
123  
Standard Timer Module  
12.4.4.2 Gated Time Accumulation Mode  
Setting the PAMOD bit configures the PA for gated time accumulation operation. An active level on the  
PAI pin enables a divided-by-64 clock to drive the PA. The PA edge bit, PEDGE, selects low levels or high  
levels to enable the divided-by-64 clock.  
The trailing edge of the active level at the PAI pin sets the PA input flag, PAIF. The PA input interrupt  
enable bit, PAI, enables the PAIF flag to generate interrupt requests.  
NOTE  
The PAI input and timer channel 7 use the same pin. To use the PAI input,  
disconnect it from the output logic by clearing the channel 7 output mode  
and output level bits, OM7 and OL7. Also clear the channel 7 output  
compare mask bit, OC7M7.  
The PA counter registers, TIMPACNTH/L reflect the number of pulses from the divided-by-64 clock since  
the last reset.  
NOTE  
The timer prescaler generates the divided-by-64 clock. If the timer is not  
active, there is no divided-by-64 clock.  
PULSE  
PAD  
ACCUMULATOR  
CHANNEL 7 OUTPUT COMPARE  
OM7  
OL7  
OC7M7  
Figure 12-3. Channel 7 Output Compare/Pulse Accumulator Logic  
MC68HC812A4 Data Sheet, Rev. 7  
124  
Freescale Semiconductor  
Registers and Reset Initialization  
12.5 Registers and Reset Initialization  
This section describes the registers and reset initialization.  
12.5.1 Timer IC/OC Select Register  
Address: $0080  
Bit 7  
IOS7  
0
6
IOS6  
0
5
IOS5  
0
4
IOS4  
0
3
IOS3  
0
2
IOS2  
0
1
IOS1  
0
Bit 0  
IOS0  
0
Read:  
Write:  
Reset:  
Figure 12-4. Timer IC/OC Select Register (TIOS)  
Read: Anytime  
Write: Anytime  
IOS7–IOS0 — Input Capture or Output Compare Select Bits  
The IOSx bits enable input capture or output compare operation for the corresponding timer channel.  
1 = Output compare enabled  
0 = Input capture enabled  
12.5.2 Timer Compare Force Register  
Address: $0081  
Bit 7  
FOC7  
0
6
FOC6  
0
5
FOC5  
0
4
FOC4  
0
3
FOC3  
0
2
FOC2  
0
1
FOC1  
0
Bit 0  
FOC0  
0
Read:  
Write:  
Reset:  
Figure 12-5. Timer Compare Force Register (CFORC)  
Read: Anytime; always read $00 (1 state is transient)  
Write: Anytime  
FOC7–FOC0 — Force Output Compare Bits  
Setting an FOCx bit causes an immediate output compare on the corresponding channel. Forcing an  
output compare does not set the output compare flag.  
1 = Force output compare  
0 = No effect  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
125  
Standard Timer Module  
12.5.3 Timer Output Compare 7 Mask Register  
Address: $0082  
Bit 7  
OC7M7  
0
6
OC7M6  
0
5
OC7M5  
0
4
OC7M4  
0
3
OC7M3  
0
2
OC7M2  
0
1
OC7M1  
0
Bit 0  
OC7M0  
0
Read:  
Write:  
Reset:  
Figure 12-6. Timer Output Compare 7 Mask Register (OC7M)  
Read: Anytime  
Write: Anytime  
OC7M7–OC7M0 — Output Compare 7 Mask Bits  
Setting an OC7Mx bit configures the corresponding TIMPORT pin to be an output. OC7Mx makes the  
timer port pin an output regardless of the data direction bit when the pin is configured for output  
compare (IOSx = 1). The OC7Mx bits do not change the state of the TIMDDR bits.  
1 = Corresponding TIMPORT pin output  
0 = Corresponding TIMPORT pin input  
12.5.4 Timer Output Compare 7 Data Register  
Address: $0083  
Bit 7  
OC7D7  
0
6
OC7D6  
0
5
OC7D5  
0
4
OC7D4  
0
3
OC7D3  
0
2
OC7D2  
0
1
OC7D1  
0
Bit 0  
OC7D0  
0
Read:  
Write:  
Reset:  
Figure 12-7. Timer Output Compare 7 Data Register (OC7D)  
Read: Anytime  
Write: Anytime  
OC7D7–OC7D0 — Output Compare Data Bits  
When a successful channel 7 output compare occurs, these bits transfer to the timer port data register  
if the corresponding OC7Mx bits are set.  
NOTE  
A successful channel 7 output compare overrides any channel 0–6  
compares. For each OC7M bit that is set, the output compare action reflects  
the corresponding OC7D bit.  
MC68HC812A4 Data Sheet, Rev. 7  
126  
Freescale Semiconductor  
Registers and Reset Initialization  
12.5.5 Timer Counter Registers  
Address: $0084  
Bit 7  
6
5
4
3
2
1
Bit 0  
Bit 8  
Read:  
Write:  
Reset:  
Bit 15  
Bit 14  
Bit 13  
Bit 12  
Bit 11  
Bit 10  
Bit 9  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 12-8. Timer Counter Register High (TCNTH)  
Address: $0085  
Bit 7  
6
5
4
3
2
1
Bit 0  
Bit 0  
Read:  
Write:  
Reset:  
Bit 7  
Bit 6  
Bit 5  
Bit 4  
Bit 3  
Bit 2  
Bit 1  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 12-9. Timer Counter Register Low (TCNTL)  
Read: Anytime  
Write: Only in special modes; has no effect in normal modes  
Use a double-byte read instruction to read the timer counter. Two single-byte reads return a different  
value than a double-byte read.  
NOTE  
The period of the first count after a write to the TCNT registers may be a  
different size because the write is not synchronized with the prescaler  
clock.  
12.5.6 Timer System Control Register  
Address: $0086  
Bit 7  
TEN  
0
6
TSWAI  
0
5
TSBCK  
0
4
TFFCA  
0
3
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
0
0
0
0
= Unimplemented  
Figure 12-10. Timer System Control Register (TSCR)  
Read: Anytime  
Write: Anytime  
TEN — Timer Enable Bit  
TEN enables the timer. Clearing TEN reduces power consumption.  
1 = Timer enabled  
0 = Timer and timer counter disabled  
When the timer is disabled, there is no divided-by-64 clock for the PA since the prescaler generates  
the M ÷ 64 clock.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
127  
Standard Timer Module  
TSWAI — Timer Stop in Wait Mode Bit  
TSWAI disables the timer and PA in wait mode.  
1 = Timer and PA disabled in wait mode  
0 = Timer and PA enabled in wait mode  
NOTE  
If timer and PA interrupt requests are needed to bring the MCU out of wait  
mode, clear TSWAI before executing the WAIT instruction.  
TSBCK — Timer Stop in Background Mode Bit  
TSBCK stops the timer during background mode.  
1 = Timer disabled in background mode  
0 = Timer enabled in background mode  
NOTE  
Setting TSBCK does not stop the PA when it is in event counter mode.  
TFFCA — Timer Fast Flag Clear-All Bit  
When TFFCA is set:  
An input capture read or a write to an output compare channel clears the corresponding  
channel flag, CnF.  
Any access of the timer counter registers, TCNTH/L, clears the TOF flag.  
Any access of the PA counter registers, PACNTH/L, clears both the PAOVF and PAIF flags in  
the PAFLG register.  
When TFFCA is clear, writing logic 1s to the flags clears them.  
1 = Fast flag clearing  
0 = Normal flag clearing  
WRITE TFLG1 REGISTER  
DATA BIT n  
CnF  
CLEAR  
CnF FLAG  
TFFCA  
READ TCx REGISTERS  
WRITE TCx REGISTERS  
Figure 12-11. Fast Clear Flag Logic  
MC68HC812A4 Data Sheet, Rev. 7  
128  
Freescale Semiconductor  
Registers and Reset Initialization  
12.5.7 Timer Control Registers 1 and 2  
Address: $0088  
Bit 7  
OM7  
0
6
OL7  
0
5
OM6  
0
4
OL6  
0
3
OM5  
0
2
OL5  
0
1
OM4  
0
Bit 0  
OL4  
0
Read:  
Write:  
Reset:  
Figure 12-12. Timer Control Register 1 (TCTL1)  
Address: $0089  
Bit 7  
6
OL3  
0
5
OM2  
0
4
OL2  
0
3
OM1  
0
2
OL1  
0
1
OM0  
0
Bit 0  
OL0  
0
Read:  
Write:  
Reset:  
OM3  
0
Figure 12-13. Timer Control Register 2 (TCTL2)  
Read: Anytime  
Write: Anytime  
OMx/OLx — Output Mode/Output Level Bits  
These bit pairs select the output action to be taken as a result of a successful output compare. When  
either OMx or OLx is set and the IOSx bit is set, the pin is an output regardless of the state of the  
corresponding DDRT bit.  
Table 12-1. Selection of Output Compare Action  
OMx:OLx  
Action on Output Compare  
Timer disconnected from output pin logic  
Toggle OCn output line  
00  
01  
10  
11  
Clear OCn output line  
Set OCn output line  
Channel 7 shares a pin with the pulse accumulator input pin. To use the PAI input, clear both the OM7  
and OL7 bits and clear the OC7M7 bit in the output compare 7 mask register.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
129  
Standard Timer Module  
12.5.8 Timer Control Registers 3 and 4  
Address: $008A  
Bit 7  
EDG7B  
0
6
EDG7A  
0
5
EDG6B  
0
4
EDG6A  
0
3
EDG5B  
0
2
EDG5A  
0
1
EDG4B  
0
Bit 0  
EDG4A  
0
Read:  
Write:  
Reset:  
Figure 12-14. Timer Control Register 3 (TCTL3)  
Address: $008B  
Bit 7  
6
EDG3A  
0
5
EDG2B  
0
4
EDG2A  
0
3
EDG1B  
0
2
EDG1A  
0
1
EDG0B  
0
Bit 0  
EDG0A  
0
Read:  
Write:  
Reset:  
EDG3B  
0
Figure 12-15. Timer Control Register 4 (TCTL4)  
Read: Anytime  
Write: Anytime  
EDGnB, EDGnA — Input Capture Edge Control Bits  
These eight bit pairs configure the input capture edge detector circuits.  
Table 12-2. Input Capture Edge Selection  
EDGnB:EDGnA  
Edge Selection  
Input capture disabled  
00  
01  
10  
11  
Input capture on rising edges only  
Input capture on falling edges only  
Input capture on any edge (rising or falling)  
12.5.9 Timer Mask Register 1  
Address: $008C  
Bit 7  
6
C6I  
0
5
C5I  
0
4
C4I  
0
3
C3I  
0
2
C2I  
0
1
C1I  
0
Bit 0  
C0I  
0
Read:  
Write:  
Reset:  
C7I  
0
Figure 12-16. Timer Mask 1 Register (TMSK1)  
Read: Anytime  
Write: Anytime  
C7I–C0I — Channel Interrupt Enable Bits  
These bits enable the flags in timer flag register 1.  
1 = Corresponding channel interrupt requests enabled  
0 = Corresponding channel interrupt requests disabled  
MC68HC812A4 Data Sheet, Rev. 7  
130  
Freescale Semiconductor  
Registers and Reset Initialization  
12.5.10 Timer Mask Register 2  
Address: $008D  
Bit 7  
TOI  
0
6
5
PUPT  
1
4
RDPT  
0
3
TCRE  
0
2
PR2  
0
1
PR1  
0
Bit 0  
PR0  
0
Read:  
Write:  
Reset:  
0
0
= Unimplemented  
Figure 12-17. Timer Mask 2 Register (TMSK2)  
Read: Anytime  
Write: Anytime  
TOI — Timer Overflow Interrupt Enable Bit  
TOI enables interrupt requests generated by the TOF flag.  
1 = TOF interrupt requests enabled  
0 = TOF interrupt requests disabled  
PUPT — Port T Pullup Enable Bit  
PUPT enables pullup resistors on the timer port pins when the pins are configured as inputs.  
1 = Pullup resistors enabled  
0 = Pullup resistors disabled  
RDPT — Port T Reduced Drive Bit  
RDPT reduces the output driver size for lower current and less noise.  
1 = Output drive reduction enabled  
0 = Output drive reduction disabled  
TCRE — Timer Counter Reset Enable Bit  
TCRE allows the counter to be reset by a channel 7 output compare.  
1 = Counter reset enabled  
0 = Counter reset disabled  
NOTE  
When the timer channel 7 registers contain $0000 and TCRE is set, the  
timer counter registers remain at $0000 all the time.  
When the timer channel 7 registers contain $FFFF and TCRE is set, TOF  
never gets set even though the timer counter registers go from $FFFF to  
$0000.  
PR2, PR1, and PR0 — Timer Prescaler Select Bits  
These bits select the prescaler divisor for the timer counter.  
Table 12-3. Prescaler Selection  
Value  
PR[2:1:0]  
000  
Prescaler Divisor  
0
1
2
3
4
1
2
001  
010  
4
011  
8
100  
16  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
131  
Standard Timer Module  
Table 12-3. Prescaler Selection (Continued)  
Value  
PR[2:1:0]  
101  
Prescaler Divisor  
5
6
7
32  
32  
32  
110  
111  
NOTE  
The newly selected prescale divisor does not take effect until the next  
synchronized edge when all prescale counter stages equal 0.  
12.5.11 Timer Flag Register 1  
Address: $008E  
Bit 7  
6
C6F  
0
5
C5F  
0
4
C4F  
0
3
C3F  
0
2
C2F  
0
1
C1F  
0
Bit 0  
C0F  
0
Read:  
Write:  
Reset:  
C7F  
0
Figure 12-18. Timer Flag Register 1 (TFLG1)  
Read: Anytime  
Write: Anytime; writing 1 clears flag; writing 0 has no effect  
C7F–C0F — Channel Flags  
These flags are set when an input capture or output compare occurs on the corresponding channel.  
Clear a channel flag by writing a 1 to it.  
NOTE  
When the fast flag clear-all bit, TFFCA, is set, an input capture read or an  
output compare write clears the corresponding channel flag. TFFCA is in  
the timer system control register (TSCR).  
12.5.12 Timer Flag Register 2  
Address: $008F  
Bit 7  
TOF  
0
6
0
5
0
4
0
3
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
0
0
= Unimplemented  
Figure 12-19. Timer Flag Register 2 (TFLG2)  
Read: Anytime  
Write: Anytime; writing 1 clears flag; writing 0 has no effect  
MC68HC812A4 Data Sheet, Rev. 7  
132  
Freescale Semiconductor  
Registers and Reset Initialization  
TOF — Timer Overflow Flag  
TOF is set when the timer counter rolls over from $FFFF to $0000. Clear TOF by writing a 1 to it.  
1 = Timer overflow  
0 = No timer overflow  
NOTE  
When the timer channel 7 registers contain $FFFF and the timer counter  
reset enable bit, TCRE, is set, TOF does not get set when the counter rolls  
over.  
NOTE  
When the fast flag clear-all bit, TFFCA, is set, any access to the timer  
counter registers clears TOF.  
12.5.13 Timer Channel Registers  
Address: TC0H/L:  
TC1H/L:  
TC2H/L:  
$0090/$0091  
$0092/$0093  
$0094/$0095  
$0096/$0097  
$0098/$0099  
$009A/$009B  
$009C/$009D  
$009E/$009F  
TC3H/L:  
TC4H/L:  
TC5H/L:  
TC6H/L:  
TC7H/L:  
Bit 7  
6
5
13  
0
4
12  
0
3
11  
0
2
10  
0
1
9
0
Bit 0  
Read:  
Bit 15  
Write:  
14  
8
0
Reset:  
0
0
6
Bit 7  
5
4
3
2
1
1
0
Bit 0  
Read:  
Write:  
Reset:  
Bit 7  
0
6
0
5
0
4
0
3
0
2
0
Bit 0  
0
Figure 12-20. Timer Channel Registers (TCxH/L)  
Read: Anytime  
Write: Output compare channel, anytime; input capture channel, no effect  
When a channel is configured for input capture (IOSx = 0), the timer channel registers latch the value of  
the free-running counter when a defined transition occurs on the corresponding input capture pin.  
When a channel is configured for output compare (IOSx = 1), the timer channel registers contain the  
output compare value.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
133  
Standard Timer Module  
12.5.14 Pulse Accumulator Control Register  
Address: $00A0  
Bit 7  
0
6
PAEN  
0
5
PAMOD  
0
4
PEDGE  
0
3
CLK1  
0
2
CLK0  
0
1
PAOVI  
0
Bit 0  
PAI  
0
Read:  
Write:  
Reset:  
0
= Unimplemented  
Figure 12-21. Pulse Accumulator Control Register (PACTL)  
Read: Anytime  
Write: Anytime  
PAEN — Pulse Accumulator Enable Bit  
PAEN enables the pulse accumulator.  
1 = Pulse accumulator enabled  
0 = Pulse accumulator disabled  
NOTE  
The pulse accumulator can operate even when the timer enable bit, TEN,  
is clear.  
PAMOD — Pulse Accumulator Mode Bit  
PAMOD selects event counter mode or gated time accumulation mode.  
1 = Gated time accumulation mode  
0 = Event counter mode  
PEDGE — Pulse Accumulator Edge Bit  
PEDGE selects falling or rising edges on the PAI pin to increment the counter.  
In event counter mode (PAMOD = 0):  
1 = Rising PAI edge increments counter  
0 = Falling PAI edge increments counter  
In gated time accumulation mode (PAMOD = 1):  
1 = Low PAI input enables divided-by-64 clock to pulse accumulator and trailing rising edge on PAI  
sets PAIF flag  
0 = High PAI input enables divided-by-64 clock to pulse accumulator and trailing falling edge on PAI  
sets PAIF flag  
NOTE  
The timer prescaler generates the divided-by-64 clock. If the timer is not  
active, there is no divided-by-64 clock.  
To operate in gated time accumulation mode:  
1. Apply logic 0 to the RESET pin.  
2. Initialize registers for pulse accumulator mode test.  
3. Apply appropriate level on PAI pin.  
4. Enable the timer.  
MC68HC812A4 Data Sheet, Rev. 7  
134  
Freescale Semiconductor  
Registers and Reset Initialization  
CLK1 and CLK0 — Clock Select Bits  
CLK1 and CLK0 select the timer counter input clock as shown in Table 12-4.  
Table 12-4. Clock Selection  
Timer Counter Clock(1)  
CLK[1:0]  
Timer prescaler clock(2)  
00  
01  
PACLK  
PACLK  
-------------------  
10  
256  
PACLK  
-------------------  
11  
65,536  
1. Changing the CLKx bits causes an immediate change in  
the timer counter clock input.  
2. When PAE = 0, the timer prescaler clock is always the tim-  
er counter clock.  
PAOVI — Pulse Accumulator Overflow Interrupt Enable Bit  
PAOVI enables the pulse accumulator overflow flag, PAOVF, to generate interrupt requests.  
1 = PAOVF interrupt requests enabled  
0 = PAOVF interrupt requests disabled  
PAI — Pulse Accumulator Interrupt Enable Bit  
PAI enables the pulse accumulator input flag, PAIF, to generate interrupt requests.  
1 = PAIF interrupt requests enabled  
0 = PAIF interrupt requests disabled  
12.5.15 Pulse Accumulator Flag Register  
Address: $00A1  
Bit 7  
0
6
0
5
0
4
0
3
0
2
0
1
PAOVF  
0
Bit 0  
PAIF  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
0
= Unimplemented  
Figure 12-22. Pulse Accumulator Flag Register (PAFLG)  
Read: Anytime  
Write: Anytime; writing 1 clears the flag; writing 0 has no effect  
PAOVF — Pulse Accumulator Overflow Flag  
PAOVF is set when the 16-bit pulse accumulator overflows from $FFFF to $0000. Clear PAOVF by  
writing to the pulse accumulator flag register with PAOVF set.  
1 = Pulse accumulator overflow  
0 = No pulse accumulator overflow  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
135  
Standard Timer Module  
PAIF — Pulse Accumulator Input Flag  
PAIF is set when the selected edge is detected at the PAI pin. In event counter mode, the event edge  
sets PAIF. In gated time accumulation mode, the trailing edge of the gate signal at the PAI pin sets  
PAIF. Clear PAIF by writing to the pulse accumulator flag register with PAIF set.  
1 = Active PAI input  
0 = No active PAI input  
NOTE  
When the fast flag clear-all enable bit, TFFCA, is set, any access to the  
pulse accumulator counter registers clears all the flags in the PAFLG  
register.  
12.5.16 Pulse Accumulator Counter Registers  
Address: $00A2  
Bit 7  
Bit 15  
0
6
Bit 14  
0
5
Bit 13  
0
4
Bit 12  
0
3
Bit 11  
0
2
Bit 10  
0
1
Bit 9  
0
Bit 0  
Bit 8  
0
Read:  
Write:  
Reset:  
Address: $00A3  
Bit 7  
6
Bit 6  
0
5
Bit 5  
0
4
Bit 4  
0
3
Bit 3  
0
2
Bit 2  
0
1
Bit 1  
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Bit 7  
0
Figure 12-23. Pulse Accumulator Counter  
Registers (PACNTH/L)  
Read: Anytime  
Write: Anytime  
These registers contain the number of active input edges on the PAI pin since the last reset.  
Use a double-byte read instruction to read the pulse accumulator counter. Two single-byte reads return  
a different value than a double-byte read.  
NOTE  
Reading the pulse accumulator counter registers immediately after an  
active edge on the PAI pin may miss the last count since the input has to  
be synchronized with the bus clock first.  
MC68HC812A4 Data Sheet, Rev. 7  
136  
Freescale Semiconductor  
External Pins  
12.5.17 Timer Test Register  
Address: $00AD  
Bit 7  
6
0
5
0
4
0
3
0
2
0
1
Bit 0  
Read:  
Write:  
Reset:  
0
TCBYP  
PCBYP  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 12-24. Timer Test Register (TIMTST)  
Read: Anytime  
Write: Only in special mode (SMODN = 0)  
TCBYP — Timer Divider Chain Bypass Bit  
TCBYP divides the 16-bit free-running timer counter into two 8-bit halves. The clock drives both halves  
directly and bypasses the timer prescaler.  
1 = Timer counter divided in half and prescaler bypassed  
0 = Normal operation  
PCBYP — Pulse Accumulator Divider Chain Bypass Bit  
PCBYP divides the 16-bit PA counter into two 8-bit halves. The clock drives both halves directly and  
bypasses the timer prescaler.  
1 = PA counter divided in half and prescaler bypassed  
0 = Normal operation  
12.6 External Pins  
The timer has eight pins for input capture and output compare functions. One of the pins is also the pulse  
accumulator input. All eight pins are available for general-purpose I/O when not configured for timer  
functions.  
12.6.1 Input Capture/Output Compare Pins  
The IOSx bits in the timer IC/OC select register configure the timer port pins as either output compare or  
input capture pins.  
The timer port data direction register controls the data direction of an input capture pin. External pin  
conditions trigger input captures on input capture pins configured as inputs. Software triggers input  
captures on input capture pins configured as outputs.  
The timer port data direction register does not affect the data direction of an output compare pin. The  
output compare function overrides the data direction register but does not affect the state of the data  
direction register.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
137  
Standard Timer Module  
12.6.2 Pulse Accumulator Pin  
Setting the PAE bit in the pulse accumulator control register enables the pulse accumulator input pin, PAI.  
NOTE  
The PAI input and timer channel 7 use the same pin. To use the PAI input,  
disconnect it from the output logic by clearing the channel 7 output mode  
and output level bits, OM7 and OL7. Also clear the channel 7 output  
compare mask bit, OC7M7.  
12.7 Background Debug Mode  
If the TSBCK bit is clear, background debug mode has no effect on the timer. If TSBCK is set, background  
debug mode disables the timer.  
NOTE  
Setting TSBCK does not stop the pulse accumulator when it is in event  
counter mode.  
12.8 Low-Power Options  
This section describes the three low-power modes:  
Run mode  
Wait mode  
Stop mode  
12.8.1 Run Mode  
Clearing the timer enable bit (TEN) or the pulse accumulator enable bit (PAEN) reduces power  
consumption in run mode. TEN is in the timer system control register (TSCR). PAEN is in the pulse  
accumulator control register (PACTL). Timer and pulse accumulator registers are still accessible, but  
clocks to the core of the timer are disabled.  
12.8.2 Wait Mode  
Timer and pulse accumulator operation in wait mode depend on the state of the TSWAI bit in the timer  
system control register TSCR).  
If TSWAI is clear, the timer and pulse accumulator operate normally when the CPU is in wait mode.  
If TSWAI is set, timer and pulse accumulator clock generation ceases and the TIM module enters  
a power-conservation state when the CPU is in wait mode. In this condition, timer and pulse  
accumulator registers are not accessible. Setting TSWAI does not affect the state of the timer  
enable bit, TEN, or the pulse accumulator enable bit, PAEN.  
12.8.3 Stop Mode  
The STOP instruction disables the timer for reduced power consumption.  
MC68HC812A4 Data Sheet, Rev. 7  
138  
Freescale Semiconductor  
Interrupt Sources  
12.9 Interrupt Sources  
Table 12-5. Timer Interrupt Sources  
Interrupt  
Source  
Local  
Enable  
CCR  
Mask  
Vector  
Address  
Flag  
Timer channel 0  
Timer channel 1  
C0F  
C1F  
C0I  
C1I  
I bit  
I bit  
I bit  
I bit  
I bit  
I bit  
I bit  
I bit  
I bit  
I bit  
I bit  
$FFEE, $FFEF  
$FFEC, $FFED  
$FFEA, $FFEB  
$FFE8, $FFE9  
$FFE6, $FFE7  
$FFE4, $FFE5  
$FFE2, $FFE3  
$FFE0, $FFE1  
$FFDE, $FFDF  
$FFDC, $FFDD  
$FFDA, $FFDB  
Timer channel 2  
C2F  
C2I  
Timer channel 3  
C3F  
C3I  
Timer channel 4  
C4F  
C4I  
Timer channel 5  
C5F  
C5I  
Timer channel 6  
C6F  
C6I  
Timer channel 7  
C7F  
C7I  
Timer overflow  
TOF  
PAOVF  
PAIF  
TOI  
PAOVI  
PAI  
Pulse accumulator overflow  
Pulse accumulator input  
12.10 General-Purpose I/O Ports  
This section describes the general-purpose I/O ports.  
12.10.1 Timer Port Data Register  
An I/O pin used by the timer defaults to general-purpose I/O unless an internal function which uses that  
pin is enabled.  
Address: $00AE  
Bit 7  
6
5
4
3
2
1
Bit 0  
PT0  
Read:  
Write:  
Reset:  
PT7  
PT6  
PT5  
PT4  
PT3  
PT2  
PT1  
Unaffected by reset  
IC4OC4 IC/OC3  
Timer function: IC/OC7  
PA function: PAI  
IC/OC6  
IC/OC5  
IC/OC2  
IC/OC1  
IC/OC0  
Figure 12-25. Timer Port Data Register (PORTT)  
Read: Anytime  
Write: Anytime  
PT7–PT0 — Timer Port Data Bits  
Data written to PORTT is buffered and drives the pins only when they are configured as  
general-purpose outputs.  
Reading an input (data direction bit = 0) reads the pin state; reading an output (data direction bit = 1)  
reads the latch.  
Writing to a pin configured as a timer output does not change the pin state.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
139  
Standard Timer Module  
NOTE  
Due to input synchronizer circuitry, the minimum pulse width for a pulse  
accumulator input or an input capture input should always be greater than  
the width of two module clocks.  
Table 12-6. TIMPORT I/O Function  
In  
Out  
Data Direction  
Register  
Output Compare  
Action  
Reading  
at Data Bus  
Reading at Pin  
0
0
1
1
0
1
1
0
Pin  
Pin  
Pin  
Output compare action  
Output compare action  
Port data register  
Port data register  
Port data register  
12.10.2 Timer Port Data Direction Register  
Address: $00AF  
Bit 7  
Bit 7  
0
6
6
0
5
5
0
4
4
0
3
3
0
2
2
0
1
1
0
Bit 0  
Bit 0  
0
Read:  
Write:  
Reset:  
Figure 12-26. Timer Port Data Direction Register (DDRT)  
Read: Anytime  
Write: Anytime  
Bits 7–0 — TIMPORT Data Direction Bits  
These bits control the port logic of PORTT. Reset clears the timer port data direction register,  
configuring all timer port pins as inputs.  
1 = Corresponding pin configured as output  
0 = Corresponding pin configured as input  
The timer forces the I/O state to be an output for each timer port pin associated with an enabled output  
compare. In these cases, the data direction bits do not change but have no effect on the direction of these  
pins. The DDRT reverts to controlling the I/O direction of a pin when the associated timer output compare  
is disabled. Input captures do not override the DDRT settings.  
NOTE  
By setting the IOSx bit input capture configuration no matter what the state  
of the data direction register is, the timer forces output compare pins to be  
outputs and input capture pins to be inputs.  
MC68HC812A4 Data Sheet, Rev. 7  
140  
Freescale Semiconductor  
Using the Output Compare Function to Generate a Square Wave  
12.11 Using the Output Compare Function to Generate a Square Wave  
This timer exercise is intended to utilize the output compare function to generate a square wave of  
predetermined duty cycle and frequency.  
Square wave frequency 1000 Hz, duty cycle 50%  
The program generates a square wave, 50 percent duty cycle, on output compare 2 (OC2). The signal  
will be measured by the M68HC11 on the UDLP1 board. It assumes a 8.0 MHz operating frequency for  
the E clock. The control registers are initialized to disable interrupts, configure for proper pin control action  
and also the TC2H register for desired compare value. The appropiate count must be calculated to  
achieve the desired frequency and duty cycle. For example: for a 50 percent duty, 1 kHz signal each  
period must consist of 2048 counts or 1024 counts high and 1024 counts low. In essence a $0400 is  
added to generate a frequency of 1 kHz.  
12.11.1 Sample Calculation to Obtain Period Counts  
The sample calculation to obtain period counts is:  
For 1000 Hz frequency:  
E-clock = 8 MHz  
IC/OC resolution factor = 1/(E-clock/prescaler)  
If the prescaler = 4, then output compare resolution is 0.5 µs  
For a 1 kHz, 50 percent duty cycle:  
1/F = T = 1/1000 = 1 ms  
F for output compare = prescaler/E clock = 2 MHz  
1 ms  
NUMBER OF CLOCKS = F * D  
THEREFORE,  
# CLOCKS = (2 MHz) * (0.5 ms) = 1024 = $0400  
0.5 ms  
Figure 12-27. Example Waveform  
12.11.2 Equipment  
For this exercise, use the M68HC812A4EVB emulation board.  
12.11.3 Code Listing  
NOTE  
A comment line is delimited by a semicolon. If there is no code before  
comment, a semicolon (;) must be placed in the first column to avoid  
assembly errors.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
141  
Standard Timer Module  
----------------------------------------------------------------------  
;
MAIN PROGRAM  
; ----------------------------------------------------------------------  
ORG  
BSR  
$7000  
; 16K On-Board RAM, User code data area,  
; start main program at $7000  
;
MAIN:  
TIMERINIT  
; Subroutine used to initialize the timer:  
; Output compare channel, no interrupts  
; Subroutine to generate square wave  
;
BSR  
BRA  
SQWAVE  
DONE  
DONE:  
; Branch to itself, Convinient for Breakpoint  
;* -----------------------------------------------------------------  
;* Subroutine TIMERINIT: Initialize Timer for Output Compare on OC2  
;* -----------------------------------------------------------------  
TIMERINIT:  
CLR  
TMSK1  
; Disable All Interrupts  
MOVB  
#$02,TMSK2  
; Disable overflow interrupt, disable pull-up  
; resistor function with normal drive capability  
;andfreerunningcounter,Prescaler=sysclock/4.  
;
;
MOVB  
MOVB  
MOVW  
MOVB  
#$10,TCTL2  
#$04,TIOS  
#$0400,TC2H  
#$80,TSCR  
; Initialize OC2 to toggle on successful compare.  
; Select Channel 2 to act as output compare.  
; Load TC2 Reg with initial compare value.  
; Enable Timer, Timer runs during wait state, and  
; while in Background Mode, also clear flags  
; normally.  
;
;
RTS  
; Return from Subroutine  
;* ------------------------------  
;* SUBROUTINE: SQWAVE  
;* ------------------------------  
SQWAVE:  
;* -------  
CLEARFLG:  
;* -------  
;* To clear the C2F flag: 1) read TFLG1 when  
;* C2F is set and then 2) write a logic "one" to C2F.  
LDAA  
ORAA  
STAA  
TFLG1  
#$04  
TFLG1  
; To clear OC2 Flag, first it must be read,  
; then a "1" must be written to it  
WTFLG:  
BRCLR  
TFLG1,#$04,WTFLG; Wait (Polling) for C2F Flag  
LDD  
ADDD  
STD  
TC2H  
#$0400  
TC2H  
; Loads value of compare from TC2 Reg.  
; Add hex value of 500us High Time  
; Set-up next transition time in 500 us  
BRA  
RTS  
END  
CLEARFLG  
; Continuously add 500 us, branch to CLEARFLAG  
; return from Subroutine  
; End of program  
MC68HC812A4 Data Sheet, Rev. 7  
142  
Freescale Semiconductor  
Chapter 13  
Multiple Serial Interface (MSI)  
13.1 Introduction  
The multiple serial interface (MSI) module consists of three independent serial I/O interfaces:  
Two serial communication interfaces, SCI0 and SCI1  
One serial peripheral interface, SPI0  
NOTE  
Port S shares its pins with the multiple serial interface (MSI).  
See 13.6 General-Purpose I/O Ports.  
13.2 SCI Features  
Serial comunication interface (SCI) features include:  
Full-duplex operation  
Standard mark/space non-return-to-zero (NRZ) format  
13-bit baud rate selection  
Programmable 8-bit or 9-bit data format  
Separately enabled transmitter and receiver  
Separate receiver and transmitter interrupt requests  
Two receiver wakeup methods:  
Idle line wakeup  
Address mark wakeup  
Five flags with interrupt-generation capability:  
Transmitter empty  
Transmission complete  
Receiver full  
Receiver overrun  
Idle receiver input  
Receiver noise error detection  
Receiver framing error detection  
Receiver parity error detection  
For additional information, refer to Chapter 14 Serial Communications Interface Module (SCI).  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
143  
Multiple Serial Interface (MSI)  
13.3 SPI Features  
Serial preipheral interface (SPI) fetures include:  
Full-duplex operation  
Master mode and slave mode  
Programmable slave-select output option  
Programmable bidirectional data pin option  
Interrupt-driven operation with two flags:  
Transmission complete  
Mode fault  
Read data buffer  
Serial clock with programmable polarity and phase  
Reduced drive control for lower power consumption  
Programmable open-drain output option  
For additional information, refer to Chapter 15 Serial Peripheral Interface (SPI)  
13.4 MSI Block Diagram  
RxD0  
PS0  
PS1  
SCI0  
TxD0  
RxD1  
PS2  
PS3  
SCI1  
TxD1  
MSI  
MOSI/MOMI  
PS4  
PS5  
PS6  
PS7  
MISO/SISO  
SPI0  
SCK  
CS/SS  
Figure 13-1. Multiple Serial Interface Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
144  
Freescale Semiconductor  
MSI Register Map  
13.5 MSI Register Map  
Addr.  
Register Name  
Bit 7  
BTST  
0
6
BSPL  
0
5
BRLD  
0
4
SBR12  
0
3
SBR11  
0
2
SBR10  
0
1
SBR9  
0
Bit 0  
SBR8  
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SCI 0 Baud Rate Register  
High (SC0BDH)  
See page 168.  
$00C0  
SCI 0 Baud Rate Register  
Low (SC0BDL)  
See page 168.  
SBR7  
0
SBR6  
0
SBR5  
0
SBR4  
0
SBR3  
0
SBR2  
1
SBR1  
0
SBR0  
0
$00C1  
$00C2  
$00C3  
$00C4  
$00C5  
$00C6  
$00C7  
$00C8  
$00C9  
$00CA  
$00CB  
SCI 0 Control  
Register 1 (SC0CR1)  
See page 169.  
LOOPS  
0
WOMS  
0
RSRC  
0
M
WAKE  
0
ILT  
0
PE  
PT  
0
0
0
SCI 0 Control  
Register 2 (SC0CR2)  
See page 171.  
TIE  
TCIE  
RIE  
ILIE  
TE  
RE  
RWU  
SBK  
0
0
0
0
0
0
0
0
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
PF  
SCI 0 Status  
Register 1 (SC0SR1)  
See page 172.  
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
RAF  
SCI 0 Status  
Register 2 (SC0SR2)  
See page 173.  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R8  
SCI 0 Data Register High  
(SC0DRH)  
See page 174.  
T8  
Unaffected by reset  
R7  
T7  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
R0  
T0  
SCI 0 Data Register Low  
(SC0DRL)  
See page 174.  
Unaffected by reset  
SCI 1 Baud Rate Register  
High (SC1BDH)  
See page 168.  
BTST  
BSPL  
BRLD  
SBR12  
SBR11  
SBR10  
SBR9  
SBR8  
0
0
SBR6  
0
0
SBR5  
0
0
SBR4  
0
0
SBR3  
0
0
SBR2  
1
0
SBR1  
0
0
SBR0  
0
SCI 1 Baud Rate Register  
Low (SC1BDL)  
See page 168.  
SBR7  
0
SCI 1 Control Register 1  
(SC1CR1)  
See page 169.  
LOOPS  
WOMS  
0
RSRC  
0
M
WAKE  
0
ILT  
0
PE  
0
PT  
0
0
TIE  
0
0
SCI 1 Control Register 2  
(SC1CR2)  
See page 171.  
TCIE  
RIE  
ILIE  
0
TE  
RE  
0
RWU  
0
SBK  
0
0
0
0
= Unimplemented  
Figure 13-2. MSI Register Map  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
145  
Multiple Serial Interface (MSI)  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
PF  
SCI 1 Status Register 1  
(SC1SR1)  
See page 172.  
$00CC  
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
RAF  
SCI 1 Status Register 2  
(SC1SR2)  
See page 173.  
$00CD  
$00CE  
$00CF  
$00D0  
$00D1  
$00D2  
$00D3  
$00D5  
$00D6  
$00D7  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R8  
SCI 1 Data Register High  
(SC1DRH)  
See page 174.  
T8  
Unaffected by reset  
R7  
T7  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
R0  
T0  
SCI 1 Data Register Low  
(SC1DRL)  
See page 174.  
Unaffected by reset  
SPI 0 Control Register 1  
(SP0CR1)  
See page 186.  
SPIE  
SPE  
SWOM  
MSTR  
CPOL  
0
CPHA  
0
SSOE  
LSBF  
0
0
0
0
0
0
0
0
0
0
0
SPI 0 Control Register 2  
(SP0CR2)  
See page 187.  
PUPS  
RDS  
0
SPC0  
0
0
0
0
0
0
0
0
0
1
0
0
SPI 0 Baud Rate Register  
(SP0BR)  
See page 188.  
SPR2  
SPR1  
SPR0  
0
0
0
0
0
0
0
0
0
0
0
0
0
SPIF  
WCOL  
MODF  
SPI 0 Status Register  
(SP0SR)  
See page 189.  
0
0
6
0
5
0
4
0
3
0
2
0
1
0
0
SPI 0 Data Register  
(SP0DR)  
See page 190.  
Bit 7  
Unaffected by reset  
PS4 PS3  
Unaffected by reset  
Port S Data Register  
(PORTS)  
See page 147.  
PS7  
PS6  
PS5  
PS2  
PS1  
PS0  
Port S Data Direction  
Register (DDRS)  
See page 148.  
DDRS7  
0
DDRS6  
0
DDRS5  
0
DDRS4  
0
DDRS3  
0
DDRS2  
0
DDRS1  
0
DDRS0  
0
= Unimplemented  
Figure 13-2. MSI Register Map (Continued)  
Full register descriptions can be found in Chapter 14 Serial Communications Interface Module (SCI) and  
Chapter 15 Serial Peripheral Interface (SPI).  
MC68HC812A4 Data Sheet, Rev. 7  
146  
Freescale Semiconductor  
General-Purpose I/O Ports  
13.6 General-Purpose I/O Ports  
Port S shares its pins with the multiple serial interface (MSI). In all modes, port S pins PS7–PS0 are  
available for either general-purpose I/O or for SCI and SPI functions.  
13.6.1 Port S Data Register  
Address: $00D6  
Bit 7  
6
5
4
3
2
1
Bit 0  
PS0  
Read:  
Write:  
PS7  
PS6  
PS5  
PS4  
PS3  
PS2  
PS1  
Reset:  
Unaffected by reset  
MISO TXD1  
Pin function:  
SS  
SCK  
MOSI  
RXD1  
TXD0  
RXD0  
Figure 13-3. Port S Data Register (PORTS)  
Read: Anytime  
Write: Anytime  
PS7–PS4 — Port S Data Bits 7–4  
Port S shares PS7–PS4 with SPI0.  
SS is the SPI0 slave-select terminal.  
SCK is the SPI0 serial clock terminal.  
MOSI is the SPI0 master out, slave in terminal.  
MISO is the SPI0 master in, slave out terminal.  
PS3–PS0 — Port S Data Bits 3–0  
Port S shares PS3–0 with SCI1 and SCI0.  
TXD1 is the SCI1 transmit terminal.  
RXD1 is the SCI1 receive terminal.  
TXD0 is the SCI0 transmit terminal.  
RXD0 is the SCI0 receive terminal.  
NOTE  
Reading a port S bit when its data direction bit is clear returns the level of  
the voltage on the pin. Reading a port S bit when its data direction bit is set  
returns the level of the voltage of the pin driver input.  
A write to a port S bit is stored in an internal latch. The latch drives the pin  
only when the corresponding data direction bit is set.  
Writes do not change the pin state when the pin is configured for SCI  
output.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
147  
Multiple Serial Interface (MSI)  
13.6.2 Port S Data Direction Register  
Address: $00D7  
Bit 7  
DDRS7  
0
6
DDRS6  
0
5
DDRS5  
0
4
DDRS4  
0
3
DDRS3  
0
2
DDRS2  
0
1
DDRS1  
0
Bit 0  
DDRS0  
0
Read:  
Write:  
Reset:  
Figure 13-4. Port S Data Direction Register (DDRS)  
Read: Anytime  
Write: Anytime  
DDRS7–DDRS0 — Port S Data Direction Bits  
These bits control the data direction of each port S pin. Setting a DDRS bit makes the pin an output;  
clearing a DDRS bit makes the pin an input. Reset clears the port S data direction register, configuring  
all port S pins as inputs.  
1 = Corresponding port S pin configured as output  
0 = Corresponding port S pin configured as input  
NOTE  
When the LOOPS bit is clear, the RX pins of SCI0 and SCI1 are inputs and  
the TX pins are outputs regardless of their DDRS bits.  
When the SPI is enabled, an SPI input pin is an input regardless of its  
DDRS bit.  
When the SPI is enabled, an SPI output is an output only if its DDRS bit is  
set. When the DDRS bit of an SPI output is clear, the pin is available for  
general-purpose I/O.  
13.6.3 Port S Pullup and Reduced Drive Control  
Address: $00D1  
Bit 7  
0
6
0
5
0
4
0
3
PUPS  
1
2
RDS  
0
1
0
Bit 0  
SPC0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
= Unimplemented  
Figure 13-5. SPI Control Register 2 (SP0CR2)  
Read: Anytime  
Write: Anytime  
PUPS — Pullup Port S Enable Bit  
Setting PUPS enables internal pullup devices on all port S input pins. If a pin is programmed as output,  
the pullup device becomes inactive.  
1 = Pullups enabled  
0 = Pullups disabled  
MC68HC812A4 Data Sheet, Rev. 7  
148  
Freescale Semiconductor  
General-Purpose I/O Ports  
RDS — Reduced Drive Port S Bit  
Setting RDS lowers the drive capability of all port S output pins for lower power consumption and less  
noise.  
1 = Reduced drive  
0 = Full drive  
Table 13-1. Port S Pullup and Reduced Drive Enable  
Pullups  
Reduced Drive  
Register  
Control  
Bit  
Pins  
Affected  
Reset  
State  
Control  
Bit  
Pins  
Affected  
Reset  
State  
SPI control register 2  
(SP0CR2)  
PUPS  
PS7–PS0  
Enabled  
RDS  
PS7–PS0  
Disabled  
SPC0 — See Chapter 14 Serial Communications Interface Module (SCI).  
13.6.4 Port S Wired-OR Mode Control  
Table 13-2. Port S Wired-OR Mode Enable  
Control  
Bit  
Pins  
Reset  
State  
Register  
Affected  
PS7–PS4  
PS3, PS2  
PS1, PS0  
SPI control register 1 (SP0CR1)  
SCI0 control register 1 (SC0CR1)  
SCI1 control register 1 (SC1CR1)  
SWOM  
WOMS  
WOMS  
Disabled  
Disabled  
Disabled  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
149  
Multiple Serial Interface (MSI)  
MC68HC812A4 Data Sheet, Rev. 7  
150  
Freescale Semiconductor  
Chapter 14  
Serial Communications Interface Module (SCI)  
14.1 Introduction  
The serial communications interface (SCI) allows asynchronous serial communications with peripheral  
devices and other MCUs.  
14.2 Features  
Features of the SCI include:  
Full-duplex operation  
Standard mark/space non-return-to-zero (NRZ) format  
13-bit baud rate selection  
Programmable 8-bit or 9-bit data format  
Separately enabled transmitter and receiver  
Separate receiver and transmitter interrupt requests  
Two receiver wakeup methods:  
Idle line wakeup  
Address mark wakeup  
Five flags with interrupt-generation capability:  
Transmitter empty  
Transmission complete  
Receiver full  
Receiver overrun  
Idle receiver input  
Receiver noise error detection  
Receiver framing error detection  
Receiver parity error detection  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
151  
Serial Communications Interface Module (SCI)  
14.3 Block Diagram  
SCI DATA  
REGISTER  
R8  
RXD  
RECEIVE  
SHIFT REGISTER  
NF  
FE  
RE  
PF  
RWU  
RECEIVE  
AND WAKEUP  
CONTROL  
MODULE  
CLOCK  
SCI  
INTERRUPT  
REQUEST  
BAUD RATE  
GENERATOR  
RAF  
IDLE  
RDRF  
OR  
ILIE  
LOOPS  
RSRC  
SCI  
INTERRUPT  
REQUEST  
³16  
SBR[12:0]  
M
WAKE  
ILT  
DATA FORMAT  
CONTROL  
RIE  
PE  
PT  
TE  
TRANSMIT  
CONTROL  
LOOPS  
SBK  
SCI  
INTERRUPT  
REQUEST  
TIE  
TDRE  
TC  
RSRC  
SCI  
INTERRUPT  
REQUEST  
TRANSMIT  
SHIFT REGISTER  
T8  
TCIE  
SCI DATA  
REGISTER  
TXD  
RXD TO SCI1  
TXD FROM SCI1  
WOMS  
PIN CONTROL LOGIC  
PORT S DATA  
DIRECTION REGISTER  
PORT S DATA REISTER  
2 1 0  
3
RXD0  
TXD0  
RXD1  
TXD1  
Figure 14-1. SCI Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
152  
Freescale Semiconductor  
Register Map  
14.4 Register Map  
NOTE  
The register block can be mapped to any 2-Kbyte boundary within the  
standard 64-Kbyte address space. The register block occupies the first 512  
bytes of the 2-Kbyte block. This register map shows default addressing  
after reset.  
Addr.  
Register Name  
Bit 7  
BTST  
0
6
BSPL  
0
5
BRLD  
0
4
SBR12  
0
3
SBR11  
0
2
SBR10  
0
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SCI 0 Baud Rate Register  
High (SC0BDH)  
See page 168.  
SBR9  
0
SBR8  
0
$00C0  
SCI 0 Baud Rate Register  
Low (SC0BDL)  
See page 168.  
SBR7  
0
SBR6  
0
SBR5  
0
SBR4  
0
SBR3  
0
SBR2  
1
SBR1  
0
SBR0  
0
$00C1  
$00C2  
$00C3  
$00C4  
$00C5  
$00C6  
$00C7  
$00C8  
SCI 0 Control  
Register 1 (SC0CR1)  
See page 169.  
LOOPS  
0
WOMS  
0
RSRC  
0
M
WAKE  
0
ILT  
0
PE  
PT  
0
0
0
SCI 0 Control  
Register 2 (SC0CR2)  
See page 171.  
TIE  
TCIE  
RIE  
ILIE  
TE  
RE  
RWU  
SBK  
0
0
0
0
0
0
0
0
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
PF  
SCI 0 Status  
Register 1 (SC0SR1)  
See page 172.  
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
RAF  
SCI 0 Status  
Register 2 (SC0SR2)  
See page 173.  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R8  
SCI 0 Data Register High  
(SC0DRH)  
See page 174.  
T8  
Unaffected by reset  
R7  
T7  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
R0  
T0  
SCI 0 Data Register Low  
(SC0DRL)  
See page 174.  
Unaffected by reset  
SCI 1 Baud Rate Register  
High (SC1BDH)  
See page 168.  
BTST  
0
BSPL  
0
BRLD  
0
SBR12  
0
SBR11  
0
SBR10  
0
SBR9  
0
SBR8  
0
= Unimplemented  
Figure 14-2. SCI Register Map  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
153  
Serial Communications Interface Module (SCI)  
Addr.  
Register Name  
Bit 7  
SBR7  
0
6
SBR6  
0
5
SBR5  
0
4
SBR4  
0
3
SBR3  
0
2
SBR2  
1
1
SBR1  
0
Bit 0  
SBR0  
0
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
SCI 1 Baud Rate Register  
Low (SC1BDL)  
See page 168.  
$00C9  
SCI 1 Control Register 1  
(SC1CR1)  
See page 169.  
LOOPS  
0
WOMS  
0
RSRC  
0
M
WAKE  
0
ILT  
0
PE  
PT  
$00CA  
$00CB  
$00CC  
$00CD  
$00CE  
$00CF  
0
0
0
SCI 1 Control Register 2  
(SC1CR2)  
See page 171.  
TIE  
TCIE  
RIE  
ILIE  
TE  
RE  
RWU  
SBK  
0
0
0
0
0
0
0
0
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
PF  
SCI 1 Status Register 1  
(SC1SR1)  
See page 172.  
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
RAF  
SCI 1 Status Register 2  
(SC1SR2)  
See page 173.  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
R8  
SCI 1 Data Register High  
(SC1DRH)  
See page 174.  
T8  
Unaffected by reset  
R7  
T7  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
R0  
T0  
SCI 1 Data Register Low  
(SC1DRL)  
See page 174.  
Unaffected by reset  
= Unimplemented  
Figure 14-2. SCI Register Map (Continued)  
MC68HC812A4 Data Sheet, Rev. 7  
154  
Freescale Semiconductor  
Functional Description  
14.5 Functional Description  
The SCI allows full-duplex, asynchronous, NRZ serial communication between the MCU and remote  
devices, including other MCUs. The SCI transmitter and receiver operate independently, although they  
use the same baud rate generator. The CPU monitors the status of the SCI, writes the data to be  
transmitted, and processes received data.  
14.5.1 Data Format  
The SCI uses the standard NRZ mark/space data format illustrated in Figure 14-3.  
PARITY  
OR DATA  
BIT  
8-BIT DATA FORMAT  
BIT M IN SCCR1 CLEAR  
NEXT  
START  
BIT  
START  
BIT  
STOP  
BIT  
BIT 0  
BIT 0  
BIT 1  
BIT 1  
BIT 2  
BIT 3  
BIT 4  
BIT 5  
BIT 6  
BIT 7  
PARITY  
OR DATA  
BIT  
9-BIT DATA FORMAT  
BIT M IN SCCR1 SET  
NEXT  
START  
BIT  
START  
BIT  
STOP  
BIT  
BIT 2  
BIT 3  
BIT 4  
BIT 5  
BIT 6  
BIT 7  
BIT 8  
Figure 14-3. SCI Data Formats  
Each data character is contained in a frame that includes a start bit, eight or nine data bits, and a stop bit.  
Clearing the M bit in SCI control register 1 configures the SCI for 8-bit data characters. A frame with eight  
data bits has a total of 10 bits. Setting the M bit configures the SCI for 9-bit data characters. A frame with  
nine data bits has a total of 11 bits.  
Table 14-1. Example 8-Bit Data Formats  
Start Bit  
Data Bits  
Address Bit  
Parity Bit  
Stop Bit  
1
1
1
1
8
7
7
7
0
0
0
0
1
2
1
1
1
1(1)  
1. The address bit identifies the frame as an address character. See 14.5.4.6  
Receiver Wakeup.  
Setting the M bit configures the SCI for 9-bit data characters. The ninth data bit is the T8 bit in SCI data  
register high (SCDRH). It remains unchanged after transmission and can be used repeatedly without  
rewriting it. A frame with nine data bits has a total of 11 bits.  
Table 14-2. Example 9-Bit Data Formats  
Start Bit  
Data Bits  
Address Bit  
Parity Bit  
Stop Bit  
1
1
1
1
9
8
8
8
0
0
0
0
1
2
1
1
1
1(1)  
1. The address bit identifies the frame as an address character. See 14.5.4.6  
Receiver Wakeup.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
155  
Serial Communications Interface Module (SCI)  
14.5.2 Baud Rate Generation  
A 13-bit modulus counter in the baud rate generator derives the baud rate for both the receiver and the  
transmitter. The value from 0 to 8191 written to the SBR12–SBR0 bits determines the module clock  
divisor. The SBR bits are in the SCI baud rate registers (SCBDH and SCBDL). The baud rate clock is  
synchronized with the bus clock and drives the receiver. The baud rate clock divided by 16 drives the  
transmitter. The receiver has an acquisition rate of 16 samples per bit time.  
Baud rate generation is subject to two sources of error:  
Integer division of the module clock may not give the exact target frequency.  
Synchonization with the bus clock can cause phase shift.  
Table 14-3 lists some examples of achieving target baud rates with a module clock frequency of 10.2  
MHz.  
Table 14-3. Baud Rates (Module Clock = 10.2 MHz)  
Baud Rate  
Divisor(1)  
Receiver  
Clock Rate (Hz)(2)  
Transmitter  
Clock Rate (Hz)(3)  
Target  
Baud Rate  
Error (%)  
17  
600,000.0  
309,090.9  
154,545.5  
76,691.7  
38,345.9  
19,209.0  
9604.5  
37,500.0  
19,318.2  
9659.1  
4793.2  
2396.6  
1200.6  
600.3  
38,400  
19,200  
9600  
4800  
2400  
1200  
600  
2.3  
33  
0.62  
0.62  
0.14  
0.14  
0.11  
0.05  
0.00  
0.00  
0.00  
66  
133  
266  
531  
1062  
2125  
4250  
5795  
4800.0  
300.0  
300  
2400.0  
150.0  
150  
1760.1  
110.0  
110  
1. The baud rate divisor is the value written to the SBR12–SBR0 bits.  
2. The receiver clock frequency is the MCLK frequency divided by the baud rate divisor.  
3. The transmitter clock frequency is the receiver clock frequency divided by 16.  
14.5.3 Transmitter  
A block diagram of the SCI transmitter is shown in Figure 14-4.  
14.5.3.1 Character Length  
The SCI transmitter can accommodate either 8-bit or 9-bit data characters. The state of the M bit in SCI  
control register 1 (SCCR1) determines the length of data characters. When transmitting 9-bit data, bit T8  
in SCI data register high (SCDRH) is the ninth bit (bit 8).  
14.5.3.2 Character Transmission  
During an SCI transmission, the transmit shift register shifts a frame out to the TXD pin. The SCI data  
registers (SCDRH and SCDRL) are the write-only buffers between the internal data bus and the transmit  
shift register.  
MC68HC812A4 Data Sheet, Rev. 7  
156  
Freescale Semiconductor  
Functional Description  
INTERNAL BUS  
MODULE  
CLOCK  
³ 16  
BAUD DIVIDER  
SCI DATA REGISTERS  
SBR12–SBR0  
11-BIT TRANSMIT SHIFT REGISTER  
H
8
7
6
5
4
3
2
1
0
L
TXD  
M
LOOP  
CONTROL  
TO  
RECEIVER  
T8  
PE  
PT  
PARITY  
GENERATION  
LOOPS  
RSRC  
TRANSMITTER CONTROL  
TDRE  
TIE  
TE  
SBK  
SCI INTERRUPT REQUEST  
SCI INTERRUPT REQUEST  
TC  
TCIE  
Figure 14-4. SCI Transmitter Block Diagram  
To initiate an SCI transmission:  
1. Enable the transmitter by writing a logic 1 to the transmitter enable bit, TE, in SCI control register  
2 (SCCR2).  
2. Clear the transmit data register empty flag, TDRE, by first reading SCI status register 1 (SCSR1)  
and then writing to SCI data register low (SCDRL). In 9-data-bit format, write the ninth bit to the T8  
bit in SCI data register high (SCDRH).  
3. Repeat step 2 for each subsequent transmission.  
Writing the TE bit from 0 to 1 automatically loads the transmit shift register with a preamble of 10 logic 1s  
(if M = 0) or 11 logic 1s (if M = 1). After the preamble shifts out, control logic transfers the data from the  
SCI data register into the transmit shift register. A logic 0 start bit automatically goes into the least  
significant bit position of the transmit shift register. A logic 1 stop bit goes into the most significant bit  
position.  
Hardware supports odd or even parity. When parity is enabled, the most significant bit (MSB) of the data  
character is the parity bit.  
The transmit data register empty flag, TDRE, in SCI status register 1 (SCSR1) becomes set when the SCI  
data register transfers a byte to the transmit shift register. The TDRE flag indicates that the SCI data  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
157  
Serial Communications Interface Module (SCI)  
register can accept new data from the internal data bus. If the transmit interrupt enable bit, TIE, in SCI  
control register 2 (SCCR2) is also set, the TDRE flag generates an SCI interrupt request.  
When the transmit shift register is not transmitting a frame, the TXD pin goes to the idle condition, logic 1.  
If at any time software clears the TE bit in SCI control register 2 (SCCR2), the transmitter and receiver  
relinquish control of the port I/O pins.  
If software clears TE while a transmission is in progress (TC = 0), the frame in the transmit shift register  
continues to shift out. Then the TXD pin reverts to being a general-purpose I/O pin even if there is data  
pending in the SCI data register. To avoid accidentally cutting off the last frame in a message, always wait  
for TDRE to go high after the last frame before clearing TE.  
To separate messages with preambles with minimum idle line time, use this sequence between  
messages:  
1. Write the last byte of the first message to SCDRH/L.  
2. Wait for the TDRE flag to go high, indicating the transfer of the last frame to the transmit shift  
register.  
3. Queue a preamble by clearing and then setting the TE bit.  
4. Write the first byte of the second message to SCDRH/L.  
When the SCI relinquishes the TXD pin, the PORTS and DDRS registers control the TXD pin.  
To force TXD high when turning off the transmitter, set bit 1 of the port S register (PORTS) and bit 1 of  
the port S data direction register (DDRS). The TXD pin goes high as soon as the SCI relinquishes it.  
14.5.3.3 Break Characters  
Writing a logic 1 to the send break bit, SBK, in SCI control register 2 (SCCR2) loads the transmit shift  
register with a break character. A break character contains all logic 0s and has no start, stop, or parity bit.  
Break character length depends on the M bit in SCI control register 1 (SCCR1). As long as SBK is at  
logic 1, transmitter logic continuously loads break characters into the transmit shift register. After software  
clears the SBK bit, the shift register finishes transmitting the last break character and then transmits at  
least one logic 1. The automatic logic 1 at the end of a break character guarantees the recognition of the  
start bit of the next frame.  
The SCI recognizes a break character when a start bit is followed by eight or nine logic 0 data bits and a  
logic 0 where the stop bit should be. Receiving a break character has these effects on SCI registers:  
Sets the framing error flag, FE  
Sets the receive data register full flag, RDRF  
Clears the SCI data registers, SCDRH/L  
May set the overrun flag, OR, noise flag, NF, parity error flag, PE, or the receiver active flag, RAF  
(see 14.6.4 SCI Status Register 1)  
14.5.3.4 Idle Characters  
An idle character contains all logic 1s and has no start, stop, or parity bit. Idle character length depends  
on the M bit in SCI control register 1 (SCCR1). The preamble is a synchronizing idle character that begins  
the first transmission initiated after writing the TE bit from 0 to 1.  
If the TE bit is cleared during a transmission, the TXD pin becomes idle after completion of the  
transmission in progress. Clearing and then setting the TE bit during a transmission queues an idle  
character to be sent after the frame currently being transmitted.  
MC68HC812A4 Data Sheet, Rev. 7  
158  
Freescale Semiconductor  
Functional Description  
NOTE  
When queueing an idle character, return the TE bit to logic 1 before the stop  
bit of the current frame shifts out to the TXD pin. Setting TE after the stop  
bit appears on TXD causes data previously written to the SCI data register  
to be lost.  
Toggle the TE bit for a queued idle character when the TDRE flag becomes  
set and immediately before writing the next byte to the SCI data register.  
14.5.4 Receiver  
A block diagram of the SCI receiver is shown in Figure 14-5.  
INTERNAL BUS  
SBR12–SBR0  
MODULE  
SCI DATA REGISTER  
BAUD DIVIDER  
CLOCK  
11-BIT RECEIVE SHIFT REGISTER  
DATA  
RECOVERY  
H
8
7
6
5
4
3
2
1
0
L
RXD  
FROM TXD PIN  
OR TRANSMITTER  
LOOP  
CONTROL  
RE  
RAF  
LOOPS  
FE  
RSRC  
M
RWU  
NF  
PE  
WAKE  
ILT  
WAKEUP  
LOGIC  
PE  
PT  
R8  
PARITY  
CHECKING  
IDLE  
SCI INTERRUPT REQUEST  
SCI INTERRUPT REQUEST  
ILIE  
RDRF  
OR  
RIE  
Figure 14-5. SCI Receiver Block Diagram  
14.5.4.1 Character Length  
The SCI receiver can accommodate either 8-bit or 9-bit data characters. The state of the M bit in SCI  
control register 1 (SCCR1) determines the length of data characters. When receiving 9-bit data, bit R8 in  
SCI data register high (SCDRH) is the ninth bit (bit 8).  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
159  
Serial Communications Interface Module (SCI)  
14.5.4.2 Character Reception  
During an SCI reception, the receive shift register shifts a frame in from the RXD pin. The SCI data register  
is the read-only buffer between the internal data bus and the receive shift register.  
After a complete frame shifts into the receive shift register, the data portion of the frame transfers to the  
SCI data register. The receive data register full flag, RDRF, in SCI status register 1 (SCSR1) becomes  
set, indicating that the received byte can be read. If the receive interrupt enable bit, RIE, in SCI control  
register 2 (SCCR2) is also set, the RDRF flag generates an interrupt request.  
14.5.4.3 Data Sampling  
The receiver samples the RXD pin at the RT clock rate. The RT clock is an internal signal with a frequency  
16 times the baud rate. To adjust for baud rate mismatch, the RT clock (see Figure 14-6) is  
resynchronized:  
After every start bit  
After the receiver detects a data bit change from logic 1 to logic 0 (after the majority of data bit  
samples at RT8, RT9, and RT10 returns a valid logic 1 and the majority of the next RT8, RT9, and  
RT10 samples returns a valid logic 0)  
To locate the start bit, data recovery logic does an asynchronous search for a logic 0 preceded by three  
logic 1s. When the falling edge of a possible start bit occurs, the RT clock begins to count to 16.  
START BIT  
LSB  
RXD  
SAMPLES  
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
START BIT  
QUALIFICATION  
START BIT  
VERIFICATION  
DATA  
SAMPLING  
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-6. Receiver Data Sampling  
To verify the start bit and to detect noise, data recovery logic takes samples at RT3, RT5, and RT7. Table  
14-4 summarizes the results of the start bit verification samples.  
Table 14-4. Start Bit Verification  
RT3, RT5, and RT7 Samples  
Start Bit Verification  
Noise Flag  
000  
001  
010  
011  
100  
101  
110  
111  
Yes  
Yes  
Yes  
No  
0
1
1
0
1
0
0
0
Yes  
No  
No  
No  
MC68HC812A4 Data Sheet, Rev. 7  
160  
Freescale Semiconductor  
Functional Description  
If start bit verification is not successful, the RT clock is reset and a new search for a start bit begins.  
To determine the value of a data bit and to detect noise, recovery logic takes samples at RT8, RT9, and  
RT10. Table 14-5 summarizes the results of the data bit samples.  
Table 14-5. Data Bit Recovery  
RT8, RT9, and RT10 Samples  
Data Bit Determination  
Noise Flag  
000  
001  
010  
011  
100  
101  
110  
111  
0
0
0
1
0
1
1
1
0
1
1
1
1
1
1
0
NOTE  
The RT8, RT9, and RT10 samples do not affect start bit verification. If any  
or all of the RT8, RT9, and RT10 start bit samples are logic 1s following a  
successful start bit verification, the noise flag (NF) is set and the receiver  
assumes that the bit is a start bit (logic 0).  
To verify a stop bit and to detect noise, recovery logic takes samples at RT8, RT9, and RT10. Table 14-6  
summarizes the results of the stop bit samples.  
Table 14-6. Stop Bit Recovery  
RT8, RT9, and RT10 Samples  
Framing Error Flag  
Noise Flag  
000  
001  
010  
011  
100  
101  
110  
111  
1
1
1
0
1
0
0
0
0
1
1
1
1
1
1
0
In Figure 14-7 the verification samples RT3 and RT5 determine that the first low detected was noise and  
not the beginning of a start bit. The RT clock is reset and the start bit search begins again. The noise flag  
is not set because the noise occurred before the start bit was found.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
161  
Serial Communications Interface Module (SCI)  
START BIT  
LSB  
RXD  
SAMPLES  
1
1
1
0
1
1
1
0
0
0
0
0
0
0
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-7. Start Bit Search Example 1  
In Figure 14-8 noise is perceived as the beginning of a start bit although the verification sample at RT3 is  
high. The RT3 sample sets the noise flag. Although the perceived bit time is misaligned, the data samples  
RT8, RT9, and RT10 are within the bit time and data recovery is successful.  
PERCEIVED START BIT  
ACTUAL START BIT  
LSB  
RXD  
SAMPLES  
1
1
1
1
1
0
1
0
0
0
0 0  
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-8. Start Bit Search Example 2  
In Figure 14-9 a large burst of noise is perceived as the beginning of a start bit, although the test sample  
at RT5 is high. The RT5 sample sets the noise flag. Although this is a worst-case misalignment of  
perceived bit time, the data samples RT8, RT9, and RT10 are within the bit time and data recovery is  
successful.  
PERCEIVED START BIT  
ACTUAL START BIT  
LSB  
RXD  
SAMPLES  
1
1
1
0
0
1
0
0
0
0
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-9. Start Bit Search Example 3  
MC68HC812A4 Data Sheet, Rev. 7  
162  
Freescale Semiconductor  
Functional Description  
Figure 14-10 shows the effect of noise early in the start bit time. Although this noise does not affect proper  
synchronization with the start bit time, it does set the noise flag.  
PERCEIVED AND ACTUAL START BIT  
0
LSB  
RXD  
SAMPLES  
1
1
1
1
1
1
1
1
1
0
1
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-10. Start Bit Search Example 4  
Figure 14-11 shows a burst of noise near the beginning of the start bit that resets the RT clock. The  
sample after the reset is low but is not preceded by three high samples that would qualify as a falling edge.  
Depending on the timing of the start bit search and on the data, the frame may be missed entirely or it  
may set the framing error flag.  
START BIT  
NO START BIT FOUND  
LSB  
RXD  
SAMPLES  
1
1
1
1
1
1
1
1
1
0
0
1
1
0
0
0
0
0
0
0
0
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-11. Start Bit Search Example 5  
In Figure 14-12 a noise burst makes the majority of data samples RT8, RT9, and RT10 high. This sets  
the noise flag but does not reset the RT clock. In start bits only, the RT8, RT9, and RT10 data samples  
are ignored.  
START BIT  
LSB  
RXD  
SAMPLES  
1
1
1
1
1
1
1
1
1
0
0
0
0
1
0
1
RT CLOCK  
RT CLOCK COUNT  
RESET RT CLOCK  
Figure 14-12. Start Bit Search Example 6  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
163  
Serial Communications Interface Module (SCI)  
14.5.4.4 Framing Errors  
If the data recovery logic does not detect a logic 1 where the stop bit should be in an incoming frame, it  
sets the framing error flag, FE, in SCI status register 1 (SCSR1). A break character also sets the FE flag  
because a break character has no stop bit. The FE flag is set at the same time that the RDRF flag is set.  
14.5.4.5 Baud Rate Tolerance  
A transmitting device may be operating at a baud rate below or above the receiver baud rate.  
Accumulated bit time misalignment can cause one of the three stop bit data samples to fall outside the  
actual stop bit. Then a noise error occurs. If more than one of the samples is outside the stop bit, a framing  
error occurs. In most applications, the baud rate tolerance is much more than the degree of misalignment  
that is likely to occur.  
As the receiver samples an incoming frame, it resynchronizes the RT clock on any valid falling edge within  
the frame. Resynchronization within frames corrects misalignments between transmitter bit times and  
receiver bit times.  
Slow Data Tolerance  
Figure 14-13 shows how much a slow received frame can be misaligned without causing a noise error or  
a framing error. The slow stop bit begins at RT8 instead of RT1 but arrives in time for the stop bit data  
samples at RT8, RT9, and RT10.  
MSB  
STOP  
RECEIVER  
RT CLOCK  
DATA  
SAMPLES  
Figure 14-13. Slow Data  
For an 8-bit data character, data sampling of the stop bit takes the receiver  
9 bit times × 16 RT cycles + 10 RT cycles = 154 RT cycles.  
With the misaligned character shown in Figure 14-13, the receiver counts 154 RT cycles at the point when  
the count of the transmitting device is 9 bit times × 16 RT cycles + 3 RT cycles = 147 RT cycles.  
The maximum percent difference between the receiver count and the transmitter count of a slow 8-bit data  
character with no errors is:  
154 147  
× 100 = 4.54%  
-------------------------  
154  
For a 9-bit data character, data sampling of the stop bit takes the receiver  
10 bit times × 16 RT cycles + 10 RT cycles = 170 RT cycles.  
With the misaligned character shown in Figure 14-13, the receiver counts 170 RT cycles at the point when  
the count of the transmitting device is: 10 bit times × 16 RT cycles + 3 RT cycles = 163 RT cycles.  
The maximum percent difference between the receiver count and the transmitter count of a slow 9-bit  
character with no errors is:  
170 163  
× 100 = 4.12%  
-------------------------  
170  
MC68HC812A4 Data Sheet, Rev. 7  
164  
Freescale Semiconductor  
Functional Description  
Fast Data Tolerance  
Figure 14-14 shows how much a fast received frame can be misaligned without causing a noise error or  
a framing error. The fast stop bit ends at RT10 instead of RT16 but is still sampled at RT8, RT9, and RT10.  
STOP  
IDLE OR NEXT FRAME  
RECEIVER  
RT CLOCK  
DATA  
SAMPLES  
Figure 14-14. Fast Data  
For an 8-bit data character, data sampling of the stop bit takes the receiver  
9 bit times × 16 RT cycles + 10 RT cycles = 154 RT cycles.  
With the misaligned character shown in Figure 14-14, the receiver counts 154 RT cycles at the point when  
the count of the transmitting device is 10 bit times × 16 RT cycles = 160 RT cycles.  
The maximum percent difference between the receiver count and the transmitter count of a fast 8-bit  
character with no errors is:  
154 160  
× 100 = 3.90%  
-------------------------  
154  
For a 9-bit data character, data sampling of the stop bit takes the receiver  
10 bit times × 16 RT cycles + 10 RT cycles = 170 RT cycles.  
With the misaligned character shown in Figure 14-14, the receiver counts 170 RT cycles at the point when  
the count of the transmitting device is: 11 bit times × 16 RT cycles = 176 RT cycles.  
The maximum percent difference between the receiver count and the transmitter count of a fast 9-bit  
character with no errors is:  
170 176  
× 100 = 3.53%  
-------------------------  
170  
14.5.4.6 Receiver Wakeup  
So that the SCI can ignore transmissions intended only for other receivers in multiple-receiver systems,  
the receiver can be put into a standby state. Setting the receiver wakeup bit, RWU, in SCI control register  
2 (SCCR2) puts the receiver into a standby state during which receiver interrupts are disabled.  
The transmitting device can address messages to selected receivers by including addressing information  
in the initial frame or frames of each message.  
The WAKE bit in SCI control register 1 (SCCR1) determines how the SCI is brought out of the standby  
state to process an incoming message. The WAKE bit enables either idle line wakeup or address mark  
wakeup:  
Idle input line wakeup (WAKE = 0) — In this wakeup method, an idle condition on the RXD pin  
clears the RWU bit and wakes up the SCI. The initial frame or frames of every message contain  
addressing information. All receivers evaluate the addressing information, and receivers for which  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
165  
Serial Communications Interface Module (SCI)  
the message is addressed process the frames that follow. Any receiver for which a message is not  
addressed can set its RWU bit and return to the standby state. The RWU bit remains set and the  
receiver remains on standby until another idle character appears on the RXD pin.  
Idle line wakeup requires that messages be separated by at least one idle character and that no  
message contains idle characters.  
The idle character that wakes a receiver does not set the receiver idle flag, IDLE, or the receive  
data register full flag, RDRF.  
The idle line type bit, ILT, determines whether the receiver begins counting logic 1s as idle  
character bits after the start bit or after the stop bit. ILT is in SCI control register 1 (SCCR1).  
Address mark wakeup (WAKE = 1) — In this wakeup method, a logic 1 in the most significant bit  
(MSB) position of a frame clears the RWU bit and wakes up the SCI. The logic 1 in the MSB  
position marks a frame as an address frame that contains addressing information. All receivers  
evaluate the addressing information, and the receivers for which the message is addressed  
process the frames that follow. Any receiver for which a message is not addressed can set its RWU  
bit and return to the standby state. The RWU bit remains set and the receiver remains on standby  
until another address frame appears on the RXD pin.  
The logic 1 MSB of an address frame clears the receiver’s RWU bit before the stop bit is received  
and sets the RDRF flag.  
Address mark wakeup allows messages to contain idle characters but requires that the MSB be  
reserved for use in address frames.  
NOTE  
With the WAKE bit clear, setting the RWU bit after the RXD pin has been  
idle can cause the receiver to wake up immediately.  
14.5.5 Single-Wire Operation  
Normally, the SCI uses two pins for transmitting and receiving. In single-wire operation, the RXD pin is  
disconnected from the SCI and is available as a general-purpose I/O pin. The SCI uses the TXD pin for  
both receiving and transmitting.  
Setting the data direction bit for the TXD pin configures TXD as the output for transmitted data. Clearing  
the data direction bit configures TXD as the input for received data.  
TRANSMITTER  
TXD  
DDRS BIT = 1  
WOMS  
GENERAL-  
PURPOSE I/O  
RECEIVER  
RXD  
TXD  
TRANSMITTER  
NC  
DDRS BIT = 0  
GENERAL-  
RECEIVER  
RXD  
PURPOSE I/O  
Figure 14-15. Single-Wire Operation (LOOPS = 1 and RSRC = 1)  
MC68HC812A4 Data Sheet, Rev. 7  
166  
Freescale Semiconductor  
Functional Description  
Enable single-wire operation by setting the LOOPS bit and the receiver source bit, RSRC, in SCI control  
register 1 (SCCR1). Setting the LOOPS bit disables the path from the RXD pin to the receiver. Setting the  
RSRC bit connects the receiver input to the output of the TXD pin driver. Both the transmitter and receiver  
must be enabled (TE = 1 and RE = 1).  
The wired-OR mode select bit, WOMS, configures the TXD pin for full CMOS drive or for open-drain drive.  
WOMS controls the TXD pin in both normal operation and in single-wire operation. When WOMS is set,  
the data direction bit for the TXD pin does not have to be cleared for TXD to receive data.  
14.5.6 Loop Operation  
In loop operation, the transmitter output goes to the receiver input. The RXD pin is disconnected from the  
SCI and is available as a general-purpose I/O pin.  
Setting the data direction bit for the TXD pin connects the transmitter output to the TXD pin. Clearing the  
data direction bit disconnects the transmitter output from the TXD pin.  
TRANSMITTER  
TXD  
DDRS BIT = 1  
WOMS  
GENERAL-  
RECEIVER  
RXD  
TXD  
PURPOSE I/O  
H
TRANSMITTER  
DDRS BIT = 0  
WOMS  
GENERAL-  
RECEIVER  
RXD  
PURPOSE I/O  
Figure 14-16. Loop Operation (LOOP = 1 and RSRC = 0)  
Enable loop operation by setting the LOOPS bit and clearing the RSRC bit in SCI control register 1  
(SCCR1). Setting the LOOPS bit disables the path from the RXD pin to the receiver. Clearing the RSRC  
bit connects the transmitter output to the receiver input. Both the transmitter and receiver must be enabled  
(TE = 1 and RE = 1).  
The wired-OR mode select bit, WOMS, configures the TXD pin for full CMOS drive or for open-drain drive.  
WOMS controls the TXD pin in both normal operation and in loop operation.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
167  
Serial Communications Interface Module (SCI)  
14.6 Register Descriptions and Reset Initialization  
This section provides register descriptions and reset initialization.  
14.6.1 SCI Baud Rate Registers  
SCI0: $00C0  
SCI1: $00C8  
Bit 7  
BTST  
0
6
BSPL  
0
5
BRLD  
0
4
SBR12  
0
3
SBR11  
0
2
SBR10  
0
1
SBR9  
0
Bit 0  
SBR8  
0
Read:  
Write:  
Reset:  
Figure 14-17. SCI Baud Rate Register High (SC0BDH or SC1BDH)  
SCI0: $00C1  
SCI1: $00C9  
Bit 7  
SBR7  
0
6
SBR6  
0
5
SBR5  
0
4
SBR4  
0
3
SBR3  
0
2
SBR2  
1
1
SBR1  
0
Bit 0  
SBR0  
0
Read:  
Write:  
Reset:  
Figure 14-18. SCI Baud Rate Register Low (SC0BDL or SC1BDL)  
Read: Anytime  
Write: SBR[12:0] anytime; BTST, BSPL, and BRLD only in special modes  
BTST — Reserved for test function  
BSPL — Reserved for test function  
BRLD — Reserved for test function  
SBR[12:0] — SCI Baud Rate Bits  
The value written to SBR[12:0] determines the baud rate of the SCI. The new value takes effect when  
the low order byte is written. The formula for calculating baud rate is:  
MCLK  
SCI baud rate = ---------------------  
16 × BR  
BR = value written to SBR[12:0], a value from 1 to 8191  
NOTE  
The baud rate generator is disabled until the TE bit or the RE bit is set for  
the first time after reset. The baud rate generator is disabled when BR = 0.  
MC68HC812A4 Data Sheet, Rev. 7  
168  
Freescale Semiconductor  
Register Descriptions and Reset Initialization  
14.6.2 SCI Control Register 1  
SCI0: $00C2  
SCI1: $00CA  
Bit 7  
LOOPS  
0
6
WOMS  
0
5
RSRC  
0
4
M
0
3
WAKE  
0
2
ILT  
0
1
PE  
0
Bit 0  
PT  
0
Read:  
Write:  
Reset:  
Figure 14-19. SCI Control Register 1 (SC0CR1 or SC1CR1)  
Read: Anytime  
Write: Anytime  
LOOPS — Loop Select Bit  
LOOPS enables loop operation. In loop operation the RXD pin is disconnected from the SCI, and the  
transmitter output goes into the receiver input. Both the transmitter and the receiver must be enabled  
to use the loop function.  
1 = Loop operation enabled  
0 = Normal operation enabled  
The receiver input is determined by the RSRC bit. The transmitter output is controlled by the  
associated DDRS bit.  
If the data direction bit for the TXD pin is set and LOOPS = 1, the transmitter output appears on the  
TXD pin. If the DDRS bit is clear and LOOPS = 1, the TXD pin is idle (high) if RSRC = 0 and  
high-impedance if RSRC = 1. See Table 14-7.  
WOMS — Wired-OR Mode Select Bit  
WOMS configures the TXD and RXD pins for open-drain operation. WOMS allows TXD pins to be tied  
together in a multiple-transmitter system. Then the TXD pins of non-active transmitters follow the logic  
level of an active 1. WOMS also affects the TXD and RXD pins when they are general-purpose outputs.  
External pullup resistors are necessary on open-drain outputs.  
1 = TXD and RXD pins, open-drain when outputs  
0 = TXD and RXD pins, full CMOS drive capability  
RSRC — Receiver Source Bit  
When LOOPS = 1, the RSRC bit determines the internal feedback path for the receiver.  
1 = Receiver input connected to TXD pin  
0 = Receiver input internally connected to transmitter output  
Table 14-7. Loop Mode Functions  
DDRSx(1)  
LOOPS  
RSRC  
WOMS  
Function of TXD Pin  
0
X
X
X
Normal operation  
Loop mode; transmitter output connected to receiver input  
TXD pin disconnected  
1
1
1
0
0
0
0
1
1
X
0
1
Loop mode; transmitter output connected to receiver input  
TXD is CMOS output  
Loop mode; transmitter output connected to receiver input  
TXD is open-drain output  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
169  
Serial Communications Interface Module (SCI)  
Table 14-7. Loop Mode Functions (Continued)  
DDRSx(1)  
LOOPS  
RSRC  
WOMS  
Function of TXD Pin  
Single-wire mode; transmitter output disconnected  
TXD is high-impedance receiver input  
1
1
1
1
1
1
0
1
1
x
0
1
Single-wire mode; TXD pin connected to receiver input  
Single wire mode; TXD pin connected to receiver input  
TXD is open-drain for receiving and transmitting  
1. DDRSx means the data direction bit of the TXD pin.  
M — Mode Bit  
M determines whether data characters are eight or nine bits long.  
1 = One start bit, nine data bits, one stop bit  
0 = One start bit, eight data bits, one stop bit  
WAKE — Wakeup Bit  
WAKE determines which condition wakes up the SCI: a logic 1 (address mark) in the most significant  
bit position of a received data character or an idle condition on the RXD pin.  
1 = Address mark wakeup  
0 = Idle line wakeup  
ILT — Idle Line Type Bit  
ILT determines when the receiver starts counting logic 1s as idle character bits. The counting begins  
either after the start bit or after the stop bit. If the count begins after the start bit, then a string of logic  
1s preceding the stop bit may cause false recognition of an idle character. Beginning the count after  
the stop bit avoids false idle character recognition, but requires properly synchronized transmissions.  
1 = Idle character bit count begins after stop bit.  
0 = Idle character bit count begins after start bit.  
PE — Parity Enable Bit  
PE enables the parity function. When enabled, the parity function inserts a parity bit in the most  
significant bit position.  
1 = Parity function enabled  
0 = Parity function disabled  
PT — Parity Type Bit  
PT determines whether the SCI generates and checks for even parity or odd parity. With even parity,  
an even number of 1s clears the parity bit and an odd number of 1s sets the parity bit. With odd parity,  
an odd number of 1s clears the parity bit and an even number of 1s sets the parity bit.  
1 = Odd parity  
0 = Even parity  
MC68HC812A4 Data Sheet, Rev. 7  
170  
Freescale Semiconductor  
Register Descriptions and Reset Initialization  
14.6.3 SCI Control Register 2  
SCI0: $00C3  
SCI1: $00CB  
Bit 7  
TIE  
0
6
TCIE  
0
5
RIE  
0
4
ILIE  
0
3
TE  
0
2
RE  
0
1
RWU  
0
Bit 0  
SBK  
0
Read:  
Write:  
Reset:  
Figure 14-20. SCI Control Register 2 (SC0CR2 or SC1CR2)  
Read: Anytime  
Write: Anytime  
TIE — Transmitter Interrupt Enable Bit  
TIE enables the transmit data register empty flag, TDRE, to generate interrupt requests.  
1 = TDRE interrupt requests enabled  
0 = TDRE interrupt requests disabled  
TCIE — Transmission Complete Interrupt Enable Bit  
TCIE enables the transmission complete flag, TC, to generate interrupt requests.  
1 = TC interrupt requests enabled  
0 = TC interrupt requests disabled  
RIE — Receiver Interrupt Enable Bit  
RIE enables the receive data register full flag, RDRF, and the overrun flag, OR, to generate interrupt  
requests.  
1 = RDRF and OR interrupt requests enabled  
0 = RDRF and OR interrupt requests disabled  
ILIE — Idle Line Interrupt Enable Bit  
ILIE enables the idle line flag, IDLE, to generate interrupt requests.  
1 = IDLE interrupt requests enabled  
0 = IDLE interrupt requests disabled  
TE — Transmitter Enable Bit  
TE enables the SCI transmitter and configures the TXD pin as the SCI transmitter output. The TE bit  
can be used to queue an idle preamble.  
1 = Transmitter enabled  
0 = Transmitter disabled  
RE — Receiver Enable Bit  
RE enables the SCI receiver.  
1 = Receiver enabled  
0 = Receiver disabled  
RWU — Receiver Wakeup Bit  
1 = Standby state  
0 = Normal operation  
RWU enables the wakeup function and inhibits further receiver interrupt requests. Normally, hardware  
wakes the receiver by automatically clearing RWU.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
171  
Serial Communications Interface Module (SCI)  
SBK — Send Break Bit  
Toggling SBK sends one break character (10 or 11 logic 0s). As long as SBK is set, the transmitter  
sends logic 0s.  
1 = Transmit break characters  
0 = No break characters  
14.6.4 SCI Status Register 1  
SCI0: $00C4  
SCI1: $00CC  
Bit 7  
6
5
4
3
2
1
Bit 0  
PF  
Read:  
Write:  
Reset:  
TDRE  
TC  
RDRF  
IDLE  
OR  
NF  
FE  
1
1
0
0
0
0
0
0
= Unimplemented  
Figure 14-21. SCI Status Register 1 (SC0SR1 or SC1SR1)  
Read: Anytime  
Write: Has no meaning or effect  
TDRE — Transmit Data Register Empty Flag  
TDRE is set when the transmit shift register receives a byte from the SCI data register. Clear TDRE  
by reading SCI status register 1 with TDRE set and then writing to the low byte of the SCI data register.  
1 = Transmit data register empty  
0 = Transmit date register not empty  
TC — Transmission Complete Flag  
TC is set when the TDRE flag is set and no data, preamble, or break character is being transmitted.  
When TC is set, the TXD pin becomes idle (logic 1). Clear TC by reading SCI status register 1 with TC  
set and then writing to the low byte of the SCI data register. TC clears automatically when a break,  
preamble, or data is queued and ready to be sent.  
1 = Transmission complete  
0 = Transmission in progress  
RDRF — Receive Data Register Full Flag  
RDRF is set when the data in the receive shift register transfers to the SCI data register. Clear RDRF  
by reading SCI status register 1 with RDRF set and then reading the low byte of the SCI data register.  
1 = Receive data register full  
0 = Data not available in SCI data register  
IDLE — Idle Line Flag  
IDLE is set when 10 consecutive logic 1s (if M = 0) or 11 consecutive logic 1s (if M = 1) appear on the  
receiver input. Clear IDLE by reading SCI status register 1 with IDLE set and then writing to the low  
byte of the SCI data register. Once IDLE is cleared, a valid frame must again set the RDRF flag before  
an idle condition can set the IDLE flag.  
1 = Receiver input has become idle  
0 = Receiver input is either active now or has never become active since the IDLE flag was last  
cleared  
NOTE  
When the receiver wakeup bit (RWU) is set, an idle line condition does not  
set the IDLE flag.  
MC68HC812A4 Data Sheet, Rev. 7  
172  
Freescale Semiconductor  
Register Descriptions and Reset Initialization  
OR — Overrun Flag  
OR is set when software fails to read the SCI data register before the receive shift register receives  
the next frame. The data in the shift register is lost, but the data already in the SCI data registers is not  
affected. Clear OR by reading SCI status register 1 with OR set and then reading the low byte of the  
SCI data register.  
1 = Overrun  
0 = No overrun  
NF — Noise Flag  
NF is set when the SCI detects noise on the receiver input. NF is set during the same cycle as the  
RDRF flag but does not get set in the case of an overrun. Clear NF by reading SCI status register 1  
and then reading the low byte of the SCI data register.  
1 = Noise  
0 = No noise  
FE — Framing Error Flag  
FE is set when a logic 0 is accepted as the stop bit. FE is set during the same cycle as the RDRF flag  
but does not get set in the case of an overrun. FE inhibits further data reception until it is cleared. Clear  
FE by reading SCI status register 1 with FE set and then reading the low byte of the SCI data register.  
1 = Framing error  
0 = No framing error  
PF — Parity Error Flag  
PF is set when the parity enable bit, PE, is set and the parity of the received data does not match its  
parity bit. Clear PF by reading SCI status register 1 and then reading the low byte of the SCI data  
register.  
1 = Parity error  
0 = No parity error  
14.6.5 SCI Status Register 2  
SCI0: $00C5  
SCI1: $00CD  
Bit 7  
0
6
0
5
0
4
0
3
0
2
0
1
0
Bit 0  
RAF  
Read:  
Write:  
Reset:  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 14-22. SCI Status Register 2 (SC0SR2 or SC1SR2)  
Read: Anytime  
Write: Has no meaning or effect  
RAF — Receiver Active Flag  
RAF is set when the receiver detects a logic 0 during the RT1 time period of the start bit search. RAF  
is cleared when the receiver detects false start bits (usually from noise or baud rate mismatch) or when  
the receiver detects an idle character.  
1 = Reception in progress  
0 = No reception in progress  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
173  
Serial Communications Interface Module (SCI)  
14.6.6 SCI Data Registers  
SCI0: $00C6  
SCI1: $00CE  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
R8  
0
0
0
0
0
0
T8  
Unaffected by reset  
= Unimplemented  
Figure 14-23. SCI Data Register High (SC0DRH or SC1DRH)  
SCI0: $00C7  
SCI1: $00CF  
Bit 7  
R7  
T7  
6
5
4
3
2
1
Bit 0  
R0  
Read:  
Write:  
Reset:  
R6  
T6  
R5  
T5  
R4  
T4  
R3  
T3  
R2  
T2  
R1  
T1  
T0  
Unaffected by reset  
Figure 14-24. SCI Data Register Low (SC0DRL or SC1DRL)  
Read: Anytime; reading accesses receive data register  
Write: Anytime; writing accesses transmit data register; writing to R8 has no effect  
R8 — Received Bit 8  
R8 is the ninth data bit received when the SCI is configured for 9-bit data format (M = 1).  
T8 — Transmitted Bit 8  
T8 is the ninth data bit transmitted when the SCI is configured for 9-bit data format (M = 1).  
R7–R0 — Received Bits 7–0  
T7–T0 — Transmitted Bits 7–0  
NOTE  
If the value of T8 is the same as in the previous transmission, T8 does not  
have to be rewritten. The same value is transmitted until T8 is rewritten.  
In 8-bit data format, only SCI data register low (SCDRL) needs to be  
accessed.  
When transmitting in 9-bit data format and using 8-bit write instructions,  
write first to SCI data register high (SCDRH).  
MC68HC812A4 Data Sheet, Rev. 7  
174  
Freescale Semiconductor  
External Pin Descriptions  
14.7 External Pin Descriptions  
This section provides a description of TXD and RXD, the SCI’s two external pins.  
14.7.1 TXD Pin  
TXD is the SCI transmitter pin. TXD is available for general-purpose I/O when it is not configured for  
transmitter operation.  
14.7.2 RXD Pin  
RXD is the SCI receiver pin. RXD is available for general-purpose I/O when it is not configured for receiver  
operation.  
14.8 Modes of Operation  
The SCI functions the same in normal, special, and emulation modes.  
14.9 Low-Power Options  
This section provides a description of the three low-power modes:  
Run mode  
Wait mode  
Stop mode  
14.9.1 Run Mode  
Clearing the transmitter enable or receiver enable bits (TE or RE) in SCI control register 2 (SCCR2)  
reduces power consumption in run mode. SCI registers are still accessible when TE or RE is cleared, but  
clocks to the core of the SCI are disabled.  
14.9.2 Wait Mode  
The SCI remains active in wait mode. Any enabled interrupt request from the SCI can bring the MCU out  
of wait mode.  
If SCI functions are not required during wait mode, reduce power consumption by disabling the SCI before  
executing the WAIT instruction.  
14.9.3 Stop Mode  
For reduced power consumption, the SCI is inactive in stop mode. The STOP instruction does not affect  
SCI register states. SCI operation resumes after an external interrupt.  
Exiting stop mode by reset aborts any transmission or reception in progress and resets the SCI.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
175  
Serial Communications Interface Module (SCI)  
14.10 Interrupt Sources  
Table 14-8. SCI Interrupt Sources  
Vector  
Address  
Interrupt  
Source  
Local  
Enable  
CCR  
Mask  
Flag  
SCI0  
SCI1  
Transmit data register empty  
Transmission complete  
Receive data register full  
Receiver overrun  
TDRE  
TC  
TIE  
I bit  
I bit  
TCIE  
$FFD6,  
$FFD7  
$FFD4,  
$FFD5  
RDRF  
OR  
RIE  
ILIE  
I bit  
I bit  
Receiver idle  
IDLE  
14.11 General-Purpose I/O Ports  
Port S shares its pins with the multiple serial interface (MSI). In all modes, port S pins PS7–PS0 are  
available for either general-purpose I/O or for SCI and SPI functions. See Chapter 13 Multiple Serial  
Interface (MSI).  
14.12 Serial Character Transmission Using the SCI  
Code is intended to use SCI1 to serially transmit characters using polling to the LCD display on the  
UDLP1 board: when the transmission data register is empty a flag will get set, which is telling us that  
SC1DR is ready so we can write another byte. The transmission is performed at a baud rate of 9600.  
Since the SCI1 is only being used for transmit data, the data register will not be used bidirectionally for  
received data.  
14.12.1 Equipment  
For this exercise, use the M68HC812A4EVB emulation board.  
MC68HC812A4 Data Sheet, Rev. 7  
176  
Freescale Semiconductor  
Serial Character Transmission Using the SCI  
14.12.2 Code Listing  
NOTE  
A comment line is delimited by a semicolon. If there is no code before  
comment, a semicolon (;) must be placed in the first column to avoid  
assembly errors.  
INCLUDE 'EQUATES.ASM'  
; Equates for registers  
; User Variables  
; Bit Equates  
; ----------------------------------------------------------------------  
MAIN PROGRAM  
; ----------------------------------------------------------------------  
;
ORG  
$7000  
; 16K On-Board RAM, User code data area,  
; start main program at $4000  
;
MAIN:  
BSR  
BSR  
BRA  
INIT  
TRANS  
DONE  
; Subroutine to Initialize SCI0 registers  
; Subroutine to start transmission  
; Always branch to DONE, convenient for breakpoint  
DONE:  
; ----------------------------------------------------------------------  
SUBROUTINE INIT:  
; ----------------------------------------------------------------------  
;
INIT:  
TPA  
ORAA  
TAP  
; Transfer CCR to A accumulator  
; ORed A with #$10 to Set I bit  
; Transfer A to CCR  
#$10  
MOVB  
MOVB  
#$34,SC1BDL  
#$00,SC1CR1  
; Set BAUD =9600, in SCI1 Baud Rate Reg.  
; Initialize for 8-bit Data format,  
; Loop Mode and parity disabled,(SC1CR1)  
;
MOVB  
#$08,SC1CR2  
; Set for No Ints, and Transmitter enabled(SC1CR2)  
LDAA  
STD  
SC1SR1  
SC1DRH  
; 1st step to clear TDRE flag: Read SC1SR1  
; 2nd step to clear TDRE flag: Write SC1DR register  
LDX  
RTS  
#DATA  
; Use X as a pointer to DATA.  
; Return from subroutine  
; ----------------------------------------------------------------------  
TRANSMIT SUBROUTINE  
;
; ----------------------------------------------------------------------  
TRANS: BRCLR SC1SR1,#$80, TRANS ; Wait for TDRE flag  
MOVB  
CPX  
BNE  
RTS  
1,X+,SC1DRL  
#EOT  
TRANS  
; Transmit character, increment X pointer  
; Detect if last character has been transmitted  
; If last char. not equal to "eot", Branch to TRANS  
; else Transmission complete, Return from Subroutine  
; ----------------------------------------------------------------------  
TABLE : DATA TO BE TRANSMITTED  
; ----------------------------------------------------------------------  
;
DATA:  
DC.B  
DC.B  
DC.B  
DC.B  
DC.B  
'Freescale HC12 Banner - June, 1999'  
$0D,$0A  
; Return (cr) ,Line Feed (LF)  
'Scottsdale, Arizona'  
$0D,$0A  
$04  
; Return (cr) ,Line Feed (LF)  
EOT:  
; Byte used to test end of data = EOT  
; End of program  
END  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
177  
Serial Communications Interface Module (SCI)  
MC68HC812A4 Data Sheet, Rev. 7  
178  
Freescale Semiconductor  
Chapter 15  
Serial Peripheral Interface (SPI)  
15.1 Introduction  
The serial peripheral interface (SPI) allows full-duplex, synchronous, serial communications with  
peripheral devices.  
15.2 Features  
Features of the SPI include:  
Full-duplex operation  
Master mode and slave mode  
Programmable slave-select output option  
Programmable bidirectional data pin option  
Two flags with interrupt-generation capability:  
Transmission complete  
Mode fault  
Write collision detection  
Read data buffer  
Serial clock with programmable polarity and phase  
Reduced drive control for lower power consumption  
Programmable open-drain output option  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
179  
Serial Peripheral Interface (SPI)  
15.3 Block Diagram  
MSTR  
SPR2  
BAUD  
SPI DATA REGISTER  
(WRITE)  
RATE  
SELECT  
SPR1  
CLOCK  
LOGIC  
SPR0  
CPHA  
CPOL  
SHIFT REGISTER  
SPI DATA REGISTER  
(READ)  
CLOCK  
DIVIDER  
PUPS  
RDS  
P-CLOCK  
SWOM  
SSOE  
SHIFT  
CONTROL  
LOGIC  
LSBF  
SPE  
MSTR  
SPC0  
SPI  
CONTROL  
PIN CONTROL LOGIC  
MODF  
WCOL  
SPIF  
PORT S DATA  
DIRECTION REGISTER  
PORT S DATA REGISTER  
6 5 4  
INTERRUPT  
REQUEST  
7
SPIE  
MISO OR SISO  
MOSI OR MOMI  
SCK  
SS  
Figure 15-1. SPI Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
180  
Freescale Semiconductor  
Register Map  
15.4 Register Map  
NOTE  
The register block can be mapped to any 2-Kbyte boundary within the  
standard 64-Kbyte address space. The register block occupies the first 512  
bytes of the 2-Kbyte block. This register map shows default addressing  
after reset.  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
CPHA  
1
1
Bit 0  
Read:  
SPI 0 Control  
SPIE  
SPE  
SWOM  
MSTR  
CPOL  
0
SSOE  
LSBF  
0
$00D0 Register 1 (SP0CR1) Write:  
See page 186.  
Reset:  
0
0
0
0
0
0
0
0
0
0
Read:  
SPI 0 Control  
PUPS  
RDS  
0
SPC0  
0
$00D1 Register 2 (SP0CR2) Write:  
See page 187.  
Reset:  
0
0
0
0
0
0
0
0
1
0
0
Read:  
SPI Baud Rate  
Register (SP0BR) Write:  
SPR2  
SPR1  
SPR0  
$00D2  
$00D3  
$00D5  
$00D6  
$00D7  
See page 188.  
Reset:  
0
0
0
0
0
0
0
0
0
0
0
0
0
Read:  
SPIF  
WCOL  
MODF  
SPI Status Register  
(SP0SR) Write:  
See page 189.  
Reset:  
0
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Read:  
SPI Data Register  
Bit 7  
(SP0DR) Write:  
See page 190.  
Reset:  
Unaffected by reset  
PS4 PS3  
Unaffected by reset  
DDRS7 DDRS6 DDRS5 DDRS4 DDRS3 DDRS2 DDRS1 DDRS0  
Read:  
Port S Data Register  
PS7  
PS6  
PS5  
PS2  
PS1  
PS0  
(PORTS) Write:  
See page 147.  
Reset:  
Read:  
Port S Data Direction  
Register (DDRS) Write:  
See page 148.  
Reset:  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 15-2. SPI Register Map  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
181  
Serial Peripheral Interface (SPI)  
15.5 Functional Description  
The SPI allows full-duplex, synchronous, serial communication between the MCU and peripheral devices,  
including other MCUs. In master mode, the SPI generates the synchronizing clock and initiates  
transmissions. In slave mode, the SPI depends on a master peripheral to start and synchronize  
transmissions.  
15.5.1 Master Mode  
The SPI operates in master mode when the master mode bit, MSTR, is set.  
NOTE  
Configure SPI modules as master or slave before enabling them. Enable  
the master SPI before enabling the slave SPI. Disable the slave SPI before  
disabling the master SPI.  
Only a master SPI module can initiate transmissions. Begin the transmission from a master SPI module  
by writing to the SPI data register. If the shift register is empty, the byte immediately transfers to the shift  
register. The byte begins shifting out on the master out, slave in pin (MOSI) under the control of the serial  
clock. See Figure 15-3.  
As the byte shifts out on the MOSI pin, a byte shifts in from the slave on the master in, slave out pin (MISO)  
pin. On the eighth serial clock cycle, the transmission ends and sets the SPI flag, SPIF. At the same time  
that SPIF becomes set, the byte from the slave transfers from the shift register to the SPI data register.  
The byte remains in a read buffer until replaced by the next byte from the slave.  
MASTER MCU  
SLAVE MCU  
MISO  
MOSI  
MISO  
MOSI  
SHIFT REGISTER  
SHIFT REGISTER  
SCK  
SS  
SCK  
SS  
CLOCK  
DIVIDER  
VDD  
Figure 15-3. Full-Duplex Master/Slave Connections  
15.5.2 Slave Mode  
The SPI operates in slave mode when MSTR is clear. In slave mode, the SCK pin is the input for the serial  
clock from the master.  
NOTE  
Before a transmission occurs, the SS pin of the slave SPI must be at logic 0.  
The slave SS pin must remain low until the transmission is complete.  
A transmission begins when initiated by a master SPI. The byte from the master SPI begins shifting in on  
the slave MOSI pin under the control of the master serial clock.  
As the byte shifts in on the MOSI pin, a byte shifts out on the MISO pin to the master shift register. On the  
eighth serial clock cycle, the transmission ends and sets the SPI flag, SPIF. At the same time that SPIF  
MC68HC812A4 Data Sheet, Rev. 7  
182  
Freescale Semiconductor  
Functional Description  
becomes set, the byte from the master transfers to the SPI data register. The byte remains in a read buffer  
until replaced by the next byte from the master.  
15.5.3 Baud Rate Generation  
A clock divider in the SPI produces eight divided P-clock signals. The P-clock divisors are 2, 4, 8, 16, 32,  
64, 128, and 256. The SPR[2:1:0] bits select one of the divided P-clock signals to control the rate of the  
shift register. Through the SCK pin, the selected clock signal also controls the rate of the shift register of  
the slave SPI or other slave peripheral.  
The clock divider is active only in master mode and only when a transmission is taking place. Otherwise,  
the divider is disabled to save power.  
15.5.4 Clock Phase and Polarity  
The clock phase and clock polarity bits, CPHA and CPOL, can select any of four combinations of serial  
clock phase and polarity. The CPHA bit determines whether a falling SS edge or the first SCK edge begins  
the transmission. The CPOL bit determines whether SCK is active-high or active-low.  
NOTE  
To transmit between SPI modules, both modules must have identical CPHA  
and CPOL values.  
When CPHA = 0, a falling SS edge signals the slave to begin transmission. The capture strobe for the  
first bit occurs on the first serial clock edge. Therefore, the slave must begin driving its data before the  
first serial clock edge. After transmission of all eight bits, the slave SS pin must toggle from low to high to  
low again to begin another transmission. This format may be preferable in systems having more than one  
slave driving the master MISO line.  
BEGIN  
TRANSFER  
END  
TRANSFER  
tL  
tT  
SCK CYCLES  
1
2
3
4
5
6
7
8
SCK  
CPOL = 0  
SCK  
CPOL = 1  
MOSI  
FROM MASTER  
MISO  
FROM SLAVE  
SS  
TO SLAVE  
CAPTURE STROBE  
tI  
MSB FIRST (LSBF = 0)  
LSB FIRST (LSBF = 1)  
MSB  
LSB  
BIT 6  
BIT 1  
BIT 5  
BIT 2  
BIT 4  
BIT 3  
BIT 3  
BIT 4  
BIT 2  
BIT 5  
BIT 1  
BIT 6  
LSB  
MSB  
MINIMUM tL, tT, and tI = 1/2 SCK CYCLE  
Figure 15-4. Transmission Format 0 (CPHA = 0)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
183  
Serial Peripheral Interface (SPI)  
MISO/MOSI  
MASTER SS  
BYTE 1  
BYTE 2  
BYTE 3  
SLAVE SS  
CPHA = 0  
Figure 15-5. Slave SS Toggling When CPHA = 0  
When CPHA = 1, the master begins driving its MOSI pin and the slave begins driving its MISO pin on the  
first serial clock edge. The SS pin can remain low between transmissions. This format may be preferable  
in systems having only one slave driving the master MISO line.  
NOTE  
The slave SCK pin must be in the proper idle state before the slave is  
enabled.  
BEGIN  
TRANSFER  
END  
TRANSFER  
tL  
tT  
1
2
3
4
5
6
7
8
SCK CYCLES  
SCK  
CPOL = 0  
SCK  
CPOL = 1  
MOSI  
FROM MASTER  
MISO  
FROM SLAVE  
SS  
TO SLAVE  
CAPTURE STROBE  
tI  
MSB FIRST (LSBF = 0)  
LSB FIRST (LSBF = 1)  
MSB  
LSB  
BIT 6  
BIT 1  
BIT 5  
BIT 2  
BIT 4  
BIT 3  
BIT 3  
BIT 4  
BIT 2  
BIT 5  
BIT 1  
BIT 6  
LSB  
MSB  
MINIMUM tL, tT, and tI = 1/2 SCK CYCLE  
Figure 15-6. Transmission Format 1 (CPHA = 1)  
MISO/MOSI  
MASTER SS  
BYTE 1  
BYTE 2  
BYTE 3  
SLAVE SS  
CPHA = 1  
Figure 15-7. Slave SS When CPHA = 1  
MC68HC812A4 Data Sheet, Rev. 7  
184  
Freescale Semiconductor  
Functional Description  
15.5.5 SS Output  
In master mode only, the SS pin can function as a chip-select output for connection to the SS input of a  
slave. The master SS output automatically selects the slave by going low for each transmission and  
deselects the slave by going high during each idling state.  
Enable the SS output by setting the master mode bit, MSTR, the slave-select output enable bit, SSOE,  
and the data direction bit of the SS pin. MSTR and SSOE are in SPI control register 1.  
Table 15-1. SS Pin Configurations  
Control Bits  
DDRS7 SSOE  
SS Pin Function  
Master Mode  
Slave Mode  
0
0
Slave-select input with mode-fault detection  
Reserved  
0
1
1
1
0
1
Slave-select input  
General-purpose output  
Slave-select output  
15.5.6 Single-Wire Operation  
Normally, the SPI operates as a 2-wire interface; it uses its MOSI and MISO pins for transmitting and  
receiving.  
In single-wire operation, a master SPI uses the MOSI pin for both receiving and transmitting. The MOSI  
pin becomes a master out, master in (MOMI) pin. The MISO pin is disconnected from the SPI and is  
available as a general-purpose port S I/O pin.  
A slave SPI in single-wire operation uses the MISO pin for both receiving and transmitting. The MISO pin  
becomes a slave in, slave out (SISO) pin. The MOSI pin is disconnected from the SPI and is available as  
a general-purpose I/O pin.  
Setting serial pin control bit 0, SPC0, configures the SPI for single-wire operation. The direction of the  
single-wire pin depends on its data direction bit.  
SERIAL OUT  
SPI  
MOMI  
MASTER MODE  
DDRS5  
GENERAL-  
SERIAL IN  
PS4  
PS5  
PURPOSE I/O  
GENERAL-  
SERIAL IN  
SPI  
PURPOSE I/O  
DDRS4  
SLAVE MODE  
SERIAL OUT  
SISO  
Figure 15-8. Single-Wire Operation (SPC0 = 1)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
185  
Serial Peripheral Interface (SPI)  
15.6 SPI Register Descriptions and Reset Initialization  
This section describes the SPI registers and reset initialization.  
15.6.1 SPI Control Register 1  
Address: $00D0  
Bit 7  
SPIE  
0
6
SPE  
0
5
SWOM  
0
4
MSTR  
0
3
CPOL  
0
2
CPHA  
1
1
SSOE  
0
Bit 0  
LSBF  
0
Read:  
Write:  
Reset:  
Figure 15-9. SPI Control Register 1 (SP0CR1)  
Read: Anytime  
Write: Anytime  
SPIE — SPI Interrupt Enable Bit  
SPIE enables the SPIF and MODF flags to generate interrupt requests.  
1 = SPIF and MODF interrupt requests enabled  
0 = SPIF and MODF interrupt requests disabled  
SPE — SPI Enable Bit  
Setting the SPE bit enables the SPI and configures port S pins 7–4 for SPI functions. Clearing SPE  
puts the SPI in a disabled, low-power state.  
1 = SPI enabled  
0 = SPI disabled  
NOTE  
When the MODF flag is set, SPE always reads as logic 0. Writing to SPI  
control register 1 is part of the mode fault recovery sequence.  
SWOM — Port S Wired-OR Mode Bit  
SWOM disables the pullup devices on port S pins 7–4 so that they become open-drain outputs.  
1 = Open-drain port S pin 7–4 outputs  
0 = Normal push-pull port S pin 7–4 outputs  
MSTR — Master Mode Bit  
MSTR selects master mode operation or slave mode operation.  
1 = Master mode  
0 = Slave mode  
CPOL — Clock Polarity Bit  
CPOL determines the logic state of the serial clock pin between transmissions. See Figure 15-4 and  
Figure 15-6.  
1 = Active-high SCK  
0 = Active-low SCK  
CPHA — Clock Phase Bit  
CPHA determines whether transmission begins on the falling edge of the SS pin or on the first edge  
of the serial clock. See Figure 15-4 and Figure 15-6.  
1 = Transmission at first SCK edge  
0 = Transmission at falling SS edge  
MC68HC812A4 Data Sheet, Rev. 7  
186  
Freescale Semiconductor  
SPI Register Descriptions and Reset Initialization  
SSOE — Slave Select Output Enable Bit  
SSOE enables the output function of master SS pin when the DDRS7 bit is also set.  
1 = SS output enabled  
0 = SS output disabled  
LSBF — LSB First Bit  
LSBF enables least-significant-bit-first transmissions. It does not affect the position of data in the SPI  
data register; reads and writes of the SPI data register always have the MSB in bit 7.  
1 = Least-significant-bit-first transmission  
0 = Most-significant-bit-first transmission  
15.6.2 SPI Control Register 2  
Address: $00D1  
Bit 7  
0
6
0
5
0
4
0
3
PUPS  
1
2
RDS  
0
1
0
Bit 0  
SPC0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
= Unimplemented  
Figure 15-10. SPI Control Register 2 (SP0CR2)  
Read: Anytime  
Write: Anytime  
PUPS — Pullup Port S Bit  
Setting PUPS enables internal pullup devices on all port S input pins. If a pin is programmed as output,  
the pullup device becomes inactive.  
1 = Pullups enabled  
0 = Pullups disabled  
RDS — Reduced Drive Port S Bit  
Setting RDS lowers the drive capability of all port S output pins for lower power consumption and less  
noise.  
1 = Reduced drive  
0 = Normal drive  
SPC0 — Serial Pin Control Bit 0  
SPC0 enables single-wire operation of the MOSI and MISO pins.  
Table 15-2. Single-Wire Operation  
Control Bits  
Pins  
SPC0  
MSTR  
DDRS5  
DDRS4  
MOSI  
MISO  
0
1
Master input  
Master output  
1
0
General-purpose I/O  
1
0
1
Slave input  
Slave output  
General-purpose I/O  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
187  
Serial Peripheral Interface (SPI)  
15.6.3 SPI Baud Rate Register  
Address: $00D2  
Bit 7  
0
6
0
5
0
4
0
3
0
2
SPR2  
0
1
SPR1  
0
Bit 0  
SPR0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
= Unimplemented  
Figure 15-11. SPI Baud Rate Register (SP0BR)  
Read: Anytime  
Write: Anytime  
SPR2–SPR0 — SPI Clock Rate Select Bits  
These bits select one of eight SPI baud rates as shown in Table 15-3. Reset clears SPR2–SPR0,  
selecting E-clock divided by two.  
Table 15-3. SPI Clock Rate Selection  
E-Clock  
Divisor  
Baud Rate  
(E-Clock = 4 MHz)  
Baud Rate  
(E-Clock = 8 MHz)  
SPR[2:1:0]  
000  
001  
010  
011  
100  
101  
110  
111  
2
4
2.0 MHz  
1.0 MHz  
500 kHz  
250 kHz  
125 kHz  
62.5 kHz  
31.3 kHz  
15.6 kHz  
4.0 MHz  
2.0 MHz  
1.0 MHz  
500 kHz  
250 kHz  
125 kHz  
62.5 kHz  
31.3 kHz  
8
16  
32  
64  
128  
256  
MC68HC812A4 Data Sheet, Rev. 7  
188  
Freescale Semiconductor  
SPI Register Descriptions and Reset Initialization  
15.6.4 SPI Status Register  
Address: $00D3  
Bit 7  
6
5
0
4
3
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
SPIF  
WCOL  
MODF  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 15-12. SPI Status Register (SP0SR)  
Read: Anytime  
Write: Has no meaning or effect  
SPIF — SPI Flag  
SPIF is set after the eighth serial clock cycle of a transmissson. SPIF generates an interrupt request if  
the SPIE bit in SPI control register 1 is set also. Clear SPIF by reading the SPI status register with SPIF  
set and then reading or writing to the SPI data register.  
1 = Transfer complete  
0 = Transfer not complete  
WCOL — Write Collision Flag  
WCOL is set when a write to the SPI data register occurs during a data transfer. The byte being  
transferred continues to shift out of the shift register, and the data written during the transfer is lost.  
WCOL does not generate an interrupt request. WCOL can be read when the transfer in progress is  
complete. Clear WCOL by reading the SPI status register with WCOL set and then reading or writing  
to the SPI data register.  
1 = Write collision  
0 = No write collision  
MODF — Mode Fault Flag  
MODF is set if the PS7 pin goes to logic 0 when it is configured as the SS input of a master SPI  
(MSTR = 1 and DDR7 = 0). Clear MODF by reading the SPI status register with MODF set and then  
writing to SPI control register 1.  
1 = Mode fault  
0 = No mode fault  
NOTE  
MODF is inhibited when the PS7 pin is configured as:  
The SS output, DDRS7 = 1 and SSOE = 1, or  
A general-purpose output, DDRS7 = 1 and SSOE = 0  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
189  
Serial Peripheral Interface (SPI)  
15.6.5 SPI Data Register  
Address: $00D5  
Bit 7  
6
6
5
5
4
4
3
3
2
2
1
1
Bit 0  
Bit 0  
Read:  
Bit 7  
Write:  
Reset:  
Unaffected by reset  
Figure 15-13. SPI Data Register (SP0DR)  
Read: Anytime; normally, only after SPIF flag set  
Write: Anytime a data transfer is not taking place  
The SPI data register is both the input and output register for SPI data. Reads are double-buffered but  
writes cause data to be written directly into the SPI shift register. The data registers of two SPIs can be  
connected through their MOSI and MISO pins to form a distributed 16-bit register. A transmission between  
the SPIs shifts the data eight bit positions, exchanging the data between the master and the slave. The  
slave can also be another simpler device that only receives data from the master or that only sends data  
to the master.  
15.7 External Pins  
The SPI module has four I/O pins:  
MISO — Master data in, slave data out  
MOSI — Master data out, slave data in  
SCK — Serial clock  
SS — Slave select  
The SPI has limited inter-integrated circuit (I2C) capability (requiring software support) as a master in a  
single-master environment. To communicate with I2C peripherals, MOSI becomes an open-drain output  
when the SWOM bit in the SPI control register is set. In I2C communication, the MOSI and MISO pins are  
connected to a bidirectional pin from the I2C peripheral and through a pullup resistor to VDD  
.
15.7.1 MISO (Master In, Slave Out)  
In a master SPI, MISO is the data input. In a slave SPI, MISO is the data output.  
In a slave SPI, the MISO output pin is enabled only when its SS pin is at logic 0. To support a  
multiple-slave system, a logic 1 on the SS pin of a slave puts the MISO pin in a high-impedance state.  
15.7.2 MOSI (Master Out, Slave In)  
In a master SPI, MOSI is the data output. In a slave SPI, MOSI is the data input.  
15.7.3 SCK (Serial Clock)  
The serial clock synchronizes data transmission between master and slave devices. In a master SPI, the  
SCK pin is the clock output to the slave. In a slave MCU, the SCK pin is the clock input from the master.  
MC68HC812A4 Data Sheet, Rev. 7  
190  
Freescale Semiconductor  
Low-Power Options  
15.7.4 SS (Slave Select)  
The SS pin has multiple functions that depend on SPI configuration:  
The SS pin of a slave SPI is always configured as an input and allows the slave to be selected for  
transmission.  
When the CPHA bit is clear, the SS pin signals the start of a transmission.  
The SS pin of a master SPI can be configured as a mode-fault input, a slave-select output, or a  
general-purpose output.  
As a mode-fault input (MSTR = 1, DDRS7 = 0, SSOE = 0), the SS pin can detect multiple  
masters driving MOSI and SPSCK.  
As a slave-select output (MSTR = 1, DDRS7 = 1, SSOE = 1), the SS pin can select slaves for  
transmission.  
When MSTR = 1, DDRS7 = 1, and SSOE = 0, the SS pin is available as a general-purpose  
output.  
15.8 Low-Power Options  
This section describes the three low-power modes:  
Run mode  
Wait mode  
Stop mode  
15.8.1 Run Mode  
Clearing the SPI enable bit, SPE, in SPI control register 1 reduces power consumption in run mode. SPI  
registers are still accessible when SPE is cleared, but clocks to the core of the SPI are disabled.  
15.8.2 Wait Mode  
The SPI remains active in wait mode. Any enabled interrupt request from the SPI can bring the MCU out  
of wait mode.  
If SPI functions are not required during wait mode, reduce power consumption by disabling the SPI before  
executing the WAIT instruction.  
15.8.3 Stop Mode  
For reduced power consumption, the SPI is inactive in stop mode. The STOP instruction does not affect  
SPI register states. SPI operation resumes after an external interrupt.  
Exiting stop mode by reset aborts any transmission in progress and resets the SPI. Entering stop mode  
during a transmission results in invalid data.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
191  
Serial Peripheral Interface (SPI)  
15.9 Interrupt Sources  
Table 15-4. SPI Interrupt Sources  
Interrupt  
Source  
Local  
Enable  
CCR  
Mask  
Vector  
Address  
Flag  
Transmission complete  
Mode fault  
SPIF  
SPIE  
I bit  
$FFD8, $FFD9  
MODF  
15.10 General-Purpose I/O Ports  
Port S shares its pins with the multiple serial interface (MSI). In all modes, port S pins PS7–PS0 are  
available for either general-purpose I/O or for SCI and SPI functions. See Chapter 13 Multiple Serial  
Interface (MSI).  
15.11 Synchronous Character Transmission Using the SPI  
This program is intended to communicate with the HC11 on the UDLP1 board. It utilizes the SPI to  
transmit synchronously characters in a string to be displayed on the LCD display. The program must  
configure the SPI as a master, and non-interrupt driven. The slave peripheral is chip-selected with the SS  
line at low voltage level. Between 8 bit transfers the SS line is held high. Also the clock idles low and  
takes data on the rising clock edges. The serial clock is set not to exceed 100 kHz baud rate.  
15.11.1 Equipment  
For this exercise, use the M68HC812A4EVB emulation board.  
15.11.2 Code Listing  
NOTE  
A comment line is delimited by a semicolon. If there is no code before  
comment, a semicolon (;) must be placed in the first column to avoid  
assembly errors.  
INCLUDE 'EQUATES.ASM'  
; User Variables  
; Bit Equates  
;Equates for all registers  
; ----------------------------------------------------------------------  
MAIN PROGRAM  
; ----------------------------------------------------------------------  
;
ORG  
$7000  
; 16K On-Board RAM, User code data area,  
; start main program at $7000  
;
MAIN:  
BSR  
BSR  
INIT  
TRANSMIT  
; Subroutine to initialize SPI registers  
; Subroutine to start transmission  
FINISH:  
BRA  
FINIS  
; Finished transmitting all DATA  
MC68HC812A4 Data Sheet, Rev. 7  
192  
Freescale Semiconductor  
Synchronous Character Transmission Using the SPI  
; ----------------------------------------------------------------------  
;* SUBROUTINE INIT:  
; ----------------------------------------------------------------------  
INIT:  
BSET  
PORTS,#$80  
; SET SS Line High to prevent glitch  
MOVB  
#$E0,DDRS  
; Configure PORT S input/ouput levels  
; MOSI, SCK, SS* = ouput, MISO=Input  
;
MOVB  
MOVB  
#$07,SP0BR  
; Select serial clock baud rate < 100 KHz  
#$12,SP0CR1  
; Configure SPI(SP0CR1): No SPI interrupts,  
; MSTR=1, CPOL=0, CPHA=0  
;
;
MOVB  
LDX  
#$08,SP0CR2  
#DATA  
; Config. PORTS output drivers to operate normally,  
; and with active pull-up devices.  
; Use X register as pointer to first character  
LDAA  
LDAA  
SP0SR  
SP0DR  
; 1st step to clear SPIF Flag, Read SP0SR  
; 2nd step to clear SPIF Flag, Access SP0DR  
BSET  
RTS  
SP0CR1,#$40  
; Enable the SPI (SPE=1)  
; Return from subroutine  
; ----------------------------------------------------------------------  
;* TRANSMIT SUBROUTINE  
; ----------------------------------------------------------------------  
TRANSMIT:  
LDAA  
BEQ  
1,X+  
DONE  
; Load Acc. with "NEW" character to send, Inc X  
; Detect if last character(0) has been transmitted  
; If last char. branch to DONE, else  
;
BCLR  
STAA  
PORTS,#$80  
SP0DR  
; Assert SS Line to start X-misssion.  
; Load Data into Data Reg.,X-mit.  
;
; it is also the 2nd step to clear SPIF flag.  
FLAG:  
BRCLR SP0SR,#$80,FLAG ;Wait for flag.  
BSET  
BRA  
PORTS,#$80  
TRANSMIT  
; Disassert SS Line.  
; Continue sending characters, Branch to TRANSMIT.  
DONE:  
RTS  
; Return from subroutine  
; ----------------------------------------------------------------------  
TABLE OF DATA TO BE TRANSMITTED  
; ----------------------------------------------------------------------  
;
DATA:  
EOT:  
DC.B  
DC.B  
DC.B  
'Freescale'  
$0D,$0A  
$00  
; Return (cr) ,Line Feed (LF)  
; Byte used to test end of data = EOT  
END  
; End of program  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
193  
Serial Peripheral Interface (SPI)  
MC68HC812A4 Data Sheet, Rev. 7  
194  
Freescale Semiconductor  
Chapter 16  
Analog-to-Digital Converter (ATD)  
16.1 Introduction  
The analog-to-digital converter (ATD) is an 8-channel, 8-bit, multiplexed-input, successive approximation  
analog-to-digital converter, accurate to 1 least significant bit (LSB). It does not require external sample  
and hold circuits because of the type of charge redistribution technique used. The ATD converter timing  
can be synchronized to the system P-clock. The ATD module consists of a 16-word (32-byte)  
memory-mapped control register block used for control, testing, and configuration.  
16.2 Features  
Features of the ATD module include:  
Eight multiplexed input channels  
Multiplexed-input successive approximation  
8-bit resolution  
Single or continuous conversion  
Conversion complete flag with CPU interrupt request  
Selectable ATD clock  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
195  
Analog-to-Digital Converter (ATD)  
16.3 Block Diagram  
VRH  
VRL  
RC DAC ARRAY  
AND COMPARATOR  
VDDA  
VSSA  
SAR  
AN7/PAD7  
AN6/PAD6  
AN5/PAD5  
AN4/PAD4  
AN3/PAD3  
AN2/PAD2  
AN1/PAD1  
AN0/PAD0  
CHANNEL 0  
CHANNEL 1  
CHANNEL 2  
CHANNEL 3  
CHANNEL 4  
CHANNEL 5  
CHANNEL 6  
CHANNEL 7  
ANALOG MUX  
AND  
SAMPLE BUFFER AMP  
PORT AD DATA  
INPUT REGISTER  
CLOCK  
SELECT/PRESCALE  
Figure 16-1. ATD Block Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
196  
Freescale Semiconductor  
Register Map  
16.4 Register Map  
NOTE  
The register block can be mapped to any 2-Kbyte boundary within the  
standard 64-Kbyte address space. The register block occupies the first 512  
bytes of the 2-Kbyte block. This register map shows default addressing  
after reset.  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
Read:  
Write:  
Reset:  
ATD Control Register 0  
(ATDCTL0)  
See page 199.  
0
0
0
0
0
0
0
0
$0060  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
ATD Control Register 1  
(ATDCTL1)  
See page 199.  
$0061  
$0062  
$0063  
$0064  
$0065  
$0066  
$0067  
$0068  
$0069  
0
0
0
0
0
0
0
0
0
0
0
ASCIF  
ATD Control Register 2  
(ATDCTL2)  
See page 200.  
ADPU  
AFFC  
AWAI  
ASCIE  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
FRZ0  
0
ATD Control Register 3  
(ATDCTL3)  
See page 201.  
FRZ1  
0
0
0
0
0
0
0
PRS3  
0
0
PRS2  
0
ATD Control Register 4  
(ATDCTL4)  
See page 201.  
SMP1  
0
SMP0  
0
PRS4  
0
PRS1  
0
PRS0  
1
0
0
ATD Control Register 5  
(ATDCTL5)  
See page 202.  
S8CM  
SCAN  
MULT  
CD  
CC  
CB  
CA  
0
0
0
0
0
0
0
0
0
0
0
0
SCF  
CC2  
CC1  
CC0  
ATD Status Register 1  
(ATDSTAT1)  
See page 204.  
0
0
0
0
0
0
0
0
CCF7  
CCF6  
CCF5  
CCF4  
CCF3  
CCF2  
CCF1  
CCF0  
ATD Status Register 2  
(ATDSTAT2)  
See page 204.  
0
SAR9  
0
0
SAR8  
0
0
SAR7  
0
0
0
SAR5  
0
0
SAR4  
0
0
SAR3  
0
0
SAR2  
0
ATD Test Register 1  
(ATDTEST1)  
See page 205.  
SAR6  
0
TSTOUT  
0
ATD Test Register 2  
(ATDTEST2)  
See page 205.  
SAR1  
0
SAR0  
RST  
TST3  
0
TST2  
0
TST1  
0
TST0  
0
0
0
= Unimplemented  
Figure 16-2. ATD I/O Register Summary  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
197  
Analog-to-Digital Converter (ATD)  
Addr.  
Register Name  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
PAD7  
PAD6  
PAD5  
PAD4  
PAD3  
PAD2  
PAD1  
PAD0  
Port AD Data Input  
Register (PORTAD)  
See page 207.  
$006F  
0
0
0
0
0
0
0
0
Read: ADRxH7  
Write:  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
ATD Result Register 0  
(ADR0H)  
See page 206.  
$0070  
$0072  
$0074  
$0076  
$0078  
$007A  
$007C  
$007E  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH6  
ADRxH6  
ADRxH6  
ADRxH6  
ADRxH6  
ADRxH6  
ADRxH6  
ADRxH5  
ADRxH5  
ADRxH5  
ADRxH5  
ADRxH5  
ADRxH5  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH2  
ADRxH2  
ADRxH2  
ADRxH2  
ADRxH2  
ADRxH2  
ADRxH1  
ADRxH1  
ADRxH1  
ADRxH1  
ADRxH1  
ADRxH1  
ADRxH1  
ADRxH0  
ADRxH0  
ADRxH0  
ADRxH0  
ADRxH0  
ADRxH0  
ADRxH0  
ATD Result Register 1  
(ADR1H)  
See page 206.  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH4  
ADRxH3  
ADRxH3  
ATD Result Register 2  
(ADR2H)  
See page 206.  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH4  
ATD Result Register 3  
(ADR3H)  
See page 206.  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH4  
ADRxH3  
ADRxH3  
ATD Result Register 4  
(ADR4H)  
See page 206.  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH4  
ATD Result Register 5  
(ADR5H)  
See page 206.  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH4  
ADRxH3  
ADRxH3  
ATD Result Register 6  
(ADR6H)  
See page 206.  
Reset:  
Indeterminate  
Read: ADRxH7  
Write:  
ADRxH4  
ATD Result Register 7  
(ADR7H)  
See page 206.  
Reset:  
Indeterminate  
= Unimplemented  
Figure 16-2. ATD I/O Register Summary (Continued)  
16.5 Functional Description  
A single conversion sequence consists of four or eight conversions, depending on the state of the select  
8-channel mode bit, S8CM, in ATD control register 5 (ATDCTL5). There are eight basic conversion  
modes.  
In the non-scan modes, the sequence complete flag, SCF, is set after the sequence of four or eight  
conversions has been performed and the ATD module halts.  
In the scan modes, the SCF flag is set after the first sequence of four or eight conversions has been  
performed, and the ATD module continues to restart the sequence.  
MC68HC812A4 Data Sheet, Rev. 7  
198  
Freescale Semiconductor  
Registers and Reset Initialization  
In both modes, the CCF flag associated with each register is set when that register is loaded with the  
appropriate conversion result. That flag is cleared automatically when that result register is read. The  
conversions are started by writing to the control registers.  
The ATD control register 4 selects the clock source and sets up the prescaler. Writes to the ATD control  
registers initiate a new conversion sequence. If a write occurs while a conversion is in progress, the  
conversion is aborted and ATD activity halts until a write to ATDCTL5 occurs.  
The ATD control register 5 selects conversion modes and conversion channel(s) and initiates  
conversions.  
A write to ATDCTL5 initiates a new conversion sequence. If a conversion sequence is in progress when  
a write occurs, the sequence is aborted and the SCF and CCF flags are cleared.  
16.6 Registers and Reset Initialization  
This section describes the registers and reset initialization.  
16.6.1 ATD Control Register 0  
Address: $0060  
Bit 7  
6
0
0
5
0
0
4
0
0
3
0
0
2
0
0
1
0
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
0
0
Figure 16-3. ATD Control Register 0 (ATDCTL0)  
NOTE  
Writing to this register aborts the current conversion sequence.  
16.6.2 ATD Control Register 1  
Address: $0061  
Bit 7  
6
0
5
0
4
0
3
0
2
0
1
0
Bit 0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 16-4. ATD Control Register 1 (ATDCTL1)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
199  
Analog-to-Digital Converter (ATD)  
16.6.3 ATD Control Register 2  
Address: $0062  
Bit 7  
ADPU  
0
6
AFFC  
0
5
AWAI  
0
4
0
3
0
2
0
1
ASCIE  
0
Bit 0  
Read:  
Write:  
Reset:  
ASCIF  
0
0
0
0
= Unimplemented  
Figure 16-5. ATD Control Register 2 (ATDCTL2)  
Read: Anytime  
Write: Anytime except ASCIF flag, which is read-only  
NOTE  
Writing to this register aborts the current conversion sequence.  
ADPU — ATD Power-up Bit  
ADPU enables the clock signal to the ATD and powers up its analog circuits.  
1 = ATD enabled  
0 = ATD disabled  
NOTE  
After ADPU is set, the ATD requires an analog circuit stabilization period.  
AFFC — ATD Fast Flag Clear Bit  
When AFFC is set, writing to a result register (ADR0H–ADR7H) clears the associated CCF flag if it is  
set. When AFFC is clear, clearing a CCF flag requires a read of the status register followed by a read  
of the result register.  
1 = Fast CCF clearing enabled  
0 = Fast CCF clearing disabled  
AWAI — ATD Stop in Wait Mode Bit  
ASWAI disables the ATD in wait mode for lower power consumption.  
1 = ATD disabled in wait mode  
0 = ATD enabled in wait mode  
ASCIE — ATD Sequence Complete Interrupt Enable Bit  
ASCIE enables interrupt requests generated by the ATD sequence complete interrupt flag, ASCIF.  
1 = ASCIF interrupt requests enabled  
0 = ASCIF interrupt requests disabled  
ASCIF — ATD Sequence Complete Interrupt Flag  
ASCIF is set when a conversion sequence is finished. If the ATD sequence complete interrupt enable  
bit, ASCIE, is also set, ASCIF generates an interrupt request.  
1 = Conversion sequence complete  
0 = Conversion sequence not complete  
NOTE  
The ASCIF flag is set only when a conversion sequence is completed and  
ASCIE = 1 or interrupts on the analog-to-digital converter (ATD) module  
are enabled.  
MC68HC812A4 Data Sheet, Rev. 7  
200  
Freescale Semiconductor  
Registers and Reset Initialization  
16.6.4 ADT Control Register 3  
Address: $0063  
Bit 7  
0
6
0
5
0
4
0
3
0
2
0
1
FRZ1  
0
Bit 0  
FRZ0  
0
Read:  
Write:  
Reset:  
0
0
0
0
0
0
= Unimplemented  
Figure 16-6. ATD Control Register 3 (ATDCTL3)  
FRZ1 and FRZ0 — Freeze Bits  
The FRZ bits suspend ATD operation for background debugging. When debugging an application, it  
is useful in many cases to have the ATD pause when a breakpoint is encountered. These two bits  
determine how the ATD responds when background debug mode becomes active. See Table 16-1.  
Table 16-1. ATD Response to Background Debug Enable  
FRZ1:FRZ0  
ATD Response  
Continue conversions in active background mode  
Reserved  
00  
01  
10  
11  
Finish current conversion, then freeze  
Freeze when BDM is active  
16.6.5 ATD Control Register 4  
Address: $0064  
Bit 7  
0
6
SMP1  
0
5
SMP0  
0
4
PRS4  
0
3
PRS3  
0
2
PRS2  
0
1
PRS1  
0
Bit 0  
PRS0  
1
Read:  
Write:  
Reset:  
0
= Unimplemented  
Figure 16-7. ATD Control Register 4 (ATDCTL4)  
SMP1 and SMP0 — Sample Time Select Bits  
These bits select one of four sample times after the buffered sample and transfer has occurred. Total  
conversion time depends on initial sample time (two ATD clocks), transfer time (four ATD clocks), final  
sample time (programmable, refer to Table 16-2), and resolution time (10 ATD clocks).  
Table 16-2. Final Sample Time Selection  
SMP[1:0]  
Final Sample Time  
2 ATD clock periods  
4 ATD clock periods  
8 ATD clock periods  
16 ATD clock periods  
Total 8-Bit Conversion Time  
18 ATD clock periods  
20 ATD clock periods  
24 ATD clock periods  
32 ATD clock periods  
00  
01  
10  
11  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
201  
Analog-to-Digital Converter (ATD)  
PRS[4:0] — Prescaler Select Bits  
The prescaler divides the P-clock by the binary value written to PRS[4:0] plus one. To assure  
symmetry of the prescaler output, an additional divide-by-two circuit generates the ATD module clock.  
Clearing PRS[4:0] means the P-clock is divided only by the divide-by-two circuit.  
The reset state of PRS[4:0] is 00001, giving a total P-clock divisor of four, which is appropriate for  
nominal operation at 2 MHz. Table 16-3 shows the appropriate range of system clock frequencies for  
each P clock divisor.  
Table 16-3. Clock Prescaler Values  
P-Clock  
Divisor  
Max P-Clock(1)  
Min P-Clock(2)  
PRS[4:0]  
00000  
00001  
00010  
00011  
00100  
00101  
00110  
00111  
01xxx  
1xxxx  
2
4
4 MHz  
8 MHz  
8 MHz  
8 MHz  
8 MHz  
8 MHz  
8 MHz  
8 MHz  
1 MHz  
2 MHz  
3 MHz  
4 MHz  
5 MHz  
6 MHz  
7 MHz  
8 MHz  
6
8
10  
12  
14  
16  
Do not use  
1. Maximum conversion frequency is 2 MHz. Maximum P-clock divisor value becomes  
maximum conversion rate that can be used on this ATD module.  
2. Minimum conversion frequency is 500 kHz. Minimum P-clock divisor value becomes  
minimum conversion rate that this ATD can perform.  
16.6.6 ATD Control Register 5  
Address: $0065  
Bit 7  
6
S8CM  
0
5
SCAN  
0
4
MULT  
0
3
CD  
0
2
CC  
0
1
CB  
0
Bit 0  
CA  
0
Read:  
Write:  
Reset:  
0
0
= Unimplemented  
Figure 16-8. ATD Control Register 5 (ATDCTL5)  
Read: Anytime  
Write: Anytime  
S8CM — Select Eight Conversions Mode Bit  
S8CM selects conversion sequences of either eight or four conversions.  
1 = Eight conversion sequences  
0 = Four conversion sequences  
SCAN — Continuous Channel Scan Bit  
SCAN selects a single conversion sequence or continuous conversion sequences.  
1 = Continuous conversion sequences (scan mode)  
0 = Single conversion sequence  
MC68HC812A4 Data Sheet, Rev. 7  
202  
Freescale Semiconductor  
Registers and Reset Initialization  
MULT — Multichannel Conversion Bit  
Refer to Table 16-4.  
1 = Conversions of sequential channels  
0 = Conversions of a single input channel selected by the CD, CC, CB, and CA bits  
CD, CC, CB, and CA — Channel Select Bits  
The channel select bits select the input to convert. LT = 1, the ATD sequencer selects  
Table 16-4. Multichannel Mode Result Register Assignment(1)  
S8CM  
CD  
CC  
CB  
0*  
0*  
1*  
1*  
0*  
0*  
1*  
1*  
0*  
0*  
1*  
1*  
0*  
CA  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
Channel Input  
AN0  
Result in ADRxH  
ADRxH0  
ADRxH1  
ADRxH2  
ADRxH3  
ADRxH0  
ADRxH1  
ADRxH2  
ADRxH3  
ADRxH0  
ADRxH1  
ADRxH2  
ADRxH3  
ADRxH0  
AN1  
0
AN2  
AN3  
0
0
AN4  
AN5  
1
0
AN6  
AN7  
Reserved  
Reserved  
Reserved  
Reserved  
VRH  
0
1
1
1
0
1
VRL  
0*  
1*  
ADRxH1  
1
(VRH + VRL)/2  
1*  
1*  
0*  
0*  
1*  
1*  
0*  
0*  
1*  
1*  
0*  
0*  
1*  
1*  
0*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
1*  
0*  
ADRxH2  
ADRxH3  
ADRxH0  
ADRxH1  
ADRxH2  
ADRxH3  
ADRxH4  
ADRxH5  
ADRxH6  
ADRxH7  
ADRxH0  
ADRxH1  
ADRxH2  
ADRxH3  
ADRxH4  
Test/Reserved  
AN0  
AN1  
0*  
1*  
0*  
AN2  
AN3  
AN4  
AN5  
AN6  
AN7  
Reserved  
Reserved  
Reserved  
Reserved  
VRH  
VRL  
0*  
1*  
1*  
1*  
0*  
1*  
ADRxH5  
ADRxH6  
ADRxH7  
1*  
(VRH + VRL)/2  
Test/Reserved  
1. When MULT = 1, bits with asterisks are don’t care bits. The 4-conversion sequence from  
AN0 to AN3 or the 8-conversion sequence from AN0 to AN7 is completed in the order  
shown.  
When MULT = 0, the CD, CC, CB, and CA bits select one input channel. The conversion  
sequence is performed on this channel only.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
203  
Analog-to-Digital Converter (ATD)  
16.6.7 ATD Status Registers  
Address: $0066  
Bit 7  
SCF  
6
0
5
0
4
0
3
0
2
1
Bit 0  
CC0  
Read:  
Write:  
Reset:  
CC2  
CC1  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 16-9. ATD Status Register 1 (ATDSTAT1)  
Address: $0067  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
CCF7  
CCF6  
CCF5  
CCF4  
CCF3  
CCF2  
CCF1  
CCF0  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 16-10. ATD Status Register 2 (ATDSTAT2)  
Read: Anytime  
Write: Special mode only  
SCF — Sequence Complete Flag  
In single conversion sequence mode (SCAN = 0 in ATDCTL5), SCF is set at the end of the conversion  
sequence.  
In continuous conversion mode (SCAN = 1 in ATDCTL5), SCF is set at the end of the first conversion  
sequence.  
Clear SCF by writing to control register 5 (ATDCTL5) to initiate a new conversion sequence. When the  
fast flag clear enable bit, AFFC, is set, SCF is cleared after the first result register is read.  
CC2–CC0 — Conversion Counter Bits  
This 3-bit value reflects the value of the conversion counter pointer in either a 4-conversion or  
8-conversion sequence. The pointer shows which channel is currently being converted and which  
result register will be written next.  
CCF7–CCF0 — Conversion Complete Flags  
Each ATD channel has a CCF flag. A CCF flag is set at the end of the conversion on that channel.  
Clear a CCF flag by reading status register 1 with the flag set and then reading the result register of  
that channel. When the fast flag clear enable bit, AFFC, is set, reading the result register clears the  
associated CCF flag even if the status register has not been read.  
MC68HC812A4 Data Sheet, Rev. 7  
204  
Freescale Semiconductor  
Registers and Reset Initialization  
16.6.8 ATD Test Registers  
Address: $0068  
Bit 7  
6
5
SAR7  
0
4
SAR6  
0
3
SAR5  
0
2
SAR4  
0
1
SAR3  
0
Bit 0  
SAR2  
0
Read:  
SAR9  
0
SAR8  
0
Write:  
Reset:  
Figure 16-11. ATD Test Register 1 (ATDTEST1)  
Address: $0069  
Bit 7  
6
SAR0  
0
5
RST  
0
4
TSTOUT  
0
3
TST3  
0
2
TST2  
0
1
TST1  
0
Bit 0  
TST0  
0
Read:  
Write:  
Reset:  
SAR1  
0
Figure 16-12. ATD Test Register 2 (ATDTEST2)  
Read: Special modes only  
Write: Special modes only  
The test registers control various special modes which are used during manufacturing. In the normal  
modes, reads of the test register return 0 and writes have no effect.  
SAR9–SAR0 — SAR Data Bits  
Reads of this byte return the current value in the SAR. Writes to this byte change the SAR to the value  
written. Bits SAR9–SAR2 reflect the eight SAR bits used during the resolution process for an 8-bit  
result. SAR1 and SAR0 are reserved to allow future derivatives to increase ATD resolution to 10 bits.  
RST — Reset Bit  
When set, this bit causes all registers and activity in the module to assume the same state as out of  
power-on reset (except for ADPU bit in ATDCTL2, which remains set, allowing the ATD module to  
remain enabled).  
TSTOUT — Multiplex Output of TST3–TST0 (factory use)  
TST3–TST0 — Test Bits 3 to 0 (reserved)  
Selects one of 16 reserved factory testing modes  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
205  
Analog-to-Digital Converter (ATD)  
16.6.9 ATD Result Registers  
Address:  
ADR0H: $0070  
ADR1H: $0072  
ADR2H: $0074  
ADR3H: $0076  
ADR4H: $0078  
ADR5H: $007A  
ADR6H: $007C  
ADR7H: $007E  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read: ADRxH7  
Write:  
ADRxH6  
ADRxH5  
ADRxH4  
ADRxH3  
ADRxH2  
ADRxH1  
ADRxH0  
Reset:  
Indeterminate  
= Unimplemented  
Figure 16-13. ATD Result Registers (ADR0H–ADR7H)  
Read: Anytime  
Write: Has no meaning or effect  
ADRxH7–ADRxH0 — ATD Conversion Result Bits  
These bits contain the left justified, unsigned result from the ATD conversion. The channel from which  
this result was obtained depends on the conversion mode selected. These registers are always  
read-only in normal mode.  
16.7 Low-Power Options  
This section describes the three low-power modes:  
Run mode  
Wait mode  
Stop mode  
16.7.1 Run Mode  
Clearing the ATD power-up bit, ADPU, in ATD control register 2 (ATDCTL2) reduces power consumption  
in run mode. ATD registers are still accessible, but the clock to the ATD is disabled and ATD analog  
circuits are powered down.  
16.7.2 Wait Mode  
ATD operation in wait mode depends on the state of the ATD stop in wait bit, AWAI, in ATD control register  
2 (ATDCTL2).  
If AWAI is clear, the ATD operates normally when the CPU is in wait mode  
If AWAI is set, the ATD clock is disabled and conversion continues unless ASWAI bit in ATDCTL2  
register is set.  
MC68HC812A4 Data Sheet, Rev. 7  
206  
Freescale Semiconductor  
Interrupt Sources  
16.7.3 Stop Mode  
The ATD is inactive in stop mode for reduced power consumption. The STOP instruction aborts any  
conversion sequence in progress.  
16.8 Interrupt Sources  
Table 16-5. ATD Interrupt Sources  
Interrupt  
Source  
Local  
Enable  
CCR  
Mask  
Vector  
Address  
Flag  
Conversion sequence complete  
ASCIF  
ASCIE  
I bit  
$FFD2, $FFD3  
NOTE  
The ASCIF flag is set only when a conversion sequence is completed and  
ASCIE = 1 or interrupts on the analog-to-digital converter (ATD) module  
are enabled.  
16.9 General-Purpose Ports  
Port AD is an input-only port. When the ATD is enabled, port AD is the analog input port for the ATD.  
Setting the ATD power-up bit, ADPU, in ATD control register 2 enables the ATD.  
Port AD is available for general-purpose input when the ATD is disabled. Clearing the ADPU bit disables  
the ATD.  
16.10 Port AD Data Register  
Address: $006F  
Bit 7  
6
5
4
3
2
1
Bit 0  
Read:  
Write:  
Reset:  
PAD7  
PAD6  
PAD5  
PAD4  
PAD3  
PAD2  
PAD1  
PAD0  
0
0
0
0
0
0
0
0
= Unimplemented  
Figure 16-14. Port AD Data Input Register (PORTAD)  
Read: Anytime; reads return logic levels on the PAD pins  
Write: Has no meaning or effect  
PAD7–PAD0 — Port AD Data Input Bits  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
207  
Analog-to-Digital Converter (ATD)  
16.11 Using the ATD to Measure a Potentiometer Signal  
This exercise allows the student to utilize the ATD on the HC12 to measure a potentiometer signal output  
routed from the UDLP1 board to the HC12 ATD pin PAD6. First the ATDCTL registers are initialized. A  
delay loop of 100 µs is then executed. The resolution is set up followed by a conversion set up on  
channel 6. After waiting for the status bit to set, the result goes to the D accumulator. If the program is  
working properly, a different value should be found in the D accumulator as the left potentiometer is varied  
for each execution of the program.  
16.11.1 Equipment  
For this exercise, use the M68HC812A4EVB emulation board.  
16.11.2 Code Listing  
NOTE  
A comment line is delimited by a semicolon. If there is no code before  
comment, a semicolon(;) must be placed in the first column to avoid  
assembly errors.  
; ----------------------------------------------------------------------  
;
MAIN PROGRAM  
; ----------------------------------------------------------------------  
ORG  
$7000  
; 16K On-Board RAM, User code data area,  
start main program at $7000  
;
MAIN:  
BSR  
BSR  
BRA  
INIT  
CONVERT  
DONE  
; Branch to INIT subroutine to Initialize ATD  
; Branch to CONVERT Subroutine for conversion  
; Branch to Self, Convenient place for breakpoint  
DONE:  
; ----------------------------------------------  
Subroutine INIT: Initialize ATD  
;
;
; ----------------------------------------------  
INIT:  
LDAA  
STAA  
#$80  
ATDCTL2  
; Allow ATD to function normally,  
; ATD Flags clear normally & disable interrupts  
BSR  
DELAY  
; Delay (100 uS) for WAIT delay time.  
LDAA  
STAA  
#$00  
ATDCTL3  
; Select continue conversion in BGND Mode  
; Ignore FREEZE in ATDCTL3  
LDAA  
STAA  
#$01  
ATDCTL4  
; Select Final Sample time = 2 A/D clocks  
; Prescaler = Div by 4 (PRS4:0 = 1)  
RTS  
; Return from subroutine  
MC68HC812A4 Data Sheet, Rev. 7  
208  
Freescale Semiconductor  
Using the ATD to Measure a Potentiometer Signal  
; ----------------------------------------------  
Subroutine CONVERT:  
; ----------------------------------------------  
;
;
; Set-up ATD, make single conversion and store the result to a memory location.  
; Configure and start A/D conversion  
; Analog Input Signal: On PORT AD6  
; Convert: using single channel, non-continuous  
; The result will be located in ADR2H  
CONVERT:  
LDAA  
STAA  
#$06  
; Initializes ATD SCAN=0,MULT=0, PAD6,  
; Write Clears Flag  
; 4 conversions on a Single Conversion  
; sequence,  
;
;
ATDCTL5  
WTCONV: BRCLR  
ATDSTATH,#$80,WTCONV; Wait for Sequence Complete Flag  
LDD  
ADR2H  
; Loads conversion result(ADR2H)  
; into Accumulator  
;
BRA  
RTS  
CONVERT  
; Continuously updates results  
; Return from subroutine  
;* -------------------------------  
;* Subroutine DELAY 100 uS  
*
;* -------------------------------  
; Delay Required for ATD converter to Stabilize (100 uSec)  
LDAA  
DECA  
BNE  
#$C8  
; Load Accumulator with "100 uSec delay value"  
; Decrement ACC  
; Branch if not equal to Zero  
; Return from subroutine  
DELAY:  
DELAY  
RTS  
END  
; End of program  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
209  
Analog-to-Digital Converter (ATD)  
MC68HC812A4 Data Sheet, Rev. 7  
210  
Freescale Semiconductor  
Chapter 17  
Development Support  
17.1 Introduction  
This section describes:  
Instruction queue  
Queue tracking signals  
Background debug mode (BDM)  
Instruction tagging  
17.2 Instruction Queue  
The CPU12 instruction queue provides at least three bytes of program information to the CPU when  
instruction execution begins. The CPU12 always completely finishes executing an instruction before  
beginning to execute the next instruction. Status signals IPIPE[1:0] provide information about data  
movement in the queue and indicate when the CPU begins to execute instructions. This makes it possible  
to monitor CPU activity on a cycle-by-cycle basis for debugging. Information available on the IPIPE[1:0]  
pins is time multiplexed. External circuitry can latch data movement information on rising edges of the  
E-clock signal; execution start information can be latched on falling edges. Table 17-1 shows the meaning  
of data on the pins.  
Table 17-1. IPIPE Decoding  
Data Movement — IPIPE[1:0] Captured at Rising Edge of E Clock(1)  
IPIPE[1:0]  
0:0  
Mnemonic  
Meaning  
No movement  
0:1  
LAT  
Latch data from bus  
1:0  
ALD  
Advance queue and load from bus  
Advance queue and load from latch  
1:1  
ALL  
Execution Start — IPIPE[1:0] Captured at Falling Edge of E Clock(2)  
IPIPE[1:0]  
0:0  
Mnemonic  
Meaning  
No start  
0:1  
INT  
Start interrupt sequence  
Start even instruction  
Start odd instruction  
1:0  
SEV  
1:1  
SOD  
1. Refers to data that was on the bus at the previous E falling edge.  
2. Refers to bus cycle starting at this E falling edge.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
211  
Development Support  
Program information is fetched a few cycles before it is used by the CPU. To monitor cycle-by-cycle CPU  
activity, it is necessary to externally reconstruct what is happening in the instruction queue. Internally, the  
MCU only needs to buffer the data from program fetches. For system debug, it is necessary to keep the  
data and its associated address in the reconstructed instruction queue. The raw signals required for  
reconstruction of the queue are ADDR, DATA, R/W, ECLK, and status signals IPIPE[1:0].  
The instruction queue consists of two 16-bit queue stages and a holding latch on the input of the first  
stage. To advance the queue means to move the word in the first stage to the second stage and move  
the word from either the holding latch or the data bus input buffer into the first stage. To start even (or  
odd) instruction means to execute the opcode in the high-order (or low-order) byte of the second stage of  
the instruction queue.  
17.3 Background Debug Mode (BDM)  
Background debug mode (BDM) is used for:  
System development  
In-circuit testing  
Field testing  
Programming  
BDM is implemented in on-chip hardware and provides a full set of debug options.  
Because BDM control logic does not reside in the CPU, BDM hardware commands can be executed while  
the CPU is operating normally. The control logic generally uses CPU dead cycles to execute these  
commands, but can steal cycles from the CPU when necessary. Other BDM commands are firmware  
based and require the CPU to be in active background mode for execution. While BDM is active, the CPU  
executes a firmware program located in a small on-chip ROM that is available in the standard 64-Kbyte  
memory map only while BDM is active.  
The BDM control logic communicates with an external host development system serially, via the BKGD  
pin. This single-wire approach minimizes the number of pins needed for development support.  
17.3.1 BDM Serial Interface  
The BDM serial interface requires the external controller to generate a falling edge on the BKGD pin to  
indicate the start of each bit time. The external controller provides this falling edge whether data is  
transmitted or received.  
BKGD is a pseudo-open-drain pin that can be driven either by an external controller or by the MCU. Data  
is transferred MSB first at 16 E-clock cycles per bit (nominal speed). The interface times out if 512 E-clock  
cycles occur between falling edges from the host. The hardware clears the command register when this  
timeout occurs.  
The BKGD pin can receive a high or low level or transmit a high or low level. The following diagrams show  
timing for each of these cases. Interface timing is synchronous to MCU clocks but asynchronous to the  
external host. The internal clock signal is shown for reference in counting cycles.  
MC68HC812A4 Data Sheet, Rev. 7  
212  
Freescale Semiconductor  
Background Debug Mode (BDM)  
Figure 17-1 shows an external host transmitting a logic 1 or 0 to the BKGD pin of a target M68HC12 MCU.  
The host is asynchronous to the target so there is a 0-to-1 cycle delay from the host-generated falling  
edge to where the target perceives the beginning of the bit time. Ten target E cycles later, the target  
senses the bit level on the BKGD pin. Typically, the host actively drives the pseudo-open-drain BKGD pin  
during host-to-target transmissions to speed up rising edges. Since the target does not drive the BKGD  
pin during this period, there is no need to treat the line as an open-drain signal during host-to-target  
transmissions.  
E CLOCK  
(TARGET MCU)  
HOST  
TRANSMIT 1  
HOST  
TRANSMIT 0  
10 CYCLES  
EARLIEST START  
OF NEXT BIT  
TARGET SENSES BIT LEVEL  
SYNCHRONIZATION  
UNCERTAINTY  
PERCEIVED START  
OF BIT TIME  
Figure 17-1. BDM Host-to-Target Serial Bit Timing  
Figure 17-2 shows the host receiving a logic 1 from the target MC68HC812A4 MCU. Since the host is  
asynchronous to the target MCU, there is a 0-to-1 cycle delay from the host-generated falling edge on  
BKGD to the perceived start of the bit time in the target MCU. The host holds the BKGD pin low long  
enough for the target to recognize it (at least two target E cycles). The host must release the low drive  
before the target MCU drives a brief active-high speed-up pulse seven cycles after the perceived start of  
the bit time. The host should sample the bit level about 10 cycles after it started the bit time.  
Figure 17-3 shows the host receiving a logic 0 from the target MC68HC812A4 MCU. Since the host is  
asynchronous to the target MCU, there is a 0-to-1 cycle delay from the host-generated falling edge on  
BKGD to the start of the bit time as perceived by the target MCU. The host initiates the bit time but the  
target MC68HC812A4 finishes it. Since the target wants the host to receive a logic 0, it drives the BKGD  
pin low for 13 E-clock cycles, then briefly drives it high to speed up the rising edge. The host samples the  
bit level about 10 cycles after starting the bit time.  
17.3.2 Enabling BDM Firmware Commands  
BDM is available in all operating modes, but must be made active before firmware commands can be  
executed. BDM is enabled by setting the ENBDM bit in the BDM STATUS register via the single wire  
interface (using a hardware command; WRITE_BD_BYTE at $FF01). BDM must then be activated to map  
BDM registers and ROM to addresses $FF00 to $FFFF and to put the MCU in active background mode.  
After the firmware is enabled, BDM can be activated by the hardware BACKGROUND command, by the  
BDM tagging mechanism, or by the CPU BGND instruction. An attempt to activate BDM before firmware  
has been enabled causes the MCU to resume normal instruction execution after a brief delay.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
213  
Development Support  
E-CLOCK  
TARGET MCU  
HOST DRIVE  
TO BKGD PIN  
HIGH-IMPEDANCE  
TARGET MCU  
SPEED-UP PULSE  
HIGH-IMPEDANCE  
HIGH-IMPEDANCE  
PERCEIVED START  
OF BIT TIME  
R-C RISE  
BKGD PIN  
10 CYCLES  
10 CYCLES  
EARLIEST START  
OF NEXT BIT  
HOST SAMPLES BKGD PIN  
Figure 17-2. BDM Target-to-Host Serial Bit Timing (Logic 1)  
E-CLOCK  
TARGET MCU  
HOST DRIVE  
TO BKGD PIN  
HIGH-IMPEDANCE  
SPEED-UP  
PULSE  
TARGET MCU  
DRIVE AND  
SPEED-UP PULSE  
PERCEIVED START  
OF BIT TIME  
BKGD PIN  
10 CYCLES  
10 CYCLES  
EARLIEST START  
OF NEXT BIT  
HOST SAMPLES BKGD PIN  
Figure 17-3. BDM Target-to-Host Serial Bit Timing (Logic 0)  
MC68HC812A4 Data Sheet, Rev. 7  
214  
Freescale Semiconductor  
Background Debug Mode (BDM)  
BDM becomes active at the next instruction boundary following execution of the BDM BACKGROUND  
command, but tags activate BDM before a tagged instruction is executed.  
In special single-chip mode, background operation is enabled and active immediately out of reset. This  
active case replaces the M68HC11 boot function and allows programming a system with blank memory.  
While BDM is active, a set of BDM control registers are mapped to addresses $FF00 to $FF06. The BDM  
control logic uses these registers which can be read anytime by BDM logic, not user programs. Refer to  
17.4 BDM Registers for detailed descriptions.  
Some on-chip peripherals have a BDM control bit which allows suspending the peripheral function during  
BDM. For example, if the timer control is enabled, the timer counter is stopped while in BDM. Once normal  
program flow is continued, the timer counter is re-enabled to simulate real-time operations.  
17.3.3 BDM Commands  
All BDM command opcodes are eight bits long and can be followed by an address and/or data, as  
indicated by the instruction. These commands do not require the CPU to be in active BDM mode for  
execution.  
The host controller must wait 150 cycles for a non-intrusive BDM command to execute before another  
command can be sent. This delay includes 128 cycles for the maximum delay for a dead cycle. For data  
read commands, the host must insert this delay between sending the address and attempting to read the  
data.  
BDM logic retains control of the internal buses until a read or write is completed. If an operation can be  
completed in a single cycle, it does not intrude on normal CPU operation. However, if an operation  
requires multiple cycles, CPU clocks are frozen until the operation is complete.  
The CPU must be in background mode to execute commands that are implemented in the BDM ROM.  
The BDM ROM is located at $FF20 to $FFFF while BDM is active. There are also seven bytes of BDM  
registers which are located at $FF00 to $FF06 while BDM is active. The CPU executes code from this  
ROM to perform the requested operation. These commands are shown in Table 17-2 and Table 17-3.  
Table 17-2. BDM Commands Implemented in Hardware  
Command  
Opcode (Hex)  
Data  
Description  
BACKGROUND  
90  
None  
Enter background mode, if firmware is enabled.  
Read from memory with BDM in map (may steal cycles if  
external access); data for odd address on low byte, data for  
even address on high byte  
16-bit address  
16-bit data out  
READ_BD_BYTE  
STATUS(1)  
E4  
E4  
FF01,  
READ_BD_BYTE $FF01. Running user code; BGND  
0000 0000 (out) instruction is not allowed  
FF01,  
1000 0000 (out)  
FF01,  
READ_BD_BYTE $FF01. BGND instruction is allowed.  
READ_BD_BYTE $FF01. Background mode active,  
1100 0000 (out) waiting for single wire serial command  
16-bit address  
16-bit data out  
Read from memory with BDM in map (may steal cycles if  
external access); must be aligned access  
READ_BD_WORD  
READ_BYTE  
EC  
E0  
Read from memory with BDM out of map (may steal cycles  
if external access); data for odd address on low byte, data  
for even address on high byte  
16-bit address  
16-bit data out  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
215  
Development Support  
Table 17-2. BDM Commands Implemented in Hardware (Continued)  
Command  
Opcode (Hex)  
Data  
Description  
16-bit address  
16-bit data out  
Read from memory with BDM out of map (may steal cycles  
if external access); must be aligned access  
READ_WORD  
E8  
Write to memory with BDM in map (may steal cycles if  
external access); data for odd address on low byte, data for  
even address on high byte  
16-bit address  
16-bit data in  
WRITE_BD_BYTE  
C4  
C4  
Write byte $FF01, set the ENBDM bit. This allows  
execution of commands which are implemented in  
firmware. Typically, read STATUS, OR in the MSB, write the  
result back to STATUS.  
FF01,  
1xxx xxxx (in)  
ENABLE_ FIRMWARE(2)  
16-bit address  
16-bit data in  
Write to memory with BDM in map (may steal cycles if  
external access); must be aligned access  
WRITE_BD_WORD  
WRITE_BYTE  
CC  
C0  
C8  
Write to memory with BDM out of map (may steal cycles if  
external access); data for odd address on low byte, data for  
even address on high byte  
16-bit address  
16-bit data in  
16-bit address  
16-bit data in  
Write to memory with BDM out of map (may steal cycles if  
external access); must be aligned access  
WRITE_WORD  
1. STATUS command is a specific case of the READ_BD_BYTE command.  
2. ENABLE_FIRMWARE is a specific case of the WRITE_BD_BYTE command.  
Table 17-3. BDM Firmware Commands  
Command  
READ_NEXT  
READ_PC  
READ_D  
Opcode (Hex)  
Data  
Description  
X = X + 2; read next word pointed to by X  
Read program counter  
62  
63  
64  
65  
66  
67  
42  
43  
44  
45  
46  
47  
08  
10  
18  
16-bit data out  
16-bit data out  
16-bit data out  
16-bit data out  
16-bit data out  
16-bit data out  
16-bit data in  
16-bit data in  
16-bit data in  
16-bit data in  
16-bit data in  
16-bit data in  
None  
Read D accumulator  
READ_X  
Read X index register  
READ_Y  
Read Y index register  
READ_SP  
WRITE_NEXT  
WRITE_PC  
WRITE_D  
WRITE_X  
WRITE_Y  
WRITE_SP  
GO  
Read stack pointer  
X = X + 2; write next word pointed to by X  
Write program counter  
Write D accumulator  
Write X index register  
Write Y index register  
Write stack pointer  
Go to user program  
TRACE1  
None  
Execute one user instruction, then return to BDM  
Enable tagging and go to user program  
TAGGO  
None  
MC68HC812A4 Data Sheet, Rev. 7  
216  
Freescale Semiconductor  
BDM Registers  
17.4 BDM Registers  
Seven BDM registers are mapped into the standard 64-Kbyte address space when BDM is active. The  
registers can be accessed with the hardware READ_BD and WRITE_BD commands, but must not be  
written during BDM operation. Most users are only interested in the STATUS register at $FF01; other  
registers are for use only by BDM firmware and logic.  
The instruction register is discussed for two conditions:  
When a hardware command is executed  
When a firmware command is executed  
17.4.1 BDM Instruction Register  
This section describes the BDM instruction register under hardware command and firmware command.  
17.4.1.1 Hardware Command  
Address: $FF00  
Bit 7  
H/F  
0
6
DATA  
0
5
R/W  
0
4
BKGND  
0
3
W/B  
0
2
BD/U  
0
1
0
0
Bit 0  
Read:  
Write:  
Reset:  
0
0
Figure 17-4. BDM Instruction Register (INSTRUCTION)  
The bits in the BDM instruction register have the following meanings when a hardware command is  
executed.  
H/F — Hardware/Firmware Flag  
1 = Hardware instruction  
0 = Firmware instruction  
DATA — Data Flag  
1 = Data included in command  
0 = No data  
R/W — Read/Write Flag  
0 = Write  
1 = Read  
BKGND — Hardware Request Bit to Enter Active Background Mode  
1 = Hardware background command (INSTRUCTION = $90)  
0 = Not a hardware background command  
W/B — Word/Byte Transfer Flag  
1 = Word transfer  
0 = Byte transfer  
BD/U — BDM Map/User Map Flag  
Indicates whether BDM registers and ROM are mapped to addresses $FF00 to $FFFF in the standard  
64-Kbyte address space. Used only by hardware read/write commands.  
1 = BDM resources in map  
0 = BDM resources not in map  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
217  
Development Support  
17.4.1.2 Firmware Command  
Address: $FF00  
Bit 7  
6
DATA  
0
5
R/W  
0
4
0
3
0
2
0
1
REGN  
0
Bit 0  
Read:  
H/F  
Write:  
TTAGO  
Reset:  
0
0
Figure 17-5. BDM Instruction Register (INSTRUCTION)  
The bits in the BDM instruction register have the following meanings when a firmware command is  
executed.  
H/F — Hardware/Firmware Flag  
1 = Hardware control logic  
0 = Firmware control logic  
DATA — Data Flag  
1 = Data included in command  
0 = No data  
R/W — Read/Write Flag  
1 = Read  
0 = Write  
TTAGO — Trace, Tag, and Go Field  
Table 17-4. TTAGO Decoding  
TTAGO Value  
Instruction  
00  
01  
10  
11  
GO  
TRACE1  
TAGGO  
REGN — Register/Next Field  
Indicates which register is being affected by a command. In the case of a READ_NEXT or  
WRITE_NEXT command, index register X is pre-incremented by 2 and the word pointed to by X is then  
read or written.  
Table 17-5. REGN Decoding  
REGN Value  
000  
Instruction  
001  
010  
READ/WRITE NEXT  
011  
PC  
D
100  
101  
X
110  
Y
111  
SP  
MC68HC812A4 Data Sheet, Rev. 7  
218  
Freescale Semiconductor  
BDM Registers  
17.4.2 BDM Status Register  
Address: $FF01  
Bit 7  
6
5
4
3
2
0
1
0
Bit 0  
0
Read:  
ENBDM  
Write:  
EDMACT  
ENTAG  
SDV  
TRACE  
Reset:  
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Single-chip peripheral:  
Figure 17-6. BDM Status Register (STATUS)  
This register can be read or written by BDM commands or firmware.  
ENBDM — Enable BDM Bit (permit active background debug mode)  
1 = BDM can be made active to allow firmware commands.  
0 = BDM cannot be made active (hardware commands still allowed).  
BDMACT — Background Mode Active Status Bit  
1 = BDM active and waiting for serial commands  
0 = BDM not active  
ENTAG — Instruction Tagging Enable Bit  
Set by the TAGGO instruction and cleared when BDM is entered.  
1 = Tagging active (BDM cannot process serial commands while tagging is active.)  
0 = Tagging not enabled or BDM active  
SDV — Shifter Data Valid Bit  
Shows that valid data is in the serial interface shift register. Used by firmware-based instructions.  
1 = Valid data  
0 = No valid data  
TRACE — Asserted by the TRACE1 Instruction  
17.4.3 BDM Shift Register  
Address: $FF02  
Bit 7  
S15  
0
6
S14  
0
5
S13  
0
4
S12  
0
3
S11  
0
2
S10  
0
1
S9  
0
Bit 0  
S8  
0
Read:  
Write:  
Reset:  
Address: $FF03  
Bit 7  
6
S6  
0
5
S5  
0
4
S4  
0
3
S3  
0
2
S2  
0
1
S1  
0
Bit 0  
S0  
0
Read:  
Write:  
Reset:  
S7  
0
Figure 17-7. BDM Shift Register (SHIFTER)  
This 16-bit register contains data being received or transmitted via the serial interface.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
219  
Development Support  
17.4.4 BDM Address Register  
Address: $FF04  
Bit 7  
A15  
0
6
A14  
0
5
A13  
0
4
A12  
0
3
A11  
0
2
A10  
0
1
A9  
0
Bit 0  
A8  
0
Read:  
Write:  
Reset:  
Address: $FF05  
Bit 7  
6
A6  
0
5
A5  
0
4
A4  
0
3
A3  
0
2
A2  
0
1
A1  
0
Bit 0  
A0  
0
Read:  
Write:  
Reset:  
A7  
0
Figure 17-8. BDM Address Register (ADDRESS)  
This 16-bit register is temporary storage for BDM hardware and firmware commands.  
17.4.5 BDM CCR Holding Register  
Address: $FF06  
Bit 7  
CCR7  
0
6
CCR6  
0
5
CCR5  
0
4
CCR4  
0
3
CCR3  
0
2
CCR2  
0
1
CCR1  
0
Bit 0  
CCR0  
0
Read:  
Write:  
Reset:  
Figure 17-9. BDM CCR Holding Register (CCRSAV)  
This register preserves the content of the CPU12 CCR while BDM is active.  
17.5 Instruction Tagging  
The instruction queue and cycle-by-cycle CPU activity can be reconstructed in real time or from trace  
history that was captured by a logic analyzer. However, the reconstructed queue cannot be used to stop  
the CPU at a specific instruction, because execution has already begun by the time an operation is visible  
outside the MCU. A separate instruction tagging mechanism is provided for this purpose.  
Executing the BDM TAGGO command configures two MCU pins for tagging. Tagging information is  
latched on the falling edge of ECLK along with program information as it is fetched. Tagging is allowed in  
all modes. Tagging is disabled when BDM becomes active and BDM serial commands cannot be  
processed while tagging is active.  
TAGHI is a shared function of the BKGD pin.  
TAGLO is a shared function of the PE3/LSTRB pin, a multiplexed I/O pin. For 1/4 cycle before and after  
the rising edge of the E-clock, this pin is the LSTRB driven output.  
TAGLO and TAGHI inputs are captured at the falling edge of the E-clock. A logic 0 on TAGHI and/or  
TAGLO marks (tags) the instruction on the high and/or low byte of the program word that was on the data  
bus at the same falling edge of the E-clock.  
The tag follows the information in the queue as the queue is advanced. When a tagged instruction  
reaches the head of the queue, the CPU enters active background debugging mode rather than executing  
the instruction. This is the mechanism by which a development system initiates hardware breakpoints.  
MC68HC812A4 Data Sheet, Rev. 7  
220  
Freescale Semiconductor  
Chapter 18  
Electrical Characteristics  
18.1 Maximum Ratings  
Maximum ratings are the extreme limits to which the MCU can be exposed without permanently damaging  
it.  
NOTE  
This device is not guaranteed to operate properly at the maximum ratings.  
Refer to 18.4 DC Electrical Characteristics for guaranteed operating  
conditions.  
Rating  
Symbol  
Value  
Unit  
VDD  
VDDA  
VDDX  
Supply voltage  
Input voltage  
–0.3 to +6.5  
V
VIn  
IIn  
–0.3 to +6.5  
25  
V
mA  
°C  
V
Maximum current per pin excluding VDD and VSS  
TSTG  
Storage temperature  
–55 to +150  
6.5  
VDD differential voltage  
VDD–VDDX  
NOTE  
This device contains circuitry to protect the inputs against damage due to  
high static voltages or electric fields; however, it is advised that normal  
precautions be taken to avoid application of any voltage higher than  
maximum-rated voltages to this high-impedance circuit. For proper  
operation, it is recommended that VIn and VOut be constrained to the range  
VSS (VIn or VOut) VDD. Reliability of operation is enhanced if unused  
inputs are connected to an appropriate logic voltage level (for example,  
either VSS or VDD).  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
221  
Electrical Characteristics  
18.2 Functional Operating Range  
Rating  
Symbol  
Value  
Unit  
°C  
Operating temperature range(1)  
MC68HC812A4PV8  
MC68HC812A4CPV8  
TL to TH  
0 to +70  
40 to +85  
TA  
VDD  
Operating voltage range  
5.0 10%  
V
1. For additional information, refer to the technical supplement document for 3.3 volt specifications (MC68C812A4) . This  
supplement can be found at http://freescale.com  
18.3 Thermal Characteristics  
Characteristic  
Average junction temperature  
Symbol  
Value  
Unit  
°C  
TJ  
TA + (PD × ΘJA)  
TA  
Ambient temperature  
User-determined  
39  
°C  
Package thermal resistance (junction-to-ambient)  
112-pin thin quad flat pack (TQFP)  
ΘJA  
°C/W  
PINT + PI/O  
or  
Total power dissipation(1)  
PD  
W
K
--------------------------  
T + 273°C  
J
PINT  
PI/O  
IDD × VDD  
Device internal power dissipation  
I/O pin power dissipation(2)  
W
W
User-determined  
PD × (TA + 273°C) +  
A constant(3)  
K
W/°C  
2
ΘJA × PD  
1. This is an approximate value, neglecting PI/O  
.
2. For most applications, PI/O « PINT and can be neglected.  
3. K is a constant pertaining to the device. Solve for K with a known TA and a measured PD (at equilibrium). Use this value  
of K to solve for PD and TJ iteratively for any value of TA.  
MC68HC812A4 Data Sheet, Rev. 7  
222  
Freescale Semiconductor  
DC Electrical Characteristics  
18.4 DC Electrical Characteristics  
Characteristic(1)  
Input high voltage, all inputs  
Symbol  
VIH  
Min  
Max  
Unit  
V
0.7 × VDD  
VSS0.3  
VDD + 0.3  
0.2 × VDD  
VIL  
Input low voltage, all inputs  
V
Output high voltage, all I/O and output pins  
Normal drive strength  
IOH = −10.0 µA  
IOH = −0.8 mA  
VDD 0.2  
VDD 0.8  
VOH  
V
Reduced drive strength  
IOH = −4.0 µA  
IOH = −0.3 mA  
VDD 0.2  
VDD 0.8  
Output low voltage, all I/O and output pins, normal drive strength  
IOL = 10.0 µA  
IOL = 1.6 mA  
VSS +0.2  
VSS +0.4  
VOL  
V
EXTAL, PAD[7:0], VRH, VRL, VFP, XIRQ, reduced drive strength  
VSS +0.2  
VSS +0.4  
IOL = 3.6 µA  
IOL = 0.6 mA  
Input leakage current(2) all input pins  
VIn = VDD or VSS — VRL, VRH, PAD6–PAD0  
VIn = VDD or VSS — IRQ  
VIn = VDD or VSS PAD7  
1
10  
10  
IIn  
µA  
IOZ  
Three-state leakage, I/O ports, BKGD, and RESET  
2.5  
µA  
Input capacitance  
All input pins and ATD pins (non-sampling)  
ATD pins (sampling)  
All I/O pins  
10  
15  
20  
CIn  
pF  
Output load capacitance  
All outputs except PS7–PS4  
PS7–PS4  
CL  
90  
200  
pF  
Active pullup, pulldown current  
IRQ, XIRQ, DBE, ECLK, LSTRB, R/W, and BKGD  
Ports A, B, C, D, F, G, H, J, P, S, and T  
IAPU  
50  
500  
µA  
VSB  
ISB  
RAM standby voltage, power down  
RAM standby current  
1.5  
V
10  
µA  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted  
2. Specification is for parts in the –40 to +85°C range. Higher temperature ranges will result in increased current leakage.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
223  
Electrical Characteristics  
18.5 Supply Current  
8 MHz  
Typical  
Characteristic(1)  
Symbol  
IDD  
2 MHz  
4 MHz  
8 MHz  
Unit  
Maximum total supply current  
Run  
Single-chip mode  
Expanded mode  
30  
47  
15  
25  
25  
40  
40  
65  
mA  
mA  
Wait, all peripheral functions shut down  
Single-chip mode  
Expanded mode  
Stop, single-chip mode, no clocks  
–40±°C to +85±°C  
WIDD  
SIDD  
7
8
1.5  
4
4
5
8
10  
mA  
mA  
< 1  
< 10  
< 25  
10  
25  
50  
10  
25  
50  
10  
25  
50  
µA  
µA  
µA  
+85±°C to +105±°C  
+105±°C to +125±°C  
Maximum power dissipation(2)  
Single-chip mode  
Expanded mode  
PD  
54  
76  
62  
90  
54  
76  
62  
90  
mW  
mW  
1. VDD = 5.0 Vdc ± ±10%, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted  
2. Includes IDD and IDDA  
18.6 ATD Maximum Ratings  
Characteristic  
Symbol  
Value  
Units  
ATD reference voltage  
VRH VDDA  
VRL VSSA  
VRH  
VRL  
0.3 to +6.5  
0.3 to +6.5  
V
V
SS differential voltage  
|VSSVSSA|  
0.1  
V
V
V
V
|VDDVDDA  
|
6.5  
6.5  
VDD differential voltage  
VDDVDDX  
VREF differential voltage  
|VRHVRL  
|VRHVDDA  
|VRLVSSA  
|
6.5  
|
|
6.5  
6.5  
Reference to supply differential voltage  
MC68HC812A4 Data Sheet, Rev. 7  
224  
Freescale Semiconductor  
ATD DC Electrical Characteristcs  
18.7 ATD DC Electrical Characteristcs  
Characteristic(1)  
Analog supply voltage  
Symbol  
VDDA  
IDDA  
Min  
4.5  
Max  
5.5  
Unit  
V
Analog supply current, normal operation  
Reference voltage, low  
1.0  
mA  
V
VRL  
VSSA  
VDDA/2  
VDDA/2  
VDDA  
VRH  
Reference voltage, high  
V
VREF differential reference voltage(2)  
Input voltage(3)  
VRHVRL  
VINDC  
IOFF  
4.5  
VSSA  
5.5  
VDDA  
100  
V
V
Input current, off channel(4)  
Reference supply current  
nA  
µA  
IREF  
250  
Input capacitance  
Not sampling  
Sampling  
CINN  
CINS  
10  
15  
pF  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, ATD clock = 2 MHz, unless otherwise noted  
2. Accuracy is guaranteed at VRH VRL = 5.0 Vdc 10%.  
3. To obtain full-scale, full-range results, VSSA VRL VINDC VRH VDDA  
.
4. Maximum leakage occurs at maximum operating temperature. Current decreases by approximately one-half for each  
10°C decrease from maximum temperature.  
18.8 Analog Converter Operating Characteristics  
Characteristic(1)  
Symbol  
2 counts  
DNL  
Min  
Typical  
24  
Max  
Unit  
mV  
8-bit resolution(2)  
Differential non-linearity(3)  
Integral non-linearity(3)  
0.5  
1  
+0.5  
+1  
Count  
Count  
INL  
Absolute error(3),(4)  
2, 4, 8, and 16 ATD sample clocks  
AE  
RS  
2  
+2  
Count  
See note(5)  
Maximum source impedance  
20  
kΩ  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, ATD clock = 2 MHz, unless otherwise noted  
2. VRHVRL 5.12 V; VDDA—VSSA = 5.12 V  
3. At VREF = 5.12 V, one 8-bit count = 20 mV.  
4. 8-bit absolute error of 1 count (20 mV) includes 1/2 count (10 mv) inherent quantization error and 1/2 count (10 mV) circuit  
(differential, integral, and offset) error.  
5. Maximum source impedance is application-dependent. Error resulting from pin leakage depends on junction leakage into  
the pin and on leakage due to charge-sharing with internal capacitance.  
Error from junction leakage is a function of external source impedance and input leakage current. Expected error in result  
value due to junction leakage is expressed in voltage (VERRJ):  
VERRJ = RS × IOFF  
where IOFF is a function of operating temperature. Charge-sharing effects with internal capacitors are a function of ATD  
clock speed, the number of channels being scanned, and source impedance. For 8-bit conversions, charge pump leakage  
is computed as follows:  
VERRJ = .25 pF × VDDA × RS × ATDCLK/(8 × number of channels)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
225  
Electrical Characteristics  
18.9 ATD AC Operating Characteristics  
Characteristic(1)  
Symbol  
Min  
Max  
Unit  
fATDCLK  
ATD operating clock frequency  
0.5  
2.0  
MHz  
Conversion time per channel  
0.5 MHz fATDCLK 2 MHz  
tCONV  
µs  
µs  
8.0  
15.0  
32.0  
60.0  
18 ATD clocks  
32 ATD clocks  
Stop recovery time  
VDDA = 5.0 V  
tSR  
50  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, ATD clock = 2 MHz, unless otherwise noted  
18.10 EEPROM Characteristics  
Characteristic(1)  
Symbol  
fPROG  
Min  
4.0  
Typical  
Max  
Unit  
Minimum programming clock frequency(2)  
Programming time  
MHz  
ms  
tPROG  
10.0  
10.5  
tCRSTOP  
tErase  
tPROG+ 1  
10.5  
Clock recovery time following STOP, to continue programming  
Erase time  
ms  
10.0  
10,000  
10  
ms  
30,000(3)  
Write/erase endurance  
Cycles  
Years  
Data retention  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted  
2. RC oscillator must be enabled if programming is desired and fSYS < fPROG  
3. If average TH is below 85°C  
.
MC68HC812A4 Data Sheet, Rev. 7  
226  
Freescale Semiconductor  
Control Timing  
18.11 Control Timing  
8.0 MHz  
Max  
8.0  
Characteristic  
Symbol  
Unit  
Min  
dc  
fo  
Frequency of operation  
E-clock period  
MHz  
ns  
tcyc  
125  
fXTAL  
2 fo  
Crystal frequency  
16.0  
16.0  
MHz  
MHz  
External oscillator frequency  
dc  
Processor control setup time  
tPCSU = tcyc/2 + 30  
tPCSU  
82  
ns  
Reset input pulse width  
To guarantee external reset vector  
Minimum input time (can be pre-empted by internal reset)  
PWRSTL  
tcyc  
32  
2
tMPS  
tMPH  
tcyc  
ns  
Mode programming setup time  
Mode programming hold time  
4
10  
Interrupt pulse width, IRQ, edge-sensitive mode, KWU  
PWIRQ = 2 tcyc + 20  
PWIRQ  
tWRS  
270  
4
ns  
tcyc  
ns  
Wait recovery startup time  
Timer pulse width, input capture pulse accumulator input  
PWTIM = 2 tcyc + 20  
PWTIM  
270  
PT[7:0](1)  
PWTIM  
PT[7:0](2)  
PT7(1)  
PWPA  
PT7(2)  
Notes:  
1. Rising edge-sensitive input  
2. Falling edge-sensitive input  
Figure 18-1. Timer Inputs  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
227  
VDD  
EXTAL  
4098 tcyc  
ECLK  
RESET  
tPCSU  
PWRSTL  
tMPH  
tMPS  
MODA, MODB  
1ST  
PIPE  
2ND  
PIPE  
3RD  
PIPE  
1ST  
EXEC  
1ST  
PIPE  
2ND  
PIPE  
3RD  
PIPE  
1ST  
EXEC  
FREE  
FFFE  
FFFE  
FREE  
FFFE  
FFFE  
FFFE  
INTERNAL  
ADDRESS  
Note: Reset timing is subject to change.  
Figure 18-2. POR and External Reset Timing Diagram  
INTERNAL  
CLOCKS  
IRQ1  
PWIRQ  
IRQ  
or XIRQ  
(3)  
tSTOPDELAY  
ECLK  
OPT  
FETCH  
1ST  
EXEC  
SP-9  
SP-9  
FREE  
SP-8  
SP-8  
FREE  
FREE  
SP-6  
SP-6  
ADDRESS4  
Resume program with instruction which follows the STOP instruction.  
3RD  
PIPE  
1ST  
PIPE  
2ND  
PIPE  
1ST  
EXEC  
FREE  
VECTOR  
ADDRESS5  
Notes:  
1. Edge-sensitive IRQ pin (IRQE bit = 1)  
2. Level-sensitive IRQ pin (IRQE bit = 0)  
3. tSTOPDELAY = 4098 tcyc if DLY bit = 1 or 2 tcyc if DLY = 0.  
4. XIRQ with X bit in CCR = 1.  
5. IRQ or (XIRQ with X bit in CCR = 0)  
Figure 18-3. STOP Recovery Timing Diagram  
ECLK  
tPCSU  
IRQ, XIRQ,  
OR INTERNAL  
INTERRUPTS  
tWRS  
3RD  
PIPE  
1ST  
EXEC  
2ND  
PIPE  
1ST  
PIPE  
SP – 9  
SP – 2  
SP – 4  
FREE  
ADDRESS  
SP – 9. . . SP – 9  
SP – 6 . . . SP – 9  
SP – 9  
VECTOR  
ADDRESS  
PC, IY, IX, B:A, , CCR  
STACK REGISTERS  
R/W  
Note: RESET also causes recovery from WAIT.  
Figure 18-4. WAIT Recovery Timing Diagram  
ECLK  
tPCSU  
IRQ(1)  
PWIRQ  
IRQ(2), XIRQ,  
OR INTERNAL  
INTERRUPT  
1ST  
PIPE  
2ND  
PIPE  
3RD  
PIPE  
1ST  
EXEC  
ADDRESS  
SP – 2  
PC  
SP – 4  
IY  
SP – 6  
IX  
SP – 8  
B:A  
SP – 9  
CCR  
VECTOR  
ADDR  
VECT  
DATA  
PROG  
FETCH  
PROG  
FETCH  
PROG  
FETCH  
R/W  
Notes:  
1. Edge sensitive IRQ pin (IRQE bit = 1)  
2. Level sensitive IRQ pin (IRQE bit = 0)  
Figure 18-5. Interrupt Timing Diagram  
Peripheral Port Timing  
18.12 Peripheral Port Timing  
8.0 MHz  
Unit  
Characteristic  
Symbol  
Min  
Max  
fo  
Frequency of operation (E-clock frequency)  
E-clock period  
dc  
8.0  
MHz  
ns  
tcyc  
125  
Peripheral data setup time, MCU read of ports  
tPDSU = tcyc/2 + 30  
tPDSU  
102  
ns  
tPDH  
tPWD  
Peripheral data hold time, MCU read of ports  
0
ns  
ns  
Delay time, peripheral data write, MCU write to ports  
40  
MCU READ OF PORT  
ECLK  
tPDSU  
tPDH  
PORTS  
Figure 18-6. Port Read Timing Diagram  
MCU WRITE TO PORT  
ECLK  
tPWD  
PREVIOUS PORT DATA  
NEW DATA VALID  
PORT A  
Figure 18-7. Port Write Timing Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
231  
Electrical Characteristics  
18.13 Non-Multiplexed Expansion Bus Timing  
8 MHz  
Min  
Characteristic(1), (2)  
Num  
Delay  
Symbol  
Unit  
Max  
8.0  
fo  
Frequency of operation (E-clock frequency)  
dc  
125  
60  
60  
20  
0
MHz  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
ns  
Cycle timetcyc = 1/fo  
tcyc  
1
Pulse width, E lowPWEL = tcyc/2 + delay  
PWEL  
PWEH  
tAD  
2
2  
2  
29  
25  
18  
18  
Pulse width, E high(3)PWEH = tcyc/2 + delay  
Address delay timetAD = tcyc/4 + delay  
3
60  
46  
49  
49  
35  
5
tAH  
6
Address hold time  
Address valid time to E risetAV = PWELtAD  
tAV  
7
tDSR  
tDHR  
tDDW  
tDHW  
tDSW  
tRWD  
tRWV  
tRWH  
tLSD  
tLSV  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
Read data setup time  
30  
0
Read data hold time  
(4)  
20  
30  
20  
20  
11  
20  
Write data delay time  
Write data hold time  
Write data setup time  
t
= tcyc/4 + delay  
= PWEHtDDW  
DDW  
(3)  
t
DSW  
Read/write delay timwtRWD = tcyc/4 + delay  
Read/write valid time to E risetRWV = PWELtRWD  
Read/write hold time  
Low strobe delay timetLSD = tcyc/4 + delay  
Low strobe valid time to E risetLSV = PWELtLSD  
tLSH  
tACCA  
tACCE  
tCSD  
Low strobe hold time  
(3)  
Address access time  
t
= tcyctADtDSR  
= PWEHtDSR  
ACCA  
(3)  
23  
26  
30  
60  
ns  
ns  
Access time from E rise  
t
ACCE  
Chip-select delay timetCSD = tcyc/4 + delay  
29  
(3)  
tACCS  
27  
28  
29  
5
0
65  
10  
ns  
ns  
ns  
Chip-select access time  
t
= tcyctCSDtDSR  
ACCS  
Chip-select hold time  
tCSH  
tCSN  
Chip-select negated timetCSN = tcyc/4 + delay  
36  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted  
2. All timings are calculated for normal port drives.  
3. This characteristic is affected by clock stretch.  
Add N × tcyc where N = 0, 1, 2, or 3, depending on the number of clock stretches.  
4. Equation still under evaluation  
MC68HC812A4 Data Sheet, Rev. 7  
232  
Freescale Semiconductor  
Non-Multiplexed Expansion Bus Timing  
1
2
3
ECLK  
22  
7
6
5
ADDR[15:0]  
23  
11  
12  
DATA[15:0]  
READ  
13  
15  
14  
DATA[15:0]  
WRITE  
16  
19  
17  
20  
18  
R/W  
21  
29  
LSTRB  
(W/O TAG ENABLED)  
26  
27  
28  
CS  
Note: Measurement points shown are 20% and 70% of VDD  
.
Figure 18-8. Non-Multiplexed Expansion Bus Timing Diagram  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
233  
Electrical Characteristics  
18.14 SPI Timing  
Num  
Function(1), (2)  
Symbol  
Min  
Max  
Unit  
Operating frequency  
Master  
Slave  
E-clock  
frequency  
fop  
dc  
dc  
1/2  
1/2  
SCK period  
Master  
Slave  
tsck  
tcyc  
1
2
2
2
256  
Enable lead time  
Master  
Slave  
tsck  
tcyc  
tLead  
1/2  
1
Enable lag time  
Master  
Slave  
tsck  
tcyc  
tLag  
twsck  
ttd  
3
4
5
1/2  
1
Clock (SCK) high or low time  
Master  
Slave  
tcyc 60  
tcyc 30  
128 tcyc  
ns  
Sequential transfer delay  
Master  
Slave  
tsck  
tcyc  
1/2  
1
Data setup time (inputs)  
Master  
Slave  
tsu  
6
7
30  
30  
ns  
ns  
Data hold time (inputs)  
Master  
Slave  
thi  
0
30  
ta  
tcyc  
tcyc  
8
9
Slave access time  
1
1
tdis  
Slave MISO disable time  
Data valid (after SCK edge)  
Master  
Slave  
tv  
10  
11  
50  
50  
ns  
ns  
Data hold time (outputs)  
Master  
Slave  
tho  
0
0
Rise time  
Input  
Output  
tri  
tro  
tcyc 30  
12  
13  
ns  
ns  
30  
Fall time  
Input  
Output  
tfi  
tfo  
tcyc 30  
ns  
ns  
30  
1. VDD = 5.0 Vdc 10%, VSS = 0 Vdc, TA = TL to TH, 200 pF load on all SPI pins  
2. All ac timing is shown with respect to 20% VDD and 70% VDD levels, unless otherwise noted.  
MC68HC812A4 Data Sheet, Rev. 7  
234  
Freescale Semiconductor  
SPI Timing  
SS(1)  
OUTPUT  
5
2
1
12  
13  
3
SCK  
CPOL = 0  
(OUTPUT  
4
4
SCK  
CPOL = 1  
OUTPUT  
6
7
MISO  
INPUT  
MSB IN(2)  
LSB IN  
BIT 6 . . . 1  
10  
10  
11  
MOSI  
OUTPUT  
MSB OUT(2)  
BIT 6 . . . 1  
LSB OUT  
Notes:  
1. SS output mode (DDS7 = 1, SSOE = 1)  
2. LSBF = 0. For LSBF = 1, bit order is LSB, bit 1, ..., bit 6, MSB  
A) SPI Master Timing (CPHA = 0)  
SS(1)  
OUTPUT  
5
1
13  
12  
12  
13  
3
2
SCK  
CPOL = 0  
OUTPUT  
4
4
SCK  
CPOL = 1  
OUTPUT  
6
7
MISO  
INPUT  
MSB IN(2)  
BIT 6 . . . 1  
11  
BIT 6 . . . 1  
LSB IN  
10  
MOSI  
OUTPUT  
MASTER MSB OUT(2)  
PORT DATA  
MASTER LSB OUT  
PORT DATA  
Notes:  
1. SS output mode (DDS7 = 1, SSOE = 1)  
2. LSBF = 0. For LSBF = 1, bit order is LSB, bit 1, ..., bit 6, MSB  
B) SPI Master Timing (CPHA = 1)  
Figure 18-9. SPI Timing Diagram (Sheet 1 of 2)  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
235  
Electrical Characteristics  
SS  
INPUT  
5
1
13  
12  
12  
13  
3
SCK  
CPOL = 0  
INPUT  
4
4
2
SCK  
CPOL = 1  
INPUT  
9
8
10  
BIT 6 . . . 1  
11  
SLAVE LSB OUT  
11  
MISO  
OUTPUT  
SEE  
NOTE  
MSB OUT  
7
SLAVE  
6
MOSI  
INPUT  
BIT 6 . . . 1  
MSB IN  
LSB IN  
Note: Not defined but normally MSB of character just received  
A) SPI Slave Timing (CPHA = 0)  
SS  
INPUT  
5
3
1
13  
12  
13  
2
SCK  
CPOL = 0  
INPUT  
4
4
12  
11  
SCK  
CPOL = 1  
INPUT  
9
10  
MISO  
OUTPUT  
SEE  
NOTE  
BIT 6 . . . 1  
SLAVE LSB OUT  
SLAVE  
6
MSB OUT  
7
8
MOSI  
INPUT  
MSB IN  
BIT 6 . . . 1  
LSB IN  
Note: Not defined but normally LSB of character just received  
B) SPI Slave Timing (CPHA = 1)  
Figure 18-9. SPI Timing Diagram (Sheet 2 of 2)  
MC68HC812A4 Data Sheet, Rev. 7  
236  
Freescale Semiconductor  
Chapter 19  
Mechanical Specifications  
19.1 Introduction  
This section provides dimensions for the 112-lead low-profile quad flat pack (LQFP).  
19.2 Package Dimensions  
Refer to the following pages for detailed package dimensions.  
MC68HC812A4 Data Sheet, Rev. 7  
Freescale Semiconductor  
237  
How to Reach Us:  
Home Page:  
www.freescale.com  
RoHS-compliant and/or Pb-free versions of Freescale products have the functionality  
and electrical characteristics of their non-RoHS-compliant and/or non-Pb-free  
counterparts. For further information, see http://www.freescale.com or contact your  
Freescale sales representative.  
E-mail:  
support@freescale.com  
USA/Europe or Locations Not Listed:  
Freescale Semiconductor  
For information on Freescale’s Environmental Products program, go to  
http://www.freescale.com/epp.  
Technical Information Center, CH370  
1300 N. Alma School Road  
Chandler, Arizona 85224  
+1-800-521-6274 or +1-480-768-2130  
support@freescale.com  
Europe, Middle East, and Africa:  
Freescale Halbleiter Deutschland GmbH  
Technical Information Center  
Schatzbogen 7  
81829 Muenchen, Germany  
+44 1296 380 456 (English)  
+46 8 52200080 (English)  
+49 89 92103 559 (German)  
+33 1 69 35 48 48 (French)  
support@freescale.com  
Information in this document is provided solely to enable system and software  
implementers to use Freescale Semiconductor products. There are no express or  
implied copyright licenses granted hereunder to design or fabricate any integrated  
circuits or integrated circuits based on the information in this document.  
Freescale Semiconductor reserves the right to make changes without further notice to  
any products herein. Freescale Semiconductor makes no warranty, representation or  
guarantee regarding the suitability of its products for any particular purpose, nor does  
Freescale Semiconductor assume any liability arising out of the application or use of any  
product or circuit, and specifically disclaims any and all liability, including without  
limitation consequential or incidental damages. “Typical” parameters that may be  
provided in Freescale Semiconductor data sheets and/or specifications can and do vary  
in different applications and actual performance may vary over time. All operating  
parameters, including “Typicals”, must be validated for each customer application by  
customer’s technical experts. Freescale Semiconductor does not convey any license  
under its patent rights nor the rights of others. Freescale Semiconductor products are  
not designed, intended, or authorized for use as components in systems intended for  
surgical implant into the body, or other applications intended to support or sustain life,  
or for any other application in which the failure of the Freescale Semiconductor product  
could create a situation where personal injury or death may occur. Should Buyer  
purchase or use Freescale Semiconductor products for any such unintended or  
unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and  
its officers, employees, subsidiaries, affiliates, and distributors harmless against all  
claims, costs, damages, and expenses, and reasonable attorney fees arising out of,  
directly or indirectly, any claim of personal injury or death associated with such  
unintended or unauthorized use, even if such claim alleges that Freescale  
Japan:  
Freescale Semiconductor Japan Ltd.  
Headquarters  
ARCO Tower 15F  
1-8-1, Shimo-Meguro, Meguro-ku,  
Tokyo 153-0064  
Japan  
0120 191014 or +81 3 5437 9125  
support.japan@freescale.com  
Asia/Pacific:  
Freescale Semiconductor Hong Kong Ltd.  
Technical Information Center  
2 Dai King Street  
Tai Po Industrial Estate  
Tai Po, N.T., Hong Kong  
+800 2666 8080  
support.asia@freescale.com  
For Literature Requests Only:  
Freescale Semiconductor Literature Distribution Center  
P.O. Box 5405  
Denver, Colorado 80217  
1-800-441-2447 or 303-675-2140  
Fax: 303-675-2150  
Semiconductor was negligent regarding the design or manufacture of the part.  
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.  
All other product or service names are the property of their respective owners.  
LDCForFreescaleSemiconductor@hibbertgroup.com  
© Freescale Semiconductor, Inc. 2006. All rights reserved.  
MC68HC812A4  
Rev. 7, 05/2006  

相关型号:

MCHC812A4PV8

Microcontrollers
FREESCALE

MCHC908AB32CFUR2

8-BIT, FLASH, 8.4MHz, MICROCONTROLLER, PQFP64, 20 X 20, QFP-64
NXP

MCHC908AB32CPBR2

Microcontroller, 8-Bit, FLASH, 8.4MHz, HCMOS, PQFP64, 10 X 10 MM, 1.40 MM HEIGHT, 0.50 MM PITCH, PLASTIC, LQFP-64
NXP

MCHC908AB32MFUR2

8-BIT, FLASH, 8.4MHz, MICROCONTROLLER, PQFP64, 20 X 20, QFP-64
NXP

MCHC908AB32MPBR2

8-BIT, FLASH, 8.4 MHz, MICROCONTROLLER, PQFP64, 10 X 10 MM, 1.40 MM HEIGHT, 0.50 MM PITCH, PLASTIC, LQFP-64
NXP

MCHC908AB32VPBR2

8-BIT, FLASH, 8.4MHz, MICROCONTROLLER, PQFP64, 10 X 10 MM, 1.40 MM HEIGHT, 0.50 MM PITCH, PLASTIC, LQFP-64
NXP

MCHC908GR8CFAE

M68HC08 Microcontrollers
FREESCALE

MCHC908JK1CDWR2

Microcontroller, 8-Bit, FLASH, 4MHz, HCMOS, PDSO20, SOIC-20
MOTOROLA

MCHC908JK3CDWR2

8-BIT, FLASH, 4MHz, MICROCONTROLLER, PDSO20, SOIC-20
MOTOROLA

MCHC908JK3ECPE

MCHC908JK3ECPE
FREESCALE

MCHC908JK3MDWR2

8-BIT, FLASH, 8MHz, MICROCONTROLLER, PDSO20, SOIC-20
MOTOROLA

MCHC908JW32FAE

M68HC08 Microcontrollers
FREESCALE