MAGNACHIP SEMICONDUCTOR LTD. 8-BIT SINGLE-CHIP MICROCONTROLLERS MC80F0208/16/24 MC80C0208/16/24 User’s Manual (Ver. 0.2) Preliminary REVISION HISTORY VERSION 0.2 (MAR. 2005) This book Version 0.2 Published by MCU Application Team 2005 MagnaChip semiconductor Inc. All right reserved. Additional information of this manual may be served by MagnaChip semiconductor offices in Korea or Distributors and Representatives. MagnaChip semiconductor reserves the right to make changes to any information here in at any time without notice. The information, diagrams and other data in this manual are correct and reliable; however, MagnaChip semiconductor is in no way responsible for any violations of patents or other rights of the third party generated by the use of this manual. MC80F0208/16/24 1. OVERVIEW .................................................................................................................................................... 1 Description .................................................................................................................................................... 1 Features ........................................................................................................................................................ 1 Ordering Information ............................................................................................................................... 2 Development Tools ....................................................................................................................................... 3 2. BLOCK DIAGRAM ........................................................................................................................................ 4 3. PIN ASSIGNMENT ........................................................................................................................................ 5 4. PACKAGE DIAGRAM ................................................................................................................................... 6 5. PIN FUNCTION .............................................................................................................................................. 7 Pin Description .............................................................................................................................................. 8 6. PORT STRUCTURES .................................................................................................................................. 10 7. ELECTRICAL CHARACTERISTICS ........................................................................................................... 13 Absolute Maximum Ratings ........................................................................................................................ 13 Recommended Operating Conditions ......................................................................................................... 13 A/D Converter Characteristics .................................................................................................................... 13 DC Electrical Characteristics ...................................................................................................................... 14 AC Characteristics ...................................................................................................................................... 15 Serial Interface Timing Characteristics ....................................................................................................... 16 Typical Characteristic Curves ..................................................................................................................... 17 8. MEMORY ORGANIZATION ........................................................................................................................ 19 Registers ..................................................................................................................................................... 19 Program Memory ........................................................................................................................................ 21 Data Memory .............................................................................................................................................. 25 Addressing Mode ........................................................................................................................................ 31 9. I/O PORTS ................................................................................................................................................... 35 10. CLOCK GENERATOR .............................................................................................................................. 39 11. BASIC INTERVAL TIMER ......................................................................................................................... 40 12. WATCHDOG TIMER ................................................................................................................................. 42 13. WATCH TIMER .......................................................................................................................................... 45 14. TIMER/EVENT COUNTER ........................................................................................................................ 46 8-bit Timer / Counter Mode ......................................................................................................................... 50 16-bit Timer / Counter Mode ....................................................................................................................... 56 8-bit Compare Output (16-bit) ..................................................................................................................... 57 8-bit Capture Mode ..................................................................................................................................... 58 16-bit Capture Mode ................................................................................................................................... 62 PWM Mode ................................................................................................................................................. 65 15. ANALOG TO DIGITAL CONVERTER ....................................................................................................... 68 16. SERIAL INPUT/OUTPUT (SIO) ................................................................................................................. 71 Transmission/Receiving Timing .................................................................................................................. 72 The method of Serial I/O ............................................................................................................................. 74 The Method to Test Correct Transmission .................................................................................................. 74 17. UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER (UART) ................................................... 75 UART Serial Interface Functions ................................................................................................................ 75 MAR. 2005 Ver 0.2 MC80F0208/16/24 Serial Interface Configuration ..................................................................................................................... 77 Communication operation ........................................................................................................................... 80 Relationship between main clock and baud rate ........................................................................................ 82 18. BUZZER FUNCTION ................................................................................................................................. 83 19. INTERRUPTS ............................................................................................................................................ 85 Interrupt Sequence ..................................................................................................................................... 87 BRK Interrupt .............................................................................................................................................. 89 Shared Interrupt Vector ............................................................................................................................... 89 Multi Interrupt .............................................................................................................................................. 90 External Interrupt ........................................................................................................................................ 91 20. OPERATION MODE .................................................................................................................................. 93 Operation Mode Switching .......................................................................................................................... 93 21. POWER SAVING OPERATION ................................................................................................................ 94 Sleep Mode ................................................................................................................................................. 94 Stop Mode ................................................................................................................................................... 95 Stop Mode at Internal RC-Oscillated Watchdog Timer Mode ..................................................................... 98 Minimizing Current Consumption .............................................................................................................. 100 22. OSCILLATOR CIRCUIT .......................................................................................................................... 102 23. RESET ..................................................................................................................................................... 103 24. POWER FAIL PROCESSOR ................................................................................................................... 104 25. FLASH PROGRAMMING ........................................................................................................................ 106 Device Configuration Area ........................................................................................................................ 106 26. Emulator EVA. Board Setting .............................................................................................................. 107 27. IN-SYSTEM PROGRAMMING (ISP) ....................................................................................................... 110 Getting Started / Installation ...................................................................................................................... 110 Basic ISP S/W Information ........................................................................................................................ 110 Hardware Conditions to Enter the ISP Mode ............................................................................................ 111 Reference ISP Circuit diagram ................................................................................................................. 113 A. INSTRUCTION ............................................................................................................................................... i Terminology List ..............................................................................................................................................i Instruction Map ..............................................................................................................................................ii Instruction Set ............................................................................................................................................... iii B. MASK ORDER SHEET ................................................................................................................................ ix MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 MC80F0208/16/24 MC80C0208/16/24 CMOS SINGLE-CHIP 8-BIT MICROCONTROLLER WITH 10-BIT A/D CONVERTER AND UART 1. OVERVIEW 1.1 Description The MC80F0208/16/24 is advanced CMOS 8-bit microcontroller with 8K/16K/24K bytes of FLASH(ROM). This is a powerful microcontroller which provides a highly flexible and cost effective solution to many embedded control applications. This provides the following standard features : 8K/16K/24K bytes of FLASH, 1K bytes of RAM, 8/16-bit timer/counter, watchdog timer, watch timer, 10-bit A/D converter, 8-bit Serial Input/Output, UART, buzzer driving port, 10-bit PWM output and on-chip oscillator and clock circuitry. It also has 8 high current I/O pins with typical 20mA. In addition, the MC80F0208/16/24 supports power saving modes to reduce power consumption. Device Name FLASH MASK ROM MC80F0208Q MC80C0208Q MC80F0208K MC80C0208K MC80F0216Q MC80C0216Q MC80F0216K MC80C0216K MC80F0224Q MC80C0224Q MC80F0224K MC80C0224K FLASH(ROM) Size RAM ADC PWM I/O PORT 8KByte 1024 Byte 8 channel 1 channel 36 port 16KByte 1024 Byte 8 channel 1 channel 36 port 24KByte 1024 Byte 8 channel 1 channel 36 port Package 44MQFP 42SDIP 44MQFP 42SDIP 44MQFP 42SDIP 1.2 Features • 8K/16K/24K Bytes On-chip ROM - One Serial I/O and two UART • FLASH Mermory - Endurance : 100 cycles - Data Retention : 10 years • One Buzzer Driving port - 488Hz ~ 250kHz@4MHz • 1024 Bytes On-chip Data RAM (Included stack memory) • Fifteen Interrupt sources - Basic Interval Timer(1) - External input(4) - Timer/Event counter(5) - ADC(1) - Serial Interface(1), UART(2) - WDT and Watch Timer(1) • Minimum Instruction Execution Time - 333ns at 12MHz (NOP instruction) • 36 I/O Ports • One 8-bit Basic Interval Timer • Four 8-bit and one 16-bit Timer/Event counter (or three 16-bit Timer/Event counter) • One Watchdog timer • One Watch timer • One 10-bit PWM • 8 channel 10-bit A/D converter • Three 8-bit Serial Communication Interface MAR. 2005 Ver 0.2 • Four External Interrupt input ports • Built in Noise Immunity Circuit - Noise filter - 3-level Power fail detector [3.0V, 2.7V, 2.4V] • Power Down Mode - Stop, Sleep mode • Operating Voltage Range - 2.7V ~ 5.5V (@ 8MHz) - 4.5V ~ 5.5V (@ 12MHz) 1 MC80F0208/16/24 Preliminary • Oscillator Type - Crystal, Ceramic resonator, External clock • Operating Frequency Range - 0.4 ~ 12MHz • 44MQFP, 42SDIP type • Operating Temperature : -40°C ~ 85°C 1.3 Ordering Information ROM Type Mask version FLASH version Device name ROM Size RAM size Package MC80C0208Q MC80C0208K 8K bytes 8K bytes 1024 bytes 44MQFP 42SDIP MC80C0216Q MC80C0216K 16K bytes 16K bytes 1024 bytes 44MQFP 42SDIP MC80C0224Q MC80C0224K 24K bytes 24K bytes 1024 bytes 44MQFP 42SDIP MC80F0208Q MC80F0208K 8K bytes FLASH 8K bytes FLASH 1024 bytes 44MQFP 42SDIP MC80F0216Q MC80F0216K 16K bytes FLASH 16K bytes FLASH 1024 bytes 44MQFP 42SDIP MC80F0224Q MC80F0224K 24K bytes FLASH 24K bytes FLASH 1024 bytes 44MQFP 42SDIP Table 1-1 Ordering Information of MC80F0208/16/24 & MC80C0208/16/24 2 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 1.4 Development Tools The MC80F0208/16/24 is supported by a full-featured macro assembler, an in-circuit emulator CHOICE-Dr.TM and OTP programmers. There are two different type of programmers such as single type and gang type. For mode detail, Macro assembler operates under the MS-Windows 95 and upversioned Windows OS. Please contact sales part of MagnaChip semiconductor. - MS-Windows based assembler - MS-Windows based Debugger - MC800 C compiler Software Hardware (Emulator) - CHOICE-Dr. - CHOICE-Dr. EVA80C0x B/D FLASH Writer - CHOICE - SIGMA I/II(Single writer) - PGM Plus I/II/III(Single writer) - Standalone GANG4 I/II(Gang writer) Choice-Dr. (Emulator) PGMplus III ( Single Writer ) MAR. 2005 Ver 0.2 Standalone Gang4 II ( Gang Writer ) 3 MC80F0208/16/24 Preliminary 2. BLOCK DIAGRAM Power Supply VDD VSS AVDD ADC Power Supply R00~R07 R0 PSW ALU A X Y Stack Pointer PC Data Memory (1024 bytes) Program Memory Interrupt Controller Data Table System controller System Clock Controller Timing Generator 4 XIN XOUT RESET Clock Generator 8-bit Basic Interval Timer Watch/ Watchdog Timer 8-bit Timer/ Counter Driver Buzzer R1 R10/INT0 R11/INT1 R12/INT2 R13/BUZO R15/EC0 10-bit PWM 8-bit serial Interface SIO/UART0 R5 R4 R40 R50/INT3 R41 R51/EC1 R54/PWM3O/T3O R42/SCK R43/SI R44/SO R45/ACLK0 R46/RxD0 R47/TxD0 10-bit ADC R6 R60/AN0 R61/AN1 R62/AN2 R63/AN3 R64/AN4 R65/AN5 R66/AN6 R67/AN7 8-bit serial Interface UART1 Instruction Decoder R3 R30 R31/ACLK1 R32/RxD1 R33/TxD1 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 3. PIN ASSIGNMENT 42SDIP (Top View) 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 R63 / AN3 R62 / AN2 R61 / AN1 R60 / AN0 R54 / PWM3O / T3O AVDD R51 / EC1 R50 / INT3 R47 / TxD0 R46 / RxD0 R45 / ACLK0 R44 / SO R43 / SI R42 / SCK R41 R40 R33 / TxD1 R32 / RxD1 R31 / ACLK1 R30 VSS 33 32 31 30 29 28 27 26 25 24 23 AVDD R51 / EC1 R50 / INT3 R47 / TxD0 R46 / RxD0 R45 / ACLK0 R44 / SO R43 / SI R42 / SCK R41 R40 44MQFP (Top View) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 MC80F0208K/16K/24K VDD AN4 / R64 AN5 / R65 AN6 / R66 AN7 / R67 R00 R01 R02 R03 R04 R05 R06 R07 INT0 / R10 INT1 / R11 INT2 / R12 BUZO / R13 EC0 / R15 RESET XIN XOUT 34 35 36 37 38 39 40 41 42 43 44 22 21 20 19 18 MC80F0208Q/16Q/24Q 17 16 15 14 13 12 NC R33 / TxD1 R32 / RxD1 R31 / ACLK1 R30 VSS XOUT XIN RESET R15 / EC0 R13 / BUZO R00 R01 R02 R03 R04 R05 R06 R07 INT0 / R10 INT1 / R11 INT2 / R12 1 2 3 4 5 6 7 8 9 10 11 T3O / PWM3O / R54 AN0 / R60 AN1 / R61 AN2 / R62 AN3 / R63 VDD AN4 / R64 AN5 / R65 AN6 / R66 AN7 / R67 NC MAR. 2005 Ver 0.2 5 MC80F0208/16/24 Preliminary 4. PACKAGE DIAGRAM 42SDIP UNIT: INCH 0.600 BSC min. 0.015 0.190 max. 1.470 1.450 0.045 0.035 0.070 BSC 0.140 0.120 0.020 0.016 0.550 0.530 0.012 0.008 0-15° 44MQFP UNIT: MM 2.10 1.95 13.45 12.95 10.10 9.90 13.45 12.95 10.10 9.90 0.25 0.10 SEE DETAIL “A” 2.35 max. 1.60 BSC 0.45 0.30 6 1.03 0.73 0.23 0.13 0-7° 0.80 BSC DETAIL “A” MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 5. PIN FUNCTION VDD: Supply voltage. VSS: Circuit ground. AVDD: Supply voltage to the ladder resistor of ADC circuit. RESET: Reset the MCU. XIN: Input to the inverting oscillator amplifier and input to the internal main clock operating circuit. XOUT: Output from the inverting oscillator amplifier. R00~R07: R0 is an 8-bit CMOS bidirectional I/O port. R0 pins with 1 or 0 written to the R0 Port Direction Register R0IO can be used as outputs or inputs. The internal pull-up resistor can be connected by using the pull-up selection register 0 (PU0). R10~R13, R15: R1 is an 5-bit CMOS bidirectional I/O port. R1 pins with 1 or 0 written to the R1 Port Direction Register R1IO can be used as outputs or inputs. The internal pull-up resistor can be connected by using the pull-up selection register 1 (PU1). In addition, R1 serves the functions of the various following special features such as INT0 (External interrupt 0), INT1 (External interrupt 1), INT2 (External interrupt 2), BUZO (Buzzer driver output), EC0 (Event counter input 0). R30~R33: R3 is an 4-bit CMOS bidirectional I/O port. R3 pins with 1 or 0 written to the R3 Port Direction Register R3IO can be used as outputs or inputs. R3 operates as the high current output MAR. 2005 Ver 0.2 port with typical 20mA at low level output. In addition, R3 serves the functions of the following special features such as ACLK1 (UART1 Asynchronous serial clock input), RxD1 (UART1 data input), TxD1 (UART1 data output). R40~R47: R4 is an 8-bit CMOS bidirectional I/O port. R4 pins with 1 or 0 written to the R4 Port Direction Register R4IO can be used as outputs or inputs. The internal pull-up resistor can be connected by using the pull-up selection register 4 (PU4). In addition, R4 serves the functions of the various following special features such as SCK (Serial clock), SI (Serial data input), SO (Serial data output), ACLK0 (UART1 Asynchronous serial clock input), RxD0 (UART0 data input), TxD0 (UART0 data output). R50, R51, R54: R5 is an 3-bit CMOS bidirectional I/O port. R5 pins with 1 or 0 written to the R5 Port Direction Register R5IO can be used as outputs or inputs. In addition, R5 serves the functions of the various following special features such as INT3 (External interrupt 3), EC1 (Event counter input 1), PWM3O (PWM output 3)/T3O(Timer3 Compare output). R60~R67: R6 is an 8-bit CMOS bidirectional I/O port. R6 pins with 1 or 0 written to the R6 Port Direction Register R6IO can be used as outputs or inputs. In addition, R6 serves the functions of the ADC analog input port AN[7:0]. 7 MC80F0208/16/24 Preliminary 5.1 Pin Description 5.1.1 Normal Function Pin Description PIN NAME R00~R07 In/Out Function I/O Port0 8-bit I/O port. Can be set in input or output mode in 1-bit units. Internal pull-up resistor PU0 can be used via software. I/O Port 1. 5-bit I/O port. Can be set in input or output mode in 1-bit units. Internal pull-up resistor PU1 can be used via software. Initial state Alternate Function Input - R10 INT0 R11 R12 R13 INT1 Input BUZO R15 EC0 R30 R31 R32 INT2 I/O Port 3. 4-bit I/O port. Can be set in input or output mode in 1-bit units. Input ACLK1 RxD1 R33 TxD1 R40 - R41 - R42 R43 R44 I/O R45 Port 4. 8-bit I/O port. Can be set in input or output mode in 1-bit units. Internal pull-up resistor PU4 can be used via software. SCK Input SI SO ACLK0 R46 RxD0 R47 TxD0 R50 INT3 I/O Port 5. 3-bit I/O port. Can be set in input or output mode in 1-bit units. Input R60~R67 I/O Port 6. 8-bit I/O port. Can be set in input or output mode in 1-bit units. Input AN0~AN7 RESET I System reset input. Input - XIN I Input - XOUT O Output - AVDD - Analog power/reference voltage input to A/D converter. Set the same potential as VDD. - - VDD - Positive power supply. - - VSS - Ground potential. - - R51 R54 Crystal connection for main system clock oscillation. EC1 PWM3O/T3O Table 5-1 Normal Function Pin Description 8 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 5.1.2 Alternate Function Pin Description PIN NAME In/Out Function Initial state INT0 INT1 INT2 Shared Pin R10 I Valid edges(rising, falling, or both rising and falling) can be specified. External Interrupt request Input. Input INT3 R11 R12 R50 BUZO O Buzzer Output Input R13 EC0 I Timer0 Event Counter Input Input R15 EC1 I SCK I/O Timer2 Event Counter Input Input R51 Serial clock input/output of serial interface. Input R42 SI I Serial data input of serial interface. Input R43 SO O Serial data output of serial interface. Input R44 ACLK0 I Asynchronous serial interface serial clock input. Input R45 RxD0 I Asynchronous serial interface serial data input. Input R46 TxD0 O Asynchronous serial interface serial data output. Input R47 ACLK1 I Asynchronous serial interface serial clock input2. Input R31 RxD1 I Asynchronous serial interface serial data input2. Input R32 TxD1 O Asynchronous serial interface serial data output2. Input R33 Output R54 Input R60~R67 PWM3O T3O AN0~AN7 O I Timer3 PWM Output Timer3 Compare Output Analog input Channel 0 ~ 7 for A/D converter. Table 5-2 Alternate Function Pin Description MAR. 2005 Ver 0.2 9 MC80F0208/16/24 Preliminary 6. PORT STRUCTURES R00~R07, R40, R41 R13(BUZO), R47(TxD0) VDD VDD Pull-up Tr. Pull-up Reg. VDD Pull-up Tr. Pull-up Reg. VDD VDD BUZO,TxD0 Data Reg. Data Reg. VDD MUX Pin Direction Reg. Pin Direction Reg. VSS VSS VSS BUZO_EN,TxD0_EN Data Bus VSS MUX MUX Data Bus RD RD R10(INT0)~ R12(INT2), R15(EC0), R43(SI), R45(ACLK0), R46(RxD0) R30 VDD Pull-up Tr. Pull-up Reg. VDD VDD VDD VDD Data Reg. Data Reg. Direction Reg. Pin Pin Direction Reg. VSS VSS Data Bus VSS VSS Data Bus MUX RD INT,EC,SI, RxD0, ACLK0 MUX RD Noise Filter INT_EN, EC_EN SI_EN, ACLK0_EN, RxD0_EN 10 MAR. 2005 Ver 0.2 Preliminary R33(TxD1) MC80F0208/16/24 R44(SO, IOSWIN) VDD Pull-up Tr. Pull-up Reg. VDD TxD1 Data Reg. MUX Data Reg. VSS VSS TxD1_EN VDD MUX Direction Reg. Pin Direction Reg. VDD SO VDD Pin VSS SO_EN VSS Data Bus MUX MUX Data Bus RD IOSWIN_EN SI Noise Filter RD IOSWIN_EN R42(SCK) R31(ACLK1), R32(RxD1), R50(INT3), R51(EC1) VDD Pull-up Tr. Pull-up Reg. VDD SCK Data Reg. VDD Data Reg. VDD Direction Reg. MUX Direction Reg. Pin Pin VSS SCKO_EN VDD VSS VSS Data Bus MUX Data Bus MUX RD SCKI_EN SCK MAR. 2005 Ver 0.2 Noise Filter RD INT3, EC1 ACLK1, RxD1 Noise Filter INT3_EN, EC1_EN ACLK1_EN, RxD1_EN 11 MC80F0208/16/24 Preliminary R54(PWM3O/T3O) XIN, XOUT VDD PWM3O VDD Data Reg. VDD MUX XIN STOP Pin Direction Reg. VSS VSS PWM3_EN VSS VSS VDD Data Bus MUX MAIN CLOCK XOUT RD VSS R60~R67(AN0~AN7) RESET VDD VDD VDD Data Reg. Mask only Direction Reg. Pin VSS Data Bus VSS Internal Reset Pin VSS MUX RD AN[7:0] ADC_EN & CH_SEL 12 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 7. ELECTRICAL CHARACTERISTICS 7.1 Absolute Maximum Ratings Parameter Supply Voltage Normal Votagae Pin Total Power Dissipation Storage Temperature Symbol Rating Unit Note -0.3 ~ +6.5 V - VDD - 0.3 ~ VDD +0.3 V - VI -0.3 ~ VDD +0.3 V VO -0.3 ~ VDD +0.3 V IOH 10 mA Maximum output current sourced by (IOH per I/O Pin) ΣIOH 80 mA Maximum current (ΣIOH) IOL 20 mA Maximum current sunk by (IOL per I/O Pin) ΣIOL 160 mA Maximum current (ΣIOL) fXIN 600 mW - °C °C VDD AVDD TSTG -65 ~ +150 Voltage on any pin with respect to Ground (VSS) the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. Note: Stresses above those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of the device at any other conditions above those indicated in 7.2 Recommended Operating Conditions Specifications Parameter Supply Voltage Operating Temperature Symbol Condition VDD TOPR Unit Min. Max. fXIN = 0.4 ~ 12MHz 4.5 5.5 V fXIN = 0.4 ~ 8MHz 2.7 5.5 V VDD = 4.5 ~ 5.5V -40 85 °C 7.3 A/D Converter Characteristics (Ta=-40~85°C, VSS=0V, VDD= AVDD = 2.7~5.5V @fXIN=4MHz) Parameter Symbol Conditions Min. Typ. Max. Unit Resolution - - - 10 - BIT Total Accuracy - - - ±3 LSB - - ±2 LSB - - ±2 LSB Intergral Linearity Error ILE AVDD = VDD = 5.12V fXIN = 4Mhz Differential Linearity Error DLE Zero Offset Error ZOE - - ±2 LSB Full Scale Error FSE - - ±2 LSB Conversion Time tCON 13* - - µS MAR. 2005 Ver 0.2 10bit conversion fXIN = 4Mhz 13 MC80F0208/16/24 Preliminary Parameter Symbol Conditions Min. Typ. Max. Unit Analog Input Voltage VAN - VSS - AVDD V Analog Power Supply AVDD - - - VDD V Analog Ground VSS - VSS - VSS+0.3 V Analog Input Current IADIN AVDD=VDD=5.12V - - 10 µA Analog Block Current IADC AVDD=VDD=5.12V - 200 300 µA Note : 4MHz(fXIN) / 22 X 13Cycle = 13uS 7.4 DC Electrical Characteristics (TA=-40~85°C, VDD=5.0V±10%, VSS=0V, fXIN=8MHz) Parameter Symbol Typ. Max. Unit INT0, INT1, INT2, INT3, EC0, EC1, SI, SCK, ACLK0, ACLK1, RxD0, RxD1, RESET 0.8VDD - VDD+0.3 V VIH2 R0, R1, R3, R4, R5, R6 0.7VDD - VDD+0.3 V VIH3 XIN 0.8VDD - VDD+0.3 V VIL1 INT0, INT1, INT2, INT3, EC0, EC1, SI, SCK, ACLK0,ACLK1, RxD0, RxD1, RESET -0.3 - 0.2VDD V VIL2 R0, R1, R3, R4, R5, R6 -0.3 - 0.3VDD V VIL3 XIN -0.3 - 0.2VDD V VOH1 R0, R1, R3, R4, R5, R6 (IOH=-0.7mA) VDD-0.4 - - V VOH2 XOUT (IOH=-50µA) VDD-0.5 - - V VOL1 R0, R1, R3, R4, R5, R6 (IOL=1.6mA) - - 0.4 V VOL2 XOUT (IOL=50µA) - - 0.5 V Input Low Voltage Output Low Voltage Min. VIH1 Input High Voltage Output High Voltage Pin/Condition High Current IOL R3 (VOL=1V) - - 20 mA Input High Leakage Current IIH R0, R1, R3, R4, R5, R6 - - 1 µA Input Low Leakage Current IIL R0, R1, R3, R4, R5, R6 -1 - - µA Pull-up Resistor RPU R0, R1, R4 10 - 100 kΩ OSC Feedback Resistor RX XIN, XOUT 0.45 - 4.5 MΩ Internal RC WDT Period (RCWDT) IIL VDD=4.5V 33 - 100 µS Hysteresis VT INT0, INT1, INT2, INT3, EC0, EC1, SI, SCK, ACLK0, ACLK1, RxD0,RxD1 0.3 - 0.8 V 2.2 2.7 3.2 V 2.5 3.0 3.5 V 1.9 2.4 2.9 V Power Fail Detect Voltage 14 VPFD MAR. 2005 Ver 0.2 Preliminary Parameter Power Supply Current MAR. 2005 Ver 0.2 Symbol Pin/Condition MC80F0208/16/24 Min. Typ. Max. Unit IDD1 Active Mode, XIN=8MHz - - 15 mA ISLEEP Sleep Mode, XIN=8MHz - - 6 mA ISTOP Stop Mode, Oscillator Stop, XIN=4MHz - - 5 µA IRCWDT Stop Mode, Oscillator Stop, XIN=8MHz - - 40 µA 15 MC80F0208/16/24 Preliminary 7.5 AC Characteristics (TA=-40~85°C, VDD=5V±10%, VSS=0V) Parameter Symbol Pins Operating Frequency fXIN Oscillation Stabilizing Time (4MHz) External Clock Pulse Width Specifications Unit Min. Typ. Max. XIN 0.4 - 12 MHz tST XIN, XOUT - - 20 mS tCPW XIN 35 - - nS External Clock Transition Time tRCP,tFCP XIN - - 20 nS Interrupt Pulse Width tIW INT0, INT1, INT2, INT3 2 - - tSYS RESET Input Width tRST RESET 8 - - tSYS Event Counter Input Pulse Width tECW EC0, EC1 2 - - tSYS tREC,tFEC EC0, EC1 - - 20 nS Event Counter Transition Time tSYS = 1/fXIN tCPW tCPW VDD-0.5V XIN 0.5V tRCP tIW INT0~INT3 tFCP tIW 0.8VDD 0.2VDD tRST RESET 0.2VDD tECW tECW 0.8VDD EC0, EC1 0.2VDD tREC tFEC Figure 7-1 Timing Chart 16 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 7.6 Serial Interface Timing Characteristics (TA=-40~+85°C, VDD=5V±10%, VSS=0V, fXIN=8MHz) Specifications Parameter Symbol Pins Unit Min. Typ. Max. Serial Input Clock Pulse tSCYC SCK 2tSYS+200 - - nS Serial Input Clock Pulse Width tSCKW SCK tSYS+70 - - nS Serial Input Clock Pulse Transition Time tFSCK tRSCK SCK - - 30 nS Serial Input Pulse Transition Time tFSIN tRSIN SI - - 30 nS Serial Input Setup Time (External SCK) tSUS SI 100 - - nS Serial Input Setup Time (Internal SCK) tSUS SI 200 - nS Serial Input Hold Time tHS SI tSYS+70 - nS Serial Output Clock Cycle Time tSCYC SCK 4tSYS - Serial Output Clock Pulse Width tSCKW SCK tSYS-30 Serial Output Clock Pulse Transition Time tFSCK tRSCK SCK 30 nS Serial Output Delay Time sOUT SO 100 nS tSCKW nS tSCKW 0.8VDD 0.2VDD tSUS tHS 0.8VDD 0.2VDD SI tDS SO nS tSCYC tRSCK tFSCK SCK 16tSYS tFSIN tRSIN 0.8VDD 0.2VDD Figure 7-2 Serial I/O Timing Chart MAR. 2005 Ver 0.2 17 MC80F0208/16/24 Preliminary 7.7 Typical Characteristic Curves This graphs and tables provided in this section are for design guidance only and are not tested or guaranteed. In some graphs or tables the data presented are outside specified operating range (e.g. outside specified VDD range). This is for information only and devices are guaranteed to operate properly only within the specified range. IOH−VOH IOH (mA) VDD=5.0V TA=25°C -12 R0,R1,R3~R6 pins IOH−VOH IOH (mA) VDD=3.0V TA=25°C -12 -9 -9 -6 -6 -3 -3 0 R0,R1,R3~R6 pins 0 0.5 1.0 1.5 IOL−VOL1 2.0 2.5 VDD-VOH (V) R0~R2, R4~R6 pins IOL (mA) VDD=5.0V TA=25°C 40 0.5 1.0 IOL−VOL1 IOL (mA) VDD=3.0V TA=25°C 20 30 15 20 10 10 5 1.5 2.0 VDD-VOH (V) R0,R1, R4~R6 pins 0 0 0.5 1.0 1.5 2.0 IOL−VOL2 2.5 0.5 VOL (V) R3 pin IOL (mA) VDD=5.0V TA=25°C 40 1.0 IOL−VOL2 IOL (mA) VDD=3.0V TA=25°C 20 30 15 20 10 10 5 1.5 2.0 VOL (V) R3 pin 0 0 0.5 18 The data presented in this section is a statistical summary of data collected on units from different lots over a period of time. “Typical” represents the mean of the distribution while “max” or “min” represents (mean + 3σ) and (mean − 3σ) respectively where σ is standard deviation 1.0 1.5 2.0 2.5 VOL (V) 0.5 1.0 1.5 2.0 VOL (V) MAR. 2005 Ver 0.2 Preliminary IDD−VDD IDD (mA) ISLEEP−VDD Main Active Mode IDD (mA) TA=25°C 10 7.5 fXIN = 12MHz 5 8MHz MC80F0208/16/24 IDD (µA) TA=25°C 4 4 3 3 2 8MHz fXIN = 12MHz 2.5 1 2 3 4 5 Main Active Mode TA=25°C 2 fXIN = 12MHz, 8MHz, 4MHz 1 4MHz 0 ISTOP−VDD Main Active Mode 4MHz 0 VDD 6 (V) 2 3 4 5 fXIN Operating Area (MHz) TA= -40~85°C 16 VDD 6 (V) 0 2 3 4 5 VDD 6 (V) Actual Operating Area 2.1~7.0V @ (0.2~8MHz) 2.6~7.0V @ (0.2~16MHz) 14 12 10 8 Spec Operating Area 2.7~5.5V @ (0.4~8MHz) 4.5~5.5V @ (0.4~12MHz) 6 4 2 0 1 MAR. 2005 Ver 0.2 2 3 4 5 6 7 VDD (V) 19 MC80F0208/16/24 Preliminary 8. MEMORY ORGANIZATION The MC80F0208/16/24 has separate address spaces for Program memory and Data Memory. Program memory can only be read, not written to. It can be up to 48K bytes of Program memory. Data memory can be read and written to up to 1024 bytes including the stack area. 8.1 Registers This device has six registers that are the Program Counter (PC), a Accumulator (A), two index registers (X, Y), the Stack Pointer (SP), and the Program Status Word (PSW). The Program Counter consists of 16-bit register. PCH A ACCUMULATOR X X REGISTER Y Y REGISTER SP STACK POINTER PCL PROGRAM COUNTER PSW PROGRAM STATUS WORD executed or an interrupt is accepted. However, if it is used in excess of the stack area permitted by the data memory allocating configuration, the user-processed data may be lost. The stack can be located at any position within 100H to 1FFH of the internal data memory. The SP is not initialized by hardware, requiring to write the initial value (the location with which the use of the stack starts) by using the initialization routine. Normally, the initial value of “FFH” is used. Bit 15 Stack Address (100H ~ 1FFH) 8 7 Bit 0 01H SP 00H~FFH Hardware fixed Figure 8-1 Configuration of Registers Accumulator: The Accumulator is the 8-bit general purpose register, used for data operation such as transfer, temporary saving, and conditional judgement, etc. The Accumulator can be used as a 16-bit register with Y Register as shown below. Y Y A A Two 8-bit Registers can be used as a “YA” 16-bit Register Figure 8-2 Configuration of YA 16-bit Register X, Y Registers: In the addressing mode which uses these index registers, the register contents are added to the specified address, which becomes the actual address. These modes are extremely effective for referencing subroutine tables and memory tables. The index registers also have increment, decrement, comparison and data transfer functions, and they can be used as simple accumulators. Stack Pointer: The Stack Pointer is an 8-bit register used for occurrence interrupts and calling out subroutines. Stack Pointer identifies the location in the stack to be accessed (save or restore). Note: The Stack Pointer must be initialized by software because its value is undefined after Reset. Example: To initialize the SP LDX #0FFH TXSP ; SP ← FFH Program Counter: The Program Counter is a 16-bit wide which consists of two 8-bit registers, PCH and PCL. This counter indicates the address of the next instruction to be executed. In reset state, the program counter has reset routine address (PCH:0FFH, PCL:0FEH). Program Status Word: The Program Status Word (PSW) contains several bits that reflect the current state of the CPU. The PSW is described in Figure 8-3. It contains the Negative flag, the Overflow flag, the Break flag the Half Carry (for BCD operation), the Interrupt enable flag, the Zero flag, and the Carry flag. [Carry flag C] This flag stores any carry or borrow from the ALU of CPU after an arithmetic operation and is also changed by the Shift Instruction or Rotate Instruction. [Zero flag Z] This flag is set when the result of an arithmetic operation or data transfer is “0” and is cleared by any other result. Generally, SP is automatically updated when a subroutine call is 20 MAR. 2005 Ver 0.2 Preliminary PSW MSB N V G B H NEGATIVE FLAG OVERFLOW FLAG SELECT DIRECT PAGE when G=1, page is selected to “page 1” BRK FLAG I Z MC80F0208/16/24 LSB C RESET VALUE: 00H CARRY FLAG RECEIVES CARRY OUT ZERO FLAG INTERRUPT ENABLE FLAG HALF CARRY FLAG RECEIVES CARRY OUT FROM BIT 1 OF ADDITION OPERLANDS Figure 8-3 PSW (Program Status Word) Register [Interrupt disable flag I] This flag enables/disables all interrupts except interrupt caused by Reset or software BRK instruction. All interrupts are disabled when cleared to “0”. This flag immediately becomes “0” when an interrupt is served. It is set by the EI instruction and cleared by the DI instruction. [Half carry flag H] After operation, this is set when there is a carry from bit 3 of ALU or there is no borrow from bit 4 of ALU. This bit can not be set or cleared except CLRV instruction with Overflow flag (V). [Break flag B] This flag is set by software BRK instruction to distinguish BRK from TCALL instruction with the same vector address. [Direct page flag G] MAR. 2005 Ver 0.2 This flag assigns RAM page for direct addressing mode. In the direct addressing mode, addressing area is from zero page 00H to 0FFH when this flag is "0". If it is set to "1", addressing area is assigned 100H to 1FFH. It is set by SETG instruction and cleared by CLRG. [Overflow flag V] This flag is set to “1” when an overflow occurs as the result of an arithmetic operation involving signs. An overflow occurs when the result of an addition or subtraction exceeds +127(7FH) or 128(80H). The CLRV instruction clears the overflow flag. There is no set instruction. When the BIT instruction is executed, bit 6 of memory is copied to this flag. [Negative flag N] This flag is set to match the sign bit (bit 7) status of the result of a data or arithmetic operation. When the BIT instruction is executed, bit 7 of memory is copied to this flag. 21 MC80F0208/16/24 Preliminary At acceptance of interrupt At execution of a CALL/TCALL/PCALL 01FF Push down 01FF PCH 01FE PCL 01FD 01FD PSW 01FC 01FC 01FE PCH PCL At execution of RET instruction Push down 01FF PCH 01FE PCL At execution of RET instruction 01FF PCH 01FE PCL 01FD 01FD PSW 01FC 01FC Pop up SP before execution 01FF 01FF 01FD 01FC SP after execution 01FD 01FC 01FF 01FF At execution of PUSH instruction PUSH A (X,Y,PSW) 01FF A 01FE Push down Pop up At execution of POP instruction POP A (X,Y,PSW) 01FF A 01FE 01FD 01FD 01FC 01FC Pop up 0100H Stack depth 01FFH SP before execution 01FF 01FE SP after execution 01FE 01FF Figure 8-4 Stack Operation 8.2 Program Memory A 16-bit program counter is capable of addressing up to 64K bytes, but this device has 32/48K bytes program memory space only physically implemented. Accessing a location above FFFFH will cause a wrap-around to 0000H. Figure 8-5, shows a map of Program Memory. After reset, the 22 CPU begins execution from reset vector which is stored in address FFFEH and FFFFH as shown in Figure 8-6. As shown in Figure 8-5, each area is assigned a fixed location in Program Memory. Program Memory area contains the user program MAR. 2005 Ver 0.2 Preliminary . The interrupt causes the CPU to jump to specific location, where it commences the execution of the service routine. The External interrupt 0, for example, is assigned to location 0FFFCH. The interrupt service locations spaces 2-byte interval: 0FFFAH and 0FFFBH for External Interrupt 1, 0FFFCH and 0FFFDH for External Interrupt 0, etc. A000H FFFFH TCALL area Interrupt Vector Area PCALL area FEFFH FF00H MC80F0224, 24K ROM MC80F0208, 8K ROM E000H MC80F0216, 16K ROM C000H FFC0H FFDFH FFE0H MC80F0208/16/24 Any area from 0FF00H to 0FFFFH, if it is not going to be used, its service location is available as general purpose Program Memory. Address 0FFE0H E2 Vector Area Memory Basic Interval Timer Watch / Watchdog Timer Interrupt E4 A/D Converter E6 Timer/Counter 4 Interrupt E8 Timer/Counter 3 Interrupt EA Timer/Counter 2 Interrupt EC Timer/Counter 1 Interrupt EE Timer/Counter 0 Interrupt F0 Serial Input/Output (SIO) Figure 8-5 Program Memory Map F2 UART1 Rx/Tx interrupt Page Call (PCALL) area contains subroutine program to reduce program byte length by using 2 bytes PCALL instead of 3 bytes CALL instruction. If it is frequently called, it is more useful to save program byte length. F4 UART0 Rx/Tx interrupt F6 External Interrupt 3 F8 External Interrupt 2 FA External Interrupt 1 Table Call (TCALL) causes the CPU to jump to each TCALL address, where it commences the execution of the service routine. The Table Call service area spaces 2-byte for every TCALL: 0FFC0H for TCALL15, 0FFC2H for TCALL14, etc., as shown in Figure 8-7. FC External Interrupt 0 FE RESET Figure 8-6 Interrupt Vector Area Example: Usage of TCALL LDA #5 TCALL 0FH : : ; ;TABLE CALL ROUTINE ; FUNC_A: LDA LRG0 RET ; FUNC_B: LDA LRG1 2 RET ; ;TABLE CALL ADD. AREA ; ORG 0FFC0H DW FUNC_A DW FUNC_B MAR. 2005 Ver 0.2 ;1BYTE INSTRUCTION ;INSTEAD OF 3 BYTES ;NORMAL CALL 1 ;TCALL ADDRESS AREA 23 MC80F0208/16/24 Preliminary Address 0FF00H PCALL Area Memory Address PCALL Area (256 Bytes) 0FFC0H C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF 0FFFFH Program Memory TCALL 15 TCALL 14 TCALL 13 TCALL 12 TCALL 11 TCALL 10 TCALL 9 TCALL 8 TCALL 7 TCALL 6 TCALL 5 TCALL 4 TCALL 3 TCALL 2 TCALL 1 TCALL 0 / BRK * NOTE: * means that the BRK software interrupt is using same address with TCALL0. Figure 8-7 PCALL and TCALL Memory Area PCALL→ rel TCALL→ n 4F35 4A PCALL 35H TCALL 4 4A 4F 01001010 35 ~ ~ ~ ~ ~ ~ 0D125H ➊ ~ ~ NEXT Reverse PC: 11111111 11010110 FH FH DH 6H 0FF00H 0FF35H 0FFFFH 24 NEXT ➌ 0FF00H 0FFD6H 25 0FFD7H D1 ➋ 0FFFFH MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 Example: The usage software example of Vector address for MC80F0208/16/24 . ;Interrupt Vector Table ORG 0FFE0H DW BIT_TIMER DW WATCH_WDT DW ADC DW TIMER4 DW TIMER3 DW TIMER2 DW TIMER1 DW TIMER0 DW SIO DW UART1 DW UART0 DW INT3 DW INT2 DW INT1 DW INT0 DW RESET ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; BIT WDT & WT AD Converter Timer-4 Timer-3 Timer-2 Timer-1 Timer-0 Serial Interface UART1 Rx/Tx UART0 Rx/Tx Ext Int.3 Ext Int.2 Ext Int.1 Ext Int.0 Reset ORG 0A000H ; 24K bytes ROM Start address ;******************************************* ; MAIN PROGRAM * ;******************************************* RESET: DI ;Disable All Interrupt RAMCLEAR: LDX #00H ;USER RAM START ADDRESS LOAD ! LDY #0 RAMCLR1: LDA #00H ;Page0 Ram Clear(0000h ~ 00BFh) STA {X}+ ; CMPX #0C0H ; BNE RAMCLR1 ; INC STY SETG Y !RPR LDX #00H LDA STA CMPX BNE #00H {X}+ #00H RAMCLR2 INC CMPY BCS Y #4 RAMCLR3 ; ;Page1 Ram Select ;G-FLAG SET ! RAMCLR2: STY SETG ;Page1 ~ Page3 Clear(0100h ~ 03FFh) !RPR BRA RAMCLR2 RAMCLR3: STY SETG LDA STA CMPX BNE !RPR #00H {X}+ #40H RAMCLR3 CLRG LDX TXSP ;Page4 Clear(0400h ~ 043Fh) ;A <-- #0 ; ;G-FLAG CLEAR ! #0FFH MAR. 2005 Ver 0.2 ;Initial Stack Point (01FFh) 25 MC80F0208/16/24 Preliminary 8.3 Data Memory Control Registers Figure 8-8 shows the internal Data Memory space available. Data Memory is divided into three groups, a user RAM, control registers, and Stack memory. The control registers are used by the CPU and Peripheral function blocks for controlling the desired operation of the device. Therefore these registers contain control and status bits for the interrupt system, the timer/ counters, analog to digital converters and I/O ports. The control registers are in address range of 0C0H to 0FFH. 0000H User Memory (192Bytes) 00BFH 00C0H Control Registers 00FFH 0100H Note that unoccupied addresses may not be implemented on the chip. Read accesses to these addresses will in general return random data, and write accesses will have an indeterminate effect. PAGE0 (When “G-flag=0”, this page0 is selected) More detailed informations of each register are explained in each peripheral section. User Memory or Stack Area (256Bytes) PAGE1 Note: Write only registers can not be accessed by bit manipulation instruction. Do not use read-modify-write instruction. Use byte manipulation instruction, for example “LDM”. 01FFH 0200H User Memory (256Bytes) PAGE2 Example; To write at CKCTLR 02FFH 0300H LDM User Memory (256Bytes) 03BFH 03C0H 03FFH 0400H PAGE3 Stack Area The stack provides the area where the return address is saved before a jump is performed during the processing routine at the execution of a subroutine call instruction or the acceptance of an interrupt. User Memory (64Bytes) 043FH 0440H PAGE4 Not Used When returning from the processing routine, executing the subroutine return instruction [RET] restores the contents of the program counter from the stack; executing the interrupt return instruction [RETI] restores the contents of the program counter and flags. 04FFH Figure 8-8 Data Memory Map User Memory The save/restore locations in the stack are determined by the stack pointed (SP). The SP is automatically decreased after the saving, and increased before the restoring. This means the value of the SP indicates the stack location number for the next save. Refer to Figure 8-4 on page 22. The MC80F0208/16/24 has 1024 × 8 bits for the user memory (RAM). RAM pages are selected by RPR (See Figure 8-9). Note: After setting RPR(RAM Page Select Register), be sure to execute SETG instruction. When executing CLRG instruction, be selected PAGE0 regardless of RPR. RPR CLCTLR,#0AH ;Divide ratio(÷32) 7 6 5 4 3 R/W 2 R/W 1 R/W 0 - - - - - RPR2 RPR1 RPR0 ADDRESS: 0E1H INITIAL VALUE: ---- -000B System clock source select 000 : PAGE0 001 : PAGE1 010 : PAGE2 011 : PAGE3 100 : PAGE4 Figure 8-9 RPR(RAM Page Select Register) 26 MAR. 2005 Ver 0.2 Preliminary Address Register Name Symbol MC80F0208/16/24 Initial Value R/W 7 6 5 4 3 2 1 0 Addressing Mode R0 R/W 0 0 0 0 0 0 0 0 byte, bit1 R0IO W 0 0 0 0 0 0 0 0 byte2 R1 R/W 0 0 0 0 0 0 0 0 byte, bit R1IO W 0 0 0 0 0 0 0 0 byte R3 R/W 0 0 0 0 0 0 0 0 byte, bit R3IO W 0 0 0 0 0 0 0 0 byte R4 R/W 0 0 0 0 0 0 0 0 byte, bit R4IO W 0 0 0 0 0 0 0 0 byte R5 R/W - - - 0 0 0 0 0 byte, bit R5IO W - - - 0 0 0 0 0 byte R6 R/W 0 0 0 0 0 0 0 0 byte, bit R6IO W 0 0 0 0 0 0 0 0 byte TM0 R/W T0 R 0 0 0 0 0 0 0 0 Timer 0 data register TDR0 W 1 1 1 1 1 1 1 1 Timer 0 capture data register CDR0 R 0 0 0 0 0 0 0 0 00D2 Timer 1 mode control register TM1 R/W 0 0 0 0 0 0 0 0 byte, bit 00D3 Timer 1 data register TDR1 W 1 1 1 1 1 1 1 1 byte T1 R 0 0 0 0 0 0 0 0 CDR1 R 0 0 0 0 0 0 0 0 TM2 R/W T2 R 0 0 0 0 0 0 0 0 Timer 2 data register TDR2 W 1 1 1 1 1 1 1 1 Timer 2 capture data register CDR2 R 0 0 0 0 0 0 0 0 Timer 3 mode control register TM3 R/W 0 0 0 0 0 0 0 0 TDR3 W 1 1 1 1 1 1 1 1 T3PPR W 1 1 1 1 1 1 1 1 00C0 R0 port data register 00C1 R0 port I/O direction register 00C2 R1 port data register 00C3 R1 port I/O direction register 00C4 Reserved 00C5 Reserved 00C6 R3 port data register 00C7 R3 port I/O direction register 00C8 R4 port data register 00C9 R4 port I/O direction register 00CA R5 port data register 00CB R5 port I/O direction register 00CC R6 port data register 00CD R6 port I/O direction register 00CE Reserved 00CF Reserved 00D0 Timer 0 mode control register Timer 0 register 00D1 Timer 1 register - - 0 0 0 0 0 0 00D4 00D5 Reserved Timer 2 mode control register Timer 2 register 00D7 00D8 byte byte Timer 1 capture data register 00D6 byte, bit Timer 3 data register - - 0 0 0 0 0 0 00D9 byte, bit byte byte, bit byte Timer 3 PWM period register Table 8-1 Control Registers MAR. 2005 Ver 0.2 27 MC80F0208/16/24 Address Preliminary Register Name Symbol Initial Value R/W 7 6 5 4 3 2 1 0 Timer 3 register 00DA T3 R 0 0 0 0 0 0 0 0 Timer 3 PWM duty register T3PDR R/W 0 0 0 0 0 0 0 0 Timer 3 capture data register CDR3 R 0 0 0 0 0 0 0 0 T3PWHR W - - - - 0 0 0 0 0 0 00DB Timer 3 PWM high register 00DC Timer 4 mode control register TM4 R/W Timer 4 low register T4L R 0 0 0 0 0 0 0 0 Timer 4 low data register TDR4L W 1 1 1 1 1 1 1 1 Timer 4 capture low data register CDR4L R 0 0 0 0 0 0 0 0 T4H R 0 0 0 0 0 0 0 0 Timer 4 high data register TDR4H W 1 1 1 1 1 1 1 1 Timer 4 capture high data register CDR4H R 0 0 0 0 0 0 0 0 00DD Timer 4 high register 00DE - 0 0 0 0 byte byte, bit byte byte Interrupt flag register IFR R/W 00E0 Buzzer driver register BUZR W 00E1 RAM page selection register RPR R/W - - 0 0 0 byte, bit 00E2 SIO mode control register SIOM R/W 0 0 0 0 0 0 0 1 byte, bit 00E3 SIO data shift register SIOR R/W Undefined byte, bit 0 0 0 0 - 0 0 - byte, bit Reserved 00E5 Reserved - 0 0 0 0 0 0 byte 00DF 00E4 - - Addressing Mode 1 1 1 1 1 1 1 1 - - - byte, bit byte 00E6 UART0 mode register ASIMR0 R/W 00E7 UART0 status register ASISR0 R 00E8 UART0 Baud rate generator control register BRGCR0 R/W - 0 0 1 0 0 0 0 UART0 Receive buffer register RXR0 R 0 0 0 0 0 0 0 0 UART0 Transmit shift register TXR0 W 1 1 1 1 1 1 1 1 00EA Interrupt enable register high IENH R/W 0 0 0 0 0 0 0 0 byte, bit 00EB Interrupt enable register low IENL R/W 0 0 0 0 0 0 0 0 byte, bit 00EC Interrupt request register high IRQH R/W 0 0 0 0 0 0 0 0 byte, bit 00ED Interrupt request register low IRQL R/W 0 0 0 0 0 0 0 0 byte, bit 00EE Interrupt edge selection register IEDS R/W 0 0 0 0 0 0 0 0 byte, bit 00EF A/D converter mode control register ADCM R/W 0 0 0 0 0 0 0 1 byte, bit 00F0 A/D converter result high register ADCRH R(W) 0 1 00F1 A/D converter result low register ADCRL R Undefined BITR R Undefined CKCTLR W 0 - 0 1 0 1 1 1 - - - - - 0 0 0 00E9 byte, bit byte Basic interval timer register Undefined byte byte 00F2 byte Clock control register 00F3 byte Reserved Table 8-1 Control Registers 28 MAR. 2005 Ver 0.2 Preliminary Address Register Name Symbol MC80F0208/16/24 Initial Value R/W 7 6 5 4 3 2 1 0 Watch dog timer register WDTR W 0 1 1 1 1 1 1 1 WDTDR R Undefined 0 0 0 0 0 0 0 0 Addressing Mode 00F4 byte Watch dog timer data register 00F5 Stop & sleep mode control register SSCR W 00F6 Watch timer mode register WTMR R/W 0 - - 0 0 0 0 0 byte, bit 00F7 PFD control register PFDR R/W - - byte, bit 00F8 Port selection register 0 PSR0 W 0 0 0 0 0 0 0 0 byte 00F9 Port selection register 1 PSR1 W - - 0 0 0 0 byte 00FA Reserved 00FB Reserved - - - - - 0 0 0 byte 00FC Pull-up selection register 0 PU0 W 0 0 0 0 0 0 0 0 byte 00FD Pull-up selection register 1 PU1 W 0 0 0 0 0 0 0 0 byte 00FE Pull-up selection register 4 PU4 W 0 0 0 0 0 0 0 0 byte 0 0 0 0 - 0 0 - byte, bit 00FF Reserved 0EE6 UART1 mode register ASIMR1 R/W 0EE7 UART1 status register ASISR1 R 0EE8 UART1 Baud rate generator control register BRGCR1 R/W - 0 0 1 0 0 0 0 UART1 Receive buffer register RXR1 R 0 0 0 0 0 0 0 0 UART1 Transmit shift register TXR1 W 1 1 1 1 1 1 1 1 - - - - - 0 0 0 0EE9 byte byte, bit byte Table 8-1 Control Registers 1. The ‘byte, bit’ means registers are controlled by both bit and byte manipulation instruction. Caution) The R/W register except T1PDR and T3PDR are both can be byte and bit manipulated. 2. The ‘byte’ means registers are controlled by only byte manipulation instruction. Do not use bit manipulation instruction such as SET1, CLR1 etc. If bit manipulation instruction is used on these registers, content of other seven bits are may varied to unwanted value. 3. The UART1 control register ASIMR1,ASISR1, BRGCR1,RXR1 and TXR1 are located at EE6H ~ EE9H address. These address must be accessed(read and written) by absolute addressing manipulation instruction. *The mark of ‘-’ means this bit location is reserved. MAR. 2005 Ver 0.2 29 MC80F0208/16/24 Address Name Preliminary Bit 7 Bit 6 Bit 5 0C0H R0 R0 Port Data Register 0C1H R0IO R0 Port Direction Register 0C2H R1 R1 Port Data Register 0C3H R1IO R1 Port Direction Register 0C4H Reserved 0C5H Reserved Bit 4 Bit 3 0C6H R3 R3 Port Data Register 0C7H R3IO R3 Port Direction Register 0C8H R4 R4 Port Data Register 0C9H R4IO R4 Port Direction Register 0CAH R5 - - - R5 Port Data Register 0CBH R5IO - - - R5 Port Direction Register 0CCH R6 R6 Port Data Register 0CDH R6IO R6 Port Direction Register 0CEH Reserved 0CFH Reserved - - CAP0 T0CK2 T0CK1 Bit 2 Bit 1 Bit 0 T0CK0 T0CN T0ST T1CN T1ST 0D0H TM0 0D1H T0/TDR0/ CDR0 0D2H TM1 0D3H TDR1 Timer1 Data Register 0D4H T1/CDR1 Timer1 Register / Timer1 Capture Data Register 0D5H PWM1HR - - - - 0D6H TM2 - - CAP2 T2CK2 0D7H T2/TDR2/ CDR2 0D8H TM3 0D9H TDR3/ T3PPR 0DAH T3/CDR3/ Timer3 Register / Timer3 Capture Data Register / Timer3 PWM Duty Register T3PDR 0DBH PWM3HR - - - - 0DCH TM4 - - CAP4 T4CK2 0DDH T4L/ TDR4L/ CDR4L Timer0 Register / Timer0 Data Register / Timer0 Capture Data Register - 16BIT - CAP1 T1CK1 T1CK0 Timer1 PWM High Register T2CK1 T2CK0 T2CN T2ST T3CN T3ST Timer2 Register / Timer2 Data Register / Timer2 Capture Data Register POL 16BIT PWM3E CAP3 T3CK1 T3CK0 Timer3 Data Register / Timer3 PWM Period Register Timer3 PWM High Register T4CK1 T4CK0 T4CN T4ST Timer4 Register Low / Timer4 Data Register Low / Timer4 Capture Data Register Low Table 8-2 Control Register Function Description 30 MAR. 2005 Ver 0.2 Preliminary Address Name 0DEH T4H/ TDR4H/ CDR4H 0DFH IFR 0E0H BUZR 0E1H Bit 7 Bit 6 Bit 5 Bit 4 MC80F0208/16/24 Bit 3 Bit 2 Bit 1 Bit 0 Timer4 Register High / Timer4 Data Register High / Timer4 Capture Data Register High - - RX0IOF TX0IOF RX1IOF TX1IOF WTIOF WDTIOF BUCK1 BUCK0 BUR5 BUR4 BUR3 BUR2 BUR1 BUR0 RPR - - - - - RPR2 RPR1 RPR0 0E2H SIOM POL IOSW SM1 SM0 SCK1 SCK0 SIOST SIOSF 0E3H SIOR SIO Data Shift Register 0E4H Reserved 0E5H Reserved 0E6H ASIMR0 TXE0 RXE0 PS01 PS00 - SL0 ISRM0 - 0E7H ASISR0 - - - - - PE0 FE0 OVE0 0E8H BRGCR0 - TPS02 TPS01 TPS00 MLD03 MLD02 MLD01 MLD00 0E9H RXR0 UART0 Receive Buffer Register TXR0 UART0 Transmit Shift Register 0EAH IENH INT0E INT1E INT2E INT3E RXE TXE SIOE T0E 0EBH IENL T1E T2E T3E T4E ADCE WDTE WTE BITE 0ECH IRQH INT0IF INT1IF INT2IF INT3IF RXIF TXIF SIOIF T0IF 0EDH IRQL T1IF T2IF T3IF T4IF ADCIF WDTIF WTIF BITIF 0EEH IEDS IED3H IED3L IED2H IED2L IED1H IED1L IED0H IED0L 0EFH ADCM ADEN ADCK ADS3 ADS2 ADS1 ADS0 ADST ADSF 0F0H ADCRH PSSEL1 PSSEL0 ADC8 - - - 0F1H ADCRL ADC Result Register Low BITR1 Basic Interval Timer Data Register WDTON BTCL BTS2 BTS1 BTS0 0F2H CKCTLR1 0F3H 0F4H ADRST - RCWDT ADC Result Reg. High Reserved WDTR WDTCL 7-bit Watchdog Timer Register WDTDR Watchdog Timer Data Register (Counter Register) 0F5H SSCR Stop & Sleep Mode Control Register 0F6H WTMR WTEN - - WTIN2 WTIN1 WTIN0 WTCK1 WTCK0 0F7H PFDR - - - - - PFDEN PFDM PFDS 0F8H PSR0 PWM3O - EC1E EC0E INT3E INT2E INT1E INT0E 0F9H PSR1 - - - - XTEN BUZO - - 0FAH Reserved 0FBH Reserved 0FCH PU0 R0 Pull-up Selection Register 0FDH PU1 R1 Pull-up Selection Register 0FEH PU4 R4 Pull-up Selection Register Table 8-2 Control Register Function Description MAR. 2005 Ver 0.2 31 MC80F0208/16/24 Address Preliminary Bit 7 Name 0FFH Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reserved EE6H2 ASIMR1 TXE1 RXE1 PS11 PS10 - SL1 ISRM1 - EE7H2 ASISR1 - - - - - PE1 FE1 OVE1 EE8H2 BRGCR1 - TPS12 TPS11 TPS10 MLD13 MLD12 MLD11 MLD10 EE9H2 RXR1 UART1 Receive Buffer Register TXR1 UART1 Transmit Shift Register Table 8-2 Control Register Function Description 1. The register BITR and CKCTLR are located at same address. Address F2H is read as BITR, written to CKCTLR. Caution) The registers of dark-shaded area can not be accessed by bit manipulation instruction such as "SET1, CLR1", but should be accessed by register operation instruction such as "LDM dp,#imm". 2. The UART1 control register ASIMR1,ASISR1, BRGCR1,RXR1 and TXR1 are located at EE6H ~ EE9H address. These address must be accessed(read and written) by absolute addressing manipulation instruction. 8.4 Addressing Mode The MC800 series MCU uses six addressing modes; • Register addressing When G-flag is 1, then RAM address is defined by 16-bit address which is composed of 8-bit RAM paging register (RPR) and 8-bit immediate data. • Immediate addressing Example: G=1 • Direct page addressing E45535 LDM 35H,#55H • Absolute addressing • Indexed addressing • Register-indirect addressing 8.4.1 Register Addressing ➊ Register addressing accesses the A, X, Y, C and PSW. 8.4.2 Immediate Addressing → #imm data ← 55H data 0135H ~ ~ 0F100H ~ ~ ➋ E4 0F101H 55 0F102H 35 In this mode, second byte (operand) is accessed as a data immediately. Example: 0435 ADC 8.4.3 Direct Page Addressing → dp #35H In this mode, a address is specified within direct page. MEMORY 04 35 32 Example; G=0 A+35H+C → A MAR. 2005 Ver 0.2 Preliminary C535 LDA 35H ;A ←RAM[35H] 35H data 983501 ~ ~ ;A ←ROM[135H] !0135H ➌ ~ ~ data → A ➊ INC data 135H ➋ ~ ~ MC80F0208/16/24 ➋ ~ ~ data+1 → data 0E550H C5 0F100H 98 0E551H 35 ➊ 0F101H 35 address: 0135 0F102H 01 8.4.4 Absolute Addressing → !abs 8.4.5 Indexed Addressing Absolute addressing sets corresponding memory data to Data, i.e. second byte (Operand I) of command becomes lower level address and third byte (Operand II) becomes upper level address. With 3 bytes command, it is possible to access to whole memory area. X indexed direct page (no offset) → {X} ADC, AND, CMP, CMPX, CMPY, EOR, LDA, LDX, LDY, OR, SBC, STA, STX, STY In this mode, a address is specified by the X register. ADC, AND, CMP, EOR, LDA, OR, SBC, STA, XMA Example; X=15H, G=1 D4 LDA {X} ;ACC←RAM[X]. Example; 0735F0 ADC ;A ←ROM[0F035H] !0F035H 115H data 0F035H ~ ~ 0F100H ➊ A+data+C → A ➋ ~ ~ ➋ ~ ~ data ~ ~ data → A ➊ D4 0E550H 07 0F101H 35 0F102H F0 address: 0F035 X indexed direct page, auto increment→ {X}+ The operation within data memory (RAM) ASL, BIT, DEC, INC, LSR, ROL, ROR Example; Addressing accesses the address 0135H regardless of G-flag. In this mode, a address is specified within direct page by the X register and the content of X is increased by 1. LDA, STA Example; G=0, X=35H DB MAR. 2005 Ver 0.2 LDA {X}+ 33 MC80F0208/16/24 Preliminary D500FA 35H LDA !0FA00H+Y ➋ data ~ ~ ~ ~ data → A ➊ 36H → X 0F100H D5 0F101H 00 0F102H FA ➊ 0FA00H+55H=0FA55H DB ~ ~ ~ ~ ➋ data 0FA55H data → A ➌ X indexed direct page (8 bit offset) → dp+X This address value is the second byte (Operand) of command plus the data of X-register. And it assigns the memory in Direct page. ADC, AND, CMP, EOR, LDA, LDY, OR, SBC, STA STY, XMA, ASL, DEC, INC, LSR, ROL, ROR Example; G=0, X=0F5H C645 LDA 8.4.6 Indirect Addressing Direct page indirect → [dp] Assigns data address to use for accomplishing command which sets memory data (or pair memory) by Operand. Also index can be used with Index register X,Y. 45H+X JMP, CALL Example; G=0 3F35 3AH JMP [35H] data ➌ ~ ~ ➋ ~ ~ 0E550H C6 0E551H 45 data → A ➊ 35H 0A 36H E3 ~ ~ 45H+0F5H=13AH 0E30AH ~ ~ 0FA00H ➊ NEXT ~ ~ Y indexed direct page (8 bit offset) → dp+Y ➋ jump to address 0E30AH ~ ~ 3F 35 This address value is the second byte (Operand) of command plus the data of Y-register, which assigns Memory in Direct page. This is same with above (2). Use Y register instead of X. X indexed indirect → [dp+X] Y indexed absolute → !abs+Y Processes memory data as Data, assigned by 16-bit pair memory which is determined by pair data [dp+X+1][dp+X] Operand plus X-register data in Direct page. Sets the value of 16-bit absolute address plus Y-register data as Memory.This addressing mode can specify memory in whole area. Example; Y=55H 34 ADC, AND, CMP, EOR, LDA, OR, SBC, STA Example; G=0, X=10H MAR. 2005 Ver 0.2 Preliminary 1625 ADC MC80F0208/16/24 Absolute indirect → [!abs] [25H+X] The program jumps to address specified by 16-bit absolute address. 35H 05 36H E0 JMP 0E005H Example; G=0 ➋ 0E005H ~ ~ ~ ~ 1F25E0 JMP [!0C025H] ➊ 25 + X(10) = 35H data ~ ~ ~ ~ PROGRAM MEMORY 0FA00H 16 25 ➌ A + data + C → A 0E025H 25 0E026H E7 ~ ~ Y indexed indirect → [dp]+Y ➊ Processes memory data as Data, assigned by the data [dp+1][dp] of 16-bit pair memory paired by Operand in Direct page plus Yregister data. ADC, AND, CMP, EOR, LDA, OR, SBC, STA Example; G=0, Y=10H 1725 ADC 05 26H E0 ~ ~ ~ ~ 0FA00H jump to address 0E30AH ~ ~ 1F 25 E0 ~ ~ ➋ ➊ 0E005H + Y(10) = 0E015H data ~ ~ 0FA00H NEXT ➋ [25H]+Y 25H 0E015H 0E725H ~ ~ ~ ~ 17 25 ➌ A + data + C → A MAR. 2005 Ver 0.2 35 MC80F0208/16/24 Preliminary 9. I/O PORTS The MC80F0208/16/24 has six ports (R0, R1, R3, R4, R5 and R6). These ports pins may be multiplexed with an alternate function for the peripheral features on the device. R3 port can drive maximum 20mA of high current in output low state, so it can directly drive LED device. All pins have data direction registers which can define these ports as output or input. A “1” in the port direction register configure the corresponding port pin as output. Conversely, write “0” to the corresponding bit to specify it as input pin. For example, to use the even numbered bit of R0 as output ports and the odd numbered bits as input ports, write “55H” to address 0C1H (R0 port direction register) during initial setting as shown in Figure 9-1. R0 R07 R06 R05 R04 R03 R02 R01 R00 Input / Output data R0 Direction Register ADDRESS: 0C1H RESET VALUE: 00H R0IO All the port direction registers in the MC80F0208/16/24 have 0 written to them by reset function. On the other hand, its initial status is input. WRITE “55H” TO PORT R0 DIRECTION REGISTER ADDRESS: 0C0H RESET VALUE: 00H R0 Data Register Port Direction 0: Input 1: Output R0 Pull-up Selection Register ADDRESS: 0FCH RESET VALUE: 00H PU0 0C0H R0 data 0C1H R0 direction 0C2H R1 data 0C3H R1 direction 0 1 0 1 0 1 0 1 7 6 5 4 3 2 1 0 BIT Pull-up Resister Selection 0: Disable 1: Enable I O I O I O I O PORT 7 6 5 4 3 2 1 0 I: INPUT PORT O: OUTPUT PORT Figure 9-1 Example of port I/O assignment R0 and R0IO register: R0 is an 8-bit CMOS bidirectional I/O port (address 0C0H). Each I/O pin can independently used as an input or an output through the R0IO register (address 0C1H). The on-chip pull-up resistor can be connected to them in 1-bit units with a pull-up selection register 0 (PU0). R1 and R1IO register: R1 is an 5-bit CMOS bidirectional I/O port (address 0C2H). Each I/O pin can independently used as an input or an output through the R1IO register (address 0C3H). The on-chip pull-up resistor can be connected to them in 1-bit units with a pull-up selection register 1 (PU1). In addition, Port R1 is multiplexed with various special features. The control register PSR0 (address 0F8H) and PSR1 (address 0F9H) controls the selection of alternate function. After reset, this value is “0”, port may be used as normal I/O port. To use alternate function such as external interrupt, event counter input or timer clock output, write “1” in the corresponding bit of PSR0 or PSR1. Regardless of the direction register R1IO, PSR0 or PSR1 is selected to use as alternate functions, port pin can be used as a corresponding alternate features. 36 Port Pin Alternate Function R10 R11 R12 R13 R15 INT0 (External Interrupt 0) INT1 (External Interrupt 1) INT2 (External Interrupt 2) BUZO (Square-wave output for buzzer) EC0 (Event counter input to Counter 0) MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 port (address 0C6H). Each I/O pin can independently used as an input or an output through the R3IO register (address 0C7H). ADDRESS: 0C2H RESET VALUE: 00H R1 Data Register R1 - - R15 - R13 R12 R11 R10 Input / Output data ADDRESS: 0C3H RESET VALUE: 00H R1 Direction Register R1IO - - In addition, Port R3 is multiplexed with various special features. After reset, this value is “0”, port may be used as normal I/O port. - Port Pin R30 R31 R32 R33 Alternate Function ACLK1 (UART1 clock input) RxD1 (UART1 data input) TxD1(UART1 data output) Port Direction 0: Input 1: Output ADDRESS: 0C6H RESET VALUE: 00H R3 Data Register R1 Pull-up Selection Register PU1 - ADDRESS: 0FDH RESET VALUE: 00H R3 - - - R33 R32 R31 R30 - - Input / Output data Pull-up Resister Selection 0: Disable 1: Enable R3 Direction Register R3IO ADDRESS: 0F8H RESET VALUE: 0-00 0000B PSR0 - PWM3O - Port / EC Selection 0: R15, R51 1: EC0, EC1 Port / PWM3 Selection 0: R54 1: PWM3O/T3O port - - - Port Direction 0: Input 1: Output EC1E EC0E INT3E INT2E INT1E INT0E Port / INT Selection 0: R10, R11,R12, R50 1: INT0, INT1,INT2, INT3 - ADDRESS: 0C7H RESET VALUE: 00H R4 and R4IO register: R4 is an 8-bit CMOS bidirectional I/O port (address 0C8H). Each I/O pin can independently used as an input or an output through the R4IO register (address 0C9H). The on-chip pull-up resistor can be connected to them in 1-bit units with a pull-up selection register 4 (PU4). In addition, Port R4 is multiplexed with various special features. After reset, this value is “0”, port may be used as normal I/O port. ADDRESS: 0F9H RESET VALUE: ---- -0--B PSR1 - - - - - BUZO - - R13/BUZO Selection 0: R13 port (Turn off buzzer) 1: BUZO port (Turn on buzzer) R3 and R3IO register: R3 is an 4-bit CMOS bidirectional I/O MAR. 2005 Ver 0.2 Port Pin R40 R41 R42 R43 R44 R45 R46 R47 Alternate Function SCK (SIO clock input/output) SI (SIO data input) SO (Serial1 data output) ACLK0 (UART0 clock input) RxD0 (UART0 data input) TxD0 (UART0 data output) 37 MC80F0208/16/24 R4 Data Register R4 Preliminary ADDRESS: 0C8H RESET VALUE: 00H R47 R46 R45 R44 R43 R42 R41 R40 ADDRESS: 0CAH RESET VALUE: ---00000B R5 Data Register R5 - - - R54 - Input / Output data R4 Direction Register ADDRESS: 0C9H RESET VALUE: 00H - - - - - Port Direction 0: Input 1: Output ADDRESS: 0F8H RESET VALUE: 0-00 0000B ADDRESS: 0FEH RESET VALUE: 00H PSR0 PU4 ADDRESS: 0CBH RESET VALUE: ---00000B R5 Direction Register Port Direction 0: Input 1: Output R4 Pull-up Selection Register R51 R50 Input / Output data R5IO R4IO - PWM3O - EC1E EC0E INT3E INT2E INT1E INT0E Port / INT Selection 0: R10, R11, R12, R50 1: INT0, INT1, INT2, INT3 Pull-up Resister Selection 0: Disable 1: Enable Port / EC Selection 0: R15, R51 1: EC0, EC1 R5 and R5IO register: R5 is an 3-bit CMOS bidirectional I/O port (address 0CAH). Each I/O pin can independently used as an input or an output through the R5IO register (address 0CBH). In addition, Port R5 is multiplexed with various special features. The control register PSR0 (address 0F8H) and PSR1 (address 0F9H) controls the selection of alternate function. After reset, this value is “0”, port may be used as normal I/O port. To use alternate function such as external interrupt, event counter input, timer clock output or PWM output, write “1” in the corresponding bit of PSR0 or PSR1. Regardless of the direction register R5IO, PSR0 or PSR1 is selected to use as alternate functions, port pin can be used as a corresponding alternate features. Port / PWM3 Selection 0: R54 1: PWM3O/T3O port R6 and R6IO register: R6 is an 8-bit CMOS bidirectional I/O port (address 0CCH). Each I/O pin can independently used as an input or an output through the R6IO register (address 0CDH). In addition, Port R6 is multiplexed with AD converter analog input AN0~AN7. Port Pin Port Pin Alternate Function R50 R51 R54 INT3 (External Interrupt 3) EC1 (Event counter input to Counter 2) PWM3O (PWM3/T3O output) R60 R61 R62 R63 R64 R65 R66 R67 Alternate Function AN0 (ADC input channel 0) AN1 (ADC input channel 1) AN2 (ADC input channel 2) AN3 (ADC input channel 3) AN4 (ADC input channel 4) AN5 (ADC input channel 5) AN6 (ADC input channel 6) AN7 (ADC input channel 7) R6IO (address CDH) controls the direction of the R6 pins, except when they are being used as analog input channels. The user don’t have to keep the pins configured as inputs when using them as analog input channels, because the analog input mode is activated by the setting of ADC enable bit of ADCM register and ADC 38 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 channel selection . R6 Data Register R6 ADDRESS: 0CCH RESET VALUE: 00H R67 R66 R65 R64 R63 R62 R61 R60 Input / Output data R6 Direction Register ADDRESS: 0CDH RESET VALUE: 00H R6IO Port Direction 0: Input 1: Output MAR. 2005 Ver 0.2 39 MC80F0208/16/24 Preliminary 10. CLOCK GENERATOR As shown in Figure 10-1, the clock generator produces the basic clock pulses which provide the system clock to be supplied to the CPU and the peripheral hardware. It contains main-frequency clock oscillator. The system clock operation can be easily obtained by attaching a crystal or a ceramic resonator between the XIN and XOUT pin, respectively. The system clock can also be obtained from the external oscillator. In this case, it is necessary to input a external clock signal to the XIN pin and open the XOUT pin. There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by-two flip-flop, but minimum and maximum high and low times specified on the data sheet must be observed. To the peripheral block, the clock among the not-divided original clock, clocks divided by 1, 2, 4,..., up to 4096 can be provided. Peripheral clock is enabled or disabled by STOP instruction. The peripheral clock is controlled by clock control register (CKCTLR). See "11. BASIC INTERVAL TIMER" on page 41 for details. STOP SLEEP Main OSC Stop XIN XOUT Clock Pulse Generator (÷2) fEX OSC Circuit Internal system clock PRESCALER PS0 ÷1 PS1 ÷2 PS2 ÷4 PS3 ÷8 PS4 ÷16 PS5 ÷32 PS6 ÷64 PS7 ÷128 PS8 ÷256 PS9 PS10 PS11 PS12 ÷512 ÷1024 ÷2048 ÷4096 Peripheral clock fEX (Hz) PS0 PS1 PS2 PS3 PS4 PS5 PS6 PS7 PS8 PS9 PS10 PS11 PS12 Frequency 4M 2M 1M 500K 250K 125K 62.5K 31.25K 15.63K 7.183K 3.906K 1.953K 976 period 250n 500n 1u 2u 4u 8u 16u 32u 64u 128u 256u 512u 1.024m 4M Figure 10-1 Block Diagram of Clock Generator 40 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 11. BASIC INTERVAL TIMER The MC80F0208/16/24 has one 8-bit Basic Interval Timer that is free-run and can not stop. Block diagram is shown in Figure 111. In addition, the Basic Interval Timer generates the time base for watchdog timer counting. It also provides a Basic interval timer interrupt (BITIF). cleared to "0" and restart to count-up. The bit BTCL becomes "0" after one machine cycle by hardware. If the STOP instruction executed after writing "1" to bit RCWDT of CKCTLR, it goes into the internal RC oscillated watchdog timer mode. In this mode, all of the block is halted except the internal RC oscillator, Basic Interval Timer and Watchdog Timer. More detail informations are explained in Power Saving Function. The bit WDTON decides Watchdog Timer or the normal 7-bit timer. Source clock can be selected by lower 3 bits of CKCTLR. The 8-bit Basic interval timer register (BITR) is increased every internal count pulse which is divided by prescaler. Since prescaler has divided ratio by 8 to 1024, the count rate is 1/8 to 1/1024 of the oscillator frequency. As the count overflow from FFH to 00H, this overflow causes the interrupt to be generated. The Basic Interval Timer is controlled by the clock control register (CKCTLR) shown in Figure 10-2. BITR and CKCTLR are located at same address, and address 0F2H is read as a BITR, and written to CKCTLR. When write "1" to bit BTCL of CKCTLR, BITR register is Internal RC OSC RCWDT ÷8 ÷16 1 XIN PIN Prescaler ÷32 source clock 8-bit up-counter overflow BITR ÷64 ÷128 Basic Interval Timer Interrupt BITIF 0 MUX [0F2H] ÷256 To Watchdog timer (WDTCK) clear ÷512 ÷1024 Select Input clock 3 BTS[2:0] [0F2H] RCWDT BTCL CKCTLR Basic Interval Timer clock control register Read Internal bus line Figure 11-1 Block Diagram of Basic Interval Timer CKCTLR [2:0] 000 001 010 011 100 101 110 111 Source clock fXIN÷8 fXIN÷16 fXIN÷32 fXIN÷64 fXIN÷128 fXIN÷256 fXIN÷512 fXIN÷1024 Interrupt (overflow) Period (ms) @ fXIN = 8MHz 0.256 0.512 1.024 2.048 4.096 8.192 16.384 32.768 Table 11-1 Basic Interval Timer Interrupt Period MAR. 2005 Ver 0.2 41 MC80F0208/16/24 Preliminary 7 CKCTLR 6 - ADRST 5 4 3 RCWDT WDTONBTCL BTCL 2 1 0 BTS2 BTS1 BTS0 ADDRESS: 0F2H INITIAL VALUE: 0-01 0111B Basic Interval Timer source clock select 000: fXIN ÷ 8 001: fXIN ÷ 16 010: fXIN ÷ 32 011: fXIN ÷ 64 100: fXIN ÷ 128 101: fXIN ÷ 256 110: fXIN ÷ 512 111: fXIN ÷ 1024 Clear bit 0: Normal operation (free-run) 1: Clear 8-bit counter (BITR) to “0”. This bit becomes 0 automatically after one machine cycle, and starts counting. Caution: Both register are in same address, when write, to be a CKCTLR, when read, to be a BITR. Watchdog timer Enable bit 0: Operate as 7-bit Timer 1: Enable Watchdog Timer operation See the section “Watchdog Timer”. RC Watchdog Selection bit 0: Disable Internal RC Watchdog Timer 1: Enable Internal RC Watchdog Timer Address Trap Reset Selection 0: Enable Address Fail Reset 1: Disable Address Fail Reset 7 6 BITR 5 4 3 BTCL 2 1 0 ADDRESS: 0F2H INITIAL VALUE: Undefined 8-BIT FREE-RUN BINARY COUNTER Figure 11-2 BITR: Basic Interval Timer Mode Register Example 1: Example 2: Interrupt request flag is generated every 8.192ms at 4MHz. Interrupt request flag is generated every 8.192ms at 8MHz. : LDM SET1 EI : 42 CKCTLR,#1BH BITE : LDM SET1 EI : CKCTLR,#1CH BITE MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 12. WATCHDOG TIMER The watchdog timer rapidly detects the CPU malfunction such as endless looping caused by noise or the like, and resumes the CPU to the normal state. The watchdog timer signal for detecting malfunction can be selected either a reset CPU or a interrupt request. The RC oscillated watchdog timer is activated by setting the bit RCWDT as shown below. LDM LDM LDM STOP NOP NOP : When the watchdog timer is not being used for malfunction detection, it can be used as a timer to generate an interrupt at fixed intervals. The watchdog timer has two types of clock source. The first type is an on-chip RC oscillator which does not require any external components. This RC oscillator is separate from the external oscillator of the XIN pin. It means that the watchdog timer will run, even if the clock on the XIN pin of the device has been stopped, for example, by entering the STOP mode. The other type is a prescaled system clock. CKCTLR,#3FH; enable the RC-OSC WDT WDTR,#0FFH ; set the WDT period SSCR, #5AH ;ready for STOP mode ; enter the STOP mode ; RC-OSC WDT running The RC-WDT oscillation period is vary with temperature, VDD and process variations from part to part (approximately, 33~100uS). The following equation shows the RCWDT oscillated watchdog timer time-out. The watchdog timer consists of 7-bit binary counter and the watchdog timer data register. When the value of 7-bit binary counter is equal to the lower 7 bits of WDTR, the interrupt request flag is generated. This can be used as Watchdog timer interrupt or reset the CPU in accordance with the bit WDTON. TRCWDT=CLKRCWDT×28×WDTR + (CLKRCWDT×28)/2 where, CLKRCWDT = 33~100uS In addition, this watchdog timer can be used as a simple 7-bit timer by interrupt WDTIF. The interval of watchdog timer interrupt is decided by Basic Interval Timer. Interval equation is as below. Note: Because the watchdog timer counter is enabled after clearing Basic Interval Timer, after the bit WDTON set to "1", maximum error of timer is depend on prescaler ratio of Basic Interval Timer. The 7-bit binary counter is cleared by setting WDTCL(bit7 of WDTR) and the WDTCL is cleared automatically after 1 machine cycle. TWDT = (WDTR+1) × Interval of BIT clear BASIC INTERVAL TIMER OVERFLOW Watchdog Counter (7-bit) Count source clear “0” WDTCL WDTON in CKCTLR [0F2H] 7-bit compare data WDTIF 7 WDTR to reset CPU “1” enable comparator Watchdog Timer interrupt Watchdog Timer Register [0F4H] Internal bus line Figure 12-1 Block Diagram of Watchdog Timer MAR. 2005 Ver 0.2 43 MC80F0208/16/24 Preliminary Watchdog Timer Control counters unless the binary counter is cleared. At this time, when WDTON=1, a reset is generated, which drives the RESET pin to low to reset the internal hardware. When WDTON=0, a watchdog timer interrupt (WDTIF) is generated. The WDTON bit is in register CLKCTLR. Figure 12-2 shows the watchdog timer control register. The watchdog timer is automatically disabled after reset. The CPU malfunction is detected during setting of the detection time, selecting of output, and clearing of the binary counter. Clearing the binary counter is repeated within the detection time. The watchdog timer temporarily stops counting in the STOP mode, and when the STOP mode is released, it automatically restarts (continues counting). If the malfunction occurs for any cause, the watchdog timer output will become active at the rising overflow from the binary W 7 WDTR W 6 W 5 W 4 W 3 W 2 W 1 W 0 ADDRESS: 0F4H INITIAL VALUE: 0111 1111B WDTCL 7-bit compare data Clear count flag 0: Free-run count 1: When the WDTCL is set to “1”, binary counter is cleared to “0”. And the WDTCL becomes “0” automatically after one machine cycle. Counter count up again. Figure 12-2 WDTR: Watchdog Timer Control Register Example: Sets the watchdog timer detection time to 1 sec. at 4.194304MHz Within WDT detection time Within WDT detection time LDM LDM CKCTLR,#3FH WDTR,#08FH ;Select 1/1024 clock source, WDTON ← 1, Clear Counter LDM : : : : LDM : : : : LDM WDTR,#08FH ;Clear counter WDTR,#08FH ;Clear counter WDTR,#08FH ;Clear counter Enable and Disable Watchdog Watchdog Timer Interrupt Watchdog timer is enabled by setting WDTON (bit 4 in CKCTLR) to “1”. WDTON is initialized to “0” during reset and it should be set to “1” to operate after reset is released. The watchdog timer can be also used as a simple 7-bit timer by clearing bit4 of CKCTLR to “0”. The interval of watchdog timer interrupt is decided by Basic Interval Timer. Interval equation is shown as below. Example: Enables watchdog timer for Reset : LDM : : TWDT = (WDTR+1) × Interval of BIT CKCTLR,#xxx1_xxxxB;WDTON ← 1 The watchdog timer is disabled by clearing bit 4 (WDTON) of CKCTLR. The watchdog timer is halted in STOP mode and restarts automatically after STOP mode is released. The stack pointer (SP) should be initialized before using the watchdog timer output as an interrupt source. Example: 7-bit timer interrupt set up. LDM LDM CKCTLR,#xxx0_xxxxB;WDTON ←0 WDTR,#8FH ;WDTCL ←1 : 44 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 Source clock BIT overflow Binary-counter 3 2 1 0 1 2 3 Counter Clear WDTR 0 Counter Clear 3 n Match Detect WDTIF interrupt WDTR ← “1000_0011B” WDT reset reset Figure 12-3 Watchdog timer Timing If the watchdog timer output becomes active, a reset is generated, which drives the RESET pin low to reset the internal hardware. reset is generated in sub clock mode. The WDTIF bit of IFR register is set when watchdog timer interrupt is generated. (Refer to Figure 12-4) The main clock oscillator also turns on when a watchdog timer R/W IFR MSB - R/W RX0IOF TX0IOF R/W R/W RX1IOF TX1IOF R/W R/W WTIOF WDTIOF ADDRESS: 0DFH INITIAL VALUE: --00 0000B LSB WDT interrupt occurred flagNOTE1 WT interrupt occurred flagNOTE1 UART1 Tx interrupt occurred flagNOTE2 UART1 Rx interrupt occurred flagNOTE2 UART0 Tx interrupt occurred flagNOTE3 UART0 Rx interrupt occurred flagNOTE3 NOTE1 : In case of using interrupts of Watchdog Timer and Watch Timer together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the Watchdog timer and Watch timer is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. NOTE2 : In case of using interrupts of UART1 Tx and UART1 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART1 Tx and UART1 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. NOTE3 : In case of using interrupts of UART0 Tx and UART0 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART0 Tx and UART0 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. Figure 12-4 IFR(Interrupt Flag Register) MAR. 2005 Ver 0.2 45 MC80F0208/16/24 Preliminary 13. WATCH TIMER nized. In fXIN÷27 clock source, if the CPU enters into stop mode, the main-clock is stopped and then watch timer is also stopped. The watch timer counter can output with period of max 1 seconds at sub-clock. The bit 2, 3, 4 of WTMR select the interrupt interval divide ratio selection of watch timer among 16, 64, 256, 1024, 4096, 8192, 16384 or 32768. The watch timer generates interrupt for watch operation. The watch timer consists of the clock selector, 15-bit binary counter, interval selector and watch timer mode register. It is a multi-purpose timer. It is generally used for watch design. The bit 0,1 of WTMR select the clock source of watch timer among fXIN÷2, fXIN÷27 and main-clock(fXIN). The fXIN of mainclock is used usually for watch timer test, so generally it is not used for the clock source of watch timer. The fXIN÷27 of mainclock(4.194MHz) is used when the single clock system is orga- The WTIF bit of IFR register is set when watch timer interrupt is generated. (Refer to Figure 12-4) WTMR (Watch Timer Mode Register) W 7 6 5 R/W 4 WTEN - - WTIN2 R/W 3 WTIN1 R/W 2 WTIN0 R/W 1 R/W 0 WTCK1 WTCK0 ADDRESS: 0F6H INITIAL VALUE:0--0 0000B Watch Timer Clock Source selection 00: 01: fXIN ÷ 128 10: fXIN 11: fXIN ÷ 2 WTEN (Watch Timer Enable) 0: Watch Timer disable 1: Watch Timer Enable Watch Timer Interrupt Interval selection 000: Clock Source ÷ 32768 001: Clock Source ÷ 16384 010: Clock Source ÷ 8192 011: Clock Source ÷ 4096 100: Clock Source ÷ 1024 101: Clock Source ÷ 256 110: Clock Source ÷ 64 111: Clock Source ÷ 16 Figure 13-1 Watch Timer Mode Register WTIN[2:0] ÷32768 fXIN÷128 fXIN fXIN÷2 15-bit binary counter WTCK[1:0] 01 10 MUX 11 Clock Source Selector WTEN Clear If WTEN=0 ÷16384 ÷8192 ÷4096 ÷1024 Watch Timer interrupt MUX ÷256 ÷64 ÷16 interval selector Figure 13-2 Watch Timer Block Diagram 46 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 14. TIMER/EVENT COUNTER The MC80F0208/16/24 has five Timer/Counter registers. Each module can generate an interrupt to indicate that an event has occurred (i.e. timer match). external clock edge input, the count register is captured into capture data register CDRx. Timer 0 and Timer 1 has four operating modes: "8-bit timer/ counter", "16-bit timer/counter", "8-bit capture" and "16-bit capture" which are selected by bit in Timer mode register TM0 and TM1 as shown in Table 14-1, Figure 14-1. Timer 0 and Timer 1 are can be used either two 8-bit Timer/ Counter or one 16-bit Timer/Counter with combine them. Also Timer 2 and Timer 3 are same. Timer 4 is 16-bit Timer/Counter. In the “timer” function, the register is increased every internal clock input. Thus, one can think of it as counting internal clock input. Since a least clock consists of 2 and most clock consists of 2048 oscillator periods, the count rate is 1/2 to 1/2048 of the oscillator frequency. Timer 2 and Timer 3 is shared with "PWM" function and "Compare output" function. It has six operating modes: "8bit timer/counter", "16-bit timer/counter", "8-bit capture", "16-bit capture", "8-bit compare output", and "10-bit PWM" which are selected by bit in Timer mode register TM2 and TM3 as shown in Table 14-2, Figure 14-2. In the “counter” function, the register is increased in response to a 0-to-1 (rising edge) transition at its corresponding external input pin, EC0 or EC1. Timer 4 has two operating modes: "16-bit timer/counter" and "16-bit capture" which are selected by bit in Timer mode register TM4 as shown inTable 14-3, and Figure 14-3. In addition the “capture” function, the register is increased in response external or internal clock sources same with timer or counter function. When external clock edge input, the count register is captured into Timer data register correspondingly. When 16BIT CAP0 CAP1 T0CK [2:0] T1CK [1:0] 0 0 0 XXX XX 8-bit Timer 8-bit Timer 0 0 1 111 XX 8-bit Event counter 8-bit Capture 0 1 0 XXX XX 8-bit Capture (internal clock) 8-bit Timer 1 0 0 XXX 11 16-bit Timer 1 0 0 111 11 16-bit Event counter 1 1 1 XXX 11 16-bit Capture (internal clock) TIMER 0 TIMER 1 Table 14-1 Operating Modes of Timer 0, 1 1. X means the value of “0” or “1” corresponds to user operation. 16BIT CAP2 CAP3 PWM3E T2CK [2:0] T3CK [1:0] PWM3O 0 0 0 0 XXX XX 0 8-bit Timer 8-bit Timer 0 0 1 0 111 XX 0 8-bit Event counter 8-bit Capture 0 1 0 0 XXX XX 1 8-bit Capture (internal clock) 8-bit Compare Output 0 X 0 1 XXX XX 1 8-bit Timer/Counter 10-bit PWM 1 0 0 0 XXX 11 0 16-bit Timer 1 0 0 0 111 11 0 16-bit Event counter 1 1 1 0 XXX 11 0 16-bit Capture (internal clock) TIMER 2 TIMER 3 Table 14-2 Operating Modes of Timer 2, 3 MAR. 2005 Ver 0.2 47 MC80F0208/16/24 Preliminary CAP4 T4CK[2:0] TIMER 4 0 XXX 16-bit Timer 1 XXX 16-bit Capture (internal clock) Table 14-3 Operating Modes of Timer 4 48 MAR. 2005 Ver 0.2 Preliminary R/W 5 TM0 TM1 - - R/W 4 R/W 3 R/W 2 R/W 1 R/W 0 CAP0 T0CK2 T0CK1 BTCL T0CK0 T0CN T0ST MC80F0208/16/24 ADDRESS: 0D0H INITIAL VALUE: --00 0000B Bit Name Bit Position Description CAP0 TM0.5 0: Timer/Counter mode 1: Capture mode selection flag T0CK2 T0CK1 T0CK0 TM0.4 TM0.3 TM0.2 000: 8-bit Timer, Clock source is fXIN ÷ 2 001: 8-bit Timer, Clock source is fXIN ÷ 4 010: 8-bit Timer, Clock source is fXIN ÷ 8 011: 8-bit Timer, Clock source is fXIN ÷ 32 100: 8-bit Timer, Clock source is fXIN ÷ 128 101: 8-bit Timer, Clock source is fXIN ÷ 512 110: 8-bit Timer, Clock source is fXIN ÷ 2048 111: EC0 (External clock) T0CN TM0.1 0: Timer count pause 1: Timer count start T0ST TM0.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. 7 R/W 6 5 R/W 4 R/W 3 R/W 2 R/W 1 R/W 0 - 16BIT - CAP1 T1CK1 BTCL T1CK0 T1CN T1ST ADDRESS: 0D2H INITIAL VALUE: -0-0 0000B Bit Name Bit Position Description 16BIT TM1.6 0: 8-bit Mode 1: 16-bit Mode CAP1 TM1.4 0: Timer/Counter mode 1: Capture mode selection flag T1CK1 T1CK0 TM1.3 TM1.2 00: 8-bit Timer, Clock source is fXIN 01: 8-bit Timer, Clock source is fXIN ÷ 2 10: 8-bit Timer, Clock source is fXIN ÷ 8 11: 8-bit Timer, Clock source is Using the Timer 0 Clock T1CN TM1.1 0: Timer count pause 1: Timer count start T1ST TM1.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 TDR0 R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 TDR1 ADDRESS: 0D1H INITIAL VALUE: 0FFH ADDRESS: 0D3H INITIAL VALUE: 0FFH Read: Count value read Write: Compare data write Figure 14-1 TM0, TM1 Registers MAR. 2005 Ver 0.2 49 MC80F0208/16/24 Preliminary R/W 5 TM2 - - R/W 3 R/W 2 R/W 1 R/W 0 CAP2 T2CK2 T2CK1 BTCL T2CK0 T2CN T2ST ADDRESS: 0D6H INITIAL VALUE: --00 0000B Bit Name Bit Position Description CAP2 TM2.5 0: Timer/Counter mode 1: Capture mode selection flag T2CK2 T2CK1 T2CK0 TM2.4 TM2.3 TM2.2 000: 8-bit Timer, Clock source is fXIN ÷ 2 001: 8-bit Timer, Clock source is fXIN ÷ 4 010: 8-bit Timer, Clock source is fXIN ÷ 8 011: 8-bit Timer, Clock source is fXIN ÷ 16 100: 8-bit Timer, Clock source is fXIN ÷ 64 101: 8-bit Timer, Clock source is fXIN ÷ 256 110: 8-bit Timer, Clock source is fXIN ÷ 1024 111: EC1 (External clock) T2CN TM2.1 0: Timer count pause 1: Timer count start T2ST TM2.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. R/W 7 TM3 R/W 4 POL R/W 6 R/W 5 R/W 4 R/W 3 R/W 2 R/W 1 R/W 0 16BIT PWM3E CAP3 T3CK1 BTCL T3CK0 T3CN T3ST ADDRESS: 0D8H INITIAL VALUE: 00H Bit Name Bit Position Description POL TM3.7 0: PWM Duty Active Low 1: PWM Duty Active High 16BIT TM3.6 0: 8-bit Mode 1: 16-bit Mode PWM3E TM3.5 0: Disable PWM 1: Enable PWM CAP3 TM3.4 0: Timer/Counter mode 1: Capture mode selection flag T3CK1 T3CK0 TM3.3 TM3.2 00: 8-bit Timer, Clock source is fXIN 01: 8-bit Timer, Clock source is fXIN ÷ 4 10: 8-bit Timer, Clock source is fXIN ÷ 16 11: 8-bit Timer, Clock source is Using the Timer 2 Clock T3CN TM3.1 0: Timer count pause 1: Timer count start T3ST TM3.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 TDR2 R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 TDR3 ADDRESS: 0D7H INITIAL VALUE: 0FFH ADDRESS: 0D9H INITIAL VALUE: 0FFH Read: Count value read Write: Compare data write Figure 14-2 TM2, TM3 Registers 50 MAR. 2005 Ver 0.2 Preliminary R/W 5 TM4 - - R/W 4 R/W 3 R/W 2 R/W 1 R/W 0 CAP4 T4CK2 T4CK1 BTCL T4CK0 T4CN T4ST MC80F0208/16/24 ADDRESS: 0DCH INITIAL VALUE: --00 0000B Bit Name Bit Position Description CAP4 TM4.5 0: Timer/Counter mode 1: Capture mode selection flag T4CK2 T4CK1 T4CK0 TM4.4 TM4.3 TM4.2 000: 8-bit Timer, Clock source is fXIN ÷ 2 001: 8-bit Timer, Clock source is fXIN ÷ 4 010: 8-bit Timer, Clock source is fXIN ÷ 8 011: 8-bit Timer, Clock source is fXIN ÷ 16 100: 8-bit Timer, Clock source is fXIN ÷ 64 101: 8-bit Timer, Clock source is fXIN ÷ 256 110: 8-bit Timer, Clock source is fXIN ÷ 1024 111: 8-bit Timer, Clock source is fXIN ÷ 2048 T4CN TM4.1 0: Timer count pause 1: Timer count start T4ST TM4.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 TDR4H R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 TDR4L ADDRESS: 0DDH INITIAL VALUE: 0FFH ADDRESS: 0DEH INITIAL VALUE: 0FFH Figure 14-3 TM4 Register 14.1 8-bit Timer / Counter Mode The MC80F0208/16/24 has four 8-bit Timer/Counters, Timer 0, Timer 1, Timer 2, Timer 3. The Timer 0, Timer 1 are shown in Figure 14-4 and Timer 2, Timer 3 are shown in Figure 14-5. The “timer” or “counter” function is selected by control registers TM0, TM1, TM2, TM3 as shown in Figure 14-1. To use as an 8bit timer/counter mode, bit CAP0, CAP1, CAP2, or CAP3 of TMx should be cleared to “0” and 16BIT of TM1 or TM3 should MAR. 2005 Ver 0.2 be cleared to "0"(Figure 14-4). These timers have each 8-bit count register and data register. The count register is increased by every internal or external clock input. The internal clock has a prescaler divide ratio option of 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 or external clock (selected by control bits TxCK0, TxCK1, TxCK2 of register TMx). 51 MC80F0208/16/24 TM0 Preliminary 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --00 0000B CAP0 T0CK2 T0CK1 BTCL T0CK0 T0CN T0ST 0 X X X X X X means don’t care TM1 7 6 5 - 16BIT - - 0 - 4 3 2 1 0 CAP1 T1CK1 BTCL T1CK0 T1CN T1ST 0 X X X ADDRESS: 0D2H INITIAL VALUE: -0-0 0000B X X means don’t care T0CK[2:0] EDGE DETECTOR EC0 PIN 111 T0ST ÷2 000 XIN PIN Prescaler ÷4 0: Stop 1: Clear and start 001 ÷8 010 ÷ 32 T0 (8-bit) clear 011 ÷ 128 100 ÷ 512 ÷ 2048 101 T0CN T0IF TIMER 0 INTERRUPT T1IF TIMER 1 INTERRUPT Comparator 110 MUX TIMER 0 TDR0 (8-bit) T1CK[1:0] T1ST ÷1 ÷2 ÷8 0: Stop 1: Clear and start 11 00 T1 (8-bit) 01 clear 10 T1CN MUX Comparator TIMER 1 TDR1 (8-bit) Figure 14-4 8-bit Timer/Counter 0, 1 52 MAR. 2005 Ver 0.2 Preliminary TM2 7 6 - - - - 5 4 3 2 1 MC80F0208/16/24 0 ADDRESS: 0D6H INITIAL VALUE: --000000B CAP2 T2CK2 T2CK1 BTCL T2CK0 T2CN T2ST 0 X X X X X X means don’t care 7 TM3 6 5 4 3 2 1 0 ADDRESS: 0D8H INITIAL VALUE: 00H POL 16BIT PWM3E CAP3 T3CK1 BTCL T3CK0 T3CN T3ST X 0 0 0 X X X X X means don’t care T2CK[2:0] EDGE DETECTOR EC1 PIN 111 T2ST ÷2 000 XIN PIN Prescaler ÷4 0: Stop 1: Clear and start 001 ÷8 010 ÷ 16 T2 (8-bit) clear 011 ÷ 64 100 ÷ 256 ÷ 1024 101 T2CN T2IF TIMER 2 INTERRUPT T3IF TIMER 3 INTERRUPT Comparator 110 MUX TIMER 2 TDR2 (8-bit) T3CK[1:0] T3ST ÷1 ÷4 ÷ 16 0: Stop 1: Clear and start 11 00 T3 (8-bit) 01 clear 10 T3CN MUX Comparator TIMER 3 TDR3 (8-bit) F/F R54/PWM3O/T3O Figure 14-5 8-bit Timer/Counter 2, 3 MAR. 2005 Ver 0.2 53 MC80F0208/16/24 Preliminary These timers have each 8-bit count register and data register. The count register is increased by every internal or external clock input. The internal clock has a prescaler divide ratio option of 2, 4, 8, 32, 128, 512, 2048 selected by control bits T0CK[2:0] of register TM0 or 1, 2, 8 selected by control bits T1CK[1:0] of register TM1, or 2, 4, 8, 16, 64, 256, 1024 selected by control bits T2CK[2:0] of register TM2, or 1, 4, 16 selected by control bits T3CK[1:0] of register TM3. In the Timer 0, timer register T0 increases from 00H until it matches TDR0 and then reset to 00H. The match output of Timer 0 generates Timer 0 interrupt (latched in T0IF bit). Example 1: Timer0 = 2ms 8-bit timer mode at 4MHz Timer1 = 0.5ms 8-bit timer mode at 4MHz Timer2 = 1ms 8-bit timer mode at 4MHz Timer3 = 1ms 8-bit timer mode at 4MHz LDM LDM LDM LDM LDM LDM LDM LDM SET1 SET1 SET1 SET1 EI TDR0,#249 TDR1,#249 TDR2,#249 TDR3,#249 TM0,#0000_1111B TM1,#0000_1011B TM2,#0000_1111B TM3,#0000_1011B T0E T1E T2E T3E In counter function, the counter is increased every 0-to-1(1-to-0) (rising & falling edge) transition of EC0 pin. In order to use counter function, the bit EC0 of the Port Selection Register(PSR0.4) is set to "1". The Timer 0 can be used as a counter by pin EC0 input, but Timer 1 can not. Likewise, In order to use Timer2 as counter function, the bit EC1 of the Port Selection Register(PSR0.5) is set to "1". The Timer 2 can be used as a counter by pin EC1 input, but Timer 3 can not. Example 2: Timer0 = 8-bit event counter mode Timer1 = 0.5ms 8-bit timer mode at 4MHz Timer2 = 8-bit event counter mode Timer3 = 1ms 8-bit timer mode at 4MHz LDM LDM LDM LDM LDM LDM LDM LDM SET1 SET1 SET1 SET1 EI 14.1.1 8-bit Timer Mode In the timer mode, the internal clock is used for counting up. Thus, you can think of it as counting internal clock input. The contents of TDRn are compared with the contents of up-counter, Tn. If match is found, a timer n interrupt (TnIF) is generated and the up-counter is cleared to 0. Counting up is resumed after the up-counter is cleared. TDR0,#249 TDR1,#249 TDR2,#249 TDR3,#249 TM0,#0001_1111B TM1,#0000_1011B TM2,#0001_1111B TM3,#0000_1011B T0E T1E T2E T3E As the value of TDRn is changeable by software, time interval is set as you want. Start count ~ ~ Source clock ~ ~ Up-counter 0 1 2 n-2 3 n-1 n 0 1 2 3 4 ~ ~ Match Detect Counter Clear ~ ~ T1IF interrupt n ~ ~ TDR1 Figure 14-6 Timer Mode Timing Chart 54 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 Example: Make 1ms interrupt using by Timer0 at 4MHz LDM LDM SET1 EI TM0,#0FH TDR0,#124 T0E ; ; ; ; divide by 32 8us x (124+1)= 1ms Enable Timer 0 Interrupt Enable Master Interrupt When TM0 = 0000 1111B (8-bit Timer mode, Prescaler divide ratio = 32) TDR0 = 124D = 7CH fXIN = 4 MHz 1 INTERRUPT PERIOD = × 32 × (124+1) = 1 ms 4 × 106 Hz TDR0 MATCH (TDR0 = T0) Count Pulse Period 7C 7C 8 µs 6 ~~ ~~ up -c ou nt ~~ 7B 7A 5 4 3 2 1 0 0 TIME Interrupt period = 8 µs x (124+1) Timer 0 (T0IF) Interrupt Occur interrupt Occur interrupt Occur interrupt Figure 14-7 Timer Count Example 14.1.2 8-bit Event Counter Mode In order to use event counter function, the bit 4, 5 of the Port Selection Register PSR0(address 0F8H) is required to be set to “1”. In this mode, counting up is started by an external trigger. This trigger means rising edge of the EC0 or EC1 pin input. Source clock is used as an internal clock selected with timer mode register TM0 or TM2. The contents of timer data register TDRn (n = 0,1,2,3) are compared with the contents of the up-counter Tn. If a match is found, an timer interrupt request flag TnIF is generated, and the counter is cleared to “0”. The counter is restart and count up continuously by every falling edge of the EC0 or EC1 pin input. The maximum frequency applied to the EC0 or EC1 pin is fXIN/2 [Hz]. After reset, the value of timer data register TDRn is initialized to "0", The interval period of Timer is calculated as below equation. 1 Period (sec) = ----------- × 2 × Divide Ratio × (TDRn+1) f XIN Start count ~ ~ ECn pin input ~ ~ 1 0 2 ~ ~ Up-counter n-1 n 0 1 2 ~ ~ ~ ~ T1IF interrupt n ~ ~ TDR1 Figure 14-8 Event Counter Mode Timing Chart MAR. 2005 Ver 0.2 55 MC80F0208/16/24 Preliminary TDR1 disable ~~ clear & start enable up -c ou nt stop ~~ TIME Timer 1 (T1IF) Interrupt Occur interrupt Occur interrupt T1ST Start & Stop T1ST = 1 T1ST = 0 T1CN Control count T1CN = 1 T1CN = 0 Figure 14-9 Count Operation of Timer / Event counter 56 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 14.2 16-bit Timer / Counter Mode The Timer register is being run with all 16 bits. A 16-bit timer/ counter register T0, T1 are incremented from 0000H until it matches TDR0, TDR1 and then resets to 0000H. The match output generates Timer 0 interrupt. T3CK[1:0] and 16BIT of TM3 should be set to "1" respectively as shown in Figure 14-11. Even if the Timer 0 (including Timer 1) is used as a 16-bit timer, the Timer 2 and Timer 3 can still be used as either two 8-bit timer or one 16-bit timer by setting the TM2. Reversely, even if the Timer 2 (including Timer 3) is used as a 16-bit timer, the Timer 0 and Timer 1 can still be used as 8-bit timer independently. The clock source of the Timer 0 is selected either internal or external clock by bit T0CK[2:0]. In 16-bit mode, the bits T1CK[1:0] and 16BIT of TM1 should be set to "1" respectively as shown in Figure 14-10. A 16-bit timer/counter 4 register T4H, T4L are increased from 0000H until it matches TDR4H, TDR4L and then resets to 0000H. The match output generates Timer 4 interrupt. Timer/Counter 4 is 16 bit mode as shown in Figure 14-12. Likewise, A 16-bit timer/counter register T2, T3 are incremented from 0000H until it matches TDR2, TDR3 and then resets to 0000H. The match output generates Timer 2 interrupt. The clock source of the Timer 2 is selected either internal or external clock by bit T2CK[2:0]. In 16-bit mode, the bits TM0 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --00 0000B BTCL T0CK0 T0CN T0ST CAP0 T0CK2 T0CK1 0 X X X X X X means don’t care TM1 7 6 5 - 16BIT - - 1 - 4 3 2 1 0 ADDRESS: 0D2H INITIAL VALUE: -0-0 0000B CAP1 T1CK1 BTCL T1CK0 T1CN T1ST 0 1 1 X X X means don’t care T0CK[2:0] EDGE DETECTOR EC0 PIN 111 ÷2 ÷4 Prescaler XIN PIN ÷8 ÷ 32 ÷ 128 ÷ 512 ÷ 2048 T0ST 0: Stop 1: Clear and start 000 001 T1 + T0 (16-bit) 010 clear 011 100 101 T0CN T0IF Comparator 110 MUX TIMER 0 INTERRUPT (Not Timer 1 interrupt) TDR1 + TDR0 (16-bit) Higher byte Lower byte COMPARE DATA TIMER 0 + TIMER 1 → TIMER 0 (16-bit) Figure 14-10 16-bit Timer/Counter for Timer 0, 1 MAR. 2005 Ver 0.2 57 MC80F0208/16/24 Preliminary TM2 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D6H INITIAL VALUE: --000000B CAP2 T2CK2 T2CK1 BTCL T2CK0 T2CN T2ST 0 X X X X X X means don’t care 7 TM3 6 5 4 3 2 1 0 ADDRESS: 0D8H INITIAL VALUE: 00H POL 16BIT PWM3E CAP3 T3CK1 BTCL T3CK0 T3CN T3ST X 1 0 0 1 1 X X X means don’t care T2CK[2:0] EDGE DETECTOR EC1 PIN 111 ÷2 ÷4 Prescaler XIN PIN ÷8 ÷ 16 ÷ 64 ÷ 256 ÷ 1024 T2ST 0: Stop 1: Clear and start 000 001 T3 + T2 (16-bit) 010 clear 011 100 101 T2CN T2IF Comparator 110 TIMER 2 INTERRUPT (Not Timer 3 interrupt) TDR3 + TDR2 (16-bit) MUX Higher byte Lower byte COMPARE DATA TIMER 2 + TIMER 3 → TIMER 2 (16-bit) Figure 14-11 16-bit Timer/Counter for Timer 2, 3 14.3 8-bit Compare Output (16-bit) The MC80F0208/16/24 has a function of Timer Compare Output. To pulse out, the timer match can goes to port pin( T3O) as shown in Figure 14-5 . Thus, pulse out is generated by the timer match. These operation is implemented to pin, PWM3O/T3O. In this mode, the bit PWM3O/T3O of R5 Port Selection register0 (PSR0.7) should be set to "1", and the bit PWM3E of timer3 mode register (TM3) should be set to "0". This pin output the sig- 58 nal having a 50 : 50 duty square wave, and output frequency is same as below equation. Oscillation Frequency f COMP = --------------------------------------------------------------------------------2 × Prescaler Value × ( TDR + 1 ) MAR. 2005 Ver 0.2 Preliminary TM4 7 6 - - X X 5 4 3 2 1 MC80F0208/16/24 0 ADDRESS: 0DCH INITIAL VALUE: 00H CAP4 T4CK2 T4CK1 BTCL T4CK0 T4CN T4ST 0 X X X X X X means don’t care T4CK[2:0] ÷2 ÷4 Prescaler XIN PIN ÷8 ÷ 16 ÷ 64 ÷ 256 ÷ 1024 ÷ 2048 000 T4ST 0: Stop 1: Clear and start 001 010 011 T4H + T4L (16-bit) 100 clear 101 110 T4CN T4IF 111 TIMER 4 INTERRUPT Comparator TDR4H + TDR4L (16-bit) MUX Higher byte Lower byte COMPARE DATA Figure 14-12 Timer 4 for only 16 bit mode 14.4 8-bit Capture Mode The Timer 0 capture mode is set by bit CAP0 of timer mode register TM0 (bit CAP1 of timer mode register TM1 for Timer 1) as shown in Figure 14-13. Likewise, the Timer 2 capture mode is set by bit CAP2 of timer mode register TM2 (bit CAP3 of timer mode register TM3 for Timer 3) as shown in Figure 14-14. The Timer/Counter register is increased in response internal or external input. This counting function is same with normal timer mode, and Timer interrupt is generated when timer register T0 (T1, T2, T3) increases and matches TDR0 (TDR1, TDR2, TDR3). This timer interrupt in capture mode is very useful when the pulse width of captured signal is more wider than the maximum period of Timer. For example, in Figure 14-16, the pulse width of captured signal is wider than the timer data value (FFH) over 2 times. When external interrupt is occurred, the captured value (13H) is more little MAR. 2005 Ver 0.2 than wanted value. It can be obtained correct value by counting the number of timer overflow occurrence. Timer/Counter still does the above, but with the added feature that a edge transition at external input INTx pin causes the current value in the Timer x register (T0,T1,T2,T3), to be captured into registers CDRx (CDR0, CDR1, CDR2, CDR3), respectively. After captured, Timer x register is cleared and restarts by hardware. It has three transition modes: "falling edge", "rising edge", "both edge" which are selected by interrupt edge selection register IEDS. Refer to “19.5 External Interrupt” on page 92. In addition, the transition at INTn pin generate an interrupt. Note: The CDRn and TDRn are in same address.In the capture mode, reading operation is read the CDRn, not TDRn because path is opened to the CDRn. 59 MC80F0208/16/24 Preliminary TM0 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --00 0000B CAP0 T0CK2 T0CK1 BTCL T0CK0 T0CN T0ST 1 X X X X X X means don’t care TM1 7 6 5 - 16BIT - - 0 - 4 3 2 1 0 ADDRESS: 0D2H INITIAL VALUE: -0-0 0000B CAP1 T1CK1 BTCL T1CK0 T1CN T1ST 1 X X X X X means don’t care T0CK[2:0] Edge Detector EC0 PIN 111 T0ST ÷2 000 ÷4 XIN PIN ÷8 Prescaler 0: Stop 1: Clear and start 001 T0 (8-bit) 010 ÷ 32 011 ÷ 128 100 ÷ 512 ÷ 2048 101 clear T0CN Capture 110 CDR0 (8-bit) MUX IEDS[1:0] “01” “10” INT0 PIN INT0IF T1CK[1:0] INT0 INTERRUPT “11” T1ST ÷1 ÷2 ÷8 0: Stop 1: Clear and start 11 00 T1 (8-bit) 01 clear 10 MUX T1CN Capture CDR1 (8-bit) IEDS[3:2] “01” INT1 PIN “10” INT1IF INT1 INTERRUPT “11” Figure 14-13 8-bit Capture Mode for Timer 0, 1 60 MAR. 2005 Ver 0.2 Preliminary TM2 7 6 - - - - 5 4 3 2 MC80F0208/16/24 1 0 ADDRESS: 0D6H INITIAL VALUE: --00 0000B CAP2 T2CK2 T2CK1 BTCL T2CK0 T2CN T2ST 1 X X X X X X means don’t care 7 TM3 6 5 4 3 2 1 0 ADDRESS: 0D8H INITIAL VALUE: 00H POL 16BIT PWM3E CAP3 T3CK1 BTCL T3CK0 T3CN T3ST X 0 0 1 X X X X X means don’t care T2CK[2:0] Edge Detector EC1 PIN 111 T2ST ÷2 000 ÷4 Prescaler XIN PIN 0: Stop 1: Clear and start 001 ÷8 T2 (8-bit) 010 ÷ 16 011 ÷ 64 100 ÷ 256 ÷ 1024 101 clear T2CN Capture 110 CDR2 (8-bit) MUX IEDS[5:4] “01” “10” INT2 PIN INT2IF T3CK[1:0] INT2 INTERRUPT “11” T3ST ÷1 ÷4 ÷ 16 0: Stop 1: Clear and start 11 00 T3 (8-bit) 01 clear 10 MUX T3CN Capture CDR3 (8-bit) IEDS[7:6] “01” INT3 PIN “10” INT3IF INT3 INTERRUPT “11” Figure 14-14 8-bit Capture Mode for Timer 2, 3 MAR. 2005 Ver 0.2 61 MC80F0208/16/24 Preliminary This value is loaded to CDR0 n T0 n-1 t un ~~ ~~ 9 -c o 8 up 7 6 5 4 ~~ 3 2 1 0 TIME Ext. INT0 Pin Interrupt Request ( INT0IF ) Interrupt Interval Period Ext. INT0 Pin Interrupt Request ( INT0IF ) 20nS Capture ( Timer Stop ) 5nS Delay Clear & Start Figure 14-15 Input Capture Operation of Timer 0 Capture mode Ext. INT0 Pin Interrupt Request ( INT0IF ) Interrupt Interval Period=01H+FFH +01H+FFH +01H+13H=214H Interrupt Request ( T0IF ) FFH FFH T0 13H 00H 00H Figure 14-16 Excess Timer Overflow in Capture Mode 62 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 14.5 16-bit Capture Mode 16-bit capture mode is the same as 8-bit capture, except that the Timer register is being run will 16 bits. The clock source of the Timer 0 is selected either internal or external clock by bit T0CK[2:0]. In 16-bit mode, the bits T1CK1, T1CK0, CAP1 and 16BIT of TM1 should be set to "1" respectively as shown in Figure 14-17. ternal clock by bit T2CK[2:0]. In 16-bit mode, the bits T3CK1,T3CK0, CAP3 and 16BIT of TM3 should be set to "1" respectively as shown in Figure 14-18. The clock source of the Timer 4 is selected either internal or external clock by bit T4CK[2:0] as shown in Figure 14-18. The clock source of the Timer 2 is selected either internal or ex- TM0 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --00 0000B CAP0 T0CK2 T0CK1 BTCL T0CK0 T0CN T0ST 1 X X X X X X means don’t care TM1 7 6 5 - 16BIT - - 1 - 4 3 2 1 0 ADDRESS: 0D2H INITIAL VALUE: -0-0 0000B CAP1 T1CK1 BTCL T1CK0 T1CN T1ST 1 1 1 X X X means don’t care T0CK[2:0] Edge Detector EC0 PIN 111 T0ST ÷2 ÷4 Prescaler XIN PIN ÷8 ÷ 32 ÷ 128 ÷ 512 ÷ 2048 0: Stop 1: Clear and start 000 001 TDR1 + TDR0 (16-bit) 010 011 100 clear T0CN 101 Capture 110 CDR1 + CDR0 (16-bit) MUX IEDS[1:0] Higher byte Lower byte CAPTURE DATA “01” INT0 PIN “10” INT0IF INT0 INTERRUPT “11” Figure 14-17 16-bit Capture Mode of Timer 0, 1 MAR. 2005 Ver 0.2 63 MC80F0208/16/24 Preliminary TM2 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D6H INITIAL VALUE: --000000B CAP2 T2CK2 T2CK1 BTCL T2CK0 T2CN T2ST 1 X X X X X X means don’t care 7 TM3 6 5 4 3 2 1 0 ADDRESS: 0D8H INITIAL VALUE: 00H POL 16BIT PWM3E CAP3 T3CK1 BTCL T3CK0 T3CN T3ST X 1 0 1 1 1 X X X means don’t care T2CK[2:0] Edge Detector EC1 PIN 111 T2ST ÷2 ÷4 Prescaler XIN PIN ÷8 ÷ 16 ÷ 64 ÷ 256 ÷ 1024 000 0: Stop 1: Clear and start 001 TDR3 + TDR2 (16-bit) 010 011 100 clear T2CN 101 Capture 110 CDR3 + CDR2 (16-bit) MUX IEDS[5:4] Higher byte Lower byte CAPTURE DATA “01” INT2 PIN “10” INT2IF INT2 INTERRUPT “11” Figure 14-18 16-bit Capture Mode of Timer 2, 3 64 MAR. 2005 Ver 0.2 Preliminary TM4 7 6 - - X X 5 4 3 2 MC80F0208/16/24 1 0 ADDRESS: 0DCH INITIAL VALUE: 00H CAP4 T4CK2 T4CK1 BTCL T4CK0 T4CN T4ST 1 X X X X X X means don’t care T4CK[2:0] ÷2 ÷4 XIN PIN Prescaler ÷8 ÷ 16 ÷ 64 ÷ 256 ÷ 1024 ÷ 2048 000 T4ST 001 0: Stop 1: Clear and start 010 011 TDR4H + TDR4L (16-bit) 100 101 clear T4CN 110 Capture 111 CDR4H + CDR4L (16-bit) MUX IEDS[1:0] Higher byte Lower byte CAPTURE DATA “01” “10” INT3 PIN INT3IF INT3 INTERRUPT “11” Figure 14-19 16-bit Capture Mode of Timer 4 Example 1: Example 3: Timer0 = 16-bit timer mode, 0.5s at 4MHz Timer0 = 16-bit capture mode LDM LDM LDM LDM SET1 EI : : TM0,#0000_1111B;8uS TM1,#0100_1100B;16bit Mode TDR0,#<62499 ;8uS X 62500 TDR1,#>62499 ;=0.5s T0E Example 2: LDM LDM LDM LDM LDM LDM SET1 EI : : PSR0,#0000_0001B;INT0 set TM0,#0010_1111B;CaptureMode TM1,#0100_1100B;16bit Mode TDR0,#<0FFH ; TDR1,#>0FFH ; IEDS,#01H;Falling Edge T0E Timer0 = 16-bit event counter mode LDM LDM LDM LDM LDM SET1 EI : : PSR0,#0001_0000B;EC0 Set TM0,#0001_1111B;CounterMode TM1,#0100_1100B;16bit Mode TDR0,#<0FFH ; TDR1,#>0FFH ; T0E MAR. 2005 Ver 0.2 65 MC80F0208/16/24 Preliminary 14.6 PWM Mode The MC80F0208/16/24 has a high speed PWM (Pulse Width Modulation) functions which shared with Timer3. In PWM mode, pin R54/PWM3O outputs up to a 10-bit resolution PWM output. This pin should be configured as a PWM output by setting "1" bit PWM3O in PSR0 register. The period of the PWM3 output is determined by the T3PPR (T3 PWM Period Register) and T3PWHR[3:2] (bit3,2 of T3 PWM High Register) and the duty of the PWM output is determined by the T3PDR (T3 PWM Duty Register) and T3PWHR[1:0] (bit1,0 of T3 PWM High Register). The user writes the lower 8-bit period value to the T3PPR and the higher 2-bit period value to the T3PWHR[3:2]. And writes duty value to the T3PDR and the T3PWHR[1:0] same way. The T3PDR is configured as a double buffering for glitchless PWM output. In Figure 14-20, the duty data is transferred from the master to the slave when the period data matched to the counted value. (i.e. at the beginning of next duty cycle) The bit POL of TM3 decides the polarity of duty cycle. If the duty value is set same to the period value, the PWM output is determined by the bit POL (1: High, 0: Low). And if the duty value is set to "00H", the PWM output is determined by the bit POL (1: Low, 0: High). It can be changed duty value when the PWM output. However the changed duty value is output after the current period is over. And it can be maintained the duty value at present output when changed only period value shown as Figure 14-22. As it were, the absolute duty time is not changed in varying frequency. But the changed period value must greater than the duty value. Note: If changing the Timer3 to PWM function, it should be stop the timer clock firstly, and then set period and duty register value. If user writes register values while timer is in operation, these register could be set with certain values. Ex) Sample Program @4MHz 4uS PWM3 Period = [PWM3HR[3:2]T3PPR] X Source Clock PWM3 Duty = [PWM3HR[1:0]T3PDR] X Source Clock The relation of frequency and resolution is in inverse proportion. Table 14-4 shows the relation of PWM frequency vs. resolution. LDM LDM LDM LDM LDM TM3,#1010_1000b ; Set Clock & PWM3E T3PPR,#199 ; Period :800uS=4uSX(199+1) T3PDR,#99 ; Duty:400uS=4uSX(99+1) PWM3HR,00H TM3,#1010_1011b ; Start timer3 If it needed more higher frequency of PWM, it should be reduced resolution. Frequency Resolution T3CK[1:0] = 00(250nS) T3CK[1:0] = 01(1uS) T3CK[1:0] = 10(4uS) 10-bit 3.9kHz 1.95kHz 0.97kHz 9-bit 7.8kHz 3.90kHz 1.95kHz 8-bit 15.6kHz 7.81kHz 3.90kHz 7-bit 31.2kHz 15.6kHz 7.8kHz Table 14-4 PWM Frequency vs. Resolution at 4MHz 66 MAR. 2005 Ver 0.2 Preliminary R/W 7 TM3 R/W 6 R/W 5 R/W 4 R/W 3 R/W 2 R/W 1 R/W 0 ADDRESS: 0D8H INITIAL VALUE: 00H POL 16BIT PWM3E CAP3 T3CK1 BTCL T3CK0 T3CN T3ST T3PWHR X 0 1 0 X X X X 7 6 5 4 W 3 W 2 W 1 W 0 - - - - - - - - X:The value "0" or "1" corresponding your operation. ADDRESS: 0DBH INITIAL VALUE: ---- 0000B T3PWHR3 BTCL T3PWHR2 T3PWHR1 T3PWHR0 X X X MC80F0208/16/24 Bit Manipulation Not Available X X:The value "0" or "1" corresponding your operation. Period High W 7 W 6 W 5 W 4 T3PPR W 3 Duty High W 2 W 1 W 0 R/W 2 R/W 1 R/W 0 X X X ADDRESS: 0D9H INITIAL VALUE: 0FFH BTCL R/W 7 R/W 6 R/W 5 R/W 4 T3PDR R/W 3 ADDRESS: 0DAH INITIAL VALUE: 00H BTCL X 0 0 1 X T3PWHR[1:0] T2 clock source [T2CK] T3CK[1:0] 0 : Stop 1 : Clear and Start Prescaler XIN PIN ÷4 ÷ 16 Clear 00 R 2-bit 01 R53/PWM3O/T3O PIN T3(8-bit) 10 MUX S Q Comparator 11 ÷1 PWM3O [PSR0.7] T3PPR(8-bit) T3ST POL T3CN Comparator Slave T3PDR(8-bit) T3PWHR[1:0] Master T3PDR(8-bit) Figure 14-20 PWM3 Mode MAR. 2005 Ver 0.2 67 MC80F0208/16/24 Preliminary ~ ~ ~ ~ Source clock 01 02 03 04 PWM3E 7E 7F ~ ~ ~ ~ 00 ~ ~ ~ ~ ~ ~ T3 80 3FF 00 01 02 ~ ~ T3ST ~ ~ T3CN ~ ~ ~ ~ ~ ~ PWM3O [POL=1] ~ ~ PWM3O [POL=0] Duty Cycle [ (1+7Fh) x 250nS = 32uS ] Period Cycle [ (3FFh+1) x 250nS = 256uS, 3.9KHz ] T3CK[1:0] = 00 ( XIN ) T3PWHR = 0CH Period T3PWHR3 1 T3PWHR2 T3PPR (8-bit) 1 FFH T3PWHR0 T3PDR (8-bit) 0 7FH T3PPR = FFH T3PDR = 7FH Duty T3PWHR1 0 Figure 14-21 Example of PWM at 4MHz T3CK[1:0] = 10 ( 2us ) PWM3HR = 00H T3PPR = 0DH Write T3PPR to 09H T3PDR = 04H Source clock T3 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 00 01 02 03 04 05 06 07 08 09 00 01 02 03 04 PWM3O POL=1 Duty Cycle [ (04h+1) x 2uS = 10uS ] Period Cycle [ (1+0Dh) x 2uS = 28uS, 35.5KHz ] Duty Cycle [ (04h+1) x 2uS = 10uS ] Duty Cycle [ (04h+1) x 2uS = 10uS ] Period Cycle [ (1+09h) x 2uS = 20uS, 50KHz ] Figure 14-22 Example of Changing the Period in Absolute Duty Cycle (@8MHz) 68 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 15. ANALOG TO DIGITAL CONVERTER The analog-to-digital converter (A/D) allows conversion of an analog input signal to a corresponding 10-bit digital value. The A/ D module has sixteen analog inputs, which are multiplexed into one sample and hold. The output of the sample and hold is the input into the converter, which generates the result via successive approximation. The analog supply voltage is connected to AVDD of Sample & Hold logic of A/D module. The AVDD was separated with VDD in order to minimize the degradation of operation characteristic by power supply noise. The A/D module has three registers which are the control register ADCM and A/D result register ADCRH and ADCRL. The ADCRH[7:6] is used as ADC clock source selection bits too. The register ADCM, shown in Figure 15-4, controls the operation of the A/D converter module. The port pins can be configured as analog inputs or digital I/O. It is selected for the corresponding channel to be converted by setting ADS[3:0]. The A/D port is set to analog input port by ADEN and ADS[3:0] regardless of port I/O direction register. The port unselected by ADS[3:0] operates as normal port. ADCRH and ADCRL contains the results of the A/D conversion. When the conversion is completed, the result is loaded into the ADCRH and ADCRL, the A/D conversion status bit ADSF is set to “1”, and the A/D interrupt flag ADCIF is set. See Figure 15-1 for operation flow. The block diagram of the A/D module is shown in Figure 15-3. The A/D status bit ADSF is set automatically when A/D conversion is completed, cleared when A/D conversion is in process. The conversion time takes 7 times of conversion source clock. The period of actual A/D conversion clock should be minimally 1µs Analog Input AN0~AN7 0~1000pF User Selectable Figure 15-2 Analog Input Pin Connecting Capacitor Enable A/D Converter A/D Converter Cautions A/D Input Channel Select (1) Input range of AN0 to AN7 The input voltage of AN0 to AN7 should be within the specification range. In particular, if a voltage above AVDD or below AVSS is input (even if within the absolute maximum rating range), the conversion value for that channel can not be indeterminate. The conversion values of the other channels may also be affected. Conversion Source Clock Select (2) Noise countermeasures A/D Start (ADST = 1) In order to maintain 10-bit resolution, attention must be paid to noise on pins AVDD and AN0 to AN7. Since the effect increases in proportion to the output impedance of the analog input source, it is recommended in some cases that a capacitor be connected externally as shown in Figure 15-2 in order to reduce noise. The capacitance is user-selectable and appropriately determined according to the target system. NOP ADSF = 1 NO YES Read ADCR Figure 15-1 A/D Converter Operation Flow How to Use A/D Converter The processing of conversion is start when the start bit ADST is set to “1”. After one cycle, it is cleared by hardware. The register MAR. 2005 Ver 0.2 (3) Pins AN0/R60 to AN7/R67 The analog input pins AN0 to AN7 also function as input/output port (PORT R6) pins. When A/D conversion is performed with any of pins AN0 to AN15 selected, be sure not to execute a PORT input instruction while conversion is in progress, as this may reduce the conversion resolution. Also, if digital pulses are applied to a pin adjacent to the pin in the process of A/D conversion, the expected A/D conversion value may not be obtainable due to coupling noise. Therefore, avoid applying pulses to pins adjacent to the pin undergoing A/D conversion. 69 MC80F0208/16/24 Preliminary (4) AVDD pin input impedance parallel connection to the series resistor string between the AVDD pin and the AVSS pin, and there will be a large analog supply voltage error. A series resistor string of approximately 5KΩ is connected between the AVDD pin and the AVSS pin. Therefore, if the output impedance of the analog power source is high, this will result in ADEN AVDD Resistor Ladder Circuit AVSS 8-bit ADC R60/AN0 R61/AN1 Successive MUX Sample & Hold ADC INTERRUPT ADCIF Approximation Circuit R66/AN6 R67/AN7 ADC8 0 1 10-bit Mode 8-bit Mode ADS[4:2] 98 98 ADCRADCR (10-bit) 10-bit 32 10-bit ADCR 0 0 ADCRH ADCRL (8-bit) 1 0 ADC Result Register ADCRH ADCRL (8-bit) 1 0 ADC Result Register Figure 15-3 A/D Block Diagram 70 MAR. 2005 Ver 0.2 Preliminary R/W 7 ADCM R/W 6 ADEN ADCK 5 - R/W 4 R/W R/W R/W R 3 2 1 0 ADS2 BTCL ADS1 ADS0 ADST ADSF MC80F0208/16/24 ADDRESS: 0EFH INITIAL VALUE: 00-0 0001B A/D status bit 0: A/D conversion is in progress 1: A/D conversion is completed A/D start bit Setting this bit starts an A/D conversion. After one cycle, bit is cleared to “0” by hardware. Analog input channel select 000: Channel 0 (AN0) 100: Channel 4 (AN4) 001: Channel 1 (AN1) 101: Channel 5 (AN5) 010: Channel 2 (AN2) 110: Channel 6 (AN6) 011: Channel 3 (AN3) 111: Channel 7 (AN7) A/D converter Clock Source Devide Ratio Selection bit 0: Clock Source fPS ÷ 4 1: Clock Source fPS ÷ 8 A/D converter Enable bit 0: A/D converter module turn off and current is not flow. 1: Enable A/D converter ADCRH W W 7 6 W 5 PSSEL1 PSSEL0 ADC8 4 - 3 BTCL - 2 R R 1 0 ADDRESS: 0F0H INITIAL VALUE: 010- ----B - A/D Conversion High Data ADC 8-bit Mode select bit 0: 10-bit Mode 1: 8-bit Mode A/D Conversion Clock (fPS) Source Selection R 7 R 5 R 6 ADCRL R 4 R 3 BTCL R 2 R 1 R 0 00: fXIN 01: fXIN ÷ 2 10: fXIN ÷ 4 11: fXIN ÷ 8 ADDRESS: 0F1H INITIAL VALUE: Undefined A/D Conversion Low Data ADCK PSSEL1 PSSEL0 PS Clock Selection 0 0 0 PS = fXIN ÷ 4 0 0 1 PS = fXIN ÷ 8 0 1 0 PS = fXIN ÷ 16 0 1 1 PS = fXIN ÷ 32 1 0 0 PS = fXIN ÷ 8 1 0 1 PS = fXIN ÷ 16 1 1 0 PS = fXIN ÷ 32 1 1 1 PS = fXIN ÷ 64 PS : Conversion Clock Figure 15-4 A/D Converter Control & Result Register MAR. 2005 Ver 0.2 71 MC80F0208/16/24 Preliminary 16. SERIAL INPUT/OUTPUT (SIO) The serial Input/Output is used to transmit/receive 8-bit data serially. The Serial Input/Output(SIO) module is a serial interface useful for communicating with other peripheral of microcontroller devices. These peripheral devices may be serial EEPROMs, shift registers, display drivers, A/D converters, etc. This SIO is 8bit clock synchronous type and consists of serial I/O data register, serial I/O mode register, clock selection circuit, octal counter and control circuit as illustrated in Figure 16-1. The SO pin is designed to input and output. So the Serial I/O(SIO) can be operated with minimum two pin. Pin R42/SCK, R43/SI, and R44/SO pins are controlled by the Serial Mode Register. The contents of the Serial I/O data register can be written into or read out by software. The data in the Serial Data Register can be shifted synchronously with the transfer clock signal. SIOST SIOSF clear XIN PIN Prescaler SCK[1:0] ÷4 ÷ 16 Timer0 Overflow POL Complete Start 00 01 “0” 10 “1” Clock SIO CONTROL CIRCUIT Clock 11 SCK PIN “11” overflow Octal Counter (3-bit) SIOIF Serial communication Interrupt MUX not “11” SCK[1:0] IOSW SM0 SO PIN SOUT IOSW 1 Input shift register SI PIN 0 Shift SIOR Internal Bus Figure 16-1 SIO Block Diagram 72 MAR. 2005 Ver 0.2 Preliminary Serial I/O Mode Register(SIOM) controls serial I/O function. According to SCK1 and SCK0, the internal clock or external clock can be selected. R/W 7 SIOM R/W 6 R/W 5 POL IOSW SM1 R/W 4 MC80F0208/16/24 Serial I/O Data Register(SIOR) is an 8-bit shift register. First LSB is send or is received. R/W R/W R/W R 3 2 1 0 SM0 BTCL SCK1 SCK0 SIOST SIOSF ADDRESS: 0E2H INITIAL VALUE: 0000 0001B Serial transmission status bit 0: Serial transmission is in progress 1: Serial transmission is completed Serial transmission start bit Setting this bit starts an Serial transmission. After one cycle, bit is cleared to “0” by hardware. Serial transmission Clock selection 00: fXIN ÷ 4 01: fXIN ÷ 16 10: TMR0OV(Timer0 Overflow) 11: External Clock Serial transmission Operation Mode 00: Normal Port(R42,R43,R44) 01: Sending Mode(SCK,R43,SO) 10: Receiving Mode(SCK,SI,R44) 11: Sending & Receiving Mode(SCK,SI,SO) Serial Input Pin Selection bit 0: SI Pin Selection 1: SO Pin Selection Serial Clock Polarity Selection bit 0: Data Transmission at Falling Edge Received Data Latch at Rising Edge 1: Data Transmission at Rising Edge Received Data Latch at Falling Edge SIOR R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 BTCL ADDRESS: 0E3H INITIAL VALUE: Undefined Sending Data at Sending Mode Receiving Data at Receiving Mode Figure 16-2 SIO Control Register 16.1 Transmission/Receiving Timing The serial transmission is started by setting SIOST(bit1 of SIOM) to “1”. After one cycle of SCK, SIOST is cleared automatically to “0”. At the default state of POL bit clear, the serial output data from 8-bit shift register is output at falling edge of SCLK, and in- MAR. 2005 Ver 0.2 put data is latched at rising edge of SCLK pin (Refer to Figure 163). When transmission clock is counted 8 times, serial I/O counter is cleared as ‘0”. Transmission clock is halted in “H” state and serial I/O interrupt(SIOIF) occurred. 73 MC80F0208/16/24 Preliminary SIOST SCK [R42] (POL=0) SO [P44] D0 D1 D2 D3 D4 D5 D6 D7 SI [R43] (IOSW=0) D0 D1 D2 D3 D4 D5 D6 D7 IOSWIN [P44] (IOSW=1) D0 D1 D2 D3 D4 D5 D6 D7 SIOSF (SIO Status) SIOIF (SIO Int. Req) Figure 16-3 Serial I/O Timing Diagram at POL=0 SIOST SCK [R42] (POL=1) SO [R44] D0 D1 D2 D3 D4 D5 D6 D7 SI [R43] (IOSW=0) D0 D1 D2 D3 D4 D5 D6 D7 IOSWIN [R44] (IOSW=1) D0 D1 D2 D3 D4 D5 D6 D7 SIOSF (SIO Status) SIOIF (SIO Int. Req) Figure 16-4 Serial I/O Timing Diagram at POL=1 74 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 16.2 The method of Serial I/O 1. Select transmission/receiving mode. LDM LDM NOP LDM 2. In case of sending mode, write data to be send to SIOR. 3. Set SIOST to “1” to start serial transmission. 4. The SIO interrupt is generated at the completion of SIO and SIOIF is set to “1”. In SIO interrupt service routine, correct transmission should be tested. SIOR,#0AAh SIOM,#0011_1100b ;set tx data ;set SIO mode SIOM,#0011_1110b ;SIO Start Note: When external clock is used, the frequency should be less than 1MHz and recommended duty is 50%. If both transmission mode is selected and transmission is performed simultaneously, error will be made. 5. In case of receiving mode, the received data is acquired by reading the SIOR. 16.3 The Method to Test Correct Transmission Serial I/O Interrupt Service Routine SIOSF 0 1 Abnormal SIOE = 0 Write SIOM SIOIF 0 1 Normal Operation Overrun Error - SIOE: Interrupt Enable Register High IENH(Bit3) - SIOIF: Interrupt Request Flag Register High IRQH(Bit3) Figure 16-5 Serial IO Method to Test Transmission MAR. 2005 Ver 0.2 75 MC80F0208/16/24 Preliminary 17. UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER (UART) 17.1 UART Serial Interface Functions The Universal Asynchronous Receiver/Transmitter(UART) enables full-duplex operation wherein one byte of data after the start bit is transmitted and received. The on-chip baud rate generator dedicated to UART enables communications using a wide range of selectable baud rates. In addition, a baud rate can also be defined by dividing clocks input to the ACLK pin. Note: The UART1 control register ASIMR1,ASISR1, BRGCR1, RXR1 and TXR1 are located at EE6H ~ EE9H address. These address must be accessed(read and written) by absolute addressing manipulation instruction. The UART driver consists of RXR, TXR, ASIMR, ASISR and BRGCR register. Clock asynchronous serial I/O mode (UART) can be selected by ASIMR register. Figure 17-1 shows a block diagram of the UART driver. Internal Data Bus Receive Buffer Register (RXR) RxE Receive Shift Register (RX) RxD PIN TxE 2 1 0 PE FE OVE Transmit Shift Register (TXR) (ASISR) Transmit Controller (Parity Addition) TxD PIN TXxIOF Receive Controller (Parity Check) ACLK PIN fXIN/2 ~ fXIN/27 RXxIOF UARTxIF (UARTx interrupt) Baud Rate Generator Figure 17-1 UART Block Diagram 76 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 RECEIVE RxE ACLK PIN 5-bit counter MUX fXIN/2 ~ fXIN/27 match 1/2 (Divider) Tx_Clock 1/2 (Divider) Rx_Clock Decoder match - TPS2 TPS1 TPS0 MDL3 MDL2 MDL1 MDL0 (BRGCR) 5-bit counter TxE Internal Data Bus SEND Figure 17-2 Baud Rate Generator Block Diagram R/W IFR MSB - R/W RX0IOF TX0IOF R/W R/W RX1IOF TX1IOF R/W R/W WTIOF WDTIOF ADDRESS: 0DFH INITIAL VALUE: --00 0000B LSB WDT interrupt occurred flagNOTE1 WT interrupt occurred flagNOTE1 UART1 Tx interrupt occurred flagNOTE2 UART1 Rx interrupt occurred flagNOTE2 UART0 Tx interrupt occurred flagNOTE3 UART0 Rx interrupt occurred flagNOTE3 NOTE1 : In case of using interrupts of Watchdog Timer and Watch Timer together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the Watchdog timer and Watch timer is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. NOTE2 : In case of using interrupts of UART1 Tx and UART1 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART1 Tx and UART1 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. NOTE3 : In case of using interrupts of UART0 Tx and UART0 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART0 Tx and UART0 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. Figure 17-3 IFR : Interrupt Flag Register MAR. 2005 Ver 0.2 77 MC80F0208/16/24 Preliminary 17.2 Serial Interface Configuration The UART interface consists of the following hardware. Item Configuration Register Transmit shift register (TXR) Receive buffer register (RXR) Receive shift register Control register Serial interface mode register (ASIMR) Serial interface status register (ASISR) Baudrate generator control register (BRGCR) receive shift register (RXSR). When the data length is set as 7 bits, receive data is sent to bits 0 to 6 of RXR0. In this case, the MSB of RXR always becomes 0. RXR can be read by an 8 bit memory manipulation instruction. It cannot be written. The RESET input sets RXR0 to 00H. Note: The same address is assigned to RXR and the transmit shift register (TXR). During a write operation, values are written to TXR. Receive shift register Table 17-1 Serial Interface Configuration This register converts serial data input via the RxD pin to paralleled data. When one byte of data is received at this register cannot be manipulated directly by a program. Transmit shift register (TXR) This is the register for setting transmit data. Data written to TXR0 is transmitted as serial data. When the data length is set as 7 bit, bit 0 to 6 of the data written to TX0 are transferred as transmit data. Writing data to TXR0 starts the transmit operation. TXR0 can be written by an 8 bit memory manipulation instruction. It cannot be read. The RESET input sets TXR0 to 0FFH. Asynchronous serial interface mode register (ASIMR) This is an 8 bit register that controls UART serial transfer operation. ASIMR is set by a 1 bit or 8 bit memory manipulation intruction. The RESET input sets ASIMR to 0000_-00-B. Table 174 shows the format of ASIMR. Note: Do not write to TXR during a transmit operation. The same address is assigned to TXR and the receive buffer register (RXR). A read operation reads values from RXR. Note: Do not switch the operation mode until the current serial transmit/receive operation has stopped. Receive buffer register (RXR) . This register is used to hold receive data. When one byte of data is received, one byte of new receive data is transferred from the R/W 7 ASIMR0 R/W 6 R/W 5 TXE0 RXE0 PS01 R/W 4 R/W R/W R/W 3 2 1 PS00 BTCL SL0 ISRM0 0 - ADDRESS: 0E6H INITIAL VALUE: 0000 -00-B UART0 Receive interrupt request is issued when an error occurs bit 0: Receive Completion Interrupt Control When Error occurs 1: Receive completion interrupt request is not issued when an error occur UART0 Stop Bit Length for Specification for Transmit Data bit 0: 1 bit 1: 2 bit UART0 Parity Bit Specification bit 00: No parity 01: Zero parity always added during transmission. No parity detection during reception (parity errors do not occur) 10: Odd parity 11: Even parity UART0 Tx/Rx Enable bit 00: Not used UART0 (R46, R47) 01: UART0 Receive only Mode(RxD, R47) 10: UART0 Transmit only Mode(R46, TxD) 11: UART0 Receive & Transmit Mode(RxD, TxD) Figure 17-4 Asynchronous Serial Interface Mode register (ASIMR0) Format 78 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 Asynchronous serial interface status register0 (ASISR) 000B. Figure 17-5 shows the format of ASISR. When a receive error occurs during UART mode, this register indicates the type of error. ASISR can be read by an 8 bit memory manipulation instruction. The RESET input sets ASISR0 to ----- ASISR0 7 6 5 4 - - - - 3 BTCL - R 2 PE0 . R 1 R 0 FE0 OVE0 ADDRESS: 0E7H INITIAL VALUE: ---- -000B UART0 Parity Error Flag 0: No parity error 1: Parity error (Transmit data parity not matched) UART0 Frame Error Flag 0: No Frame error 1: Framing errorNote1 (stop bit not detected) UART0 Overrun Error Flag 0: No overrun error 1: Overrun errorNote2 (Next receive operation was completed before data was read from receive buffer register (RXR)) Note 1. Even if a stop bit length is set to 2 bits by setting bit2(SL) in ASIMR, stop bit detection during a recive operation only applies to a stop bit length of 1bit. 2. Be sure to read the contents of the receive buffer register(RXR) when an overrun error has occurred. Until the contents of RXR are read, futher overrun errors will occur when receiving data. Figure 17-5 Asynchronous Serial Interface Status Register (ASISR) Format MAR. 2005 Ver 0.2 79 MC80F0208/16/24 Preliminary Baud rate generator control register (BRGCR) This register sets the serial clock for serial interface. BRGCR is set by an 8 bit memory manipulation instruction. The RESET input sets BRGCR to -001_0000B. 7 BRGCR0 - Figure 17-6 shows the format of BRGCR. . R R R 3 2 1 0 BTCL TPS02 TPS01 TPS00 MDL03MDL02 MDL01MDL00 6 5 4 ADDRESS: 0E8H INITIAL VALUE: -001 0000B UART0 Input Clock Selection 0000: fSCK / 16 0001: fSCK / 17 0010: fSCK / 18 0011: fSCK / 19 0100: fSCK / 20 0101: fSCK / 21 0110: fSCK / 22 0111: fSCK / 23 1000: fSCK / 24 1001: fSCK / 25 1010: fSCK / 26 1011: fSCK / 27 1100: fSCK / 28 1101: fSCK / 29 1110: fSCK / 30 1111: Setting prohibited UART0 Source Clock Selection for 5 bit count 000: ACLK/R45 001: fXIN / 2 010: fXIN / 4 011: fXIN / 8 100: fXIN / 16 101: fXIN / 32 110: fXIN / 64 111: fXIN / 128 Caution Writing to BRGCR0 during a communication operation may cause abnormal output from the baud rate generator and disable further communication operations. Therefore, do not write to BRGCR0 during a communication operation. Remarks 1. fSCK : Source clock for 5 bit counter 2. n : Value set via TPS0 to TPS2 ( 0 ≤ n ≤ 7 ) 3. k : Source clock for 5 bit counter ( 0 ≤ k ≤ 14 ) Figure 17-6 Baud Rate Generator Control Register0(BRGCR) Format 80 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 17.3 Communication operation The transmit operation is enabled when bit 7 (TXE0) of the asynchronous serial interface mode register (ASIMR) is set to 1. The transmit operation is started when transmit data is written to the transmit shift register (TXR). The timing of the transmit completion interrupt request is shown in Figure 17-8. The receive operation is enabled when bit 6 (RXE0) of the asynchronous serial interface mode register (ASIMR) is set to 1, and input via the RxD pin is sampled. The serial clock specified by ASIMR is used to sample the RxD pin. Once reception of one data frame is completed, a receive completion interrupt request (INT_RX0) occurs. Even if an error has occurred, the receive data in which the error occurred is still transferred to RXR. When ASIMR bit 1 (ISRM0) is cleared to 0 upon occurrence of an error, and INT_RX0 occurs. When ISRM bit is set to 1, INT_RX0 does not occur in case of error occurrence. Figure 17-8 shows the timing of the asynchronous serial interface receive completion interrupt request. In case of using interrupts of UART0 Tx and UART0 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART0 Tx and UART0 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. In case of using interrupts of UART1 Tx and UART1 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART1 Tx and UART1 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. UART0(UART1) Interrupt Request Tx0IOF(Tx1IOF) =0 =1 Tx0(Tx1) Interrupt Routine Clear Tx0IOF(Tx1IOF) Rx0IOF(Rx1IOF) =0 =1 Rx0(Rx1) Interrupt Routine Clear Rx0IOF(Rx1IOF) RETI Figure 17-7 Shared Interrupt Vector of UART Each processing step is determined by IFR as shown in Figure 177. MAR. 2005 Ver 0.2 81 MC80F0208/16/24 Preliminary 1. Stop bit Length : 1 bit 1 data frame TxD RxD Start D0 D1 D2 D3 D4 D5 D6 D7 Parity D6 D7 Parity D6 D7 Stop Stop character bits TX INTERRUPT RX INTERRUPT 2. Stop bit Length : 2 bit 1 data frame TxD RxD Start D0 D1 D2 D3 D4 D5 Stop character bits TX INTERRUPT RX INTERRUPT 3. Stop bit Length : 1 bit, No parity 1 data frame TxD RxD Start D0 D1 D2 D3 D4 D5 character bits TX INTERRUPT RX INTERRUPT 1 data frame consists of following bits. - Start bit : 1 bit - Character bits : 8 bits - Parity bit : Even parity, Odd parity, Zero parity, No parity - Stop bit(s) : 1 bit or 2 bits Figure 17-8 UART data format and interrupt timing diagram 82 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 17.4 Relationship between main clock and baud rate The transmit/receive clock that is used to generate the baud rate is obtained by dividing the main system clock. Transmit/Receive clock generation for baud rate is made by using main system fXIN=11.0592M Baud Rate (bps) fXIN=10.0M clock which is divided. The baud rate generated from the main system clock is determined according to the following formula. fXIN=8.0M fXIN=6.0M fXIN=4.0M fXIN=2.0M BRGCR ERR (%) BRGCR ERR (%) BRGCR ERR (%) BRGCR ERR (%) BRGCR ERR (%) BRGCR ERR (%) 600 - - - - - - - - 7AH 0.16 6AH 0.16 1200 - - - - 7AH 0.16 74H 2.34 6AH 0.16 5AH 0.16 2400 72H 0.00 70H 1.73 6AH 0.16 64H 2.34 5AH 0.16 4AH 0.16 4800 62H 0.00 60H 1.73 5AH 0.16 54H 2.34 4AH 0.16 3AH 0.16 9600 52H 0.00 50H 1.73 4AH 0.16 44H 2.34 3AH 0.16 2AH 0.16 19200 42H 0.00 40H 1.73 3AH 0.16 34H 2.34 2AH 0.16 1AH 0.16 31250 36H 0.53 34H 0.00 30H 0.00 28H 0.00 20H 0.00 10H 0.00 38400 32H 0.00 30H 1.73 2AH 0.16 24H 2.34 1AH 0.16 - - 57600 28H 0.00 26H 1.35 21H 2.11 1AH 0.16 11H 2.12 - - 76800 22H 0.00 20H 1.73 1AH 0.16 14H 2.34 - - - - 115200 18H 0.00 16H 1.36 11H 2.12 - - - - - - Baud Rate = fXIN / ( 2n+1(k+16) ) Remarks 1. fXIN : Main system clock oscillation frequency When ACLK is selected as the source clock of the 5-bit counter, substitute the input clock frequency to ACLK pin for in the above expression. 2. fSCK : Source clock for 5 bit counter 3. n : Value set via TPS00 to TPS02 ( 0 ≤ n ≤ 7 ) 4. k : Source clock for 5 bit counter ( 0 ≤ k ≤ 14 ) Figure 17-9 Relationship between main clock and Baud Rate MAR. 2005 Ver 0.2 83 MC80F0208/16/24 Preliminary 18. BUZZER FUNCTION The buzzer driver block consists of 6-bit binary counter, buzzer register BUZR, and clock source selector. It generates squarewave which has very wide range frequency (488Hz ~ 250kHz at fXIN= 4MHz) by user software. The bit 0 to 5 of BUZR determines output frequency for buzzer driving. A 50% duty pulse can be output to R13/BUZO pin to use for piezo-electric buzzer drive. Pin R13 is assigned for output port of Buzzer driver by setting the bit 2 of PSR1(address 0F9H) to “1”. For PSR1 register, refer to Figure 18-2. f XIN f BUZ = --------------------------------------------------------------------------2 × DivideRatio × ( BUR + 1 ) Equation of frequency calculation is shown below. fBUZ: Buzzer frequency Example: 5kHz output at 4MHz. LDM LDM fXIN: Oscillator frequency Divide Ratio: Prescaler divide ratio by BUCK[1:0] BUR: Lower 6-bit value of BUZR. Buzzer period value. BUZR,#0011_0001B PSR1,#XXXX_X1XXB The frequency of output signal is controlled by the buzzer control register BUZR. The bit 0 to bit 5 of BUZR determine output frequency for buzzer driving. X means don’t care R13 port data Prescaler ÷8 XIN PIN 6-BIT BINARY COUNTER 00 ÷ 16 MUX 01 ÷ 32 0 10 ÷ 64 F/F 11 R13/BUZO PIN 1 Comparator MUX 2 Compare data BUZO 6 PSR1 BUR Port selection register 1 [0F9H] [0E0H] Internal bus line Figure 18-1 Block Diagram of Buzzer Driver ADDRESS: 0E0H RESET VALUE: 0FFH W BUZR W W W W W W ADDRESS: 0F9H RESET VALUE: ---- -0--B W PSR1 BUCK1 BUCK0 - - BUR[5:0] Buzzer Period Data Source clock select 00: fXIN ÷ 8 01: fXIN ÷ 16 10: fXIN ÷ 32 11: fXIN ÷ 64 - - - BUZO - - R13/BUZO Selection 0: R13 port (Turn off buzzer) 1: BUZO port (Turn on buzzer) Figure 18-2 Buzzer Register & PSR1 84 MAR. 2005 Ver 0.2 Preliminary The 6-bit counter is cleared and starts the counting by writing signal at BUZR register. It is incremental from 00H until it matches 6-bit BUR value. BUR [5:0] BUR[7:6] 00 01 10 11 MC80F0208/16/24 When main-frequency is 4MHz, buzzer frequency is shown as below Table 18-1. BUR [5:0] BUR[7:6] 00 01 10 11 00 01 02 03 04 05 06 07 250.000 125.000 83.333 62.500 50.000 41.667 35.714 31.250 125.000 62.500 41.667 31.250 25.000 20.833 17.857 15.625 62.500 31.250 20.833 15.625 12.500 10.417 8.929 7.813 31.250 15.625 10.417 7.813 6.250 5.208 4.464 3.906 20 21 22 23 24 25 26 27 7.576 7.353 7.143 6.944 6.757 6.579 6.410 6.250 3.788 3.676 3.571 3.472 3.378 3.289 3.205 3.125 1.894 1.838 1.786 1.736 1.689 1.645 1.603 1.563 0.947 0.919 0.893 0.868 0.845 0.822 0.801 0.781 08 09 0A 0B 0C 0D 0E 0F 27.778 25.000 22.727 20.833 19.231 17.857 16.667 15.625 13.889 12.500 11.364 10.417 9.615 8.929 8.333 7.813 6.944 6.250 5.682 5.208 4.808 4.464 4.167 3.906 3.472 3.125 2.841 2.604 2.404 2.232 2.083 1.953 28 29 2A 2B 2C 2D 2E 2F 6.098 5.952 5.814 5.682 5.556 5.435 5.319 5.208 3.049 2.976 2.907 2.841 2.778 2.717 2.660 2.604 1.524 1.488 1.453 1.420 1.389 1.359 1.330 1.302 0.762 0.744 0.727 0.710 0.694 0.679 0.665 0.651 10 11 12 13 14 15 16 17 14.706 13.889 13.158 12.500 11.905 11.364 10.870 10.417 7.353 6.944 6.579 6.250 5.952 5.682 5.435 5.208 3.676 3.472 3.289 3.125 2.976 2.841 2.717 2.604 1.838 1.736 1.645 1.563 1.488 1.420 1.359 1.302 30 31 32 33 34 35 36 37 5.102 5.000 4.902 4.808 4.717 4.630 4.545 4.464 2.551 2.500 2.451 2.404 2.358 2.315 2.273 2.232 1.276 1.250 1.225 1.202 1.179 1.157 1.136 1.116 0.638 0.625 0.613 0.601 0.590 0.579 0.568 0.558 18 19 1A 1B 1C 1D 1E 1F 10.000 9.615 9.259 8.929 8.621 8.333 8.065 7.813 5.000 4.808 4.630 4.464 4.310 4.167 4.032 3.906 2.500 2.404 2.315 2.232 2.155 2.083 2.016 1.953 1.250 1.202 1.157 1.116 1.078 1.042 1.008 0.977 38 39 3A 3B 3C 3D 3E 3F 4.386 4.310 4.237 4.167 4.098 4.032 3.968 3.907 2.193 2.155 2.119 2.083 2.049 2.016 1.984 1.953 1.096 1.078 1.059 1.042 1.025 1.008 0.992 0.977 0.548 0.539 0.530 0.521 0.512 0.504 0.496 0.488 Table 18-1 buzzer frequency (kHz unit) MAR. 2005 Ver 0.2 85 MC80F0208/16/24 Preliminary 19. INTERRUPTS The MC80F0208/16/24 interrupt circuits consist of Interrupt enable register (IENH, IENL), Interrupt request flags of IRQH, IRQL, Priority circuit, and Master enable flag (“I” flag of PSW). Fifteen interrupt sources are provided. The configuration of interrupt circuit is shown in Figure 19-1 and interrupt priority is shown in Table 19-1. The Timer 0 ~ Timer 4 Interrupts are generated by T0IF, T1IF, T2IF, T3IF and T4IF which is set by a match in their respective timer/counter register. The Basic Interval Timer Interrupt is generated by BITIF which is set by an overflow in the timer register. The AD converter Interrupt is generated by ADCIF which is set by finishing the analog to digital conversion. The External Interrupts INT0 ~ INT3 each can be transition-activated (1-to-0 or 0-to-1 transition) by selection IEDS register. The flags that actually generate these interrupts are bit INT0IF, INT1IF, INT2IF and INT3IF in register IRQH. When an external interrupt is generated, the generated flag is cleared by the hardware when the service routine is vectored to only if the interrupt was transition-activated. The Watchdog timer and Watch Timer Interrupt is generated by WDTIF and WTIF which is set by a match in Watchdog timer register or Watch timer register. The IFR(Interrupt Flag Register) is used for discrimination of the interrupt source among these two Watchdog timer and Watch Timer Interrupt. Internal bus line [0EAH] IENH Interrupt Enable Register (Higher byte) IRQH [0ECH] INT0IF INT1IF INT2 INT2IF INT3 INT3IF UART0 Tx/Rx UART0IF UART1 Tx/Rx UART1IF Serial Communication Timer 0 Release STOP/SLEEP Priority Control INT0 INT1 SIOIF T0IF IRQL [0EDH] Timer 1 T1IF Timer 2 T2IF Timer 3 T3IF Timer 3 T4IF A/D Converter ADCIF Watchdog Timer WDTIF Watch Timer WTIF BIT BITIF I-flag is in PSW, it is cleared by “DI”, set by “EI” instruction. When it goes interrupt service, I-flag is cleared by hardware, thus any other interrupt are inhibited. When interrupt service is completed by “RETI” instruction, I-flag is set to “1” by hardware. To CPU I-flag Interrupt Master Enable Flag Interrupt Vector Address Generator [0EBH] IENL Interrupt Enable Register (Lower byte) Internal bus line Figure 19-1 Block Diagram of Interrupt 86 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 The Basic Interval Timer Interrupt is generated by BITIF which is set by a overflow in the timer counter register. Reset/Interrupt The UART0 receive/transmit interrupt is generated by UART0IF is set by completion of UART0 data reception or transmission. The IFR(Interrupt Flag Register) is used for discrimination of the interrupt source among these two UART0 receive and UART0 transmit Interrupt. Hardware Reset External Interrupt 0 External Interrupt 1 External Interrupt 2 External Interrupt 3 UART0 Rx/Tx Interrupt UART1 Rx/Tx Interrupt Serial Input/Output Timer/Counter 0 Timer/Counter 1 Timer/Counter 2 Timer/Counter 3 Timer/Counter 4 ADC Interrupt Watchdog/Watch Timer Basic Interval Timer The SIO interrupt is generated by SIOIF which is set by completion of SIO data reception or transmission. The interrupts are controlled by the interrupt master enable flag I-flag (bit 2 of PSW on Figure 8-3), the interrupt enable register (IENH, IENL), and the interrupt request flags (in IRQH and IRQL) except Power-on reset and software BRK interrupt. The Table 19-1 shows the Interrupt priority. Vector addresses are shown in Figure 8-6. Interrupt enable registers are shown in Figure 19-2. These registers are composed of interrupt enable flags of each interrupt source and these flags determines whether an interrupt will be accepted or not. When enable flag is “0”, a corresponding interrupt source is prohibited. Note that PSW contains also a master enable bit, I-flag, which disables all interrupts at once. R/W IENH INT0E R/W R/W R/W R/W R/W Symbol Priority RESET INT0 INT1 INT2 INT3 UART0 UART1 SIO Timer 0 Timer 1 Timer 2 Timer 3 Timer 4 ADC WDT_WT BIT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Table 19-1 Interrupt Priority R/W INT1E INT2E INT3E UART0E UART1E SIOE R/W ADDRESS: 0EAH INITIAL VALUE: 0000 0000B T0E MSB LSB Timer/Counter 0 interrupt enable flag Serial Communication interrupt enable flag UART1 Tx/Rx interrupt enable flag UART0 Tx/Rx interrupt enable flag External interrupt 0 enable flag External interrupt 1 enable flag External interrupt 2 enable flag External interrupt 3 enable flag IENL R/W R/W R/W R/W R/W R/W T1E T2E T3E T4E ADCE WDTE WTE BITE MSB R/W R/W ADDRESS: 0EBH INITIAL VALUE: 0000 0000B LSB Basic Interval Timer interrupt enable flag Watch timer interrupt enable flag Watchdog timer interrupt enable flag A/D Converter interrupt enable flag Timer/Counter 4 interrupt enable flag Timer/Counter 3 interrupt enable flag Timer/Counter 2 interrupt enable flag Timer/Counter 1 interrupt enable flag Figure 19-2 Interrupt Enable Flag Register MAR. 2005 Ver 0.2 87 MC80F0208/16/24 Preliminary R/W IRQH R/W R/W R/W R/W R/W R/W INT0IF INT1IF INT2IF INT3IF UART0IF UART1IF SIOIF R/W T0IF MSB ADDRESS: 0ECH INITIAL VALUE: 0000 0000B LSB Timer/Counter 0 interrupt request flag Serial Communication interrupt request flag UART1Tx/Rx interrupt request flag UART0 Tx/Rx interrupt request flag External interrupt 3 request flag External interrupt 2 request flag External interrupt 1 request flag External interrupt 0 request flag IRQL R/W R/W R/W R/W T1IF T2IF T3IF T4IF ADCIF WDTIF WTIF BITIF R/W R/W R/W R/W ADDRESS: 0EDH INITIAL VALUE: 0000 0000B LSB MSB Basic Interval Timer interrupt request flag Watch timer interrupt request flag Watchdog timer interrupt request flag A/D Converter interrupt request flag Timer/Counter 4 interrupt request flag Timer/Counter 3 interrupt request flag Timer/Counter 2 interrupt request flag Timer/Counter 1 interrupt request flag R/W IFR - - R/W R/W R/W R/W R/W RX0IOF TX0IOF RX1IOF TX1IOF WTIOF WDTIOF MSB ADDRESS: 0DFH INITIAL VALUE: --00 0000B LSB WDT interrupt occurred flagNOTE1 WT interrupt occurred flagNOTE1 UART1 Tx interrupt occurred flagNOTE2 UART1 Rx interrupt occurred flagNOTE2 UART0 Tx interrupt occurred flagNOTE3 UART0 Rx interrupt occurred flagNOTE3 NOTE1 : In case of using interrupts of Watchdog Timer and Watch Timer together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the Watchdog timer and Watch timer is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. NOTE2 : In case of using interrupts of UART1 Tx and UART1 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART1 Tx and UART1 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. NOTE3 : In case of using interrupts of UART0 Tx and UART0 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART0 Tx and UART0 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. Figure 19-3 Interrupt Request Flag Register & Interrupt Flag Register 19.1 Interrupt Sequence An interrupt request is held until the interrupt is accepted or the interrupt latch is cleared to “0” by a reset or an instruction. Interrupt acceptance sequence requires 8 cycles of fXIN (2µs at fX- 88 IN =4MHz) after the completion of the current instruction execution. The interrupt service task is terminated upon execution of an interrupt return instruction [RETI]. MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 19.1.1 Interrupt acceptance 1. The interrupt master enable flag (I-flag) is cleared to “0” to temporarily disable the acceptance of any following maskable interrupts. When a non-maskable interrupt is accepted, the acceptance of any following interrupts is temporarily disabled. 2. Interrupt request flag for the interrupt source accepted is cleared to “0”. and the program status word are saved (pushed) onto the stack area. The stack pointer decreases 3 times. 4. The entry address of the interrupt service program is read from the vector table address and the entry address is loaded to the program counter. 5. The instruction stored at the entry address of the interrupt service program is executed. 3. The contents of the program counter (return address) System clock Instruction Fetch SP Address Bus PC Data Bus Not used SP-1 PCH PCL SP-2 PSW V.L. V.L. V.H. ADL New PC ADH OP code Internal Read Internal Write Interrupt Processing Step Interrupt Service Task V.L. and V.H. are vector addresses. ADL and ADH are start addresses of interrupt service routine as vector contents. Figure 19-4 Timing chart of Interrupt Acceptance and Interrupt Return Instruction Basic Interval Timer Vector Table Address 0FFE0H 0FFE1H 012H 0E3H Entry Address 0E312H 0E313H 0EH 2EH A interrupt request is not accepted until the I-flag is set to “1” even if a requested interrupt has higher priority than that of the current interrupt being serviced. When nested interrupt service is required, the I-flag should be set to “1” by “EI” instruction in the interrupt service program. In this case, acceptable interrupt sources are selectively enabled by the individual interrupt enable flags. Correspondence between vector table address for BIT interrupt and the entry address of the interrupt service program. 19.1.2 Saving/Restoring General-purpose Register During interrupt acceptance processing, the program counter and the program status word are automatically saved on the stack, but accumulator and other registers are not saved itself. These registers are saved by the software if necessary. Also, when multiple interrupt services are nested, it is necessary to avoid using the same data memory area for saving registers. registers. Example: Register save using push and pop instructions INTxx: PUSH PUSH PUSH A X Y ;SAVE ACC. ;SAVE X REG. ;SAVE Y REG. The following method is used to save/restore the general-purpose MAR. 2005 Ver 0.2 89 MC80F0208/16/24 Preliminary interrupt processing POP POP POP RETI Y X A ;RESTORE Y REG. ;RESTORE X REG. ;RESTORE ACC. ;RETURN main task acceptance of interrupt interrupt service task saving registers General-purpose register save/restore using push and pop instructions; restoring registers interrupt return 19.2 BRK Interrupt Software interrupt can be invoked by BRK instruction, which has the lowest priority order. Interrupt vector address of BRK is shared with the vector of TCALL 0 (Refer to Program Memory Section). When BRK interrupt is generated, B-flag of PSW is set to distinguish BRK from TCALL 0. Each processing step is determined by B-flag as shown in Figure 19-5. B-FLAG BRK or TCALL0 =0 =1 BRK INTERRUPT ROUTINE TCALL0 ROUTINE RETI RET Figure 19-5 Execution of BRK/TCALL0 19.3 Shared Interrupt Vector In case of using interrupts of Watchdog Timer and Watch Timer together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the Watchdog timer and Watch timer is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. In case of using interrupts of UART0 Tx and UART0 Rx together, it is necessary to check IFR in interrupt service routine to find 90 out which interrupt is occurred, because the UART0 Tx and UART0 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. In case of using interrupts of UART1 Tx and UART1 Rx together, it is necessary to check IFR in interrupt service routine to find out which interrupt is occurred, because the UART1 Tx and UART1 Rx is shared with interrupt vector address. These flag bits must be cleared by software after reading this register. Each MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 processing step is determined by IFR as shown in Figure 19-6. UART0(UART1) Interrupt Request WDT or WT Interrupt Request Tx0IOF(Tx1IOF) WDTIF Tx0(Tx1) Interrupt Routine =0 =1 =0 =0 WTIF =1 =1 WDT Interrupt Routine WDT Interrupt Routine Clear Tx0IOF(Tx1IOF) Clear WDTIF Clear WTIF Rx0IOF(Rx1IOF) =0 =1 Rx0(Rx1) Interrupt Routine RETI Clear Rx0IOF(Rx1IOF) RETI Figure 19-6 Software Flowchart of Shared Interrupt Vector 19.4 Multi Interrupt If two requests of different priority levels are received simultaneously, the request of higher priority level is serviced. If requests of the interrupt are received at the same time simultaneously, an internal polling sequence determines by hardware which request is serviced. However, multiple processing Main Program service through software for special features is possible. Generally when an interrupt is accepted, the I-flag is cleared to disable any further interrupt. But as user sets I-flag in interrupt routine, some further interrupt can be serviced even if certain interrupt is in progress. TIMER 1 service enable INT0 disable other INT0 service EI Occur TIMER1 interrupt In this example, the INT0 interrupt can be serviced without any pending, even TIMER1 is in progress. Because of re-setting the interrupt enable registers IENH,IENL and master enable “EI” in the TIMER1 routine. Occur INT0 enable INT0 enable other Figure 19-7 Execution of Multi Interrupt MAR. 2005 Ver 0.2 91 MC80F0208/16/24 Preliminary Example: During Timer1 interrupt is in progress, INT0 interrupt serviced without any suspend. TIMER1: PUSH PUSH PUSH LDM LDM EI : : A X Y IENH,#80H IENL,#0 : : : : LDM LDM POP POP POP RETI ;Enable INT0 only ;Disable other int. ;Enable Interrupt IENH,#0FFH ;Enable all interrupts IENL,#0FFH Y X A 19.5 External Interrupt The edge detection of external interrupt has three transition activated mode: rising edge, falling edge, and both edge. The external interrupt on INT0, INT1, INT2 and INT3 pins are edge triggered depending on the edge selection register IEDS (address 0EEH) as shown in Figure 19-8. 01 INT0 pin 10 INT0IF INT0 INTERRUPT INT1IF INT1 INTERRUPT INT2IF INT2 INTERRUPT INT3IF INT3 INTERRUPT 11 01 INT1 pin 10 11 01 INT2 pin 10 11 01 INT3 pin 10 11 2 2 2 IEDS 2 Edge selection Register [0EEH] Figure 19-8 External Interrupt Block Diagram INT0 ~ INT3 are multiplexed with general I/O ports (R10, R11, R12, R50). To use as an external interrupt pin, the bit of port selection register PSR0 should be set to “1” correspondingly. Example: To use as an INT0 and INT2 : ;**** Set external interrupt port as pull-up state. LDM PU1,#0000_0101B ; ;**** Set port as an external interrupt port LDM PSR0,#0000_0101B ; ;**** Set Falling-edge Detection LDM IEDS,#0001_0001B : 92 Response Time The INT0 ~ INT3 edge are latched into INT0IF ~ INT3IF at every machine cycle. The values are not actually polled by the circuitry until the next machine cycle. If a request is active and conditions are right for it to be acknowledged, a hardware subroutine call to the requested service routine will be the next instruction to be executed. The DIV itself takes twelve cycles. Thus, a minimum of twelve complete machine cycles elapse between activation of an external interrupt request and the beginning of execution of the first instruction of the service routine. Figure 19-9 shows interrupt response timings. MAR. 2005 Ver 0.2 Preliminary max. 12 fXIN MC80F0208/16/24 8 fXIN Interrupt Interrupt goes latched active Interrupt processing Interrupt routine Figure 19-9 Interrupt Response Timing Diagram MSB W IEDS W W W W W W LSB W IED3H IED3L IED2H IED2L IED1H BTCL IED1L IED0H IED0L INT3 INT2 INT1 ADDRESS: 0EEH INITIAL VALUE: 00H INT0 Edge selection register 00: Reserved 01: Falling (1-to-0 transition) 10: Rising (0-to-1 transition) 11: Both (Rising & Falling) PSR0 W W W PWM3O - EC1E MSB 0: R54 1: PWM3O/T3O W W W W W EC0E BTCL INT3E INT2E INT1E INT0E ADDRESS: 0F8H INITIAL VALUE: 0-00 0000B LSB 0: R10 1: INT0 0: R11 1: INT1 0: R51 1: EC1 0: R12 1: INT2 0: R15 1: EC0 0: R50 1: INT3 Figure 19-10 IEDS register and Port Selection Register PSR0 MAR. 2005 Ver 0.2 93 MC80F0208/16/24 Preliminary 20. OPERATION MODE The system clock controller starts or stops the main-frequency clock oscillator. The operating mode is generally divided into the main active mode. Figure 20-1 shows the operating mode transition diagram. SLEEP Mode System clock control is performed by the system clock mode register, SCMR. During reset, this register is initialized to “0” so that the main-clock operating mode is selected. STOP Mode In this mode, the CPU clock stops while peripherals and the oscillation source continues to operate normally. In this mode, the system operations are all stopped, holding the internal states valid immediately before the stop at the low power consumption level. The main oscillation source stops, but the sub clock oscillation and watch timer by sub clock and RC-oscillated watchdog timer don’t stop. Main Active Mode This mode is fast-frequency operating mode. The CPU and the peripheral hardware are operated on the high-frequency clock. At reset release, this mode is invoked. * Note1 : Stop released by Reset, Watch Timer, Watchdog Timer Timer(event counter), External interrupt, SIO (External clock), UART0, UART1 * Note2 : Sleep released by Reset, or All interrupts * Note3 Main Active Mode Stop / Sleep Mode * Note1 / * Note2 Main : Oscillation Sub : Oscillation or stop System Clock : Main Main : Oscillation or Stop Sub : Oscillation System Clock : Stop * Note3 : 1) Stop mode Admission LDM SSCR, #5AH STOP NOP NOP 2) Sleep mode Admission LDM SSCR, #0FH Figure 20-1 Operating Mode 20.1 Operation Mode Switching In the Main active mode, only the high-frequency clock oscillator is used. In the Sub active mode, the low-frequency clock oscillation is used, so the low power voltage operation or the low power consumption operation can be enabled. Instruction execution does not stop during the change of operation mode. In this case, some peripheral hardware capabilities may be affected. For de- tails, refer to the description of the relevant operation. The following describes the switching between the Main active mode and the Sub active mode. During reset, the system clock mode register is initialized at the Main active mode. It must be set to the Sub active mode for reducing the power consumption. Shifting from the Normal operation to the SLEEP mode If the CPU clock stops and the SLEEP mode is invoked, the CPU stops while other peripherals are operate normally. The ways of release from this mode are by setting the RESET pin to low and all available interrupts. For more detail, See "21. POWER SAVING OPERATION" on page 95. Shifting from the Normal operation to the STOP mode If the main-frequency clock oscillation stops and the STOP mode is invoked, the CPU stops and other peripherals are stop too. But sub-frequency clock oscillation operate continuously if enabled previously. After the STOP operation is released by reset, the operation mode is changed to Main active mode. The methods of release from this mode are Reset, Watch Timer, Timer/Event counter, SIO(External clock), UART, and External Interrupt. For more details, see "21. POWER SAVING OPERATION" on page 95. 94 Note: In the STOP and SLEEP operating modes, the power consumption by the oscillator and the internal hardware is reduced. However, the power for the pin interface (depending on external circuitry and program) is not directly associated with the low-power consumption operation. This must be considered in system design as well as interface circuit design. MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 21. POWER SAVING OPERATION The MC80F0208/16/24 has two power-down modes. In powerdown mode, power consumption is reduced considerably. For applications where power consumption is a critical factor, device provides two kinds of power saving functions, STOP mode and SLEEP mode. Table 21-1 shows the status of each Power Saving Mode. SLEEP mode is entered by the SSCR register to “0Fh”., and STOP mode is entered by STOP instruction after the SSCR register to “5Ah”. 21.1 Sleep Mode In this mode, the internal oscillation circuits remain active. Oscillation continues and peripherals are operate normally but CPU stops. Movement of all peripherals is shown in Table 21-1. SLEEP mode is entered by setting the SSCR register to “0Fh”. It W 7 W 6 W 5 W 4 W 3 is released by Reset or interrupt. To be released by interrupt, interrupt should be enabled before SLEEP mode. W 2 W 1 W 0 ADDRESS: 0F5H INITIAL VALUE: 0000 0000B SSCR Power Down Control 5AH: STOP mode 0FH: SLEEP mode NOTE : To get into STOP mode, SSCR must be set to 5AH just before STOP instruction execution. At STOP mode, Stop & Sleep Control Register (SSCR) value is cleared automatically when released. To get into SLEEP mode, SSCR must be set to 0FH. Figure 21-1 STOP and SLEEP Control Register Release the SLEEP mode The exit from SLEEP mode is hardware reset or all interrupts. Reset re-defines all the Control registers but does not change the on-chip RAM. Interrupts allow both on-chip RAM and Control registers to retain their values. If I-flag = 1, the normal interrupt response takes place. If I-flag = 0, the chip will resume execution starting with the instruction following the SLEEP instruction. It will not vector to interrupt service routine. (refer to Figure 21-4) MAR. 2005 Ver 0.2 When exit from SLEEP mode by reset, enough oscillation stabilization time is required to normal operation. Figure 21-3 shows the timing diagram. When released from the SLEEP mode, the Basic interval timer is activated on wake-up. It is increased from 00H until FFH. The count overflow is set to start normal operation. Therefore, before SLEEP instruction, user must be set its relevant prescaler divide ratio to have long enough time (more than 20msec). This guarantees that oscillator has started and stabilized. By interrupts, exit from SLEEP mode is shown in Figure 21-2. By reset, exit from SLEEP mode is shown in Figure 21-3. 95 MC80F0208/16/24 Preliminary . ~ ~ ~ ~ ~ ~ Internal Clock ~ ~ ~ ~ ~ ~ ~ ~ Oscillator (XIN pin) SLEEP Instruction Executed Normal Operation SLEEP Operation ~ ~ External Interrupt Normal Operation Figure 21-2 SLEEP Mode Release Timing by External Interrupt ~ ~ ~ ~ Oscillator (XIN pin) ~ ~ CPU Clock ~ ~ Internal RESET ~ ~ ~ ~ RESET ~ ~ SLEEP Instruction Execution Normal Operation Stabilization Time tST = 65.5mS @4MHz Normal Operation SLEEP Operation Figure 21-3 Timing of SLEEP Mode Release by Reset 21.2 Stop Mode In the Stop mode, the main oscillator, system clock and peripheral clock is stopped, but the sub clock oscillation and Watch Timer by sub clock and RC-oscillated watchdog timer continue to operate. With the clock frozen, all functions are stopped, but the onchip RAM and Control registers are held. The port pins out the values held by their respective port data register, port direction registers. Oscillator stops and the systems internal operations are all held up. • The states of the RAM, registers, and latches valid immediately before the system is put in the STOP state are all held. • The program counter stop the address of the instruction to be executed after the instruction 96 "STOP" which starts the STOP operating mode. Note: The Stop mode is activated by execution of STOP instruction after setting the SSCR to “5AH”. (This register should be written by byte operation. If this register is set by bit manipulation instruction, for example "set1" or "clr1" instruction, it may be undesired operation) In the Stop mode of operation, VDD can be reduced to minimize power consumption. Care must be taken, however, to ensure that VDD is not reduced before the Stop mode is invoked, and that VDD is restored to its normal operating level, before the Stop mode is terminated. MAR. 2005 Ver 0.2 Preliminary The reset should not be activated before VDD is restored to its normal operating level, and must be held active long enough to allow the oscillator to restart and stabilize. Note: After STOP instruction, at least two or more NOP instruction should be written. Ex) LDM CKCTLR,#0FH ;more than 20ms LDM SSCR,#5AH STOP NOP ;for stabilization time NOP ;for stabilization time MC80F0208/16/24 with the oscillator and the internal hardware is lowered; however, the power dissipation associated with the pin interface (depending on the external circuitry and program) is not directly determined by the hardware operation of the STOP feature. This point should be little current flows when the input level is stable at the power voltage level (VDD/VSS); however, when the input level gets higher than the power voltage level (by approximately 0.3 to 0.5V), a current begins to flow. Therefore, if cutting off the output transistor at an I/O port puts the pin signal into the high-impedance state, a current flow across the ports input transistor, requiring to fix the level by pull-up or other means. In the STOP operation, the dissipation of the power associated Peripheral STOP Mode SLEEP Mode CPU Stop Stop RAM Retain Retain Basic Interval Timer Halted Operates Continuously Watchdog Timer Stop (Only operates in RC-WDT mode) Stop Watch Timer Stop Stop Timer/Counter Halted(Only when the event counter mode is enabled, timer operates normally) Operates Continuously Buzzer, ADC Stop Stop SIO Only operate with external clock Only operate with external clock UART Only operate with external clock Only operate with external clock Oscillator Stop(XIN=L, XOUT=H) Oscillation Sub Oscillator Oscillation Oscillation I/O Ports Retain Retain Control Registers Retain Retain Internal Circuit Stop mode Sleep mode Prescaler Retain Active Address Data Bus Retain Retain Release Source Reset, Timer(EC0,1), SIO, UART0(using ACLK0), UART1(using ACLK1) Watch Timer( RC-WDT mode), Watchdog Timer( RC-WDT mode), External Interrupt Reset, All Interrupts Table 21-1 Peripheral Operation During Power Saving Mode Release the STOP mode The source for exit from STOP mode is hardware reset, external interrupt, Timer(EC0,1), Watch Timer, WDT, SIO or UART. Reset re-defines all the Control registers but does not change the onchip RAM. External interrupts allow both on-chip RAM and Control registers to retain their values. If I-flag = 1, the normal interrupt response takes place. If I-flag = MAR. 2005 Ver 0.2 0, the chip will resume execution starting with the instruction following the STOP instruction. It will not vector to interrupt service routine. (refer to Figure 21-4) When exit from Stop mode by external interrupt, enough oscillation stabilization time is required to normal operation. Figure 215 shows the timing diagram. When released from the Stop mode, the Basic interval timer is activated on wake-up. It is increased from 00H until FFH. The count overflow is set to start normal op- 97 MC80F0208/16/24 Preliminary By reset, exit from Stop mode is shown in Figure 21-6. eration. Therefore, before STOP instruction, user must be set its relevant prescaler divide ratio to have long enough time (more than 20msec). This guarantees that oscillator has started and stabilized. STOP INSTRUCTION STOP Mode Interrupt Request Corresponding Interrupt Enable Bit (IENH, IENL) =0 IENH or IENL ? =1 STOP Mode Release Master Interrupt Enable Bit PSW[2] I-FLAG =0 =1 Interrupt Service Routine Next INSTRUCTION Figure 21-4 STOP Releasing Flow by Interrupts . ~ ~ ~ ~ ~ ~ Oscillator (XIN pin) ~ ~ ~ ~ Internal Clock ~ ~ STOP Instruction Executed n+1 n+2 n+3 0 1 ~ ~ ~ ~ n ~ ~ ~ ~ BIT Counter ~ ~ External Interrupt FE FF 0 1 2 Clear Normal Operation Stop Operation Stabilization Time tST > 20ms by software Normal Operation Before executing Stop instruction, Basic Interval Timer must be set properly by software to get stabilization time which is longer than 20ms. Figure 21-5 STOP Mode Release Timing by External Interrupt 98 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 STOP Mode ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Internal RESET ~ ~ RESET ~ ~ Internal Clock ~ ~ ~ ~ Oscillator (XI pin) STOP Instruction Execution Time can not be control by software Stabilization Time tST = 65.5mS @4MHz Figure 21-6 Timing of STOP Mode Release by Reset 21.3 Stop Mode at Internal RC-Oscillated Watchdog Timer Mode In the Internal RC-Oscillated Watchdog Timer mode, the on-chip oscillator is stopped. But internal RC oscillation circuit is oscillated in this mode. The on-chip RAM and Control registers are held. The port pins out the values held by their respective port data register, port direction registers. The Internal RC-Oscillated Watchdog Timer mode is activated by execution of STOP instruction after setting the bit RCWDT of CKCTLR to "1". (This register should be written by byte operation. If this register is set by bit manipulation instruction, for example "set1" or "clr1" instruction, it may be undesired operation) Note: Caution: After STOP instruction, at least two or more NOP instruction should be written Ex) LDM WDTR,#1111_1111B LDM CKCTLR,#0010_1110B LDM SSCR,#0101_1010B STOP NOP ;for stabilization time NOP ;for stabilization time The exit from Internal RC-Oscillated Watchdog Timer mode is hardware reset or external interrupt or watchdog timer interrupt MAR. 2005 Ver 0.2 (at RC-watchdog timer mode). Reset re-defines all the Control registers but does not change the on-chip RAM. External interrupts allow both on-chip RAM and Control registers to retain their values. If I-flag = 1, the normal interrupt response takes place. In this case, if the bit WDTON of CKCTLR is set to "0" and the bit WDTE of IENH is set to "1", the device will execute the watchdog timer interrupt service routine(Figure 8-6). However, if the bit WDTON of CKCTLR is set to "1", the device will generate the internal Reset signal and execute the reset processing(Figure 21-8). If I-flag = 0, the chip will resume execution starting with the instruction following the STOP instruction. It will not vector to interrupt service routine.(refer to Figure 21-4) When exit from Stop mode at Internal RC-Oscillated Watchdog Timer mode by external interrupt, the oscillation stabilization time is required to normal operation. Figure 21-7 shows the timing diagram. When release the Internal RC-Oscillated Watchdog Timer mode, the basic interval timer is activated on wake-up. It is increased from 00H until FFH. The count overflow is set to start normal operation. Therefore, before STOP instruction, user must be set its relevant prescaler divide ratio to have long enough time (more than 20msec). This guarantees that oscillator has started and stabilized. By reset, exit from internal RC-Oscillated Watchdog Timer mode is shown in Figure 21-8. 99 MC80F0208/16/24 Preliminary ~ ~ ~ ~ ~ ~ Oscillator (XIN pin) Internal RC Clock ~ ~ ~ ~ Internal Clock ~ ~ External Interrupt ( or WDT Interrupt ) ~ ~ STOP Instruction Execution ~ ~ N-2 N-1 N N+1 N+2 00 01 FE FF 00 00 ~ ~ BIT Counter Clear Basic Interval Timer Normal Operation STOP mode at RC-WDT Mode Stabilization Time tST > 20mS Normal Operation Figure 21-7 Stop Mode Release at Internal RC-WDT Mode by External Interrupt or WDT Interrupt RCWDT Mode ~ ~ ~ ~ ~ ~ Oscillator (XIN pin) Internal RC Clock ~ ~ ~ ~ ~ ~ RESET ~ ~ Internal Clock RESET by WDT ~ ~ STOP Instruction Execution Time can not be control by software ~ ~ Internal RESET Stabilization Time tST = 65.5mS @4MHz Figure 21-8 Internal RC-WDT Mode Releasing by Reset 100 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 21.4 Minimizing Current Consumption The Stop mode is designed to reduce power consumption. To minimize current drawn during Stop mode, the user should turn- off output drivers that are sourcing or sinking current, if it is practical. VDD INPUT PIN INPUT PIN VDD VDD internal pull-up VDD i=0 O OPEN O i i GND Very weak current flows VDD X X i=0 O OPEN Weak pull-up current flows GND O When port is configured as an input, input level should be closed to 0V or 5V to avoid power consumption. Figure 21-9 Application Example of Unused Input Port OUTPUT PIN OUTPUT PIN VDD ON OPEN OFF ON OFF ON O OFF i VDD GND X ON OFF L OFF ON i GND X O VDD L i=0 GND O In the left case, Tr. base current flows from port to GND. To avoid power consumption, there should be low output to the port . In the left case, much current flows from port to GND. Figure 21-10 Application Example of Unused Output Port Note: In the STOP operation, the power dissipation associated with the oscillator and the internal hardware is lowered; however, the power dissipation associated with the pin interface (depending on the external circuitry and program) is not directly determined by the hardware operation of the STOP feature. This point should be little current flows when the input level is stable at the power voltage level (VDD/VSS); however, when the input level becomes higher MAR. 2005 Ver 0.2 than the power voltage level (by approximately 0.3V), a current begins to flow. Therefore, if cutting off the output transistor at an I/O port puts the pin signal into the highimpedance state, a current flow across the ports input transistor, requiring it to fix the level by pull-up or other means. It should be set properly in order that current flow through port doesn't exist. First consider the port setting to input mode. Be sure that there is 101 MC80F0208/16/24 Preliminary no current flow after considering its relationship with external circuit. In input mode, the pin impedance viewing from external MCU is very high that the current doesn’t flow. But input voltage level should be VSS or VDD. Be careful that if unspecified voltage, i.e. if uncertain voltage level (not VSS or VDD) is applied to input pin, there can be little current (max. 1mA at around 2V) flow. 102 If it is not appropriate to set as an input mode, then set to output mode considering there is no current flow. The port setting to High or Low is decided by considering its relationship with external circuit. For example, if there is external pull-up resistor then it is set to output mode, i.e. to High, and if there is external pulldown register, it is set to low. MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 22. OSCILLATOR CIRCUIT The MC80F0208/16/24 have oscillation circuits internally. XIN and XOUT are input and output for frequency. Respectively, in- verting amplifier which can be configured for being used as an on-chip oscillator, as shown in Figure 22-1. C1 XOUT C2 8MHz Open XIN XOUT VSS External Clock XIN Recommended Crystal Oscillator C1,C2 = 20pF ± 10pF Ceramic Resonator C1,C2 = 20pF ± 10pF External Oscillator Crystal or Ceramic Oscillator Figure 22-1 Oscillation Circuit Oscillation circuit is designed to be used either with a ceramic resonator or crystal oscillator. Since each crystal and ceramic resonator have their own characteristics, the user should consult the crystal manufacturer for appropriate values of external components. In addition, see Figure 22-2 for the layout of the crystal. XOUT Note: Minimize the wiring length. Do not allow the wiring to intersect with other signal conductors. Do not allow the wiring to come near changing high current. Set the potential of the grounding position of the oscillator capacitor to that of VSS. Do not ground it to any ground pattern where high current is present. Do not fetch signals from the oscillator. XIN Figure 22-2 Layout of Oscillator PCB circuit MAR. 2005 Ver 0.2 103 MC80F0208/16/24 Preliminary 23. RESET The MC80F0208/16/24 have four types of reset generation procedures; they are an external reset input, a watch-dog timer reset, On-chip Hardware Initial Value On-chip Hardware Initial Value (FFFFH) - (FFFEH) Peripheral clock Off (RPR) 0 Watchdog timer Disable (G) 0 Control registers Refer to Table 8-1 on page 27 Program counter RAM page register power fail processor reset, and address fail reset. Table 23-1 shows on-chip hardware initialization by reset action. (PC) G-flag Operation mode Main-frequency clock Power fail detector Disable Table 23-1 Initializing Internal Status by Reset Action External Reset Input The reset input is the RESET pin, which is the input to a Schmitt Trigger. A reset in accomplished by holding the RESET pin low for at least 8 oscillator periods, within the operating voltage range and oscillation stable, it is applied, and the internal state is initialized. After reset, 65.5ms (at 4 MHz) add with 7 oscillator periods are required to start execution as shown in Figure 23-2. VCC 10kΩ to the RESET pin 7036P + Internal RAM is not affected by reset. When VDD is turned on, the RAM content is indeterminate. Therefore, this RAM should be initialized before read or tested it. 10uF When the RESET pin input goes to high, the reset operation is released and the program execution starts at the vector address stored at addresses FFFEH - FFFFH. Figure 23-1 Simple Power-on-Reset Circuit A connection for simple power-on-reset is shown in Figure 23-1. 1 ? ? 4 5 6 7 ~ ~ ? FFFE FFFF Start ? ~ ~ ~ ~ ? ? ? ? FE ADL ADH OP ~ ~ DATA BUS 3 ~ ~ RESET ADDRESS BUS 2 ~ ~ Oscillator (XIN pin) Stabilization Time tST =65.5mS at 4MHz Reset Process Step tST = 1 fXIN ÷1024 MAIN PROGRAM x 256 Figure 23-2 Timing Diagram after Reset Address Fail Reset The Address Fail Reset is the function to reset the system by checking code access of abnormal and unwished address caused by erroneous program code itself or external noise, which could 104 not be returned to normal operation and would become malfunction state. If the CPU tries to fetch the instruction from ineffective code area or RAM area, the address fail reset is occurred. Please refer to Figure 11-2 for setting address fail option. MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 24. POWER FAIL PROCESSOR The MC80F0208/16/24 has an on-chip power fail detection circuitry to immunize against power noise. A configuration register, PFDR, can enable or disable the power fail detect circuitry. Whenever VDD falls close to or below power fail voltage for 100ns, the power fail situation may reset or freeze MCU according to PFDM bit of PFDR. Refer to “Figure 24-1 Power Fail Voltage Detector Register” on page 105. Note: If power fail voltage is selected to 2.4V or 2.7V on below 3V operation, MCU is freezed at all the times. In the in-circuit emulator, power fail function is not implemented and user can not experiment with it. Therefore, after final development of user program, this function may be experimented or evaluated. Power Fail Function FLASH MASK Enable/Disable PFDEN flag PFDEN flag Level Selection PFS0 bit PFS1 bit Mask option Table 24-1 Power fail processor Note: User can select power fail voltage level according to PFS0, PFS1 bit of CONFIG register(703FH) at the FLASH (MC80F0208/16/24) but must select the power fail voltage level to define PFD option of "Mask Order & Verification Sheet" at the mask chip(MC80C0208/16/24), because the power fail voltage level of mask chip (MC80C0208/16/24) is determined according to mask option. PFDR 7 - 6 - 5 - 4 - 3 - R/W 2 R/W 1 R/W 0 PFDEN PFDM PFDS ADDRESS: 0F7H INITIAL VALUE: ---- -000B Power Fail Status 0: Normal operate 1: Set to “1” if power fail is detected PFD Operation Mode 0 : MCU will be frozen by power fail detection 1 : MCU will be reset by power fail detection * Cautions : Be sure to set bits 3 through 7 to “0”. PFD Enable Bit 0: Power fail detection disable 1: Power fail detection enable Figure 24-1 Power Fail Voltage Detector Register MAR. 2005 Ver 0.2 105 MC80F0208/16/24 Preliminary RESET VECTOR PFDS =1 YES NO RAM Clear Initialize RAM Data PFDS = 0 Skip the initial routine Initialize All Ports Initialize Registers Function Execution Figure 24-2 Example S/W of Reset flow by Power fail VDD Internal RESET VPFDMAX VPFDMIN 65.5mS VDD When PFDM = 1 Internal RESET 65.5mS t < 65.5mS VDD Internal RESET VPFDMAX VPFDMIN 65.5mS VPFDMAX VPFDMIN Figure 24-3 Power Fail Processor Situations (at 4MHz operation) 106 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 25. FLASH PROGRAMMING The Device Configuration Area can be programmed or left unprogrammed to select device configuration such as security bit. This area is not accessible during normal execution but is read- CONFIG 7 - 6 - 5 - 4 - 3 - able and writable during FLASH program / verify mode. The Device Configuration Area register is located at the address 20FFH. 2 1 0 PFS1 PFS0 LOCK ADDRESS: 20FFH INITIAL VALUE: 00H Code Protect (Available FLASH version) 0 : Lock Disable 1 : Lock Enable (main cell read protection) PFD Level Selection 00: PFD = 2.7V 01: PFD = 2.7V 10: PFD = 3.0V 11: PFD = 2.4V Figure 25-1 Device Configuration Area 25.1 Lock bit The lock bit exists in Device Configuration Area register. If lock bit is programmed and user tries to read FLASH memory cell, the output data from the data port is 5AH that means the normal pro- tection operation of user program data.Once the lock bit is programmed, the user can't modify and read the data of user program area. 25.2 Power Fail Detector The power fail detection provides 3 level of detection, 2.4V, 2.7V and 3.0V. The default level of detection is 2.7V and this level is applied if user does not select the specific level in FLASH pro- MAR. 2005 Ver 0.2 gramming S/W tools. For more information, Refer to “24. POWER FAIL PROCESSOR” on page 105. 107 ➋ ➎ VDD AVDD GND R67 R65 R63 R61 GND R57 R55 R53 R51 GND R47 R45 R43 R41 GND R37 R35 R33 R31 GND U_Reset GND 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 J_USERB 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 VCC AVDD GND R66 R64 R62 R60 GND R56 R54 R52 R50 GND R46 R44 R42 R40 GND R36 R34 R32 R30 GND U_XOUT GND VDD R70 R72 R74 R76 GND R80 R82 R84 R86 GND R00 R02 R04 R06 GND R10 R12 R14 R16 GND R20 R22 R24 R26 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 J_USERA 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 VDD R71 R73 R75 R77 GND R81 R83 R85 R87 GND R01 R03 R05 R07 GND R11 R13 R15 R17 GND R21 R23 R25 R27 MAR. 2005 Ver 0.2 108 ➊➒ ➌ ➌➍➎➏➐➑ ➍ Preliminary MC80F0208/16/24 26. Emulator EVA. Board Setting ➏ ➐ ➌ ➊ Preliminary MC80F0208/16/24 DIP Switch and VR Setting Before execute the user program, keep in your mind the below configuration DIP S/W ➊ ➋ Description ON/OFF Setting - This connector is only used for a device over 32 PIN. For the MC80F0208/16/24. - This connector is only used for a device under 32 PIN. For the MC80F0204. Must be ON position. ON 1 ON : For the MC80F0208/16/24. OFF : For the MC80F0204. Eva. select switch 2 3 ON OFF OFF ON Use Eva. VDD ➌ Use User’s AVDD These switches select the AVDD source. ON & OFF : Use Eva. VDD OFF & ON : Use User AVDD AVDD pin select switch This switch select the /Reset source. Normally OFF. EVA. chip can be reset by external user target board. ON : Reset is available by either user target system board or Emulator RESET switch. OFF : Reset the MCU by Emulator RESET switch. Does not work from user target board. This switch select the Xout signal on/off. Normally OFF. MCU XOUT pin is disconnected internally in the Emulator. Some circumstance user may connect this circuit. ON : Output XOUT signal OFF : Disconnect circuit SW2 4 5 This switch select Eva. B/D Power supply source. MDS MDS ➍ SW3 Normally MDS. This switch select Eva. B/D Power supply source. 1 USER Use MDS Power ➎ SW4 1 2 USER Use User’s Power This switch select the R22 or SXOUT. This switch select the R21 or SXIN. MAR. 2005 Ver 0.2 These switchs select the Normal I/O port(off) or Sub-Clock (on). It is reserved for the MC80F0448. ON : SXOUT, SXIN OFF : R22, R21 Don’t care (MC80F0208/16/24). 109 MC80F0208/16/24 DIP S/W ➏ SW5 ➐ 110 Preliminary Description 1 2 These switches select the R33 or XIN 3 4 These switches select the R34 or XOUT 5 6 These switches select the R35 or /Reset - This is External oscillation socket(CAN Type. OSC) ON/OFF Setting This switch select the Normal I/O port(on&off) or special function select(off&on). It is reserved for the MC80F0204. ON & OFF : R33,R34,R35 Port selected. OFF & ON : XOUT, XIN , /Reset selected. Don’t care (MC80F0208/16/24). This is for External Clock(CAN Type. OSC). MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 27. IN-SYSTEM PROGRAMMING (ISP) 27.1 Getting Started / Installation The following section details the procedure for accomplishing the installation procedure. 3. Turn your target B/D power switch ON. Your target B/ D must be configured to enter the ISP mode. 1. Connect the serial(RS-232C) cable between a target board and the COM port of your PC. 4. Run the MagnaChip ISP software. 2. Configure the COM port of your PC as following. Baudrate Data bit Parity Stop bit Flow control 5. Press the Reset Button in the ISP S/W. If the status windows shows a message as "Connected", all the conditions for ISP are provided. 115,200 8 No 1 No 27.2 Basic ISP S/W Information MAR. 2005 Ver 0.2 111 MC80F0208/16/24 Preliminary Function Description Load HEX File Load the data from the selected file storage into the memory buffer. Save HEX File Save the current data in your memory buffer to a disk storage by using the Intel Motorolla HEX format. Erase Erase the data in your target MCU before programming it. Blank Check Verify whether or not a device is in an erased or unprogrammed state. Program This button enables you to place new data from the memory buffer into the target device. Read Read the data in the target MCU into the buffer for examination. The checksum will be displayed on the checksum box. Verify Assures that data in the device matches data in the memory buffer. If your device is secured, a verification error is detected. Option Write Progam the configuration data of target MCU. The security locking is performed with this button. Option Set the configuration data of target MCU. The security locking is set with this button. AUTO Erase & Program & Verify. Auto Option Write If selected with check mark, the option write is performed after erasure and write. Edit Buffer Modify the data in the selected address in your buffer memory Fill Buffer Fill the selected area with a data. Goto Display the selected page. OSC. ______ MHz Enter your target system’s oscillator value with discarding below point. Start ______ Starting address End ______ End address Checksum Display the checksum(Hexdecimal) after reading the target device. Com Port Select serial port. Baud Rate Select UART baud rate. Select Device Select target device. Page Up Key Display the previous page of your memory buffer. Page Down Key Display the higher page than the current location. Table 1. ISP Function Description 112 MAR. 2005 Ver 0.2 Preliminary MC80F0208/16/24 27.3 Hardware Conditions to Enter the ISP Mode The In-System Programming (ISP) is performed without removing the microcontroller from the target system. The In-System Programming(ISP) facility consists of a series of internal hardware resources coupled with internal firmware through the serial port. The In-System Programming (ISP) facility has made in-circuit programming in an embedded application possible with a minimum of additional expense in components and circuit board area. The boot loader can be executed by holding ALEB high, RST/VPP as +9V, and ACLK0 with the OSC. 1.8432MHz. The ISP function uses five pins: TxD0, RxD0, ALEB, ACLK0 and RST/VPP. VDD(+5V) VDD RST/VPP RESET XIN XOUT X-TAL 2MHz~12MHz MC80F0208K/16K/24K +9V 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 R47 / TxD0 R46 / RxD0 R45 / ACLK0 R30 ALEB VSS Tx_Data Rx_Data 1.8432MHz VDD ISP Configuration Figure 27-1 ISP Configuration Note: Considerations to implement ISP function in a user target board • The ACLK0 must be connected to the specifed oscillator. • Connect the +9V to RST/Vpp pin directly. • The ALEB pin must be pulled high. • The main clk must be higher than 2MHz. MAR. 2005 Ver 0.2 113 MC80F0208/16/24 Preliminary 27.4 Reference ISP Circuit diagram department. The following circuit diagram is for reference use. 2N2907 TxD DTR + GND VSS VSS + 10kΩ 8.2kΩ + VSS 22Ω 22Ω VSS VDD(+5V) 0.1uF J3 10uF/16V VDD(+5V) VDD VSS VSS 100pF 1uF VDD(+5V) 1 2 3 4 5 6 VSS VSS X1 Vcc J2 RESET/VPP VDD VSS ACLK_CLK MCU_TxD MCU_RxD To MCU + 1uF 100Ω 10uF/35V RxD T1IN 11 T2IN 10 12 R1OUT R2OUT 9 1 C1+ + 1uF 3 C14 C2+ + 1uF 5 C2- 22Ω 1 6 2 7 3 8 4 9 5 14 T1OUT 7 T2OUT 13 R1IN 8 R2IN 2 V+ 16 VCC 6 V15 GND 0.1uF From PC CON1 Female DB9 MAX232 1kΩ VDD(+5V) 100pF The ISP S/W and H/W circuit diagram are provided at www.magnachipmcu.com . To get a ISP B/D, contact to sales 22Ω Out * VDD : +4.5 ~ +5.5V * VPP : VDD + 4V Gnd OSC 1.8432MHz VSS VSS VSS External VDD The ragne of VDD must be from 5.5V to 4.5 and the minimum operation frequency is 2MHz. If the user supplied VDD is out of range, the external power is needed instead of the target system VDD. For the ISP operation, power consumption required is less than 30mA. Figure 27-2 Reference ISP Circuit Diagram Figure 27-3 MagnaChip supplied ISP Board 114 MAR. 2005 Ver 0.2 APPENDIX GMS800 Series A. INSTRUCTION A.1 Terminology List Terminology Description A Accumulator X X - register Y Y - register PSW Program Status Word #imm 8-bit Immediate data dp Direct Page Offset Address !abs Absolute Address [] Indirect expression {} Register Indirect expression { }+ Register Indirect expression, after that, Register auto-increment .bit Bit Position A.bit Bit Position of Accumulator dp.bit Bit Position of Direct Page Memory M.bit rel upage Bit Position of Memory Data (000H~0FFFH) Relative Addressing Data U-page (0FF00H~0FFFFH) Offset Address n Table CALL Number (0~15) + Addition Upper Nibble Expression in Opcode 0 x Bit Position Upper Nibble Expression in Opcode 1 y Bit Position MAR. 2005 − Subtraction × Multiplication / Division () Contents Expression ∧ AND ∨ OR ⊕ Exclusive OR ~ NOT ← Assignment / Transfer / Shift Left → Shift Right ↔ Exchange = Equal ≠ Not Equal i GMS800 Series A.2 Instruction Map LOW 00000 00 HIGH SET1 dp.bit 00010 02 00011 03 BBS BBS A.bit,rel dp.bit,rel 00100 04 00101 05 00110 06 00111 07 01000 08 01001 09 ADC #imm ADC dp ADC dp+X ADC !abs ASL A ASL dp 01010 0A 01011 0B 01100 0C 01101 0D 01110 0E 01111 0F TCALL SETA1 0 .bit BIT dp POP A PUSH A BRK 000 - 001 CLRC SBC #imm SBC dp SBC dp+X SBC !abs ROL A ROL dp TCALL CLRA1 2 .bit COM dp POP X PUSH X BRA rel 010 CLRG CMP #imm CMP dp CMP dp+X CMP !abs LSR A LSR dp TCALL 4 NOT1 M.bit TST dp POP Y PUSH Y PCALL Upage 011 DI OR #imm OR dp OR dp+X OR !abs ROR A ROR dp TCALL 6 OR1 OR1B CMPX dp POP PSW PUSH PSW RET 100 CLRV AND #imm AND dp AND dp+X AND !abs INC A INC dp TCALL AND1 8 AND1B CMPY dp CBNE dp+X TXSP INC X 101 SETC EOR #imm EOR dp EOR dp+X EOR !abs DEC A DEC dp TCALL EOR1 10 EOR1B DBNE dp XMA dp+X TSPX DEC X 110 SETG LDA #imm LDA dp LDA dp+X LDA !abs TXA LDY dp TCALL 12 LDC LDCB LDX dp LDX dp+Y XCN DAS 111 EI LDM dp,#imm STA dp STA dp+X STA !abs TAX STY dp TCALL 14 STC M.bit STX dp STX dp+Y XAX STOP 10011 13 10100 14 10101 15 10110 16 10111 17 11000 18 11001 19 11010 1A 11011 1B 11100 1C 11101 1D 11110 1E 11111 1F ADC {X} ADC !abs+Y ADC [dp+X] ADC [dp]+Y ASL !abs ASL dp+X TCALL 1 JMP !abs BIT !abs ADDW dp LDX #imm JMP [!abs] TEST !abs SUBW dp LDY #imm JMP [dp] TCLR1 CMPW !abs dp CMPX #imm CALL [dp] LOW 10000 HIGH ii 00001 01 10 10001 11 10010 12 000 BPL rel 001 BVC rel SBC {X} SBC !abs+Y SBC [dp+X] SBC [dp]+Y ROL !abs ROL dp+X TCALL 3 CALL !abs 010 BCC rel CMP {X} CMP !abs+Y CMP [dp+X] CMP [dp]+Y LSR !abs LSR dp+X TCALL 5 MUL 011 BNE rel OR {X} OR !abs+Y OR [dp+X] OR [dp]+Y ROR !abs ROR dp+X TCALL 7 DBNE Y CMPX !abs LDYA dp CMPY #imm RETI 100 BMI rel AND {X} AND !abs+Y AND [dp+X] AND [dp]+Y INC !abs INC dp+X TCALL 9 DIV CMPY !abs INCW dp INC Y TAY 101 BVS rel EOR {X} EOR !abs+Y EOR [dp+X] EOR [dp]+Y DEC !abs DEC dp+X TCALL 11 XMA {X} XMA dp DECW dp DEC Y TYA 110 BCS rel LDA {X} LDA !abs+Y LDA [dp+X] LDA [dp]+Y LDY !abs LDY dp+X TCALL 13 LDA {X}+ LDX !abs STYA dp XAY DAA 111 BEQ rel STA {X} STA !abs+Y STA [dp+X] STA [dp]+Y STY !abs STY dp+X TCALL 15 STA {X}+ STX !abs CBNE dp XYX NOP CLR1 BBC BBC dp.bit A.bit,rel dp.bit,rel MAR. 2005 GMS800 Series A.3 Instruction Set Arithmetic / Logic Operation No. 1 Mnemonic ADC #imm Op Code Byte No Cycle No 04 2 2 Add with carry. A←(A)+(M)+C Operation 2 ADC dp 05 2 3 3 ADC dp + X 06 2 4 4 ADC !abs 07 3 4 5 ADC !abs + Y 15 3 5 6 ADC [ dp + X ] 16 2 6 7 ADC [ dp ] + Y 17 2 6 8 ADC { X } 14 1 3 9 AND #imm 84 2 2 Logical AND A← (A)∧(M) 10 AND dp 85 2 3 11 AND dp + X 86 2 4 12 AND !abs 87 3 4 13 AND !abs + Y 95 3 5 14 AND [ dp + X ] 96 2 6 15 AND [ dp ] + Y 97 2 6 16 AND { X } 94 1 3 17 ASL A 08 1 2 18 ASL dp 09 2 4 19 ASL dp + X 19 2 5 20 ASL !abs 18 3 5 21 CMP #imm 44 2 2 22 CMP dp 45 2 3 23 CMP dp + X 46 2 4 24 CMP !abs 47 3 4 25 CMP !abs + Y 55 3 5 26 CMP [ dp + X ] 56 2 6 27 CMP [ dp ] + Y 57 2 6 28 CMP { X } 54 1 3 29 CMPX #imm 5E 2 2 30 CMPX dp 6C 2 3 31 CMPX !abs 7C 3 4 Flag NVGBHIZC NV--H-ZC N-----Z- Arithmetic shift left C 7 6 5 4 3 2 1 0 ← ←←←←←←←← N-----ZC ← “0” Compare accumulator contents with memory contents (A) -(M) N-----ZC Compare X contents with memory contents (X)-(M) N-----ZC 32 CMPY #imm 7E 2 2 33 CMPY dp 8C 2 3 34 CMPY !abs 9C 3 4 35 COM dp 2C 2 4 1’S Complement : ( dp ) ← ~( dp ) N-----Z- 36 DAA DF 1 3 Decimal adjust for addition N-----ZC 37 DAS CF 1 3 Decimal adjust for subtraction N-----ZC 38 DEC A A8 1 2 Decrement N-----Z- 39 DEC dp A9 2 4 40 DEC dp + X B9 2 5 N-----Z- 41 DEC !abs B8 3 5 N-----Z- 42 DEC X AF 1 2 N-----Z- 43 DEC Y BE 1 2 N-----Z- MAR. 2005 Compare Y contents with memory contents (Y)-(M) M← (M)-1 N-----ZC N-----Z- iii GMS800 Series No. Op Code Byte No Cycle No Operation 44 DIV 9B 1 12 Divide : YA / X Q: A, R: Y 45 EOR #imm A4 2 2 Exclusive OR Flag NVGBHIZC NV--H-Z- A← (A)⊕(M) 46 EOR dp A5 2 3 47 EOR dp + X A6 2 4 48 EOR !abs A7 3 4 49 EOR !abs + Y B5 3 5 50 EOR [ dp + X ] B6 2 6 51 EOR [ dp ] + Y B7 2 6 52 EOR { X } B4 1 3 53 INC A 88 1 2 54 INC dp 89 2 4 55 INC dp + X 99 2 5 N-----Z- N-----Z- Increment N-----ZC M← (M)+1 N-----Z- 56 INC !abs 98 3 5 N-----Z- 57 INC X 8F 1 2 N-----Z- 58 INC Y 9E 1 2 N-----Z- 59 LSR A 48 1 2 60 LSR dp 49 2 4 61 LSR dp + X 59 2 5 62 LSR !abs 58 3 5 63 MUL 5B 1 9 Multiply : YA ← Y × A 64 OR #imm 64 2 2 Logical OR 65 OR dp 65 2 3 66 OR dp + X 66 2 4 67 OR !abs 67 3 4 68 OR !abs + Y 75 3 5 69 OR [ dp + X ] 76 2 6 70 OR [ dp ] + Y 77 2 6 71 OR { X } 74 1 3 72 ROL A 28 1 2 73 ROL dp 29 2 4 74 ROL dp + X 39 2 5 75 ROL !abs 38 3 5 76 ROR A 68 1 2 Rotate right through Carry 77 ROR dp 69 2 4 78 ROR dp + X 79 2 5 7 6 5 4 3 2 1 0 →→→→→→→→ 79 ROR !abs 78 3 5 80 SBC #imm 24 2 2 81 SBC dp 25 2 3 82 SBC dp + X 26 2 4 83 SBC !abs 27 3 4 84 SBC !abs + Y 35 3 5 85 SBC [ dp + X ] 36 2 6 86 SBC [ dp ] + Y 37 2 6 87 SBC { X } 34 1 3 88 TST dp 4C 2 3 Test memory contents for negative or zero, ( dp ) - 00H N-----Z- 5 Exchange nibbles within the accumulator A7~A4 ↔ A3~A0 N-----Z- 89 iv Mnemonic XCN CE 1 Logical shift right 7 6 5 4 3 2 1 0 C “0” → → → → → → → → → → N-----ZC N-----Z- A ← (A)∨(M) N-----Z- Rotate left through Carry C 7 6 5 4 3 2 1 0 ←←←←←←←← C N-----ZC N-----ZC Subtract with Carry A ← ( A ) - ( M ) - ~( C ) NV--HZC MAR. 2005 GMS800 Series Register / Memory Operation No. Mnemonic Op Code Byte No Cycle No 1 LDA #imm C4 2 2 2 LDA dp C5 2 3 3 LDA dp + X C6 2 4 4 LDA !abs C7 3 4 5 LDA !abs + Y D5 3 5 6 LDA [ dp + X ] D6 2 6 7 LDA [ dp ] + Y D7 2 6 8 LDA { X } D4 1 3 Operation Flag NVGBHIZC Load accumulator A←(M) N-----Z- 9 LDA { X }+ DB 1 4 X- register auto-increment : A ← ( M ) , X ← X + 1 10 LDM dp,#imm E4 3 5 Load memory with immediate data : ( M ) ← imm 11 LDX #imm 1E 2 2 Load X-register 12 LDX dp CC 2 3 13 LDX dp + Y CD 2 4 14 LDX !abs DC 3 4 15 LDY #imm 3E 2 2 16 LDY dp C9 2 3 17 LDY dp + X D9 2 4 18 LDY !abs D8 3 4 19 STA dp E5 2 4 20 STA dp + X E6 2 5 21 STA !abs E7 3 5 22 STA !abs + Y F5 3 6 23 STA [ dp + X ] F6 2 7 24 STA [ dp ] + Y F7 2 7 25 STA { X } F4 1 4 26 STA { X }+ FB 1 4 X- register auto-increment : ( M ) ← A, X ← X + 1 27 STX dp EC 2 4 Store X-register contents in memory 28 STX dp + Y ED 2 5 29 STX !abs FC 3 5 30 STY dp E9 2 4 31 STY dp + X F9 2 5 32 STY !abs F8 3 5 33 TAX E8 1 2 Transfer accumulator contents to X-register : X ← A N-----Z- 34 TAY 9F 1 2 Transfer accumulator contents to Y-register : Y ← A N-----Z- 35 TSPX AE 1 2 Transfer stack-pointer contents to X-register : X ← sp N-----Z- 36 TXA C8 1 2 Transfer X-register contents to accumulator: A ← X N-----Z- 37 TXSP 8E 1 2 Transfer X-register contents to stack-pointer: sp ← X N-----Z- 38 TYA BF 1 2 Transfer Y-register contents to accumulator: A ← Y N-----Z- X ←(M) -------N-----Z- Load Y-register Y←(M) N-----Z- Store accumulator contents in memory (M)←A -------- (M)← X -------- Store Y-register contents in memory (M)← Y -------- 39 XAX EE 1 4 Exchange X-register contents with accumulator :X ↔ A -------- 40 XAY DE 1 4 Exchange Y-register contents with accumulator :Y ↔ A -------- 41 XMA dp BC 2 5 Exchange memory contents with accumulator 42 XMA dp+X AD 2 6 43 XMA {X} BB 1 5 44 XYX FE 1 4 MAR. 2005 (M)↔A Exchange X-register contents with Y-register : X ↔ Y N-----Z-------- v GMS800 Series 16-BIT operation No. Mnemonic Op Code Byte No Cycle No Operation Flag NVGBHIZC 1 ADDW dp 1D 2 5 16-Bits add without Carry YA ← ( YA ) + ( dp +1 ) ( dp ) NV--H-ZC 2 CMPW dp 5D 2 4 Compare YA contents with memory pair contents : (YA) − (dp+1)(dp) N-----ZC 3 DECW dp BD 2 6 Decrement memory pair ( dp+1)( dp) ← ( dp+1) ( dp) - 1 N-----Z- 4 INCW dp 9D 2 6 Increment memory pair ( dp+1) ( dp) ← ( dp+1) ( dp ) + 1 N-----Z- 5 LDYA dp 7D 2 5 Load YA YA ← ( dp +1 ) ( dp ) N-----Z- 6 STYA dp DD 2 5 Store YA ( dp +1 ) ( dp ) ← YA -------- 7 SUBW dp 3D 2 5 16-Bits subtract without carry YA ← ( YA ) - ( dp +1) ( dp) NV--H-ZC Op Code Byte No Cycle No Bit Manipulation No. vi Mnemonic Operation Flag NVGBHIZC 1 AND1 M.bit 8B 3 4 Bit AND C-flag : C ← ( C ) ∧ ( M .bit ) -------C 2 AND1B M.bit 8B 3 4 Bit AND C-flag and NOT : C ← ( C ) ∧ ~( M .bit ) -------C 3 BIT dp 0C 2 4 Bit test A with memory : MM----Z- Z ← ( A ) ∧ ( M ) , N ← ( M 7 ) , V ← ( M6 ) 4 BIT !abs 1C 3 5 5 CLR1 dp.bit y1 2 4 Clear bit : ( M.bit ) ← “0” -------- 6 CLRA1 A.bit 2B 2 2 Clear A bit : ( A.bit ) ← “0” -------- 7 CLRC 20 1 2 Clear C-flag : C ← “0” -------0 8 CLRG 40 1 2 Clear G-flag : G ← “0” --0----- 9 CLRV 80 1 2 Clear V-flag : V ← “0” -0--0--- 10 EOR1 M.bit AB 3 5 Bit exclusive-OR C-flag : C ← ( C ) ⊕ ( M .bit ) -------C 11 EOR1B M.bit AB 3 5 Bit exclusive-OR C-flag and NOT : C ← ( C ) ⊕ ~(M .bit) -------C 12 LDC M.bit CB 3 4 Load C-flag : C ← ( M .bit ) -------C 13 LDCB M.bit CB 3 4 Load C-flag with NOT : C ← ~( M .bit ) -------C 14 NOT1 M.bit 4B 3 5 Bit complement : ( M .bit ) ← ~( M .bit ) -------- 15 OR1 M.bit 6B 3 5 Bit OR C-flag : C ← ( C ) ∨ ( M .bit ) -------C 16 OR1B M.bit 6B 3 5 Bit OR C-flag and NOT : C ← ( C ) ∨ ~( M .bit ) -------C 17 SET1 dp.bit x1 2 4 Set bit : ( M.bit ) ← “1” -------- 18 SETA1 A.bit 0B 2 2 Set A bit : ( A.bit ) ← “1” -------- 19 SETC A0 1 2 Set C-flag : C ← “1” -------1 20 SETG C0 1 2 Set G-flag : G ← “1” --1----- 21 STC M.bit EB 3 6 Store C-flag : ( M .bit ) ← C -------N-----ZN-----Z- 22 TCLR1 !abs 5C 3 6 Test and clear bits with A : A - ( M ) , ( M ) ← ( M ) ∧ ~( A ) 23 TSET1 !abs 3C 3 6 Test and set bits with A : A-(M), (M)← (M)∨(A) MAR. 2005 GMS800 Series Branch / Jump Operation No. Mnemonic Op Code Byte No Cycle No Operation Flag NVGBHIZC 1 BBC A.bit,rel y2 2 4/6 Branch if bit clear : 2 BBC dp.bit,rel y3 3 5/7 if ( bit ) = 0 , then pc ← ( pc ) + rel 3 BBS A.bit,rel x2 2 4/6 Branch if bit set : 4 BBS dp.bit,rel x3 3 5/7 if ( bit ) = 1 , then pc ← ( pc ) + rel 5 BCC rel 50 2 2/4 Branch if carry bit clear if ( C ) = 0 , then pc ← ( pc ) + rel -------- 6 BCS rel D0 2 2/4 Branch if carry bit set if ( C ) = 1 , then pc ← ( pc ) + rel -------- 7 BEQ rel F0 2 2/4 Branch if equal if ( Z ) = 1 , then pc ← ( pc ) + rel -------- 8 BMI rel 90 2 2/4 Branch if minus if ( N ) = 1 , then pc ← ( pc ) + rel -------- 9 BNE rel 70 2 2/4 Branch if not equal if ( Z ) = 0 , then pc ← ( pc ) + rel -------- 10 BPL rel 10 2 2/4 Branch if minus if ( N ) = 0 , then pc ← ( pc ) + rel -------- 11 BRA rel 2F 2 4 Branch always pc ← ( pc ) + rel -------- 12 BVC rel 30 2 2/4 Branch if overflow bit clear if (V) = 0 , then pc ← ( pc) + rel -------- 13 BVS rel B0 2 2/4 Branch if overflow bit set if (V) = 1 , then pc ← ( pc ) + rel -------- 14 CALL !abs 3B 3 8 Subroutine call 15 CALL [dp] 5F 2 8 M( sp)←( pcH ), sp←sp - 1, M(sp)← (pcL), sp ←sp - 1, if !abs, pc← abs ; if [dp], pcL← ( dp ), pcH← ( dp+1 ) . -------- 16 CBNE dp,rel FD 3 5/7 Compare and branch if not equal : -------- --------------- if ( A ) ≠ ( M ) , then pc ← ( pc ) + rel. 17 CBNE dp+X,rel 8D 3 6/8 18 DBNE dp,rel AC 3 5/7 Decrement and branch if not equal : 19 DBNE Y,rel 7B 2 4/6 if ( M ) ≠ 0 , then pc ← ( pc ) + rel. 20 JMP !abs 1B 3 3 -------- Unconditional jump pc ← jump address 21 JMP [!abs] 1F 3 5 22 JMP [dp] 3F 2 4 23 PCALL upage 4F 2 6 U-page call M(sp) ←( pcH ), sp ←sp - 1, M(sp) ← ( pcL ), sp ← sp - 1, pcL ← ( upage ), pcH ← ”0FFH” . -------- 24 TCALL n nA 1 8 Table call : (sp) ←( pcH ), sp ← sp - 1, M(sp) ← ( pcL ),sp ← sp - 1, pcL ← (Table vector L), pcH ← (Table vector H) -------- MAR. 2005 -------- vii GMS800 Series Control Operation & Etc. No. Mnemonic Op Code Byte No Cycle No Operation 0F 1 8 Software interrupt : B ← ”1”, M(sp) ← (pcH), sp ←sp-1, M(s) ← (pcL), sp ← sp - 1, M(sp) ← (PSW), sp ← sp -1, pcL ← ( 0FFDEH ) , pcH ← ( 0FFDFH) . ---1-0-- Flag NVGBHIZC 1 BRK 2 DI 60 1 3 Disable all interrupts : I ← “0” -----0-- 3 EI E0 1 3 Enable all interrupt : I ← “1” -----1-- 4 NOP FF 1 2 No operation -------- 5 POP A 0D 1 4 sp ← sp + 1, A ← M( sp ) 6 POP X 2D 1 4 sp ← sp + 1, X ← M( sp ) 7 POP Y 4D 1 4 sp ← sp + 1, Y ← M( sp ) 8 POP PSW 6D 1 4 sp ← sp + 1, PSW ← M( sp ) -------restored 9 PUSH A 0E 1 4 M( sp ) ← A , sp ← sp - 1 10 PUSH X 2E 1 4 M( sp ) ← X , sp ← sp - 1 11 PUSH Y 4E 1 4 M( sp ) ← Y , sp ← sp - 1 12 PUSH PSW 6E 1 4 M( sp ) ← PSW , sp ← sp - 1 13 RET 6F 1 5 Return from subroutine sp ← sp +1, pcL ← M( sp ), sp ← sp +1, pcH ← M( sp ) -------- 14 RETI 7F 1 6 Return from interrupt sp ← sp +1, PSW ← M( sp ), sp ← sp + 1, pcL ← M( sp ), sp ← sp + 1, pcH ← M( sp ) restored 15 STOP EF 1 3 Stop mode ( halt CPU, stop oscillator ) -------- viii -------- MAR. 2005 B. MASK ORDER SHEET Mask Order & Verification Sheet MC80C02 - MC Customer should write inside thick line box. 2. Device Information 1. Customer Information Company Name Package MM ) .OTP ROM Size (bytes) DD Mask Data YYYY Order Date Fax: E-mail address: Check Sum 42SDIP ( File Name Application Tel: 44MQFP 8K 16K ( 24K ) Set “00H” in blanked area * PFD Option (24K) A000 H (16K) C000 H (8K) E000 H .OTP file 3.0V 2.7V 2.4V Name & Signature: FFFFH Not use (Please check mark√ into 3. Marking Specification 08 or 16 or 24 Customer’s logo Customer logo is not required. MC80C02XX-MC MC80C02XX-MC YYWW KOREA YYWW KOREA If the customer logo must be used in the special mark, please submit a clean original of the logo. Customer’s part number 4. Delivery Schedule Date Customer sample Risk order Quantity YYYY MM DD YYYY MM DD MagnaChip Confirmation pcs pcs 5. ROM Code Verification Please confirm out verification data. YYYY Verification date: Check sum: Tel: E-mail address: Name & Signature: MM DD YYYY Approval date: MM DD I agree with your verification data and confirm you to make mask set. Fax: Tel: E-mail address: Name & Signature: Fax: )