The W78LE812 is an 8-bit microcontroller which can accommodate a wide range of supply voltages
with low power consumption. The instruction set for the W78LE812 is fully compatible with the
standard 8051. The W78LE812 contains an 8K bytes MTP ROM (Multiple-Time Programmable
ROM); a 256 bytes RAM; four 8-bit bi-directional and bit-addressable I/O ports; an additional 6-bit I/O
port P4; three 16-bit timer/counters; a hardware watchdog timer and a serial port. These peripherals
are supported by a fourteen sources two-level interrupt capability. To facilitate programming and
verification, the MTP-ROM inside the W78LE812 allows the program memory to be programmed and
read electronically. Once the code is confirmed, the user can protect the code for security.
The W78LE812 microcontroller has two power reduction modes, idle mode and power-down mode,
both of which are software selectable. The idle mode turns off the processor clock but allows for
continued peripheral operation. The power-down mode stops the crystal oscillator for minimum power
consumption. The external clock can be stopped at any time and in any state without affecting the
processor.
EXTERNAL ACCESS ENABLE: This pin forces the processor to execute out of external
ROM. It should be kept high to access internal ROM. The ROM address and data will
not be present on the bus if EA pin is high and the program counter is within on-chip
ROM area. Otherwise they will be present on the bus.
PSEN
ALEADDRESS LATCH ENABLE: ALE is used to enable the address latch that separates
RSTRESET: A high on this pin for two machine cycles while the oscillator is running resets
XTAL1CRYSTAL1: This is the crystal oscillator input. This pin may be driven by an external
XTAL2CRYSTAL2: This is the crystal oscillator output. It is the inversion of XTAL1.
VSSGROUND: Ground potential
VDDPOWER SUPPLY: Supply voltage for operation.
P0.0−P0.7
P1.0−P1.7
P2.0−P2.7
P3.0−P3.7
P4.0-P4.6PORT 4: A 6-bit bi-directional I/O port which is bit-addressable. Pins P4.0 to P4.3 are
PROGRAM STORE ENABLE:
address/data bus during fetch and MOVC operations. When internal ROM access is
performed, no
alternative function P4.6.
the address from the data on Port 0. This pin also serves the alternative function P4.5
the device.
clock.
PORT 0: Port 0 is a bi-directional I/O port which also provides a multiplexed low order
address/data bus during accesses to external memory. The pins of Port 0 can be
individually configured to open-drain or standard port with internal pull-ups.
PORT 1: Port 1 is a bi-directional I/O port with internal pull-ups. The bits have alternate
functions which are described below:
T2(P1.0): Timer/Counter 2 external count input
T2EX(P1.1): Timer/Counter 2 Reload/Capture control
INT2−INT9 (P1.0−P1.7):External interrupt 2 to 9
PORT 2: Port 2 is a bi-directional I/O port with internal pull-ups. This port also provides
the upper address bits for accesses to external memory.
PORT 3: Port 3 is a bi-directional I/O port with internal pull-ups. The pins P3.4 to P3.7
can be configured with high sink current which can drive LED displays directly. All bits
have alternate functions, which are described below:
RXD(P3.0) : Serial Port receiver input
TXD(P3.1) : Serial Port transmitter output
available on 44-pin PLCC/QFP package. Pins P4.5 and P4.6 are the alternative
function corresponding to ALE and
strobe signal outputs from this pin. This pin also serves the
PSEN
enables the external ROM data onto the Port 0
PSEN
.
PSEN
Publication Release Date: February 1999
- 3 -Revision A2
BLOCK DIAGRAM
W78LE812
P1.0
P1.7
P3.0
P3.7
P4.0
P4.6
Port
1
Port
Port
Port 1
Latch
INT2~9
Interrupt
Timer
2
Timer
0
Timer
1
UART
3
4
Port 3
Latch
Port 4
Latch
Oscillator
XTAL1
ACC
PSW
Instruction
Decoder
&
Sequencer
Bus & Clock
Controller
ALE
PSEN
ALU
SFR RAM
Address
256 bytes
RAM & SFR
Watchdog
Timer
Reset Block
B
Port 0
T2T1
Latch
Port
0
P0.0
P0.7
DPTR
Stack
Pointer
Temp Reg.
PC
Incrementor
Addr. Reg.
P2.0
Port 2
Latch
Port
2
P2.7
Power control
VssVCCRSTXTAL2
FUNCTIONAL DESCRIPTION
The W78LE812 architecture consists of a core controller surrounded by various registers, five general
purpose I/O ports, 256 bytes of RAM, three timer/counters, and a serial port. The processor supports
111 different opcodes and references both a 64K program address space and a 64K data storage
space.
Timers 0, 1, and 2
Timers 0, 1, and 2 each consist of two 8-bit data registers. These are called TL0 and TH0 for Timer 0,
TL1 and TH1 for Timer 1, TL2 and TH2 for Timer 2. The TCON and TMOD registers provide control
functions for timers 0 and 1. The T2CON register provides control functions for Timer 2. RCAP2H
and RCAP2L are used as reload/capture registers for Timer 2. The operations of Timer 0 and Timer 1
are the same as in the W78C51. Timer 2 is a special feature of the W78LE812: it is a 16-bit up/down
counter that is configured and controlled by the T2CON and T2MOD registers. Like Timers 0 and 1,
Timer 2 can operate as either an external event counter or as an internal timer, depending on the
- 4 -
W78LE812
setting of bit C/T2 in T2CON. Timer 2 has three operating modes: capture, auto-reload, and baud rate
generator. The clock speed at capture or auto-reload mode is the same as that of Timers 0 and 1. In
the auto-reload mode, Timer 2 performs a up counter which is similar with standard 8052. When
counting up, an overflow in Timer 2 will cause a reload from RCAP2H and RCAP2L registers. The
Timer 2 also provides a programmable clock-out mode as a clock generator. To enable this mode,
timer 2 has to be configured with a 16-bit auto-reload timer (C/T2 = 0, CP/RL2 = 0) and bit T2OE
(T2MOD.1) must be set to 1. This mode produces a 50% duty cycle clock output and timer 2 rollovers will not generate an interrupt. The clock-out frequency depends on the oscillator frequency and
the reload value of registers RCAP2H and RCAP2L. The clock-out frequency is determined by
following equation:
Clock-out Frequency = Oscillator Frequency / [ 4 × ( 65536 - RCAP2H, RCAP2L ) ]
TR2 (T2CON.2)
T2EX (P1.1)
EXEN2 (T2CON.3)
OSC1/2
RCAP2L
TH2TL2
RCAP2H
1/2
EXF2Timer 2
Interrupt
T2CON.6
T2 (P1.0)
Timer 2 Clock-Out Mode
TIMER 2 MODE CONTROL
Bit:76543210
------T2OEMnemonic: T2MODAddress: C9h
T2OE: Timer 2 Output Enable. This bit enables/disables the Timer 2 clock-out function.
I/O Port Options
The Port 0 and Port 3 of W78LE812 may be configured with different types by setting the bits of the
Port Options Register POR that is located at 86H. The pins of Port 0 can be configured with either
the open drain or standard port with internal pull-up. By the default, Port 0 is an open drain bidirectional I/O port. When the PUP bit in the POR register is set, the pins of Port 0 will perform a
quasi-bi-directional I/O port with internal pull-up that is structurally the same as Port 2. The high
nibble of Port 3 (P3.4 to P3.7) can be selected to serve the direct LED displays drive outputs by
setting the HDx bit in the PO register. When the HDx bit is set, the corresponding pin P3.x can sink
about 20mA current for driving LED display directly. After reset, the POR register is cleared and the
pins of Ports 0 and 3 are the same as those of the standard 80C31. The POR register is shown below.
Publication Release Date: February 1999
- 5 -Revision A2
W78LE812
INT
1
Port Options Register
Bit:76543210
EP6EP5-HD7HD6HD5HD4PUP
Mnemonic: POR Address: 86H
PUP : Enable Port 0 weak pull-up.
HD4−7 : Enable pins P3.4 to P3.7 individually with High Drive outputs.
EP5 : Enable P4.5. To set this bit shifts ALE pin to the alternate function P4.5.
EP6 : Enable P4.6. To set this bit shifts PSEN pin to the alternate function P4.6
Port 4
The W78LE812 has one additional bit-addressable I/O port P4 in which the port address is D8H. The
Port 4 contains seven bits; P4.0 to P4.3 are only available on 44-pin PLCC/QFP package; P4.5 and
P4.6 are the alternate function corresponding to pins ALE, PSEN. When program is running in the
internal memory without any access to external memory, ALE and PSEN may be individually
configured to the alternate functions P4.5 and P4.6 that serve as general purpose I/O pins. To enable
I/O port P4.5 and P4.6, the bits EP5 and EP6 in the POR register must be set. During reset, the, ALE
and PSEN perform as in the standard 80C32. The alternate functions P4.5 and P4.6 must be
enabled by software. Care must be taken with the ALE pins when configured as the alternate
functions. The ALE will emit pulses until either the EP5 bit in POR register or AO bit in AUXR register
is set to 1. i.e. User's applications should elude the ALE pulses before software configure it with I/O
port P4.5.
Port 4
Bit:76543210
-P4.6P4.5-P4.3P4.2P4.1P4.0
Mnemonic: P4 Address: D8H
Interrupt System
The W78LE812 has twelve interrupt sources:
INT9. Each interrupt vectors to a specific location in program memory for its interrupt service routine.
Each of these sources can be individually enabled or disabled by setting or clearing the
corresponding bit in Special Function Register IE0 and IE1. The individual interrupt priority level
depends on the Interrupt Priority Register IP0 and IP1. Additional external interrupts INT2 to INT9 are
level sensitive and may be used to awake the device from power down mode. The Port 1 interrupts
can be initialized to either active HIGH or LOW via setting the Interrupt Polarity Register IX. The IRQ
register contains the flags of Port 1 interrupts. Each flag in IRQ register will be set when a interrupt
request is recognized but must be cleared by software. Note that the interrupt flags have to be
cleared before the interrupt service routine is completed, or else another interrupt will be generated.
INT0
- 6 -
and
; Timer 0,1 and 2; Serial Port; INT2 to
Interrupt Enable Register 0
Bit:76543210
EA-ET2ESET1EX1ET0EX0
Mnemonic: IEAddress: A8H
EA : Global enable. Enable/disable all interrupts.
ET2: Enable Timer 2 interrupt.
ES : Enable Serial Port interrupt.
ET1: Enable Timer 1 interrupt
EX1: Enable external interrupt 1
ET0: Enable Timer 0 interrupt
EX0: Enable external interrupt 0
IP.7: Unused.
PS1: This bit defines the Serial port 1 interrupt priority. PS = 1 sets it to higher priority level.
PT2: This bit defines the Timer 2 interrupt priority. PT2 = 1 sets it to higher priority level.
PS : This bit defines the Serial port 0 interrupt priority. PS = 1 sets it to higher priority level.
PT1: This bit defines the Timer 1 interrupt priority. PT1 = 1 sets it to higher priority level.
PX1: This bit defines the External interrupt 1 priority. PX1 = 1 sets it to higher priority level.
PT0: This bit defines the Timer 0 interrupt priority. PT0 = 1 sets it to higher priority level.
PX0: This bit defines the External interrupt 0 priority. PX0 = 1 sets it to higher priority level.
Publication Release Date: February 1999
- 7 -Revision A2
W78LE812
Interrupt Priority Register 1
Bit:76543210
PX9PX8PX7PX6PX5PX4PX3PX2
Mnemonic: IP1Address: F8h
PX9: This bit defines the External interrupt 9 priority. PX9 = 1 sets it to higher priority level.
PX8: This bit defines the External interrupt 8 priority. PX8 = 1 sets it to higher priority level.
PX7: This bit defines the External interrupt 7 priority. PX7 = 1 sets it to higher priority level.
PX6: This bit defines the External interrupt 6 priority. PX6 = 1 sets it to higher priority level.
PX5: This bit defines the External interrupt 5 priority. PX5 = 1 sets it to higher priority level.
PX4: This bit defines the External interrupt 4 priority. PX4 = 1 sets it to higher priority level.
PX3: This bit defines the External interrupt 3 priority. PX3 = 1 sets it to higher priority level.
PX2: This bit defines the External interrupt 2 priority. PX2 = 1 sets it to higher priority level.