Mc68hc908jl3/jk3e/jk1e Mc68hrc908jl3/jk3e/jk1e Mc68hlc908jl3/jk3e/jk1e Mc68hc903kl3e/kk3e Mc68hc08jl3e/jk3e Mc68hrc08jl3e/jk3e
Mc68hc908jl3/jk3e/jk1e Mc68hrc908jl3/jk3e/jk1e Mc68hlc908jl3/jk3e/jk1e Mc68hc903kl3e/kk3e Mc68hc08jl3e/jk3e Mc68hrc08jl3e/jk3e
Mc68hc908jl3/jk3e/jk1e Mc68hrc908jl3/jk3e/jk1e Mc68hlc908jl3/jk3e/jk1e Mc68hc903kl3e/kk3e Mc68hc08jl3e/jk3e Mc68hrc08jl3e/jk3e
Data Sheet
M68HC08 Microcontrollers
freescale.com
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://www.freescale.com
Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc. This product incorporates SuperFlash technology licensed from SST. Freescale Semiconductor, Inc., 2004, 2006. All rights reserved. MC68HC908JL3E Family Data Sheet, Rev. 4 Freescale Semiconductor 3
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
Date Revision Level Description Table 4-1. Instruction Set Summary Updated table to include the WAIT instruction. 5.7.1 Break Status Register (BSR) Updated for clarity. 5.7.2 Reset Status Register (RSR) Updated description for clarity. 7.4 Security Updated to reflect the correct RAM location ($80) to determine if the security code has been entered correctly. October 2006 4 8.9.1 TIM Status and Control Register (TSC) Added note to definition of TSTOP bit. 10.1 Introduction Added note regarding 20-pin devices. 15.4.3 Break Status Register Updated for clarity. Chapter 17 Mechanical Specifications Updated package drawings to the latest available. Added appendix B for ROM parts. Nov 2004 3 Added appendix C for ADC-less parts. Added appendix A for low-volt devices. Dec 2002 2 Updated Monitor Mode Circuit (Figure 7-1) and Monitor Mode Entry Requirements and Options (Table 7-1) in Monitor ROM section. First general release. 167170 153224 76, 77 89 103 132 147 159166 Page Number(s) 42 63 64 80
May 2002
List of Chapters
Chapter 1 General Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Chapter 2 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Chapter 3 Configuration Registers (CONFIG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Chapter 4 Central Processor Unit (CPU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Chapter 5 System Integration Module (SIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Chapter 6 Oscillator (OSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Chapter 7 Monitor ROM (MON) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Chapter 8 Timer Interface Module (TIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Chapter 9 Analog-to-Digital Converter (ADC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Chapter 10 Input/Output (I/O) Ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Chapter 11 External Interrupt (IRQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Chapter 12 Keyboard Interrupt Module (KBI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Chapter 13 Computer Operating Properly (COP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Chapter 14 Low Voltage Inhibit (LVI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Chapter 15 Break Module (BREAK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Chapter 16 Electrical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Chapter 17 Mechanical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Chapter 18 Ordering Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Appendix A MC68HLC908JL3E/JK3E/JK1E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Appendix B MC68H(R)C08JL3E/JK3E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 Appendix C MC68HC908KL3E/KK3E. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
List of Chapters
Table of Contents
Chapter 1 General Description
1.1 1.2 1.3 1.4 1.5 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MCU Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pin Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pin Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 16 17 18 20
Chapter 2 Memory
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I/O Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitor ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Random-Access Memory (RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Page Erase Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Mass Erase Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Program Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Block Protect Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 21 27 28 28 29 30 30 31 31 33
37 37 37 38 38 39
Table of Contents
Program Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Condition Code Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arithmetic/Logic Unit (ALU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Low-Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CPU During Break Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruction Set Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opcode Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39 40 41 41 41 41 41 42 47
49 51 51 51 51 52 52 52 53 54 54 54 55 55 55 55 55 55 55 57 58 58 59 59 60 60 60 60 61 61 62 63 63 64 65
81 81 81 82 84 84 84 84 84 85 86 86 87
Table of Contents
8.5 8.6 8.6.1 8.6.2 8.7 8.8 8.9 8.9.1 8.9.2 8.9.3 8.9.4 8.9.5
Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Low-Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIM During Break Interrupts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I/O Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I/O Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIM Status and Control Register (TSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIM Counter Registers (TCNTH:TCNTL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIM Counter Modulo Registers (TMODH:TMODL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TIM Channel Status and Control Registers (TSC0:TSC1). . . . . . . . . . . . . . . . . . . . . . . . . . TIM Channel Registers (TCH0H/L:TCH1H/L) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88 88 88 88 88 89 89 89 91 91 92 95
10.4 Port D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.1 Port D Data Register (PTD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.2 Data Direction Register D (DDRD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.3 Port D Control Register (PDCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Table of Contents
13.7.1 Wait Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 13.7.2 Stop Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 13.8 COP Module During Break Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
135 135 136 136 137 138 139 140 141 142 143
Appendix A MC68HLC908JL3E/JK3E/JK1E
A.1 A.2 A.3 A.4 A.5 A.5.1 A.5.2 A.5.3 A.5.4 A.5.5 A.5.6 A.6 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Low-Voltage Inhibit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Electrical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Functional Operating Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DC Electrical Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MC Order Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 159 159 159 159 159 160 161 161 162 163 164
Appendix B MC68H(R)C08JL3E/JK3E
B.1 B.2 B.3 B.4 B.5 B.5.1 B.5.2 B.5.3 B.6 B.7 B.7.1 B.7.2 B.7.3 B.8 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MCU Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reserved Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mask Option Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Functional Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mask Option Register 1 (MOR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mask Option Register 2 (MOR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitor ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Electrical Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DC Electrical Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5V Oscillator Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MC Order Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 165 167 168 168 168 168 169 169 170 170 171 172 173
Table of Contents
Appendix C MC68HC908KL3E/KK3E
C.1 C.2 C.3 C.4 C.5 C.6 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MCU Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pin Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reserved Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reserved Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Order Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 175 175 178 178 178
1. Low-voltage Flash devices are documented in Appendix A MC68HLC908JL3E/JK3E/JK1E. 2. ROM devices are documented in Appendix B MC68H(R)C08JL3E/JK3E. 3. Flash, ADC-less devices are documented in Appendix C MC68HC908KL3E/KK3E.
All references to the MC68H(R)C908JL3E in this data book apply equally to the MC68H(R)C908JK3E and MC68H(R)C908JK1E, unless otherwise stated.
General Description
1.2 Features
Features of the MC68H(R)C908JL3E include the following: EMC enhanced version of MC68H(R)C908JL3/JK3/JK1 High-performance M68HC08 architecture Fully upward-compatible object code with M6805, M146805, and M68HC05 Families Low-power design; fully static with stop and wait modes Maximum internal bus frequency: 8-MHz at 5V operating voltage 4-MHz at 3V operating voltage Oscillator options: Crystal oscillator for MC68HC908JL3E/JK3E/JK1E RC oscillator for MC68HRC908JL3E/JK3E/JK1E User program Flash memory with security(1) feature 4,096 bytes for MC68H(R)C908JL3E/JK3E 1,536 bytes for MC68H(R)C908JK1E 128 bytes of on-chip RAM 2-channel, 16-bit timer interface module (TIM) 12-channel, 8-bit analog-to-digital converter (ADC) 23 general purpose I/O ports for MC68H(R)C908JL3E: 7 keyboard interrupt with internal pull-up (6 keyboard interrupt for MC68HC908JL3E) 10 LED drivers (sink) 2 25mA open-drain I/O with pull-up 15 general purpose I/O ports for MC68H(R)C908JK3E/JK1E: 1 keyboard interrupt with internal pull-up (MC68HRC908JK3E/JK1E only) 4 LED drivers (sink) 2 25mA open-drain I/O with pull-up 10-channel ADC System protection features: Optional computer operating properly (COP) reset Optional low-voltage detection with reset and selectable trip points for 3V and 5V operation Illegal opcode detection with reset Illegal address detection with reset Master reset pin with internal pull-up and power-on reset IRQ with schmitt-trigger input and programmable pull-up 28-pin PDIP, 28-pin SOIC, and 48-pin LQFP packages for MC68H(R)C908JL3E 20-pin PDIP and 20-pin SOIC packages for MC68H(R)C908JK3E/JK1E
1. No security feature is absolutely secure. However, Freescales strategy is to make reading or copying the Flash difficult for unauthorized users. MC68HC908JL3E Family Data Sheet, Rev. 4 16 Freescale Semiconductor
CONTROL AND STATUS REGISTERS 64 BYTES USER FLASH: MC68H(R)C908JK3E/JL3E 4,096 BYTES MC68H(R)C908JK1E 1,536 BYTES USER RAM 128 BYTES MONITOR ROM 960 BYTES USER FLASH VECTOR SPACE 48 BYTES MC68HC908JL3E/JK3E/JK1E X-TAL OSCILLATOR MC68HRC908JL3E/JK3E/JK1E RC OSCILLATOR POWER-ON RESET MODULE * RST SYSTEM INTEGRATION MODULE LOW-VOLTAGE INHIBIT MODULE * IRQ EXTERNAL INTERRUPT MODULE COMPUTER OPERATING PROPERLY MODULE BREAK MODULE 8-BIT ANALOG-TO-DIGITAL CONVERTER MODULE
PTA6/KBI6** PTA5/KBI5** PTA4/KBI4** PTA3/KBI3** PTA2/KBI2** PTA1/KBI1** PTA0/KBI0** PTB7/ADC7 PTB6/ADC6 PTB5/ADC5 PTB4/ADC4 PTB3/ADC3 PTB2/ADC2 PTB1/ADC1 PTB0/ADC0 PTD7** PTD6** PTD5/TCH1 PTD4/TCH0 PTD3/ADC8 PTD2/ADC9 PTD1/ADC10 PTD0/ADC11
OSC1
OSC2
DDRD
DDRB
* Pin contains integrated pull-up device. ** Pin contains programmable pull-up device. 25mA open-drain if output pin. LED direct sink pin. # Pins available on MC68H(R)C908JL3E only. Shared pin: MC68HC908JL3E/JK3E/JK1E OSC2 MC68HRC908JL3E/JK3E/JK1E RCCLK/PTA6/KBI6
General Description
MC68H(R)C908JL3E
Figure 1-2. 28-Pin PDIP/SOIC Pin Assignment
IRQ VSS OSC1 OSC2/RCCLK/PTA6/KBI VDD PTB7/ADC7 PTB6/ADC6 PTB5/ADC5 PTD7 PTD6
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
RST PTD4/TCH0 PTD5/TCH1 PTD2/ADC9 PTD3/ADC8 PTB0/ADC0 PTB1/ADC1 PTB2/ADC2 PTB3/ADC3 PTB4/ADC4
Pins not available on 20-pin packages PTA0/KBI0 PTA1/KBI1 PTA2/KBI2 PTA3/KBI3 PTA4/KBI4 PTA5/KBI5 Internal pads are unconnected. PTD0/ADC11 PTD1/ADC10
MC68H(R)C908JK3E/JK1E
Figure 1-3. 20-Pin PDIP/SOIC Pin Assignment
PTA0/KBI0
PTA5/KBI5
RST
IRQ
VSS
NC
NC
NC 38
47
46
45
44
43
42
41
40
39
48 NC
PTB6/ADC6
PTB5/ADC5
PTB4/ADC4
NC: No connection
PTD0/ADC11
PTB3/ADC3
PTD7
PTD6
NC
General Description
IRQ
Input
VDD to VTST
OSC1
In Out
Analog Analog
In/Out In/Out In
NOTE On the MC68H(R)C908JK3E/JK1E, the following pins are not available: PTA0, PTA1, PTA2, PTA3, PTA4, PTA5, PTD0, and PTD1.
Chapter 2 Memory
2.1 Introduction
The CPU08 can address 64 Kbytes of memory space. The memory map, shown in Figure 2-1, includes: 4,096 bytes of user Flash MC68H(R)C908JL3E/JK3E 1,536 bytes of user Flash MC68H(R)C908JK1E 128 bytes of RAM 48 bytes of user-defined vectors 960 bytes of Monitor ROM
Memory
$0000 $003F $0040 $007F $0080 $00FF $0100 $EBFF $EC00 $FBFF $FC00 $FDFF $FE00 $FE01 $FE02 $FE03 $FE04 $FE05 $FE06 $FE07 $FE08 $FE09 $FE0A $FE0B $FE0C $FE0D $FE0E $FE0F $FE10 $FFCF $FFD0 $FFFF
I/O REGISTERS 64 BYTES RESERVED 64 BYTES RAM 128 BYTES UNIMPLEMENTED 60,160 BYTES
MONITOR ROM 512 BYTES BREAK STATUS REGISTER (BSR) RESET STATUS REGISTER (RSR) RESERVED (UBAR) BREAK FLAG CONTROL REGISTER (BFCR) INTERRUPT STATUS REGISTER 1 (INT1) INTERRUPT STATUS REGISTER 2 (INT2) INTERRUPT STATUS REGISTER 3 (INT3) RESERVED FLASH CONTROL REGISTER (FLCR) FLASH BLOCK PROTECT REGISTER (FLBPR) RESERVED RESERVED BREAK ADDRESS HIGH REGISTER (BRKH) BREAK ADDRESS LOW REGISTER (BRKL) BREAK STATUS AND CONTROL REGISTER (BRKSCR) RESERVED MONITOR ROM 448 BYTES USER VECTORS 48 BYTES
Monitor ROM Addr. $0000 Register Name Read: Port A Data Register Write: (PTA) Reset: Read: $0001 Port B Data Register Write: (PTB) Reset: Read: $0002 Unimplemented Write: Read: Port D Data Register Write: (PTD) Reset: Read: Data Direction Register A Write: (DDRA) Reset: Read: $0005 Data Direction Register B Write: (DDRB) Reset: Read: $0006 Unimplemented Write: Read: Data Direction Register D Write: (DDRD) Reset: Read: Unimplemented Write: Read: Port D Control Register Write: (PDCR) Reset: Read: Unimplemented Write: Read: Port A Input Pull-up Enable Write: Register (PTAPUE) Reset: Read: Unimplemented Write: = Unimplemented R = Reserved 0 0 0 0 0 0 0 0 Bit 7 0 6 PTA6 5 PTA5 4 PTA4 3 PTA3 2 PTA2 1 PTA1 Bit 0 PTA0
Unaffected by reset PTB7 PTB6 PTB5 PTB4 PTB3 PTB2 PTB1 PTB0
Unaffected by reset
$0003
PTD7
PTD6
PTD5
PTD4
PTD3
PTD2
PTD1
PTD0
Unaffected by reset 0 0 DDRB7 0 DDRA6 0 DDRB6 0 DDRA5 0 DDRB5 0 DDRA4 0 DDRB4 0 DDRA3 0 DDRB3 0 DDRA2 0 DDRB2 0 DDRA1 0 DDRB1 0 DDRA0 0 DDRB0 0
$0004
$0007
DDRD7 0
DDRD6 0
DDRD5 0
DDRD4 0
DDRD3 0
DDRD2 0
DDRD1 0
DDRD0 0
$0008 $0009
$000A
SLOWD7 0
SLOWD6 0
PTDPU7 0
PTDPU6 0
$000B $000C
PTA6EN 0
PTAPUE6 0
PTAPUE5 0
PTAPUE4 0
PTAPUE3 0
PTAPUE2 0
PTAPUE1 0
PTAPUE0 0
Memory Addr. $001A Register Name Read: Keyboard Status and Control Write: Register (KBSCR) Reset: Read: Keyboard Interrupt Enable Write: Register (KBIER) Reset: Read: $001C Unimplemented Write: IRQ Status and Control Read: Register Write: (INTSCR) Reset: Read: $001E Configuration Register 2 Write: (CONFIG2) Reset: Read: Configuration Register 1 Write: (CONFIG1) Reset: 0 0 IRQPUD 0 COPRS 0 0 0 R 0 R 0 0 0 R 0 R 0 0 0 LVIT1 0* LVID 0 IRQF 0 LVIT0 0* R 0 0 ACK 0 R 0 SSREC 0 Bit 7 0 0 0 0 6 0 0 KBIE6 0 5 0 0 KBIE5 0 4 0 0 KBIE4 0 3 KEYF 0 KBIE3 0 2 0 ACKK 0 KBIE2 0 1 IMASKK 0 KBIE1 0 Bit 0 MODEK 0 KBIE0 0
$001B
$001D
IMASK 0 R 0 STOP 0
MODE 0 R 0 COPD 0
$001F
One-time writable register after each reset. * LVIT1 and LVIT0 reset to 0 by a power-on reset (POR) only. Read: TIM Status and Control Write: Register (TSC) Reset: Read: TIM Counter Register High Write: (TCNTH) Reset: Read: $0022 TIM Counter Register Write: Low (TCNTL) Reset: Read: TIM Counter Modulo Register Write: High (TMODH) Reset: Read: $0024 TIM Counter Modulo Register Write: Low (TMODL) Reset: Read: TIM Channel 0 Status and Write: Control Register (TSC0) Reset: Read: $0026 TIM Channel 0 Register High Write: (TCH0H) Reset: TOF 0 0 Bit15 0 Bit7 0 Bit15 1 Bit7 1 CH0F 0 0 Bit15 0 TRST 0 Bit12 0 Bit4 0 Bit12 1 Bit4 1 MS0A 0 Bit12 0 Bit11 0 Bit3 0 Bit11 1 Bit3 1 ELS0B 0 Bit11 0
$0020
$0021
$0023
$0025
Monitor ROM Addr. $0027 Register Name Read: TIM Channel 0 Register Low Write: (TCH0L) Reset: Read: TIM Channel 1 Status and Write: Control Register (TSC1) Reset: Read: $0029 TIM Channel 1 Register High Write: (TCH1H) Reset: Read: TIM Channel 1 Register Low Write: (TCH1L) Reset: Read: Unimplemented Write: Read: ADC Status and Control Write: Register (ADSCR) Reset: Read: $003D ADC Data Register Write: (ADR) Reset: Read: ADC Input Clock Register Write: (ADICLK) Reset: Read: $003F Unimplemented Write: ADIV2 0 ADIV1 0 ADIV0 0 COCO 0 AD7 Bit 7 Bit7 6 Bit6 5 Bit5 4 Bit4 3 Bit3 2 Bit2 1 Bit1 Bit 0 Bit0
Indeterminate after reset CH1F 0 0 Bit15 CH1IE 0 Bit14 0 0 Bit13 MS1A 0 Bit12 ELS1B 0 Bit11 ELS1A 0 Bit10 TOV1 0 Bit9 CH1MAX 0 Bit8
$0028
Indeterminate after reset Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
$003C
AIEN 0 AD6
ADCO 0 AD5
ADCH4 1 AD4
ADCH3 1 AD3
ADCH2 1 AD2
ADCH1 1 AD1
ADCH0 1 AD0
$003E
$FE00
Read: Break Status Register Write: (BSR) Reset: Read: Reset Status Register Write: (RSR) POR: Read: Reserved Write: Read: Break Flag Control Write: Register (BFCR) Reset:
Note: Writing a 0 clears SBSW. POR 1 R PIN 0 R COP 0 R ILOP 0 R ILAD 0 R MODRST 0 R LVI 0 R 0 0 R $FE01
$FE02
$FE03
BCFE 0
= Unimplemented
= Reserved
Memory Addr. $FE04 Register Name Read: Interrupt Status Register 1 Write: (INT1) Reset: Read: Interrupt Status Register 2 Write: (INT2) Reset: Read: $FE06 Interrupt Status Register 3 Write: (INT3) Reset: Read: $FE07 Reserved Write: Read: Flash Control Register Write: (FLCR) Reset: Read: Flash Block Protect Write: Register (FLBPR) Reset: Read: Reserved Write: Read: Break Address High Write: Register (BRKH) Reset: Read: $FE0D Break Address Low Write: Register (BRKL) Reset: Read: Break Status and Control Write: Register (BRKSCR) Reset: Read: COP Control Register Write: (COPCTL) Reset: = Unimplemented Bit 7 0 R 0 IF14 R 0 0 R 0 R 6 IF5 R 0 0 R 0 0 R 0 R 5 IF4 R 0 0 R 0 0 R 0 R 4 IF3 R 0 0 R 0 0 R 0 R 3 0 R 0 0 R 0 0 R 0 R 2 IF1 R 0 0 R 0 0 R 0 R 1 0 R 0 0 R 0 0 R 0 R Bit 0 0 R 0 0 R 0 IF15 R 0 R
$FE05
0 0 BPR7 0 R
0 0 BPR6 0 R
0 0 BPR5 0 R
0 0 BPR4 0 R
$FE08
HVEN 0 BPR3 0 R
MASS 0 BPR2 0 R
ERASE 0 BPR1 0 R
PGM 0 BPR0 0 R
$FE09
$FE0A $FE0B
$FE0C
Bit13 0 Bit5 0 0 0
Bit12 0 Bit4 0 0 0
Bit11 0 Bit3 0 0 0
Bit10 0 Bit2 0 0 0
Bit9 0 Bit1 0 0 0
Bit8 0 Bit0 0 0 0
$FE0E
Low byte of reset vector Writing clears COP counter (any value) Unaffected by reset R = Reserved
$FFFF
IF15
IF4
Highest
Memory
During a subroutine call, the CPU uses two bytes of the stack to store the return address. The stack pointer decrements during pushes and increments during pulls. NOTE Be careful when using nested subroutines. The CPU may overwrite data in the RAM during a subroutine or during the interrupt stacking operation.
Addr. $FE08
Register Name Flash Control Register (FLCR) Flash Block Protect Register (FLBPR) Read: Write: Reset: Read: Write: Reset:
Bit 7 0 0 BPR7 0
6 0 0 BPR6
5 0 0 BPR5
4 0 0 BPR4 0
3 HVEN 0 BPR3 0
2 MASS 0 BPR2 0
1 ERASE 0 BPR1 0
$FE09
0 0 = Unimplemented
Figure 2-4. Flash Control Register (FLCR) HVEN High Voltage Enable Bit This read/write bit enables high voltage from the charge pump to the memory for either program or erase operation. It can only be set if either PGM=1 or ERASE=1 and the proper sequence for program or erase is followed. 1 = High voltage enabled to array and charge pump on 0 = High voltage disabled to array and charge pump off MASS Mass Erase Control Bit This read/write bit configures the memory for mass erase operation or page erase operation when the ERASE bit is set. 1 = Mass erase operation selected 0 = Page erase operation selected ERASE Erase Control Bit This read/write bit configures the memory for erase operation. This bit and the PGM bit should not be set to 1 at the same time. 1 = Erase operation selected 0 = Erase operation not selected PGM Program Control Bit This read/write bit configures the memory for program operation. This bit and the ERASE bit should not be set to 1 at the same time. 1 = Program operation selected 0 = Program operation not selected
Memory
Memory
Write any data to any Flash address within the row address range desired
NOTE: The time between each Flash address change (step 6 to step 6), or the time between the last Flash address programmed to clearing PGM bit (step 6 to step 9) must not exceed the maximum programming time, tPROG max. This row program algorithm assumes the row/s to be programmed are initially erased.
10
11
12
End of Programming
Figure 2-6. Flash Block Protect Register (FLBPR) BPR[7:0] Flash Block Protect Register Bit 7 to Bit 0 BPR[7:1] represent bits [12:6] of a 16-bit memory address. Bits [15:13] are 1s and bits [5:0] are 0s.
16-bit memory address Start address of Flash block protect 1 1 1 BPR[7:1] 0 0 0 0 0 0
BPR0 is used only for BPR[7:0] = $FF, for no block protection. The resultant 16-bit address is used for specifying the start address of the Flash memory for block protection. The Flash is protected from this start address to the end of Flash memory, at $FFFF. With this mechanism, the protect start address can be XX00, XX40, XX80, or XXC0 (at page boundaries 64 bytes) within the Flash memory. Examples of protect start address:
BPR[7:0] $00$60 $62 or $63 (0110 001x) $64 or $65 (0110 010x) $68 or $69 (0110 100x) and so on... $DE or $DF (1101 111x) $FE (1111 1110) $FF $FBC0 (1111 1011 1100 0000) $FFC0 (1111 1111 1100 0000) The entire Flash memory is not protected. Start of Address of Protect Range The entire Flash memory is protected. $EC40 (1110 1100 0100 0000) $EC80 (1110 1100 1000 0000) $ED00 (1110 1101 0000 0000)
Memory
Figure 3-1. Configuration Register 1 (CONFIG1) COPRS COP reset period selection bit 1 = COP reset cycle is 8176 2OSCOUT 0 = COP reset cycle is 262,128 2OSCOUT
LVID Low Voltage Inhibit Disable Bit 1 = Low Voltage Inhibit disabled 0 = Low Voltage Inhibit enabled SSREC Short Stop Recovery Bit SSREC enables the CPU to exit stop mode with a delay of 32 2OSCOUT cycles instead of a 4096 2OSCOUT cycle delay. 1 = Stop mode recovery after 32 2OSCOUT cycles 0 = Stop mode recovery after 4096 2OSCOUT cycles NOTE Exiting stop mode by pulling reset will result in the long stop recovery. If using an external crystal, do not set the SSREC bit. STOP STOP Instruction Enable STOP enables the STOP instruction. 1 = STOP instruction enabled 0 = STOP instruction treated as illegal opcode COPD COP Disable Bit COPD disables the COP module. (See Chapter 13 Computer Operating Properly (COP).) 1 = COP module disabled 0 = COP module enabled
Figure 3-2. Configuration Register 2 (CONFIG2) IRQPUD IRQ Pin Pull-up control bit 1 = Internal pull-up is disconnected 0 = Internal pull-up is connected between IRQ pin and VDD LVIT1, LVIT0 Low Voltage Inhibit trip voltage selection bits Detail description of the LVI control signals is given in Chapter 14 Low Voltage Inhibit (LVI)
4.2 Features
Features of the CPU include: Object code fully upward-compatible with M68HC05 Family 16-bit stack pointer with stack manipulation instructions 16-bit index register with x-register manipulation instructions 8-MHz CPU internal bus frequency 64-Kbyte program/data memory space 16 addressing modes Memory-to-memory data moves without using accumulator Fast 8-bit by 8-bit multiply and 16-bit by 8-bit divide instructions Enhanced binary-coded decimal (BCD) data handling Modular architecture with expandable internal bus definition for extension of addressing range beyond 64 Kbytes Low-power stop and wait modes
CARRY/BORROW FLAG ZERO FLAG NEGATIVE FLAG INTERRUPT MASK HALF-CARRY FLAG TWOS COMPLEMENT OVERFLOW FLAG
4.3.1 Accumulator
The accumulator is a general-purpose 8-bit register. The CPU uses the accumulator to hold operands and the results of arithmetic/logic operations.
Bit 7 Read: Write: Reset: Unaffected by reset 6 5 4 3 2 1 Bit 0
CPU Registers
Figure 4-4. Stack Pointer (SP) NOTE The location of the stack is arbitrary and may be relocated anywhere in random-access memory (RAM). Moving the SP out of page 0 ($0000 to $00FF) frees direct address (page 0) space. For correct operation, the stack pointer must point only to RAM locations.
Figure 4-6. Condition Code Register (CCR) V Overflow Flag The CPU sets the overflow flag when a two's complement overflow occurs. The signed branch instructions BGT, BGE, BLE, and BLT use the overflow flag. 1 = Overflow 0 = No overflow H Half-Carry Flag The CPU sets the half-carry flag when a carry occurs between accumulator bits 3 and 4 during an add-without-carry (ADD) or add-with-carry (ADC) operation. The half-carry flag is required for binary-coded decimal (BCD) arithmetic operations. The DAA instruction uses the states of the H and C flags to determine the appropriate correction factor. 1 = Carry between bits 3 and 4 0 = No carry between bits 3 and 4 I Interrupt Mask When the interrupt mask is set, all maskable CPU interrupts are disabled. CPU interrupts are enabled when the interrupt mask is cleared. When a CPU interrupt occurs, the interrupt mask is set automatically after the CPU registers are saved on the stack, but before the interrupt vector is fetched. 1 = Interrupts disabled 0 = Interrupts enabled NOTE To maintain M6805 Family compatibility, the upper byte of the index register (H) is not stacked automatically. If the interrupt service routine modifies H, then the user must stack and unstack H using the PSHH and PULH instructions. After the I bit is cleared, the highest-priority interrupt request is serviced first. A return-from-interrupt (RTI) instruction pulls the CPU registers from the stack and restores the interrupt mask from the stack. After any reset, the interrupt mask is set and can be cleared only by the clear interrupt mask software instruction (CLI). N Negative Flag The CPU sets the negative flag when an arithmetic operation, logic operation, or data manipulation produces a negative result, setting bit 7 of the result. 1 = Negative result 0 = Non-negative result
Z Zero Flag The CPU sets the zero flag when an arithmetic operation, logic operation, or data manipulation produces a result of $00. 1 = Zero result 0 = Non-zero result C Carry/Borrow Flag The CPU sets the carry/borrow flag when an addition operation produces a carry out of bit 7 of the accumulator or when a subtraction operation requires a borrow. Some instructions such as bit test and branch, shift, and rotate also clear or set the carry/borrow flag. 1 = Carry out of bit 7 0 = No carry out of bit 7
Operation
Description
V H I N Z C
IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2 IMM IMM IMM DIR EXT IX2 0 IX1 IX SP1 SP2 DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1 REL DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) REL REL REL
ii dd hh ll ee ff ff ff ee ff ii dd hh ll ee ff ff ff ee ff ii ii ii dd hh ll ee ff ff ff ee ff
A (A) + (M)
Logical AND
C b7 b0
38 dd 48 58 68 ff 78 9E68 ff 37 dd 47 57 67 ff 77 9E67 ff 24 11 13 15 17 19 1B 1D 1F 25 27 90 92 28 29 22 rr dd dd dd dd dd dd dd dd rr rr rr rr rr rr rr
BCLR n, opr
Clear Bit n in M
Mn 0
BCS rel BEQ rel BGE opr BGT opr BHCC rel BHCS rel BHI rel
Branch if Carry Bit Set (Same as BLO) Branch if Equal Branch if Greater Than or Equal To (Signed Operands) Branch if Greater Than (Signed Operands) Branch if Half Carry Bit Clear Branch if Half Carry Bit Set Branch if Higher
PC (PC) + 2 + rel ? (Z) | (N V) = 0 REL PC (PC) + 2 + rel ? (H) = 0 PC (PC) + 2 + rel ? (H) = 1 PC (PC) + 2 + rel ? (C) | (Z) = 0 REL REL REL
3 3
Cycles
2 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5 2 2 2 3 4 4 3 2 4 5 4 1 1 4 3 5 4 1 1 4 3 5 3 4 4 4 4 4 4 4 4 3 3 3 3 3
Effect on CCR
Operand
Operation
Branch if Higher or Same (Same as BCC) Branch if IRQ Pin High Branch if IRQ Pin Low
Description
PC (PC) + 2 + rel ? (C) = 0 PC (PC) + 2 + rel ? IRQ = 1 PC (PC) + 2 + rel ? IRQ = 0
V H I N Z C
REL REL REL IMM DIR EXT 0 IX2 IX1 IX SP1 SP2
rr rr rr ii dd hh ll ee ff ff ff ee ff rr rr rr rr rr rr rr rr rr rr dd rr dd rr dd rr dd rr dd rr dd rr dd rr dd rr rr dd rr dd rr dd rr dd rr dd rr dd rr dd rr dd rr dd dd dd dd dd dd dd dd rr dd rr ii rr ii rr ff rr rr ff rr
Bit Test
Branch if Less Than or Equal To (Signed Operands) Branch if Lower (Same as BCS) Branch if Lower or Same Branch if Less Than (Signed Operands) Branch if Interrupt Mask Clear Branch if Minus Branch if Interrupt Mask Set Branch if Not Equal Branch if Plus Branch Always
PC (PC) + 2 + rel ? (Z) | (N V) = 1 REL PC (PC) + 2 + rel ? (C) = 1 PC (PC) + 2 + rel ? (C) | (Z) = 1 PC (PC) + 2 + rel ? (N V) =1 PC (PC) + 2 + rel ? (I) = 0 PC (PC) + 2 + rel ? (N) = 1 PC (PC) + 2 + rel ? (I) = 1 PC (PC) + 2 + rel ? (Z) = 0 PC (PC) + 2 + rel ? (N) = 0 PC (PC) + 2 + rel REL REL REL REL REL REL REL REL REL DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) REL DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) REL DIR IMM IMM IX1+ IX+ SP1 0 INH 0 INH
BRN rel
Branch Never
PC (PC) + 2
BSET n,opr
Set Bit n in M
Mn 1
BSR rel
Branch to Subroutine
PC (PC) + 2; push (PCL) SP (SP) 1; push (PCH) SP (SP) 1 PC (PC) + rel PC (PC) + 3 + rel ? (A) (M) = $00 PC (PC) + 3 + rel ? (A) (M) = $00 PC (PC) + 3 + rel ? (X) (M) = $00 PC (PC) + 3 + rel ? (A) (M) = $00 PC (PC) + 2 + rel ? (A) (M) = $00 PC (PC) + 4 + rel ? (A) (M) = $00 C0 I0
CBEQ opr,rel CBEQA #opr,rel CBEQX #opr,rel Compare and Branch if Equal CBEQ opr,X+,rel CBEQ X+,rel CBEQ opr,SP,rel CLC CLI Clear Carry Bit Clear Interrupt Mask
Cycles
3 3 3 2 3 4 4 3 2 4 5 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 5 4 4 5 4 6 1 2
Effect on CCR
Operand
Operation
Description
M $00 A $00 X $00 H $00 M $00 M $00 M $00
V H I N Z C
Clear
DIR INH INH 0 0 1 INH IX1 IX SP1 IMM DIR EXT IX2 IX1 IX SP1 SP2 DIR INH INH 0 1 IX1 IX SP1 IMM DIR
Compare A with M
(A) (M)
M (M) = $FF (M) A (A) = $FF (M) X (X) = $FF (M) M (M) = $FF (M) M (M) = $FF (M) M (M) = $FF (M) (H:X) (M:M + 1)
Compare X with M
(X) (M)
Decimal Adjust A
(A)10
DBNZ opr,rel DBNZA rel DBNZX rel Decrement and Branch if Not Zero DBNZ opr,X,rel DBNZ X,rel DBNZ opr,SP,rel DEC opr DECA DECX DEC opr,X DEC ,X DEC opr,SP DIV EOR #opr EOR opr EOR opr EOR opr,X EOR opr,X EOR ,X EOR opr,SP EOR opr,SP INC opr INCA INCX INC opr,X INC ,X INC opr,SP
A (A) 1 or M (M) 1 or X (X) 1 PC (PC) + 3 + rel ? (result) 0 DIR PC (PC) + 2 + rel ? (result) 0 INH PC (PC) + 2 + rel ? (result) 0 INH PC (PC) + 3 + rel ? (result) 0 IX1 PC (PC) + 2 + rel ? (result) 0 IX PC (PC) + 4 + rel ? (result) 0 SP1 M (M) 1 A (A) 1 X (X) 1 M (M) 1 M (M) 1 M (M) 1 A (H:A)/(X) H Remainder DIR INH INH IX1 IX SP1 INH IMM DIR EXT 0 IX2 IX1 IX SP1 SP2 DIR INH INH IX1 IX SP1
Decrement
Divide
Exclusive OR M with A
A (A M)
Increment
3C dd 4C 5C 6C ff 7C 9E6C ff
Cycles
3 1 1 1 3 2 4 2 3 4 4 3 2 4 5 4 1 1 4 3 5 3 4 2 3 4 4 3 2 4 5 2 5 3 3 5 4 6 4 1 1 4 3 5 7 2 3 4 4 3 2 4 5 4 1 1 4 3 5
Effect on CCR
Operand
Operation
Description
V H I N Z C
PC Jump Address
Jump
DIR EXT IX2 IX1 IX DIR EXT IX2 IX1 IX IMM DIR EXT IX2 0 IX1 IX SP1 SP2 0 IMM DIR
dd hh ll ee ff ff dd hh ll ee ff ff ii dd hh ll ee ff ff ff ee ff ii jj dd ii dd hh ll ee ff ff ff ee ff
Jump to Subroutine
Load A from M
A (M)
H:X (M:M + 1)
Load X from M
X (M)
IMM DIR EXT IX2 0 IX1 IX SP1 SP2 DIR INH INH IX1 IX SP1 DIR INH 0 INH IX1 IX SP1 DD DIX+ 0 IMD IX+D 0 0 INH DIR INH INH IX1 IX SP1 INH INH IMM DIR EXT IX2 0 IX1 IX SP1 SP2 INH INH INH
C b7 b0
0 b7 b0
(M)Destination (M)Source H:X (H:X) + 1 (IX+D, DIX+) X:A (X) (A) M (M) = $00 (M) A (A) = $00 (A) X (X) = $00 (X) M (M) = $00 (M) M (M) = $00 (M) None A (A[3:0]:A[7:4])
Inclusive OR A and M
A (A) | (M)
Cycles
2 3 4 3 2 4 5 6 5 4 2 3 4 4 3 2 4 5 3 4 2 3 4 4 3 2 4 5 4 1 1 4 3 5 4 1 1 4 3 5 5 4 4 4 5 4 1 1 4 3 5 1 3 2 3 4 4 3 2 4 5 2 2 2
Effect on CCR
Operand
Operation
Pull A from Stack Pull H from Stack Pull X from Stack
Description
SP (SP + 1); Pull (A) SP (SP + 1); Pull (H) SP (SP + 1); Pull (X)
V H I N Z C
INH INH INH DIR INH INH IX1 IX SP1 DIR INH INH IX1 IX SP1 INH INH
86 8A 88 39 dd 49 59 69 ff 79 9E69 ff 36 dd 46 56 66 ff 76 9E66 ff 9C
C b7 b0
SP $FF SP (SP) + 1; Pull (CCR) SP (SP) + 1; Pull (A) SP (SP) + 1; Pull (X) SP (SP) + 1; Pull (PCH) SP (SP) + 1; Pull (PCL) SP SP + 1; Pull (PCH) SP SP + 1; Pull (PCL)
RTI
80
RTS SBC #opr SBC opr SBC opr SBC opr,X SBC opr,X SBC ,X SBC opr,SP SBC opr,SP SEC SEI STA opr STA opr STA opr,X STA opr,X STA ,X STA opr,SP STA opr,SP STHX opr STOP STX opr STX opr STX opr,X STX opr,X STX ,X STX opr,SP STX opr,SP SUB #opr SUB opr SUB opr SUB opr,X SUB opr,X SUB ,X SUB opr,SP SUB opr,SP
INH IMM DIR EXT IX2 IX1 IX SP1 SP2 1 INH 1 INH DIR EXT IX2 0 IX1 IX SP1 SP2 0 DIR 0 INH DIR EXT IX2 0 IX1 IX SP1 SP2 IMM DIR EXT IX2 IX1 IX SP1 SP2
C1 I1
Store A in M
M (A)
Store X in M
M (X)
Subtract
A (A) (M)
Cycles
2 2 2 4 1 1 4 3 5 4 1 1 4 3 5 1 7 4 2 3 4 4 3 2 4 5 1 2 3 4 4 3 2 4 5 4 1 3 4 4 3 2 4 5 2 3 4 4 3 2 4 5
Effect on CCR
Operand
Opcode Map
V H I N Z C
SWI
Software Interrupt
1 INH
83
TAP TAX TPA TST opr TSTA TSTX TST opr,X TST ,X TST opr,SP TSX TXA TXS WAIT A C CCR dd dd rr DD DIR DIX+ ee ff EXT ff H H hh ll I ii IMD IMM INH IX IX+ IX+D IX1 IX1+ IX2 M N
INH INH INH DIR INH INH 0 IX1 IX SP1 INH INH INH 0 INH
84 97 85 3D dd 4D 5D 6D ff 7D 9E6D ff 95 9F 94 8F
Transfer SP to H:X Transfer X to A Transfer H:X to SP Enable Interrupts; Wait for Interrupt
H:X (SP) + 1 A (X) (SP) (H:X) 1 I bit 0; Inhibit CPU clocking until interrupted n opr PC PCH PCL REL rel rr SP1 SP2 SP U V X Z & |
Accumulator Carry/borrow bit Condition code register Direct address of operand Direct address of operand and relative offset of branch instruction Direct to direct addressing mode Direct addressing mode Direct to indexed with post increment addressing mode High and low bytes of offset in indexed, 16-bit offset addressing Extended addressing mode Offset byte in indexed, 8-bit offset addressing Half-carry bit Index register high byte High and low bytes of operand address in extended addressing Interrupt mask Immediate operand byte Immediate source to direct destination addressing mode Immediate addressing mode Inherent addressing mode Indexed, no offset addressing mode Indexed, no offset, post increment addressing mode Indexed with post increment to direct addressing mode Indexed, 8-bit offset addressing mode Indexed, 8-bit offset, post increment addressing mode Indexed, 16-bit offset addressing mode Memory location Negative bit
() ( ) # ? :
Any bit Operand (one or two bytes) Program counter Program counter high byte Program counter low byte Relative addressing mode Relative program counter offset byte Relative program counter offset byte Stack pointer, 8-bit offset addressing mode Stack pointer 16-bit offset addressing mode Stack pointer Undefined Overflow bit Index register low byte Zero bit Logical AND Logical OR Logical EXCLUSIVE OR Contents of Negation (twos complement) Immediate value Sign extend Loaded with If Concatenated with Set or cleared Not affected
Cycles
9 2 1 1 3 1 1 3 2 4 2 1 2 1
Effect on CCR
Operand
48
Bit Manipulation DIR DIR
MSB LSB
0 1 2 3
4 5 6 7 8 9 A B C D E
4 1 NEG NEGA 2 DIR 1 INH 5 4 CBEQ CBEQA 3 DIR 3 IMM 5 MUL 1 INH 4 1 COM COMA 2 DIR 1 INH 4 1 LSR LSRA 2 DIR 1 INH 4 3 STHX LDHX 2 DIR 3 IMM 4 1 ROR RORA 2 DIR 1 INH 4 1 ASR ASRA 2 DIR 1 INH 4 1 LSL LSLA 2 DIR 1 INH 4 1 ROL ROLA 2 DIR 1 INH 4 1 DEC DECA 2 DIR 1 INH 5 3 DBNZ DBNZA 3 DIR 2 INH 4 1 INC INCA 2 DIR 1 INH 3 1 TST TSTA 2 DIR 1 INH 5 MOV 3 DD 3 1 CLR CLRA 2 DIR 1 INH
5 3 NEG NEG 3 SP1 1 IX 6 4 CBEQ CBEQ 4 SP1 2 IX+ 2 DAA 1 INH 5 3 COM COM 3 SP1 1 IX 5 3 LSR LSR 3 SP1 1 IX 4 CPHX 2 DIR 5 3 ROR ROR 3 SP1 1 IX 5 3 ASR ASR 3 SP1 1 IX 5 3 LSL LSL 3 SP1 1 IX 5 3 ROL ROL 3 SP1 1 IX 5 3 DEC DEC 3 SP1 1 IX 6 4 DBNZ DBNZ 4 SP1 2 IX 5 3 INC INC 3 SP1 1 IX 4 2 TST TST 3 SP1 1 IX 4 MOV 2 IX+D 4 2 CLR CLR 3 SP1 1 IX
7 3 RTI BGE 1 INH 2 REL 4 3 RTS BLT 1 INH 2 REL 3 BGT 2 REL 9 3 SWI BLE 1 INH 2 REL 2 2 TAP TXS 1 INH 1 INH 1 2 TPA TSX 1 INH 1 INH 2 PULA 1 INH 2 1 PSHA TAX 1 INH 1 INH 2 1 PULX CLC 1 INH 1 INH 2 1 PSHX SEC 1 INH 1 INH 2 2 PULH CLI 1 INH 1 INH 2 2 PSHH SEI 1 INH 1 INH 1 1 CLRH RSP 1 INH 1 INH 1 NOP 1 INH 1 STOP * 1 INH 1 1 WAIT TXA 1 INH 1 INH
3 SUB 2 DIR 3 CMP 2 DIR 3 SBC 2 DIR 3 CPX 2 DIR 3 AND 2 DIR 3 BIT 2 DIR 3 LDA 2 DIR 3 STA 2 DIR 3 EOR 2 DIR 3 ADC 2 DIR 3 ORA 2 DIR 3 ADD 2 DIR 2 JMP 2 DIR 4 4 BSR JSR 2 REL 2 DIR 2 3 LDX LDX 2 IMM 2 DIR 2 3 AIX STX 2 IMM 2 DIR
MSB LSB
3 SUB 2 IX1 3 CMP 2 IX1 3 SBC 2 IX1 3 CPX 2 IX1 3 AND 2 IX1 3 BIT 2 IX1 3 LDA 2 IX1 3 STA 2 IX1 3 EOR 2 IX1 3 ADC 2 IX1 3 ORA 2 IX1 3 ADD 2 IX1 3 JMP 2 IX1 5 JSR 2 IX1 5 3 LDX LDX 4 SP2 2 IX1 5 3 STX STX 4 SP2 2 IX1
2 SUB 1 IX 2 CMP 1 IX 2 SBC 1 IX 2 CPX 1 IX 2 AND 1 IX 2 BIT 1 IX 2 LDA 1 IX 2 STA 1 IX 2 EOR 1 IX 2 ADC 1 IX 2 ORA 1 IX 2 ADD 1 IX 2 JMP 1 IX 4 JSR 1 IX 4 2 LDX LDX 3 SP1 1 IX 4 2 STX STX 3 SP1 1 IX
INH Inherent REL Relative IMM Immediate IX Indexed, No Offset DIR Direct IX1 Indexed, 8-Bit Offset EXT Extended IX2 Indexed, 16-Bit Offset DD Direct-Direct IMD Immediate-Direct IX+D Indexed-Direct DIX+ Direct-Indexed *Pre-byte for stack pointer indexed instructions
SP1 Stack Pointer, 8-Bit Offset SP2 Stack Pointer, 16-Bit Offset IX+ Indexed, No Offset with Post Increment IX1+ Indexed, 1-Byte Offset with Post Increment
2OSCOUT (FROM OSCILLATOR) OSCOUT (FROM OSCILLATOR) 2 VDD CLOCK CONTROL CLOCK GENERATORS INTERNAL CLOCKS
INTERNAL PULL-UP
POR CONTROL RESET PIN CONTROL SIM RESET STATUS REGISTER MASTER RESET CONTROL
ILLEGAL OPCODE (FROM CPU) ILLEGAL ADDRESS (FROM ADDRESS MAP DECODERS) COP TIMEOUT (FROM COP MODULE) USB RESET (FROM USB MODULE)
RESET
Read: Break Status Register $FE00 Write: (BSR) Reset: Note: Writing a 0 clears SBSW. Read: Reset Status Register Write: $FE01 (RSR) POR: Read: $FE02 Reserved Write: Reset: Read: Break Flag Control $FE03 Write: Register (BFCR) Reset:
BCFE 0
R R
R = Reserved
= Unimplemented
SIM Bus Clock Control and Generation Addr. $FE04 Register Name Interrupt Status Register 1 (INT1) Interrupt Status Register 2 (INT2) Interrupt Status Register 3 (INT3) Read: Write: Reset: Read: Write: Reset: Read: Write: Reset: Bit 7 0 R 0 IF14 R 0 0 R 0 6 5 IF5 IF4 R R 0 0 0 0 R R 0 0 0 0 R R 0 0 = Unimplemented 4 IF3 R 0 0 R 0 0 R 0 3 0 R 0 0 R 0 0 R 0 R 2 IF1 R 0 0 R 0 0 R 0 = Reserved 1 0 R 0 0 R 0 0 R 0 Bit 0 0 R 0 0 R 0 IF15 R 0
$FE05
$FE06
2OSCOUT OSCOUT
SIM COUNTER
SIM
All of these resets produce the vector $FFFE$FFFF ($FEFE$FEFF in Monitor mode) and assert the internal reset signal (IRST). IRST causes all registers to be returned to their default values and all modules to be returned to their reset states. An internal reset clears the SIM counter (see 5.4 SIM Counter), but an external reset does not. Each of the resets sets a corresponding bit in the reset status register (RSR). (See 5.7 SIM Registers.)
RST
2OSCOUT
IAB
VECTOR HIGH
Figure 5-5. Internal Reset Timing The COP reset is asynchronous to the bus clock.
ILLEGAL ADDRESS RST ILLEGAL OPCODE RST COPRST POR LVI INTERNAL RESET
Figure 5-6. Sources of Internal Reset The active reset feature allows the part to issue a reset to peripherals and other chips within a system built around the MCU. 5.3.2.1 Power-On Reset When power is first applied to the MCU, the power-on reset module (POR) generates a pulse to indicate that power-on has occurred. The external reset pin (RST) is held low while the SIM counter counts out 4096 2OSCOUT cycles. Sixty-four 2OSCOUT cycles later, the CPU and memories are released from reset to allow the reset vector sequence to occur. At power-on, the following events occur: A POR pulse is generated. The internal reset signal is asserted. The SIM enables the oscillator to drive 2OSCOUT. Internal clocks to the CPU and modules are held inactive for 4096 2OSCOUT cycles to allow stabilization of the oscillator. The RST pin is driven low during the oscillator stabilization time. The POR bit of the reset status register (RSR) is set and all other bits in the register are cleared.
OSC1
OSCOUT
RST
IAB
$FFFE
$FFFF
SIM Counter
5.3.2.5 LVI Reset The low-voltage inhibit module (LVI) asserts its output to the SIM when the VDD voltage falls to the LVI trip voltage VTRIP. The LVI bit in the SIM reset status register (SRSR) is set, and the external reset pin (RSTB) is held low while the SIM counter counts out 4096 2OSCOUT cycles. Sixty-four 2OSCOUT cycles later, the CPU and memories are released from reset to allow the reset vector sequence to occur. The SIM actively pulls down the (RSTB) pin for all internal reset sources.
5.5.1 Interrupts
An interrupt temporarily changes the sequence of program execution to respond to a particular event. Figure 5-8 flow charts the handling of system interrupts.
MC68HC908JL3E Family Data Sheet, Rev. 4 Freescale Semiconductor 55
Interrupts are latched, and arbitration is performed in the SIM at the start of interrupt processing. The arbitration result is a constant that the CPU uses to determine which vector to fetch. Once an interrupt is latched by the SIM, no other interrupt can take precedence, regardless of priority, until the latched interrupt is serviced (or the I bit is cleared).
FROM RESET
YES
YES
I BIT SET?
NO
IRQ INTERRUPT? NO
YES
YES
SWI INSTRUCTION? NO
YES
RTI INSTRUCTION? NO
YES
EXECUTE INSTRUCTION.
Exception Control
At the beginning of an interrupt, the CPU saves the CPU register contents on the stack and sets the interrupt mask (I bit) to prevent additional interrupts. At the end of an interrupt, the RTI instruction recovers the CPU register contents from the stack so that normal processing can resume. Figure 5-9 shows interrupt entry timing. Figure 5-10 shows interrupt recovery timing.
MODULE INTERRUPT I BIT
IAB
DUMMY
SP
SP 1
SP 2
SP 3
SP 4
VECT H
VECT L
START ADDR
IDB
DUMMY
PC 1[7:0] PC 1[15:8]
CCR
V DATA H
V DATA L
OPCODE
R/W
IAB
SP 4
SP 3
SP 2
SP 1
SP
PC
PC + 1
IDB
CCR
PC 1[15:8] PC 1[7:0]
OPCODE
OPERAND
R/W
INT1
INT2
Figure 5-11. Interrupt Recognition Example The LDA opcode is prefetched by both the INT1 and INT2 RTI instructions. However, in the case of the INT1 RTI prefetch, this is a redundant operation. NOTE To maintain compatibility with the M6805 Family, the H register is not pushed on the stack during interrupt entry. If the interrupt service routine modifies the H register or uses the indexed addressing mode, software should save the H register and then restore it prior to exiting the routine. 5.5.1.2 SWI Instruction The SWI instruction is a non-maskable instruction that causes an interrupt regardless of the state of the interrupt mask (I bit) in the condition code register. NOTE A software interrupt pushes PC onto the stack. A software interrupt does not push PC 1, as a hardware interrupt does.
Exception Control
1. The I bit in the condition code register is a global mask for all interrupts sources except the SWI instruction.
Figure 5-12. Interrupt Status Register 1 (INT1) IF1, IF3 to IF5 Interrupt Flags These flags indicate the presence of interrupt requests from the sources shown in Table 5-3. 1 = Interrupt request present 0 = No interrupt request present Bit 0, 1, 3 and 7 Always read 0 5.5.2.2 Interrupt Status Register 2
Address: Read: Write: Reset: $FE05 Bit 7 IF14 R 0 R 6 0 R 0 = Reserved 5 0 R 0 4 0 R 0 3 0 R 0 2 0 R 0 1 0 R 0 Bit 0 0 R 0
IF14 Interrupt Flags This flag indicates the presence of interrupt requests from the sources shown in Table 5-3. 1 = Interrupt request present 0 = No interrupt request present Bit 0 to 6 Always read 0 5.5.2.3 Interrupt Status Register 3
Address: Read: Write: Reset: $FE06 Bit 7 0 R 0 R 6 0 R 0 = Reserved 5 0 R 0 4 0 R 0 3 0 R 0 2 0 R 0 1 0 R 0 Bit 0 IF15 R 0
Figure 5-14. Interrupt Status Register 3 (INT3) IF15 Interrupt Flags These flags indicate the presence of interrupt requests from the sources shown in Table 5-3. 1 = Interrupt request present 0 = No interrupt request present Bit 1 to 7 Always read 0
5.5.3 Reset
All reset sources always have equal and highest priority and cannot be arbitrated.
Low-Power Modes
IAB
WAIT ADDR
WAIT ADDR + 1
SAME
SAME
IDB
PREVIOUS DATA
NEXT OPCODE
SAME
SAME
R/W
NOTE: Previous data can be operand data or the WAIT opcode, depending on the last instruction.
Figure 5-15. Wait Mode Entry Timing Figure 5-16 and Figure 5-17 show the timing for WAIT recovery.
IAB
$6E0B
$6E0C
$00FF
$00FE
$00FD
$00FC
IDB
$A6
$A6
$A6
$01
$0B
$6E
IDB
$A6
$A6
$A6
RST
2OSCOUT
IAB
STOP ADDR
STOP ADDR + 1
SAME
SAME
IDB
PREVIOUS DATA
NEXT OPCODE
SAME
SAME
R/W
NOTE: Previous data can be operand data or the STOP opcode, depending on the last instruction.
SIM Registers
STOP RECOVERY PERIOD 2OSCOUT
INT/BREAK
IAB
STOP +1
STOP + 2
STOP + 2
SP
SP 1
SP 2
SP 3
Figure 5-20. Break Status Register (BSR) SBSW SIM Break Stop/Wait SBSW can be read within the break state SWI routine. The user can modify the return address on the stack by subtracting one from it. 1 = Wait mode was exited by break interrupt 0 = Wait mode was not exited by break interrupt
Figure 5-21. Reset Status Register (RSR) POR Power-On Reset Bit 1 = Last reset caused by POR circuit 0 = Read of SRSR PIN External Reset Bit 1 = Last reset caused by external reset pin (RST) 0 = POR or read of SRSR COP Computer Operating Properly Reset Bit 1 = Last reset caused by COP counter 0 = POR or read of SRSR ILOP Illegal Opcode Reset Bit 1 = Last reset caused by an illegal opcode 0 = POR or read of SRSR ILAD Illegal Address Reset Bit (opcode fetches only) 1 = Last reset caused by an opcode fetch from an illegal address 0 = POR or read of SRSR MODRST Monitor Mode Entry Module Reset bit 1 = Last reset caused by monitor mode entry when vector locations $FFFE and $FFFF are $FF after POR while IRQ = VDD 0 = POR or read of SRSR LVI Low Voltage Inhibit Reset bit 1 = Last reset caused by LVI circuit 0 = POR or read of SRSR
SIM Registers
Figure 5-22. Break Flag Control Register (BFCR) BCFE Break Clear Flag Enable Bit This read/write bit enables software to clear status bits by accessing status registers while the MCU is in a break state. To clear status bits during the break state, the BCFE bit must be set. 1 = Status bits clearable during break 0 = Status bits not clearable during break
Oscillator (OSC)
From SIM To SIM 2OSCOUT To SIM OSCOUT
XTALCLK SIMOSCEN
MCU
OSC1 RB OSC2
RS* X1 *RS can be zero (shorted) when used with higher-frequency crystals. Refer to manufacturers data. See Chapter 16 Electrical Specifications for component value requirements. C1 C2
From SIM
To SIM 2OSCOUT
To SIM OSCOUT
SIMOSCEN
EN
Ext-RC Oscillator
RCCLK
0 PTA6 I/O
PTA6 PTA6EN
MCU
OSC1 PTA6/RCCLK (OSC2)
VDD
REXT
CEXT
I/O Signals
Oscillator (OSC)
7.2 Features
Features of the monitor ROM include the following: Normal user-mode pin functionality One pin dedicated to serial communication between monitor ROM and host computer Standard mark/space non-return-to-zero (NRZ) communication with host computer Execution of code in RAM or Flash Flash memory security feature(1) Flash memory programming interface 960 bytes monitor ROM code size Monitor mode entry without high voltage, VTST, if reset vector is blank ($FFFE and $FFFF contain $FF) Standard monitor mode entry if high voltage, VTST, is applied to IRQ
1. No security feature is absolutely secure. However, Freescales strategy is to make reading or copying the Flash difficult for unauthorized users. MC68HC908JL3E Family Data Sheet, Rev. 4 Freescale Semiconductor 71
VDD See Figure 16-1. RC vs. Frequency (5V @25 C) for component values vs. frequency. OSC1 OSC2
RST 0.1 F
EXT OSC FOR MC68HC908JL3E/JK3E/JK1E SW1 AT POSITION A OR B FOR MC68HRC908JL3E/JK3E/JK1E SW1 MUST BE AT POSITION A
VDD
XTAL CIRCUIT FOR MC68HC908JL3E/JK3E/JK1E SW1 AT POSITION A OR B MAX232 1 1 F + 3 4 1 F + 5 C2 DB9 2 3 5 7 8 10 9 74HC125 3 2 1 V 6 + 1 F 74HC125 5 6 4 10 k C1+ VCC 16 + 15 + 2 VTST VDD 1 F 1 F VDD 20 pF
9.8304MHz 10M
OSC1
OSC2 20 pF
C1 C2+
GND V+
A 1k 8.5 V B
SW1
10 k
(SEE NOTE 2) NOTES: D 1. Monitor mode entry method: SW1: Position A High voltage entry (VTST) 10 k Clock source must be EXT OSC or XTAL CIRCUIT. Bus clock depends on SW2. SW1: Position B Reset vector must be blank ($FFFE = $FFFF = $FF) Bus clock = OSC1 4. 2. Affects high voltage entry to monitor mode only (SW1 at position A): SW2: Position C Bus clock = OSC1 4 SW2: Position D Bus clock = OSC1 2 5. See Table 16-4. DC Electrical Characteristics (5V) for VTST voltage level requirements.
Functional Description
VTST(2) VTST
0 1
0 0
1 1
1 1
4.9152MHz 9.8304MHz
High-voltage entry to monitor mode.(3) 9600 baud communication on PTB0. COP disabled. Low-voltage entry to monitor mode.(4) 9600 baud communication on PTB0. COP disabled. Enters User mode.
VDD
9.8304MHz
VDD
At desired frequency
OSC1 4
1. PTB3 = 0: Bypasses the divide-by-two prescaler to SIM when using VTST for monitor mode entry. The OSC1 clock must be 50% duty cycle for this condition. 2. See Table 16-4. DC Electrical Characteristics (5V) for VTST voltage level requirements. 3. For IRQ = VTST: MC68HRC908JL3E/JK3E/JK1E clock must be EXT OSC. MC68HC908JL3E/JK3E/JK1E clock can be EXT OSC or XTAL. 4. For IRQ = VDD: MC68HRC908JL3E/JK3E/JK1E clock must be RC OSC. MC68HC908JL3E/JK3E/JK1E clock can be EXT OSC or XTAL.
If VTST is applied to IRQ and PTB3 is low upon monitor mode entry (Table 7-1 condition set 1), the bus frequency is a divide-by-two of the clock input to OSC1. If PTB3 is high with VTST applied to IRQ upon monitor mode entry (Table 7-1 condition set 2), the bus frequency is a divide-by-four of the clock input to OSC1. Holding the PTB3 pin low when entering monitor mode causes a bypass of a divide-by-two stage at the oscillator only if VTST is applied to IRQ. In this event, the OSCOUT frequency is equal to the 2OSCOUT frequency, and OSC1 input directly generates internal bus clocks. In this case, the OSC1 signal must have a 50% duty cycle at maximum bus frequency.
Entering monitor mode with VTST on IRQ, the COP is disabled as long as VTST is applied to either the IRQ or the RST. (See Chapter 5 System Integration Module (SIM) for more information on modes of operation.) If entering monitor mode without high voltage on IRQ and reset vector being blank ($FFFE and $FFFF) (Table 7-1 condition set 3, where applied voltage is VDD), then all port B pin requirements and conditions, including the PTB3 frequency divisor selection, are not in effect. This is to reduce circuit requirements when performing in-circuit programming. Entering monitor mode with the reset vector being blank, the COP is always disabled regardless of the state of IRQ or the RST. Figure 7-2. shows a simplified diagram of the monitor mode entry when the reset vector is blank and IRQ = VDD. An OSC1 frequency of 9.8304MHz is required for a baud rate of 9600.
POR RESET
NO
NO
Figure 7-2. Low-Voltage Monitor Mode Entry Flowchart Enter monitor mode with the pin configuration shown above by pulling RST low and then high. The rising edge of RST latches monitor mode. Once monitor mode is latched, the values on the specified pins can change. Once out of reset, the MCU waits for the host to send eight security bytes. (See 7.4 Security.) After the security bytes, the MCU sends a break signal (10 consecutive logic zeros) to the host, indicating that it is ready to receive a command. The break signal also provides a timing reference to allow the host to determine the necessary baud rate. In monitor mode, the MCU uses different vectors for reset, SWI, and break interrupt. The alternate vectors are in the $FE page instead of the $FF page and allow code execution from the internal monitor firmware instead of user code.
Functional Description
Table 7-2 is a summary of the vector differences between user mode and monitor mode. Table 7-2. Monitor Mode Vector Differences
Functions Modes COP Enabled Disabled(1) Reset Vector High $FFFE $FEFE Reset Vector Low $FFFF $FEFF Break Vector High $FFFC $FEFC Break Vector Low $FFFD $FEFD SWI Vector High $FFFC $FEFC SWI Vector Low $FFFD $FEFD
User Monitor
1. If the high voltage (VTST) is removed from the IRQ pin or the RST pin, the SIM asserts its COP enable output. The COP is a mask option enabled or disabled by the COPD bit in the configuration register.
When the host computer has completed downloading code into the MCU RAM, the host then sends a RUN command, which executes an RTI, which sends control to the address on the stack pointer.
BIT 0
BIT 1
BIT 2
BIT 3
BIT 4
BIT 5
BIT 6
BIT 7
STOP BIT
$A5 BREAK
BIT 0 BIT 0
BIT 1 BIT 1
BIT 2 BIT 2
BIT 3 BIT 3
BIT 4 BIT 4
BIT 5 BIT 5
BIT 6 BIT 6
BIT 7 BIT 7
Figure 7-4. Sample Monitor Waveforms The data transmit and receive rate can be anywhere from 4800 baud to 28.8k-baud. Transmit and receive baud rates must be identical.
7.3.4 Echoing
As shown in Figure 7-5, the monitor ROM immediately echoes each received byte back to the PTB0 pin for error checking.
SENT TO MONITOR READ ECHO READ ADDR. HIGH ADDR. HIGH ADDR. LOW ADDR. LOW DATA
RESULT
Figure 7-5. Read Transaction Any result of a command appears after the echo of the last byte of the command.
Functional Description
7.3.6 Commands
The monitor ROM uses the following commands: READ (read memory) WRITE (write memory) IREAD (indexed read) IWRITE (indexed write) READSP (read stack pointer) RUN (run user program) Table 7-4. READ (Read Memory) Command
Description Operand Data Returned Opcode Command Sequence
SENT TO MONITOR
Read byte from memory Specifies 2-byte address in high byte:low byte order Returns contents of specified address $4A
READ
READ
ADDR. HIGH
ADDR. HIGH
ADDR. LOW
ADDR. LOW
DATA
ECHO
RESULT
Write byte to memory Specifies 2-byte address in high byte:low byte order; low byte followed by data byte None $49
ECHO
Read next 2 bytes in memory from last address accessed Specifies 2-byte address in high byte:low byte order Returns contents of next two addresses $1A
ECHO
RESULT
Write to last address accessed + 1 Specifies single data byte None $19
ECHO
NOTE A sequence of IREAD or IWRITE commands can sequentially access a block of memory over the full 64-Kbyte memory map.
Security
Reads stack pointer None Returns stack pointer in high byte:low byte order $0C
ECHO
RESULT
ECHO
7.4 Security
A security feature discourages unauthorized reading of Flash locations while in monitor mode. The host can bypass the security feature at monitor mode entry by sending eight security bytes that match the bytes at locations $FFF6$FFFD. Locations $FFF6$FFFD contain user-defined data. NOTE Do not leave locations $FFF6$FFFD blank. For security reasons, program locations $FFF6$FFFD even if they are not used for vectors. During monitor mode entry, the MCU waits after the power-on reset for the host to send the eight security bytes on pin PTB0. If the received bytes match those at locations $FFF6$FFFD, the host bypasses the security feature and can read all Flash locations and execute code from Flash. Security remains bypassed until a power-on reset occurs. If the reset was not a power-on reset, security remains bypassed and security code entry is not required. (See Figure 7-7.)
MC68HC908JL3E Family Data Sheet, Rev. 4 Freescale Semiconductor 79
VDD 4096 + 32 OSCXCLK CYCLES RST COMMAND 1 BYTE 8 ECHO BYTE 2 ECHO 2 4 1 COMMAND ECHO BREAK 24 BUS CYCLES BYTE 1 BYTE 2 BYTE 8 1
FROM HOST
NOTES: 1 = Echo delay, 2 bit times 2 = Data return delay, 2 bit times 4 = Wait 1 bit time before sending next byte.
Figure 7-7. Monitor Mode Entry Timing Upon power-on reset, if the received bytes of the security code do not match the data at locations $FFF6$FFFD, the host fails to bypass the security feature. The MCU remains in monitor mode, but reading a Flash location returns an invalid value and trying to execute code from Flash causes an illegal address reset. After receiving the eight security bytes from the host, the MCU transmits a break character, signifying that it is ready to receive a command. NOTE The MCU does not transmit a break character until after the host sends the eight security bytes. To determine whether the security code entered is correct, check to see if bit 6 of RAM address $80 is set. If it is, then the correct security code has been entered and Flash can be accessed. If the security sequence fails, the device should be reset by a power-on reset and brought up in monitor mode to attempt another entry. After failing the security sequence, the Flash module can also be mass erased by executing an erase routine that was downloaded into internal RAM. The mass erase operation clears the security code locations so that all eight security bytes become $FF (blank).
8.2 Features
Features of the TIM include the following: Two input capture/output compare channels Rising-edge, falling-edge, or any-edge input capture trigger Set, clear, or toggle output compare action Buffered and unbuffered pulse width modulation (PWM) signal generation Programmable TIM clock input with 7-frequency internal bus clock prescaler selection Free-running or modulo up-count operation Toggle any channel pin on overflow TIM counter stop and reset bits
PRESCALER SELECT INTERNAL BUS CLOCK TSTOP TRST 16-BIT COUNTER 16-BIT COMPARATOR TMODH:TMODL TOV0 CHANNEL 0 16-BIT COMPARATOR TCH0H:TCH0L 16-BIT LATCH MS0A MS0B TOV1 INTERNAL BUS CHANNEL 1 16-BIT COMPARATOR TCH1H:TCH1L 16-BIT LATCH MS1A CH1IE CH1F INTERRUPT LOGIC ELS1B ELS1A CH1MAX PORT LOGIC TCH1 CH0IE CH0F INTERRUPT LOGIC ELS0B ELS0A CH0MAX PORT LOGIC TCH0 PRESCALER
PS2
PS1
PS0
TOF TOIE
INTERRUPT LOGIC
Functional Description
Addr. $0020
Register Name Read: TIM Status and Control Register (TSC) Write: Reset: Read:
$0021
$0022
$0023
$0024
$0025
$0026
Indeterminate after reset Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
$0027
Indeterminate after reset CH1F 0 0 Bit15 CH1IE 0 Bit14 0 0 Bit13 MS1A 0 Bit12 ELS1B 0 Bit11 ELS1A 0 Bit10 TOV1 0 Bit9 CH1MAX 0 Bit8
$0028
$0029
Indeterminate after reset Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
$002A
Write: Reset:
Functional Description
control the output are the ones written to last. TSC0 controls and monitors the buffered output compare function, and TIM channel 1 status and control register (TSC1) is unused. While the MS0B bit is set, the channel 1 pin, TCH1, is available as a general-purpose I/O pin. NOTE In buffered output compare operation, do not write new output compare values to the currently active channel registers. User software should track the currently active channel to prevent writing a new value to the active channel. Writing to the active channel registers is the same as generating unbuffered output compares.
OUTPUT COMPARE
OUTPUT COMPARE
OUTPUT COMPARE
Figure 8-3. PWM Period and Pulse Width The value in the TIM counter modulo registers and the selected prescaler output determines the frequency of the PWM output. The frequency of an 8-bit PWM signal is variable in 256 increments. Writing $00FF (255) to the TIM counter modulo registers produces a PWM period of 256 times the internal bus clock period if the prescaler select value is 000 (see 8.9.1 TIM Status and Control Register (TSC)). The value in the TIM channel registers determines the pulse width of the PWM output. The pulse width of an 8-bit PWM signal is variable in 256 increments. Writing $0080 (128) to the TIM channel registers produces a duty cycle of 128/256 or 50%.
8.4.4.1 Unbuffered PWM Signal Generation Any output compare channel can generate unbuffered PWM pulses as described in 8.4.4 Pulse Width Modulation (PWM). The pulses are unbuffered because changing the pulse width requires writing the new pulse width value over the old value currently in the TIM channel registers. An unsynchronized write to the TIM channel registers to change a pulse width value could cause incorrect operation for up to two PWM periods. For example, writing a new value before the counter reaches the old value but after the counter reaches the new value prevents any compare during that PWM period. Also, using a TIM overflow interrupt routine to write a new, smaller pulse width value may cause the compare to be missed. The TIM may pass the new value before it is written. Use the following methods to synchronize unbuffered changes in the PWM pulse width on channel x: When changing to a shorter pulse width, enable channel x output compare interrupts and write the new value in the output compare interrupt routine. The output compare interrupt occurs at the end of the current pulse. The interrupt routine has until the end of the PWM period to write the new value. When changing to a longer pulse width, enable TIM overflow interrupts and write the new value in the TIM overflow interrupt routine. The TIM overflow interrupt occurs at the end of the current PWM period. Writing a larger value in an output compare interrupt routine (at the end of the current pulse) could cause two output compares to occur in the same PWM period. NOTE In PWM signal generation, do not program the PWM channel to toggle on output compare. Toggling on output compare prevents reliable 0% duty cycle generation and removes the ability of the channel to self-correct in the event of software error or noise. Toggling on output compare also can cause incorrect PWM signal generation when changing the PWM pulse width to a new, much larger value. 8.4.4.2 Buffered PWM Signal Generation Channels 0 and 1 can be linked to form a buffered PWM channel whose output appears on the TCH0 pin. The TIM channel registers of the linked pair alternately control the pulse width of the output. Setting the MS0B bit in TIM channel 0 status and control register (TSC0) links channel 0 and channel 1. The TIM channel 0 registers initially control the pulse width on the TCH0 pin. Writing to the TIM channel 1 registers enables the TIM channel 1 registers to synchronously control the pulse width at the beginning of the next PWM period. At each subsequent overflow, the TIM channel registers (0 or 1) that control the pulse width are the ones written to last. TSC0 controls and monitors the buffered PWM function, and TIM channel 1 status and control register (TSC1) is unused. While the MS0B bit is set, the channel 1 pin, TCH1, is available as a general-purpose I/O pin. NOTE In buffered PWM signal generation, do not write new pulse width values to the currently active channel registers. User software should track the currently active channel to prevent writing a new value to the active channel. Writing to the active channel registers is the same as generating unbuffered PWM signals.
Functional Description
8.4.4.3 PWM Initialization To ensure correct operation when generating unbuffered or buffered PWM signals, use the following initialization procedure: 1. In the TIM status and control register (TSC): a. Stop the TIM counter by setting the TIM stop bit, TSTOP. b. Reset the TIM counter and prescaler by setting the TIM reset bit, TRST. 2. In the TIM counter modulo registers (TMODH:TMODL), write the value for the required PWM period. 3. In the TIM channel x registers (TCHxH:TCHxL), write the value for the required pulse width. 4. In TIM channel x status and control register (TSCx): a. Write 0:1 (for unbuffered output compare or PWM signals) or 1:0 (for buffered output compare or PWM signals) to the mode select bits, MSxB:MSxA. (See Table 8-3.) b. Write 1 to the toggle-on-overflow bit, TOVx. c. Write 1:0 (to clear output on compare) or 1:1 (to set output on compare) to the edge/level select bits, ELSxB:ELSxA. The output action on compare must force the output to the complement of the pulse width level. (See Table 8-3.) NOTE In PWM signal generation, do not program the PWM channel to toggle on output compare. Toggling on output compare prevents reliable 0% duty cycle generation and removes the ability of the channel to self-correct in the event of software error or noise. Toggling on output compare can also cause incorrect PWM signal generation when changing the PWM pulse width to a new, much larger value. 5. In the TIM status control register (TSC), clear the TIM stop bit, TSTOP. Setting MS0B links channels 0 and 1 and configures them for buffered PWM operation. The TIM channel 0 registers (TCH0H:TCH0L) initially control the buffered PWM output. TIM status control register 0 (TSC0) controls and monitors the PWM signal from the linked channels. MS0B takes priority over MS0A. Clearing the toggle-on-overflow bit, TOVx, inhibits output toggles on TIM overflows. Subsequent output compares try to force the output to a state it is already in and have no effect. The result is a 0% duty cycle output. Setting the channel x maximum duty cycle bit (CHxMAX) and setting the TOVx bit generates a 100% duty cycle output. (See 8.9.4 TIM Channel Status and Control Registers (TSC0:TSC1).)
8.5 Interrupts
The following TIM sources can generate interrupt requests: TIM overflow flag (TOF) The TOF bit is set when the TIM counter reaches the modulo value programmed in the TIM counter modulo registers. The TIM overflow interrupt enable bit, TOIE, enables TIM overflow CPU interrupt requests. TOF and TOIE are in the TIM status and control register. TIM channel flags (CH1F:CH0F) The CHxF bit is set when an input capture or output compare occurs on channel x. Channel x TIM CPU interrupt requests are controlled by the channel x interrupt enable bit, CHxIE. Channel x TIM CPU interrupt requests are enabled when CHxIE=1. CHxF and CHxIE are in the TIM channel x status and control register.
I/O Signals
Figure 8-4. TIM Status and Control Register (TSC) TOF TIM Overflow Flag Bit This read/write flag is set when the TIM counter reaches the modulo value programmed in the TIM counter modulo registers. Clear TOF by reading the TIM status and control register when TOF is set and then writing a zero to TOF. If another TIM overflow occurs before the clearing sequence is complete, then writing zero to TOF has no effect. Therefore, a TOF interrupt request cannot be lost due to inadvertent clearing of TOF. Reset clears the TOF bit. Writing a 1 to TOF has no effect. 1 = TIM counter has reached modulo value 0 = TIM counter has not reached modulo value TOIE TIM Overflow Interrupt Enable Bit This read/write bit enables TIM overflow interrupts when the TOF bit becomes set. Reset clears the TOIE bit. 1 = TIM overflow interrupts enabled 0 = TIM overflow interrupts disabled
TSTOP TIM Stop Bit This read/write bit stops the TIM counter. Counting resumes when TSTOP is cleared. Reset sets the TSTOP bit, stopping the TIM counter until software clears the TSTOP bit. 1 = TIM counter stopped 0 = TIM counter active NOTE Do not set the TSTOP bit before entering wait mode if the TIM is required to exit wait mode. When the TSTOP bit is set and the timer is configured for input capture operation, input captures are inhibited until the TSTOP bit is cleared. When using TSTOP to stop the timer counter, see if any timer flags are set. If a timer flag is set, it must be cleared by clearing TSTOP, then clearing the flag, then setting TSTOP again. TRST TIM Reset Bit Setting this write-only bit resets the TIM counter and the TIM prescaler. Setting TRST has no effect on any other registers. Counting resumes from $0000. TRST is cleared automatically after the TIM counter is reset and always reads as zero. Reset clears the TRST bit. 1 = Prescaler and TIM counter cleared 0 = No effect NOTE Setting the TSTOP and TRST bits simultaneously stops the TIM counter at a value of $0000. PS[2:0] Prescaler Select Bits These read/write bits select one of the seven prescaler outputs as the input to the TIM counter as Table 8-2 shows. Reset clears the PS[2:0] bits. Table 8-2. Prescaler Selection
PS2 0 0 0 0 1 1 1 1 PS1 0 0 1 1 0 0 1 1 PS0 0 1 0 1 0 1 0 1 TIM Clock Source Internal Bus Clock 1 Internal Bus Clock 2 Internal Bus Clock 4 Internal Bus Clock 8 Internal Bus Clock 16 Internal Bus Clock 32 Internal Bus Clock 64 Not available
I/O Registers
Figure 8-6. TIM Counter Modulo Registers (TMODH:TMODL) NOTE Reset the TIM counter before writing to the TIM counter modulo registers.
MC68HC908JL3E Family Data Sheet, Rev. 4 Freescale Semiconductor 91
Figure 8-7. TIM Channel Status and Control Registers (TSC0:TSC1) CHxF Channel x Flag Bit When channel x is an input capture channel, this read/write bit is set when an active edge occurs on the channel x pin. When channel x is an output compare channel, CHxF is set when the value in the TIM counter registers matches the value in the TIM channel x registers. When TIM CPU interrupt requests are enabled (CHxIE=1), clear CHxF by reading the TIM channel x status and control register with CHxF set and then writing a zero to CHxF. If another interrupt request occurs before the clearing sequence is complete, then writing zero to CHxF has no effect. Therefore, an interrupt request cannot be lost due to inadvertent clearing of CHxF. Reset clears the CHxF bit. Writing a one to CHxF has no effect. 1 = Input capture or output compare on channel x 0 = No input capture or output compare on channel x CHxIE Channel x Interrupt Enable Bit This read/write bit enables TIM CPU interrupt service requests on channel x. Reset clears the CHxIE bit. 1 = Channel x CPU interrupt requests enabled 0 = Channel x CPU interrupt requests disabled
I/O Registers
MSxB Mode Select Bit B This read/write bit selects buffered output compare/PWM operation. MSxB exists only in the TIM channel 0 status and control register. Setting MS0B disables the channel 1 status and control register and reverts TCH1 to general-purpose I/O. Reset clears the MSxB bit. 1 = Buffered output compare/PWM operation enabled 0 = Buffered output compare/PWM operation disabled MSxA Mode Select Bit A When ELSxB:ELSxA 0:0, this read/write bit selects either input capture operation or unbuffered output compare/PWM operation. See Table 8-3. 1 = Unbuffered output compare/PWM operation 0 = Input capture operation When ELSxB:ELSxA = 0:0, this read/write bit selects the initial output level of the TCHx pin. (See Table 8-3.) Reset clears the MSxA bit. 1 = Initial output level low 0 = Initial output level high NOTE Before changing a channel function by writing to the MSxB or MSxA bit, set the TSTOP and TRST bits in the TIM status and control register (TSC). ELSxB and ELSxA Edge/Level Select Bits When channel x is an input capture channel, these read/write bits control the active edge-sensing logic on channel x. When channel x is an output compare channel, ELSxB and ELSxA control the channel x output behavior when an output compare occurs. When ELSxB and ELSxA are both clear, channel x is not connected to an I/O port, and pin TCHx is available as a general-purpose I/O pin. Table 8-3 shows how ELSxB and ELSxA work. Reset clears the ELSxB and ELSxA bits. Table 8-3. Mode, Edge, and Level Selection
MSxB X X 0 0 0 0 0 0 1 1 1 MSxA 0 1 0 0 0 1 1 1 X X X ELSxB 0 0 0 1 1 0 1 1 0 1 1 ELSxA 0 Output Preset 0 1 0 1 1 0 1 1 0 1 Output Compare or PWM Buffered Output Compare or Buffered PWM Input Capture Pin under Port Control; Initial Output Level Low Capture on Rising Edge Only Capture on Falling Edge Only Capture on Rising or Falling Edge Toggle Output on Compare Clear Output on Compare Set Output on Compare Toggle Output on Compare Clear Output on Compare Set Output on Compare Mode Configuration Pin under Port Control; Initial Output Level High
NOTE Before enabling a TIM channel register for input capture operation, make sure that the TCHx pin is stable for at least two bus clocks.
MC68HC908JL3E Family Data Sheet, Rev. 4 Freescale Semiconductor 93
TOVx Toggle-On-Overflow Bit When channel x is an output compare channel, this read/write bit controls the behavior of the channel x output when the TIM counter overflows. When channel x is an input capture channel, TOVx has no effect. Reset clears the TOVx bit. 1 = Channel x pin toggles on TIM counter overflow. 0 = Channel x pin does not toggle on TIM counter overflow. NOTE When TOVx is set, a TIM counter overflow takes precedence over a channel x output compare if both occur at the same time. CHxMAX Channel x Maximum Duty Cycle Bit When the TOVx bit is at one, setting the CHxMAX bit forces the duty cycle of buffered and unbuffered PWM signals to 100%. As Figure 8-8 shows, the CHxMAX bit takes effect in the cycle after it is set or cleared. The output stays at the 100% duty cycle level until the cycle after CHxMAX is cleared.
OVERFLOW PERIOD OVERFLOW OVERFLOW OVERFLOW OVERFLOW
TCHx
OUTPUT COMPARE
OUTPUT COMPARE
OUTPUT COMPARE
I/O Registers
9.2 Features
Features of the ADC module include: 12 channels with multiplexed input Linear successive approximation with monotonicity 8-bit resolution Single or continuous conversion Conversion complete flag or conversion complete interrupt Selectable ADC clock
Addr. $003C Register Name Read: ADC Status and Control Write: Register (ADSCR) Reset: Read: ADC Data Register Write: (ADR) Reset: Read: $003E ADC Input Clock Register Write: (ADICLK) Reset: Bit 7 COCO 0 AD7 6 AIEN 0 AD6 5 ADCO 0 AD5 4 ADCH4 1 AD4 3 ADCH3 1 AD3 2 ADCH2 1 AD2 1 ADCH1 1 AD1 Bit 0 ADCH0 1 AD0
$003D
WRITE DDRB/DDRD
READ PTB/PTD
INTERRUPT LOGIC
CONVERSION COMPLETE
ADC
ADCH[4:0]
AIEN
COCO
ADC CLOCK
BUS CLOCK
CLOCK GENERATOR
ADIV[2:0]
ADICLK
Interrupts
Conversion Time =
9.4 Interrupts
When the AIEN bit is set, the ADC module is capable of generating a CPU interrupt after each ADC conversion. A CPU interrupt is generated if the COCO bit is at 0. The COCO bit is not used as a conversion complete flag when interrupts are enabled.
= Unimplemented
Figure 9-3. ADC Status and Control Register (ADSCR) COCO Conversions Complete Bit When the AIEN bit is a 0, the COCO is a read-only bit which is set each time a conversion is completed. This bit is cleared whenever the ADC status and control register is written or whenever the ADC data register is read. Reset clears this bit. 1 = Conversion completed (AIEN = 0) 0 = Conversion not completed (AIEN = 0) When the AIEN bit is a 1 (CPU interrupt enabled), the COCO is a read-only bit, and will always be 0 when read. AIEN ADC Interrupt Enable Bit When this bit is set, an interrupt is generated at the end of an ADC conversion. The interrupt signal is cleared when the data register is read or the status/control register is written. Reset clears the AIEN bit. 1 = ADC interrupt enabled 0 = ADC interrupt disabled
I/O Registers
ADCO ADC Continuous Conversion Bit When set, the ADC will convert samples continuously and update the ADR register at the end of each conversion. Only one conversion is allowed when this bit is cleared. Reset clears the ADCO bit. 1 = Continuous ADC conversion 0 = One ADC conversion ADCH[4:0] ADC Channel Select Bits ADCH[4:0] form a 5-bit field which is used to select one of the ADC channels. The five channel select bits are detailed in the following table. Care should be taken when using a port pin as both an analog and a digital input simultaneously to prevent switching noise from corrupting the analog signal. The ADC subsystem is turned off when the channel select bits are all set to one. This feature allows for reduced power consumption for the MCU when the ADC is not used. Reset sets all of these bits to a 1. NOTE Recovery from the disabled state requires one conversion cycle to stabilize. Table 9-1. MUX Channel Select
ADCH4 0 0 0 0 0 0 0 0 0 0 0 0 0 : 1 1 1 1 1 1 ADCH3 0 0 0 0 0 0 0 0 1 1 1 1 1 : 1 1 1 1 1 1 ADCH2 0 0 0 0 1 1 1 1 0 0 0 0 1 : 0 0 1 1 1 1 ADCH1 0 0 1 1 0 0 1 1 0 0 1 1 0 : 1 1 0 0 1 1 ADCH0 0 1 0 1 0 1 0 1 0 1 0 1 0 : 0 1 0 1 0 1 Reserved Unused VDDA (see Note 2) VSSA (see Note 2) ADC power off Unused (see Note 1) ADC Channel ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 ADC8 ADC9 ADC10 ADC11 Input Select PTB0 PTB1 PTB2 PTB3 PTB4 PTB5 PTB6 PTB7 PTD3 PTD2 PTD1 PTD0
1. If any unused channels are selected, the resulting ADC conversion will be unknown. 2. The voltage levels supplied from internal reference nodes as specified in the table are used to verify the operation of the ADC converter both in production test and for user applications.
= Unimplemented
Figure 9-5. ADC Input Clock Register (ADICLK) ADIV[2:0] ADC Clock Prescaler Bits ADIV[2:0] form a 3-bit field which selects the divide ratio used by the ADC to generate the internal ADC clock. Table 9-2 shows the available clock configurations. The ADC clock should be set to approximately 1MHz. Table 9-2. ADC Clock Divide Ratio
ADIV2 0 0 0 0 1 X = dont care ADIV1 0 0 1 1 X ADIV0 0 1 0 1 X ADC Clock Rate ADC Input Clock 1 ADC Input Clock 2 ADC Input Clock 4 ADC Input Clock 8 ADC Input Clock 16
$0001
Unaffected by reset PTD7 PTD6 PTD5 PTD4 PTD3 PTD2 PTD1 PTD0
$0003
Unaffected by reset 0 0 DDRB7 0 DDRD7 0 DDRA6 0 DDRB6 0 DDRD6 0 DDRA5 0 DDRB5 0 DDRD5 0 DDRA4 0 DDRB4 0 DDRD4 0 DDRA3 0 DDRB3 0 DDRD3 0 DDRA2 0 DDRB2 0 DDRD2 0 DDRA1 0 DDRB1 0 DDRD1 0 DDRA0 0 DDRB0 0 DDRD0 0
$0004
$0007
Input/Output (I/O) Ports Addr. $000A Register Name Read: Port D Control Register Write: (PDCR) Reset: Port A Input Pull-up Enable Read: Register Write: (PTAPUE) Reset: Bit 7 0 0 PTA6EN 0 6 0 0 PTAPUE6 0 = Unimplemented 5 0 0 PTAPUE5 0 4 0 0 PTAPUE4 0 3 SLOWD7 0 PTAPUE3 0 2 SLOWD6 0 PTAPUE2 0 1 PTDPU7 0 PTAPUE1 0 Bit 0 PTDPU6 0 PTAPUE0 0
$000D
Control Bit
KBIE0 KBIE1 KBIE2 KBIE3 KBIE4 KBIE5
OSC KBI
PTA6EN KBIE6
1. RCCLK/PTA6/KBI6 pin is only available on MC68HRC908JL3E/JK3E/JK1E devices (RC option); PTAPUE register has priority control over the port pin. RCCLK/PTA6/KBI6 is the OSC2 pin on MC68HC908JL3E/JK3E/JK1E devices (X-TAL option).
Port A
10.2 Port A
Port A is an 7-bit special function port that shares all seven of its pins with the keyboard interrupt (KBI) module (see Chapter 12 Keyboard Interrupt Module (KBI)). Each port A pin also has software configurable pull-up device if the corresponding port pin is configured as input port. PTA0 to PTA5 has direct LED drive capability. NOTE PTA0PTA5 pins are available on MC68H(R)C908JL3E only. PTA6 pin is available on MC68HRC908JL3E/JK3E/JK1E only.
Unaffected by Reset LED (Sink) Keyboard Interrupt LED (Sink) Keyboard Interrupt LED (Sink) Keyboard Interrupt LED (Sink) Keyboard Interrupt LED (Sink) Keyboard Interrupt
30k pull-up 30k pull-up 30k pull-up 30k pull-up 30k pull-up 30k pull-up 30k pull-up
= Unimplemented
Figure 10-2. Port A Data Register (PTA) PTA[6:0] Port A Data Bits These read/write bits are software programmable. Data direction of each port A pin is under the control of the corresponding bit in data direction register A. Reset has no effect on port A data. KBI[6:0] Port A Keyboard Interrupts The keyboard interrupt enable bits, KBIE[6:0], in the keyboard interrupt control register (KBIER) enable the port A pins as external interrupt pins, (see Chapter 12 Keyboard Interrupt Module (KBI)).
Figure 10-3. Data Direction Register A (DDRA) DDRA[6:0] Data Direction Register A Bits These read/write bits control port A data direction. Reset clears DDRA[6:0], configuring all port A pins as inputs. 1 = Corresponding port A pin configured as output 0 = Corresponding port A pin configured as input NOTE Avoid glitches on port A pins by writing to the port A data register before changing data direction register A bits from 0 to 1. Figure 10-4 shows the port A I/O logic.
READ DDRA ($0004) PTAPUEx WRITE DDRA ($0004) INTERNAL DATA BUS RESET WRITE PTA ($0000) PTAx PTAx DDRAx 30k
Figure 10-4. Port A I/O Circuit When DDRAx is a 1, reading address $0000 reads the PTAx data latch. When DDRAx is a 0, reading address $0000 reads the voltage level on the pin. The data latch can always be written, regardless of the state of its data direction bit.
Port A
Figure 10-5. Port A Input Pull-up Enable Register (PTAPUE) PTA6EN Enable PTA6 on OSC2 This read/write bit configures the OSC2 pin function when RC oscillator option is selected. This bit has no effect for X-tal oscillator option. 1 = OSC2 pin configured for PTA6 I/O, and has all the interrupt and pull-up functions 0 = OSC2 pin outputs the RC oscillator clock (RCCLK) PTAPUE[6:0] Port A Input Pull-up Enable Bits These read/write bits are software programmable to enable pull-up devices on port A pins 1 = Corresponding port A pin configured to have internal pull-up if its DDRA bit is set to 0 0 = Pull-up device is disconnected on the corresponding port A pin regardless of the state of its DDRA bit Table 10-2 summarizes the operation of the port A pins. Table 10-2. Port A Pin Functions
PTAPUE Bit 1 0 X DDRA Bit 0 0 1 Accesses to DDRA PTA Bit X
(1)
Accesses to PTA Read Pin Pin PTA[6:0] Write PTA[6:0](3) PTA[6:0](3) PTA[6:0]
X X
1. X = Dont care. 2. I/O pin pulled to VDD by internal pull-up. 3. Writing affects data register, but does not affect input. 4. Hi-Z = High Impedance.
10.3 Port B
Port B is an 8-bit special function port that shares all eight of its port pins with the analog-to-digital converter (ADC) module, see Chapter 9 Analog-to-Digital Converter (ADC).
Figure 10-6. Port B Data Register (PTB) PTB[7:0] Port B Data Bits These read/write bits are software programmable. Data direction of each port B pin is under the control of the corresponding bit in data direction register B. Reset has no effect on port B data. ADC[7:0] ADC channels 7 to 0 ADC[7:0] are pins used for the input channels to the analog-to-digital converter module. The channel select bits, ADCH[4:0], in the ADC status and control register define which port pin will be used as an ADC input and overrides any control from the port I/O logic. See Chapter 9 Analog-to-Digital Converter (ADC).
Figure 10-7. Data Direction Register B (DDRB) DDRB[7:0] Data Direction Register B Bits These read/write bits control port B data direction. Reset clears DDRB[7:0], configuring all port B pins as inputs. 1 = Corresponding port B pin configured as output 0 = Corresponding port B pin configured as input NOTE Avoid glitches on port B pins by writing to the port B data register before changing data direction register B bits from 0 to 1.
Port B
READ DDRB ($0005)
WRITE DDRB ($0005) INTERNAL DATA BUS RESET WRITE PTB ($0001) PTBx PTBx DDRBx
Figure 10-8. Port B I/O Circuit When DDRBx is a 1, reading address $0001 reads the PTBx data latch. When DDRBx is a 0, reading address $0001 reads the voltage level on the pin. The data latch can always be written, regardless of the state of its data direction bit. Table 10-3 summarizes the operation of the port B pins. Table 10-3. Port B Pin Functions
Accesses to DDRB DDRB Bit 0 1 PTB Bit X(1) X I/O Pin Mode Read/Write Input, Hi-Z(2) Output DDRB[7:0] DDRB[7:0] Read Pin Pin Write PTB[7:0](3) PTB[7:0] Accesses to PTB
1. X = dont care. 2. Hi-Z = high impedance. 3. Writing affects data register, but does not affect the input.
10.4 Port D
Port D is an 8-bit special function port that shares two of its pins with timer interface module, (see Chapter 8 Timer Interface Module (TIM)) and shares four of its pins with analog-to-digital converter module (see Chapter 9 Analog-to-Digital Converter (ADC)). PTD6 and PTD7 each has high current drive (25mA sink) and programmable pull-up. PTD2, PTD3, PTD6 and PTD7 each has LED driving (sink) capability. NOTE PTD0PTD1 are available on MC68H(R)C908JL3E only.
$0003 Bit 7 PTD7 6 PTD6 5 PTD5 4 PTD4 3 PTD3 2 PTD2 1 PTD1 Bit 0 PTD0
Unaffected by reset LED (Sink) ADC8 TCH0 LED (Sink) ADC9 ADC10 ADC11
5k pull-up
5k pull-up = Unimplemented
Figure 10-9. Port D Data Register (PTD) PTD[7:0] Port D Data Bits These read/write bits are software programmable. Data direction of each port D pin is under the control of the corresponding bit in data direction register D. Reset has no effect on port D data. ADC[11:8] ADC channels 11 to 8 ADC[11:8] are pins used for the input channels to the analog-to-digital converter module. The channel select bits, ADCH[4:0], in the ADC status and control register define which port pin will be used as an ADC input and overrides any control from the port I/O logic. See Chapter 9 Analog-to-Digital Converter (ADC). TCH[1:0] Timer Channel I/O The TCH1 and TCH0 pins are the TIM input capture/output compare pins. The edge/level select bits, ELSxB:ELSxA, determine whether the PTD4/TCH0 and PTD5/TCH1 pins are timer channel I/O pins or general-purpose I/O pins. See Chapter 8 Timer Interface Module (TIM).
Port D
Figure 10-10. Data Direction Register D (DDRD) DDRD[7:0] Data Direction Register D Bits These read/write bits control port D data direction. Reset clears DDRD[7:0], configuring all port D pins as inputs. 1 = Corresponding port D pin configured as output 0 = Corresponding port D pin configured as input NOTE Avoid glitches on port D pins by writing to the port D data register before changing data direction register D bits from 0 to 1. Figure 10-11 shows the port D I/O logic.
READ DDRD ($0007) PTDPU[6:7] WRITE DDRD ($0007) INTERNAL DATA BUS RESET WRITE PTD ($0003) PTDx PTDx DDRDx 5k
Figure 10-11. Port D I/O Circuit When DDRDx is a 1, reading address $0003 reads the PTDx data latch. When DDRDx is a 0, reading address $0003 reads the voltage level on the pin. The data latch can always be written, regardless of the state of its data direction bit. Table 10-4 summarizes the operation of the port D pins.
1. X = dont care. 2. Hi-Z = high impedance. 3. Writing affects data register, but does not affect the input.
Figure 10-12. Port D Control Register (PDCR) SLOWDx Slow Edge Enable The SLOWD6 and SLOWD7 bits enable the Slow-edge, open-drain, high current output (25mA sink) of port pins PTD6 and PTD7 respectively. DDRDx bit is not affected by SLOWDx. 1 = Slow edge enabled; pin is open-drain output 0 = Slow edge disabled; pin is push-pull PTDPUx Pull-up Enable The PTDPU6 and PTDPU7 bits enable the 5k pull-up on PTD6 and PTD7 respectively, regardless the status of DDRDx bit. 1 = Enable 5k pull-up 0 = Disable 5k pull-up
11.2 Features
Features of the IRQ module include the following: A dedicated external interrupt pin, IRQ IRQ interrupt control bits Hysteresis buffer Programmable edge-only or edge and level interrupt sensitivity Automatic interrupt acknowledge Selectable internal pullup resistor
The vector fetch or software clear may occur before or after the interrupt pin returns to one. As long as the pin is low, the interrupt request remains pending. A reset will clear the latch and the MODE control bit, thereby clearing the interrupt even if the pin stays low. When set, the IMASK bit in the INTSCR mask all external interrupt requests. A latched interrupt request is not presented to the interrupt priority logic unless the IMASK bit is clear. NOTE The interrupt mask (I) in the condition code register (CCR) masks all interrupt requests, including external interrupt requests. See 5.5 Exception Control.
ACK RESET INTERNAL ADDRESS BUS VECTOR FETCH DECODER VDD IRQPUD INTERNAL PULLUP DEVICE IRQ VDD D CLR Q SYNCHRONIZER IRQF TO CPU FOR BIL/BIH INSTRUCTIONS
CK IRQ FF IMASK
Figure 11-3. IRQ Status and Control Register (INTSCR) IRQF IRQ Flag This read-only status bit is high when the IRQ interrupt is pending. 1 = IRQ interrupt pending 0 = IRQ interrupt not pending ACK IRQ Interrupt Request Acknowledge Bit Writing a one to this write-only bit clears the IRQ latch. ACK always reads as zero. Reset clears ACK. IMASK IRQ Interrupt Mask Bit Writing a one to this read/write bit disables IRQ interrupt requests. Reset clears IMASK. 1 = IRQ interrupt requests disabled 0 = IRQ interrupt requests enabled MODE IRQ Edge/Level Select Bit This read/write bit controls the triggering sensitivity of the IRQ pin. Reset clears MODE. 1 = IRQ interrupt requests on falling edges and low levels 0 = IRQ interrupt requests on falling edges only
Address: Read: Write: Reset: POR: $001E Bit 7 IRQPUD 0 0 R 6 R 0 0 = Reserved 5 R 0 0 4 LVIT1
Not affected
3 LVIT0
Not affected
2 R 0 0
1 R 0 0
Bit 0 R 0 0
Figure 11-4. Configuration Register 2 (CONFIG2) IRQPUD IRQ Pin Pull-up control bit 1 = Internal pull-up is disconnected 0 = Internal pull-up is connected between IRQ pin and VDD
12.2 Features
Features of the keyboard interrupt module include the following: Seven keyboard interrupt pins with separate keyboard interrupt enable bits and one keyboard interrupt mask Software configurable pull-up device if input pin is configured as input port bit Programmable edge-only or edge- and level- interrupt sensitivity Exit from low-power modes
Addr. Register Name Bit 7 0 0 0 0 6 0 0 KBIE6 0 = Unimplemented 5 0 0 KBIE5 0 4 0 0 KBIE4 0 3 KEYF 0 KBIE3 0 2 0 ACKK 0 KBIE2 0 1 IMASKK 0 KBIE1 0 Bit 0 MODEK 0 KBIE0 0
Read: Keyboard Status and Control $001A Write: Register (KBSCR) Reset: Read: $001B Keyboard Interrupt Enable Write: Register (KBIER) Reset:
ACKK RESET
CK
KEYBOARD INTERRUPT FF
IMASKK
Figure 12-2. Keyboard Interrupt Block Diagram Writing to the KBIE6KBIE0 bits in the keyboard interrupt enable register independently enables or disables each port A pin as a keyboard interrupt pin. Enabling a keyboard interrupt pin in port A also enables its internal pull-up device irrespective of PTAPUEx bits in the port A input pull-up enable register (see 10.2.3 Port A Input Pull-up Enable Register (PTAPUE)). A logic 0 applied to an enabled keyboard interrupt pin latches a keyboard interrupt request. A keyboard interrupt is latched when one or more keyboard pins goes low after all were high. The MODEK bit in the keyboard status and control register controls the triggering mode of the keyboard interrupt. If the keyboard interrupt is edge-sensitive only, a falling edge on a keyboard pin does not latch an interrupt request if another keyboard pin is already low. To prevent losing an interrupt request on one pin because another pin is still low, software can disable the latter pin while it is low. If the keyboard interrupt is falling edge- and low level-sensitive, an interrupt request is present as long as any keyboard pin is low. If the MODEK bit is set, the keyboard interrupt pins are both falling edge- and low level-sensitive, and both of the following actions must occur to clear a keyboard interrupt request: Vector fetch or software clear A vector fetch generates an interrupt acknowledge signal to clear the interrupt request. Software may generate the interrupt acknowledge signal by writing a 1 to the ACKK bit in the keyboard status and control register KBSCR. The ACKK bit is useful in applications that poll the keyboard interrupt pins and require software to clear the keyboard interrupt request. Writing to the ACKK bit prior to leaving an interrupt service routine can also prevent spurious interrupts due to noise. Setting ACKK does not affect subsequent transitions on the keyboard interrupt pins. A falling edge that occurs after writing to the ACKK bit latches another interrupt request. If the keyboard interrupt mask bit, IMASKK, is clear, the CPU loads the program counter with the vector address at locations $FFE0 and $FFE1. Return of all enabled keyboard interrupt pins to logic 1 As long as any enabled keyboard interrupt pin is at 0, the keyboard interrupt remains set.
The vector fetch or software clear and the return of all enabled keyboard interrupt pins to 1 may occur in any order. If the MODEK bit is clear, the keyboard interrupt pin is falling-edge-sensitive only. With MODEK clear, a vector fetch or software clear immediately clears the keyboard interrupt request. Reset clears the keyboard interrupt request and the MODEK bit, clearing the interrupt request even if a keyboard interrupt pin stays at 0. The keyboard flag bit (KEYF) in the keyboard status and control register can be used to see if a pending interrupt exists. The KEYF bit is not affected by the keyboard interrupt mask bit (IMASKK) which makes it useful in applications where polling is preferred. To determine the logic level on a keyboard interrupt pin, disable the pull-up device, use the data direction register to configure the pin as an input and then read the data register. NOTE Setting a keyboard interrupt enable bit (KBIEx) forces the corresponding keyboard interrupt pin to be an input, overriding the data direction register. However, the data direction register bit must be a 0 for software to read the pin.
Figure 12-3. Keyboard Status and Control Register (KBSCR) KEYF Keyboard Flag Bit This read-only bit is set when a keyboard interrupt is pending on port-A. Reset clears the KEYF bit. 1 = Keyboard interrupt pending 0 = No keyboard interrupt pending ACKK Keyboard Acknowledge Bit Writing a 1 to this write-only bit clears the keyboard interrupt request on port-A. ACKK always reads as 0. Reset clears ACKK. IMASKK Keyboard Interrupt Mask Bit Writing a 1 to this read/write bit prevents the output of the keyboard interrupt mask from generating interrupt requests on port-A. Reset clears the IMASKK bit. 1 = Keyboard interrupt requests masked 0 = Keyboard interrupt requests not masked MODEK Keyboard Triggering Sensitivity Bit This read/write bit controls the triggering sensitivity of the keyboard interrupt pins on port-A. Reset clears MODEK. 1 = Keyboard interrupt requests on falling edges and low levels 0 = Keyboard interrupt requests on falling edges only
Low-Power Modes
= Unimplemented
Figure 12-4. Keyboard Interrupt Enable Register (KBIER) KBIE6KBIE0 Port-A Keyboard Interrupt Enable Bits Each of these read/write bits enables the corresponding keyboard interrupt pin on port-A to latch interrupt requests. Reset clears the keyboard interrupt enable register. 1 = KBIx pin enabled as keyboard interrupt pin 0 = KBIx pin not enabled as keyboard interrupt pin
COP CLOCK
COP MODULE 6-BIT COP COUNTER COPEN (FROM SIM) COPD (FROM CONFIG1) RESET COPCTL WRITE COP RATE SEL (COPRS FROM CONFIG1) CLEAR COP COUNTER
NOTE: See Chapter 5 System Integration Module (SIM) for more details.
COP TIMEOUT
The COP counter is a free-running 6-bit counter preceded by the 12-bit system integration module (SIM) counter. If not cleared by software, the COP counter overflows and generates an asynchronous reset after 262,128 or 8176 2OSCOUT cycles; depending on the state of the COP rate select bit, COPRS, in configuration register 1. With a 262,128 2OSCOUT cycle overflow option, a 8MHz crystal gives a COP timeout period of 32.766 ms. Writing any value to location $FFFF before an overflow occurs prevents a COP reset by clearing the COP counter and stages 12 through 5 of the SIM counter. NOTE Service the COP immediately after reset and before entering or after exiting stop mode to guarantee the maximum time before the first COP counter overflow. A COP reset pulls the RST pin low for 32 2OSCOUT cycles and sets the COP bit in the reset status register (RSR). (See 5.7.2 Reset Status Register (RSR).). NOTE Place COP clearing instructions in the main program and not in an interrupt subroutine. Such an interrupt subroutine could keep the COP from generating a reset even while the main program is not working properly.
13.3.1 2OSCOUT
2OSCOUT is the oscillator output signal. 2OSCOUT frequency is equal to the crystal frequency or the RC-oscillator frequency.
Figure 13-2. Configuration Register 1 (CONFIG1) COPRS COP Rate Select Bit COPRS selects the COP timeout period. Reset clears COPRS. 1 = COP timeout period is 8176 2OSCOUT cycles 0 = COP timeout period is 262,128 2OSCOUT cycles COPD COP Disable Bit COPD disables the COP module. 1 = COP module disabled 0 = COP module enabled
13.5 Interrupts
The COP does not generate CPU interrupt requests.
14.2 Features
Features of the LVI module include the following: Selectable LVI trip voltage Selectable LVI circuit disable
LVID
LVI RESET
LVIT1
LVIT0
3 LVIT0
Not affected
2 R 0 0
1 R 0 0
Bit 0 R 0 0
Figure 14-3. Configuration Register 1 (CONFIG1) LVID Low Voltage Inhibit Disable Bit 1 = Low voltage inhibit disabled 0 = Low voltage inhibit enabled LVIT1, LVIT0 LVI Trip Voltage Selection These two bits determine at which level of VDD the LVI module will come into action. LVIT1 and LVIT0 are cleared by a Power-On Reset only.
LVIT1 0 0 1 1 LVIT0 0 1 0 1 Trip Voltage(1) VLVR3 (2.4V) VLVR3 (2.4V) VLVR5 (4.0V) Reserved Comments For VDD =3V operation For VDD =3V operation For VDD =5V operation
15.2 Features
Features of the break module include the following: Accessible I/O registers during the break Interrupt CPU-generated break interrupts Software-generated break interrupts COP disabling during break interrupts
Addr. $FE00
Register Name Read: Break Status Register Write: (BSR) Reset: Break Flag Control Read: Register Write: (BFCR) Reset: Break Address High Read: Register Write: (BRKH) Reset: Break Address low Read: Register Write: (BRKL) Reset: Break Status and Control Read: Register Write: (BRKSCR) Reset:
Bit 7 R
6 R
5 R
4 R
3 R
2 R
Bit 0 R
$FE03
$FE0C
Bit13 0 Bit5 0 0 0
Bit12 0 Bit4 0 0 0 R
Bit10 0 Bit2 0 0 0
Bit9 0 Bit1 0 0 0
Bit8 0 Bit0 0 0 0
$FE0D
$FE0E
= Unimplemented
= Unimplemented
Figure 15-3. Break Status and Control Register (BRKSCR) BRKE Break Enable Bit This read/write bit enables breaks on break address register matches. Clear BRKE by writing a zero to bit 7. Reset clears the BRKE bit. 1 = Breaks enabled on 16-bit address match 0 = Breaks disabled BRKA Break Active Bit This read/write status and control bit is set when a break address match occurs. Writing a one to BRKA generates a break interrupt. Clear BRKA by writing a zero to it before exiting the break routine. Reset clears the BRKA bit. 1 = Break address match 0 = No break address match
Figure 15-6. Break Status Register (BSR) SBSW SIM Break Stop/Wait SBSW can be read within the break state SWI routine. The user can modify the return address on the stack by subtracting one from it. 1 = Wait mode was exited by break interrupt 0 = Wait mode was not exited by break interrupt
Low-Power Modes
Figure 15-7. Break Flag Control Register (BFCR) BCFE Break Clear Flag Enable Bit This read/write bit enables software to clear status bits by accessing status registers while the MCU is in a break state. To clear status bits during the break state, the BCFE bit must be set. 1 = Status bits clearable during break 0 = Status bits not clearable during break
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.)
Electrical Specifications
JA
PI/O PD K TJ
1. Power dissipation is a function of temperature. 2. K constant unique to the device. K can be determined for a known TA and measured PD. With this value of K, PD and TJ can be determined for any value of TA.
5V DC Electrical Characteristics
VIH
0.7 VDD
VDD
VIL
VSS
0.3 VDD
10 4.5 6 1
11 5 6.5 1.5
mA mA mA mA A A A A A A pF mV V/ms V k k
IDD
IIL IIN COUT CIN VPOR RPOR VTST RPU1 RPU2 0 0.035 1.5 VDD 1.8 16
2 2 2 2 3.3 26
Electrical Specifications
1. VDD = 4.5 to 5.5 Vdc, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted. 2. Typical values reflect average measurements at midpoint of voltage range, 25 C only. 3. Run (operating) IDD measured using external square wave clock source (fOP = 4MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects run IDD. Measured with all modules enabled. 4. Wait IDD measured using external square wave clock source (fOP = 4MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects wait IDD. 5. Stop IDD measured with OSC1 grounded; no port pins sourcing current. LVI is disabled. 6. Maximum is highest voltage that POR is guaranteed. 7. If minimum VDD is not reached before the internal POR reset is released, RST must be driven low externally until minimum VDD is reached. 8. RPU1 and RPU2 are measured at VDD = 5.0V.
1. VDD = 4.5 to 5.5 Vdc, VSS = 0 Vdc, TA = TL to TH; timing shown with respect to 20% VDD and 70% VSS, unless otherwise noted. 2. Some modules may require a minimum frequency greater than dc for proper operation; see appropriate table for this information. 3. Minimum pulse width reset is guaranteed to be recognized. It is possible for a smaller pulse width to cause a reset.
5V Oscillator Characteristics
14 12 RC FREQUENCY, fRCCLK (MHz) CEXT = 10 pF 10 8 6 VDD 4 2 0 0 10 20 30 40 50 RESISTOR, REXT (k) REXT CEXT 5V @ 25 C OSC1 MCU
Electrical Specifications
0.4
0.5
10
mA
VIH
0.7 VDD
VDD
VIL
VSS
0.3 VDD
IDD
3.5 2 2 0.3
mA mA mA mA A A A A pF mV V/ms V k k
IIL IIN COUT CIN VPOR RPOR VTST RPU1 RPU2 0 0.035 1.5 VDD
1 1
5 5 10 1 12 8 100 8.5
1.8 16
3.3 26
4.8 36
3V Control Timing
1. VDD = 2.7 to 3.3 Vdc, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted. 2. Typical values reflect average measurements at midpoint of voltage range, 25 C only. 3. Run (operating) IDD measured using external square wave clock source (fOP = 2MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects run IDD. Measured with all modules enabled. 4. Wait IDD measured using external square wave clock source (fOP = 2MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects wait IDD. 5. Stop IDD measured with OSC1 grounded; no port pins sourcing current. LVI is disabled. 6. Maximum is highest voltage that POR is guaranteed. 7. If minimum VDD is not reached before the internal POR reset is released, RST must be driven low externally until minimum VDD is reached. 8. RPU1 and RPU2 are measured at VDD = 5.0V.
1. VDD = 2.7 to 3.3 Vdc, VSS = 0 Vdc, TA = TL to TH; timing shown with respect to 20% VDD and 70% VDD, unless otherwise noted. 2. Some modules may require a minimum frequency greater than dc for proper operation; see appropriate table for this information. 3. Minimum pulse width reset is guaranteed to be recognized. It is possible for a smaller pulse width to cause a reset.
Electrical Specifications
14 12 RC FREQUENCY, fRCCLK (MHz) 10 8 6 VDD 4 2 0 0 10 20 30 40 50 RESISTOR, REXT (k) REXT CEXT CEXT = 10 pF 3V @ 25 C OSC1 MCU
Figure 16-3. Typical Operating IDD (MC68HC908JL3E/JK3E/JK1E), with All Modules Turned On (25C)
10 8 IDD (mA) 6 4 2 0 0 1 2 3 4 5 fOP or fBUS (MHz) 6 7 8 9 MC68HRC908JL3E/JK3E/JK1E 5.5 V 3.3 V
Figure 16-4. Typical Operating IDD (MC68HRC908JL3E/JK3E/JK1E), with All Modules Turned On (25C)
10 8 IDD (mA) 6 4 2 0 0 1 2 3 4 5 fOP or fBUS (MHz) 6 7 8 9 MC68HC908JL3E/JK3E/JK1E 5.5 V 3.3 V
Figure 16-5. Typical Wait Mode IDD (MC68HC908JL3E/JK3E/JK1E), with All Modules Turned Off (25C)
Electrical Specifications
2 1.75 1.50 1.25 IDD (mA) 1 0.75 0.5 0.25 0 0 1 2 3 4 fOP or fBUS (MHz) 5 6 7 8 MC68HRC908JL3E/JK3E/JK1E 5.5 V 3.3 V
Figure 16-6. Typical Wait Mode IDD (MC68HRC908JL3E/JK3E/JK1E), with All Modules Turned Off (25 C)
Symbol VDDAD VADIN BAD AAD fADIC RAD tADPU tADC tADS ZADI FADI CADI
Comments
15 01 FF (20) 8 1
tAIC cycles tAIC cycles Hex Hex pF A VIN = VSS VIN = VDD Not tested
reading(3)
1. Source impedances greater than 10 k adversely affect internal RC charging time during input sampling. 2. Zero-input/full-scale reading requires sufficient decoupling measures for accurate conversions. 3. The external system error caused by input leakage current is approximately equal to the product of R source and input current.
Memory Characteristics
Symbol VRDR fRead(1) tErase(2) tMErase(3) tnvs tnvh tnvh1 tpgs tPROG trcv(4) tHV(5)
Max 8M 40 4
1. fRead is defined as the frequency range for which the Flash memory can be read. 2. If the page erase time is longer than tErase (Min), there is no erase-disturb, but it reduces the endurance of the Flash memory. 3. If the mass erase time is longer than tMErase (Min), there is no erase-disturb, but it reduces the endurance of the Flash memory. 4. trcv is defined as the time it needs before the Flash can be read after turning off the high voltage charge pump, by clearing HVEN to 0. 5. tHV is defined as the cumulative high voltage programming time to the same row before next erase. tHV must satisfy this condition: tnvs + tnvh + tpgs + (tPROG 32) tHV max. 6. The minimum row endurance value specifies each row of the Flash memory is guaranteed to work for at least this many erase / program cycles. 7. The minimum row endurance value specifies each row of the Flash memory is guaranteed to work for at least this many erase / program cycles. 8. The Flash is guaranteed to retain data over the entire operating temperature range for at least the minimum time specified.
Electrical Specifications
B
1 10
T
SEATING PLANE
K M E G F D
20 PL
N J 0.25 (0.010)
M 20 PL
0.25 (0.010) T A
M
T B
DIM A B C D E F G J K L M N
Mechanical Specifications
Crystal oscillator 4096 Bytes RC oscillator 20-pin package Crystal oscillator 1536 Bytes RC oscillator
Temperature: C = 40C to +85C M = 40C to +125C (available for VDD = 5V only) Package: P = PDIP DW = SOIC FA = LQFP
Ordering Information
Appendix A MC68HLC908JL3E/JK3E/JK1E
A.1 Introduction
This appendix introduces three devices, that are low-voltage versions of MC68HC908JL3E/JK3E/JK1E: MC68HLC908JL3E MC68HLC908JK3E MC68HLC908JK1E The entire data book apply to these low-voltage devices, with exceptions outlined in this appendix.
VDD
VIL
VSS
0.2 VDD
IDD
0 0.02 1.8 16
2 1 1 3.3 26
mA mA A A A pF mV V/ms k k
1. VDD = 2.4 Vdc, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted. 2. Typical values reflect average measurements at midpoint of voltage range, 25 C only. 3. Run (operating) IDD measured using external square wave clock source. All inputs 0.2 V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects run IDD. Measured with all modules enabled. 4. Wait IDD measured using external square wave clock source; all inputs 0.2 V from rail; no dc loads; less than 100 pF on all outputs. CL = 20 pF on OSC2; all ports configured as inputs; OSC2 capacitance linearly affects wait IDD. 5. STOP IDD measured with OSC1 grounded, no port pins sourcing current. LVI is disabled. 6. Maximum is highest voltage that POR is guaranteed. 7. If minimum VDD is not reached before the internal POR reset is released, RST must be driven low externally until minimum VDD is reached. 8. RPU1 and RPU2 are measured at VDD = 5.0V
1. VDD = 2.2 Vdc, VSS = 0 Vdc, TA = TL to TH; timing shown with respect to 20% VDD and 70% VDD, unless otherwise noted. 2. Some modules may require a minimum frequency greater than dc for proper operation; see appropriate table for this information. 3. Minimum pulse width reset is guaranteed to be recognized. It is possible for a smaller pulse width to cause a reset.
Min dc
Typ 2 CL 2 CL 10 M
Max 8 8
Crystal tuning capacitance(2) Feedback bias resistor Series resistor(2), (3) 1. No more than 10% duty cycle deviation from 50% 2. Consult crystal vendor data sheet 3. Not Required for high frequency crystals
Symbol VDDAD VADIN BAD AAD fADIC RAD tADPU tADC tADS ZADI FADI CADI
Unit V V Bits LSB MHz V tAIC cycles tAIC cycles tAIC cycles Hex Hex pF A
Comments
1. Source impedances greater than 10 k adversely affect internal RC charging time during input sampling. 2. Zero-input/full-scale reading requires sufficient decoupling measures for accurate conversions. 3. The external system error caused by input leakage current is approximately equal to the product of R source and input current.
Max 8M 40 4
1. fRead is defined as the frequency range for which the Flash memory can be read. 2. If the page erase time is longer than tErase (Min), there is no erase-disturb, but it reduces the endurance of the Flash memory. 3. If the mass erase time is longer than tMErase (Min), there is no erase-disturb, but it reduces the endurance of the Flash memory. 4. trcv is defined as the time it needs before the Flash can be read after turning off the high voltage charge pump, by clearing HVEN to 0. 5. tHV is defined as the cumulative high voltage programming time to the same row before next erase. tHV must satisfy this condition: tnvs + tnvh + tpgs + (tPROG 32) tHV max. 6. The minimum row endurance value specifies each row of the Flash memory is guaranteed to work for at least this many erase / program cycles. 7. The minimum row endurance value specifies each row of the Flash memory is guaranteed to work for at least this many erase / program cycles. 8. The Flash is guaranteed to retain data over the entire operating temperature range for at least the minimum time specified.
Notes: I = 0 C to +85 C P = Plastic dual in-line package (PDIP) DW = Small outline integrated circuit package (SOIC) FA = Low-Profile Quad Flat Pack (LQFP)
Appendix B MC68H(R)C08JL3E/JK3E
B.1 Introduction
This appendix introduces four devices, that are ROM versions of MC68H(R)C908JL3E/JK3E: MC68HC08JL3E MC68HC08JK3E MC68HRC08JL3E MC68HRC08JK3E The entire data book apply to these ROM devices, with exceptions outlined in this appendix. Table B-1. Summary of Device Differences
MC68H(R)C08JL3E/JK3E Memory ($EC00$FBFF) User vectors ($FFD0$FFFF) Registers at $FE08 and $FE09 4,096 bytes ROM 48 bytes ROM Not used; locations are reserved. $FC00$FDFF: Not used. $FE10$FFCF: Used for testing purposes only. MC68H(R)C908JL3E/JK3E 4,096 bytes Flash 48 bytes Flash Flash related registers. $FE08 FLCR $FF09 FLBPR Used for testing and Flash programming/erasing.
CONTROL AND STATUS REGISTERS 64 BYTES USER ROM: MC68H(R)C08JK3E/JL3E 4,096 BYTES 8-BIT ANALOG-TO-DIGITAL CONVERTER MODULE
PTA6/KBI6** PTA5/KBI5** PTA4/KBI4** PTA3/KBI3** PTA2/KBI2** PTA1/KBI1** PTA0/KBI0** PTB7/ADC7 PTB6/ADC6 PTB5/ADC5 PTB4/ADC4 PTB3/ADC3 PTB2/ADC2 PTB1/ADC1 PTB0/ADC0 PTD7** PTD6** PTD5/TCH1 PTD4/TCH0 PTD3/ADC8 PTD2/ADC9 PTD1/ADC10 PTD0/ADC11
USER RAM 128 BYTES MONITOR ROM 960 BYTES USER ROM VECTOR SPACE 48 BYTES MC68HC908JL3E/JK3E X-TAL OSCILLATOR MC68HRC908JL3E/JK3E RC OSCILLATOR
BREAK MODULE
OSC1
OSC2
* RST
SYSTEM INTEGRATION MODULE LOW-VOLTAGE INHIBIT MODULE EXTERNAL INTERRUPT MODULE * Pin contains integrated pull-up device. ** Pin contains programmable pull-up device. 25mA open-drain if output pin. LED direct sink pin. # Pins available on MC68H(R)C08JL3E only. Shared pin: MC68HC08JL3E/JK3E OSC2 MC68HRC08JL3E/JK3E RCCLK/PTA6/KBI6
DDRD
DDRB
* IRQ
= Unimplemented
Figure 18-1. Mask Option Register 1 (MOR1) COPRS COP reset period selection bit 1 = COP reset cycle is 8176 2OSCOUT 0 = COP reset cycle is 262,128 2OSCOUT LVID Low Voltage Inhibit Disable Bit 1 = Low Voltage Inhibit disabled 0 = Low Voltage Inhibit enabled
SSREC Short Stop Recovery Bit SSREC enables the CPU to exit stop mode with a delay of 32 2OSCOUT cycles instead of a 4096 2OSCOUT cycle delay. 1 = Stop mode recovery after 32 2OSCOUT cycles 0 = Stop mode recovery after 4096 2OSCOUT cycles NOTE Exiting stop mode by pulling reset will result in the long stop recovery. If using an external crystal, do not set the SSREC bit. STOP STOP Instruction Enable STOP enables the STOP instruction. 1 = STOP instruction enabled 0 = STOP instruction treated as illegal opcode COPD COP Disable Bit COPD disables the COP module. (See Chapter 13 Computer Operating Properly (COP).) 1 = COP module disabled 0 = COP module enabled
= Unimplemented
Figure 18-2. Mask Option Register 2 (MOR2) IRQPUD IRQ Pin Pull-up control bit 1 = Internal pull-up is disconnected 0 = Internal pull-up is connected between IRQ pin and VDD LVIT1, LVIT0 Low Voltage Inhibit trip voltage selection bits Detail description of the LVI control signals is given in Chapter 14 Low Voltage Inhibit (LVI)
11 5 6.5 1.5
mA mA mA mA A A A A k k
IDD
5 5 10 10 4.8 36
1. VDD = 4.5 to 5.5 Vdc, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted. 2. Typical values reflect average measurements at midpoint of voltage range, 25 C only. 3. Run (operating) IDD measured using external square wave clock source (fOP = 4MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects run IDD. Measured with all modules enabled. 4. Wait IDD measured using external square wave clock source (fOP = 4MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects wait IDD. 5. Stop IDD measured with OSC1 grounded; no port pins sourcing current. LVI is disabled. 6. RPU1 and RPU2 are measured at VDD = 5.0V.
IDD
3.5 2 2 0.3
mA mA mA mA A A k k
5 5 4.8 36
1. VDD = 2.7 to 3.3 Vdc, VSS = 0 Vdc, TA = TL to TH, unless otherwise noted. 2. Typical values reflect average measurements at midpoint of voltage range, 25 C only. 3. Run (operating) IDD measured using external square wave clock source (fOP = 2MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects run IDD. Measured with all modules enabled. 4. Wait IDD measured using external square wave clock source (fOP = 2MHz). All inputs 0.2V from rail. No dc loads. Less than 100 pF on all outputs. CL = 20 pF on OSC2. All ports configured as inputs. OSC2 capacitance linearly affects wait IDD. 5. Stop IDD measured with OSC1 grounded; no port pins sourcing current. LVI is disabled. 6. RPU1 and RPU2 are measured at VDD = 5.0V.
14 12 RC FREQUENCY, fRCCLK (MHz) 10 8 6 VDD 4 2 0 0 10 20 30 RESISTOR, REXT (k) 40 50 REXT CEXT CEXT = 10 pF 5V @ 25 C OSC1 MCU
NOTES: Since MC68H(R)C08JL3E/JK3E is a ROM device, Flash memory electrical characteristics do not apply.
NOTES: C = 40 C to +85 C M = 40 C to +125 C (available for VDD = 5V only) P = Plastic dual in-line package (PDIP) DW = Small outline integrated circuit package (SOIC)
Appendix C MC68HC908KL3E/KK3E
C.1 Introduction
This appendix introduces two devices, that are ADC-less versions of MC68HC908JL3E/JK3E: MC68HC908KL3E MC68HC908KK3E The entire data book applies to these devices, with exceptions outlined in this appendix. Table C-1. Summary of MC68HC908KL3E/KK3E and MC68HC908JL3E Differences
MC68HC908KL3E/KK3E Analog-to-Digital Converter (ADC) Registers at: $003C, $003E, and $003E Interrupt Vector at: $FFDE and $FFDF Not used; locations are reserved. Not used. 20-pin PDIP (MC68HC908KK3E) 20-pin SOIC (MC68HC908KK3E) 28-pin PDIP 28-pin SOIC MC68HC908JL3E 12-channel, 8-bit. ADC registers. ADC interrupt vector. 20-pin PDIP (MC68HC908JK3E) 20-pin SOIC (MC68HC908JK3E) 28-pin PDIP 28-pin SOIC 48-pin LQFP
Available Packages
KEYBOARD INTERRUPT MODULE PTA5/KBI5** PTA4/KBI4** PTA3/KBI3** PTA2/KBI2** PTA1/KBI1** PTA0/KBI0** PTB7 PTB6 PTB5 PTB4 PTB3 PTB2 PTB1 PTB0 PTD7** PTD6** PTD5/TCH1 PTD4/TCH0 PTD3 PTD2 PTD1 PTD0 PORTA DDRA
USER RAM 128 BYTES MONITOR ROM 960 BYTES USER FLASH VECTOR SPACE 48 BYTES
BREAK MODULE
* RST
SYSTEM INTEGRATION MODULE LOW-VOLTAGE INHIBIT MODULE EXTERNAL INTERRUPT MODULE * Pin contains integrated pull-up device. ** Pin contains programmable pull-up device. 25mA open-drain if output pin. LED direct sink pin. # Pins available on MC68HC908KL3E only.
DDRD
DDRB
* IRQ
IRQ PTA0/KBI0 VSS OSC1 OSC2 PTA1/KBI1 VDD PTA2/KBI2 PTA3/KBI3 PTB7 PTB6 PTB5 PTD7 PTD6
1 2 3 4 5 6 7 8 9 10 11 12 13 14
28 27 26 25 24 23 22 21 20 19 18 17 16 15
RST PTA5/KBI5 PTD4/TCH0 PTD5/TCH1 PTD2 PTA4 PTD3 PTB0 PTB1 PTD1 PTB2 PTB3 PTD0 PTB4
MC68HC908KL3E
Figure C-2. 28-Pin PDIP/SOIC Pin Assignment
IRQ VSS OSC1 OSC2 VDD PTB7 PTB6 PTB5 PTD7 PTD6
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
RST PTD4/TCH0 PTD5/TCH1 PTD2 PTD3 PTB0 PTB1 PTB2 PTB3 PTB4
Pins not available on 20-pin packages PTA0/KBI0 PTA1/KBI1 PTA2/KBI2 PTA3/KBI3 PTA4/KBI4 PTA5/KBI5 Internal pads are unconnected. PTD0 PTD1
MC68HC908KK3E
Figure C-3. 20-Pin PDIP/SOIC Pin Assignment
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 customers 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 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. Freescale Semiconductor, Inc. 2005. All rights reserved.