Datasheet - HK - Em78p468n - 275568 Different DWTR Pins
Datasheet - HK - Em78p468n - 275568 Different DWTR Pins
OTP ROM
EM78P468N
8-BIT MICRO-CONTROLLER
Version 1.0
EM78P468N
OTP ROM
Application Note
1. GENERAL DESCRIPTION
The EM78P468N is an 8-bit RISC type microprocessor with high speed CMOS technology and low
power consumption. Integrated onto a single chip are on chip watchdog (WDT), Data RAM, ROM,
programmable real time clock counter, internal/external interrupt, power down mode, LCD driver
IROUT function, and tri-state I/O. It provides a PROTECTION bit to protect against intrusion of user’s
code in the OTP memory and a 10-OPTION bit to accommodate user’s requirements. It also provides a
especial 13 bits customer ID option.
With its OTP-ROM feature, the EM78P468N offers a convenient way of developing and verifying user’s
programs. Moreover, user developed code can be easily programmed with the ELAN writer.
2. FEATURES
CPU
Operating voltage range : 2.2V 5.5V
Operating temperature range: -40°C ~ +85°C.
Dual clock operation
High frequency oscillator can select between Crystal, RC, or PLL (phase lock loop)
Low frequency oscillator can select between Crystal or RC mode
Totally 272 bytes SRAM
144 bytes general purpose register
128 bytes bits on chip data RAM
4K*13 bits on chip Electrical OTP-ROM (One Time Programmable Read Only Memory).
Up to 28 bi-directional tri-state I/O ports
Typically, 12 bi-directional tri-state I/O ports.
16 bi-directional tri-state I/O ports shared with LCD segment output pin.
8-level stack for subroutine nesting
8-bit real time clock/counter (TCC)
One IROUT/PWM generator
Four sets of 8 bit auto reload counter/timer can be used as interrupt sources
Counter 1: independent counter
Counter 2, High Pulse Width Timer (HPWT), and Low Pulse Width Timer (LPWT) shared with IR
function
LCD
Common driver pins: 4
Segment driver pins: 32
1/3, 1/2 bias
1/4, 1/3, 1/2 duty
Applications
Remote control for air conditioner
Health care
Home appliances
3. PIN ASSIGNMENTS
P5.7/ IROUT
SEG29/ P8.5
SEG30/ P8.6
SEG31/ P8.7
P5.5/ INT1
P5.6/ TCC
P6.7
P6.6
P6.5
P6.4
P6.3
P6.2
P6.1
P6.0
NC
NC
NC
NC
NC
37
36
35
34
33
51
50
49
48
47
46
45
44
43
42
41
40
39
38
SEG28/ P8.4 52 32 P5.4/ INT0
SEG26/P8.2 54 30 XIN
SEG25/P8.1 55 29 VDD
SEG24/P8.0 56 28 OSCO
SEG23/P7.7
SEG22/P7.6
57
58
EM78P468N 27
26
R-OSCI
GND
SEG20/P7.4 60 24 VLCD 3
SEG19/P7.3 61 23 VLCD 2
SEG18/ P7.2 62 22 VA
SEG17/ P7.1 63 21 VB
11
12
13
14
15
16
17
18
19
1
9
SEG 9
SEG 8
SEG 7
SEG 6
SEG 5
SEG 4
SEG 3
SEG 2
SEG 1
SEG 0
SEG 15
SEG 14
SEG 13
SEG 12
SEG 11
SEG 10
COM 3
COM 2
COM 1
4. FUNCTION DESCRIPTION
ROM IO PORT IO
Oscillator
IR/PWM
PLL/Crystal/RC
Timer/ Counter
R-OSCI
OSCO
Xout
Xin
Interruption
register
R1 (TCC)
Interruption
control
Control w ake-up General RAM
Instruction ALU
on I/O port
decoder
R3
R4
ACC
128 byte
LCD RAM PORT5 PORT6 PORT7 PORT8
Data RAM
R R R R
IOC5 IOC6 IOC9 IOC9
5 6 7 8
Common Segment
driver driver
3. R2 (Program Counter)
* The structure is depicted in Fig. 3
* Generates 4K × 13 on-chip ROM addresses to the relative programming instruction codes.
* "JMP" instruction allows direct loading of the low 10 program counter bits.
* "CALL" instruction loads the low 10 bits of the PC and PC+1, then push it into the stack.
* "RET'' ("RETL k", "RETI") instruction loads the program counter with the contents at the top of
stack.
* "MOV R2, A" allows the loading of an address from the A register to the PC. The contents of the
ninth and tenth bits do not change.
* "ADD R2, A" allows a relative address be added to the current PC. The contents of the ninth and
tenth bits do not change.
* The most significant bit (A10~A11) will be loaded with the content of bits PS0~PS1 in the Status
register (R3) upon execution of a "JMP'' or "CALL'' instruction.
PC
Reset v ector 000H
003H
CALL TCC ov erf low interrupt v ector
00 PAGE0 0000~03FF 006H
RET Exteral INT0 pin interrupt v ector
01 PAGE1 0400~07FF RETL Exteral INT1 pin interrupt v ector 009H
RETI STACK LEVEL 1 00CH
Counter 1 underf low interrupt v ector
10 PAGE2 0800~0BFF STACK LEVEL 2 00FH
Counter 2 underf low interrupt v ector
User Memory Space
STACK LEVEL 3
11 PAGE3 0C00~0FFF high pulse width timer underf low interrupt v ector 012H
STACK LEVEL 4
low pulse width timer underf low interrupt v ector 015H
STACK LEVEL 5
Port 6,Port8 pin change wake-up interrupt v ector 018H
STACK LEVEL 6 01BH
Low v oltage detector interrupt v ector
STACK LEVEL 7
STACK LEVEL 8
FFFH
ADDRESS
0 0 R0 (Indirect Addressing Register)
0 1 R1 (Time Clock Counter) R5 bit 0 -> 0 R5 bit 0 -> 1
0 2 R2 (P rogram Counter) control re giste r page 0 control re giste r page 1
0 3 R3 (Status Register)
0 4 R4 (RAM select register)
0 5 R5 (P ort5 & IOCP AGE ) IOC50 (P ort5 I/O control & LCD segment)
0 6 R6 (P ort6) IOC60 (P ort6 I/O control ) IOC61(Wake up & P 5.7 sink current)
0 7 R7 (P ort7) IOC70 (P ort7 I/O control ) IOC71(TCC & INT0 control register)
0 8 R8 (P ort8) IOC80 (P ort8 I/O control ) IOC81(WDT control register)
0 9 R9 (LCD control register) IOC90 (128 byte RAM addressl ) IOC91(Counter 1,2 control)
0 A RA (LCD address) IOCA0 (128 byte RAM data bufferl) IOCA1(high/low pulse width timer control)
0 B RB (LCD data buffer) IOCB0 (Counter 1 preset) IOCB1(P ort 6 pull-high control)
0 C RC (LVD control & Counter enable) IOCC0 (Counter 2 preset) IOCC1(P ort 6 open drain control)
0 D RD (system & P LL/Booster frequency ) IOCD0 (High-pulse width timer preset) IOCD1(P ort 8 pull-high control)
0 E RE (IR & INT0/1,TCC control) IOCE0 (Low-pulse width timer preset) IOCE1(P ort 6 pull-down control)
0 F RF (interrupt status register) IOCF0 (interrupt mask register) IOCF1 (interrupt mask register)
10
| 16 byte common register LCD RAM 4*32 bits
1F
20
bank 0 ~ bank 3
| 128 byte data RAM
32 byte common register
3F
4. R3 (Status Register)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
-- PS1 PS0 T P Z DC C
Bit 4 (T): Time-out bit. Set to 1 by the "SLEP" and "WDTC" commands or during power up and
reset to 0 by WDT timeout.
EVENT T P REMARK
WDT wake up from sleep mode 0 0
WDT time out (not sleep mode) 0 1
/RESET wake up from sleep 1 0
Power up 1 1
Low pulse on /RESET X X X: don't care
Bit 3 (P): Power down bit. Set to 1 during power on or by a "WDTC" command and reset to 0 by a
"SLEP" command.
Bit 2 (Z): Zero flag
Bit 1 (DC): Auxiliary carry flag
Bit 0 (C): Carry flag
7. R6 (PORT6)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
R67 R66 R65 R64 R63 R62 R61 R60
8. R7 (PORT7)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
R77 R76 R75 R74 R73 R72 R71 R70
9. R8 (PORT8)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
R87 R86 R85 R84 R83 R82 R81 R80
Bit 7 (BS): LCD bias select bit, 0/1=>(1/2 bias) / (1/3 bias)
Bit 4 (LCDEN): LCD enable bit: 0/1 -> LCD circuit disable/enable. When LCD function is disabled,
all common/segment outputs are set to ground (GND) level.
Bit 3: Not used
Bit 2 (LCDTYPE): LCD drive waveform type select bit
0: A type waveform
1: B type waveform
Bit 6~4 (CLK2~0): main clock select bit for PLL mode (code option select)
CLK2 CLK1 CLK0 Main clock
0 0 0 32.768K*130=4.26 MHz
0 0 1 32.768K*65=2.13 MHz
0 1 0 2.13MHz/2
0 1 1 2.13MHz/4
1 -- -- 32.768K*244=8 MHz
Bit 3 (IDLE): idle mode enable bit. This bit will decide the intended mode of the SLEP instruction.
IDLE=”0”+SLEP instruction => sleep mode
IDLE=”1”+SLEP instruction => idle mode
Bit 0 (CPUS): CPU oscillator source select, 0/1=> sub-oscillator (Fs)/ main oscillator (Fm)
When CPUS=0, the CPU oscillator select sub-oscillator and the main oscillator is stopped.
Normal Mode
Code option
fm:oscillation HLFS=0
fs: oscillation
it must delay a little times for the main CPU: using fosc
oscillation stable w hile your system timing
control is conscientious
CPUS="0"
CPUS="1"
IDLE="0" IDLE="1"
SLEEP Mode SLEP
Green Mode SLEP
IDLE Mode
Fm:stop fm:stop fm:stop
Fs: stop fs: oscillation fs: oscillation
CPU: stop Wake up CPU: using fs w ake up CPU: stop
The w ake up time from sleep to green mode is The w ake up time from idle to green
approximately 18ms+16*1/fs mode is 16*1/fs
Bit 7 (ICIF): Port 6, Port 8, input status changed interrupt flag. Set when PORT6, PORT8 input
changes.
Bit 6 (LPWTF): interrupt flag of internal low-pulse width timer underflow.
Bit 5 (HPWTF): interrupt flag of internal high-pulse width timer underflow.
Bit 4 (CNT2): interrupt flag of internal counter 2 under-flow.
Bit 3 (CNT1): interrupt flag of internal counter 1 underflow.
Bit 2 (INT1F): external INT1 pin interrupt flag.
Bit 1 (INT0F): external INT0 pin interrupt flag.
Bit 0 (TCIF): TCC timer overflow interrupt flag. Set when TCC timer overflows.
2. IOC50 (PORT5 I/O Control and PORT7, 8 for LCD Segment Control Register)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
IOC57 IOC56 IOC55 IOC54 P8HS P8LS P7HS P7LS
Bit 1(P7HS): Switch to high nibble I/O of Port7 or to LCD segment output as share pins
SEGxx/P7.x pins
0: select high nibble of PORT7 as normal P7.4~P7.7
1: select LCD SEGMENT output as SEG20~SEG23 output
Bit 0(P7LS): Switch to low nibble I/O of PORT7 or to LCD segment output as share pins
SEGxx/P7.x pins
0: select low nibble of PORT7 as normal P7.0~P7.3
1: select LCD SEGMENT output as SEG16~SEG19 output
Bit 7 ~ Bit 0: All are Counter 1 buffer that user can read and write. Counter 1 is an 8-bit
down-counter with 8-bit pre-scaler that is used as IOCB to preset the counter and read preset
value. After an interruption, it will auto reload the preset value.
Bit 7 ~ Bit 0: All are Counter 2 buffer that user can read and write. The Counter 2 is an 8-bit
down-counter with 8-bit pre-scaler that is used as IOCC to preset the counter and read preset
value. After an interruption, it will reload the preset value.
When IR output is enabled, this control register can obtain carrier frequency output.
If the Counter 2 clock source is equal to FT–
Carrier frequency (Fcarrier) = FT/[2*(preset value+1)*prescaler]
Bit 7 ~ Bit 0: All are high-pulse width timer buffer that user can read and write. High-pulse width
timer preset register is an eight-bit down-counter with 8-bit pre-scaler that is used as IOCD to
preset the counter and read preset value. After an interruption, it will reload the preset value.
For PWM or IR application, this control register is set as high pulse width.
If the high-pulse width source clock is FT–
the high pulse width=prescaler*(high-pulse width preset value+1)/ FT
For PWM or IR application, this control register is set as low pulse width.
If the low-pulse width timer source clock is FT–
the low pulse width=prescaler*(preset value+1)/ FT
Bit 7 (INT_EDGE):
0: P5.4 's (INT0) interruption source is a rising edge signal.
1: P5.4 's (INT0) interruption source is a falling edge signal.
Bit 6 (INT): INT enable flag, this bit is read only
0: interrupt masked by DISI or hardware interrupt
1: interrupt enabled by ENI/RETI instructions
Bit 5 (TS): TCC signal source
0: internal instruction cycle clock
1: transition on TCC pin, TCC period > internal instruction clock period
Bit 4 (TE): TCC signal edge
0: increment by TCC pin rising edge
1: increment by TCC pin falling edge
Bit 3 (PSRE): Prescaler Register enable bit
0: TCC rate 1:1
1: as indicated in the table below:
Bit 2~0 (TCCP2~0): TCC pre-scaler bits.
TCCP2 TCCP1 TCCP0 TCC rate
0 0 0 1:2
0 0 1 1:4
0 1 0 1:8
0 1 1 1:16
1 0 0 1:32
1 0 1 1:64
1 1 0 1:128
1 1 1 1:256
Bit 2~0 (WDTP2~0): watchdog timer pre-scaler bits. The WDT source clock is sub-oscillation
frequency.
WDTP2 WDTP1 WDTP0 WDT rate
0 0 0 1:1
0 0 1 1:2
0 1 0 1:4
0 1 1 1:8
1 0 0 1:16
1 0 1 1:32
1 1 0 1:64
1 1 1 1:128
Bit 7(CNT2S): Counter 2 clock source select 0/1 => Fs/ Fm*
(*Fs: sub-oscillator clock, Fm: main-oscillator clock)
Bit 6~4(CNT2P2~0): Counter 2 prescaler select bits
CNT2P2 CNT2P1 CNT1P0 Counter 2 scale
0 0 0 1:2
0 0 1 1:4
0 1 0 1:8
0 1 1 1:16
1 0 0 1:32
1 0 1 1:64
1 1 0 1:128
1 1 1 1:256
Bit 3(CNT1S): Counter 1 clock source select 0/1 => Fs/ Fm*
(*Fs: sub-oscillator clock, Fm: main-oscillator clock)
Bit 2~0 (CNT1P2~0): Counter 1 prescaler select bits
CNT1P2 CNT1P1 CNT1P0 Counter 1 scale
0 0 0 1:2
0 0 1 1:4
0 1 0 1:8
0 1 1 1:16
1 0 0 1:32
1 0 1 1:64
1 1 0 1:128
1 1 1 1:256
17. IOCA1 (High-Pulse Width Timer, Low-Pulse Width Timer Control Register)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
LPWTS LPWTP2 LPWTP1 LPWTP0 HPWTS HPWTP2 HPWTP1 HPWTP0
Bit 7(LPWTS): low-pulse width timer clock source select 0/1 -> Fs/ Fm*
(*Fs: sub-oscillator clock, Fm: main-oscillator clock)
Bit 3(HPWTS): high-pulse width timer clock source select 0/1 -> Fs/ Fm*
(*Fs: sub-oscillator clock, Fm: main-oscillator clock)
R1 (TCC) is an 8-bit timer/counter. The clock source of TCC can be selected by internal instruction
clock or external signal input (edge selectable from the TCC control register). If TCC signal source is
from internal instruction clock, TCC will increase by 1 at every instruction cycle (without pre-scaler).
If TCC signal source is from external clock input, TCC will increase by 1 at every falling edge or
rising edge of the TCC pin.
The watchdog timer is a free running on-chip RC oscillator. The WDT will keep on running even after
the oscillator driver has been turned off. During Normal mode, Green mode, or Idle mode operation,
a WDT time-out (if enabled) will cause the device to reset. The WDT can be enabled or disabled at
any time during the Normal mode and Green mode by software programming. Refer to WDTE bit of
IOC81 register. With no pre-scaler, the WDT time-out period is equal to (prescaler*256/ Fs)
Data Bus
TCC
MUX Prescaler 8 to 1 MUX
Pin
PSRE TCCP2~0
TCC overflow interrupt
(IOC71)(IOC71)
TE (IOC71)
TS (IOC71)
Fs
WDTE (IOC81) 8 to 1 MUX Prescaler
(Sub oscillator)
WDTP2~0
WDT Time out
(IOC81)
Fig. 7(b) Block Diagram of WDT
NOTE: Open-drain, pull high, and pull down are not shown in the figure.
Fig. 8 The Circuit of I/O Port and I/O Control Register for Port 5, Port 6, Port 7and Port 8
Address Name Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit Name INT_EDGE INT TS TE PSRE TCCP2 TCCP1 TCCP0
Power-On 1 0 1 1 1 1 1 1
N/A IOC71 /RESET and WDT 1 0 1 1 1 1 1 1
Wake-Up from Pin
P P P P P P P P
Change
Bit Name X X X X WDTE WDTP2 WDTP1 WDTP0
Power-On U U U U 0 1 1 1
N/A IOC81 /RESET and WDT U U U U 0 1 1 1
Wake-Up from Pin
U U U U P P P P
Change
Bit Name CNT2S CNT2P2 CNT2P1 CNT2P0 CNT1S CNT1P2 CNT1P1 CNT1P0
Power-On 0 0 0 0 0 0 0 0
N/A IOC91 /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name LPWTS LPWTP2 LPWTP1 LPWTP0 HPWTS HPWTP2 HPWTP1 HPWTP0
Power-On 0 0 0 0 0 0 0 0
N/A IOCA1 /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name PH67 PH66 PH65 PH64 PH63 PH62 PH61 PH60
Power-On 0 0 0 0 0 0 0 0
N/A IOCB1 /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name OP67 OP66 OP65 OP64 OP63 OP62 OP61 OP60
Power-On 0 0 0 0 0 0 0 0
N/A IOCC1 /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name PH87 PH86 PH85 PH84 PH83 PH82 PH81 PH80
Power-On 0 0 0 0 0 0 0 0
N/A IOCD1 /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name PL67 PL66 PL65 PL64 PL63 PL62 PL61 PL60
Power-On 0 0 0 0 0 0 0 0
N/A IOCE1 /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name X X X X X X X LVDE
Power-On U U U U U U U 0
N/A IOCF1 /RESET and WDT U U U U U U U 0
Wake-Up from Pin
U U U U U U U P
Change
Bit Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Power-On U U U U U U U U
0x00 R0(IAR) /RESET and WDT P P P P P P P P
Wake-Up from Pin
P P P P P P P P
Change
Bit Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Power-On 0 0 0 0 0 0 0 0
0x01 R1(TCC) /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Power-On 0 0 0 0 0 0 0 0
0x02 R2(PC) /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
Jump to address 0x0018 or continue to execute next instruction
Change
Address Name Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit Name X PS1 PS0 T P Z DC C
Power-On U 0 0 1 1 U U U
0x03 R3(SR) /RESET and WDT U 0 0 t t P P P
Wake-Up from Pin
U P P t t P P P
Change
Bit Name Bank1 Bank0 -- -- -- -- -- --
Power-On 0 0 U U U U U U
0x04 R4(RSR) /RESET and WDT 0 0 P P P P P P
Wake-Up from Pin
P P P P P P P P
Change
Bit Name R57 R56 R55 R54 X X X IOCPAGE
Power-On 1 1 1 1 U U U 0
0x05 R5 /RESET and WDT 1 1 1 1 U U U 0
Wake-Up from Pin
P P P P U U U P
Change
Bit Name R67 R66 R65 R64 R63 R62 R61 R60
Power-On 1 1 1 1 1 1 1 1
0x06 R6 /RESET and WDT 1 1 1 1 1 1 1 1
Wake-Up from Pin
P P P P P P P P
Change
Bit Name R77 R76 R75 R74 R73 R62 R71 R70
Power-On 1 1 1 1 1 1 1 1
0x7 R7 /RESET and WDT 1 1 1 1 1 1 1 1
Wake-Up from Pin
P P P P P P P P
Change
Bit Name R87 R86 R85 R84 R83 R82 R81 R80
Power-On 1 1 1 1 1 1 1 1
0x8 R8 /RESET and WDT 1 1 1 1 1 1 1 1
Wake-Up from Pin
P P P P P P P P
Change
Bit Name BS DS1 DS0 LCDEN X LCDTYPE LCDF1 LCDF0
Power-On 1 1 0 0 U 0 0 0
0x9 R9 /RESET and WDT 1 1 0 0 U 0 0 0
Wake-Up from Pin
P P P P U P P P
Change
Bit Name X X X LCD_A4 LCD_A3 LCD_A2 LCD_A1 LCD_A0
Power-On 0 0 0 0 0 0 0 0
0xA RA /RESET and WDT 0 0 0 0 0 0 0 0
Wake-Up from Pin
P P P P P P P P
Change
Bit Name X X X X LCD_D 3 LCD_D 2 LCD_D 1 LCD_D 0
Power-On U U U U 0 0 0 0
0xB RB /RESET and WDT U U U U 0 0 0 0
Wake-Up from Pin
U U U U P P P P
Change
Bit Name LVDEN /LV LVDF LVD LPWTEN HPWTEN CNT2EN CNT1EN
Power-On 0 1 0 0 0 0 0 0
0xC RC /RESET and WDT 0 1 0 0 0 0 0 0
Wake-Up from Pin
P P 0 P P P P P
Change
Bit Name X CLK2 CLK1 CLK0 IDLE BF1 BF0 CPUS
Power-On U 0 0 0 1 0 0 *1
0xD RD /RESET and WDT U 0 0 0 1 0 0 *1
Wake-Up from Pin
U P P P P P P P
Change
Bit Name IRE HF LGP X IROUTE TCCE EINT1 EINT0
Power-On 0 0 0 U 0 0 0 0
0xE RE /RESET and WDT 0 0 0 U 0 0 0 0
Wake-Up from Pin
P P P U P P P P
Change
Address Name Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit Name ICIF LPWTF HPWTF CNT2F CNT1F INT1F INT0F TCIF
RF Power-On 0 0 0 0 0 0 0 0
0xF /RESET and WDT 0 0 0 0 0 0 0 0
(ISR)
Wake-Up from Pin
N P P P P P P P
Change
Bit Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Power-On U U U U U U U U
0x10~0x3F R10~R3F /RESET and WDT U U U U U U U U
Wake-Up from Pin
P P P P P P P P
Change
X: not used. U: unknown or don’t care. P: previous value before reset. –: Not defined
t : check R3 register explain. N: Monitors interrupt operation status; 1=running; P=not running
Note 1: This bit is equal to code option HLFS bit data
The controller can be awakened from sleep mode and idle mode. The wake-up signals are listed as follows:
Wakeup signal Sleep mode Idle mode Green mode Normal mode
*2
TCC time out Wake-up
X Interrupt Interrupt
IOCF bit0=1 + interrupt
+ next instruction
Wake-up Wake-up
INT0 pin
+ interrupt + interrupt Interrupt Interrupt
IOCF bit1=1
+ next instruction + next instruction
Wake-up Wake-up
INT1 pin
+ interrupt + interrupt Interrupt Interrupt
IOCF bit2=1
+ next instruction + next instruction
Wake-up
Counter 1
X + interrupt Interrupt Interrupt
IOCF bit3=1
+ next instruction
Wake-up
Counter 2
X + interrupt Interrupt Interrupt
IOCF bit4=1
+ next instruction
Wake-up
High-pulse timer
X + interrupt Interrupt Interrupt
IOCF bit5=1
+ next instruction
Wake-up
Low-pulse timer
X + interrupt Interrupt Interrupt
IOCF bit6=1
+ next instruction
IOCF bit7=0 IOCF bit7=0
Wake-up Wake-up
+ next instruction + next instruction
Port6, Port 8
(input status IOCF bit7=1+ENI IOCF bit7=1+ENI X X
change wake-up) instruction instruction
Wake-up Wake-up
+ interrupt + interrupt
+ next instruction + next instruction
WDT time out X RESET RESET RESET
Note 2: Only external TCC pin can Wake-up from idle mode.
4.6 Oscillator
4.6.1. Oscillator Modes
The EM78P468N can operate in the three different oscillator modes from main oscillator (R-OSCI,
OSCO), such as RC oscillator with external resistor and Internal capacitor mode (IC); crystal
oscillator mode; and PLL operation mode. User can select one of them by programming FMMD1 and
FMMD0 in the CODE options register. The sub-oscillator can be operated in crystal mode and ERIC
mode. Table3 below shows how these three modes are defined.
In most applications, the R-OSCI pin and the OSCO pin can be connected with a crystal or ceramic
resonator to generate oscillation. Fig. 10 depicts such circuit. Table 5 provides the recommended
values of C1 and C2. Since each resonator has its own attribute, user should refer to its specification
for appropriate values of C1 and C2. RS, a serial resistor, may be necessary for AT strip cut crystal
or low frequency mode.
R-OSCI
EM78P468N
OSCO
R-OSCI Xin
EM78P468N EM78P468N
OSCO Xout
R-OSCI
or Xin
EM78P468N
4.8 Interrupt
The EM78P468N has nine interrupt sources as listed below:
TCC overflow interrupt.
External interrupt P5.4/INTO pin
External interrupt P5.5/INT1 pin
Counter 1 underflow interrupt
Counter 2 underflow interrupt
High-pulse width timer underflow interrupt
Low-pulse width timer underflow interrupt
Port 6, Port 8 input status change wake-up
Low voltage detector
This IC has internal interrupts which are falling edge triggered or as follows:
TCC timer overflow interrupt,
Four 8-bits down counter/timer underflow interrupt
VDD level down to less than LVD setting level
If these interrupt sources change signal from high to low, the RF register will generate “1” flag to
corresponding register if the IOCF0 or IOCF1 register is enabled.
RF is the interrupt status register. It records the interrupt request in flag bit. IOCF is the interrupt
mask register. Global interrupt is enabled by ENI instruction and disabled by DISI instruction. When
one of the interrupts (when enabled) is generated, it will cause the next instruction to be fetch from
address 0003H~001BH according to interrupt source.
With EM78P468N, each individual interrupt source has its own interrupt vector as depicted in Table 3.
Before the interrupt subroutine is executed, the contents of ACC and the R3 register are initially
saved by hardware. After the interrupt service routine is completed, ACC and R3 are restored. The
existing interrupt service routine does not allow other interrupt service routine to be executed. So if
other interrupts occur while the existing interrupt service routine is being executed, the hardware will
save the later interrupts. Only after the existing interrupt service routine is completed that the next
interrupt service routine is executed.
The basic structure contains a timing control that uses a subsystem clock to generate the proper
timing for different duty and display accesses. The R9 register is a command register for LCD driver
which includes LCD enable/disable, bias (1/2 and 1/3), duty (1/2, 1/3, 1/4), and LCD frame frequency
control. The register RA is an LCD contrast and LCD RAM address control register. The register RB
is an LCD RAM data buffer. LCD booster circuit can change operation frequency to improve VLCD2
and VLCD3 drive capability. The control register is explained as follows.
Bit 7 (BS): LCD bias select bit, 0/1=>(1/2 bias) / (1/3 bias)
Bit 4 (LCDEN): LCD enable bit: 0/1 -> LCD circuit disable/enable
When LCD function is disabled, all common/segment output is set to ground (GND) level
Bit 3: Not used
Bit 2 (LCDTYPE): LCD drive waveform type select bit
0: “A” type waveform
1: “B” type waveform
RA (LCD Address)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0 0 0 LCD_A4 LCD_A3 LCD_A2 LCD_A1 LCD_A0
IC RESET occur
*Set Port 7 snd Port 8 for general I/O or LCD segment ( IOC50 )
*it must be set to output port when the pin of port 7 and the pin of port 8 for
LCD segemnt (IOC70 and IOC80 )
Use LCD address and LCD data buffer to implment user's applications.
(RA and RB )
END
1/3 Bias
VDD(3V) VDD(4.5V)
VLCD2(2V) VLCD2(3V)
VA VA
VLCD3(1V) VLCD3(1.5V)
VB GND VB GND
1/2 Bias
VDD(3V) VDD(4.5V)
VLCD2(1.5V) VLCD2(2.2.5V)
VA VA
VLCD3(1.5V) VLCD3(2.25V)
VB GND VB GND
If high-pulse width timer source clock is FT (this clock source can set by IOCA1);
High-pulse time= prescaler*[1+decimal high-pulse width timer value (IOCD0)]/ FT
If low-pulse width timer source clock is FT (this clock source can set by IOCA1);
Low-pulse time= prescaler*[1+decimal low-pulse width timer value (IOCE0)]/ FT
Fs Fm Pre-scaler
8
8
8 8
8 bit binary
down counter H/W Modulator
(counter 2)
8
HF LGP IRE
Auto-reload
IROUT pin
buffer
Fig. 22 LGP=0, HF=1, the IROUT waveform can modulate Fcarrier waveform when in low-pulse
width time.
Fig. 23 LGP=0, HF=0, the IROUT waveform cannot modulate Fcarrier waveform when in low-pulse
width time. So IROUT waveform is determined by high-pulse time and low-pulse time. This
mode can produce standard PWM waveform
Fig. 24 LGP=0, HF=1, the IROUT waveform can modulate Fcarrier waveform when in low-pulse
width time. When IRE goes from high to low, the output waveform of IROUT will keep on
transmitting till high-pulse width timer interrupt occurs.
Fig. 25 LGP=0, HF=0, the IROUT waveform can not modulate Fcarrier waveform when in low-pulse
width time. So IROUT waveform is determined by high-pulse time and low-pulse time. This
mode can produce standard PWM waveform. When IRE goes from high to low, the output
waveform of IROUT will keep on transmitting till high-pulse width timer interrupt occurs.
Fig.26 LGP=1, when this bit is set to high level, the high-pulse width timer is ignored. So IROUT
waveform output from low-pulse width timer is established.
Fcarrier
HF
start
IRE
IROUT
Fcarrier
HF
start
IRE
IROUT
Fcarrier
HF
start
IRE IR disable
IROUT
Always high-level
Fcarrier
HF
start
IRE IR disable
IROUT
Always high-level
Fcarrier
HF
start
IRE IR disable
IROUT
Always high-level
STRAT STRAT
Enable IR (RE)
HF="0", and IRE="1"
Enable IR (RE)
HF="1", and IRE="1"
END END
Word0 of Code Options is for IC function setting. The following are the settings for OTP IC
programming:
Word 0
Bit12~10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 CYES HLFS ENWDTB FSMD FMMD1 FMMD0 HLP PR2 PR1 PR0
• Bit 3 (HLP): Power consumption selection. If your system usually runs in green mode, it must be
set to low power consumption. Take note and help support the energy saving issue. We recommend
that low power consumption mode is selected.
0: Low power consumption mode
1: High power consumption mode
If for some reasons, the specification of the instruction cycle is not suitable for certain applications,
try modifying the instruction as follows:
Execute within two instruction cycles the "JMP", "CALL", "RET", "RETL", & "RETI" instructions, or
the conditional skip instructions ("JBS", "JBC", "JZ", "JZA", "DJZ", "DJZA") which were tested to be
true. Also execute within two instruction cycles the instructions that are written to the program
counter.
INSTRUCTION STATUS
HEX MNEMONIC OPERATION
BINARY AFFECTED
0 0000 0000 0000 0000 NOP No Operation None
0 0000 0000 0001 0001 DAA Decimal Adjust A C
0 0000 0000 0011 0003 SLEP 0 → WDT, Stop oscillator T, P
0 0000 0000 0100 0004 WDTC 0 → WDT T, P
0 0000 0000 rrrr 000r IOW R A → IOCR None <Note1>
0 0000 0001 0000 0010 ENI Enable Interrupt None
0 0000 0001 0001 0011 DISI Disable Interrupt None
0 0000 0001 0010 0012 RET [Top of Stack] → PC None
[Top of Stack] → PC,
0 0000 0001 0011 0013 RETI None
Enable Interrupt
0 0000 0001 rrrr 001r IOR R IOCR → A None <Note1>
0 0000 01rr rrrr 00rr MOV R, A A→R None
0 0000 1000 0000 0080 CLRA 0→A Z
0 0000 11rr rrrr 00rr CLR R 0→R Z
0 0001 00rr rrrr 01rr SUB A, R R-A → A Z, C, DC
0 0001 01rr rrrr 01rr SUB R, A R-A → R Z, C, DC
0 0001 10rr rrrr 01rr DECA R R-1 → A Z
0 0001 11rr rrrr 01rr DEC R R-1 → R Z
0 0010 00rr rrrr 02rr OR A, R A∨R→A Z
0 0010 01rr rrrr 02rr OR R, A A∨R→R Z
0 0010 10rr rrrr 02rr AND A, R A&R→A Z
0 0010 11rr rrrr 02rr AND R, A A&R→R Z
0 0011 00rr rrrr 03rr XOR A, R A⊕R→A Z
0 0011 01rr rrrr 03rr XOR R, A A⊕R→R Z
0 0011 10rr rrrr 03rr ADD A, R A+R→A Z, C, DC
0 0011 11rr rrrr 03rr ADD R, A A+R→R Z, C, DC
0 0100 00rr rrrr 04rr MOV A, R R→A Z
0 0100 01rr rrrr 04rr MOV R, R R→R Z
0 0100 10rr rrrr 04rr COMA R /R → A Z
0 0100 11rr rrrr 04rr COM R /R → R Z
0 0101 00rr rrrr 05rr INCA R R+1 → A Z
0 0101 01rr rrrr 05rr INC R R+1 → R Z
0 0101 10rr rrrr 05rr DJZA R R-1 → A, skip if zero None
0 0101 11rr rrrr 05rr DJZ R R-1 → R, skip if zero None
R(n) → A(n-1),
0 0110 00rr rrrr 06rr RRCA R C
R(0) → C, C → A(7)
R(n) → R(n-1),
0 0110 01rr rrrr 06rr RRC R C
R(0) → C, C → R(7)
R(n) → A(n+1),
0 0110 10rr rrrr 06rr RLCA R C
R(7) → C, C → A(0)
R(n) → R(n+1),
0 0110 11rr rrrr 06rr RLC R C
R(7) → C, C → R(0)
R(0-3) → A(4-7),
0 0111 00rr rrrr 07rr SWAPA R None
R(4-7) → A(0-3)
0 0111 01rr rrrr 07rr SWAP R R(0-3) ↔ R(4-7) None
0 0111 10rr rrrr 07rr JZA R R+1 → A, skip if zero None
This specification is subject to change without prior notice. 46 04.10.2004 (V1.0)
EM78P468N
OTP ROM
INSTRUCTION STATUS
HEX MNEMONIC OPERATION
BINARY AFFECTED
0 0111 11rr rrrr 07rr JZ R R+1 → R, skip if zero None
0 100b bbrr rrrr 0xxx BC R, b 0 → R(b) None <Note2>
0 101b bbrr rrrr 0xxx BS R, b 1 → R(b) None <Note3>
0 110b bbrr rrrr 0xxx JBC R, b if R(b)=0, skip None
0 111b bbrr rrrr 0xxx JBS R, b if R(b)=1, skip None
PC+1 → [SP],
1 00kk kkkk kkkk 1kkk CALL k None
(Page, k) → PC
1 01kk kkkk kkkk 1kkk JMP k (Page, k) → PC None
1 1000 kkkk kkkk 18kk MOV A, k k→A None
1 1001 kkkk kkkk 19kk OR A, k A∨k→A Z
1 1010 kkkk kkkk 1Akk AND A, k A&k→A Z
1 1011 kkkk kkkk 1Bkk XOR A, k A⊕k→A Z
1 1100 kkkk kkkk 1Ckk RETL k k → A, [Top of Stack] → PC None
1 1101 kkkk kkkk 1Dkk SUB A, k k-A → A Z, C, DC
1 1110 1000 00kk 1E8k PAGE k k->R5(1:0) None
1 1110 1001 00kk 1E9K BANK k k->R4(7:6) None
1 1111 kkkk kkkk 1Fkk ADD A, k k+A → A Z, C, DC
<Note1> This instruction is applicable to IOC5 ~ IOCF
<Note2> This instruction is not recommended for R3F operation.
<Note3> This instruction cannot operate under R3F.
2.4
2.0 2.0
TEST POINTS
0.8 0.8
0.4
AC Testing : Input is driven at 2.4V for logic "1",and 0.4V for logic "0".Tim ing m easurem ents are
m ade at 2.0V for logic "1",and 0.8V for logic "0".
CLK
/RESET
Tdrh
CLK
TCC
Ttcc
*n=0 2 4 6
Rating
Items Symbol Condition Unit
Min. Max.
Supply voltage VDD GND-0.3 +7.0 V
Input voltage VI Port5, Port6, Port7, Port8 GND-0.3 VDD+0.3 V
Output voltage VO Port5, Port6, Port7, Port8 GND-0.3 VDD+0.3 V
Operation temperature TOPR -40 85
Storage temperature TSTG -65 150
Power dissipation PD 500 mW
Operating Frequency 32.768K 10M Hz
6. ELECTRICAL CHARACTERISTIC
7. Application Circuit
APPENDIX A:
Package information
APPENDIX B:
EM78P468N Program Pin List
It uses DWRT to program EM78P468N IC’s. The DWTR connector is selected by CON4 (EM78P451), and
software is selected by EM78P468N.
Program Pin Name QFP Pin Number IC Pin Name
VPP 25 /RESET
ACLK 32 P54/INT0
DINCLK 33 P55/INT1
DATAIN 34 P56/TCC
/PGMB 38 P60
/OEB 39 P61
VDD 29 VDD
GND 26 GND