SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Product List Features SM59D04G2L25, 25MHz 16KB internal Flash MCU SM59D04G2C25, 25MHz 16KB internal Flash MCU Description z z z z z The SM59D04G2 series product is an 8-bit single chip z macro-controller with 16KB Flash & 1K byte RAM embedded. It is a derivative of the 8052 micro-controller z family with a fully compatible instruction sets. z The 16K embedded Flash can be programmed via a commercial writer or ISP (In-System Programming) or ICP z (In-Circuit Programming) function. The unused Flash can z be the memory space for the EEPROM application through z the ISP. After programming, the code can be protected to z z prevent illegal read and write. Its plentiful peripherals can make many applications easier z and more efficient, such as dual DPTR, UART, WDT, z Timers, PCA and EEI which are functionally compatible with most other chips. SM59D04G2 also provides power saving modes (IDLE and z z STOP), low EMI characteristics, etc. All of the requirements are considered to achieve the ideal MCU. z Ordering Information yymmv SM59D04G2ihhkL yy: year, mm: month v: version identifier{ A, B,…} i: process identifier {L=2.7V~3.6V,C=4.5V~ 5.5V} hh: working clock in MHz {25} k: package type postfix {as below table} L:PB Free identifier {No text is Non-PB Free,”P” is PB Free} Postfix P J Q Package 40L PDIP 44L PLCC 44L QFP Pin / Pad Configuration Page 2 Page 3 Page 4 z z z z z z z Operating Voltage: 2.7V ~ 3.6V or 4.5V ~ 5.5V General 8052 family compatible 12 or 6 clocks per machine cycle Frequency runs up to 25MHz 16K byte on chip program Flash with In-System Programming(ISP) and EEPROM capability 768 Bytes on-chip expanded RAM with disable function 256 Bytes for standard 8052 RAM. External RAM address up to 64KB Dual 16-bit Data Pointers (DPTR0 & DPTR1) One channel serial peripheral interface (UART) Three 16 bit Timers/Counters(Timer 0 , 1, 2) Four 8-bit I/O ports for PDIP package Four 8-bit I/O ports + one 4-bit I/O ports for PLCC or QFP package Programmable Watchdog Timer (WDT) Programmable Counter Array (PCA) for Pulse Width Modulation (PWM), capture and compare External interrupt 0, 1 with two priority level Expanded External Interrupt (EEI) interface for eight more external interrupts. ISP service program space configurable in N*512 byte (N=0 to 8) size for IAP application Direct and simple ICP programming without service program ALE output select for low EMI Clock output as the source for next MCU Power Management Unit ( IDLE and STOP mod) Code protection function Flash Memory Endurance : 100K erase and write cycles each byte at TA=25℃ Flash Memory Data Retention :10 years Contact SyncMOS : www.syncmos.com.tw 6F, No.10-2 Li- Hsin 1st Road , SBIP, Hsinchu, Taiwan 30078 TEL: 886-3-567-1820 FAX: 886-3-567-1891 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 1 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Pin Configuration 1 40 VDD T2EX/P1.1 2 39 P0.0/AD0 CCCI/P1.2 3 38 P0.1/AD1 CC0/P1.3 4 37 P0.2/AD2 CC1/P1.4 5 36 P0.3/AD3 CC2/P1.5 6 35 P0.4/AD4 CC3/P1.6 7 34 P0.5/AD5 CC4/P1.7 8 33 P0.6/AD6 RESET 9 32 P0.7/AD7 RXD/P3.0 10 31 EA TXD/P3.1 11 30 ALE INT0/P3.2 12 29 PSEN INT1/P3.3 13 28 P2.7/A15 T0/P3.4 14 27 P2.6/A14 T1/P3.5 15 26 P2.5/A13 WR/P3.6 16 25 P2.4/A12 RD/P3.7 17 24 P2.3/A11 XTAL2 18 23 P2.2/A10 XTAL1 19 22 P2.1/A9 VSS 20 21 P2.0/A8 SyncMOS T2/P1.0 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 2 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 39 38 P0.3/AD3 P2.7/A15 T0/P3.4 P2.6/A14 T1/P3.5 P2.5/A13 18 19 20 21 22 23 24 25 26 27 28 A12/P2.4 37 P0.2/AD2 INT1/P3.3 A11/P2.3 36 P0.1/AD1 PSEN A10/P2.2 35 P0.0/AD0 INT0/P3.2 A9/P2.1 34 VDD ALE A8/P2.0 TXD/P3.1 33 P4.2 P4.1 P4.0 P4.3 32 P1.0/T2 EA VSS RXD/P3.0 31 P1.1/T2EX P0.7/AD7 XTAL1 RESET 30 P1.2/CCCI P0.6/AD6 XTAL2 CC4/P1.7 CC3/P1.6 RD/P3.7 P0.5/AD5 CC2/P1.5 WR/P3.6 P0.4/AD4 29 P1.3/CC0 40 7 41 8 42 9 43 10 44 11 1 12 2 13 3 14 4 15 5 16 6 17 P1.4/CC1 16KB+ ISP Flash & 1KB RAM embedded Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 3 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA P4.1 ALE PSEN P2.7/A15 P2.6/A14 P2.5/A13 33 32 31 30 29 28 27 26 25 24 23 16KB+ ISP Flash & 1KB RAM embedded 17 P4.0 T2/P1.0 40 16 VSS T2EX/P1.1 41 15 XTAL1 CCCI/P1.2 42 14 XTAL2 CC0/P1.3 43 13 P3.7/RD CC1/P1.4 44 12 P3.6/WR 11 39 T1/P3.5 P4.2 10 P2.0/A8 T0/P3.4 18 9 38 INT1/P3.3 VDD 8 P2.1/A9 INT0/P3.2 19 7 37 TXD/P3.1 AD0/P0.0 6 P2.2/A10 P4.3 20 5 36 RXD/P3.0 AD1/P0.1 4 P2.3/A11 RESET 21 3 35 CC4/P1.7 AD2/P0.2 2 P2.4/A12 CC3/P1.6 22 1 34 CC2/P1.5 AD3/P0.3 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 4 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Block Diagram Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 5 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Pin Description 40L PDIP Pin# 1 2 44L QFP Pin# 40 41 44L PLCC Pin# 2 3 Symbol I/O P10/T2/EEI0/ICP_CLK i/o i/o Bit 0 of port 1 & Timer 2 external input clock & EEI interrupt 0 & ICP clock input i/o Bit 2 of port 1 & PCA External clock input & EEI interrupt 2 & ICP data/command IO i/o i/o i/o i/o i/o i i/o i/o i/o i/o i/o i/o i/o i/o o i Bit 3 of port 1 & PCA Channel 0 & EEI interrupt 3 Bit 4 of port 1 & PCA Channel 1 & EEI interrupt 4 Bit 5 of port 1 & PCA Channel 2 & EEI interrupt 5 Bit 6 of port 1 & PCA Channel 3 & EEI interrupt 6 Bit 7 of port 1 & PCA Channel 4 & EEI interrupt 7 Hardware reset input (active high) Bit 0 of port 3 & Serial interface channel receive/transmit data P11/T2EX/EEI1/ICP_TRIG 3 42 4 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 43 44 1 2 3 4 5 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 P12/CCCI/EEI2 /ICP_DATA P13/CC0/EEI3 P14/CC1/EEI4 P15/CC2/EEI5 P16/CC3/EEI6 P17/CC4/EEI7 RESET P30/RXD P31/TXD P32/INT0 P33/INT1 P34/T0 P35/T1 P36/WR P37/RD XTAL2 XTAL1 VSS P20/A8 P21/A9 P22/A10 P23/A11 P24/A12 P25/A13 P26/A14 P27/A15 29 26 32 PSEN/ Clk_out o 30 31 32 33 34 35 36 37 38 39 40 27 29 30 31 32 33 34 35 36 37 38 17 28 39 6 33 35 36 37 38 39 40 41 42 43 44 23 34 1 12 ALE EA P07/AD7 P06/AD6 P05/AD5 P04/AD4 P03/AD3 P02/AD2 P01/AD1 P00/AD0 VDD P40 P41 P42 P43 o I i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o i/o Names Bit 1 of port 1 & Timer 2 capture trigger & EEI interrupt 1 & ICP Trigger (active low) Bit 1 of port 3 & Serial interface channel transmit data or receive clock in mode 0 Bit 2 of port 3 & External interrupt 0 (low or falling-edge trigger) Bit 3 of port 3 & External interrupt 1 (low or falling-edge trigger) Bit 4 of port 3 & Timer 0 external input Bit 5 of port 3 & Timer 1 external input Bit 6 of port 3 & external memory write signal Bit 7 of port 3 & external memory read signal Crystal output or oscillator input Crystal input Ground Bit 0 of port 2 & Bit 8 of external memory address Bit 1 of port 2 & Bit 9 of external memory address Bit 2 of port 2 & Bit 10 of external memory address Bit 3 of port 2 & Bit 11 of external memory address Bit 4 of port 2 & Bit 12 of external memory address Bit 5 of port 2 & Bit 13 of external memory address Bit 6 of port 2 & Bit 14 of external memory address Bit 7 of port 2 & Bit 15 of external memory address Program storage enable (active low) & crystal/oscillator clock output as the clock source for the others Address latch enable External access with internal pull-up (active low) Bit 7 of port 0 & Bit 7 of external memory address/data Bit 6 of port 0 & Bit 6 of external memory address/data Bit 5 of port 0 & Bit 5 of external memory address/data Bit 4 of port 0 & Bit 4 of external memory address/data Bit 3 of port 0 & Bit 3 of external memory address/data Bit 2 of port 0 & Bit 2 of external memory address/data Bit 1 of port 0 & Bit 1 of external memory address/data Bit 0 of port 0 & Bit 0 of external memory address/data Power supply Bit 0 of port 4 Bit 1 of port 4 Bit 2 of port 4 Bit 3 of port 4 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 6 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Special Function Register (SFR) Address 80h to FFh is the location of SM59D04G2 special function register (SFR). These locations must be accessed by direct addressing mode only. The following table gives the SFRs, part of them are identically located and defined as the general 8052 series: Table: SM59D04G2 SFR location 0/8 F8 F0 E8 E0 D8 D0 C8 C0 B8 B0 A8 A0 98 90 88 80 1/9 2/A 3/B B ACC P4 PSW T2CON IP P3 IE P2 SCON P1 TCON P0 T2MOD RCAP2L RCAP2H 4/C 5/D 6/E 7/F ISPFAH KBLS ISPFAL KBE ISPFD KBF ISPC TL2 TH2 IP1 SCONF RCON IE1 PCAC1 SBUF CC2DH TMOD SP PCAC2 PCACH CC2DL TL0 DPL CC0CON CC1CON CC2CON CC3CON CC4CON PCACL CC3DH TL1 DPH CC0DH CC3DL TH0 DPL1 CC0DL CC4DH TH1 DPH1 CC1DH CC4DL WDTC DPS CC1DL WDTK PCON FF F7 EF E7 DF D7 CF C7 BF B7 AF A7 9F 97 8F 87 Here is the simple description and initial value of the above SFR. A detailed explanation is given in later sections. Table:SFR description and initial value Register Location Initial value Description P0 80h FFh Port 0 SP 81h 07h Stack Pointer DPL 82h 00h Data Pointer Low byte DPH 83h 00h Data Pointer High byte DPL1 84h 00h Data Pointer 1 Low byte DPH1 85h 00h Data Pointer 1 High byte DPS 86h 00h Data Pointer select PCON 87h 00h Power control register TCON 88h 00h Timer control register TMOD 89h 00h Timer Mode TL0 8Ah 00h Timer 0 low byte TL1 8Bh 00h Timer 1 low byte Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 7 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Register TH0 TH1 WDTC WDTK P1 CC2DH CC2DL CC3DH CC3DL CC4DH CC4DL SCON SBUF PCACH PCACL CC0DH CC0DL CC1DH CC1DL P2 PCAC1 PCAC2 CC0CON CC1CON CC2CON CC3CON CC4CON IE IE1 P3 IP IP1 SCONF T2CON T2MOD RCAP2L RCAP2H TL2 Location 8Ch 8Dh 8Eh 8Fh 90h 91h 92h 93h 94h 95h 96h 98h 99h 9Ah 9Bh 9Ch 9Dh 9Eh 9Fh A0h A1h A2h A3h A4h A5h A6h A7h A8h A9h B0h B8h B9h BFh C8h C9h CAh CBh CCh Initial value 00h 00h 00h 00h FFh 00h 00h 00h 00h 00h 00h 00h XXh 00h 00h 00h 00h 00h 00h FFh 00h 00h 00h 00h 00h 00h 00h 00h 00h FFh 00h 00h 00h C0h 00h 00h 00h FFh Description Timer 0 high byte Timer 1 high byte Watchdog timer control register Watchdog timer refresh key Port 1 Compare/Capture channel 2 data high byte Compare/Capture channel 2 data low byte Compare/Capture channel 3 data high byte Compare/Capture channel 3 data low byte Compare/Capture channel 4 data high byte Compare/Capture channel 4 data low byte Serial port channel (UART) control register Serial port channel (UART) data buffer PCA counter high byte PCA counter low byte Compare/Capture channel 0 data high byte Compare/Capture channel 0 data low byte Compare/Capture channel 1 data high byte Compare/Capture channel 1 data low byte Port 2 PCA control register 1 PCA control register 2 Compare/Capture channel 0 control register Compare/Capture channel 1 control register Compare/Capture channel 2 control register Compare/Capture channel 3 control register Compare/Capture channel 4 control register Interrupt Enable Interrupt Enable 1 register Port 3 Interrupt Priority Interrupt Priority 1 register System control flag Timer 2 control register Timer 2 mode Reload/Capture data low byte Reload/Capture data high byte Timer 2 low byte Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 8 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Register TH2 PSW P4 ACC B ISPFAH ISPFAL ISPFD ISPC KBLS KBE KBF Location CDh D0h D8h E0h F0h F4h F5h F6h F7h FDh FEh FFh Initial value FFh 00h xFh 00h 00h 00h 00h 00h 00h 00h 00h 00h Description Timer 2 high byte Program Status Word register Port 4 Accumulator B register ISP address high byte ISP address low byte ISP data register ISP control register EEI Level Selector Register EEI input Enable Register EEI Flag register Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 9 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Function Description 1 General Features SM59D04G2 is an 8-bit micro-controller. All of its functions and the detailed meanings of SFR will be given in the following sections. 1.1 Embedded Flash The program can be loaded into the embedded 16KB Flash memory via its writer or ISP (In-System Programming) or ICP (In-Circuit Programming) function. The high-quality Flash is suitable for re-programming and data recording as EEPROM. 1.2 IO Pads The IO pads are compatible to the 8052 series. P0 is open-drain in the input or output high condition, so the external pull-up resistor is required. P1 ~ P4 are designed with internal pull-up resistors. The IO pad structure is given below: Fig. 1-1:IO pad structure All the pads for P0 ~ P4 are with slew rate to reduce EMI. The other way to reduce EMI is to disable the ALE output if unused. This is selected by its SFR. In 3.3V applications, the IO pads are 5V tolerant except for XATL1 and XTAL2. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 10 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 1.3 12T/6T Selection The conventional 52-series MCUs are 12T, i.e., 12 oscillator clocks per one machine cycle. If the machine cycle is changed to 6 clocks, then this 6T mode will double the running speed of 12T’s with the same oscillator source. 12T or 6T is configured in the information block. The figures given below are an example to show the difference of 12T mode and 6T mode. Fig 1-2(a):The signal waveform of external program (EA=0) in 12T mode Fig 1-2(b):The signal waveform of external program (EA=0) in 6T mode Since the execution speed in 6T is two times of that in 12T, in order for the easy explanation in the later sections, here we define the terminology “system clock” or “system frequency” as: System clock frequency(FOSC) = crystal(FCRY) or oscillator frequency in 6T, and System clock frequency(FOSC)= crystal(FCRY) or oscillator frequency divided by 2 in 12T Take a 16MHz oscillator as an example, the system clock frequency is 16MHz in 6T. But in 12T mode, the system clock frequency is 8MHz. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 11 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 2 Instruction set The SM59D04G2 uses the powerful 80C51 instruction set. It consists of 49 single-byte, 42 two-byte and 15 three-byte instructions. Among them, 63 instructions are executed in 1 machine-cycle, 46 instructions in 2 machine-cycles and 2 instructions in 4 machine-cycles. A summary of the instruction set is given in Table 2-1. All of the instructions are fully compatible with standard 8052-series’. Table 2.1 Instruction set Mnemonic Arithmetic Instructions ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #data ADDC A, Rn ADDC A, direct ADDC ADDC SUBB SUBB SUBB SUBB INC INC INC INC DEC DEC DEC DEC INC MUL DIV A, @Ri A, #data A, Rn A, direct A, @Ri A, #data A Rn direct @Ri A Rn direct @Ri DPTR AB AB DA A Logical Instructions ANL A, Rn ANL A, direct ANL A, @Ri ANL A, #data ANL direct, A ANL direct, #data ORL A, Rn ORL A, direct ORL A, @Ri ORL A, #data ORL direct, A ORL direct, #data XRL A, Rn XRL A, direct XRL A, @Ri XRL A, #data XRL direct, A XRL direct, #data CLR A CPL A RL A RLC A RR A RRC A SWAP A OPERATION BYTE CYCLE A = A + Rn A = A + direct A = A + <@Ri> A = A + #data A = A + Rn + C A = A + direct + C 1 2 1 2 1 2 1 1 1 1 1 1 A = A + @Ri + C A = A + #data + C A = A - Rn - C A = A - direct - C A = A - <@Ri> - C A = A-#data - C A=A+1 Rn = Rn + 1 direct = direct + 1 <@Ri> = <@Ri> + 1 A=A - 1 Rn = Rn - 1 direct = direct - 1 <@Ri> = <@Ri> - 1 DPTR = DPTR - 1 B:A = A × B A = INT (A/B) B = MOD (A/B) Decimal adjust ACC 1 2 1 2 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 4 1 1 A .AND. Rn A .AND. direct A .AND. <@Ri> A .AND. #data direct .AND. A direct .AND. #data A .OR. Rn A .OR. direct A .OR. <@Ri> A .OR. #data direct .OR. A direct .OR. #data A .XOR. Rn A .XOR. direct A .XOR. <@Ri> A .XOR. #data direct .XOR. A direct .XOR. #data A=0 A = /A Rotate ACC Left 1 bit Rotate Left through Carry Rotate ACC Right 1 bit Rotate Right through Carry Swap Nibbles in A 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 12 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Data Transfers Instructions MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data MOV Rn, A MOV Rn, direct MOV Rn, #data MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, @Ri MOV direct, #data MOV @Ri, A MOV @Ri, direct MOV @Ri, #data MOV DPTR, #data16 MOVC A, @A+DPTR MOVC A, @A+PC MOVX A, @Ri MOVX A, @DPTR MOVX @Ri, A MOVX @DPTR, A PUSH direct POP direct XCH A,Rn XCH A, direct XCH A, @Ri XCHD A, @Ri Boolean Instructions CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit MOV C, bit MOV bit, C JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel Jump Instructions ACALL addr11 LCALL addr16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A, direct,rel CJNZ A, #data,rel CJNZ Rn, #data,rel CJNZ @Ri, #data,rel DJNZ Rn, rel DJNZ direct, rel NOP A = Rn A = direct A = <@Ri> A = #data Rn = A Rn = direct Rn = #data direct = A direct = Rn direct = direct direct = <@Ri> direct = #data <@Ri> = A <@Ri> = direct <@Ri> = #data DPTR = #data16 A = code memory[A+DPTR] A = code memory[A+PC] A = external memory[Ri] (8-bits address) A = external memory[DPTR] (16-bits address) external memory[Ri] = A (8-bits address) external memory[DPTR] = A (16-bits address) INC SP: MOV “@’SP’, < direct > MOV < direct >, “@SP”: DEC SP ACC and < Rn > exchange data ACC and < direct > exchange data ACC and < Ri > exchange data ACC and @Ri exchange low nibbles 1 2 1 2 1 2 2 2 2 3 2 2 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 2 1 1 2 2 2 1 1 2 1 2 2 2 2 2 2 2 2 2 1 1 1 1 C=0 bit = 0 C=1 bit = 1 C = /C bit = /bit C = C .AND. bit C = C .AND. /bit C = C .OR. bit C = C .OR. /bit C = bit bit = C Jump if C= 1 Jump if C= 0 Jump if bit = 1 Jump if bit = 0 Jump if C = 1 1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3 1 1 1 1 1 1 2 2 2 2 1 2 2 2 2 2 2 Call Subroutine only at 2k bytes Address Call Subroutine in max 64K bytes Address Return from subroutine Return from interrupt Jump only at 2k bytes Address Jump to max 64K bytes Address Jump on at 256 bytes Jump to A+ DPTR Jump if A = 0 Jump if A ≠ 0 Jump if A ≠ < direct > Jump if A ≠ < #data > Jump if Rn ≠ < #data > Jump if @Ri ≠ < #data > Decrement and jump if Rn not zero Decrement and jump if direct not zero No Operation 2 3 1 1 2 3 2 1 2 2 3 3 3 3 2 3 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 13 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 3 Memory Structure The SM59D04G2 manipulates operands in three memory spaces. They are (1) 256 bytes standard RAM, (2) 768 bytes auxiliary RAM,and (3) 16K bytes embedded Flash as program memory. 3.1 Program Memory As described in Section 1, the SM59D04G2 has 16K bytes on-chip Flash memory which is used as general program memory, the address range for the 16K bytes is 0000h to 3FFFh. If the program code is less than 16K bytes, the remaining part can be used as EEPROM to store data. The procedure of this EEPROM application function is described in the section on ISP. The feature of FLASH memory is shown as following: z READ: byte-wise z WRITE: byte-wise within 30us (previously erased by a chip erase). z ERASE: Full Erase (16K bytes) within 200 ms. Erased bytes contain FFH z Endurance : 100K erase and write cycles each byte at TA=25℃ z Retention : 10 years If we do ISP or IAP, there are up to 4K bytes of specific ISP service program. The address range is 3000h to 3FFFh. The ISP service program size can be partitioned as N blocks of 512 bytes (N=0 to 8). When N=0, there will be no ISP service program space available, the total 16K bytes memory are used as program memory. When N=1, the Flash from 3E00h to 3FFFh is reserved for ISP service program. When N=2, the Flash from 3C00h to 3FFFh is reserved for ISP service program… Value N is set in the information block. Fig 3.1 shows the ISP Flash reservation with different values of N. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 14 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 3FFF N=0 3E00 N=1 ISP service program space, up to 4KB 3C00 3A00 3800 3600 N=6 3400 3200 3000 N=7 N=8 16KB program memory space SM56D04G2 0000 Fig 3-1:Flash segmentation for ISP The SM59D04G2 provides code protect function on the writer. The user can select protect or unprotect by writer. If protection is selected, users can’t read the program from the writer. When the user runs in the external program mode (EA = 0) and protect bit is set and the MOVC instruction will be disable by hardware. The only way to change the protection bit back is to erase the entire Flash. 3.2 Data Memory The SM59D04G2 has 256 + 768 bytes on-chip RAM, the 256 bytes are the same as general 8052 internal memory structure while the expanded 768 bytes on-chip RAM can be accessed by external memory addressing method( by instruction MOVX). Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 15 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Fig. 3-2 : RAM architecture 3.2.1 Data Memory - Lower 128 byte ($00h to $7Fh) Data Memory 00h to FFh is the same as defined in 8052. The address 00h to 7Fh can be accessed by both direct and indirect addressing modes. Address 00h to 1Fh is register area. Address 20h to 2Fh is memory bit area, and address 30h to 7Fh is for general memory area. 3.2.2 3.2.2 Data Memory - Higher 128 byte ($80h to $FFh) The address 80h to FFh can only be accessed by indirect addressing mode. It is data area. 3.2.3 3.2.3 Data Memory - Expanded 768 bytes ($0000h to $02FFh) Address 0000h to 02FFh is the on-chip expanded RAM area, totally 768 bytes. This area can be accessed by external direct addressing mode with instruction MOVX. If the address of instruction MOVX @DPTR is larger than 02FFh, then the SM59D04G2 will generate the external memory control signal automatically. The bit 1 (OME) of SFR BFh (SCONF) can enable or disable this expanded 768 byte RAM. The default setting of OME bit is 0 (disable). Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 16 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 4 CPU Engine The SM59D04G2 CPU engine allows fetching instructions from the program memory, and accessing data with RAM or SFR. Here the SFR in the CPU engine is explained. Mnemonic ACC B PSW SP DPL DPH DPL1 DPH1 DPS SCONF 4.1 Description Bit 7 Direct Accumulator B register Program status word Stack Pointer Data pointer low 0 Data pointer high 0 Data pointer low 1 Data pointer high 1 Data pointer select System control flag E0h F0h ACC.7 B.7 D0h CY Bit 6 Bit 5 8051 Core ACC.6 ACC.5 B.6 B.5 AC Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET ACC.4 B.4 ACC.3 B.3 ACC.2 B.2 ACC.1 B.1 ACC.0 B.0 00h 00h OV F1 P 00h F0 RS[1:0] 81h 82h SP[7:0] DPL[7:0] 07h 00h 83h DPH[7:0] 00h 84h DPL1[7:0] 00h 85h DPH1[7:0] 00h 86h - - - - - - - DPS.0 BFh - - - - - ISPE OME ALEI 00h Accumulator ACC is the Accumulator register. Most instructions use the accumulator to hold the operand. Mnemonic: ACC 7 ACC.7 6 ACC.6 Address: E0h 5 ACC.5 4 ACC.4 3 ACC.3 2 ACC.2 1 ACC.1 0 ACC.0 Reset 00h ACC[7:0]: The A (or ACC) register is the standard 8052 accumulator. 4.2 B Register The B register is used during multiply and divide instructions. It can also be used as a scratch pad register to hold temporary data. Mnemonic: B 7 B.7 6 B.6 Address: F0h 5 B.5 4 B.4 3 B.3 2 B.2 1 B.1 0 B.0 Reset 00h B[7:0]: The B register is the standard 8052 register that serves as a second accumulator. 4.3 Program Status Word Mnemonic: PSW 7 CY 6 AC Address: D0h 5 F0 4 3 RS[1:0] 2 OV 1 F1 0 P Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 17 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded CY: Carry flag. AC: Auxiliary Carry flag for BCD operations. F0: General purpose Flag 0 available for user. RS[1:0]: Register bank select, used to select working register bank. RS[1:0] Bank Location Selected 00 Bank 0 00h – 07h 01 Bank 1 08h – 0Fh 10 Bank 2 10h – 17h 11 Bank 3 18h – 1Fh OV: Overflow flag. F1: General purpose Flag 1 available for user. P: Parity flag, affected by hardware to indicate odd/even number of “one” bits in the Accumulator, i.e. even parity. 4.4 Stack Pointer The stack pointer is a 1-byte register initialized to 07h after reset. This register is incremented before PUSH and CALL instructions, causing the stack to begin at location 08h. Mnemonic: SP 7 6 Address: 81h 5 4 3 2 1 0 SP[7:0] Reset 07h SP[7:0]: The Stack Pointer stores the Scratchpad RAM address where the stack begins. In other words, it always points to the top of the stack. 4.5 Data Pointer The data pointer (DPTR) is 2-bytes wide. The lower part is DPL, and the highest is DPH. It can be loaded as 2 byte register (MOV DPTR, #data16) or as two registers (ea. MOV DPL, #data8). It is generally used to access external code or data space (ea. MOVC A, @A+DPTR or MOV A, @DPTR respectively). Mnemonic: DPL 7 6 Address: 82h 5 4 3 DPL[7:0] 2 1 4 3 DPH[7:0] 2 1 0 Reset 00h DPL[7:0]: Data pointer Low 0 Mnemonic: DPH 7 6 Address: 83h 5 0 Reset 00h DPH[7:0]: Data pointer High 0 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 18 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 4.6 Data Pointer 1 The dual data pointer accelerates the moving of block data. The standard DPTR is a 16-bit register that is used to address external memory or peripherals. In the SM59D04G2, the standard data pointer is called DPTR,the second data pointer is called DPTR1. The data pointer select bit chooses the active pointer. The data pointer select bit is located in the LSB of DPS register (DPS.0). The user switches between pointers by toggling the LSB of DPS register. All DPTR-related instructions use the currently selected DPTR for any activity. Mnemonic: DPL1 7 6 Address: 84h 5 4 3 DPL1[7:0] 2 1 4 3 DPH1[7:0] 2 1 4 - 2 - 1 - 2 ISPE 1 OME 0 Reset 00h DPL1[7:0]: Data pointer Low 1 Mnemonic: DPH1 7 6 Address: 85h 5 0 Reset 00h DPH1[7:0]: Data pointer High 1 Mnemonic: DPS 7 - 6 - Address: 86h 5 - 3 - 0 DPS.0 Reset 00h DPS.0: Data Pointer select register. DPS.0 = 1 is selected DPTR1. 4.7 System control flag Mnemonic: SCONF 7 - 6 - 5 - Address: BFh 4 - 3 - 0 ALEI Reset 00h ISPE: ISP function enable bit. ISPE = 1 is enable ISP function. ISPE = 0 is disable ISP function. OME: 768 bytes on-chip RAM enable bit. OME = 1 is enable 768 bytes on-chip RAM. OME = 0 is disable 768 bytes on-chip RAM. ALEI: ALE output disable. ALEI = 1 is disable ALE output. ALEI = 0 is Enable ALE output. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 19 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 5 Port 0 – Port 4 Port 0 ~ Port 4 are the general purpose IO of this controller. Port 4[3:0] is available with 44-pin PLCC or QFP package only, not for 40-pin package. Most of the ports are multiplexed with the other outputs, e.g., Port 3[0] is also used as RXD in the UART application. Port0 is open-drain in the input and output high condition, so external pull-up resistors are required. As for the other ports, the pull-up resistors are built internally. For general purpose applications, every pin can be assigned to either high or low independently because their SFRs are bit addressable as given below: Mnemonic: P0 7 P0.7 6 P0.6 Address: 80h 5 P0.5 4 P0.4 3 P0.3 2 P0.2 1 P0.1 3 P1.3 2 P1.2 1 P1.1 3 P2.3 2 P2.2 1 P2.1 3 P3.3 2 P3.2 1 P3.1 3 P4.3 2 P4.2 1 P4.1 0 P0.0 Reset FFh P0.7~ 0: Port0[7] ~ Port0[0] Mnemonic: P1 7 P1.7 6 P1.6 Address: 90h 5 P1.5 4 P1.4 0 P1.0 Reset FFh P1.7~ 0: Port1[7] ~ Port1[0] Address: A0h Mnemonic: P20 7 P2.7 6 P2.6 5 P2.5 4 P2.4 0 P2.0 Reset FFh P2.7~ 0: Port2[7] ~ Port2[0] Mnemonic: P3 7 P3.7 6 P3.6 Address: B0h 5 P3.5 4 P3.4 0 P3.0 Reset FFh P3.7~ 0: Port3[7] ~ Port3[0] Mnemonic: P4 7 x 6 x Address: D8h 5 x 4 x 0 P4.0 Reset xFh P4.3~ 0: Port4[3] ~ Port4[0] Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 20 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 6 Timer 0 and Timer 1 These timer and counter functions are presented in the same module. The “timer” or “counter” function is selected by the control bits C/ T in SFR TMOD. Timer 0 and Timer 1 have four operation modes, which are selected by bit-pairs (M1, M0) in SFR TMOD. Mode 0, 1, and 2 are the same for both timer and counters. Mode 3 is different. The four operating modes are described below: 6.1 Mode 0 In this mode, the timer register is configured as a 13-bit register. Take Timer 1 as the example, as the counter rolls over from all 1s to all 0s, it sets the Timer 1 interrupt flag TF1. The counter input is enabled by the timer when TR1 = 1 and either GATE = 0 or INT 1 = 1, here setting GATE = 1 allows the timer to be controlled by external input INT 1 , to facilitate pulse width measurements. TR1 is a control bit in the SFR TCON and GATE is in TMOD. The 13-bit register consists of all 8 bits of TH1 and the lower 5 bits of TL1. The upper 3 bits of TL1 are indeterminate and should be ignored. Setting the run flag (TR1) does not clear the registers. Mode 0 operation is the same for Timer 0 and Timer 1. So substituting TR0, TF0 and INT 0 for the corresponding Timer 1 signals in the last paragraph, we can know the operation of Mode 0 for Timer 0. But there are two different GATE bits, one is for Timer 1(TMOD.7) and the other one is for Timer 0 (TMOD.3). /12 OSC C/ T = 0 TL1 (5 bits) C/ T = 1 T1 pin TH1 (8 bits) TF1 Interrupt Control TR1 GATE INT 1 pin Fig. 6-1: Mode 0 operation for Timer 1 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 21 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 6.2 Mode 1 Mode 1 is the same as Mode 0, except that the timer register runs with all 16 bits. T T INT1 Fig. 6-2: Mode 1 operation for Timer 1 6.3 Mode 2 For Timer 1, Mode 2 configures the timer register as an 8-bit counter (TL1) with automatic reload. Overflow from TL1 not only sets TF1, but also reloads TL1 with the contents of TH1, which is preset by software. The reload operation leaves TH1 unchanged. Timer 0 Mode 2 operation is also the same. T T INT1 Fig. 6-3: Mode 2 operation for Timer 1 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 22 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 6.4 Mode 3 Timer 1 in Mode 3 simply holds its count. The effect is the same as setting TR1 = 0. Timer 0 in Mode 3 takes TL0 and TH0 as two separate counters. TL0 uses the Timer 0 control bits: C/ T , GATE, TR0, INT 0 , and TF0. TH0 is locked into a timer function to count machine cycles and takes over the use of TR1 and TF1 from Timer 1. Thus, TH0 now controls the “Timer 1” interrupt. Mode 3 is provided for applications requiring an extra 8-bit timer or counter. When Timer 0 is in Mode 3, Timer 1 can be turned on and off by switching it out of and into its own Mode 3, or can still be used by the serial port as a baud rate generator, or in fact, in any application not requiring an interrupt. /12 OSC C/ T = 0 TL0 (8 bits) C/ T = 1 T0 pin Interrupt TF0 Control TR0 GATE INT 0 pin TH0 (8 bits) Interrupt TF1 Control TR1 Fig. 6-4: Mode 3 operation for Timer 0 6.5 SFR description Mnemonic Description TL0 Timer 0 , low byte Timer 0 , high byte Timer 1 , low byte Timer 1 , high byte Timer Mode Control Timer/Counter Control TH0 TL1 TH1 TMOD TCON Direct Bit 7 8Ah Bit 6 Bit 5 Bit 4 Bit 3 Timer 0 and 1 TL0[7:0] Bit 2 Bit 1 Bit 0 RESET 00h 8Ch TH0[7:0] 00h 8Bh TL1[7:0] 00h 8Dh TH1[7:0] 00h 89h GATE C/ T M1 M0 GATE C/ T M1 M0 00h 88h TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 23 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 6.5.1 Timer/Counter Mode Control register (TMOD) Mnemonic: TMOD 7 GATE 6 5 M1 C/ T Timer 1 4 M0 3 GATE Address: 89h 2 C/ T Timer 0 1 M1 0 M0 Reset 00h GATE: If set, enables external gate control (pin INT0 or INT1 for Counter 0 or 1, respectively). When INT0 or INT1 is high, and TRx bit is set (see TCON register), a counter is incremented every falling edge on T0 or T1 input pin C/ T : Selects Timer or Counter operation. When set to 1, a Counter operation is performed, when cleared to 0, the corresponding register will function as a Timer. M[1:0]: Selects mode for Timer/Counter 0 or Timer/Counter 1. M1 M0 Mode Function 0 0 Mode0 13-bit Counter/Timer, with 5 lower bits in TL0 or TL1 register and 8 bits in TH0 or TH1 register (for Timer 0 and Timer 1, respectively). The 3 high order bits of TL0 and TL1 are hold at zero. 0 1 Mode1 16-bit Counter/Timer. 1 0 Mode2 8 -bit auto-reload Counter/Timer. The reload value is kept in TH0 or TH1, while TL0 or TL1 is incremented every machine cycle. When TLx overflows, a value from THx is copied to TLx. 1 1 Mode3 If Timer 1 M1 and M0 bits are set to 1, Timer 1 stops. If Timer 0 M1 and M0 bits are set to 1, Timer 0 acts as two independent 8 bit Timers / Counters. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 24 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 6.5.2 Timer/Counter Control register (TCON) Mnemonic: TCON 7 TF1 6 TR1 5 TF0 Address: 88h 4 TR0 3 IE1 2 IT1 1 IE0 0 IT0 Reset 00h TF1: Timer 1 overflow flag set by hardware when Timer 1 overflows. This flag can be cleared by software and is automatically cleared when interrupt is processed. TR1: Timer 1 Run control bit. If cleared, Timer 1 stops. TF0: Timer 0 overflow flag set by hardware when Timer 0 overflows. This flag can be cleared by software and is automatically cleared when interrupt is processed. TR0: Timer 0 Run control bit. If cleared, Timer 0 stops. IE1: Interrupt 1 edge flag. Set by hardware, when falling edge on external pin INT1 is observed. Cleared when interrupt is processed. IT1: Interrupt 1 type control bit. Selects falling edge or low level on input pin to cause interrupt. IE0: Interrupt 0 edge flag. Set by hardware, when falling edge on external pin INT0 is observed. Cleared when interrupt is processed. IT0: Interrupt 0 type control bit. Selects falling edge or low level on input pin to cause interrupt. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 25 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 7 Timer 2 Timer 2 is a 16-bit timer/counter which can operate either as a timer or an event counter. This is selectable by bit C/ T 2 in the SFR T2CON. It has three operating modes: capture, auto-reload (up or down counting), and baud rate generator. The modes are selected by bits in T2CON as shown below. Timer 2 consists of two 8-bit registers, TH2 and TL2. In the timer function, the TL2 register is incremented every machine cycle, thus one can think of it as counting machine cycles. Since a machine cycle consists of a 12-clock period in 12T, the count rate is 1/12 of the oscillator clock frequency. In 6T, it is 1/6. In the counter function, the register is incremented in response to every 1-to-0 transition at its corresponding external input pin, T2. In this function, the external input is sampled during S5P2 of every machine cycle. When the samples show a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the register during S3P1 of the cycle following the one in which the transition was detected. Since it takes 2 machine cycles (24 clock periods in 12T) to recognize a 1-to-0 transition, the maximum count rate is 1/24 of the oscillator frequency in 12T mode or 1/12 in 6T mode. To ensure that a given level is sampled at least once before it changes, it should be held for at least one full machine cycle. RCLK+TCLK 0 0 1 X Table 7-1 : Timer 2 Operating Modes TR2 MODE CP/ RL2 0 1 16-bit Auto-reload 1 1 16-bit Capture X 1 Baud rate Generator X 0 Off 7.1 Capture mode In the capture mode, there are two options selected by bit EXEN2 in T2CON. If EXEN2 = 0, Timer 2 is a 16-bit timer or counter which upon overflow sets bit TF2 in T2CON. This bit can then be used to generate an interrupt. If EXEN2 = 1, Timer 2 still does the above, but with the added feature that a 1-to-0 transition at external input T2EX causes the current value in TH2 and TL2 to be captured into RCAP2H and RCAP2L, respectively. In addition, the transition at T2EX causes bit EXF2 in T2CON to be set. The EXF2 bit, like TF2, can generate an interrupt. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 26 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Figure 7-1: Timer 2 in capture mode 7.2 Auto-reload (Up or Down Counter) Timer 2 can be programmed to count up or down when configured in its 16-bit auto-reload mode. This feature is invoked by a bit named DCEN (Down Counter Enable) located in the SFR T2MOD. Upon reset, the DCEN bit is set to 0 so that Timer 2 will default to count up. When DCEN is set, Timer 2 can count up or down depending on the value of the T2EX pin. Figure 7-2 shows Timer 2 automatically counting up when DCEN = 0. In this mode there are two options selected by bit EXEN2 in T2CON. If EXEN2 = 0, Timer 2 counts up to FFFFh and then sets the TF2 bit upon overflow. The overflow also causes the timer registers to be reloaded with the 16-bit value in RCAP2H and RCAP2L. The values in RCAP2H and RCAP2L are preset by software. If EXEN2 = 1, a 16-bit reload can be triggered either by an overflow or by a 1-to-0 transition at external input T2EX. This transition also sets the EXF2 bit. Both the TF2 and EXF2 bits can generate an interrupt if enabled. Setting the DCEN bit enables Timer 2 to count up or down as shown in Figure 7-3. In this mode the T2EX pin controls the direction of count. A logic 1 at T2EX makes Timer 2 count up. The timer will overflow at FFFFh and set the TF2 bit. This overflow also causes the 16-bit value in RCAP2H and RCAP2L to be reloaded into the timer registers, TH2 and TL2, respectively. A logic 0 at T2EX makes Timer 2 count down. Now the timer underflows when TH2 and TL2 are equal to the values stored in RCAP2H and RCAP2L. The underflow sets the TF2 bit and causes FFFFH to be reloaded into the timer registers. The EXF2 bit toggles whenever Timer 2 overflows or underflows. This bit can be used as a 17th bit of resolution if desired. In this operating mode, EXF2 does not flag an interrupt. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 27 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Figure 7-2:Timer 2 in auto reload mode (DCEN=0) Figure 7-3: Timer 2 in auto reload mode (DCEN=1) 7.3 Programmable clock out A 50% duty cycle clock can be programmed to come out on P1.0. This pin, besides begin a regular I/O pin, has two alternate functions. It can be programmed (1) to input the external clock for Timer/Counter 2 or (2) to output a 50% duty cycle clock. An example is that the clock output ranges from 61Hz to 4MHz at a 16MHz oscillator frequency if in 12T mode. To configure the Timer/Counter 2 as a clock generator, bit C/ T 2 (T2CON.1) must be cleared and bit T2OE(T2MOD.1) must be set. Bit TR2 (T2CON.2) starts and stops the timer. The Clock-Out frequency depends on the oscillator frequency and the reload value of Timer 2 capture registers (RCAP2H, RCAP2L) as shown in this equation: Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 28 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Clock-Out Frequency = Oscillator Frequency 4 × (65536 − RCAP 2 H , RCAP 2 L) In the clock-out mode, Timer 2 roll-overs will not generate an interrupt. This is similar to when Timer 2 is used as a baud-rate generator. It is possible to use Timer 2 as a baud-rate generator and a clock generator simultaneously. Note, however, that the baud-rate and clock-out frequencies can not be determined independently from one another since they both use RCAP2H and RCAP2L. Figure 7-4: Timer 2 in clock-out mode 7.4 SFR description Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RES ET Mnemonic Description Direct TL2 Timer 2 , low byte Timer 2 , high byte Reload and capture data low byte Reload and capture data high byte Timer 2 mode Timer 2 control register CCh TL2[7:0] 00h CDh TH2[7:0] 00h CAh RCAP2L[7:0] 00h CBh RCAP2H[7:0] 00h Timer 0 and 1 TH2 RCAP2L RCAP2H T2MOD T2CON C9h - - - - - - T2OE C8h TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ T2 DCEN CP/ RL2 x0h 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 29 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Mnemonic: T2CON 7 TF2 6 EXF2 Address: C8h 5 RCLK 4 TCLK 3 EXEN2 2 TR2 1 0 C/ T2 CP/ RL2 Reset 00h TF2: Timer 2 overflow flag is set by a Timer 2 overflow and must be cleared by software. TF2 will not be set when either RCLK = 1 or TCLK = 1. EXF2: Timer 2 external flag is set when either a capture or reload is caused by a negative transition on T2EX and EXEN2 = 1. When Timer 2 interrupt is enabled, EXF2 = 1 will cause the CPU to vector to the Timer 2 interrupt routine. EXF2 must be cleared by software. EXF2 does not cause an interrupt in up/down counter mode (DCEN = 1). RCLK: Receive clock enable. When set, causes the serial port to use Timer 2 overflow pluses for its receive clock in serial port Modes 1 and 3. RCLK = 0 causes Timer 1 overflows to be used for the receive clock. TCLK: Transmit clock enable. When set, causes the serial port to use Timer 2 overflow pulses for it’s transmit clock in serial port Modes 1 and 3. TCLK = 0 causes Timer 1 overflows to be used for the transmit clock. EXEN2: Timer 2 external enable. When set, allows a capture or reload to occur as a result of a negative transition on T2EX if Timer 2 is not being used to clock the serial port. EXEN2 = 0 causes Timer 2 to ignore events at T2EX. TR2: Start/Stop control for Timer 2. TR2 = 1 starts the timer. C/ T2 : Timer or counter select for Timer 2. C/ T2 = 0 for timer function. C/ T2 = 1 for external event counter (falling edge triggered). CP/ RL2 : Capture/Reload select. CP/ RL2 = 1 causes captures to occur on negative transitions at T2EX if EXEN2 = 1. CP/ RL2 = 0 causes automatic reloads to occur when Timer 2 overflows or negative transitions occur at T2EX when EXEN2 = 1. When either RCLK or TCLK = 1, this bit is ignored and the timer is forced to auto-reload on Timer 2 overflow. Mnemonic: T2MOD 7 - 6 - 5 - Address: C9h 4 - 3 - 2 - 1 T2OE 0 DCEN Reset x0h T2OE: Timer 2 Output Enable bit. DCEN: When set, this bit allows Timer 2 to be configured as an up/down counter. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 30 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 8 Watchdog timer The watchdog timer is an 8-bit counter that is incremented once every WDTCLK clock cycle. After an external reset, the watchdog timer is disabled and all registers are set to zero. When SM59D04G2 is reset, it will read internal setting for the bit WDTEN.When the WDTEN is selected ,the watchdog function will enable. The WDTM[2:0] is control WDTCLK. User can select WDTEN on the writer. Table 8-1 Watchdog Timer Overflow Period: WDTM[2:0] 000 001 010 011 100 101 Overflow Period 1.58ms 3.15ms 6.30ms 12.60ms 25.12ms 110 111 50.41ms 100.82ms 201.65ms The watchdog timer will reset the system after 256 WDTCLK is reached. Once the watchdog is started it cannot be stopped. To enable the WDT is done by setting 1 to the bit 7 (WDTE) of WDTC. After WDTE set to 1, the 16-bit counter starts to count. It will generate a reset signal when overflows. The WDTE bit will be cleared to 0 automatically when SM59D04G2 been reset, either hardware reset or WDT reset To reset the WDT is done by setting 1 to the CLEAR bit of WDTC before the counter overflow. This will clear the content of the 16-bit counter and let the counter re-start to count from the beginning. The SFR WDTK[7:0] must be set first. The first value set to it is 1Eh, then the next value is E1h. Mnemonic WDTC WDTK Description Watchdog timer control register Watchdog timer refresh key Direct Bit 7 8Eh WDTE Bit 6 Bit 5 Bit 4 Watchdog Timer - Bit 3 Bit 2 Bit 1 Bit 0 RESET - WDTM2 WDTM1 WDTM0 00H - CLEAR 8Fh WDTK[7:0] Mnemonic: WDTC 7 WDTE WDTM[2:0]: WDTE: CLEAR 6 - 5 CLEAR 00H Address: 8Eh 4 - 3 - 2 1 0 WDTM2 WDTM1 WDTM0 Reset 00H Watchdog timer over flow period setting. Watchdog timer Enable. WDTE=0:Disable WDT function either the WDTEN was setting on the Writer。 WDTE=1:Enable WDT function when the WDTEN was setting on the Writer。 This bit will be cleared to 0 automatically when MCU been reset, either hardware reset or WDT reset。 Setting this bit the Watchdog timer counter clear and re-start to count from the Beginning。 Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 31 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Mnemonic: WDTK 7 6 5 Address: 8Fh 4 3 WDTK[7:0] 2 1 0 Reset 00h WDTK: Watchdog timer refresh key. A programmer must set it to 1Eh first, then E1h next. After these, the above SFR WDTC can be set. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 32 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 9 ISP (In-System Programming) The SM59D04G2 can perform ISP or In-Application Programming (IAP) function by putting the ISP service code into the assigned ISP code area as shown in Table 9-1. One page of Flash memory is 512bytes. Table 9-1: ISP code area SM59D04G2 Lock-bit number ISP code area 1 512 bytes (from $3E00h to $3FFF) 2 1K bytes (from $3C00h to $3FFF) 3 1.5K bytes (from $3A00h to $3FFF) 4 2K bytes (from $3800h to $3FFF) 5 2.5K bytes (from $3600h to $3FFF) 6 3K bytes (from $3400h to $3FFF) 7 3.5K bytes (from $3200h to $3FFF) 8 4K bytes (from $3000h to $3FFF) There are three ways to enter the ISP code area. They are (1) Blank first data:If the first Flash data is blank (data in address 0000h is FFh), the controller will read it after power on and after identifying it as blank, the program counter will go to the ISP code area. (2) Execute the “LJMP” instruction in the program as IAP function. (3) By hardware setting: After power on reset, if the hardware finds both Port2[6] and Port2[7] are tied low, or Port4[3] is low, then the program counter will go to the ISP code area. This is shown in Fig. 9-1. Fig 9-1:ISP entering by hardware setting Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 33 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 9.1 SFR description Mnemonic ISPC ISPFAH ISPFAL ISPFD Description ISP control register ISP Flash address high byte ISP Flash address low byte ISP Flash data Direct Bit 7 Bit 6 F7h START - Bit 5 ISP Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET - - - ISPF1 ISPF0 00h - F4h ISPFA[15:8] 00h F5h ISPFA[7:0] 00h F6h ISPFD[7:0] 00h Mnemonic: ISPFAH 7 6 5 Address: F4h 4 3 ISPFA[15:8] 2 1 4 3 ISPFA[7:0] 2 1 Mnemonic: ISPFAL 7 6 5 0 Reset 00h Address: F5h 0 Reset 00h ISPFA[15:0]: The ISPFAH and ISPFAL provide the 16-bit Flash memory address for the ISP function. The Flash memory address should not include the ISP service program space address. If the Flash memory address indicated by ISPFAH and ISPFAL registers overlaps with the ISP service program space, the Flash write and page erase function will have no effect. Mnemonic: ISPFD 7 6 5 Address: F6h 4 3 ISPFD[7:0] 2 1 0 Reset 00h ISPFD[7:0]: The ISPFD provide the 8-bits data for ISP function. Mnemonic: ISPC 7 START 6 - Address: F7h 5 - 4 - 3 - 2 - 1 0 ISPF[1:0] Reset 00h ISPF[1:0]: ISP function select. ISPF[1:0] ISP function 00 Byte program 01 Chip Protect 10 Page erase( 512 Bytes) 11 Chip erase START: ISP START bit. START = 1 : Start ISP function which indicated by ISPF[1:0]. START = 0 : no operation. The START bit is read-only by default, software must write three specific values 55h, AAh and 55h sequentially to the ISPFD register to enable the START bit write attribute. That is: Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 34 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Ex: Open ISP function: MOV ISPFD,#055h MOV ISPFD,#0AAh MOV ISPFD,#055h Any attempt to set START bit will not be allowed without procedure above. After the START bit set to 1, the SM59D04G2 hardware circuit will latch the address and data bus and hold the program counter until the START bit resets to 0 when the ISP function finished. The user does not need to check the START bit status by software method. To perform byte program or page erase ISP function, the user needs to first specify the Flash address. When performing the page erase function, the SM59D04G2 will erase the entire page indicated by the Flash address in the ISPFAH register located within the page. To perform chip erase ISP function, the SM59D04G2 will erase all the Flash program memory and data Flash memory except the ISP program space. Also, the SM59D04G2 will unprotect the Flash memory automatically if it has been protected by setting the information block bit LOCK=0. If LOCK is 0, all the Flash memory will be read all zeros. The following example is to show how the ISP service program does byte program – to program data of #22h to the address of the $1005h MOV ISPFD, #055h MOV ISPFD, #0AAh MOV ISPFD, #055h MOV SCONF, #04h MOV ISPFAH, #10h MOV ISPFAL, #05h MOV ISPFD, #22h MOV ISPFC, #80h ; Open ISP function ; enable ISP function ; Set Flash address high byte ; Set Flash address low byte ; Set Flash data to be programmed ; Start to program data of 22h to the Flash address of the $1005h ; After byte program finished, START bit of ISPC will reset to 0 automatically ; and program counter then point to the next instruction. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 35 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 10 Serial interface (UART) The UART serial port is full duplex, meaning it can transmit and receive simultaneously. It is also receive-buffered, meaning it can commence reception of a second byte before a previously received byte has been read from the receive register. (However, if the first byte still hasn’t been read by the time reception of the second byte is complete, one of the bytes will be lost). The serial port’s receive and transmit registers are both accessed through SFR SBUF. Actually, SBUF is composed of two separate registers, a transmit buffer and a receive buffer. Writing to SBUF loads the transmit register, and reading SBUF accesses a physically separate receive register. The serial port control and status register are in the SFR SCON. This register contains the mode selection bits (SM0 and SM1), the SM2 bit for the multiprocessor modes (please see Subsection 10.1), the Receive Enable (REN); the 9th data bit for transmit and receive (TB8 and RB8); and the serial port interrupt bits (TI and RI). The serial port can operate in the following 4 modes: Mode 0: Serial data enters and exits through RXD. TXD outputs the shift clock. 8 bits are transmitted or received with LSB first. The baud rate is fixed at 1/6 the system frequency as defined in Section 1. Mode 1: 10 bits are transmitted (through TXD) or received (through RXD) with a start bit (=0), then the 8 data bits with LSB first, finally a stop bit (=1). On the receiving side, the stop bit goes into RB8 in SFR SCON. The baud rate is variable. Mode 2: 11 bits are transmitted (through TXD) or received (through RXD) with a start bit (=0), then the 8 data bits with LSB first, then a programmable 9th data bit, finally a stop bit (=1). On the transmitting side, the 9th data bit (TB8 in SCON) can be assigned the value of 0 or 1, or, for example, the parity bit (P in the PSW) could be moved into TB8. On the receiving side , the 9th data bit goes into RB8 in SCON. The baud rate is programmable to either 1/32 or 1/16 of the system frequency. Mode 3: 11 bits are transmitted (through TXD) or received (through RXD) with a start bit (=0), then the 8 data bits with LSB first, then a programmable 9th data bit, finally a stop bit (=1). In fact, Mode 3 is the same as Mode 2 in all respects except the baud rate. The baud rate in Mode 3 is variable. In all four modes, transmission is initiated by any instruction that uses SBUF as a destination register. Reception is initiated in Mode 0 by the condition RI = 0 and REN = 1. Reception is initiated in the other modes by the incoming start bit if REN = 1. 10.1 Multiprocessor Communications Mode 2 and 3 have a special provision for multiprocessor communications. In these modes, 9 data bits are received. The 9th one goes into RB8. Then comes a stop bit. The port can be programmed such that when the stop bit is received, the serial port interrupt will be activated only if RB8 = 1. This feature is enabled by setting bit SM2 in SCON. This feature is used in multiprocessor systems as follows. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 36 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded When the master processor wants to transmit a block of data to one of several slaves, it first sends out an address byte which identifies the target slave. An address byte differs from a data byte in that the 9th bit is 1 in an address byte and 0 in a data byte. With SM2 = 1, no slave will be interrupted by a data byte. An address byte, however, will interrupt all slaves, so that each slave can examine the received byte and see if it is being addressed. The addressed slave will clear its SM2 bit and prepare to receive the data bytes that will be coming. The slave that weren’t being addressed leave their SM2s set and go on their business, ignoring the coming data bytes. SM2 has no effect in Mode 0, and in Mode 1 can be used to check the validity of the stop bit. In Mode 1 reception, if SM2 = 1, the receive interrupt will not be activated unless a valid stop bit is received. 10.2 Baud rates The baud rate in Mode 0 is fixed: Mode 0 Baud Rate = System Frequency 6 The baud rate in mode 2 depends on the value of bit SMOD in SFR PCON. If SMOD = 0 (which is the value on reset), the baud rate is 1/32 the system frequency. If SMOD = 1, the baud rate is 1/16 the system frequency. Mode 2 2 SMOD × (System Frequency) Baud Rate = 32 10.3 Using Timer 1 to Generate Baud Rates. When Timer 1 is used as the baud rate generator, the baud rates in Modes 1 and 3 are determined by the Timer 1 overflow rate and the value of SMOD as follows: Modes 1 and 3 2 SMOD × (Timer 1 overflow rate) Baud Rate = 32 The Timer 1 interrupt should be disabled in this application. The timer itself can be configured for either “timer” or “counter” operation, and in any of its 3 running modes. In the most typical applications, it is configured for “timer” operation, in the auto-reload mode (high nibble of TMOD = 0010B). In that case, the baud rate is given by the formula Modes 1 and 3 2 SMOD System Frequency × Baud Rate = 32 6 × [256 − TH 1] One can achieve very low baud rates with Timer 1 by leaving the Timer 1 interrupt enabled, and configuring the timer to run as a 16-bit timer (high nibble of TMOD = 0001B), and using the Timer 1 interrupt to do a 16-bit software reload. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 37 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 10.4 Using Timer 2 to Generate Baud Rates. In the SM59D04G2, Timer 2 is selected as the baud rate generator by setting TCLK and/or RCLK in T2CON. Note then the baud rates for transmit and receive can be simultaneously different. Setting RCLK and/or TCLK puts Timer 2 into its baud rate generator mode. The baud rate generator mode is similar to the auto-reload mode, in that a rollover in TH2 causes the Timer 2 registers to be reloaded with the 16-bit value in registers RCAP2H and RCAP2L, which are preset by software. Now, the baud rates in Modes1 and 3 are determined by Timer 2’s overflow rate as follows: Modes 1, 3 Baud Rate = Timer 2 overflow rate 16 The timer can be configured for either “timer” or “counter” operation. In the most typical applications, it is configured for “timer” operation (C/T2 = 0). “Timer” operation is a little different for Timer 2 when it’s being used as a baud rate generator. Normally, as a timer, it would increment every machine cycle (thus at 12 oscillator cycles in 12T, or 6 cycles in 6T). As a baud rate generator however, it increments in every system frequency. In that case, the baud rate is given by the formula Modes 1, 3 Baud Rate = System Frequency 16 × [65536 - (RCAP2H, RCAP2L)] Where (RCAP2H, RCAP2L) is the content of RCAP2H and RCAP2L taken as a 16-bit unsigned integer. Timer 2 as a baud rate generator is shown in Figure 10-1. This Figure is valid only if RCLK + TCLK = 1 in T2CON. Note that a rollover in TH2 does not set TF2, and will not generate an interrupt. Therefore, a Timer 2 interrupt does not have to be disabled when Timer 2 is in the baud rate generator mode. Please also note that if EXEN2 is set, a 1-to-0 transition in T2EX will set EXF2 but will not cause a reload from (RCAP2H, RCAP2L) to (TH2, TL2). Thus when Timer 2 is in use as a baud rate generator, T2EX can be used as an extra external interrupt, if desired. We should keep mind that when Timer 2 is running (TR2 = 1) in “timer” function in the baud rate generator mode, one should not try to read or write TH2 or TL2. Under these conditions the timer is being incremented every state time, and the results of a read or write may not be accurate. The RCAP registers may be read, but shouldn’t be written to, because a write might overlap a reload and cause write and/or reload errors. In this case, turn the timer off (clear TR2) before accessing the Timer 2 or RCAP registers. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 38 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Figure 10-1 Timer 2 in Baud Rate Generator Mode 10.5 SFR description Mnemonic Description PCON Power Control Serial port 0 control register Serila port 0 data buffer SCON SBUF Direct Bit 7 87h SMOD 98h SM0 Bit 6 Bit 5 Serial port - Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET - GF1 GF0 PD IDLE 00h SM1 REN TB8 RB8 TI RI 00h SM2 99h SBUF[7:0] Mnemonic: PCON 7 SMOD 6 - 5 - XXh Address: 87h 4 - 3 GF1 2 GF0 1 PD 0 IDLE Reset 00h SMOD: This bit set to “1” to make the UART 0 baud-rate double. Mnemonic: SCON 7 SM0 6 SM1 5 SM2 Address: 98h 4 REN 3 TB8 2 RB8 1 TI 0 RI Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 39 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded SM0,SM1 SM0, SM1 specify the serial port mode as follows (Fosc is the system frequency) : SM0 SM1 Mode Description Baud Rate 0 0 0 Shift register Fosc /6 0 1 1 8-bit UART variable 1 0 2 9-bit UART Fosc /16 or Fosc/32 1 1 3 9-bit UART variable SM2 Enables the multiprocessor communication feature in Modes 2 and 3. In Mode 2 or 3, if SM2 is set to 1, then RI will not be activated if the received 9th data bit (RB8) is 0. In Mode 1, if SM2 = 1, then RI will not be activated if a valid stop bit was not received. In mode 0, SM2 should be 0. REN Enables serial reception. Set by software to enable reception. Clear by software to disable reception. TB8 TB8 is the 9th data bit that will be transmitted in Modes 2 and 3. Set or clear by software as desired. RB8 In Modes 2 and 3, it is the 9th data bit that was received. In mode 1, if SM2 = 0, RB8 is the stop bit that was received. In Mode 0, RB8 is not used. TI TI is the transmit interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or at the beginning of the stop bit in the other modes, in any serial transmission. It must be cleared by software. RI RI is the receive interrupt flag. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 40 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11 Programmable Counter Array (PCA) The PCA provides more timing capabilities with less CPU intervention than the standard timer/counters. The PCA consists of a dedicated counter which serves as the time base for an array of five compare/capture modules. Its clock input can be programmed to count any one of the following signals: - Fosc - Fosc/4 - Fosc/12 - External clock input (CCCI pin, i.e., Port1[2]) where Fosc is the system Frequency defined in Section 1. Each compare/capture module can be programmed in any one of the following modes: - Positive edge capture mode - Negative edge capture mode - Both positive and negative edge capture mode - Timer mode - High Speed Output mode - 8-bit PWM mode - 16-bit PWM mode When the compare/capture modules are programmed in the capture mode, timer mode, or high speed output mode, an interrupt can be generated when the module executes its function. All five modules share one interrupt vector. 11.1 PCA clock select The clock input can be selected from the following four modes: 11.1.1 CCCLK = 00, selected system clock. The PCA counter increments once per system clock. Take a 16MHz oscillator as the example, the counter increments every 62.5ns in 6T mode, or 125ns in 12T mode. 11.1.2 CCCLK = 01, selected system clock/4 The PCA counter increments once every 4 system clocks. Take a 16MHz oscillator as the example, the counter increments every 250ns in 6T mode, or 500ns in 12T mode. 11.1.3 CCCLK = 10, selected system clock/12. The PCA counter increments once every 12 system clocks. Take a 16MHz oscillator as the example, the counter increments every 750ns in 6T mode, or 1.5us in 12T mode. 11.1.4 CCCLK = 11, selected external clock input. The PCA counter increments when a 1-to-0 transition is detected on the CCCI pin (= P1[2]). Fcry . Example, 16MHz oscillator, CCCI must Condition: Whatever 12T or 6T setting, CCCI pin ≤ 8 not more than 2MHz. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 41 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Fig. 11-1: PCA clock selection Table 11-1 PCA clock sample period example Machine cycle 6T Fcry (MHz) 16 6T CCCLK[1:0] PCA counter increment Div Sample period(us) 00 1 system clocks 1 0.0625 16 01 2 system clocks 4 0.25 6T 16 10 12 system clocks 12 0.75 12T 16 00 1 system clocks 2 0.125 12T 16 01 2 system clocks 8 0.5 12T 16 10 24 6T/12T 16 11 12 system clocks External clock input (CCCI pin) 1.5 External clock input (CCCI pin) / Note: Besides PCA counter increment from External clock input, Sample period(us) = 1 / (Fcry / Div) 11.2 PCA Compare/Capture mode 11.2.1 Positive edge capture mode: The external input pins CC0 through CC4 are sampled for a 0-to 1 transition. When a positive edge transition is detected, hardware loads the 16-bit value of the PCA counter (CCCH, CCCL) into the module’s capture registers (CCnDH, CCnDL). The resulting value in the capture registers reflects the PCA timer value at the time a transition was detected on the CCn pin. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 42 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Fig 11-2: PCA capture mode with positive edge 11.2.2 Negative edge capture mode: The external input pins CC0 through CC4 are sampled for a 1-to 0 transition. When a negative edge transition is detected, hardware loads the 16-bit value of the PCA counter (CCCH, CCCL) into the module’s capture registers (CCnDH, CCnDL). The resulting value in the capture registers reflects the PCA timer value at the time a transition was detected on the CCn pin. Fig 11-3: PCA capture mode with negative edge 11.2.3 Both positive and negative edge capture mode: The external input pins CC0 through CC4 are sampled for a 0-to-1 or 1-to-0 transition. When a positive edge or negative edge transition is detected, hardware loads the 16-bit value of the PCA counter (CCCH, CCCL) into the module’s capture registers (CCnDH, CCnDL). The resulting value in the capture registers reflects the PCA timer value at the time a transition was detected on the CCn pin. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 43 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Fig 11-4: PCA capture mode with both negative and positive edge 11.2.4 Timer mode: In the Timer mode. When the PCA counter rolls over, the CCnIF bit will be which can then generate an interrupt if CCnIE is enabled Fig 11-5: PCA Timer mode 11.2.5 High speed output: The high speed output mode toggles a CCn pin when a match occurs between the PCA counter and a pre-loaded value (CCnD[15:0]) in a module’s compare registers. When the PCA counter matches the CCnD register, the TOGn toggles and is output on the CCn pin. Here is an example: If the TOGn register is set to one by software, the hardware will clear the TOGn register and output low on the CCn pin when the PCA counter matches the CCnD register. If software doesn’t set the bit before the next match, the hardware will set the TOGn register and output high automatically. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 44 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded CCnI F CCnD[15:0] PCA 16 bit counter Interrupt CCnI E 16 bit comparator CCn pin TOGn register CCnMOD = 101 Update Fig 11-6: PCA high speed output 11.2.6 8-bit PWM: Any or all of the five PCA modules can be programmed to be a Pulse Width Modulator (PWM). The PWM output can be used to convert digital data to an analog signal by simple external circuitry. The frequency of the PWM depends on the clock source for the PCA counter. The pulse width depends on the CCnDL[7:0] register and CCnDH[15:8] is not used. When all the bits in CCnDL[7:0] are zero, the CCn pin will be kept low always. The PWM frequency is selected by SFR CCCLK as : When CCCLK = 00, PWM output frequency = Fosc/256. When CCCLK = 01, PWM output frequency = (Fosc/4)/256. When CCCLK = 10, PWM output frequency = (Fosc/12)/256. When CCCLK = 11, PWM output frequency = (CCCI pin frequency )/256. If users want to use the PWM mode, the software must set the CCR register and always keep it high. If software clears the CCR register, the PWM will be disabled and keep the CCn pin to low. 11.2.7 16-bit PWM: It is almost the same as 8-bit PWM. Any or all of the five PCA modules can be programmed to be a 16-bit PWM. The frequency of the PWM depends on the clock source for the PCA counter. The pulse width depends on the CCnD[15:0] register. When all the bits in CCnD[15:0] are zero, the CCn pin will be kept low always. The PWM frequency is selected by SFR CCCLK as : When CCCLK = 00, PWM output frequency = Fosc/65536. When CCCLK = 01, PWM output frequency = (Fosc/4)/65536. When CCCLK = 10, PWM output frequency = (Fosc/12)/65536. When CCCLK = 11, PWM output frequency = (CCCI pin frequency )/65536. Still, if users want to use this PWM mode, the software must set the CCR register and always keep it high. If software clears the CCR register, the PWM will be disabled and keep the CCn pin to low. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 45 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3 PCA SFR description Mnemonic PCAC1 PCAC2 PCAH PCAL CC0CON CC0DH CC0DL CC1CON CC1DH CC1DL CC2CON CC2DH CC2DL CC3CON CC3DH CC3DL CC4CON CC4DH CC4DL Description PCA control register 1 PCA control register 2 PCA counter high byte PCA counter low byte CC0 control register CC0 data high byte CC0 data low byte CC1 control register CC1 data high byte CC1 data low byte CC2 control register CC2 data high byte CC2 data low byte CC3 control register CC3 data high byte CC3 data low byte CC4 control register CC4 data high byte CC4 data low byte Direct Bit 7 Bit 6 A1h CCR CIDL A2h CCCLK[1:0] Bit 5 PCA Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET - CC4IE CC3IE CC2IE CC1IE CC0IE 00h - CC4IF CC3IF CC2IF CC1IF CC0IF 00h 9Ah PCA[15:8] 00h 9Bh PCA[7:0] 00h A3h - - - TOG0 - CC0MOD[2:0] 00h 9Ch CC0D[15:8] 00h 9Dh CC0D[7:0] 00h A4h - - - TOG1 - CC1MOD[2:0] 00h 9Eh CC1D[15:8] 00h 9Fh CC1D[7:0] 00h A5h - - - TOG2 - CC2MOD[2:0] 00h 91h CC2D[15:8] 00h 92h CC2D[7:0] 00h A6h - - - TOG3 - CC3MOD[2:0] 00h 93h CC3D[15:8] 00h 94h CC3D[7:0] 00h A7h - - - TOG4 - CC4MOD[2:0] 00h 95h CC4D[15:8] 00h 96h CC4D[7:0] 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 46 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3.1 PCA Control register 1 Mnemonic: PCAC1 7 6 CCR CIDL R/W R/W 5 - 4 CC4IE R/W 3 CC3IE R/W 2 CC2IE R/W 1 CC1IE R/W Address: A1h 0 Reset CC0IE 00h R/W CCR: PCA Counter Run control bit. Set by software to turn the PCA counter on. Must be cleared by software to turn the PCA counter off. CIDL: Counter Idle control: CIDL = 0 programs the PCA counter to continue functioning during idle mode. CIDL = 1 programs it to be gated off during idle. CCnIE: CC0 ~ CC4 interrupt enable. CCnIE = 1, enable interrupt. CCnIE = 0, disable interrupt. 11.3.2 PCA Control register 2 Mnemonic: PCAC2 7 6 CCCLK[1:0] R/W 5 - 4 CC4IF R/W 3 CC3IF R/W 2 CC2IF R/W 1 CC1IF R/W Address: A2h 0 Reset CC0IF 00h R/W CCCLK[1:0] Compare/Capture clock source select CC0CLK[1:0] 00 01 10 11 Clock source Fosc Fosc/4 Fosc/12 External clock input (CCCI pin) CCnIF CC0 ~ CC4 interrupt flag. Must be cleared by software. 11.3.3 PCA Counter register Mnemonic: PCAH 7 6 5 4 3 PCA[15:8] R/W 2 1 Address: 9Ah 0 Reset 00h Mnemonic: PCAL 7 6 5 4 3 PCA[7:0] R/W 2 1 Address: 9Bh 0 Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 47 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3.4 Compare/Capture channel 0 control register Mnemonic: CC0CON 7 6 5 - 4 TOG0 R/W 3 - 2 Address: A3h 1 0 Reset CC0MOD[2:0] 00h R/W CC0MOD[2:0] Compare/Capture channel 0 modes select. CC0MOD[2:0] 000 001 010 011 100 101 110 111 TOG0: CC0 toggle register. 11.3.5 Function Disable PCA channel 0 Positive edge capture mode Negative edge capture mode Both positive and negative edge capture mode Timer mode High Speed Output mode 8-bit PWM 16-bit PWM CC0 Data register Mnemonic: CC0DH 7 6 5 4 3 CC0D[15:8] R/W 2 1 Address: 9Ch 0 Reset 00h Mnemonic: CC0DL 7 6 5 4 3 CC0D[7:0] R/W 2 1 Address: 9Dh 0 Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 48 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3.6 Compare/Capture channel 1 control register Mnemonic: CC1CON 7 6 5 - 4 TOG1 R/W 3 - Address: A4h 2 1 0 Reset CC1MOD[2:0] 00h R/W CC1MOD[2:0] Compare/Capture channel 1 modes select. CC1MOD[2:0] 000 001 010 011 100 101 110 111 TOG1: CC1 toggle register. 11.3.7 Function Disable PCA channel 1 Positive edge capture mode Negative edge capture mode Both positive and negative edge capture mode Timer mode High Speed Output mode 8-bit PWM 16-bit PWM CC1 Data register Mnemonic: CC1DH 7 6 5 4 3 CC1D[15:8] R/W 2 1 Address: 9Eh 0 Reset 00h Mnemonic: CC1DL 7 6 5 4 3 CC1D[7:0] R/W 2 1 Address: 9Fh 0 Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 49 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3.8 Compare/Capture channel 2 control register Mnemonic: CC2CON 7 6 5 - 4 TOG2 R/W 3 - 2 Address: A5h 1 0 Reset CC2MOD[2:0] 00h R/W CC2MOD[2:0] Compare/Capture channel 2 modes select. CC2MOD[2:0] 000 001 010 011 100 101 110 111 TOG2: CC2 toggle register. 11.3.9 Function Disable PCA channel 2 Positive edge capture mode Negative edge capture mode Both positive and negative edge capture mode Timer mode High Speed Output mode 8-bit PWM 16-bit PWM CC2 Data register Mnemonic: CC2DH 7 6 5 4 3 CC2D[15:8] R/W 2 1 Address: 91h 0 Reset 00h Mnemonic: CC2DL 7 6 5 4 3 CC2D[7:0] R/W 2 1 Address: 92h 0 Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 50 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3.10 Compare/Capture channel 3 control register Mnemonic: CC3CON 7 6 5 4 3 - - - TOG3 R/W - Address: A6h Res 2 1 0 et CC3MOD[2:0] 00h R/W CC3MOD[2:0] Compare/Capture channel 3 modes select. CC3MOD[2:0] 000 001 010 011 100 101 110 111 TOG3: CC3 toggle register. Function Disable PCA channel 3 Positive edge capture mode Negative edge capture mode Both positive and negative edge capture mode Timer mode High Speed Output mode 8-bit PWM 16-bit PWM 11.3.11 CC3 Data register Mnemonic: CC3DH 7 6 Mnemonic: CC3DL 7 6 5 5 4 3 CC3D[15:8] R/W 4 3 CC3D[7:0] R/W 2 2 1 Address: 93h 0 Reset 00h 1 Address: 94h 0 Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 51 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 11.3.12 Compare/Capture channel 4 control register Mnemonic: CC4CON 7 6 5 - 4 TOG4 R/W 3 - 2 Address: A7h 1 0 Reset CC4MOD[2:0] 00h R/W CC4MOD[2:0] Compare/Capture channel 4 modes select. CC4MOD[2:0] 000 001 010 011 100 101 110 111 TOG4: CC4 toggle register. Function Disable PCA channel 4 Positive edge capture mode Negative edge capture mode Both positive and negative edge capture mode Timer mode High Speed Output mode 8-bit PWM 16-bit PWM 11.3.13 CC4 Data register Mnemonic: CC4DH 7 6 5 4 3 CC4D[15:8] R/W 2 1 Address: 95h 0 Reset 00h Mnemonic: CC4DL 7 6 5 4 3 CC4D[7:0] R/W 2 1 Address: 96h 0 Reset 00h Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 52 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 12 Expanded External Interrupt (EEI) interface SM59D04G2 implements an EEI interface allowing the connection of an 8xn matrix keyboard. It is based on 8 inputs with programmable interrupt capability for either high or low levels. These inputs are available as an alternate function of P1 and allow to exit from idle and power-down modes given in Section 14. The EEI interfaces with the CPU core through 3 SFR: KBLS, the EEI Level Selection register, KBE, the EEI Enable register, and KBF, the EEI Flag register. The EEI inputs are considered as 8 independent interrupt sources sharing the same interrupt vector. Figure 12-1 shows that each EEI input has the capability to detect a programmable level according to KBLS.x bit value. Level detection is then reported in interrupt flags KBF.X that can be masked by software using KBE.x bits. An interrupt enable bit (KBD in IE1) allows global enable or disable of the keyboard interrupt as in Fig. 12-2. This structure allows keyboard arrangements from 1xn to 8xn matrix, and allows usage of P1 inputs for other purpose. P1 inputs allow exiting from the idle and power-down modes Figure 12.1 EEI interface Block Diagram EEI Interface Interrupt Request Figure 12.2 EEI input Circuitry Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 53 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 12.1 EEI SFR description Mnemonic KBLS KBE KBF 12.1.1 Description EEI level Selector register EEI Input Enable register EEI Flag register Direct Bit 7 Bit 6 Bit 5 Bit 4 Keyboard interface Bit 3 Bit 2 Bit 1 Bit 0 RESET FDh KBLS7 KBLS6 KBLS5 KBLS4 KBLS3 KBLS2 KBLS1 KBLS0 00h FEh KBE7 KBE6 KBE5 KBE4 KBE3 KBE2 KBE1 KBE0 00h FFh KBF7 KBF6 KBF5 KBF4 KBF3 KBF2 KBF1 KBF0 00h EEI level selector register Mnemonic: KBLS 7 6 KBLS7 KBLS6 R/W R/W 5 KBLS5 R/W 4 KBLS4 R/W 3 KBLS3 R/W 2 KBLS2 R/W 1 KBLS1 R/W Address: FDh 0 Reset KBLS0 00h R/W KBLS7: EEI line 7 level selection bit Cleared to enable a low level detection on Port line 7. Set to enable a high level detection on Port line 7. KBLS6: EEI line 6 level selection bit Cleared to enable a low level detection on Port line 6. Set to enable a high level detection on Port line 6. KBLS5: EEI line 5 level selection bit Cleared to enable a low level detection on Port line 5. Set to enable a high level detection on Port line 5. KBLS4: EEI line 4 level selection bit Cleared to enable a low level detection on Port line 4. Set to enable a high level detection on Port line 4. KBLS3: EEI line 3 level selection bit Cleared to enable a low level detection on Port line 3. Set to enable a high level detection on Port line 3. KBLS2: EEI line 2 level selection bit Cleared to enable a low level detection on Port line 2. Set to enable a high level detection on Port line 2. KBLS1: EEI line 1 level selection bit Cleared to enable a low level detection on Port line 1. Set to enable a high level detection on Port line 1. KBLS0: EEI line 0 level selection bit Cleared to enable a low level detection on Port line 0. Set to enable a high level detection on Port line 0. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 54 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 12.1.2 EEI input enable register Mnemonic: KBE 7 6 KBE7 KBE6 R/W R/W 5 KBE5 R/W 4 KBE4 R/W 3 KBE3 R/W 2 KBE2 R/W 1 KBE1 R/W Address: FEh 0 Reset KBE0 00h R/W KBE7: EEI line 7 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.7 bit in KBE register to generate an EEI interrupt request. KBE6: EEI line 6 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.6 bit in KBE register to generate an interrupt request. KBE5: EEI line 5 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.5 bit in KBE register to generate an interrupt request. KBE4: EEI line 4 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.4 bit in KBE register to generate an interrupt request. KBE3: EEI line 3 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.3 bit in KBE register to generate an interrupt request. KBE2: EEI line 2 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.2 bit in KBE register to generate an interrupt request. KBE1: EEI line 1 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.1 bit in KBE register to generate an interrupt request. KBE0: EEI line 0 Enable bit Cleared to enable standard I/O pin. Set to enable KBE.0 bit in KBE register to generate an interrupt request. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 55 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 12.1.3 EEI flag register Mnemonic: KBF 7 6 5 KBF7 KBF6 KBF5 R R R 4 KBF4 R 3 KBF3 R 2 KBF2 R 1 KBF1 R Address: FFh 0 Reset KBF0 00h R KBF7: EEI line 7 flag Set by hardware when the port line 7 detects a programmed level. It generates a EEI interrupt request if the KBE.7 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF6: EEI line 6 flag Set by hardware when the port line 6 detects a programmed level. It generates a EEI interrupt request if the KBE.6 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF5: EEI line 5 flag Set by hardware when the port line 5 detects a programmed level. It generates a EEI interrupt request if the KBE.5 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF4: EEI line 4 flag Set by hardware when the port line 4 detects a programmed level. It generates a EEI interrupt request if the KBE.4 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF3: EEI line 3 flag Set by hardware when the port line 3 detects a programmed level. It generates a EEI interrupt request if the KBE.3 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF2: EEI line 2 flag Set by hardware when the port line 2 detects a programmed level. It generates a EEI interrupt request if the KBE.2 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF1: EEI line 1 flag Set by hardware when the port line 1 detects a programmed level. It generates a EEI interrupt request if the KBE.1 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. KBF0: EEI line 0 flag Set by hardware when the port line 0 detects a programmed level. It generates a EEI interrupt request if the KBE.0 bit in KBE register is set. This register is read only access; the flag is automatically cleared by reading the register. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 56 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 13 Interrupts SM59D04G2 has a total of 8 interrupt vectors, they include two external interrupts, three timer interrupts, one serial port interrupts, EEI interrupts, and a PCA interrupt. Each of the interrupt sources can be individually enabled or disabled by setting or clearing a bit in the IE or IE1 register. This register also contains a global disable bit, which must be cleared to disable all interrupt at once. Interrupt Vector External interrupt 0 Timer 0 External interrupt 1 Timer 1 Serial Port Timer 2 EEI PCA interrupt 0003h 000Bh 0013h 001Bh 0023h 002Bh 0033h 003Bh Polling sequence Polling sequence Interrupt Source 13.1 SFR description Mnemonic IE IE1 IP IP1 Description Interrupt Enable register Interrupt Enable 1 register Interrupt Priority register Interrupt Priority 1 register Mnemonic: IE 7 6 EA - Direct Bit 7 A8h EA - A9h - B8h B9h 5 ET2 Bit 6 Bit 5 EEI interface Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET ET2 ES ET1 EX1 ET0 EX0 00h - - - - - EPCA KBD 00h - - PT2 PS PT1 PX1 PT0 PX0 00h - - - - - - PPCA PKBD 00h 4 ES 3 ET1 2 EX1 1 ET0 Address: A8h 0 Reset EX0 00h EA: Disable all interrupt. If EA = 0, no interrupt will be acknowledged. If EA = 1, each interrupt source is individually enabled or disabled by setting or clearing its enable bit. ET2: Timer 2 interrupt enable bit. ES: Serial port 0 interrupt enable bit. ET1: Timer 1 interrupt enable bit. EX1: External interrupt 1 enable bit. ET0: Timer 0 interrupt enable bit. EX0: External interrupt 0 enable bit. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 57 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Mnemonic: IE1 7 6 - 5 - 4 - 3 - 2 - 1 EPCA Address: A9h 0 Reset KBD 00h 3 PT1 2 PX1 1 PT0 Address: B8h 0 Reset PX0 00h EPCA: PCA interrupt enable bit. KBD: EEI interrupt enable bit. Cleared to disable EEI interrupt. Set to enable EEI interrupt. Mnemonic: IP 7 6 - 5 PT2 4 PS PT2: Timer 2 interrupt priority bit. PT2 = 1 is high priority. PS: Serial port 0 interrupt priority bit. PS = 1 is high priority. PT1: Timer 1 interrupt priority bit. PT1 = 1 is high priority. PX1: External interrupt 1 priority bit. PX1 = 1 is high priority. PT0: Timer 0 interrupt priority bit. PT0 = 1 is high priority. PX0: External interrupt 0 priority bit. PX0 = 1 is high priority. Mnemonic: IP1 7 6 - 5 - 4 - 3 - 2 - 1 PPCA Address: B9h 0 Reset PKBD 00h PPCA: PCA interrupt priority bit. PPCA = 1 is high priority. PKBD: EEI interrupt priority bit. PKBD = 1 is high priority. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 58 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded 14 Power Management 14.1 Idle Mode The user can enter the idle mode by setting the IDLE bit in the PCON register. In the idle mode, the internal clock to the CPU part is stopped but the clock still remains for the peripherals and the interrupt logic continues. The CPU part will exit idle mode when either an interrupt or a reset occurs. 14.2 Power down mode When the PD bit in the PCON register is set, the CPU enters the power-down mode as idle mode does. But the peripherals are also stopped. To exit from power down mode is done by a hardware reset or external interrupts. 14.3 SFR description Mnemonic Description PCON Power Control Direct Bit 7 87h SMOD Bit 6 Bit 5 Bit 4 Power Management - Bit 3 Bit 2 Bit 1 Bit 0 RESET GF1 GF0 PD IDLE 00h 4 1 PD Mnemonic: PCON 7 SMOD 6 - 5 Address: 87h 3 GF1 2 GF0 0 IDLE Reset 00h GF1: General-purpose flag bit. GF0: General-purpose flag bit. PD: When set to “1”, the MCU will into Power-down mode. IDLE: When set to “1”, the MCU will into IDLE mode. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 59 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Operating Conditions Symbol Description Min. Typ. Max. Unit. Remarks TA Operating temperature -40 25 85 ℃ Ambient temperature under bias VCC5 Supply voltage 4.5 5.0 5.5 V Fosc 25 Oscillator Frequency 2 25 25 MHz DC Characteristics (TA = -40 degree C to 85 degree C, Vcc = 5V) Symbol Parameter Valid Min. -0.5 VIL1 VIL2 Input Low Voltage Input Low Voltage port 0,1,2,3,4,#EA RES, XTAL1 VIH1 Input High Voltage port 0,1,2,3,4,#EA VIH2 Input High Voltage RES, XTAL1 VOL1 Output Low Voltage port 0, ALE, #PSEN VOL2 VOH1 Output Low Voltage Output High Voltage port 1,2,3,4 port 0 VOH2 Output High Voltage port 1,2,3,4,ALE,#PSEN IIL Max. Unit Test Conditions 0.8 V 0 0.8 2.0 Vcc+0.5 V V 70%Vcc Vcc+0.5 V 0.45 V IOL=3.2mA 0.45 2.4 V V IOH=-800uA 90%Vcc V IOH=-80uA 2.4 90%Vcc V V IOH=-10uA IOL=1.6mA IOH=-60uA Logical 0 Input Current port 1,2,3,4 -75 uA Vin=0.45V ITL Logical Transition Current port 1,2,3,4 -650 uA Vin=2.0V ILI Input Leakage Current Reset Pull-down Resistance Pin Capacitance Power Supply Current port 0, #EA ±10 uA 0.45V<Vin<Vcc 300 Kohm 10 pF Freq=1MHz, Ta=25 ℃ 20 mA Active mode, 16MHz 6.5 mA Idle mode, 16MHz 50 uA Power down mode R RES C IO I CC RES 50 Vdd Note1:Under steady state (non-transient) conditions, IOL must be externally Icc Active Mode Test Circuit Icc VDD NC Clock Signal SM59D04G2 P0 XTAL2 EA XTAL1 RST VSS Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 60 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded AC Characteristics (16/25 MHz, operating conditions; CL for Port 0, ALE and PSEN Outputs=150pF; CL for all Other Output=80pF) Symbol Parameter Valid Cycle fosc=16MHz Min. Typ. Max Variable fosc Min. Typ. Unit Max T LHLL ALE pulse width RD/WRT 115 2xT - 10 nS T AVLL Address Valid to ALE low RD/WRT 43 T - 20 nS T LLAX Address Hold after ALE low RD/WRT 53 T - 10 nS T LLIV ALE low to Valid Instruction In RD T LLPL ALE low to #PSEN low RD 53 T - 10 nS T PLPH #PSEN pulse width RD 173 3xT - 15 nS T PLIV #PSEN low to Valid Instruction In RD T PXIX Instruction Hold after #PSEN RD T PXIZ Instruction Float after #PSEN RD 87 T + 25 nS T AVIV Address to Valid Instruction In RD 292 5xT -20 nS T PLAZ #PSEN low to Address Float RD 10 nS T RLRH #RD pulse width RD 365 6xT - 10 nS T WLWH #WR pulse width WRT 365 6xT - 10 nS T RLDV #RD low to Valid Data In RD T RHDX Data Hold after #RD RD T RHDZ Data Float after #RD RD 145 2xT+20 nS T LLDV ALE low to Valid Data In RD 590 8xT - 10 nS T AVDV Address to Valid Data In RD 542 9xT - 20 nS T LLYL ALE low to #WR High or #RD low RD/WRT 178 3xT+10 nS T AVYL Address Valid to #WR or #RD low RD/WRT 230 4xT-20 nS T QVWH Data Valid to #WR High WRT 403 7xT-35 nS T QVWX Data Valid to #WR transition WRT 38 T - 25 nS T WHQX Data hold after #WR WRT 73 T + 10 nS T RLAZ #RD low to Address Float RD T YALH #WR or #RD high to ALE high RD/WRT T CHCL clock fall time nS T CLCX clock low time nS T CLCH clock rise time nS T CHCX clock high time nS T, TCLCL clock period 240 4xT-10 177 0 3xT-10 0 302 5xT - 10 0 197 53 72 63 nS nS nS 10 0 Remarks nS nS 3xT-10 T -10 1/fosc 5 nS T + 10 nS nS Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 61 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Application Reference Valid for SM59D04G2 2MHz 47 pF 47 pF 6MHz 35 pF 35 pF X'tal C1 C2 16MHz 30 pF 30 pF 25MHz 25 pF 25 pF 10MHz 30 pF 30 pF Crystal X'tal C1 C2 XTAL2 12MHz 30 pF 30 pF SM59D04G2 XTAL1 C2 C1 VSS NOTE: Oscillation circuit may differ with different crystal or ceramic resonator in higher oscillation frequency which was due to each crystal or ceramic resonator has its own characteristics. User should check with the crystal or ceramic resonator manufacture for appropriate value of external components. Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 62 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Data Memory Read Cycle Timing Program Memory Read Cycle Timing Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 63 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Data Memory Write Cycle Timing I/O Ports Timing Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 64 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Timing Critical, Requirement of External Clock (Vss=0.0V is assumed) Tm.I External Program Memory Read Cycle Tm.II External Data Memory Read Cycle Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 65 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded Tm.III External Data Memory Write Cycle Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 66 Ver.C SM59D04G2 07/2009 SM59D04G2 8-Bits Micro-controller 16KB+ ISP Flash & 1KB RAM embedded MCU writer list Company Contact info Tel:02-22182325 Fax:02-22182435 E-mail: [email protected] Programmer Model Number Lab Tool - 48XP/UXP Lab Tool – 848/848XP Hi-Lo 4F.,No.18,Lane 79,Rueiguang Rd.,Neihu,Taipei,Taiwan R.O.C. Web site: http://www.hilosystems.com.tw Tel: 02-87923301 Fax:02-87923285 E-mail: [email protected] All - 100 series Xeltek Electronic Co., Ltd Bldg 6-31 Meizhiguo garden, #2 Jiangjun Ave., Jiangning, Nanjing, China 211100 Web site: http://www.xeltek-cn.com Tel: + 86-25-52765201, E-mail: [email protected] [email protected] Superpro 280U Superpro 580U Superpro 3000U Superpro 9000U Guangzhou Zhiyuan Electronic Co.,Ltd Floor 2,No.7 building,Huangzhou Industrial Estate,Chebei Road,Tianhe district,Guangzhou,China 510660 Web site: http://www.embedtools.com/ TEL: +86-20-28872449 E-mail: [email protected] SmartPRO 5000U/X8 TianJin Weilei technology ltd Rm 357,Venturetech Center,12 Keyan West Road Nankai District,Tianjin,P.R.C, 300192 Web site: http://www.weilei.com.cn/ TEL: + 86-22-87891218#801 E-mail: [email protected] [email protected] VP-890;VP-980;VP-880;VP-680 VP-480;VP-380;VP-280;VP-190 Advantech 7F, No.98, Ming-Chung Rd., Shin-Tien City, Taipei, Taiwan, ROC Web site: http://www.aec.com.tw Specifications subject to change without notice contact your sales representatives for the most recent information. ISSFD-M031 67 Ver.C SM59D04G2 07/2009