The contents of in this specification are subject to change without notice. ELAN Microelectronics assumes no
responsibility concerning the accuracy, adequacy, or completeness of this specification. ELAN Microelectronics
makes no commitment to update, or to keep current the information and material contained in this specification.
Such information and material may change to conform to each confirmed order.
In no event shall ELAN Microelectronics be made responsible to any claims attributed to errors, omissions, or
other inaccuracies in the information or material contained in this specification. ELAN Microelectronics shall not
be liable for direct, indirect, special incidental, or consequential damages arising out of the use of such information
or material.
The software (if any) described in this specification is furnished under a license or nondisclosure agreement, and
may be used or copied only in accordance with the terms of such agreement.
ELAN Microelectronics products are not intended for use in life support appliances, devices, or systems. Use of
ELAN Microelectronics product in such applications is not supported and is prohibited.
NO PART OF THIS SPECIFICATION MAY BE REPRODUCED OR TRANSMITTED IN ANY FORM OR BY
ANY MEANS WITHOUT THE EXPRESS WRITTEN PERMISSION OF ELAN MICROELECTRONICS.
(This specification is subject to change without further notice)
Page 5
Universal Serial Bus Microcontroller
Specification Revision History
Doc. VersionRevision DescriptionDate
1.0Initial Version2006/03/22
EM78612
Product Specification (V1.0) 03.22.2006•••• 3
(This specification is subject to change without further notice)
Page 6
EM78612
Universal Serial Bus Microcontroller
1General Description
The EM78612 is a series of Universal Serial Bus 8-bit RISC microcontrollers. It is
specifically designed for USB low speed device application and to support legacy
device such as PS/2 mouse. The EM78612 also support one device address and two
endpoints..
The EM78612 is implemented on a RISC architecture. It has five-level stack and six
interrupt sources. The amount of General Input/Output pins is up to12. Each device
has 80 bytes SRAM. The ROM size of the EM78612 is 2K.
These series of chips have Dual Clock mode which allows the device to run on low
power saving frequency.
2Features
Low-cost solution for low-speed USB devices, such as mouse, joystick, and
gamepad.
USB Specification Compliance
••••
Universal Serial Bus Specification Version 1.1
••••
USB Device Class Definition for Human Interface Device (HID), Firmware
Specification Version 1.1
••••
Support 1 device address and 2 endpoints (EP0 and EP1)
USB Application
••••
USB protocol handling
••••
USB device state handling
••••
Identifies and decodes Standard USB commands to EndPoint Zero
PS/2 Application Support
••••
Built-in PS/2 port interface
Built-in 8-bit RISC MCU
••••
5 level stacks for subroutine and interrupt
••••
6 available interrupts
••••
8-bit real time clock/counter (TCC) with overflow interrupt
••••
Built-in RC oscillator free running for WatchDog Timer and Dual clock mode
••••
Two independent programmable prescalers for WDT and TCC
••••
Two methods of power saving:
1. Power-down mode (SLEEP mode)
2. Low frequency mode.
••••
Two clocks per instruction cycle
I/O Ports
4 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 7
••••
Up to 12 general purposes I/O pins grouped into two ports (Port 6 and 7).
••••
Up to 2 LED sink pins
••••
Each GPIO pin of Ports 6 & Port 7 has an internal programmable pull-high
resistor
••••
Each GPIO pin of Ports 6 has an internal programmable pull- low resistor
••••
Each GPIO pin wakes up the MCU from sleep mode by input state change
Internal Memory
••••
Built-in 2048*13 bits MASK ROM
••••
Built-in 80 bytes general purpose registers (SRAM)
••••
Built-in USB Application FIFOs.
Operation Frequency
••••
Normal Mode: MCU runs on the external oscillator frequency
••••
Dual Clock Mode: MCU runs at the frequency of 256 KHz (or 32KHz, 4KHz,
500Hz), emitted by the internal oscillator with the external ceramic resonator
turned off to save power.
EM78612
Universal Serial Bus Microcontroller
Built-in 3.3V Voltage Regulator
••••
For MCU power supply
••••
Pull-up source for the external USB resistor on D-pin.
Package Type
••••
16 pin PDIP(300MIL) / SOP(150MIL) (EM78612 AP / AM)
••••
18 pin PDIP(300MIL) / SOP(300MIL) (EM78612 BP / BM)
(This specification is subject to change without further notice)
Page 9
5Pin Description
When this pin is used as a PS/2 line interface, it will generate an interrupt when
SymbolI/OFunction
OSCII6MHz / 12MHz ceramic resonator input.
EM78612
Universal Serial Bus Microcontroller
OSCOI/O
V
3.3V
O
P60 ~ P67I/O
P70 ~ P73I/O
D+ / P50I/O
D- / P51I/O
Return path for 6MHz / 12MHz ceramic resonator.
3.3V DC voltage output from internal regulator. This pin should be tied to a
4.7
F decoupling capacitor to GND.
Port6 offers up to 8 GIOP pins.
The pull high resistors (132K Ohms) and pull low resistors (10K Ohm) are
selected through pin programming.
Port7 offers up to 4 GIOP pins. The sink current of P70 & P71 are programmable
for driving LED.
Each pin has pull high resistors (132K Ohm) that can be selected through pin
programming.
USB Plus data line interface or PS/2 line interface are user-defined through
firmware setting.
When the EM78612 is running under PS/2 mode, this pin will have an internal
pulled-high resistor (2.2K Ohm), with VDD=5.0V.
When this pin is used as a PS/2 line interface, it will generate an interrupt when
its state changes (Port5 state change interrupt enable).
USB Minus data line interface or PS/2 line interface are user-defined through
firmware setting.
When the EM78612 is running under PS/2 mode, this pin will have an internal
pulled-high resistor (2.2K Ohm), with VDD=5.0V.
its state changes (Port5 state change interrupt enable).
When the EM78612 is running under USB mode, this pin will have an internal
pulled-high resistor, 1.5k Ohm, with V
V
DD
V
SS
Connects to the USB power source or to a nominal 5V-power supply. Actual V
range can vary between 4.4V and 5.2V.
Connects to ground.
-
Table 5-1 Pin Descriptions
=3.3V.
3.3
DD
Product Specification (V1.0) 03.22.2006•••• 7
(This specification is subject to change without further notice)
Page 10
EM78612
Universal Serial Bus Microcontroller
6Function Block Diagram
Built-in
RC
Reset &
Sleep &
Wake up
Control
I/O
Port 5
OSCIOSCO
Oscillator
Timing
Control
Prescaler
WDT
Timer
Prescaler
TCCWDT
R1
(TCC)
VDDV3.3
3.3V
Regulator
RAM
R4
(RSR)
D+D-
Transceiver
USB
Device
Controller
DATA & CONTROL BUS
I/O
Port 6
Interrupt
Control
I/O
Port 7
ROM
Instruction
register
Instruction
Decoder
R2
(PC)
Stack1
Stack2
Stack3
Stack4
Stack5
R3
(Status)
ALU
ACC
Figure 6-1 EM78612 Series Function Block Diagram
7Function Description
The memory of EM78612 is organized into four spaces, namely; User Program
Memory in 2048*13 bits MASK ROM space, Data Memory in 80 bytes SRAM space,
and USB Application FIFOs (for EndPoint0 and EndPoint1). Furthermore, several
registers are used for special purposes.
7.1Program Memory
The program space of the EM78612 is 2K words, and is divided into two pages. Each
page has 1K words long. After Reset, the 12-bit Program Counter (PC) points to
location zero of the program space.
It has two interrupt vectors, i.e., Interrupt Vectors at 0x0001 and USB Application
Interrupt Vectors at 0x000A. The Interrupt Vector applies to TCC Interrupt, and Port 5
State Changed Interrupt. The USB Application Interrupt Vector is for USB EndPoint
Zero Interrupt, USB Suspend Interrupt, USB Reset interrupt, and USB Host Resume
Interrupt.
After an interrupt, the MCU will fetch the next instruction from the corresponding
address as illustrated in the following diagram.
8 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 11
After reset Address
EM78612
Universal Serial Bus Microcontroller
Program Counter
0x0000
0x0001
0x000A
0x03FF
0x0400
0x07FF
Reset Vector
Interrupt Vector
USB Application Interrupt Vector
Page 0
Page 1
7.2Data Memory
The Data Memory has 80 bytes SRAM space. It is also equipped with USB Application
FIFO space for USB Application. The Figure 7-1 (next page) shows the organization of
the Data Memory Space.
7.2.1Special Purpose Registers
When the micro-controller executes the instruction, specific registers are invoked for
assistance, such as; Status Register which records the calculation status, Port I/O
Control Registers which control the I/O pins’ direction, etc. The EM78612 series
provides a lot more of other special purpose registers with different functions.
There are 15 Special Operation Registers which are located from Address 0x00 to 0x0F.
On other hand, 10 more Special Control Registers are available to control functions or
I/O direction. These are arranged from Address 0x05 to 0x0F.
that Special Control Registers can only be read or written by two instructions; IOR and
IOW.
Note
Product Specification (V1.0) 03.22.2006•••• 9
(This specification is subject to change without further notice)
Page 12
EM78612
Universal Serial Bus Microcontroller
R0 (Indirection Addre ssin g Re gister)
00
R1 (Tim e Clock / Counter Register)
01
R2 (Program C ounter) & Stack
02
R3 (Status Register)
03
R4 (RAM Select Regis ter)
04
R5 (Data line I/O Register)
05
R6 (Port 6 I/O Register)
06
R7 (Port 7 I/O Register)
07
R8 (Port6 wakeup pin selection Register)
08
R9 (Port7 wakeup pin selection Register)
09
RC (US B Application Status Re gister)
0C
RD (US B Application FIFO address register)
0D
RE (USB Application FIFO data reg iste r)
0E
RF (Int erru pt S tatus Register)
0F
10
Gene ral Purpo se Register
1F
20
General Purpose
Registers
(Bank0)
3F
General Purpose
Registers
(Bank1)
IOC5 (Port 5 I/O Co ntrol Register)
IOC6 (Port 6 I/O Co ntrol Register)
IOC7 (Port 7 I/O Co ntrol Register)
IOC8 (Sink Curent Control R egis ter)
IOCA (O peration mo de C ontrol Register)
IOCB (Port 6 pull low Control Register)
IOCC (Port 6 pull high Control Register)
IOCD (Port 7 pull high Control Register)
IOCE (Special Function Contro l Reg ister)
IOCF (Inte rrup t Mask Register)
00
01
10
EP0's FIFO
EP1's FIFO
Data Byte Pointer of EP0
Data Byte Pointer of EP111
! "$#
! "$#
! "$#! "$#
! "%
! "%
! "%! "%
! "!&
! "!&
! "!&! "!&
! "!'
! "!'
! "!'! "!'
! "(
! "(
! "(! "(
! "!)
! "!)
! "!)! "!)
! "!*
! "!*
! "!*! "!*
! "$+
! "$+
! "$+! "$+
Fig 7-1 The Organization of EM78612 Data RAM
7.2.1.1 Operation Registers in Bank 0
The following introduces each of the Operation Registers under the Special Purpose
Registers. The Operation Registers are arranged according to the order of registers’
address. Note that some registers are read only, while others are both readable and
writable.
R0 is not a physically implemented register. Its major function is to be an indirect
address pointer. Any instruction using R0 as a pointer actually accesses the data
pointed by the RAM Select Register (R4).
This register TCC, is an 8-bit timer or counter. It is readable and writable as any other
register. The Timer module will increment every instruction cycle . The user can work
around this by writing an adjusted value. The Timer interrupt is generated when the R1
register overflows from FFh to 00h. This overflow sets bit TCIF(RF[0]). The interrupt
can be masked by clearing bit TCIE (IOCF[0]).After Power-on reset and WatchDog
reset, the initial value of this register is 0x00.
10 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
The EM78612 Program Counter is an 11-bit long register that allows access to 2K
bytes of Program Memory with 5 level stacks. The eight LSB bits, 00~07, are located at
R2, while the one MSB bits, 10, is located at R3 [5].The Program Counter is cleared
after Power-on reset or WatchDog reset. The first instruction that is executed after a
reset is located at Address 00h.
07 06R3
05
04 03 02 01 00
CALL
R209 08 07 06 05 04 03 02 01 00
PAGE00000 ~ 03FF
PAGE10400 ~ 07FF
10
0
1
RET
RETL
RETI
Stack1
Stack2
Stack3
Stack4
Stack5
Fig 7-2 The Structure of ROM Page
R3 (Status Register) Default Value:(0B_0001_1000)
76543210
--PS0TPZDCC
R3 [0] Carry y/Borrow flag. For ADD , SUB Instructions
1 = A carry-out from the Most Significant bit of the result occurred
0 = No carry-out from the Most Significant bit of the result occurred
NOTE
For Borrow, the polarity is reversed.For rotate (RRC, RLC) instructions, this bit
is loaded with either the high or low-order bit of the source register
E
R3 [1] Auxiliary carry /borrow flag. For ADD , SUB Instructions
1 = A carry-out from the 4th low-order bit of the result occurred
0 = No carry-out from the 4th low-order bit of the result
NOTE
For Borrow, the polarity is reversed.
Product Specification (V1.0) 03.22.2006•••• 11
(This specification is subject to change without further notice)
Page 14
EM78612
Universal Serial Bus Microcontroller
R3 [2] Zero flag. It will be set to 1 when the result of an arithmetic or logic operation is
zero.
R3 [3] Power down flag. It will be set to 1 during Power-on phase or by “WDTC”
command and cleared when the MCU enters into Power down mode. It remains
in previous state after WatchDog Reset.
1: Power-on.
0: Power down
R3 [4] Time-out flag. It will be set to 1 during Power-on phase or by “WDTC” command.
It is reset to 0 by WDT time-out.
1: WatchDog timer without overflow.
0: WatchDog timer with overflow.
The various states of Power down flag and Time-out flag at different conditions are
shown below:
Condition
1
1
0
1
1
1
Power-on reset
1
WDTC instruction
*P
WDT time-out
0
Power down mode
0
Wakeup caused by port change during Power down mode
*P: Previous status before WDT reset
R3 [5] Page selection bit. This bit is used to select a page of program memory (refer to
R2, Program Counter).
PS0Program Memory Page [Address]
0Page 0 [0000-03FF]
1Page 1 [0400-07FF]
R3 [6,7] Reserved registers.
12 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
RC [0]Stall flag. When MCU receives an unsupported command or invalid
parameters from host, this bit will be set to 1 by the firmware to notify the
UDC to return a STALL handshake. When a successful SETUP transaction
is received, this bit is cleared automatically. This bit is both readable and
writable.
RC [1]EP0 Busy flag. When this bit is equal to “1,” it indicates that the UDC is
writing data into the EP0’FIFO or reading data from it. During this time, the
firmware will avoid accessing the FIFO until UDC finishes writing or reading.
This bit is only readable.
RC [2]Host Suspend flag. If this bit is equal to 1, it indicates that USB bus has no
traffic for the specified period of 3.0 ms. This bit will also be cleared
automatically when a bus activity takes place. This bit is only readable.
,
This bit should be used in Dual Mode
RC [3]Device Resume flag. This bit is set by firmware to general a signal to
wake-up the USB host and is cleared as soon as the USB Suspend signal
becomes low. This bit can only be set by firmware and cleared by the
hardware.
-
This bit should be used in Dual Mode
RC [4]Undefined Register. The default value is 0.
RC [5,6]EP1_R / EP0_R flag. These two bits inform the UDC to read the data written
by firmware from the FIFO. Then the UDC sends the data to the host
automatically. After UDC finishes reading the data from the FIFO, this bit is
cleared automatically.
14 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 17
EM78612
Universal Serial Bus Microcontroller
Therefore, before writing data into the FIFO, the firmware will first check this
bit to prevent overwriting the existing data. These two bits can only be set
by the firmware and cleared by the hardware.
RC [7]EP0_W flag. After the UDC completes writing data to the FIFO, this bit will
be set automatically. The firmware will clear it as soon as it gets the data
from EP0’s FIFO. Only when this bit is cleared that the UDC will be able to
write a new data into the FIFO.
Therefore, before the firmware can write a data into the FIFO, this bit must
first be set by the firmware to prevent UDC from writing data at the same
time. This bit is both readable and writable.
RD [0~4]USB Application FIFO address registers. These five bits are the address
pointer of USB Application FIFO.
RD [5~7]Undefined registers. The default value is zero.
RE (USB Application FIFO Data Register) Default Value: (0B_0000_0000)
76543210
UD7UD6UD5UD4UD3UD2UD1UD0
RE (USB Application FIFO data register) contains the data in the register of which
address is pointed by RD.
NOTE
For example, if we want to read the fourth byte of the EndPoint Zero, we will use the
address of EP0 (0x00) and Data Byte Pointer of EP0 (0x10) to access it.
// Read the 4rd byte of the EP0 FIFO
// First, assign the data byte pointer of EP0 register (0X10) with 0X03.
MOVA, @0X10
MOVRD, a// Move data in A to RD register
MOVA, @0X03
MOVRE , A// Move data in A to RE register
// Then read the content from EP0 FIFO (0x00) 4rd byte
MOVA, @0X00
MOVRD, A// Assign address point to EP0 FIFO
MOVA, RE// Read the fourth byte data (byte3) of the EP0 FIFO
MOV A, 0X0E// Read the fifth byte data (byte4) of the EP0 FIFO
Product Specification (V1.0) 03.22.2006•••• 15
(This specification is subject to change without further notice)
Page 18
EM78612
Universal Serial Bus Microcontroller
RF (Interrupt Status Register ) Default Value: (0B_0000_0000)
76543210
---
Port 5 State
Change_IF
USB Host
Resume_IF
USB
Reset_IF
USB
Suspend_IF
EP0_IFTCC_IF
RF [0]TCC Overflow interrupt flag. It will be set while TCC overflows, and is
cleared by the firmware.
RF [1]EndPoint Zero interrupt flag. It will be set when the EM78612 receives
Vender /Customer Command to EndPoint Zero. This bit is cleared by the
firmware.
RF [2]USB Suspend interrupt flag. It will be set when the EM78612 finds the USB
Suspend Signal on USB bus. This bit is cleared by the firmware.
RF [3]USB Reset interrupt flag. It will be set when the host issues the USB Reset
signal.
RF [4]USB Host Resume interrupt flag. It is set only under Dual Clock mode when
the USB suspend signal becomes low.
RF [5]Port 5 State Change interrupt flag. It is set when the Port 5 state changes .
(Port 5 state change interrupt only work in PS/2 mode.)
RF [6]Default value is zero and do not modify it.
R10~R1F are General purpose registers. These registers can be used no matter what
Bank Selector is. There are 2 banks(BK0 & BK1) R20~R3F General purpose registers,
Select by R4 [6].
7.2.1.2 Control Registers in Bank 0
Special purpose registers for special control purposes are also available. Except for the
Accumulator (A), these registers must be read and written by special instructions. One
of these registers, CONT, can only be read by the instruction "CONTR" and written by
"CONTW" instruction. The remaining special control registers can be read by the
instruction "IOR" and written by the instruction "IOW."
A (Accumulator Register)
The accumulator is an 8-bit register that holds operands and results of arithmetic
calculations. It is not addressable.
16 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 19
EM78612
Universal Serial Bus Microcontroller
CONT (Control Register)
76543210
RW_E/INTTSR2TSR1TSR0PSR2PSR1PSR0
NOTE
The CONT register can be read by the instruction "CONTR" and written by the
instruction “CONTW."
CONT [0~2]WatchDog Timer prescaler bits. These three bits are used as the
prescaler of WatchDog Timer.
CONT [3~5]TCC Timer prescaler bits.
The relationship between the prescaler value and these bits are as shown below:
PSR2/TSR2PSR1/TSR1PSR0/TSR0TCC RateWDT Rate
( 8mS )
0006MHz / 28 ms
0016MHz / 416 ms
0106MHz / 832 ms
0116MHz / 1664 ms
1006MHz / 32128 ms
1016MHz / 64256 ms
1106MHz / 128512 ms
1116MHz / 2561024 ms
CONT [6] Interrupt enable control bit. This bit toggles Interrupt function between
enable and disable. It is set to 1 by the interrupt disable instruction "DISI"
and reset by the interrupt enable instructions "ENI" or "RETI."
0: Enable the Interrupt function.
1: Disable the Interrupt function.
CONT [7] Remote wake-up enable bit. This bit is set to 1, if host enables device to
remote wake-up PC. It could be modified by SetFeature() & ClearFeature()
Request.
IOC5 ~IOC7 I/O Port Direction Control Registers
Each bit controls the I/O direction of three I/O ports ( Port5~Port7 ) respectively. When
these bits are set to 1, the relative I/O pins become input pins. Similarly, the I/O pins
becomes outputs when the relative control bits are cleared.
1: Input direction.
0: Output direction.
Product Specification (V1.0) 03.22.2006•••• 17
(This specification is subject to change without further notice)
Page 20
EM78612
Universal Serial Bus Microcontroller
IOC5 (Data Line I/O Control Register) Default Value: (0B_0000_0011)
76543210
000000P51P50
IOC5 [2~7] Undefined registers. The default value is 0.
IOC6 (Port 6 I/O Control Register) Default Value: (0B_1111_1111)
76543210
P67P66P65P64P63P62P61P60
IOC7 (Port 7 I/O Control Register) Default Value: (0B_0000_1111)
76543210
----P73P72P71P70
IOC8 (Sink Current Control Register) Default Value: (0B_0000_0000)
76543210
00Sink1.1Sink1.000Sink01Sink0.0
IOC8 [0,1][4,5]are P70/P71 sink current control registers. Four levels are offered for
selection:
Sink0.1/1.1Sink0.0/1.0Sink Current
003mA±10%
016mA±10%
1012mA±10%
1125mA±10%
The default current after Power-on reset is 3mA.
IOCA (Operation Mode Control Register) Default Value: (0B_1100_0011)
76543210
Dual_Frq.1Dual_Frq.00000PS/2USB
IOCA [0,1]These two bits are used to select the operation mode. The definition of
these two control registers is described in the table below.
IOCA[1]IOCA[0]Operation Mode
00Detect Mode
01USB Mode
18 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 21
EM78612
Universal Serial Bus Microcontroller
10PS/2 Mode
11USB Test Mode
IOCA [2~5]Undefined registers. The default value is 0.
IOCA [6,7]Select the operation frequency in Dual Clock Mode. Four frequencies
are available and can be chosen as Dual Clock mode for running the
MCU program.
Dual_Frq.1Dual_Frq.0Frequency
00500Hz
014kHz
1032kHz
11256kHz
IOCB (Port 6 Pull-Low Control Register) Default Value: (0B_0000_0000)
76543210
PL67PL66PL65PL64PL63PL62PL61PL60
IOCB [0~7]Select whether the 10K Ohm pull-low resistor of Port 6 individual pin is
connected or not.
1: Enable the pull-low function.
0: Disable the pull-low function.
IOCC (Port 6 Pull-High Control Register) Default Value: (0B_0000_0000)
76543210
PH67PH66PH65PH64PH63PH62PH61PH60
IOCC [0~7]Select whether the 132K Ohm pull-high resistor of Port 6 individual pin is
connected or not.
1: Enable the pull-high function.
0: Disable the pull-high function.
Product Specification (V1.0) 03.22.2006•••• 19
(This specification is subject to change without further notice)
Page 22
EM78612
Universal Serial Bus Microcontroller
IOCD (Port 7 Pull-High Control Register) Default Value: (0B_0000_0000)
76543210
----PH73PH72PH71PH70
IOCD [0~3]Select whether the 132K Ohm pull-high resistor of Port 7 individual pin is
connected or not.
1: Enable the pull-high function.
0: Disable the pull-high function.
IOCE (Special Function Control Register) Default Value: (0B_1111_0000)
76543210
/Dual clock/WUEWTERUN0000
IOCE [0~3]Undefined register. The default value is zero.
IOCE [4]Run bit. This bit can be cleared by the firmware and set during power-on,
or by the hardware at the falling edge of wake-up signal. When this bit is
cleared, the clock system is disabled and the MCU enters into power
down mode. At the transition of wake-up signal from high to low, this bit is
set to enable the clock system.
1: Run mode. The EM78612 is working normally.
0: Sleep mode. The EM78612 is in power down mode.
IOCE [5]WatchDog Timer enable bit. The bit disable/enables the WatchDog
Timer.
1: Enable WDT.
0: Disable WDT.
NOTE
If the Code Option WTC bit is "0,” WDT is always disabled.
IOCE [6]Enable the wake-up function as triggered by port-change. This bit is set
by UDC.
1: Disable the wake-up function.
0: Enable the wake-up function.
IOCE [7]Dual clock Control bit. This bit is used to select the frequency of system
clock. When this bit is cleared, the MCU will run on very low frequency
save power and the UDC will stop working.
1: Selects EM78612 to run on normal frequency.
0: Selects to run on slow frequency.
20 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
IOCF [0~5]TCC / EP0 / USB Suspend / USB Reset / USB Host Resume / Port 5
State Change enable bits. These eight bits respectively control the
function of TCC interrupt, EP0 interrupt, USB Suspend interrupt, USB
Reset interrupt, USB Host Resume interrupt, Port5 State Change
interrupt, Individual interrupt is enabled by setting its associated control
bit in the IOCF to "1".
1: Enable Interrupt.
0: Disable Interrupt.
IOCF[6] Default value is zero and do not modify it.
Only when the global interrupt is enabled by the ENI instruction that the individual
interrupt will work. After DISI instruction, any interrupt will not work even if the
respective control bits of IOCF are set to 1.
The USB Host Resume Interrupt works only under Dual clock mode. This is
because when the MCU is under sleep mode, it will be waked up by the UDC Resume
signal automatically.
7.2.2USB Application FIFOs
For USB Application, EM78612 provides an 8-byte First-In-First-Out (FIFO) buffer for
each endpoint. The buffer cannot be accessed directly. However, a corresponding Data
Byte Pointer register for each endpoint is made available to address the individual byte
of the FIFO buffer. The content of the individual byte will map to a special register.
Product Specification (V1.0) 03.22.2006•••• 21
(This specification is subject to change without further notice)
Page 24
EM78612
Universal Serial Bus Microcontroller
`a\E\G?OO
bc
7<d
LEeTL
LEe
798:8<;>=:?A@CBEDF:?GBEHJIK@L
TT
798:8<;>=:?A@CBEDF:?GBEHJIK@
T
LEe9LL
LEe9L
./012345!/61234
IM@CLNOMPRQPCS
T
IM@TNOMPRQPCS
L
T
U
V
W
X
Y
Z
;>D[\EDG?]:DBEF8^_<FD[\DG?]:DBEF8!^
.E/012345/61234
L
T
U
V
W
X
Y
Z
7.3I/O Ports
The EM78612 has up to twelve General Purposes I/O pins, which are classifies into two
port groups; Port 6 and Port 7. Each pin has an internal resistor that can be individually
selected by user.
The following describes the important features o EM78612 I/O pins.
7.3.1Programmable Large Current
Port 7 has two pins; P70 and P71 that can drive large current of up to 30mA. The range
of driving current is from 3mA to 30mA, which is programmable. Use IOC8 [0,1] and
IOC8 [4,5] to control the sink current of P70/P71. The default current is 3mA.
7.3.2Wakeup by Port Change Function
Each of the GPIO pins in Port 6 and Port 7 can wakeup the MCU through signal change
from input pin. This function is used to wake-up the MCU automatically from sleep
mode. It also supports the remote wake-up function for USB application.
22 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 25
Any of the Individual pins of Port 6 and Port 7 can be defined to wakeup the MCU by
setting their respective bits, R8 and R9.
7.4USB Application
EM78612 is specially designed for USB device application and has many powerful
functions that help the firmware to free itself from complex situation in various aspects
of USB application.
7.4.1 Detect PS/2 or USB Mode
When the EM78612 is connected to the bus, the firmware should detect and identify
which type of bus (USB or PS/2) it is connected to. The conditions that influence detect
function are described below:
EM78612
Universal Serial Bus Microcontroller
1.After a Power-on reset, the initial value of IOCA [0,1] is 0b00. Thus the operation
mode is “Detect mode” and the D+ and D- I/O pins are internal pulled high by
200K Ohm to VDD.
2.The firmware checks the state of R5 [0,1]. If the state with which these two bits is
0b00, set the IOCA [0] to “1” to define the “USB mode.” Otherwise, set the IOCA [1]
to “1,” to define “PS/2 mode.”
3.When the operation mode is defined as “USB mode,” the D- I/O pin is internal
pulled high by a 1.5K Ohm resistor to 3.3V, which is output from a built-in
regulator.
4.If the operation mode is in “PS/2 mode,” both of the PS/2 interface I/O pins are
internal pulled high by a 2.2K Ohm resistor to VDD.
NOTE
The firmware should set the operation mode, either in USB mode or PS/2 mode, at the
beginning of program.
An additional mode, “USB Test Mode” is also available. This mode has no load on D+
and D- I/O pins, and can only be used in USB Application case. Therefore, an external
1.5K Ohm resistor is needed to pull up D- IO pin to 3.3V.
Under “PS/2 mode,” both PS/2 pins are programmed to generate an interrupt. After
setting the Port 5 State change to Interrupt Enable bit, the MCU will interrupt while the
state of these two pins changes.
Product Specification (V1.0) 03.22.2006•••• 23
(This specification is subject to change without further notice)
Page 26
EM78612
Universal Serial Bus Microcontroller
7.4.2USB Device Controller
The USB Device Controller (UDC) built-in in the EM78612 can interpret the USB
Standard Command and response automatically without involving firmware. The
embedded Series Interface Engine (SIE) handles the serialization and deserialization
of actual USB transmission. Thus, a developer can concentrate his efforts more in
perfecting the device actual functions and spend less energy in dealing with USB
transaction.
The UDC handles and decodes most Standard USB commands defined in the USB
Specification Rev1.1. If UDC receives an unsupported command, it will set a flag to
notify MCU the receipt of such command. The Standard Commands that EM78612
supports includes; Clear Feature, Get Configuration, Get Interface, Get Status, Set
Address, Set Configuration, Set Feature, and Set Interface.
Each time UDC receives a USB command, it writes the command into EP0’s FIFO.
Only when it receives unsupported command that the UDC will notify the MCU through
interrupt.
Therefore, EM78612 is very flexible under USB application because the developer can
freely choose the method of decoding the USB command as dictated by different
situation.
7.4.3Device Address and Endpoints
EM78612 supports one device address, two endpoints, EP0 for control endpoint, and
EP1 for interrupt endpoint. Sending data to USB host in EM78612 is very easy. Just
write data into EP’s FIFO, then set flag, and the UDC will handle the rest. It will then
confirm that the USB host has received the correct data from EM78612.
7.5Reset
The EM78612 provides three types of reset: (1) Power-on Reset, (2) WatchDog Reset,
and (3) USB Reset.
7.5.1Power-On Reset
Power-on Reset occurs when the device is attached to power and a reset signal is
initiated. The signal will last until the MCU becomes stable. After a Power-on Reset, the
MCU enters into following predetermined states (see below), and then, it is ready to
execute the program.
A. The program counter is cleared.
B. The TCC timer and WatchDog timer are cleared.
24 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 27
EM78612
Universal Serial Bus Microcontroller
C. Special registers and Special Control registers are all set to initial value.
The MCU also has a low voltage detector that detects low output power condition.
Whenever the output voltage of the 3.3V regulator decreases to below 2.2V, a reset
signal is set off.
7.5.2WatchDog Reset
When the WatchDog timer overflows, it causes the WatchDog to reset. After it resets,
the program is executed from the beginning and some registers will be reset. The UDC
however, remains unaffected.
7.5.3USB Reset
When UDC detects a USB Reset signal on USB Bus, it interrupts the MCU, then
proceed to perform the specified process that follows. After a USB device is attached to
the USB port, it cannot respond to any bus transactions until it receives a USB Reset
signal from the bus.
7.6Power Saving Mode
The EM78612 provides two options of power saving modes for energy conservation,
i.e., Power Down mode, and Dual Clock mode.
7.6.1Power Down Mode
The EM78612 enters into Power Down mode by clearing the RUN register (IOCE[4]).
During this mode, the oscillator is turned off and the MCU goes to sleep. It will wake up
when signal from USB host is resumed, or when the WatchDog resets, or the input port
state changes.
If the MCU wakes up when I/O port status changes, the direction of I/O port direction
should be set at input direction, then read the state of port. For example:
// Set the Port 6 to input port
MOV A,@0XFF
IOW PORT6
// Read the state of Port 6
MOV PORT6,PORT6
// Clear the RUN bit
IOR 0X0E
AND A,@0B11101111
IOW 0X0E
Product Specification (V1.0) 03.22.2006•••• 25
(This specification is subject to change without further notice)
Page 28
EM78612
Universal Serial Bus Microcontroller
:
:
7.6.2Dual Clock Mode
The EM78612 has one internal oscillator for power saving application. Clearing the Bit
IOCE [7] will enable the low frequency oscillator. At the same time, the external
oscillator will be turned off. Then the MCU will run under very low frequency to
conserve power. Four types of frequency are available for selection in setting Bits IOCA
[6, 7].
The USB Host Resume Interrupt can only be used in this mode. If this interrupt is
enabled, the MCU will be interrupted when the USB Host Resume signal is detected on
USB Bus.
7.7Interrupt
The EM78612 has two interrupt vectors, one is in 0x0001, and the other is in 0x000A.
When an interrupt occurs while the MCU is running, it will jump to the interrupt vector
(0x0001 or 0x000A) and execute the instructions sequentially from interrupt vector. RF
is the interrupt status register that records the interrupt status in the relative flags/bits.
The interrupt condition could be one of the following:
1.TCC OverflowWhen the Timer Clock / Counter Register (R1) overflows, the
status flag RF[0] will be set to 1. Its interrupt vector is 0X0001.
2.EP0 InterruptWhen the UDC successfully received a setup transaction
from host to EndPoint0, the status flag RF[1] will be set to 1. Its interrupt vector is
0X000A.
3.USB SuspendWhen UDC detects a USB Suspend signal on USB bus, the
status flag RF[2] will be set to 1. Its interrupt vector is 0X000A.
4.USB ResetWhen the UDC detects a USB Reset signal on USB bus,
the status flag RF[3] will be set to 1. Its interrupt vector is 0X000A.
5.USB Host ResumeWhen UDC detects that the USB bus has left the Suspend
condition, the status flag RF[4] will be set to 1. Its interrupt vector is 0X000A.
6.Port 5 State ChangeWhen the input signals in Port 5 changes, the status flag
RF[5] will be set to 1. Its interrupt vector is 0X0001.
IOCF is an interrupt mask register which can be set individually bit by bit. While their
respective bit is written to 0, the hardware interrupt will inhibit, that is, the EM78612 will
not jump to the interrupt vector to execute instructions. But the interrupt status flags still
records the conditions no matter whether the interrupt is masked or not. The interrupt
26 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 29
EM78612
Universal Serial Bus Microcontroller
status flags must be cleared by firmware before leaving the interrupt service routine
and enabling interrupt.
The global interrupt is enabled by the ENI (RETI) instruction and is disabled by the DISI
instruction.
Interrupt flag. If a bit of RF is asserted, it means the relative interrupt
requested.
The priority of USB, TCC interrupt is USB > TCC.
The additional hardware process step of the interrupt occurred
including
A
Disable interrupt means reserving next time interrupt
process until the instruction “RETI” executed.
B
Jump to interrupt vector.
C
Push “Accumulator”, “R3” and “R4”. Steps “A”, “B”, and “C”
are executed at the same time.
D
Clear “R3”and“R4”.
E
If the instruction “RETI” is executed, pop “Accumulator”,
“R3” and “R4”.
FReturn to main program and enable interrupt. Step “E” and “F” are
executed at the same time.
8Absolute Maximum Ratings
SymbolMinMaxUnit
Temperature under bias070ºC
Storage temperature-65150ºC
Input voltage-0.56.0V
Output voltage-0.56.0V
Product Specification (V1.0) 03.22.2006•••• 27
(This specification is subject to change without further notice)
Page 30
EM78612
high resistor of Port6 or
Differential Input Command Mode Range
Universal Serial Bus Microcontroller
9DC Electrical Characteristic
(T = 25f, VDD = 5V, VSS = 0V)
SymbleParameterConditionMinType MaxUnit
3.3V Regulator
V
V
V
Rag
ResetL
ResetH
Output voltage of 3.3v RegulatorVDD= 5V3.03.33.6V
Low Power Reset detecting low Voltage-V
Low Power Reset detecting high Voltage-V
Single Ended Receiver ThresholdUSB operation Mode0.8-2.0V
28 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 31
EM78612
Universal Serial Bus Microcontroller
C
IN
V
RG
R
PH
I
Sink1
I
Sink2
I
Sink3
I
Sink4
Transceiver Capacitance--20pF
Output Voltage of Internal Regulator3.0-3.6V
Pull-high resister
(D-)
1.5
K
Programmable Large Current
V
= 0.4V,
P70, P71 Output Sink Current
P70, P71 Output Sink Current
P70, P71 Output Sink Current
P70, P71 Output Sink Current
OUT
IOC8[0,1] or IOC8[4,5] = 00
V
= 0.4V,
OUT
IOC8[0,1] or IOC8[4,5] = 01
V
= 0.4V,
OUT
IOC8[0,1] or IOC8[4,5] = 10
V
= 0.4V,
OUT
IOC8[0,1] or IOC8[4,5] = 11
-30%3+30%mA
-30%6+30%mA
-30%12+30%mA
-30%25+30%mA
i
Product Specification (V1.0) 03.22.2006•••• 29
(This specification is subject to change without further notice)
Page 32
EM78612
Universal Serial Bus Microcontroller
10 Application Cricuit
EM78612_CP
P64P60
P61
P62
P63
P70
P72P73
NA
V3.3
VSS
P65
P66
P67
P71
D+/CLK
D-/DATA
P50
P51
VDD
USB Application
VDDV3.3
R1
1.5k
P51
P50
Note1. IF IOCA = USB mode, MCU D- pin internal
pull-high to V3.3 with 1.5k resistor.
Note2. IF IOCA = USB test mode, it is necessary that
D- pin external pull-high to V3.3 with 1.5k
resistor.
J1
1
2
3
4
USB connector
V3.3
C3
4.7uF
C4
30pF
Note :
A. Place C1 and C2 close to MCU VDD pin.
B. Place Y1, C4 and C5 close to MCU OSCI pin.
C. In USB application, it is necessary to place C3 close to MCU V3.3 pin.
D. Port6 and Port7 are 3.3V level I/O.
E. Port60 is input only and without internal pull-high and pull-low resistor.
OSCI
Y1
6MHz or 12MHz resonator
VDD
OSCO
C5
30pF
10uF
C1
C2
0.1uF
PS/2 Application
J2
P50
P51
Note3. IF IOCA = PS/2 mode, MCU CLK and DATA pin
internal pull-high to VDD with 4.7k resistor.
5
3
12
PS/2 connector
6
4
VDD
30 ••••Product Specification(V1.0) 03.22.2006
(This specification is subject to change without further notice)
Page 33
EM78612
(Sink
Universal Serial Bus Microcontroller
Appendix
A. Special Register Map
Operation Registers
addressnameBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Default value
0x00R0Indirect Addressing Register0B_0000_0000
0x01R1(TCC)Timer/Clock Counter0B_0000_0000
0x02R2(PC)Program Counter0B_0000_0000
0x03R3(STATUS)--PS0TPZDCC0B_0001_1xxx
0x04R4(RSR)
-BK0Select the register(address: 00~3F) in the indirect addressing mode
0x0EREUSB Application FIFO Data Register0B_0000_0000
0x0FRF
R8(Port6
Wake-up Pin
Selection)
R9(Port7
Wake-up Pin
Selection)
------
P67P66P65P64P63P62P61P60
----P73P72P71P70
/Wu67/Wu66/Wu65/Wu64/Wu63/Wu62/Wu61/Wu60
----/Wu73/Wu72/Wu71/Wu70
Device
Resume
-
EP1_IF
Port5 state
change_IF
USB Host
Resume_
IF
USB
Reset_IF
Host
_SUSPEND
USB
Suspend_IF
P51/D-
/DATA
UDC
_Writing
EP0_IFTCC_IF
P50/D+
/CLK
STALL0B_0000_0000
0B_0000_0000
0B_0000_0000
0B_0000_0000
0B_1111_1111
0B_1111_1111
0B_0000_0000
Control Registers
addressnameBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Default value
CONTRW_EINTTSR2TSR1TSR0PSR2PSR1PSR00B_0100_0000
0x05IOC5
Port5 Direction Control Register
0B_0000_0011
0x06IOC6
0x07IOC7
IOC8
0x08
Current)
0x09IOC9
0x0AIOCA
0x0BIOCB
0x0CIOCC
0x0DIOCD
0x0EIOCE
0x0FIOCF
Port6 Direction Control Register
Port7 Direction Control Register
--Sink[71]_1 Sink[71]_0Sink[70]_1 Sink[70]_0
Reserved
Dual_Frq.1 Dual_Frq.0
----PS/2USB
/PL67/PL66/PL65/PL64/PL63/PL62/PL61/PL60
/PH67/PH66/PH65/PH64/PH63/PH62/PH61/PH60
----/PH73/PH72/PH71/PH70
/Dual clock/WUEWTERUN0000
0
EP1_IE
Port5_State_
Change_IE
USB HOST
Resume_IF
USB
Reset_IE
USB
Suspend_IE
EP0_IETCC_IE
Product Specification (V1.0) 03.22.2006•••• 31
(This specification is subject to change without further notice)
0B_1111_1111
0B_0000_1111
0B_0000_0000
0B_1100_0000
0B_0000_0000
0B_0000_0000
0B_0000_0000
0B_1111_0000
0B_0000_0000
Page 34
EM78612
Universal Serial Bus Microcontroller
B. Instruction Set
Each instruction in the instruction set is a 11-bit word divided into an OP code and one
or more operands. All instructions are executed within one single instruction cycle
(consisting of 2 oscillator periods), unless the program counter is changed by-
(a) Executing the instruction "MOV R2,A", "ADD R2,A", "TBL", or any other instructions
that write to R2 (e.g. "SUB R2,A", "BS R2,6", "CLR R2", ⋅⋅⋅⋅).
(b) execute CALL, RET, RETI, RETL, JMP, Conditional skip (JBS, JBC, JZ, JZA, DJZ,
DJZA) which were tested to be true.
Under these cases, the execution takes two instruction cycles.
In addition, the instruction set has the following features:
(1). Every bit of any register can be set, cleared, or tested directly.
(2). The I/O register can be regarded as general register. That is, the same instruction
can operate on I/O register.
The symbol "R" represents a register designator that specifies which one of the registers (including operational
registers and general purpose registers) is to be utilized by the instruction. Bits 6 and 7 in R4 determine the selected
register bank. "b" represents a bit field designator that selects the value for the bit located in the register "R" and
affects operation. "k" represents an 8 or 10-bit constant or literal value.