MAGNACHIP SEMICONDUCTOR INC. 8-BIT SINGLE-CHIP MICROCONTROLLERS HMS81C2012A HMS81C2020A User’s Manual (Ver. 2.00) REVISION HISTORY VERSION 2.00 (SEP. 2004) This book The company name, Hynix Semiconductor Inc. changed to MagnaChip. VERSION 1.02 (JUL. 2004) The operating temperature is extended to the industrial range.(-40°C ~ +85°C) Fixed some errata and typical characteristic graph. VERSION 1.01 (MAR. 2000) Fixed some errata. Version 2.00 Published by MCU Application Team 2004 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. HMS81C2012A/2020A Table of Contents 1. 1. OVERVIEW......................................................1 Description .........................................................1 Features .............................................................1 Development Tools ............................................2 Ordering Information ........................................2 8-bit Capture Mode ......................................... 51 16-bit Capture Mode ....................................... 54 PWM Mode ..................................................... 55 13. 13. ANALOG DIGITAL CONVERTER............ 58 4. 4. PACKAGE DIAGRAM .....................................6 14. 14. SERIAL PERIPHERAL INTERFACE ....... 61 Transmission/Receiving Timing ...................... 63 The method of Serial I/O ................................. 64 The Method to Test Correct Transmission ...... 64 5. 5. PIN FUNCTION................................................8 15. 15. BUZZER FUNCTION ................................ 65 6. 6. PORT STRUCTURES....................................11 16. 16. INTERRUPTS ........................................... 67 Interrupt Sequence .......................................... 69 Multi Interrupt .................................................. 71 External Interrupt ............................................. 72 2. 2. BLOCK DIAGRAM ..........................................3 3. 3. PIN ASSIGNMENT ..........................................4 7. 7. ELECTRICAL CHARACTERISTICS .............14 Absolute Maximum Ratings .............................14 Recommended Operating Conditions ..............14 A/D Converter Characteristics .........................14 DC Electrical Characteristics for Standard Pins(5V) ...........................................................15 DC Electrical Characteristics for High-Voltage Pins ..................................................................16 AC Characteristics ...........................................17 AC Characteristics ...........................................18 Typical Characteristics .....................................19 8. 8. MEMORY ORGANIZATION ..........................21 Registers ..........................................................21 Program Memory .............................................24 Data Memory ...................................................27 Addressing Mode .............................................31 9. 9. I/O PORTS .....................................................35 10. 10. BASIC INTERVAL TIMER.........................39 11. 11. WATCHDOG TIMER .................................41 12. 12. TIMER/EVENT COUNTER ........................44 8-bit Timer / Counter Mode ..............................46 16-bit Timer / Counter Mode ............................50 8-bit Compare Output (16-bit) ..........................51 SEP. 2004 Ver 2.00 17. 17. Power Saving Mode ................................ 74 Operating Mode .............................................. 75 Stop Mode ....................................................... 76 Wake-up Timer Mode ...................................... 77 Internal RC-Oscillated Watchdog Timer Mode 78 Minimizing Current Consumption .................... 79 18. 18. OSCILLATOR CIRCUIT ........................... 81 19. 19. RESET ...................................................... 82 External Reset Input ........................................ 82 Watchdog Timer Reset ................................... 82 20. 20. POWER FAIL PROCESSOR.................... 83 21. 21. OTP PROGRAMMING.............................. 85 DEVICE CONFIGURATION AREA ................. 85 22. A. CONTROL REGISTER LIST......................... i 23. B. INSTRUCTION ............................................ iii Terminology List ................................................ iii Instruction Map ..................................................iv Instruction Set ....................................................v 24. C. MASK ORDER SHEET ............................... xi HMS81C2012A/2020A HMS81C2012A/HMS81C2020A CMOS Single-Chip 8-Bit Microcontroller with A/D Converter & VFD Driver 1. OVERVIEW 1.1 Description The HMS81C2012A and HMS81C2020Aare advanced CMOS 8-bit microcontroller with 12K/20K bytes of ROM. These are a powerful microcontroller which provides a highly flexible and cost effective solution to many VFD applications. These provide the following standard features: 12K/20K bytes of ROM, 448 bytes of RAM, 8-bit timer/counter, 8-bit A/D converter, 10-bit High Speed PWM Output, Programmable Buzzer Driving Port, 8-bit Basic Interval Timer, 7-bit Watch dog Timer, Serial Peripheral Interface, on-chip oscillator and clock circuitry. They also come with high voltage I/O pins that can directly drive a VFD (Vacuum Fluorescent Display). In addition, the HMS81C2012A and HMS81C2020A support power saving modes to reduce power consumption. Device name ROM Size HMS81C2012A 12K bytes HMS81C2020A 20K bytes RAM Size 448 bytes OTP Package - 64SDIP, 64MQFP, 64LQFP GMS87C2020 1.2 Features • 20K/12K bytes ROM(EPROM) • 448 Bytes of On-Chip Data RAM (Including STACK Area) • Minimum Instruction Execution time: - 1uS at 4MHz (2cycle NOP Instruction) • One 8-bit Basic Interval Timer • One 7-bit Watch Dog Timer • Two 8-bit Timer/Counters • 10-bit High Speed PWM Output • One 8-bit Serial Peripheral Interface • Two External Interrupt Ports • One Programmable 6-bit Buzzer Driving Port • 57 I/O Lines - 56 Programmable I/O pins (Included 30 high-voltage pins Max. 40V) - 1 Input only pin (high-voltage pin) • Eight Interrupt Sources - Two External Sources (INT0, INT1) - Two Timer/Counter Sources (Timer0, Timer1) - Four Functional Sources (SPI,ADC,WDT,BIT) SEP. 2004 Ver 2.00 • 12-Channel 8-bit On-Chip Analog to Digital Converter • Oscillator: - Crystal - Ceramic Resonator - External R Oscillator • Low Power Dissipation Modes - STOP mode - Wake-up Timer Mode - Standby Mode - Watch Mode - Sub-active Mode • Operating Voltage: 2.7V ~ 5.5V (@ 1M ~ 6MHz) 4.5V ~ 5.5V (@ 1M ~ 8MHz) • Sub-clock: 32.768KHz Crystal Oscillator • Enhanced EMS Improvement Power Fail Processor (Noise Immunity Circuit) 1 HMS81C2012A/2020A 1.3 Development Tools The HMS81C20xxA are supported by a full-featured macro assembler, an in-circuit emulator CHOICE-Dr.TM and OTP programmers. There are third different type programmers such as emulator add-on board type, single type, gang type. For mode detail, Refer to “21. OTP PROGRAMMING” on page 86. Macro assembler operates under the MS-Windows 95/98TM. Please contact sales part of MagnaChip Semiconductor. In Circuit Emulators CHOICE-Dr. Socket Adapter for OTP OA87C20XX-64SD (64SDIP) OA87C20XX-64QF (64MQFP) OA87C20XX-64QT (64LQFP) POD CHPOD81C20D-64SD (64SDIP) Assembler MagnaChip Macro Assembler 1.4 Ordering Information Device name Mask version (After 2003 oct. product available) OTP version (After 2003 oct. product available) 2 ROM Size RAM size Package HMS81C2012A K HMS81C2012A Q HMS81C2012A LQ HMS81C2020A K HMS81C2020A Q HMS81C2020A LQ 12K bytes 12K bytes 12K bytes 20K bytes 20K bytes 20K bytes 448 bytes 448 bytes 448 bytes 448 bytes 448 bytes 448 bytes 64SDIP 64MQFP 64LQFP 64SDIP 64MQFP 64LQFP GMS87C2020 K GMS87C2020 Q GMS87C2020 LQ 20K bytes OTP 20K bytes OTP 20K bytes OTP 448 bytes 448 bytes 448 bytes 64SDIP 64MQFP 64LQFP SEP. 2004 Ver 2.00 HMS81C2012A/2020A 2. BLOCK DIAGRAM R07 R06 R05 R04 R03/BUZO R02/EC0 R01/INT1 R00/INT0 AVDD AVSS ADC Power Supply Driver Buzzer PSW ALU R0 A X R10~R17 R20~R27 R30~R35 R1 R2 R3 Y Stack Pointer Vdisp/RA RA PC Data Memory (448 bytes) Program Memory Interrupt Controller Data Table 8-bit Basic Interval Timer System controller System Clock Controller Sub System Clock Controller Watchdog Timer 8-bit Timer/ Counter 8-bit serial Interface 10-bit PWM PC 8-bit ADC Timing generator Clock Generator VDD VSS SXIN SXOUT XOUT XIN RESET R4 Power Supply R40 / T0O R41 R42 R43 R5 R50 R51 R52 R53 / SCLK R54 / SIN R55 / SOUT R56 / PWM1O/T1O R57 R6 R60 / AN0 R61 / AN1 R62 / AN2 R63 / AN3 R64 / AN4 R65 / AN5 R66 / AN6 R67 / AN7 R7 R70 / AN8 R71 / AN9 R72 / AN10 R73 / AN11 High Voltage Port SEP. 2004 Ver 2.00 3 HMS81C2012A/2020A 3. PIN ASSIGNMENT 64SDIP T0O SCLK SIN SOUT PWM1O/T1O AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 AN10 AN11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 HMS81C2012A/20 SXIN SXOUT R40 R41 R42 R43 R50 R51 R52 R53 R54 R55 R56 R57 RESET XI XO VSS R74 R75 AVSS R60 R61 R62 R63 R64 R65 R66 R67 R70 R71 R72 R73 AVDD 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 RA R35 R34 R33 R32 R31 R30 R27 R26 R25 R24 R23 R22 R21 R20 R17 R16 R15 R14 R13 R12 R11 R10 R07 R06 R05 R04 R03 R02 R01 R00 VDD Vdisp BUZO EC0 INT1 INT0 52 53 54 55 56 57 58 59 60 61 62 63 64 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 HMS81C2012A/20 32 31 30 29 28 27 26 25 24 23 22 21 20 R04 R03 R02 R01 R00 VDD AVDD R73 R72 R71 R70 R67 R66 BUZO EC0 INT1 INT0 AN11 AN10 AN9 AN8 AN7 AN6 SCLK SIN SOUT PWM1O/T1O R52 R53 R54 R55 R56 R57 RESET XI XO VSS SXI R74 SXO R75 AVSS AN0 R60 AN1 R61 AN2 R62 AN3 R63 AN4 R64 AN5 R65 Vdisp T0O R30 R31 R32 R33 R34 R35 RA R40 R41 R42 R43 R50 R51 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 R27 R26 R25 R24 R23 R22 R21 R20 R17 R16 R15 R14 R13 R12 R11 R10 R07 R06 R05 64MQFP High Voltage Port 4 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 R26 R25 R24 R23 R22 R21 R20 R17 R16 R15 R14 R13 R12 R11 R10 R07 64LQFP Vdisp T0O 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 HMS81C2012A/20 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 R06 R05 R04 R03 R02 R01 R00 VDD AVDD R73 R72 R71 R70 R67 R66 R65 BUZO EC0 INT1 INT0 AN11 AN10 AN9 AN8 AN7 AN6 AN5 SIN SOUT PWM1O/T1O R54 R55 R56 R57 RESET XIN XOUT VSS R74 SXIN R75 SXOUT AVSS R60 AN0 R61 AN1 R62 AN2 R63 AN3 R64 AN4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SCLK R27 R30 R31 R32 R33 R34 R35 RA R40 R41 R42 R43 R50 R51 R52 R53 High Voltage Port SEP. 2004 Ver 2.00 5 HMS81C2012A/2020A 4. PACKAGE DIAGRAM 64SDIP UNIT: INCH 0.750 BSC min. 0.015 0.205 max. 2.280 2.260 0.070 BSC 0.140 0.120 0.050 0.030 0.022 0.016 0.680 0.660 0.012 0.008 0-15° 64MQFP 24.15 23.65 20.10 19.90 18.15 17.65 14.10 13.90 UNIT: MM 0.36 0.10 SEE DETAIL "A" 3.18 max. 1.95 REF 0.50 0.35 6 1.03 0.73 0.23 0.13 0-7° 1.00 BSC DETAIL "A" SEP. 2004 Ver 2.00 HMS81C2012A/2020A 64LQFP 12.00 BSC 10.00 BSC 1.45 1.35 10.00 BSC 12.00 BSC UNIT: MM 0-7° 0.15 0.05 SEE DETAIL "A" 1.60 max. 0.38 0.22 SEP. 2004 Ver 2.00 0.50 BSC 0.75 0.45 1.00 REF DETAIL "A" 7 HMS81C2012A/2020A 5. PIN FUNCTION tions of the following special features. VDD: Supply voltage. VSS: Circuit ground. AVDD: Supply voltage to the ladder resistor of ADC circuit. To enhance the resolution of analog to digital converter, use independent power source as well as possible, other than digital power source. AVSS: ADC circuit ground. RESET: Reset the MCU. XIN: Input to the inverting oscillator amplifier and input to the internal clock operating circuit. XOUT: Output from the inverting oscillator amplifier. RA(Vdisp): RA is one-bit high-voltage input only port pin. In addition, RA serves the functions of the Vdisp special features. Vdisp is used as a high-voltage input power supply pin when selected by the mask option. Port pin RA Alternate function Vdisp (High-voltage input power supply) R00~R07: R0 is an 8-bit high-voltage CMOS bidirectional I/O port. R0 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. In addition, R0 serves the functions of the various following special features. Port pin R00 R01 R02 R03 Alternate function INT0 (External interrupt 0) INT1 (External interrupt 1) EC0 (Event counter input) BUZO (Buzzer driver output) R10~R17: R1 is an 8-bit high-voltage CMOS bidirectional I/O port. R1 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. R20~R27: R2 is an 8-bit high-voltage CMOS bidirectional I/O port. R2 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. R30~R35: R3 is a 6-bit high-voltage CMOS bidirectional I/O port. R3 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. R40~R43: R4 is a 4-bit CMOS bidirectional I/O port. R4 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. In addition, R4 serves the func- 8 Port pin R40 Alternate function T0O (Timer/Counter 0 output) R50~R57: R5 is an 8-bit CMOS bidirectional I/O port. R5 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. In addition, R5 serves the functions of the various following special features. Port pin R53 R54 R55 R56 Alternate function SCLK (Serial clock) SIN (Serial data input) SOUT (Serial data output) PWM1O (PWM1 Output) T1O (Timer/Counter 1 output) R60~R67: R6 is an 8-bit CMOS bidirectional I/O port. R6 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. In addition, R6 is shared with the ADC input. Port pin R60 R61 R62 R63 R64 R66 R66 R67 Alternate function AN0 (Analog Input 0) AN1 (Analog Input 1) AN2 (Analog Input 2) AN3 (Analog Input 3) AN4 (Analog Input 4) AN5 (Analog Input 5) AN6 (Analog Input 6) AN7 (Analog Input 7) R70~R73: R7 is a 4-bit CMOS bidirectional I/O port. R6 pins 1 or 0 written to the Port Direction Register can be used as outputs or inputs. In addition, R7 is shared with the ADC input. Port pin R70 R71 R72 R73 Alternate function AN8 (Analog Input 8) AN9 (Analog Input 9) AN10 (Analog Input 10) AN11 (Analog Input 11) SXIN: Input to the internal subsystem clock operating circuit. In addition, SXIN serves the R74 pin when selected by the code option. *R74 has a Pull-up circuit. SXOUT: Output from the inverting subsystem oscillator amplifier. In addition, SXOUT serves the R75 pin when SEP. 2004 Ver 2.00 HMS81C2012A/2020A selected by the code option. *R75 has a Pull-up circuit. Port pin Alternate function SXI SXO R74(Included Internal Pull-up Resister) R75(Included Internal Pull-up Resister) SEP. 2004 Ver 2.00 9 HMS81C2012A/2020A PIN NAME Function In/Out Basic VDD - Supply voltage VSS - Circuit ground RA (Vdisp) I(I) 1-bit high-voltage Input only port RESET I Reset signal input XIN I Oscillation input XOUT O Oscillation output SXIN(R74) I Sub Oscillation input SXOUT(R75) O Sub Oscillation output Alternate High-voltage input power supply pin General I/O ports R00 (INT0) I/O (I) External interrupt 0 input R01 (INT1) I/O (I) External interrupt 1 input R02 (EC0) I/O (I) R03 (BUZO) I/O (O) 8-bit high-voltage I/O ports Buzzer driving output R04~R07 I/O R10~R17 I/O 8-bit high-voltage I/O ports R20~R27 I/O 8-bit high-voltage I/O ports R30~R35 I/O 6-bit high-voltage I/O ports R40 (T0O) I/O (O) R41~R43 I/O R50~R52 I/O R53 (SCLK) I/O (I) R55 (SOUT) I/O (O) R56 (PWM1O/T1O) I/O (O) R57 4-bit general I/O ports I/O (I/O) R54 (SIN) Timer/Counter 0 external input Timer/Counter 0 output Serial clock source Serial data input 8-bit general I/O ports Serial data output PWM 1 pulse output /Timer/Counter 1 output I/O R60~R67 (AN0~AN7) I/O (I) 8-bit general I/O ports R70~R73 (AN8~AN11) I/O (I) 4-bit general I/O ports AVDD - Supply voltage input pin for ADC AVSS - Ground level input pin for ADC VDD - Supply voltage VSS - Circuit ground Analog voltage input Table 5-1 HMS81C2020A Port Function Description 10 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 6. PORT STRUCTURES R53/SCLK R41~R43, R50~R52, R57 VDD Pull-up Tr. VDD Selection Mask Option N-MOS Open Drain Select VDD Pull-up Tr. SCLK Output MUX Data Reg. Data Bus Mask Option VDD Data Reg. Pin Data Bus Dir. Reg. VSS Direction Reg. Pin Rd VSS Rd R00/INT0, R01/INT1, R02/EC0 Selection SCLK Input VDD Data Bus Data Reg. R54/SIN Mask Option Dir. Reg. Pin Selection VDD Pull-up Tr. N-MOS Open Drain Select Rd Vdisp VDD Data Reg. Data Bus EX) INT0 Alternate Function R40/T0O Direction Reg. Mask Option Pin Rd VSS VDD Selection VDD Secondary Function Pull-up Tr. Mask Option SIN Input MUX Pin Data Bus Data Reg. VSS Direction Reg. Rd SEP. 2004 Ver 2.00 11 HMS81C2012A/2020A R55/SOUT RESET Selection N-MOS Open Drain Select VDD Pull-up Tr. SOUT output Mask Option MUX OTP :disconnected Main :connected RESET VDD Data Reg. Direction Reg. Data Bus VDD VSS Pin IOSWB VSS SXIN, SXOUT Rd IOSWIN Input VDD SXOUT RA/Vdisp VDD SXIN Data bus Rd Stop Subclk Off Mask Option Vdisp XIN, XOUT R04~R07, R10~R17, R20~R27, R30~R35 VDD Data Bus Data Reg. Dir. Reg. VDD Mask Option Pin Stop Mainclk Off XIN Vdisp Rd 12 XOUT VSS SEP. 2004 Ver 2.00 HMS81C2012A/2020A R60~R67/AN0~AN7, R70~R73/AN8~AN11 R74, R75 VDD VDD Pull-up Tr. Data Bus Data Reg. VDD Data Reg. Pin Dir. Reg. VDD Direction Reg. Data Bus VSS Mask Option Pin VSS Rd Rd R03/BUZO A/D Converter Analog Input Mode A/D Ch. Selection Selection Secondary Function VDD MUX Data Bus Data Reg. Mask Option Dir. Reg. Pin Vdisp Rd R56/PWM1O/T1O Selection N-MOS Open Drain Select VDD Pull-up Tr. SOUT output MUX VDD Data Bus Data Reg. Direction Reg. Mask Option Pin VSS Rd SEP. 2004 Ver 2.00 13 HMS81C2012A/2020A 7. ELECTRICAL CHARACTERISTICS 7.1 Absolute Maximum Ratings Supply voltage ............................................. -0.3 to +7.0 V Maximum output current sourced by (IOH per I/O Pin) ................................................................................... 8 mA Storage Temperature .................................... -40 to +85 °C Maximum current (ΣIOL) ...................................... 100 mA Voltage on Normal voltage pin with respect to Ground (VSS) ..............................................................-0.3 to VDD+0.3 V Maximum current (ΣIOH)........................................ 50 mA 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 the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. Voltage on High voltage pin with respect to Ground (VSS) ............................................................ -45V to VDD+0.3 V Maximum current out of VSS pin .......................... 150 mA Maximum current into VDD pin .............................. 80 mA Maximum current sunk by (IOL per I/O Pin) .......... 20 mA 7.2 Recommended Operating Conditions Parameter Symbol Supply Voltage VDD Operating Frequency fXIN Operating Temperature TOPR Condition Specifications Unit Min. Max. fXI = 4.5 MHz 2.7 5.5 V fXI = 8MHz 4.5 5.5 V VDD = 2.7V~5.5V 1 6 MHz VDD = 4.5V~5.5V 1 8 MHz -40 85 °C 7.3 A/D Converter Characteristics (TA=25°C, VDD=5V, VSS=0V, AVDD=5.12V, AVSS=0V @fXIN =4MHz) Parameter Symbol Condition Specifications Unit Min. Typ.1 Max. AVDD AVSS - AVDD V VAN AVSS-0.3 AVDD+0.3 V Current Following Between AVDD and AVSS IAVDD - - 200 uA Overall Accuracy CAIN - - ±2 LSB Non-Linearity Error NNLE - - ±2 LSB Differential Non-Linearity Error NDNLE - - ±2 LSB Zero Offset Error NZOE - - ±2 LSB Full Scale Error NFSE - - ±2 LSB Gain Error NNLE - - ±2 LSB Analog Power Supply Input Voltage Range Analog Input Voltage Range 14 SEP. 2004 Ver 2.00 HMS81C2012A/2020A Parameter Conversion Time Symbol Condition TCONV fXIN=4MHz Specifications Min. Typ.1 Max. - - 20 Unit us 1. Data in “Typ” column is at 25°C unless otherwise stated. These parameters are for design guidance only and are not tested. SEP. 2004 Ver 2.00 15 HMS81C2012A/2020A 7.4 DC Electrical Characteristics for Standard Pins(5V) (VDD = 5.0V ± 10%, VSS = 0V, TA = -40 ~ 85°C, fXIN = 4 MHz, Vdisp = VDD-40V to VDD), Parameter Pin Symbol Test Condition XIN, SXIN VIH1 External Clock RESET,SIN,R55,SCLK, INT0&1,EC0 Specification Min Typ.1 Max 0.9VDD VDD+0.3 VIH2 0.8VDD VDD+0.3 R40~R43,R5,R6,R70~R73 VIH3 0.7VDD VDD+0.3 XIN, SXIN VIL1 -0.3 0.1VDD RESET,SIN,R55,SCLK, INT0&1,EC0 VIL2 -0.3 0.2VDD R40~R43,R5,R6,R70~R73 VIL3 -0.3 0.3VDD Output High Voltage R40~R43,R5,R6,R70~R73 BUZO,T0O,PWM1O/T1O, SCLK,SOUT VOH IOH = -0.5mA Output Low Voltage R40~R43,R5,R6,R70~R73 BUZO,T0O,PWM1O/T1O, SCLK,SOUT VOL1 VOL2 IOL = 1.6mA IOL = 10mA Input High Leakage Current R40~R43,R5,R6,R70~R73 IIH1 Input Low Leakage Current R40~R43,R5,R6,R70~R73 IIL1 -1 Input Pull-up Current(*Option) R40~R43,R5,R6,R70~R73 IPU 50 Input High Voltage Input Low Voltage Power Fail Detect Voltage VDD VPFD Current dissipation in active mode VDD IDD Current dissipation in standby mode VDD ISTBY Current dissipation in sub-active mode VDD Current dissipation in watch mode Current dissipation in stop mode External Clock V V VDD-0.5 V 0.4 2 V 1 uA uA 100 180 uA 2.7 V fXIN=8MHz 10 mA fXIN=4.5MHz 8 mA fXIN=8MHz 4 mA fXIN=4.5MHz 3 mA ISUB fXIN = Off fSXIN=32.7KHz 100 uA VDD IWTC fXIN=Off fSXNI=32.7KHz 20 uA VDD ISTOP fXIN=Off fSXIN=32.7KHz 10 uA RESET,SIN,R55,SCLK, INT0,INT1,EC0 VT+~VT- 0.4 Internal RC WDT Frequency XOUT TRCWDT 8 RC Oscillation Frequency XOUT fRCOSC Hysteresis Unit R= 120KΩ 1.5 V 2 30 KHz 2.5 MHz 1. Data in “Typ.” column is at 4.5V, 25°C unless otherwise stated. These parameters are for design guidance only and are not tested. 16 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 7.5 DC Electrical Characteristics for High-Voltage Pins (VDD = 5.0V ± 10%, VSS = 0V, TA = -40 ~ 85°C, fXIN = 4 MHz, Vdisp = VDD-40V to VDD) Parameter Pin Symbol Test Condition Specification Min Typ.1 Max Unit Input High Voltage R0,R1,R2,R30~R35,RA VIH 0.7VDD VDD+0.3 V Input Low Voltage R0,R1,R2,R30~R35,RA VIL VDD-40 0.3VDD V Output High Voltage R0,R1,R2,R30~R35 VOH IOH = -15mA IOH = -10mA IOH = - 4mA Output Low Voltage R0,R1,R2,R30~R35 VOL Vdisp = VDD-40 150KΩ atVDD40 VDD-37 VDD-37 V 20 uA 1000 uA VDD+0.3 V Input High Leakage Current R0,R1,R2,R30~R35,RA IIH VIN=VDD-40V to VDD Input Pull-down Current(*Option) R0,R1,R2,R30~R35 IPD Vdisp=VDD-35V VIN=VDD R0,R1,R2,R30~R35,RA VIH Input High Voltage VDD-3.0 VDD-2.0 VDD-1.0 200 0.7VDD V 600 1. Data in “Typ.” column is at 4.5V, 25°C unless otherwise stated. These parameters are for design guidance only and are not tested. SEP. 2004 Ver 2.00 17 HMS81C2012A/2020A 7.6 AC Characteristics (TA=-40~ 85°C, VDD=5V±10%, VSS=0V) Parameter Symbol Pins fCP Specifications Unit Min. Typ. Max. XIN 1 - 8 MHz tCPW XIN 80 - - nS tRCP,tFCP XIN - - 20 nS Oscillation Stabilizing Time tST XIN, XOUT - - 20 mS External Input Pulse Width tEPW INT0, INT1, EC0 2 - - tSYS External Input Pulse Transition Time tREP,tFEP INT0, INT1, EC0 - - 20 nS tRST RESET 8 - - tSYS Operating Frequency External Clock Pulse Width External Clock Transition Time RESET Input Width tCPW 1/fCP tCPW VDD-0.5V XI 0.5V tRCP tSYS tFCP tRST RESETB 0.2VDD tEPW INT0, INT1 EC0 tEPW 0.8VDD 0.2VDD tREP tFEP Figure 7-1 Timing Chart 18 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 7.7 AC Characteristics (TA=-40~+85°C, VDD=5V±10%, VSS=0V, fXIN=4MHz) Parameter Symbol Pins Serial Input Clock Pulse tSCYC Serial Input Clock Pulse Width Specifications Unit Min. Typ. Max. SCLK 2tSYS+200 - 8 ns tSCKW SCLK tSYS+70 - 8 ns Serial Input Clock Pulse Transition Time tFSCK tRSCK SCLK - - 30 ns SIN Input Pulse Transition Time tFSIN tRSIN SIN - - 30 ns SIN Input Setup Time (External SCLK) tSUS SIN 100 - - ns SIN Input Setup Time (Internal SCLK) tSUS SIN 200 - ns SIN Input Hold Time tHS SIN tSYS+70 - ns Serial Output Clock Cycle Time tSCYC SCLK 4tSYS - Serial Output Clock Pulse Width tSCKW SCLK tSYS-30 Serial Output Clock Pulse Transition Time tFSCK tRSCK SCLK 30 ns Serial Output Delay Time sOUT SOUT 100 ns tFSCK SCLK tSCYC tRSCK tSCKW ns ns tSCKW 0.8VDD 0.2VDD tSUS tHS 0.8VDD 0.2VDD SIN tDS SOUT 16tSYS tFSIN tRSIN 0.8VDD 0.2VDD Figure 7-2 Serial I/O Timing Chart SEP. 2004 Ver 2.00 19 HMS81C2012A/2020A 7.8 Typical Characteristics This graphs and tables provided in this section are for design guidance only and are not tested or guaranteed. 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 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=-40°C -20 R40~R43, R5, R6, R70~R73 BUZO, T0O, PWM1O/T1O SCLK, SOUT pins IOH−VOH IOH (mA) VDD=5.0V Ta=85°C -20 -15 -15 -15 -10 -10 -10 -5 -5 -5 0 3.0 3.5 IOL−VOL IOL (mA) VDD=5.0V Ta=-40°C 40 4.0 4.5 VOH 5.0 (V) R40~R43, R5, R6, R70~R73 BUZO, T0O, PWM1O/T1O SCLK, SOUT pins 0 3.0 3.5 4.0 4.5 VOH 5.0 (V) IOL−VOL 3.0 20 20 20 10 10 10 IOH−VOH IOH (mA) VDD=5.0V Ta=25°C -16 1.5 2.0 VOL 2.5 (V) R0, R1, R2,RA R30~R35 pins 0 0.5 1.0 1.5 2.0 VOL 2.5 (V) IOH−VOH 0.5 -8 -8 -8 -4 -4 -4 3.0 4.0 VOH 5.0 (V) 0 1.0 2.0 1.5 2.0 VOL 2.5 (V) 3.0 4.0 VOH 5.0 (V) IOH (mA) VDD=3.0V Ta=25°C -16 -12 2.0 1.0 IOH−VOH IOH (mA) VDD=4.0V Ta=25°C -16 -12 1.0 VOH 5.0 (V) 0 -12 0 4.5 IOL (mA) VDD=3.0V Ta=85°C 40 30 1.0 3.5 IOL−VOL IOL (mA) VDD=4.0V Ta=25°C 40 30 0.5 4.0 0 30 0 20 IOH−VOH IOH (mA) VDD=5.0V Ta=25°C -20 3.0 4.0 VOH 5.0 (V) 0 1.0 2.0 SEP. 2004 Ver 2.00 HMS81C2012A/2020A VIH1 (V) 4 VDD−VIH1 XIN, SXIN pins fXIN=4.5MHz Ta=25°C VDD−VIH2 VIH2 (V) RESET, R55, SIN, SCLK INT0, INT1, EC0 pins fXIN=4.5MHz Ta=25°C 4 VIH3 (V) 3 3 2 2 2 1 1 1 2 VIL1 (V) 4 3 VDD−VIL1 4 5 VDD 6 (V) XIN, SXIN pins fXIN=4.5MHz Ta=25°C 0 1 VIL2 (V) 2 3 VDD−VIL2 4 5 VDD 6 (V) RESET, R55, SIN, SCLK INT0, INT1, EC0 pins fXIN=4.5MHz Ta=25°C 4 0 1 VIL3 (V) 3 3 2 2 2 1 1 1 2 IDD (mA) 3 IDD−VDD 4 5 VDD 6 (V) Normal Operation Ta=25°C 4.0 3.0 2.0 fXIN = 4.5MHz 1 IDD (mA) 2 3 ISBY−VDD 4 5 VDD 6 (V) Stand-by Mode Ta=25°C 3 4 5 fXIN=4.5MHz Ta=25°C 0 1 IDD (µA) 4.0 2.0 3.0 1.5 2.0 1.0 1.0 VDD 6 (V) R40~R43, R5 R6, R70~R73 pins 2 3 4 ISTOP−VDD 5 VDD 6 (V) Stop Mode 85°C 25°C -20°C fXIN = 4.5MHz 2.5MHz 1.0 0 2 VDD−VIL3 4 3 0 R40~R43, R5 R6, R70~R73 pins fXIN=4.5MHz Ta=25°C 4 3 0 VDD−VIH3 0.5 2.5MHz 0 2 3 4 SEP. 2004 Ver 2.00 5 VDD 6 (V) 0 2 3 4 5 VDD 6 (V) 0 2 3 4 5 VDD 6 (V) 21 HMS81C2012A/2020A 8. MEMORY ORGANIZATION The HMS81C2012A and HMS81C2020A have separate address spaces for Program memory and Data Memory. Program memory can only be read, not written to. It can be up to 12K/20K bytes of Program memory. Data memory can be read and written to up to 448 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 Generally, SP is automatically updated when a subroutine call is 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 00H~FFH 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 access (save or restore). 22 Stack Address ( 100H ~ 1FEH ) 8 7 Bit 0 01H SP Hardware fixed 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. SEP. 2004 Ver 2.00 HMS81C2012A/2020A 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 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] SEP. 2004 Ver 2.00 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. 23 HMS81C2012A/2020A At acceptance of interrupt At execution of a CALL/TCALL/PCALL 01FE Push down 01FE PCH 01FD PCL 01FC 01FC PSW 01FB 01FB 01FD PCH PCL At execution of RET instruction Push down 01FE PCH 01FD PCL At execution of RET instruction 01FE PCH 01FD PCL 01FC 01FC PSW 01FB 01FB Pop up SP before execution 01FE 01FE 01FC 01FB SP after execution 01FC 01FB 01FE 01FE At execution of PUSH instruction PUSH A (X,Y,PSW) 01FE A 01FD Push down Pop up At execution of POP instruction POP A (X,Y,PSW) 01FE A 01FD 01FC 01FC 01FB 01FB Pop up 0100H Stack depth 01FEH SP before execution 01FE 01FD SP after execution 01FD 01FE Figure 8-4 Stack Operation 24 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 8.2 Program Memory A 16-bit program counter is capable of addressing up to 64K bytes, but this device has 20K bytes program memory space only physically implemented. Accessing a location above FFFFH will cause a wrap-around to 0000H. Example: Usage of TCALL Figure 8-5, shows a map of Program Memory. After reset, the CPU begins execution from reset vector which is stored in address FFFEH and FFFFH as shown in Figure 8-6. ; ;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 As shown in Figure 8-5, each area is assigned a fixed location in Program Memory. Program Memory area contains the user program. FFC0H FFDFH FFE0H FFFFH TCALL area Interrupt Vector Area HMS81C2012A, 12K ROM FEFFH FF00H PCALL area D000H HMS81C2020A, 20K ROM B000H LDA #5 TCALL 0FH : : 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. ;TCALL ADDRESS AREA Any area from 0FF00H to 0FFFFH, if it is not going to be used, its service location is available as general purpose Program Memory. Vector Area Memory 0FFE0H 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. 1 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 0FFFAH. The interrupt service locations spaces 2-byte interval: 0FFF8H and 0FFF9H for External Interrupt 1, 0FFFAH and 0FFFBH for External Interrupt 0, etc. Address Figure 8-5 Program Memory Map ;1BYTE INSTRUCTION ;INSTEAD OF 3 BYTES ;NORMAL CALL - E2 - E4 Serial Communication Interface E6 Basic Interval Timer E8 Watchdog Timer Interrupt EA A/D Converter EC - EE - F0 - F2 - F4 Timer/Counter 1 Interrupt F6 Timer/Counter 0 Interrupt F8 External Interrupt 1 FA External Interrupt 0 FC - FE RESET Vector Area NOTE: "-" means reserved area. Figure 8-6 Interrupt Vector Area SEP. 2004 Ver 2.00 25 HMS81C2012A/2020A 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 35 ~ ~ ~ ~ ~ ~ 0D125H 01001010 ➊ ~ ~ NEXT Reverse PC: 11111111 11010110 FH FH DH 6H 0FF00H 0FF35H 0FFFFH 26 NEXT ➌ 0FF00H 0FFD6H 25 0FFD7H D1 ➋ 0FFFFH SEP. 2004 Ver 2.00 HMS81C2012A/2020A Example: The usage software example of Vector address for HMS81C2020A. ; ORG 0FFE0H DW DW DW DW DW DW DW DW DW DW DW DW DW DW DW DW NOT_USED NOT_USED SIO BIT_TIMER WD_TIMER ADC NOT_USED NOT_USED NOT_USED NOT_USED TIMER1 TIMER0 INT1 INT0 NOT_USED RESET ORG ORG 0B000H 0D000H ; ; ; ; Serial Interface Basic Interval Timer Watchdog Timer ADC ; ; ; ; ; ; Timer-1 Timer-0 Int.1 Int.0 Reset ; HMS81C2020A(20K)ROM Start address ; HMS81C2012A(12K)ROM Start address ;******************************************* ; MAIN PROGRAM * ;******************************************* ; RESET: DI ;Disable All Interrupts CLRG LDX #0 RAM_CLR: LDA #0 ;RAM Clear(!0000H->!00BFH) STA {X}+ CMPX #0C0H BNE RAM_CLR ; LDX #0FFH ;Stack Pointer Initialize TXSP ; LDM R0, #0 ;Normal Port 0 LDM R0IO,#82H ;Normal Port Direction : : : LDM TDR0,#125 ;8us x 125 = 1mS LDM TM0,#0FH ;Start Timer0, 8us at 4MHz LDM IRQH,#0 LDM IRQL,#0 LDM IENH,#0E0H ;Enable Timer0, INT0, INT1 LDM IENL,#0 LDM IEDS,#05H ;Select falling edge detect on INT pin LDM R0FUNC,#03H ;Set external interrupt pin(INT0, INT1) EI : : : ;Enable master interrupt : : NOT_USED:NOP RETI SEP. 2004 Ver 2.00 27 HMS81C2012A/2020A 8.3 Data Memory Figure 8-8 shows the internal Data Memory space available. Data Memory is divided into two groups, a user RAM (including Stack) and control registers. 0000H PAGE0 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. More detailed informations of each register are explained in each peripheral section. User Memory 00BFH 00C0H digital converters and I/O ports. The control registers are in address range of 0C0H to 0FFH. When “G-flag=0”, this page is selected 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”. Control Registers Example; To write at CKCTLR User Memory or Stack Area LDM PAGE1 When “G-flag=1” 01FFH Figure 8-8 Data Memory Map CLCTLR,#09H ;Divide ratio(÷16) 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 The HMS81C20xxA have 448 × 8 bits for the user memory (RAM). 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. Control Registers 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 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 24. 28 SEP. 2004 Ver 2.00 HMS81C2012A/2020A Address Symbol R/W RESET Value Addressing mode 0C0H 0C1H 0C2H 0C3H 0C4H 0C5H 0C6H 0C7H 0C8H 0C9H 0CAH 0CBH 0CCH 0CDH 0CEH 0CFH R0 R0IO R1 R1IO R2 R2IO R3 R3IO R4 R4IO R5 R5IO R6 R6IO R7 R7IO R/W W R/W W R/W W R/W W R/W W R/W W R/W W R/W W Undefined 0000_0000 Undefined 00000000 Undefined 0000_0000 Undefined --00_0000 Undefined ----_0000 Undefined 0000_0000 Undefined 0000_0000 Undefined --00_0000 byte, bit1 byte2 byte, bit byte byte, bit byte byte, bit byte byte, bit byte byte, bit byte byte, bit byte byte, bit byte 0D0H 0D1H TM0 T0 TDR0 CDR0 TM1 TDR1 T1PPR T1 CDR1 T1PDR PWM1HR BUR R/W R W R R/W W W R R R/W W W --00_0000 0000_0000 1111_1111 0000_0000 0000_0000 1111_1111 1111_1111 0000_0000 0000_0000 0000_0000 ----_0000 1111_1111 byte, bit byte byte byte byte, bit byte byte byte byte byte, bit byte byte 0EFH SIOM SIOR IENH IENL IRQH IRQL IEDS ADCM ADCR BITR CKCTLR WDTR WDTR PFDR R/W R/W R/W R/W R/W R/W R/W R/W R R W R W R/W 0000_0001 Undefined 0000_---0000_---0000_---0000_-------_0000 -000_0001 Undefined 0000_0000 -001_0111 0000_0000 0111_1111 ----_-100 byte, bit byte, bit byte, bit byte, bit byte, bit byte, bit byte, bit byte, bit byte byte byte byte byte byte, bit 0F4H 0F5H 0F6H 0F7H 0F8H 0F9H 0FAH 0FBH R0FUNC R4FUNC R5FUNC R6FUNC R7FUNC R5NODR SCMR RA W W W W W W R/W R ----_0000 ----_---0 -0--_---0000_0000 ----_0000 0000_0000 ---0_0000 Undefined byte byte byte byte byte byte byte -3 0D1H 0D1H 0D2H 0D3H 0D3H 0D4H 0D4H 0D4H 0D5H 0DEH 0E0H 0E1H 0E2H 0E3H 0E4H 0E5H 0E6H 0EAH 0EBH 0ECH 0ECH 0EDH 0EDH Note: Several names are given at same address. Refer to below table. When read When write Addr. Timer Mode Capture Mode PWM Mode Timer Mode PWM Mode D1H T0 CDR0 - TDR0 - TDR1 T1PPR - T1PDR D3H D4H ECH T1 CDR1 BITR T1PDR CKCTLR Table 8-2 Various Register Name in Same Address Table 8-1 Control Registers 1. "byte, bit" means that register can be addressed by not only bit but byte manipulation instruction. 2. "byte" means that register can be addressed by only byte manipulation instruction. On the other hand, do not use any read-modify-write instruction such as bit manipulation for clearing bit. 3. RA is one-bit high-voltage input only port pin. In addition, RA serves the functions of the Vdisp special features. Vdisp is used as a high-voltage input power supply pin when selected by the mask option. SEP. 2004 Ver 2.00 29 HMS81C2012A/2020A Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 T0CK2 T0CK1 T0CK0 T0CN T0ST T1CN T1ST C0H R0 R0 Port Data Register (Bit[7:0]) C1H R0IO R0 Port Direction Register (Bit[7:0]) C2H R1 R1 Port Data Register (Bit[7:0]) C3H R1IO R1 Port Direction Register (Bit[7:0]) C4H R2 R2 Port Data Register (Bit[7:0]) C5H R2IO R2 Port Direction Register (Bit[7:0]) C6H R3 R3 Port Data Register (Bit[5:0]) C7H R3IO R3 Port Direction Register (Bit[5:0]) C8H R4 R4 Port Data Register (Bit[3:0]) C9H R4IO R4 Port Direction Register (Bit[3:0]) CAH R5 R5 Port Data Register (Bit[7:0]) CBH R5IO R5 Port Direction Register (Bit[7:0]) CCH R6 R6 Port Data Register (Bit[7:0]) CDH R6IO R6 Port Direction Register (Bit[7:0]) CEH R7 R7 Port Data Register (Bit[5:0]) CFH R7IO R7 Port Direction Register (Bit[5:0]) D0H TM0 D1H T0/TDR0/ CDR0 D2H TM1 D3H TDR1/ T1PPR Timer1 Data Register / PWM1 Period Register D4H T1/CDR1/ T1PDR Timer1 Register / Capture1 Data Register / PWM1 Duty Register D5H PWM1HR PWM1 High Register(Bit[3:0]) DEH BUR BUCK1 BUCK0 BUR5 BUR4 BUR3 BUR2 BUR1 BUR0 E0H SIOM POL IOSW SM1 SM0 SCK1 SCK0 SIOST SIOSF E1H SIOR E2H IENH INT0E INT1E T0E T1E E3H IENL ADE WDTE BITE SPIE - - - - E4H IRQH INT0IF INT1IF T0IF T1IF E5H IRQL ADIF WDTIF BITIF SPIIF - - - - E6H IEDS IED1H IED1L IED0H IED0L EAH ADCM ADS1 ADS0 ADST ADSF EBH ADCR - - CAP0 Timer0 Register / Timer0 Data Register / Capture0 Data Register POL 16BIT PWM1E CAP1 T1CK1 T1CK0 SPI DATA REGISTER - ADEN ADS3 ADS2 ADC Result Data Register Table 8-3 Control Registers of HMS81C2020A These registers of shaded area can not be access by bit manipulation instruction as " SET1, CLR1 ", but should be access by register operation instruction as " LDM dp,#imm ". 30 SEP. 2004 Ver 2.00 HMS81C2012A/2020A Address Bit 7 Name Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 WDTON BTCL BTS2 BTS1 BTS0 ECH BITR1 ECH CKCTLR1 EDH WDTR WDTCL EFH PFDR2 - - - - - PFDIS PFDM PFDS F4H R0FUNC - - - - BUZO EC0 INT1 INT0 F5H R4FUNC - - - - - - - T0O F6H R5FUNC - PWM1O/ T1O - - - - - - F7H R6FUNC AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 F8H R7FUNC - - - - AN11 AN10 AN9 AN8 F9H R5NODR NODR7 NODR6 NODR5 NODR4 NODR3 NODR2 NODR1 NODR0 FAH SCMR - - - CS1 CS0 SUBOFF CLKSEL MAINOFF FBH RA - - - - - - - RA0 Basic Interval Timer Data Register - WAKEUP RCWDT 7-bit Watchdog Counter Register Table 8-3 Control Registers of HMS81C2020A These registers of shaded area can not be access by bit manipulation instruction as " SET1, CLR1 ", but should be access by register operation instruction as " LDM dp,#imm ". 1.The register BITR and CKCTLR are located at same address. Address ECH is read as BITR, written to CKCTLR. 2.The register PFDR only be implemented on devices, not on In-circuit Emulator. SEP. 2004 Ver 2.00 31 HMS81C2012A/2020A 8.4 Addressing Mode The GMS800 series MCU uses six addressing modes; (3) Direct Page Addressing → dp • Register addressing In this mode, a address is specified within direct page. • Immediate addressing Example; G=0 • Direct page addressing C535 LDA ;A ←RAM[35H] 35H • Absolute addressing • Indexed addressing • Register-indirect addressing 35H data ➋ ~ ~ (1) Register Addressing Register addressing accesses the A, X, Y, C and PSW. ~ ~ 0E550H C5 0E551H 35 data → A ➊ (2) Immediate Addressing → #imm In this mode, second byte (operand) is accessed as a data immediately. (4) Absolute Addressing → !abs Example: 0435 ADC #35H MEMORY 04 A+35H+C → A 35 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. ADC, AND, CMP, CMPX, CMPY, EOR, LDA, LDX, LDY, OR, SBC, STA, STX, STY Example; 0735F0 ADC ;A ←ROM[0F035H] !0F035H 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. E45535 LDM ~ ~ 35H,#55H 0F100H data 0135H ➊ 0F100H 32 data 0F035H Example: G=1 ~ ~ E4 55 0F102H 35 ~ ~ ➊ A+data+C → A 07 0F101H 35 0F102H F0 address: 0F035 data ¨ 55H ~ ~ 0F101H ➋ ➋ The operation within data memory (RAM) ASL, BIT, DEC, INC, LSR, ROL, ROR Example; Addressing accesses the address 0135H regardless of G-flag. SEP. 2004 Ver 2.00 HMS81C2012A/2020A 983501 INC ;A ←ROM[135H] !0135H 35H data 135H ➌ ~ ~ ~ ~ 0F100H 98 0F101H 35 0F102H 01 ➋ data ~ ~ ➋ ~ ~ data+1 → data data Æ A ➊ 36H Æ X DB ➊ address: 0135 X indexed direct page (8 bit offset) → dp+X (5) Indexed Addressing X indexed direct page (no offset) → {X} In this mode, a address is specified by the X register. 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, OR, SBC, STA, XMA ADC, AND, CMP, EOR, LDA, LDY, OR, SBC, STA STY, XMA, ASL, DEC, INC, LSR, ROL, ROR Example; X=15H, G=1 Example; G=0, X=0F5H D4 LDA 115H {X} ;ACC←RAM[X]. data ~ ~ 45H+X data ➌ data → A ➊ D4 0E550H LDA 3AH ➋ ~ ~ C645 ~ ~ ➋ ~ ~ 0E550H C6 0E551H 45 data → A ➊ 45H+0F5H=13AH X indexed direct page, auto increment→ {X}+ 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 LDA {X}+ Y indexed direct page (8 bit offset) → dp+Y 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. Y indexed absolute → !abs+Y 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 SEP. 2004 Ver 2.00 33 HMS81C2012A/2020A D500FA LDA !0FA00H+Y 1625 0F100H D5 0F101H 00 ➊ 0F102H FA 0FA00H+55H=0FA55H ~ ~ ~ ~ data 0FA55H ➋ ADC [25H+X] 35H 05 36H E0 0E005H ~ ~ ➋ ~ ~ 0E005H ➊ 25 + X(10) = 35H data ~ ~ ~ ~ data → A ➌ 0FA00H 16 25 ➌ A + data + C → A (6) Indirect Addressing Y indexed indirect → [dp]+Y 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. ADC, AND, CMP, EOR, LDA, OR, SBC, STA JMP, CALL Example; G=0, Y=10H Example; G=0 3F35 Processes memory data as Data, assigned by the data [dp+1][dp] of 16-bit pair memory paired by Operand in Direct page plus Y-register data. JMP 1725 [35H] ADC [25H]+Y 35H 0A 25H 05 36H E3 26H E0 ~ ~ 0E30AH ~ ~ ➊ NEXT ~ ~ 0FA00H ➋ ~ ~ jump to address 0E30AH 3F ~ ~ 0E015H ~ ~ ➋ ~ ~ 0FA00H 35 ➊ 0E005H + Y(10) = 0E015H data ~ ~ 17 25 ➌ A + data + C → A X indexed indirect → [dp+X] 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. ADC, AND, CMP, EOR, LDA, OR, SBC, STA Absolute indirect → [!abs] The program jumps to address specified by 16-bit absolute address. JMP Example; G=0 Example; G=0, X=10H 34 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 1F25E0 JMP [!0C025H] PROGRAM MEMORY 0E025H 25 0E026H E7 ~ ~ ➊ 0E725H ~ ~ NEXT ~ ~ 0FA00H ➋ jump to address 0E30AH ~ ~ 1F 25 E0 SEP. 2004 Ver 2.00 35 HMS81C2012A/2020A 9. I/O PORTS The HMS81C20xxA has eight ports (R0, R1, R2, R3, R4, R5, R6 and R7).These ports pins may be multiplexed with an alternate function for the peripheral features on the 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. All the port direction registers in the HMS81C2020A have 0 written to them by reset function. On the other hand, its initial status is input. WRITE "55H" TO PORT R0 DIRECTION REGISTER 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 I O I O I O I O PORT 7 6 5 4 3 2 1 0 R0 and R0IO register: R0 is an 8-bit high-voltage CMOS bidirectional I/O port (address 0C0H). Each port can be set individually as input and output through the R0IO register (address 0C1H). Each port can directly drive a vacuum fluorescent display. R03 port is multiplexed with Buzzer Output Port(BUZO), R02 port is multiplexed with Event Counter Input Port (EC0), and R01~R00 are multiplexed with External Interrupt Input Port(INT1, INT0) Port Pin Alternate Function R00 R01 R02 R03 INT0 (External interrupt 0 Input Port) INT1 (External interrupt 1 Input Port) EC0 (Event Counter Input Port) BUZO (Buzzer Output Port) .The control register R0FUNC (address F4H) controls to select alternate function. After reset, this value is "0", port may be used as general I/O ports. To select alternate function such as Buzzer Output, External Event Counter Input and External Interrupt Input, write "1" to the corresponding bit of R0FUNC. Regardless of the direction register R0IO, R0FUNC is selected to use as alternate functions, port pin can be used as a corresponding alternate features (BUZO, EC0, INT1, INT0) I : INPUT PORT O : OUTPUT PORT ADDRESS: 0C0H RESET VALUE: Undefined R0 Data Register R0 R07 R06 R05 R04 R03 R02 R01 R00 Figure 9-1 Example of Port I/O Assignment Input / Output data RA(Vdisp) register: RA is one-bit high-voltage input only port pin. In addition, RA serves the functions of the Vdisp special features. Vdisp is used as a high-voltage input power supply pin when selected by the mask option. RA Data Register R0IO ADDRESS: 0FBH RESET VALUE: Undefined RA Port Direction 0: Input 1: Output RA0 Input data ADDRESS : 0F4 R0 Function Selection Register RESET VALUE :H----0000 R0FUNC Port pin RA 36 ADDRESS : 0C1H RESET VALUE : 00H R0 Direction Register Alternate function Vdisp (High-voltage input power supply) - - - - 0: R02 1: BUZO 0: R03 1: EC0 3 2 1 B 0 0: R00 1: INT0 0: R01 1: INT1 SEP. 2004 Ver 2.00 HMS81C2012A/2020A R1 and R0IO register: R1 is an 8-bit high-voltage CMOS bidirectional I/O port (address 0C2H). Each port can be set individually as input and output through the R1IO register (address 0C3H). Each port can directly drive a vacuum fluorescent display. R1 Data Register R1 (address 0C7H). ADDRESS: 0C6H RESET VALUE: Undefined R3 Data Register R3 - - R35 R34 R33 R32 R31 R30 Input / Output data ADDRESS: 0C2H RESET VALUE: Undefined R17 R16 R15 R14 R13 R12 R11 R10 ADDRESS : 0C7H RESET VALUE : --000000B R3 Direction Register Input / Output data R1 Direction Register R3IO - Port Direction 0: Input 1: Output ADDRESS : 0C3H RESET VALUE : 00H R1IO Port Direction 0: Input 1: Output R2 and R2IO register: R2 is an 8-bit high-voltage CMOS bidirectional I/O port (address 0C4H). Each port can be set individually as input and output through the R2IO register (address 0C5H). Each port can directly drive a vacuum fluorescent display. R2 Data Register R2 ADDRESS: 0C4H RESET VALUE: Undefined R27 R26 R25 R24 R23 R22 R21 R20 Input / Output data R2 Direction Register ADDRESS : 0C5H RESET VALUE : 00H R2IO R4 and R4IO register: R4 is a 4-bit bidirectional I/O port (address 0C8H). Each port can be set individually as input and output through the R4IO register (address 0C9H). R40 port is multiplexed with Timer 0 Output Port (T0O). Port Pin Alternate Function R40 T0O (Timer 0 Compare Output Port) The control register R4FUNC (address 0F5H) controls to select alternate function. After reset, this value is "0", port may be used as general I/O ports. To select alternate function such as Timer 0 Output, write "1" to the corresponding bit of R4FUNC. Regardless of the direction register R4IO, R4FUNC is selected to use as alternate functions, port pin can be used as a corresponding alternate features (T0O) ADDRESS: 0C8H RESET VALUE: Undefined R4 Data Register R4 - - - R43 R42 R41 R40 - Port Direction 0: Input 1: Output R3 and R3IO register: R3 is a 6-bit high-voltage CMOS bidirectional I/O port (address 0C6H). Each port can be set individually as input and output through the R3IO register Input / Output data ADDRESS : 0C9H RESET VALUE : ----0000B R4 Direction Register R4IO - - - Port Direction 0: Input 1: Output ADDRESS : 0F5 R4 Function Selection Register RESET VALUE :H-------0 R4FUNC - - - - - - - B T0O 0: R40 1: T0O SEP. 2004 Ver 2.00 37 HMS81C2012A/2020A R5 and R5IO register: R5 is an 8-bit bidirectional I/O port (address 0CAH). Each pin can be set individually as input and output through the R5IO register (address 0CB H).In addition, Port R5 is multiplexed with Pulse Width Modulator (PWM). Port Pin Alternate Function Port Pin PWM1 Data Output Timer 1 Data Output R56 The control register R5FUNC (address 0F6H) controls to select PWM function.After reset, the R5IO register value is "0", port may be used as general I/O ports. To select PWM function, write "1" to the corresponding bit of R5FUNC. The control register R5NODR (address 0F9H) controls to select N-MOS open drain port. To select N-MOS open drain port, write "1" to the corresponding bit of R5FUNC. ADDRESS: 0CAH RESET VALUE: Undefined R5 Data Register R5 R6 and R6IO register: R6 is an 8-bit bidirectional I/O port (address 0CCH). Each port can be set individually as input and output through the R6IO register (address 0CDH). R67~R60 ports are multiplexed with Analog Input Port. R57 R56 R55 R54 R53 R52 R51 R50 Alternate Function R60 R61 R62 R63 R64 R65 R66 R67 AN0 (ADC input 0) AN1 (ADC input 1) AN2 (ADC input 2) AN3 (ADC input 3) AN4 (ADC input 4) AN5 (ADC input 5) AN6 (ADC input 6) AN7 (ADC input 7) The control register R6FUNC (address 0F7H) controls to select alternate function. After reset, this value is "0", port may be used as general I/O ports. To select alternate function such as Analog Input, write "1" to the corresponding bit of R6FUNC. Regardless of the direction register R6IO, R6FUNC is selected to use as alternate functions, port pin can be used as a corresponding alternate features (AN7~AN0) Input / Output data ADDRESS: 0CCH RESET VALUE: Undefined R6 Data Register ADDRESS : 0CBH RESET VALUE : 00H R5 Direction Register R6 R67 R66 R65 R64 R63 R62 R61 R60 R5IO Input / Output data Port Direction 0: Input 1: Output ADDRESS : 0CDH RESET VALUE : 00H R6 Direction Register R6IO R5 Function Selection ADDRESS : 0F6 Register RESET VALUE :H-0-----B R5FUNC - - 6 - - - - Port Direction 0: Input 1: Output - 0: R56 1: PWM1O/T1O R5 N-MOS Open Drain Selection Register H ADDRESS: 0F9H RESET VALUE: 00H R5NODR N-MOS Open Drain Selection 0: Disable 1: Enable 38 ADDRESS : 0F7 R6 Function Selection Register RESET VALUE :H00 R6FUNC 7 6 5 0: R67 1: AN7 0: R66 1: AN6 0: R65 1: AN5 0: R64 1: AN4 4 3 2 1 0 0: R60 1: AN0 0: R61 1: AN1 0: R62 1: AN2 0: R63 1: AN3 SEP. 2004 Ver 2.00 HMS81C2012A/2020A R7 and R7IO register: R7 is a 4-bit bidirectional I/O port (address 0CEH). Each port can be set individually as input and output through the R7IO register (address 0CFH). R73~R70 ports are multiplexed with Analog Input Port AN8~AN11). R74, R75 ports are alternate function of SXI, SXO ports. R74, R75 ports can be set individually as input and output through the R7IO register. Port Pin Alternate Function R70 R71 R72 R73 SXI SXO AN8 (ADC input 8) AN9 (ADC input 9) AN10 (ADC input 10) AN11 (ADC input 11) R74(included Internal Pull-up Resister) R75(included Internal Pull-up Resister) can be used as a corresponding alternate features. ADDRESS: 0CEH RESET VALUE: Undefined R7 Data Register R7 - - R75 R74 R73 R72 R71 R70 Input / Output data ADDRESS : 0CFH RESET VALUE : --000000B R7 Direction Register R7IO - - Port Direction 0: Input 1: Output ADDRESS : 0F8 The control register R7FUNC (address 0F8H) controls to select alternate function. After reset, this value is "0", port may be used as general I/O ports. To select alternate function such as Analog Input, write "1" to the corresponding bit of R7FUNC. Regardless of the direction register R7IO, R7FUNC is selected to use as alternate functions, port pin SEP. 2004 Ver 2.00 R7 Function Selection Register RESET VALUE :H----0000 R7FUNC - - - - 3 2 1 B 0 0: R70 1: AN8 0: R71 1: AN9 0: R72 1: AN10 0: R73 1: AN11 39 HMS81C2012A/2020A 10. BASIC INTERVAL TIMER comes "0" after one machine cycle by hardware. The HMS81C20xxA has one 8-bit Basic Interval Timer that is free-run, can not stop. Block diagram is shown in Figure 10-1. In addition, the Basic Interval Timer generates the time base for watchdog timer counting. It also provides a Basic interval timer interrupt (BITIF). If the STOP instruction executed after writing "1" to bit WAKEUP of CKCTLR, it goes into the wake-up timer mode. In this mode, all of the block is halted except the oscillator, prescaler (only fXIN÷2048) and Timer0. 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 overflows from FFH to 00H, this overflow causes to generate the Basic interval timer interrupt. The BITIF is interrupt request flag of Basic interval timer. The Basic Interval Timer is controlled by the clock control register (CKCTLR) shown in Figure 10-2. 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. BITR and CKCTLR are located at same address, and address 0ECH is read as a BITR, and written to CKCTLR. When write "1" to bit BTCL of CKCTLR, BITR register is cleared to "0" and restart to count-up. The bit BTCL be- Internal RC OSC WAKEUP STOP ÷8 ÷16 Prescaler ÷32 XIN PIN 1 ÷64 ÷128 MUX ÷256 source clock 8-bit up-counter overflow BITR Basic Interval Timer Interrupt BITIF 0 [0ECH] ÷512 ÷1024 To Watchdog timer (WDTCK) clear Select Input clock 3 BTS[2:0] [0ECH] RCWDT BTCL CKCTLR Basic Interval Timer clock control register Read Internal bus line Figure 10-1 Block Diagram of Basic Interval Timer 40 SEP. 2004 Ver 2.00 HMS81C2012A/2020A CKCTLR [2:0] Interrupt (overflow) Period (ms) @ fXIN = 4MHz Source clock fXIN÷8 fXIN÷16 fXIN÷32 fXIN÷64 fXIN÷128 fXIN÷256 fXIN÷512 fXIN÷1024 000 001 010 011 100 101 110 111 0.512 1.024 2.048 4.096 8.192 16.384 32.768 65.536 Table 10-1 Basic Interval Timer Interrupt Time CKCTLR 7 - 6 5 WAKEUP RCWDT 4 WDTON 3 2 1 0 BTCL BTCL BTS2 BTS1 BTS0 ADDRESS: 0ECH INITIAL VALUE: -001 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. 0: Operate as a 7-bit general timer 1: Enable Watchdog Timer operation See the section “Watchdog Timer”. 0: Disable Internal RC Watchdog Timer 1: Enable Internal RC Watchdog Timer 0: Disable Wake-up Timer 1: Enable Wake-up Timer 7 6 BITR 5 4 3 BTCL 2 1 0 ADDRESS: 0ECH INITIAL VALUE: Undefined 8-BIT FREE-RUN BINARY COUNTER Figure 10-2 BITR: Basic Interval Timer Mode Register Example 1: Example 2: Basic Interval Timer Interrupt request flag is generated every 4.096ms at 4MHz. Basic Interval Timer Interrupt request flag is generated every 1.024ms at 4MHz. : LDM SET1 EI : CKCTLR,#03H BITE SEP. 2004 Ver 2.00 : LDM SET1 EI : CKCTLR,#01H BITE 41 HMS81C2012A/2020A 11. 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. 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. 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 purpose of the watchdog timer is to detect the malfunction (runaway) of program due to external noise or other causes and return the operation to the normal condition. The RC oscillated watchdog timer is activated by setting the bit RCWDT as shown below. LDM LDM STOP NOP NOP : 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. CKCTLR,#3FH; enable the RC-osc WDT WDTR,#0FFH; set the WDT period ; enter the STOP mode ; RC-osc WDT running The RCWDT oscillation period is vary with temperature, VDD and process variations from part to part (approximately, 40~120uS). The following equation shows the RCWDT oscillated watchdog timer time-out. TRCWDT=CLKRCWDT×28×[WDTR.6~0]+(CLKRCWDT×28)/2 The other type is a prescaled system clock. where, CLKRCWDT = 40~120uS 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 WDT interrupt or reset the CPU in accordance with the bit WDTON. In addition, this watchdog timer can be used as a simple 7bit timer by interrupt WDTIF. The interval of watchdog timer interrupt is decided by Basic Interval Timer. Interval equation is as below. TWDT = [WDTR.6~0] × Interval of BIT clear Watchdog Counter (7-bit) BASIC INTERVAL TIMER Count OVERFLOW source clear “0” “1” enable comparator WDTCL WDTON in CKCTLR [0ECH] 7-bit compare data WDTIF 7 WDTR [0EDH] to reset CPU Watchdog Timer interrupt Watchdog Timer Register Internal bus line Figure 11-1 Block Diagram of Watchdog Timer 42 SEP. 2004 Ver 2.00 HMS81C2012A/2020A Watchdog Timer Control the binary 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. Figure 11-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 W 7 WDTR W 6 W 5 W 4 W 3 W 2 W 1 W 0 WDTCL ADDRESS: 0EDH INITIAL VALUE: 0111_1111B 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. NOTE: The WDTON bit is in register CKCTLR. Figure 11-2 WDTR: Watchdog Timer Data Register Example: Sets the watchdog timer detection time to 0.5 sec at 4.19MHz Within WDT detection time Within WDT detection time LDM LDM CKCTLR,#3FH WDTR,#04FH ;Select 1/2048 clock source, WDTON ← 1, Clear Counter LDM : : : : LDM : : : : LDM WDTR,#04FH ;Clear counter WDTR,#04FH ;Clear counter WDTR,#04FH ;Clear counter SEP. 2004 Ver 2.00 43 HMS81C2012A/2020A 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 bit5 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 : : T = WDTR × Interval of BIT CKCTLR,#xx1x_xxxxB;WDTON ← 1 The stack pointer (SP) should be initialized before using the watchdog timer output as an interrupt source. Example: 7-bit timer interrupt set up. The watchdog timer is disabled by clearing bit 5 (WDTON) of CKCTLR. The watchdog timer is halted in STOP mode and restarts automatically after STOP mode is released. LDM LDM CKCTLR,#xx0xxxxxB;WDTON ←0 WDTR,#7FH ;WDTCL ←1 : Source clock BIT overflow Binary-counter 2 1 3 0 1 2 3 0 Counter Clear WDTR 3 n Match Detect WDTIF interrupt WDTR ← "0100_0011B" WDT reset reset Figure 11-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. 44 The main clock oscillator also turns on when a watchdog timer reset is generated in sub clock mode. SEP. 2004 Ver 2.00 HMS81C2012A/2020A 12. TIMER/EVENT COUNTER sponse to a 1-to-0 (falling edge) or 0-to-1(rising edge) transition at its corresponding external input pin, EC0. The HMS81C20xxA has two Timer/Counter registers. Each module can generate an interrupt to indicate that an event has occurred (i.e. timer match). 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 capture data register CDRx. Timer 0 and Timer 1 are can be used either two 8-bit Timer/Counter or one 16-bit Timer/Counter with combine them. 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 in Timer0. And Timer1 can use the same clock source too. In addition, Timer1 has more fast clock source (1/1 to 1/8). Timer1 is shared with "PWM" function and "Compare output" function It has seven operating modes: "8-bit timer/counter", "16bit timer/counter", "8-bit capture", "16-bit capture", "8-bit compare output", "16-bit compare output" and "10-bit PWM" which are selected by bit in Timer mode register TM0 and TM1 as shown in Figure 12-1 and Table 12-1. In the “counter” function, the register is increased in re16BIT CAP0 CAP1 PWM1E T0CK [2:0] T1CK [1:0] PWM1O 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 X 0 XXX 11 0 16-bit Capture (internal clock) 1 0 0 0 XXX 11 1 16-bit Compare Output TIMER 0 TIMER 1 Table 12-1 Operating Modes of Timer0 and Timer1 SEP. 2004 Ver 2.00 45 HMS81C2012A/2020A R/W 5 TM0 - - R/W 3 R/W 2 R/W 1 R/W 0 CAP0 T0Ck2 T0CK1 BTCL T0Ck0 T0CN T0ST ADDRESS: 0D0H INITIAL VALUE: --000000B 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: Stop the timer 1: A logic 1 starts the timer. T0ST TM0.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. R/W 7 TM1 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 PWM1E CAP1 T1CK1 BTCL T1CK0 T1CN T1ST ADDRESS: 0D2H INITIAL VALUE: 00H Bit Name Bit Position Description POL TM1.7 0: PWM Duty Active Low 1: PWM Duty Active High 16BIT TM1.6 0: 8-bit Mode 1: 16-bit Mode PWMIE TM1.5 0: Disable PWM 1: Enable PWM 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 the Timer 0 Clock T0CN TM1.1 0: Stop the timer 1: A logic 1 starts the timer. T0ST TM1.0 0: When cleared, stop the counting. 1: When set, Timer 0 Count Register is cleared and start again. TDR0 TDR1 R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 R/W R/W R/W R/W R/W R/W R/W R/W 7 6 5 4 3 2 1 0 ADDRESS: 0D1H INITIAL VALUE: Undefined ADDRESS: 0D3H INITIAL VALUE: Undefined Read: Count value read Write: Compare data write Figure 12-1 TM0, TM1 Registers 46 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 12.1 8-bit Timer / Counter Mode as an 8-bit timer/counter mode, bit CAP0 of TM0 is cleared to "0" and bits 16BIT of TM1 should be cleared to “0”(Table 12-1). The HMS81C20xxA has two 8-bit Timer/Counters, Timer 0, Timer 1 as shown in Figure 12-2. The "timer" or "counter" function is selected by mode registers TMx as shown in Figure 12-1 and Table 12-1. To use TM0 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --000000B CAP0 T0CK2 BTCL T0CK1 T0CK0 T0CN T0ST 0 X X X X X X means don’t care 7 TM1 6 5 4 3 2 1 0 POL 16BIT PWM1E CAP1 BTCL T1CK1 T1CK0 T1CN T1ST X 0 0 0 X X X ADDRESS: 0D2H INITIAL VALUE: 00H X X means don’t care T0CK[2:0] EDGE DETECTOR EC0 PIN 111 T0ST ÷2 000 ÷4 Prescaler XIN PIN 0: Stop 1: Clear and start 001 ÷8 010 ÷ 32 T0 (8-bit) clear 011 ÷ 128 100 ÷ 512 ÷ 2048 101 T0CN T0IF Comparator 110 MUX TIMER 0 TDR0 (8-bit) F/F TIMER 0 INTERRUPT T0O PIN T1CK[1:0] T1ST ÷1 ÷2 ÷8 0: Stop 1: Clear and start 11 00 T1 (8-bit) 01 clear 10 MUX T1CN T1IF Comparator TIMER 1 TDR1 (8-bit) F/F TIMER 1 INTERRUPT T1O PIN Figure 12-2 8-bit Timer/Counter 0, 1 SEP. 2004 Ver 2.00 47 HMS81C2012A/2020A Example 1: Timer0 = 2ms 8-bit timer mode at 4MHz Timer1 = 0.5ms 8-bit timer mode at 4MHz LDM LDM LDM LDM SET1 SET1 EI TDR0,#250 TDR1,#250 TM0,#0000_1111B TM1,#0000_1011B T0E T1E Example 2: Timer0 = 8-bit event counter mode Timer1 = 0.5ms 8-bit timer mode at 4MHz LDM LDM LDM LDM SET1 SET1 EI 48 TDR0,#250 TDR1,#250 TM0,#0001_1111B TM1,#0000_1011B T0E T1E Note: The contents of Timer data register TDRx should be initialized 1H~FFH, not 0H, because it is undefined after reset. 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) and 1, 2, 8 selected by control bits T1CK[1:0] of register (TM1). 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). As TDRx and Tx register are in same address, when reading it as a Tx, written to TDRx. In counter function, the counter is increased every 0-to1(1-to-0) (rising & falling edge) transition of EC0 pin. In order to use counter function, the bit EC0 of the R0 Function Selection Register (R0FUNC.2) is set to "1". The Timer 0 can be used as a counter by pin EC0 input, but Timer 1 can not. SEP. 2004 Ver 2.00 HMS81C2012A/2020A 8-bit Timer Mode Counting up is resumed after the up-counter is cleared. 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 1 interrupt (T1IF) is generated and the up-counter is cleared to 0. As the value of TDRn is changeable by software, time interval is set as you want Start count ~ ~ Source clock ~ ~ Up-counter 0 2 1 n-1 n 0 2 1 3 4 ~ ~ TDR1 n-2 3 n ~ ~ Match Detect Counter Clear ~ ~ T1IF interrupt Figure 12-3 Timer Mode Timing Chart Example: Make 2ms interrupt using by Timer0 at 4MHz LDM LDM SET1 EI TM0,#0FH TDR0,#125 T0E ; ; ; ; divide by 32 8us x 125= 1ms Enable Timer 0 Interrupt Enable Master Interrupt When TM0 = 0000 1111B (8-bit Timer mode, Prescaler divide ratio = 32) TDR0 = 125D = 7DH fXIN = 4 MHz 1 INTERRUPT PERIOD = × 32 × 125 = 1 ms 4 × 106 Hz TDR1 MATCH (TDR0 = T0) un -c o up ~~ 8 µs ~~ ~~ 6 Count Pulse Period 7D 7C 7B 7A t 7D 5 4 3 2 1 0 0 TIME Interrupt period = 8 µs x 125 Timer 1 (T1IF) Interrupt Occur interrupt Occur interrupt Occur interrupt Figure 12-4 Timer Count Example SEP. 2004 Ver 2.00 49 HMS81C2012A/2020A 8-bit Event Counter Mode In this mode, counting up is started by an external trigger. This trigger means falling edge or rising edge of the EC0 pin input. Source clock is used as an internal clock selected with timer mode register TM0. The contents of timer data register TDR0 is compared with the contents of the upcounter T0. If a match is found, an timer interrupt request flag T0IF is generated, and the counter is cleared to “0”. The counter is restart and count up continuously by every falling edge or rising edge of the EC0 pin input. In order to use event counter function, the bit 2 of the R5 function register (R5FUNC.2) is required to be set to “1”. After reset, the value of timer data register TDR0 is undefined, it should be initialized to between 1H~FFH, not to "0"The interval period of Timer is calculated as below equation. 1 Period (sec) = ----------- × 2 × Divide Ratio × TDR0 f XIN The maximum frequency applied to the EC0 pin is fXIN/2 [Hz]. Start count ~ ~ ECn pin input ~ ~ 1 0 2 ~ ~ Up-counter n-1 n 1 0 2 ~ ~ n ~ ~ TDR1 ~ ~ T1IF interrupt Figure 12-5 Event Counter Mode Timing Chart TDR1 disable ~~ clear & start enable up -c o un t stop ~~ TIME Timer 1 (T1IF) Interrupt Occur interrupt Occur interrupt T1ST Start & Stop T1CN Control count T1ST = 1 T1ST = 0 T1CN = 1 T1CN = 0 Figure 12-6 Count Operation of Timer / Event counter 50 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 12.2 16-bit Timer / Counter Mode The clock source of the Timer 0 is selected either internal or external clock by bit T0CK[2:0]. The Timer register is being run with 16 bits. A 16-bit timer/ counter register T0, T1 are increased from 0000H until it matches TDR0, TDR1 and then resets to 0000 H . The match output generates Timer 0 interrupt not Timer 1 interrupt. 7 6 - - - - TM0 5 4 3 In 16-bit mode, the bits T1CK[1:0] and 16BIT of TM1 should be set to "1" respectively. 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --000000B CAP0 T0CK2 BTCL T0CK1T0CK0 T0CN T0ST 0 X X X X X X means don’t care 7 TM1 6 5 4 3 2 1 0 ADDRESS: 0D2H INITIAL VALUE: 00H POL 16BIT PWM1E CAP1 BTCL T1CK1T1CK0 T1CN T1ST X 1 0 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 000 001 0 010 1 011 100 T0ST 0: Stop 1: Clear and start T1 + T0 (16-bit) clear T0CN 101 T0IF Comparator 110 TDR1 + TDR0 (16-bit) MUX F/F TIMER 0 INTERRUPT (Not Timer 1 interrupt) T0O PIN Higher byte Lower byte COMPARE DATA TIMER 0 + TIMER 1 → TIMER 0 (16-bit) Figure 12-7 16-bit Timer/Counter SEP. 2004 Ver 2.00 51 HMS81C2012A/2020A 12.3 8-bit Compare Output (16-bit) The HMS81C20xxA has a function of Timer Compare Output. To pulse out, the timer match can goes to port pin(T0O, T1O) as shown in Figure 12-2 and Figure 12-7. Thus, pulse out is generated by the timer match. These operation is implemented to pin, T0O, PWM1O/T1O. In this mode, the bit PWM1O/T1O of R5 function register (R5FUNC.6) should be set to "1", and the bit PWM1E of timer1 mode register (TM1) should be set to "0". In addi- tion, 16-bit Compare output mode is available, also. This pin output the signal having a 50 : 50 duty square wave, and output frequency is same as below equation. Oscillation Frequency f COMP = --------------------------------------------------------------------------------2 × Prescaler Value × ( TDR + 1 ) 12.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 12-8. As mentioned above, not only Timer 0 but Timer 1 can also be used as a capture mode. 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) increases and matches TDR0 (TDR1). 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 12-10, 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 than wanted value. It can be ob- 52 tained 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), to be captured into registers CDRx (CDR0, CDR1), respectively. After captured, Timer x register is cleared and restarts by hardware. Note: The CDRx, TDRx and Tx are in same address. In the capture mode, reading operation is read the CDRx, not Tx because path is opened to the CDRx, and TDRx is only for writing operation. It has three transition modes: "falling edge", "rising edge", "both edge" which are selected by interrupt edge selection register IEDS (Refer to External interrupt section). In addition, the transition at INTx pin generate an interrupt. SEP. 2004 Ver 2.00 HMS81C2012A/2020A . TM0 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --000000B CAP0 T0CK2 BTCL T0CK1T0CK0 T0CN T0ST 1 X X X X X X means don’t care 7 TM1 6 5 4 3 2 1 0 ADDRESS: 0D2H INITIAL VALUE: 00H POL 16BIT PWM1E CAP1 BTCL T1CK1T1CK0 T1CN T1ST X 0 0 1 X X X X X means don’t care T0CK[2:0] Edge Detector EC0 PIN 111 T0ST ÷2 000 ÷4 Prescaler XIN PIN 0: Stop 1: Clear and start 001 ÷8 T0 (8-bit) 010 ÷ 32 011 ÷ 128 clear 100 ÷ 512 ÷ 2048 T0CN 101 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[1:0] “01” INT1 PIN “10” INT1IF INT1 INTERRUPT “11” Figure 12-8 8-bit Capture Mode SEP. 2004 Ver 2.00 53 HMS81C2012A/2020A This value is loaded to CDR0 n T0 n-1 co un t ~~ ~~ 9 8 up - 7 6 5 4 ~~ 3 2 1 0 TIME Ext. INT0 Pin Interrupt Request ( INT0F ) Interrupt Interval Period Ext. INT0 Pin Interrupt Request ( INT0F ) Delay Capture ( Timer Stop ) Clear & Start Figure 12-9 Input Capture Operation Ext. INT0 Pin Interrupt Request ( INT0F ) Interrupt Interval Period = FFH + 01H + FFH +01H + 13H = 213H Interrupt Request ( T0F ) FFH FFH T0 13H 00H 00H Figure 12-10 Excess Timer Overflow in Capture Mode 54 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 12.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. or external clock by bit T0CK2, T0CK1 and T0CK0. In 16-bit mode, the bits T1CK1,T1CK0 and 16BIT of TM1 should be set to "1" respectively. The clock source of the Timer 0 is selected either internal TM0 7 6 - - - - 5 4 3 2 1 0 ADDRESS: 0D0H INITIAL VALUE: --000000B CAP0 T0CK2 BTCL T0CK1T0CK0 T0CN T0ST 1 X X X X X X means don’t care 7 TM1 6 5 4 3 2 1 0 ADDRESS: 0D2H INITIAL VALUE: 00H POL 16BIT PWM1E CAP1 BTCL T1CK1T1CK0 T1CN T1ST X 1 0 X 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 12-11 16-bit Capture Mode SEP. 2004 Ver 2.00 55 HMS81C2012A/2020A 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,#<62500 ;8uS X 62500 TDR1,#>62500 ;=0.5s T0E LDM LDM LDM LDM LDM LDM SET1 EI : : Example 2: R0FUNC,#0000_0001B;INT0 set TM0,#0010_1111B;Capture Mode 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 : : R0FUNC,#0000_0100B;EC0 Set TM0,#0001_1111B;Counter Mode TM1,#0100_1100B;16bit Mode TDR0,#<0FFH ; TDR1,#>0FFH ; T0E 12.6 PWM Mode The HMS81C2020A has a high speed PWM (Pulse Width Modulation) functions which shared with Timer1. And writes duty value to the T1PDR and the PWM1HR[1:0] same way. In PWM mode, pin R56/PWM1O/T1O outputs up to a 10bit resolution PWM output. This pin should be configured as a PWM output by setting "1" bit PWM1O in R5FUNC.6 register. The T1PDR is configured as a double buffering for glitchless PWM output. In Figure 12-12, 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 period of the PWM output is determined by the T1PPR (PWM1 Period Register) and PWM1HR[3:2] (bit3,2 of PWM1 High Register) and the duty of the PWM output is determined by the T1PDR (PWM1 Duty Register) and PWM1HR[1:0] (bit1,0 of PWM1 High Register). The user writes the lower 8-bit period value to the T1PPR and the higher 2-bit period value to the PWM1HR[3:2]. 56 PWM Period = [PWM1HR[3:2]T1PPR] X Source Clock PWM Duty = [PWM1HR[1:0]T1PDR] X Source Clock The relation of frequency and resolution is in inverse proportion. Table 12-2 shows the relation of PWM frequency vs. resolution. SEP. 2004 Ver 2.00 HMS81C2012A/2020A If it needed more higher frequency of PWM, it should be reduced resolution. The bit POL of TM1 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). Frequency Resolution T1CK[1:0] = 00(250nS) T1CK[1:0] = 01(500nS) T1CK[1:0] = 10(2uS) 10-bit 3.9KHz 0.98KHZ 0.49KHZ 9-bit 7.8KHz 1.95KHz 0.97KHz 8-bit 15.6KHz 3.90KHz 1.95KHz 7-bit 31.2KHz 7.81KHz 3.90KHz 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 12-14. As it were, the absolute duty time is not changed in varying frequency. But the changed period value must greater than the duty value. Table 12-2 PWM Frequency vs. Resolution at 4MHz TM1 PWM1HR POL 16BIT PWM1E CAP1 T1CK1 T1CK0 T1CN T1ST X 0 1 0 X X X X - - - - - - - - ADDRESS : D5H RESET VALUE : ----0000 Bit Manipulation Not Available PWM1HR3PWM1HR2PWM1HR1PWM1HR0 X X X Period High T1ST X Duty High X : The value "0" or "1" corresponding your operation. PWM1HR[3:2] T0 clock source [T0CK] ADDRESS : D2H RESET VALUE : 00000000 T1PPR(8-bit) 0 : Stop 1 : Clear and Start R56/ PWM1O/T1O COMPARATOR S Q CLEAR 1 fXI ÷1 ÷2 ÷8 MUX (2-bit) T1 ( 8-bit ) R POL PWM1O [R5FUNC.6] COMPARATOR T1CK[1:0] T1CN Slave T1PDR(8-bit) PWM1HR[1:0] Master T1PDR(8-bit) Figure 12-12 PWM Mode SEP. 2004 Ver 2.00 57 HMS81C2012A/2020A 02 03 04 05 PWM1E 7F 80 ~ ~ ~ ~ 00 01 ~ ~ ~ ~ ~ ~ T1 ~ ~ ~ ~ Source clock 81 3FF 00 01 02 03 ~ ~ T1ST ~ ~ T1CN ~ ~ PWM1O [POL=1] ~ ~ ~ ~ ~ ~ PWM1O [POL=0] Duty Cycle [ 80H x 250nS = 32uS ] Period Cycle [ 3FFH x 250nS = 255.75uS, 3.9KHz ] T1CK[1:0] = 00 ( fXI ) PWM1HR = 0CH Period PWM1HR3 PWM1HR2 1 T1PPR (8-bit) 1 FFH T1PPR = FFH T1PDR = 80H Duty PWM1HR1 PWM1HR0 0 T1PDR (8-bit) 0 80H Figure 12-13 Example of PWM at 4MHz T1CK[1:0] = 10 ( 1uS ) PWM1HR = 00H T1PPR = 0EH Write T1PPR to 0AH T1PDR = 05H Period changed Source clock T1 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 01 02 03 04 05 06 07 08 09 0A 01 02 03 04 05 PWM1O POL=1 Duty Cycle [ 05H x 2uS = 10uS ] Period Cycle [ 0EH x 2uS = 28uS, 35.5KHz ] Duty Cycle [ 05H x 2uS = 10uS ] Duty Cycle [ 05H x 2uS = 10uS ] Period Cycle [ 0AH x 2uS = 20uS, 50KHz ] Figure 12-14 Example of Changing the Period in Absolute Duty Cycle (@4MHz) 58 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 13. ANALOG DIGITAL CONVERTER The analog-to-digital converter (A/D) allows conversion of an analog input signal to a corresponding 8-bit digital value. The A/D module has eight 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 ladder resistance of A/D module. The A/D module has two registers which are the control register ADCM and A/D result register ADR. The register ADCM, shown in Figure 13-1, controls the operation of the A/D converter module. The port pins can be configured as analog inputs or digital I/O. To use analog inputs, each port is assigned analog input port by setting the bit ANSEL[7:0] in R6FUNC register. Also it is assigned analog input port by setting the bit AN- ADCM 7 - R/W 5 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 ADCR contains the results of the A/D conversion. When the conversion is completed, the result is loaded into the ADCR, the A/D conversion status bit ADSF is set to "1", and the A/D interrupt flag ADIF is set. The block diagram of the A/D module is shown in Figure 13-2. 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 maximum 20 uS (at fXI=4 MHz) R/W R/W R/W R 3 2 1 0 ADS1 ADS0 ADST ADSF ADEN ADS3 ADS2 BTCL 6 R/W 4 SEL[11:8] in R7FUNC register. And selected the corresponding channel to be converted by setting ADS[3:0]. ADDRESS: 0EAH INITIAL VALUE: -000 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 0000: Channel 0 (AN0) 0001: Channel 1 (AN1) 0010: Channel 2 (AN2) 0011: Channel 3 (AN3) 0100: Channel 4 (AN4) 0101: Channel 5 (AN5) 0110: Channel 6 (AN6) 0111: Channel 7 (AN7) 1000: Channel 8 (AN8) 1001: Channel 9 (AN9) 1010: Channel 10 (AN10) 1011: Channel 11 (AN11) A/D converter Enable bit 0: A/D converter module turn off and current is not flow. 1: Enable A/D converter R 7 ADCR R 6 R 5 R 4 R 3 BTCL R 2 R 1 R 0 ADDRESS: 0EBH INITIAL VALUE: Undefined A/D Conversion Data Figure 13-1 A/D Converter Control Register SEP. 2004 Ver 2.00 59 HMS81C2012A/2020A . R6FUNC[7:0] ADS[3:0] 0000 R60/AN0 ANSEL0 0001 R61/AN1 “0” ANSEL1 0010 R62/AN2 “1” AVDD ANSEL2 R63/AN3 ADEN 0011 ANSEL3 0100 R64/AN4 LADDER RESISTOR ANSEL4 0101 R65/AN5 8-bit DAC ANSEL5 0110 R66/AN6 ANSEL6 0111 R67/AN7 S/H SUCCESSIVE APPROXIMATION CIRCUIT A/D INTERRUPT ADIF Sample & Hold ANSEL7 ADR (8-bit) R7FUNC[3:0] ADDRESS: E9H RESET VALUE: Undefined A/D result register 1000 R70/AN8 ANSEL8 1001 R71/AN9 ANSEL9 1010 R72/AN10 ANSEL10 1011 R73/AN11 ANSEL11 Figure 13-2 A/D Block Diagram 60 SEP. 2004 Ver 2.00 HMS81C2012A/2020A (2) Noise countermeasures In order to maintain 8-bit resolution, attention must be paid to noise on pins AVDD and AN11 to AN0. Since the effect in- ENABLE A/D CONVERTER creases in proportion to the output impedance of the analog input source, it is recommended that a capacitor be connected externally as shown in Figure 13-4 in order to reduce noise. A/D INPUT CHANNEL SELECT Analog Input ANALOG REFERENCE SELECT AN11~AN0 100~1000pF A/D START ( ADST = 1 ) Figure 13-4 Analog Input Pin Connecting Capacitor (3) Pins AN11/R73 to AN8/R70 and AN7/R67 to AN0/ R60 NOP ADSF = 1 NO YES READ ADCR Figure 13-3 A/D Converter Operation Flow A/D Converter Cautions (1) Input range of AN11 to AN0 The input voltage of AN11 to AN0 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. SEP. 2004 Ver 2.00 The analog input pins AN11 to AN0 also function as input/ output port (PORT R7 and R6) pins. When A/D conversion is performed with any of pins AN11 to AN0 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. (4) AVDD pin input impedance A series resistor string of approximately 10KΩ is connected between the AVDD pin and the AVSS pin. Therefore, if the output impedance of the reference voltage source is high, this will result in parallel connection to the series resistor string between the AVDD pin and the AVSS pin, and there will be a large reference voltage error. 61 HMS81C2012A/2020A 14. SERIAL PERIPHERAL INTERFACE clock synchronous type and consists of serial I/O register, serial I/O mode register, clock selection circuit octal counter and control circuit. The SOUT pin is designed to input and output. So Serial Peripheral Interface(SPI) can be operated with minimum two pin The Serial Peripheral Interface (SPI) 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. The Serial Peripheral Interface(SPI) is 8-bit SIOST SIOSF Start Complete XIN PIN Prescaler SCK[1:0] ÷4 ÷ 16 Timer0 Overflow POL 00 01 “0” 10 “1” Clock SPI CONTROL CIRCUIT Clock 11 SCLK PIN “11” Octal Counter SIOIF Serial communication Interrupt MUX not “11” SCK[1:0] SOUT PIN IOSWIN overflow IOSW SOUT IOSWIN 1 Input shift register SIN PIN 0 Shift SIOR Internal Bus Figure 14-1 SPI Block Diagram 62 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 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. The serial transmission operation mode is decided by setting the SM1 and SM0, and the polarity of transfer clock is selected by setting the POL. Serial I/O Data Register(SIOR) is a 8-bit shift register. First LSB is send or is received. When receiving mode, serial input pin is selected by IOSW. The SPI allows 8-bits of data to be synchronously transmitted and received. R/W 7 SIOM R/W 6 POL IOSW R/W 5 SM1 R/W 4 To accomplish communication, typically three pins are used: - Serial Data In - Serial Data Out - Serial Clock R54/SIN R55/SOUT R53/SCLK . R/W R/W R/W R 3 2 1 0 SCK1 SCK0 SIOST SIOSF SM0 BTCL ADDRESS: 0E0H 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(R55,R54,R53) 01: Sending Mode(SOUT,R54,SCLK) 10: Receiving Mode(R55,SIN,SCLK) 11: Sending & Receiving Mode(SOUT,SIN,SCLK) Serial Input Pin Selection bit 0: SIN Pin Selection 1: IOSWIN 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: 0E1H INITIAL VALUE: Undefined Sending Data at Sending Mode Receiving Data at Receiving Mode Figure 14-2 SPI Control Register SEP. 2004 Ver 2.00 63 HMS81C2012A/2020A 14.1 Transmission/Receiving Timing is latched at rising edge of SCLK pin. 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(IFSIO) occurred. The serial transmission is started by setting SIOST(bit1 of SIOM) to “1”. After one cycle of SCK, SIOST is cleared automatically to “0”. The serial output data from 8-bit shift register is output at falling edge of SCLK. And input data SIOST SCLK [R53] (POL=0) SOUT [R55] D0 D1 D2 D3 D4 D5 D6 D7 SIN [R54] (IOSW=0) D0 D1 D2 D3 D4 D5 D6 D7 IOSWIN [R55] (IOSW=1) D0 D1 D2 D3 D4 D5 D6 D7 SIOSF (SPI Status) SPIIF (SPI Int. Req) Figure 14-3 SPI Timing Diagram at POL=0 SIOST SCLK [R53] (POL=1) SOUT [R55] D0 D1 D2 D3 D4 D5 D6 D7 SIN [R54] (IOSW=0) D0 D1 D2 D3 D4 D5 D6 D7 IOSWIN [R55] (IOSW=1) D0 D1 D2 D3 D4 D5 D6 D7 SIOSF (SPI Status) SPIIF (SPI Int. Req) Figure 14-4 SPI Timing Diagram at POL=1 64 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 14.2 The method of Serial I/O ① Select transmission/receiving mode ④ The SIO interrupt is generated at the completion of SIO and SIOSF is set to “1”. In SIO interrupt service routine, correct transmission should be tested. Note: When external clock is used, the frequency should be less than 1MHz and recommended duty is 50%. ⑤ In case of receiving mode, the received data is acquired by reading the SIOR. ② In case of sending mode, write data to be send to SIOR. ③ Set SIOST to “1” to start serial transmission. Note: If both transmission mode is selected and transmission is performed simultaneously it would be made error. 14.3 The Method to Test Correct Transmission Serial I/O Interrupt Service Routine SIOSF 0 1 Abnormal SE = 0 Write SIOM SR 0 1 Normal Operation Overrun Error - SE : Interrupt Enable Register Low IENL(Bit3) - SR : Interrupt Request Flag Register Low IRQL(Bit3) Figure 14-5 Serial Method to Test Transmission SEP. 2004 Ver 2.00 65 HMS81C2012A/2020A 15. BUZZER FUNCTION The buzzer driver block consists of 6-bit binary counter, buzzer register BUR, and clock source selector. It generates square-wave which has very wide range frequency (480Hz ~ 250kHz at fXIN= 4MHz) by user software. The bit 0 to 5 of BUR determines output frequency for buzzer driving. A 50% duty pulse can be output to R03/BUZO pin to use for piezo-electric buzzer drive. Pin R03 is assigned for output f XIN f BUZ = --------------------------------------------------------------------------2 × DivideRatio × ( BUR + 1 ) Equation of frequency calculation is shown below. port of Buzzer driver by setting the bit 3 of R0FUNC(address 0F4H) to “1”. At this time, the pin R03 must be defined as fBUZ: Buzzer frequency output mode (the bit 3 of R0IO=1). fXIN: Oscillator frequency Divide Ratio: Prescaler divide ratio by BUCK[1:0] BUR: Lower 6-bit value of BUR. Buzzer period value. Example: 5kHz output at 4MHz. LDM LDM R0IO,#XXXX_1XXXB BUR,#0011_0010B LDM R0FUNC,#XXXX_1XXXB The frequency of output signal is controlled by the buzzer control register BUR.The bit 0 to bit 5 of BUR determine output frequency for buzzer driving. X means don’t care R03 port data 6-bit binary ÷8 Prescaler XIN PIN 00 ÷16 6-BIT COUNTER 01 ÷32 ÷64 0 ÷2 10 11 R03/BUZO PIN 1 F/F Comparator MUX 2 Compare data 3 6 R0FUNC Port selection BUR [0F4H] [0DEH] Internal bus line Figure 15-1 Block Diagram of Buzzer Driver ADDRESS : 0F4H RESET VALUE : ---- 0000B W R0FUNC - - - - BUZO W W EC0 INT1 ADDRESS: 0DEH RESET VALUE: Undefined W INT0 W BUR W W W W W W W BUCK1 BUCK0 BUR[5:0] Buzzer Period Data R03/BUZO Selection 0: R03 port (Turn off buzzer) 1: BUZO port (Turn on buzzer) Source clock select 00: ÷ 8 01: ÷ 16 10: ÷ 32 11: ÷ 64 Figure 15-2 R0FUNC and Buzzer Register 66 SEP. 2004 Ver 2.00 HMS81C2012A/2020A Note: BUR is undefined after reset, so it must be initialized to between 1H and 3FH by software. Note that BUR is a write-only register. BUR [5:0] BUR[7:6] 00 01 10 11 The 6-bit counter is cleared and starts the counting by writing signal at BUR register. It is incremental from 00H until it matches 6-bit BUR value. When main-frequency is 4MHz, buzzer frequency is shown as below table. 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 SEP. 2004 Ver 2.00 67 HMS81C2012A/2020A 16. INTERRUPTS register (IENH, IENL), and the interrupt request flags (in IRQH and IRQL) except Power-on reset and software BRK interrupt. Below table shows the Interrupt priority. The HMS81C20xxA 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). Nine interrupt sources are provided. The configuration of interrupt circuit is shown in Figure 16-2. The External Interrupts INT0 and INT1 each can be transition-activated (1-to-0 or 0-to-1 transition) by selection IEDS. The flags that actually generate these interrupts are bit INT0F and INT1F in register IRQH. When an external interrupt is generated, the flag that generated it is cleared by the hardware when the service routine is vectored to only if the interrupt was transition-activated. The Timer 0 ~ Timer 1 Interrupts are generated by TxIF 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 ADIF which is set by finishing the analog to digital conversion. The Watchdog timer Interrupt is generated by WDTIF which set by a match in Watchdog timer register. The Basic Interval Timer Interrupt is generated by BITIF which are set by a overflow in the timer counter register. R/W R/W - - - - INT0IF INT1IF T0IF T1IF - - - - R/W R/W Symbol Priority Hardware Reset External Interrupt 0 External Interrupt 1 Timer/Counter 0 Timer/Counter 1 ADC Interrupt Watchdog Timer Basic Interval Timer Serial Communication RESET INT0 INT1 TIMER0 TIMER1 ADC WDT BIT SCI 1 2 3 4 5 6 7 8 Vector addresses are shown in Figure 8-6 on page 25. Interrupt enable registers are shown in Figure 16-3. 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. The interrupts are controlled by the interrupt master enable flag I-flag (bit 2 of PSW on page 23), the interrupt enable IRQH Reset/Interrupt LSB MSB ADDRESS: 0E4H INITIAL VALUE: 0000 ----B Timer/Counter 1 interrupt request flag Timer/Counter 0 interrupt request flag External interrupt 1 request flag External interrupt 0 request flag R/W IRQL ADIF MSB R/W R/W - - - - WDTIF BITIF SPIF - - - - R/W LSB ADDRESS: 0E5H INITIAL VALUE: 0000 ----B Serial Communication interrupt request flag Basic Interval imer interrupt request flag Watchdog timer interrupt request flag A/D Conver interrupt request flag Figure 16-1 Interrupt Request Flag 68 SEP. 2004 Ver 2.00 HMS81C2012A/2020A . Internal bus line [0E2H] Interrupt Enable Register (Higher byte) IENH IRQH [0E4H] INT0 INT0IF INT1IF T0IF Timer 1 T1IF Release STOP Priority Control INT1 Timer 0 To CPU I-flag Interrupt Master Enable Flag IRQL [0E5H] A/D Converter 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. ADIF Watchdog Timer Interrupt Vector Address Generator WDTIF BIT BITIF Serial Communication SIOIF [0E3H] IENL Interrupt Enable Register (Lower byte) Internal bus line Figure 16-2 Block Diagram of Interrupt IENH R/W R/W R/W R/W - - - - INT0E INT1E T0E T1E - - - - MSB LSB ADDRESS: 0E2H INITIAL VALUE: 0000 ----B Timer/Counter 1 interrupt enable flag Timer/Counter 0 interrupt enable flag External interrupt 1 enable flag External interrupt 0 enable flag IENL R/W R/W R/W R/W - - - - ADE WDTE BITE SPIE - - - - MSB LSB ADDRESS: 0E3H INITIAL VALUE: 0000 ----B VALUE 0: Disable 1: Enable Serial Communication interrupt enable flag Basic Interval imer interrupt enable flag Watchdog timer interrupt enable flag A/D Convert interrupt enable flag Figure 16-3 Interrupt Enable Flag SEP. 2004 Ver 2.00 69 HMS81C2012A/2020A 16.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 fXIN (2 µs at fMAIN=4.19MHz) after the completion of the current instruction execution. The interrupt service task is terminated upon execution of an interrupt return instruction [RETI]. 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”. 3. The contents of the program counter (return address) 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. System clock Instruction Fetch SP Address Bus PC Data Bus Not used SP-1 PCH PCL SP-2 PSW V.L. V.L. ADL V.H. ADH New PC 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 16-4 Timing chart of Interrupt Acceptance and Interrupt Return Instruction Basic Interval Timer Vector Table Address 0FFE6H 0FFE7H 012H 0E3H Entry Address 0E312H 0E313H 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. 0EH 2EH Saving/Restoring General-purpose Register Correspondence between vector table address for BIT interrupt and the entry address of the interrupt service program. 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. 70 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 SEP. 2004 Ver 2.00 HMS81C2012A/2020A area for saving registers. 16.2 BRK Interrupt The following method is used to save/restore the generalpurpose registers. Software interrupt can be invoked by BRK instruction, which has the lowest priority order. Example: Register save using push and pop instructions 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. INTxx: PUSH PUSH PUSH A X Y ;SAVE ACC. ;SAVE X REG. ;SAVE Y REG. interrupt processing POP POP POP RETI Y X A ;RESTORE Y REG. ;RESTORE X REG. ;RESTORE ACC. ;RETURN General-purpose register save/restore using push and pop instructions; main task acceptance of interrupt Each processing step is determined by B-flag as shown in Figure 16-5. B-FLAG BRK or TCALL0 =0 =1 BRK INTERRUPT ROUTINE TCALL0 ROUTINE RETI RET interrupt service task saving registers restoring registers Figure 16-5 Execution of BRK/TCALL0 interrupt return SEP. 2004 Ver 2.00 71 HMS81C2012A/2020A 16.3 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. Example: During Timer1 interrupt is in progress, INT0 interrupt serviced without any suspend. Main Program service TIMER 1 service enable INT0 disable other INT0 service EI Occur TIMER1 interrupt However, multiple processing 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. Occur INT0 enable INT0 enable other TIMER1: PUSH PUSH PUSH LDM LDM EI : : : : : : LDM LDM POP POP POP RETI A X Y IENH,#80H IENL,#0 ;Enable INT0 only ;Disable other ;Enable Interrupt IENH,#0F0H ;Enable all interrupts IENL,#0F0H Y X A 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. Figure 16-6 Execution of Multi Interrupt 72 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 16.4 External Interrupt The external interrupt on INT0 and INT1 pins are edge triggered depending on the edge selection register IEDS (address 0F8H) as shown in Figure 16-7. The edge detection of external interrupt has three transition activated mode: rising edge, falling edge, and both edge. INT1 pin INT1IF INT1 INTERRUPT INT0 pin Example: To use as an INT0 and INT1 : : ;**** Set port as an input port R00,R01 LDM R0IO,#1111_1100B ; ;**** Set port as an interrupt port LDM R0FUNC,#0000_0011B ; ;**** Set Falling-edge Detection LDM IEDS,#0000_0101B : : : INT0IF INT0 INTERRUPT 2 IEDS 2 Edge selection Register [0E6H] Figure 16-7 External Interrupt Block Diagram INT0 and INT1 are multiplexed with general I/O ports (R00 and R01). To use as an external interrupt pin, the bit of R4 port mode register R0FUNC should be set to “1” correspondingly. max. 12 fXIN Interrupt Interrupt goes latched active Response Time The INT0 and INT1 edge are latched into INT0IF and INT1IF 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 16-8shows interrupt response timings. 8 fXIN Interrupt processing Interrupt routine Figure 16-8 Interrupt Response Timing Diagram SEP. 2004 Ver 2.00 73 HMS81C2012A/2020A W W W W - - - - R0FUNC W W BUZO BTCL EC0 W W INT1 INT0 MSB ADDRESS: 0F4H INITIAL VALUE: ---- 0000B LSB 0: R00 1: INT0 0: R01 1: INT1 0: R02 1: EC0 0: R03 1: BUZO MSB R/W IEDS - - - - R/W R/W LSB R/W IED1H BTCL IED1L IED0H IED0L INT1 ADDRESS: 0E6H INITIAL VALUE: ---- 0000B INT0 Edge selection register 00: Reserved 01: Falling (1-to-0 transition) 10: Rising (0-to-1 transition) 11: Both (Rising & Falling) Figure 16-9 R0FUNC and IEDS Registers 74 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 17. Power Saving Mode For applications where power consumption is a critical factor, device provides four kinds of power saving functions, STOP mode, Sub-active mode and Wake-up Timer mode (Stand-by mode, Watch mode). Table 17-1 shows the status of each Power Saving Mode. Peripheral STOP Mode Sub-active Mode RAM Retain Control Registers Wake-up Timer Mode Stand-by Mode Watch Mode Retain Retain Retain Retain Retain Retain Retain I/O Ports Retain Retain Retain Retain CPU Stop Operation Stop Stop Timer0 Stop Operation Operation Operation Oscillation Stop Stop Oscillation Stop Sub Oscillation Stop Oscillation Stop Oscillation Prescaler Stop Operation ÷ 2048 only ÷ 2048 only Entering Condition [WAKEUP] 0 0 1 1 Table 17-1 Power Saving Mode The power saving function is activated by execution of STOP instruction and by execution of STOP instruction after setting the corresponding status (WAKEUP) of CKCTLR. We shows the release sources from each Power Saving Mode Wake-up Timer Mode Release Source STOP Mode Sub-active Mode Stand-by Mode Watch Mode RESET O O O O RCWDT O O O O O O O O X X O O EXT.INT0 EXT.INT1 Timer0 Table 17-2 Release Sources from Power Saving Mode SEP. 2004 Ver 2.00 75 HMS81C2012A/2020A 17.1 Operating Mode SUB-ACTIVE Mode SCMR.1 = 1 SCMR.0 = 0/1 fXI : Main clock frequency fSXI : sub clock frequency fSYS : fXI,fXI÷4,fXI÷8,fXI÷32 fSUB : fSXI,fSXI÷4,fSXI÷8,fSXI÷32 cpu : system clock tmr : timer0 clock peri : peripheral clock fXI : stop fSXI : oscillation cpu : fSUB tmr : fSUB peri : fSUB CKCTLR[10] + STOP CKCTLR = CKCTLR[6:5] SCMR.0 = 0 + SCMR.1 = 0 STANDBY Mode CKCTLR[10] + STOP SCMR.1 = 0 fXI : oscillation fSXI : oscillation cpu : stop tmr : ps11(fXI) peri : stop TIMER0 EXT_INT RESET RC_WDT TIMER0 EXT_INT RESET RC_WDT SCMR.1 = 1 ACTIVE Mode WATCH Mode SCMR.1 = 0 fXI : oscillation fSXI : oscillation cpu : fSYS tmr : fSYS peri : fSYS SCMR.1 = 1 fXI : stop fSXI : oscillation cpu : stop tmr : ps11(fSXI) peri : stop CKCTLR[00] + STOP EXT_INT RESET RC_WDT STOP Mode SCMR.2 = 1 (SUB_CLK OFF) CKCTLR[00] + STOP EXT_INT RESET RC_WDT fXI : stop fSXI : stop cpu : stop tmr : stop peri : stop System Clock Mode Register SCMR CS[1:0] - 76 - CS1 CS0 SUBOFF CLKSEL MAINOFF ADDRESS : FAH RESET VALUE : ---00000 Clock selection enable bits 00 : fXI 10 : fXI ÷ 8 CLKSEL Clock selection bit 0 : Main clock selection 1 : Sub clock selection Sub clock control bit 0: On sub clock 1: Off sub clock MAINOFF Main clock control bit 0: On main clock 1: Off main clock 01 : fXI ÷ 4 SUBOFF - 11 : fXI ÷ 32 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 17.2 Stop Mode In the Stop mode, the on-chip oscillator is stopped. With the clock frozen, all functions are stopped, but 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. 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 "STOP" which starts the STOP operating mode. The Stop mode is activated by execution of STOP instruction after clearing the bit WAKEUP of CKCTLR to “0”. (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. Release the STOP mode The exit from STOP mode is hardware reset or external interrupt. 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. If Iflag = 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 17-1) When exit from Stop mode by external interrupt, enough oscillation stabilization time is required to normal operation. Figure 17-2 shows the timing diagram. When release 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 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 Stop mode is shown in Figure . STOP INSTRUCTION STOP Mode 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,#0000_1110B STOP NOP NOP In the STOP operation, the dissipation of the power 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 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. SEP. 2004 Ver 2.00 Interrupt Request Corresponding Interrupt Enable Bit (IENH, IENL) IEXX =0 =1 STOP Mode Release Master Interrupt Enable Bit PSW[2] I-FLAG =0 =1 Interrupt Service Routine Next INSTRUCTION Figure 17-1 STOP Releasing Flow by Interrupts 77 HMS81C2012A/2020A . ~ ~ ~ ~ ~ ~ Oscillator (XIN pin) ~ ~ ~ ~ Internal Clock ~ ~ STOP Instruction Executed n+1 n+2 n+3 0 Clear Normal Operation Stop Operation 1 ~ ~ ~ ~ n ~ ~ ~ ~ BIT Counter ~ ~ External Interrupt FE tST > 20ms by software FF 0 1 2 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 17-2 STOP Mode Release Timing by External Interrupt STOP Mode ~ ~ ~ ~ ~ ~ ~ ~ Oscillator (XI pin) ~ ~ ~ ~ ~ ~ Internal Clock RESETB ~ ~ Internal RESETB ~ ~ STOP Instruction Execution Time can not be control by software Stabilization Time tST = 64mS @4MHz Figure 17-3 Timing of STOP Mode Release by RESET 17.3 Wake-up Timer Mode In the Wake-up Timer mode, the on-chip oscillator is not stopped. Except the Prescaler(only 2048 divided ratio) and Timer0, all functions are stopped, but 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 Wake-up Timer mode is activated by execution of STOP instruction after setting the bit WAKEUP 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) struction should be written Ex) LDM TDR0,#0FFH LDM TM0,#0001_1011B LDM CKCTLR,#0100_1110B STOP NOP NOP In addition, the clock source of timer0 should be selected to 2048 divided ratio. Otherwise, the wake-up function can not work. And the timer0 can be operated as 16-bit timer with timer1. (refer to timer function)The period of wakeup function is varied by setting the timer data register 0, TDR0. Note: After STOP instruction, at least two or more NOP in- 78 SEP. 2004 Ver 2.00 HMS81C2012A/2020A Release the Wake-up Timer mode The exit from Wake-up Timer mode is hardware reset, Timer0 overflow or external interrupt. Reset re-defines all the Control registers but does not change the on-chip RAM. External interrupts and Timer0 overflow allow both on-chip RAM and Control registers to retain their values. If I-flag = 1, the normal interrupt response takes place. If I- When exit from Wake-up Timer mode by external interrupt or timer0 overflow, the oscillation stabilization time is not required to normal operation. Because this mode do not stop the on-chip oscillator shown as Figure 17-4. ~ ~ ~ ~ ~ ~ Oscillator (XI pin) CPU Clock STOP Instruction Execution ~ ~ Interrupt Request 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 17-1) Normal Operation Wake-up Timer Mode ( stop the CPU clock ) Normal Operation Do not need Stabilization Time Figure 17-4 Wake-up Timer Mode Releasing by External Interrupt or Timer0 Interrupt 17.4 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 WAKEUP and RCWDT of CKCTLR to " 01 ". (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 STOP NOP NOP The exit from Internal RC-Oscillated Watchdog Timer mode is hardware reset or external interrupt. Reset re-defines all the Control registers but does not change the onchip RAM. External interrupts allow both on-chip RAM SEP. 2004 Ver 2.00 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 17-5) 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 17-6) 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 17-1) When exit from Internal RC-Oscillated Watchdog Timer mode by external interrupt, the oscillation stabilization time is required to normal operation. Figure 17-5 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 17-6. 79 HMS81C2012A/2020A ~ ~ ~ ~ ~ ~ Oscillator (XI pin) Internal RC Clock ~ ~ ~ ~ Internal Clock ~ ~ External Interrupt ( or WDT Interrupt ) ~ ~ Clear Basic Interval Timer STOP Instruction Execution ~ ~ BIT Counter N-2 N-1 N N+1 N+2 00 01 FE FF 00 00 ~ ~ Normal Operation Stabilization Time tST > 20mS RCWDT Mode Normal Operation Figure 17-5 Internal RCWDT Mode Releasing by External Interrupt or WDT Interrupt RCWDT Mode ~ ~ ~ ~ ~ ~ Oscillator (XI pin) Internal RC Clock ~ ~ ~ ~ Internal Clock ~ ~ ~ ~ RESET RESET by WDT ~ ~ ~ ~ Internal RESET STOP Instruction Execution Time can not be control by software Stabilization Time tST = 64mS @4MHz Figure 17-6 Internal RCWDT Mode Releasing by RESET 17.5 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. Note: In the STOP operation, the power dissipation asso- 80 ciated 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 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 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 conseider the setting to input mode. Be sure that there is 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 unfirmed voltage level (not VSSor VDD) is applied to input pin, there can be little current (max. 1mA at around 2V) flow. If it is not appropriate to set as an input mode, then set to output mode considering there is no current flow. Setting to High or Low is decided 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 pull-down register, it is set to low. VDD INPUT PIN INPUT PIN VDD VDD internal pull-up VDD i=0 OPEN O i GND O i 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 17-7 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 17-8 Application Example of Unused Output Port SEP. 2004 Ver 2.00 81 HMS81C2012A/2020A 18. OSCILLATOR CIRCUIT The HMS81C20xxA has two oscillation circuits internally. XIN and XOUT are input and output for main frequency and SXIN and SXOUT are input and output for sub frequenC1 cy, respectively, inverting amplifier which can be configured for being used as an on-chip oscillator, as shown in Figure 18-1. C1 XOUT C2 4.19MHz SXOUT C2 XIN 32.768KHz VSS SXIN VSS Recommend C1,C2 = 100~120pF Recommend Crystal Oscillator C1,C2 = 20pF Ceramic Resonator C1,C2 = 30pF Crystal or Ceramic Oscillator Open XOUT XOUT REXT External Clock XIN XIN External Oscillator For selection R value, Refer to AC Characteristics RC Oscillator (mask option) Figure 18-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. 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. XOUT XIN In addition, see Figure 18-2 for the layout of the crystal. 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. 82 Figure 18-2 Layout of Oscillator PCB circuit SEP. 2004 Ver 2.00 HMS81C2012A/2020A 19. RESET The HMS81C20xxA have two types of reset generation procedures; one is an external reset input, the other is a On-chip Hardware 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 29 Program counter RAM page register Initial Value watch-dog timer reset. Table 19-1 shows on-chip hardware initialization by reset action. (PC) G-flag Operation mode Main-frequency clock Power fail detector Disable Table 19-1 Initializing Internal Status by Reset Action 19.1 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, 64ms (at 4 MHz) add with 7 oscillator periods are required to start execution as shown in Figure 19-2. A connection for simple power-on-reset is shown in Figure 19-1. VCC 10kΩ 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 19-1 Simple Power-on-Reset Circuit 1 3 ? ? 4 5 6 7 ~ ~ RESET ~ ~ ? ? FFFE FFFF Start ~ ~ ~ ~ ? ? ? ? FE ADL ADH OP ~ ~ DATA BUS 2 ~ ~ Oscillator (XIN pin) ADDRESS BUS to the RESET pin 7036P Stabilization Time tST = 62.5mS at 4.19MHz RESET Process Step tST = 1 fMAIN ÷1024 MAIN PROGRAM x 256 Figure 19-2 Timing Diagram after RESET 19.2 Watchdog Timer Reset Refer to “11. WATCHDOG TIMER” on page 42. SEP. 2004 Ver 2.00 83 HMS81C2012A/2020A 20. POWER FAIL PROCESSOR The HMS81C20xxA 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 “7.4 DC Electrical Characteristics for Standard Pins(5V)” on page 16. Note: If power fail voltage is selected to 3.0V on 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. Note: User can select power fail voltage level according to PFD0, PFD1 bit of CONFIG register(703FH) at the OTP (HMS87C20xxA) but must select the power fail voltage level to define PFD option of “Mask Order & Verification Sheet” at the mask chip(HMS81C20xxA). Because the power fail voltage level of mask chip (HMS81C20xxA) is determined according to mask option. 7 PFDR 6 5 4 3 R/W 2 Power FailFunction OTP MASK Enable/Disable PFDIS flag PFDIS flag Level Selection PFS0 bit PFS1 bit Mask option Table 20-1 Power fail processor . R/W R/W 1 0 PFDIS PFDM PFS ADDRESS: 0EFH INITIAL VALUE: ---- -100B Power Fail Status 0: Normal operate 1: Set to “1” if power fail is detected Operation Mode 0 : Normal operation regardless of power fail 1 : MCU will be reset by power fail detection Disable Flag 0: Power fail detection enable 1: Power fail detection disable Figure 20-1 Power Fail Voltage Detector Register 84 SEP. 2004 Ver 2.00 HMS81C2012A/2020A RESET VECTOR YES PFS =1 NO RAM CLEAR INITIALIZE RAM DATA PFS = 0 Skip the initial routine INITIALIZE ALL PORTS INITIALIZE REGISTERS FUNTION EXECUTION Figure 20-2 Example S/W of RESET flow by Power fail VDD VPFDMAX VPFDMIN 64mS Internal RESET VDD When PFR = 1 Internal RESET t <64mS 64mS VDD Internal RESET 64mS VPFDMAX VPFDMIN VPFDMAX VPFDMIN Figure 20-3 Power Fail Processor Situations SEP. 2004 Ver 2.00 85 HMS81C2012A/2020A 21. OTP PROGRAMMING 21.1 DEVICE CONFIGURATION AREA as Customer ID recording locations where the user can store check-sum or other customer identification numbers. This area is not accessible during normal execution but is readable and writable during program / verify. The Device Configuration Area can be programmed or left unprogrammed to select device configuration such as security bit. Sixteen memory locations (7030H ~ 703FH) are designated 7030H ID 7030H ID 7031H ID 7032H ID 7033H ID 7034H ID 7035H ID 7036H ID 7037H ID 7038H ID 7039H ID 703AH ID 703BH ID 703CH ID 703DH ID 703EH CONFIG 703FH DEVICE CONFIGURATION AREA 703FH 7 CONFIG 6 R7X 5 4 PFS1 PFS0 3 2 LOCK 1 0 RCO ADDRESS: 703FH INITIAL VALUE: -000 -0-0B External RC OSC Selection 0: Crystal or Resonator Oscillator 1: External RC Oscillator Code Protect 0 : Allow Code Read Out 1 : Lock Code Read Out PFD Level Selection 00: PFD = 2.7V 01: PFD = 2.7V 10: PFD = 3.0V 11: PFD = 2.4V R74, R75 Port Selection 0 : Sub Clock 1 : R74, R75 Figure 21-1 Device Configuration Area 86 SEP. 2004 Ver 2.00 HMS81C2012A/2020A 64SDIP R40 R41 R42 R43 R50 R51 R52 R53 R54 R55 R56 R57 RESET XI XO VSS SXI SXO AVSS R60 R61 R62 R63 R64 R65 R66 R67 R70 R71 R72 R73 AVDD CTL3 CTL2 CTL1 CTL0 VPP EPROM Enable VSS A_D0 A_D1 A_D2 A_D3 A_D4 A_D5 A_D6 A_D7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 RA/Vdisp R35 R34 R33 R32 R31 R30 R27 R26 R25 R24 R23 R22 R21 R20 R17 R16 R15 R14 R13 R12 R11 R10 R07 R06 R05 R04 R03 R02 R01 R00 VDD VDD Figure 21-2 Pin Assignment (64SDIP) User Mode Pin No. Pin Name EPROM MODE Pin Name Description 8 R53 CTL3 Read/Write Control P_Vb 9 R54 CTL2 Address/Data Control D_Ab 10 R55 CTL1 Write Control 1 11 R56 CTL0 Write Control 0 13 RESET VPP Programming Power (0V, 12V) 14 XIN EPROM Enable High Active, Latch Address in falling edge 15 XOUT NC No connection 16 VSS VSS Connect to VSS (0V) 20 R60 A_D0 21 R61 A_D1 22 R62 A_D2 23 R63 A_D3 24 R64 A_D4 25 R65 A_D5 26 R66 A_D6 27 R67 A_D7 33 VDD VDD Address Input Data Input/Output Address Input Data Input/Output A8 A0 D0 A9 A1 D1 A10 A2 D2 A11 A3 D3 A12 A4 D4 A13 A5 D5 A14 A6 D6 A15 A7 D7 Connect to VDD (6.0V) Table 21-1 Pin Description in EPROM Mode (HMS81C2020A) SEP. 2004 Ver 2.00 87 HMS81C2012A/2020A TSET1 THLD1 TDLY1 TDLY2 ~ ~ VIHP ~ ~ TVPPS ~ ~ ~ ~ EPROM Enable THLD2 VPP TVDDS TCD1 0V 0V LA DATA IN DATA OUT LA DATA OUT DATA IN ~ ~ ~ ~ VDD HA TCD1 ~ ~ ~ ~ A_D7~ A_D0 TCD1 ~ ~ CTL3 ~ ~ VDD1H TCD1 VDD1H ~ ~ ~ ~ CTL2 0V ~ ~ ~ ~ CTL0/1 TVPPR VDD1H High 8bit Address Input Low 8bit Address Input Write Mode Verify Low 8bit Address Input Write Mode Verify Figure 21-3 Timing Diagram in Program (Write & Verify) Mode 88 SEP. 2004 Ver 2.00 HMS81C2012A/2020A After input a high address, output data following low address input TSET1 THLD1 TDLY1 THLD2 Anothe high address step TDLY2 EPROM Enable TVPPS VIHP VPP TVDDS CTL0/1 0V TVPPR VDD2H CTL2 0V CTL3 0V TCD2 VDD2H TCD1 A_D7~ A_D0 VDD TCD2 TCD1 HA LA DATA LA DATA HA LA DATA High 8bit Address Input Low 8bit Address Input DATA Output Low 8bit Address Input DATA Output High 8bit Address Input Low 8bit Address Input DATA Output VDD2H Figure 21-4 Timing Diagram in READ Mode Parameter Symbol MIN TYP MAX Unit Programming Supply Current IVPP - - 50 mA Supply Current in EPROM Mode IVDDP - - 20 mA VPP Level during Programming VIHP 11.5 12.0 12.5 V VDD Level in Program Mode VDD1H 5 6 6.5 V VDD Level in Read Mode VDD2H - 2.7 - V CTL3~0 High Level in EPROM Mode VIHC 0.8VDD - - V CTL3~0 Low Level in EPROM Mode VILC - - 0.2VDD V A_D7~A_D0 High Level in EPROM Mode VIHAD 0.9VDD - - V A_D7~A_D0 Low Level in EPROM Mode VILAD - - 0.1VDD V VDD Saturation Time TVDDS 1 - - mS VPP Setup Time TVPPR - - 1 mS VPP Saturation Time TVPPS 1 - - mS EPROM Enable Setup Time after Data Input TSET1 200 nS EPROM Enable Hold Time after TSET1 THLD1 500 nS Table 21-2 AC/DC Requirements for Program/Read Mode SEP. 2004 Ver 2.00 89 HMS81C2012A/2020A EPROM Enable Delay Time after THLD1 TDLY1 200 nS EPROM Enable Hold Time in Write Mode THLD2 100 nS EPROM Enable Delay Time after THLD2 TDLY2 200 nS CTL2,1 Setup Time after Low Address input and Data input TCD1 100 nS CTL1 Setup Time before Data output in Read and Verify Mode TCD2 100 nS Table 21-2 AC/DC Requirements for Program/Read Mode START Set VDD=VDD1H Report Programming failure Set VPP=VIHP VDD=6V & 2.7V Verify FAIL Verify blank Report Verify failure Verify of all address FAIL PASS PASS Report Programming OK First Address Location Next address location VPP=0V N=1 VDD=0V N=N+1 YES EPROM Write 100uS program time N ≤ 10 END NO FAIL Verify PASS Apply 3x program cycle NO Last address ? YES Figure 21-5 Programming Flow Chart 90 SEP. 2004 Ver 2.00 APPENDIX GMS800 Series A. CONTROL REGISTER LIST Address Register Name Initial Value Symbol R/W R0 R/W Undefined 35 R0IO W 00000000 35 R1 R/W Undefined 36 R1IO W 00000000 36 R2 R/W Undefined 36 R2IO W 00000000 36 R3 R/W Undefined 36 R3IO W - - 000000 36 R4 R/W Undefined 36 R4IO W - - - - 0000 36 R5 R/W Undefined 37 R5IO W 00000000 37 R6 R/W Undefined 37 R6IO W 00000000 37 R7 R/W Undefined 38 7 6 5 4 3 2 1 0 Page 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 R2 port data register 00C5 R2 port I/O direction register 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 R7 port data register 00CF R7 port I/O direction register R7IO W - - 000000 38 00D0 Timer mode register 0 TM0 R/W - - 000000 45 T0 R 00000000 46 Timer 0 data register TDR0 W 11111111 45 Capture 0 data register CDR0 R 00000000 52 Timer mode register 1 TM1 R/W 00000000 45 Timer 1 data register TDR1 W 11111111 45 T1PPR W 11111111 57 T1 R 00000000 46 PWM 1 duty register T1PDR R/W 00000000 57 Capture 1 data register CDR1 R 00000000 52 Timer 0 register 00D1 00D2 00D3 PWM 1 period register Timer 1 register 00D4 00D5 PWM 1 High register PWM1HR W - - - - 0000 56 00DE Buzzer driver register BUR W 11111111 65 00E0 Serial I/O mode register SIOM R/W 00000001 62 00E1 Serial I/O data register SIOR R/W Undefined 62 00E2 Interrupt enable register high IENH R/W 0000 - - - - 68 00E3 Interrupt enable register low IENL R/W 0000 - - - - 68 00E4 Interrupt request flag register high IRQH R/W 0000 - - - - 67 00E5 Interrupt request flag register low IRQL R/W 0000 - - - - 67 00E6 External interrupt edge selection register IEDS R/W - - - - 0000 73 00EA A/D converter mode register ADCM R/W - 0000001 58 SEP. 2004 i GMS800 Series Address R/W A/D converter data register ADCR R Undefined 58 Basic interval timer mode register BITR R 00000000 40 CKCTLR W - 0010111 40 Watchdog Timer Register WDTR R 00000000 42 Watchdog Timer Register WDTR W 01111111 42 00EF Power fail detection register PFDR R/W - - - - - 100 83 00F4 R0 Function selection register R0FUNC W - - - - 0000 35 00F5 R4 Function selection register R4FUNC W - - - - - - - 0 36 00F6 R5 Function selection register R5FUNC W - 0 - - - - - - 37 00F7 R6 Function selection register R6FUNC W 00000000 37 00F8 R7 Function selection register R7FUNC W - - - - 0000 38 00F9 R5 N-MOS open drain selection register R5MPDR W 00000000 37 00FA System clock mode register SCMR R/W - - - 00000 75 00FB RA port data register RA R Undefined 35 00EC 00ED ii Initial Value Symbol 00EB Register Name Clock control register 7 6 5 4 3 2 1 0 Page SEP. 2004 GMS800 Series B. INSTRUCTION B.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 SEP. 2004 − Subtraction × Multiplication / Division () Contents Expression ∧ AND ∨ OR ⊕ Exclusive OR ~ NOT ← Assignment / Transfer / Shift Left → Shift Right ↔ Exchange = Equal ≠ Not Equal iii GMS800 Series B.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 iv 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 SEP. 2004 GMS800 Series B.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- SEP. 2004 Compare Y contents with memory contents (Y)-(M) M← (M)-1 N-----ZC N-----Z- v 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 77 ROR dp 69 2 4 78 ROR dp + X 79 2 5 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 vi 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 ←←←←←←←← N-----ZC Rotate right through Carry 7 6 5 4 3 2 1 0 →→→→→→→→ C N-----ZC Subtract with Carry A ← ( A ) - ( M ) - ~( C ) NV--HZC SEP. 2004 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 SEP. 2004 (M)↔A Exchange X-register contents with Y-register : X ↔ Y N-----Z-------- vii 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. 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) viii SEP. 2004 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) -------- SEP. 2004 -------- ix GMS800 Series Control Operation & Etc. No. x 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 ) -------- -------- SEP. 2004 C. MASK ORDER SHEET MASK ORDER & VERIFICATION SHEET HMS81C20XXA-HK Customer should write inside thick line box. 2. Device Information 1. Customer Information Company Name Package 64SDIP Internet Application Tel: MM Fax: E-mail address: 64LQFP Hitel Chollian ( File Name DD Mask Data YYYY Order Date 64MQFP ) .OTP ROM Size (bytes) Check Sum 12K 20K ( ) (20K) B000H (12K) D000H Name & Signature: Set “00H” in blanked area .OTP file FFFFH (Please check mark√ into 3. Marking Specification 12 or 20 Customer’s logo HMS81C20XXA-HK YYWW HMS81C20XXA-HK YYWW KOREA KOREA Customer logo is not required. 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. Verification date: YYYY Check sum: Tel: E-mail address: Name & Signature: MM DD Approval date: YYYY MM DD I agree with your verification data and confirm you to make mask set. Fax: Tel: E-mail address: Name & Signature: Fax: ) HMS81C20XXA MASK OPTION LIST Customer should write inside thick line box. 1. RA/Vdisp RA without pull-down resistor Vdisp (Please check mark√ into ) 2. CONFIG OPTION Check X X 7 CONFIG 6 R7X X X 5 4 CONFIG Default Value : X000X0X0 3 2 1 0 ADDRESS: 703FH INITIAL VALUE: -000 -0-0B RCO PFS1 PFS0 External RC OSC Selection 0: Crystal or Resonator Oscillator 1: External RC Oscillator R74, R75 Selection 0 : Sub Clock 1 : R74, R75 PFD Level Selection 00: PFD = 2.7V 01: PFD = 2.7V 10: PFD = 3.0V 11: PFD = 2.4V 3. H/V Port OPTION Check (Pull-down Option Check ) Port Option ON OFF Port Option ON OFF Port Option ON OFF Port R00/INT0 R10 R20 R30 R01/INT1 R11 R21 R31 R02/EC0 R12 R22 R32 R03/BUZO R13 R23 R33 R04 R14 R24 R34 R05 R15 R25 R35 R06 R16 R26 R07 R17 R27 Option ON OFF ON : with pull-down resistor OFF : without pull-down resistor 4. Normal Port OPTION Check ( Pull-up Option Check ) Port Option ON OFF Port Option ON OFF Port Option ON OFF Port R40/T0O R50 R60/AN0 R41 R51 R61/AN1 R71/AN9 R42 R52 R62/AN2 R72/AN10 R43 R53/SCLK R63/AN3 R73/AN11 R54/SIN R64/AN4 R55/SOUT R65/AN5 R56/PWM R66/AN6 R57 R67/AN7 Option ON OFF R70/AN8 ON : with pull-up resistor OFF : without pull-up resistor