– Idle Mode
– Power-down Mode
– Power Fail Detect, Power On Reset
– Quiet mode for A to D Conversion
• Power Supply: 3 to 3.6V
• Temperature Range: -40 to 85
• Package: SO20, SO24 (upon request)
o
C
Low-pin-count
8-bit
microcontroller
with A/D
converter
AT83EB5114
AT89EB5114
Description
The AT8xEB5114 is a high performance version of the 80C51 8-bit microcontroller in a
Low Pin Count package.
The AT8xEB5114 retains all the features of the standard 80C51 with 4 Kbytes program memory, 256 bytes of internal RAM, a 7-source, 4-level interrupt system, an onchip oscillator and two timers/counters. AT8xEB5114 may include a serial two wire
interface EEPROM housed together with the microcontroller die in the same package.
The AT8xEB5114 is dedicated for analog interfacing applications. For this, it has a 10bit, 6 channels A/D converter and two PWM units; these PWM blocks provide PWM
generation with variable frequency and pulse width.
In addition, the AT8xEB5114 has a Hardware Watchdog Timer and an X2 speed
improvement mechanism. The X2 feature allows to keep the same CPU power at a
divided by two oscillator frequency. The prescaler allows to decrease CPU and peripherals clock frequency. The fully static design of the AT8xEB5114 allows to reduce
system power consumption by bringing the clock frequency down to any value, even
DC, without loss of data.
Rev. 4311C–8051–02/08
1
Figure 1. Block Diagram
Timer 0
INT
RAM
256
T0
XTAL2
XTAL1
CPU
Timer 1
INT1
Ctrl
INT0
(2)(2) (3)
Port 3
P4.0-3
IB-bus
Watch
Dog
Vss
Vcc
(2): Alternate function of Port 3
ROM
4 K *8
x8
W0CI
W0M0-2
Xtal
Osc
RC
Osc
(2)(3)
(3): Alternate function of Port 4
Port 4
P3.0-5(SO20) or 7(SO24)
PWMU0
W1M0
(2)
PWMU1
RST
A/D
Converter
Vref
AIN0-2,4-5
(2,3)
Vref
Generator
W1CI
(3)
X1-20
AIN3
R
Vcca
Vssa
T1
256 b
2 wires
interface
or
RC
Osc
(12 MHz)
(12 MHz)
Flash/EE 4K*8
ALE
(2)(3)(3)
C
(SO20)
EEPROM
Parallel I/O Ports
The AT8xEB5114 has 3 software-selectable modes of reduced activity for further reduction in power consumption. In idle mode the CPU is frozen while the peripherals are still
operating. In quiet mode, only the A/D converter is operating. In power-down mode the
RAM is saved and all other functions are inoperative. Three oscillator sources, crystal,
precision RC and low power RC, provide versatile power management.
The AT8xEB5114 is available in low pin count packages (ROM and flash versions).
2
AT89/83EB5114
4311C–8051–02/08
Pin Configuration
P3.0/W0M0
P4.3/AIN3/INT1
1
P3.5/W1M0
XTAL2
RST
XTAL1
Vss
P4.0/AIN0/W0CI
P4.2/AIN2/W1CI
P4.1/AIN1/T1
VRef
Vcca
Vssa
R
C
2
3
4
5
6
7
8
9
10
20
19
18
17
16
15
14
13
12
11
Vcc
P3.3/W0M2/AIN4
P3.4/T0/AIN5
P3.2/INT0
P3.1/W0M1
SO20
P3.1/W0M1
P4.3/AIN3/INT1
1
P3.6
C
XTAL1
XTAL2
NC
P4.0/AIN0/W0CI
P4.2/AIN2/W1CI
P4.1/AIN1/T1
VRef
Vcca
Vssa
NC
R
2
3
4
5
6
7
8
9
10
24
23
22
21
20
19
18
17
16
15
RST
P3.3/W0M2/AIN4
P3.4/T0/AIN5
P3.5/
W1M0
P3.2/INT0
SO24
P3.7
11
12
P3.0/W0M0
Vss
14
13
Vcc
No EE
AT89/83EB5114
4311C–8051–02/08
3
Pin Description
SO20SO24MnemonicTypeName and Function
1214V
1822VssaPower Analog Ground: 0V reference for analog part
1113V
1923VccaPower
2024VREFAnalog VREF: A/D converter positive reference input, output of the internal voltage reference
1417XTAL1IInput to the inverting oscillator amplifier and input to the internal clock generator circuit
1518XTAL2O Output from the inverting oscillator amplifier. This pin can’t be connected to the ground.
1720RAnalog Resistor Input for the precision RC oscillator
1619CAnalog Capacitor Input for the precision RC oscillator
1315RSTI/O
1011I/OW0M0 (P3.0): External I/O for PWMU 0 module 0
910I/OW0M1 (P3.1): External I/O for PWMU 0 module 1
SS
CC
P3.0-P3.7I/OPort 3: Port 3 is an 8-bit programmable I/O port with internal pull-ups. See “Port Types” on
Power Ground: 0V reference
Power Power Supply: This is the power supply voltage for normal, idle and power-down operation.
Analog Power Supply: This is the power supply voltage for analog part
This pin must be connected to power supply.
Reset input with integrated pull-up
A low level on this pin for two machine cycles while the oscillator is running, resets the device.
page 32. for a description of I/O ports.
Port 3 also serves the special features of the 80C51 family, as listed below.
89I/OINT0 (P3.2): External interrupt 0
55I/O
66I/OT0 / AIN5(P3.4): Timer 0 external input. P3.4 is also an input of the analog to digital converter.
78I/O
P4.0-P4.3I/O
11I/O
22I/O
33I/O
44I/O
W0M2 / AIN4 (P3.3): External I/O for PWMU 0 module 2. P3.3 is also an input of the analog to
digital converter.
W1M0 (P3.5): External I/O for PWMU 1 module 0, can also be used to output the external
clocking signal
Port 4: Port 4 is an 4-bit programmable I/O port with internal pull-ups. See “Port Types” on
page 32. for a description of I/O ports.
Port 4 is also the input port of the Analog to digital converter
The Power Monitor function supervises the evolution of the voltages feeding the microcontroller, and if needed, suspends its activity when the detected value is out of
specification.
It warrantsproper startup when AT8xEB5114 is powered up and prevents code execution errors when the power supply becomes lower than the functional threshold.
This chapter describes the functions of the power monitor.
In order to startup and to properly maintain the microcontroller operation, Vcc has to be
stabilized in the Vcc operating range and the oscillator has to be stabilized with a nominal amplitude compatible with logic threshold.
In order to be sure the oscillator is stabilized, there is an internal counter which maintains the reset during 1024 clock periods in case the oscillator selected is the OSC A
and 64 clock periods in case the oscillator used is OSC B or OSC C.
This control is carried out during three phases: the power-up, normal operation and
stop. In accordance with the following requirements:
•it guarantees an operational Reset when the microcontroller is powered-up, and
•a protection if the power supply goes below minimum operating Vcc
Power Monitor diagram
4311C–8051–02/08
The Power Monitor monitors the power-supply in order to detect any voltage drops
which are not in the target specification. The power monitor block verifies two kinds of
situation that may occur:
•during the power-up condition, when Vcc reaches the product specification,
•during a steady-state condition, when Vcc is at nominal value but disturbed by any
undesired voltage drops.
Figure 2 shows some configurations which can be handled by the Power Monitor.
9
Figure 3. Power-Up and Steady-state Conditions Monitored
Power-up
Steady State Condition
Vcc
t
Reset
VPFDP
VPFDM
tG
Vcc
tR
The POR/PFD forces the CPU into reset mode when VCC reaches a voltage condition
which is out of specification.
The thresholds and their functions are:
•VPFDP: the Vcc has reached a minimum functional value at power-up. The circuit
leaves the RESET mode
•VPFDM: the Vcc has reached a low threshold functional value for the
microcontroller. An internal RESET is set.
Glitch filtering prevents the system from RESET when short duration glitches are carried
on Vcc power-supply (See “Electrical Characteristics” on page 84.).
In case Vcc is below VPFDP, LOWVD bit in AUXR (See Table 12 on page 23) is cleared
by hardware. This bit allows the user to know if the voltage is below VPFDP.
Note: For proper reset operation V
and VCC must be considered together (same
CCA
power source). However, to improve the noise immunity, it is better to have two decoupling networks close to power pins (one for V
CCA/VSSA
pair and one for VCC/VSS pair).
10
AT89/83EB5114
4311C–8051–02/08
Clock System
Xtal2
Xtal1
PwdOsc
CKRL
2 down to 32
Prescaler-Divider
11
10
OscOut
Xtal_Osc
RC_Osc
OSCBEN
OSCAEN
CKS
X2
0
1
Mux
Filter
+
OSCA
OSCB
CkIdle
Ck
Idle
CPU Clock
Peripherals Clock
Pwd
CkOut
CkAdc
Quiet
A/D Clock
R
RC_Osc
OSCC
C
Freq. Adjust
LCKEN
OSCCEN
OSCBRY
01
AT89/83EB5114
Overview
The AT8xEB5114 oscillator system provides a reliable clocking system with full mastering of speed versus CPU power trade-off. Several clock sources are possible:
•External clock input
•High speed crystal or ceramic oscillator
•Integrated accurate oscillator with external R and C.
•Low power consumption Integrated RC oscillator without external components.
The AT8xEB5114 needs 6 clock periods per machine cycle when the X2 function is set.
However, the selected clock source can be divided by 2-32 before clocking the CPU and
the peripherals.
By default, the active oscillator after reset is the high speed crystal/ceramic oscillator.
Any two bits in a hardware configuration byte programmed by a Flash programmer or by
metal mask can activate any other one.
The clock system is controlled by several SFR registers: CKCON, CKSEL, CKRL,
OSCON, PCON and HSB which is the hardware security byte.
Blocks Description
The AT8xEB5114 includes three oscillators:
•Crystal oscillator optimized for 24 MHz.
•1 accurate oscillator with a typical frequency of 12 MHz.
•1 low power oscillator with a typical frequency of 14 MHz.
Figure 4. Functional Block Diagram
4311C–8051–02/08
11
Crystal Oscillator: OSCAThe crystal oscillator uses two external pins, XTAL1 for input and XTAL2 for output.
OSCAEN in OSCCON register is an enable signal for the crystal oscillator or for the
external oscillator input that can be provided on XTAL1.
High Accurate RC Oscillator:
OSCB
Low Power Consumption
Oscillator: OSCC
The high accuracy RC oscillator needs external R and C components to assure the
proper accuracy; its typical frequency is 12 MHz. Frequency accuracy is a function of
external R and C accuracy. It is recommended to use 0.5% or better for R and 1% for C
components. (Typical values are R = 49.9 K and C = 560 pF)
This oscillator has two modes.
•OSCBEN = 1 and LCKEN = 0: Standard accuracy mode(Typical frequency 12 MHz)
•OSCBEN = 1 and LCKEN = 1: High accuracy mode (Typical frequency 12 MHz).
The OSCB oscillator is based on a low frequency RC oscillator and a VCO. When
locked, the oscillator frequency is defined by the following formula:
F = 3*[OSCBFA+1]/(R.C). with C including parasitic capacitances.
Because the oscillator is based on a PLL, it needs several periods to reach its final
accuracy. As soon as this accuracy is reached, the OSCBRY bit in OSCCON
register is set by hardware.
The internal frequency is locked on the external RC time constant. So it is possible
to adjust frequency by lower than 1% steps with the OSCBFA register. However the
frequency adjustment is limited to +/-15% around 12 MHz.
The frequency can be adjusted until 15% around 12 MHz by OSCBFA Register.
OSCBEN and LCKEN are in the OSCCON register.
The low power consumption RC oscillator doesn’t need any external components. Moreover its consumption is very low. Its typical frequency is 14 MHz. Note that this on-chip
oscillator has a +/- 40% frequency tolerance and may not be suitable for use in certain
applications.
OSCC is set by OSCCEN bit in OSCCON.
Clock SelectorCKS1 and CKS0 bits in CKSEL register are used to select the clock source.
OSCCEN bit in OSCCON register is used to enable the low power consumption RC
oscillator.
OSCBEN bit in OSCCON register is used to enable the high accurate RC oscillator.
OSCAEN bit in OSCCON register is used to enable the crystal oscillator or the external
oscillator input.
X2 Feature The AT8xEB5114 core needs only 6 clock periods per machine cycle. This feature
called ”X2” provides the following advantages:
•Divides frequency crystals by 2 (cheaper crystals) while keeping same CPU power.
•Saves power consumption while keeping same CPU power (oscillator power
saving).
•Saves power consumption by dividing dynamically the operating frequency by 2 in
operating and idle modes.
•Increases CPU power by 2 while keeping same crystal frequency.
In order to keep the original C51 compatibility, a divider by 2 is inserted between the
XTAL1 signal and the main clock input of the core (phase generator). This divider may
be enabled or disabled by software.
12
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
XTAL1:2
XTAL1
CPU clock
X2 bit
X2 ModeSTD ModeSTD Mode
F
OSC
DescriptionThe clock for the whole circuit and peripherals is first divided by two before being used
by the CPU core and the peripherals.
This allows any cyclic ratio to be accepted on XTAL1 input. In X2 mode, as this divider is
bypassed, the signals on XTAL1 must have a cyclic ratio from 40 to 60%.
Figure 4 shows the clock generation block diagram. X2 bit is validated on the rising edge
of the XTAL1÷2 to avoid glitches when switching from X2 to standard mode. Figure 5
shows the switching mode waveforms.
Figure 5. Mode Switching Waveforms
The X2 bit in the CKCON register (see Table 7 on page 18) allows to switch from 12
clock periods per instruction to 6 clock periods and vice versa.
Clock PrescalerBefore supplying the CPU and the peripherals, the main clock is divided by a factor from
2 to 32, as defined by the CKRL register (see Table 6 on page 18). The CPU needs from
12 to 16*12 clock periods per instruction. This allows:
•to accept any cyclic ratio on XTAL1 input.
•to reduce CPU power consumption.
Note:The number of bits of the prescaler is optimized in order to provide a low power con-
sumption in low speed mode (see Section “Electrical Characteristics”, page 84).
Prescaler Divider on ResetA hardware RESET selects the start oscillator depending on the RST1_OSC and
RST0_OSC bits contained on the Hardware Security Byte register (see Table 2 on page
15). It also selects the prescaler divider as follows:
•CKRL = 8h: internal clock = OscOut / 16 (slow CPU speed at reset, thus lower
power consumption)
•X2 = 0,
•SEL_OSC1 and SEL_OSC0 bits selects OSCA, OSCB or OSCC, depending on the
value of the RST_OSC1 and RST_OSC0 configuration bits.
•After Reset, any value between Fh down to 0h can be written by software into CKRL
sfr in order to divide frequency of the selected oscillator:
–CKRL = 0h: minimum frequency = OscOut / 32
–CKRL = Fh: maximum frequency = OscOut / 2
4311C–8051–02/08
The frequency of the CPU and peripherals clock CkOut is related to the frequency of the
main oscillator OscOut by the following formula:
F
CkOut
= F
/ (32 - 2*CKRL)
OscOut
13
Some examples can be found in the table below:
F
OscOut
MHzX2CKRL
120F6
120E3
121x12
F
Mhz
CkOut
•A software instruction which set X2 bit disables the prescaler/divider, so the internal
clock is either OSCA, OSCB or OSCC depending on SEL_OSC1 and SEL_OSC0
bits.
14
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Registers
Hardware Security ByteThe security byte sets the starting microcontroller options and the security levels.
The default options are X1 mode, Oscillator A and divided by 16 prescaler.
6RST_OSC1 Oscillator bit 1 on reset and Oscillator bit 0 on reset
5RST_OSC0
4RST_OCLK
3CKRLRV
2-Reserved
1-0LB1-0
Bit
MnemonicDescription
X2 Mode
Clear to force X2 mode (CkOut = OscOut)
Set to use the prescaler mode (CkOut = OscOut / (2*(16-M)))
11: allows OSCA
10: allows OSCB
01: allows OSCC
00: reserved
Output clocking signal after RESET
Clear to start the microcontroller with a low level on P3.5 followed by an output
clocking signal on P3.5 as soon as the microcontroller is started. This signal has
is a 1/3 high 2/3 low signal. Its frequency is equal to (CKout / 3).
Set to start on normal conditions: No signal on P3.5 which is pulled up.
CKRL Reset Value
If set, the microcontroller starts with the prescaler reset value = XXXX 1000
(OscOut = CkOut/16).
If clear, the microcontroller starts with a prescaler reset value = XXXX 1111
(OscOut = CkOut/2).
User Program Lock Bits
See Table 61 on page 81
4311C–8051–02/08
HSB = 1111 1X11b
15
Clock Control RegisterThe clock control register is used to define the clock system behavior.
Table 3. OSCON Register
OSCCON - Clock Control Register (86h)
76543210
--OSCARYOSCBRYLCKENOSCCENOSCBENOSCAEN
Bit
Number
Mnemonic Description
7-
6-
5OSCARY
4OSCBRY
3LCKEN
2OSCCEN
1OSCBEN
Bit
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Oscillator A Ready
When set, this bit indicates that Oscillator A is ready to be used.
Oscillator B Ready
When set, this bit indicates that Oscillator B is ready to be used in high accurate
mode.
Lock Enable
When set, this bit allows to increase the accuracy of OSCB by locking this
oscillator on external RC time constant.
Enable low power consumption RC oscillator
This bit is used to enable the low power consumption oscillator
0: The oscillator is disabled
1: The oscillator is enabled.
Enable high accuracy RC oscillator
This bit is used to enable the high accurate RC oscillator
0: The oscillator is disabled
1: The oscillator is enabled.
Oscillator B Frequency Adjust
Register
16
AT89/83EB5114
Enable crystal oscillator
0OSCAEN
This bit is used to enable the crystal oscillator
0: The oscillator is disabled
1: The oscillator is enabled.
Reset Value = XXX0
0"RST_OSC1.RST_OSC0""RST_OSC1.RST_OSC0""RST_OSC1.RST_OSC0" b
Not bit addressable
Note:Before changing oscillator selection in CKSEL, be sure that the oscillator you select is
started. OSCA is ready as soon as OSCARY is set by hardware, OSCB and OSCC are
ready after 4 clock periods. In case you want to use OSCB locked, be sure that OSCB is
started before setting LCKEN bit. Then, wait until OSCBRY is set by hardware to be sure
that the accurate frequency is reached.
The OSCB Frequency Adjust register is used to adjust the frequency in case of external
components inaccuracies. It allows a frequency variation about 15% around 12 MHz
with a step of around 1%.
4311C–8051–02/08
AT89/83EB5114
Table 4. OSCBFA Register
OSCBFA- Oscillator B Frequency Adjust Register (9Fh)
The reset value to have 12 MHz is 0111 0110. It is possible to modify this value
in order to increase or decrease the frequency.
Reset Value = 0111 0110b
Not bit addressable
Clock Selection RegisterThe clock selection register is used to define the clock system behavior.
Table 5. CKSEL Register
CKSEL - Clock Selection Register (85h)
76543210
------CKS1CKS0
Bit
Number
7-
6-
Bit
Mnemonic Description
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
5-
4-
3-
2-
1CKS1Active Clock Selector 1and Active Clock Selector 0
0CKS0
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
These bits are used to select the active oscillator
11: The crystal oscillator is selected
10: The high accuracy RC oscillator is selected
01: The low power consumption RC oscillator is selected
00: Reserved
Reset Value = XXXX XX"RST_OSC1" "RST_OSC0" b
Not bit addressable
4311C–8051–02/08
17
Clock Prescaler RegisterThis register is used to reload the clock prescaler of the CPU and peripheral clock.
Clock Control RegisterThis register is used to control the X2 mode of the CPU and peripheral clock.
Table 7. CKCON Register
CKCON - Clock Control Register (8Fh)
76543210
-------X2
Bit
Number
7-1-Reserved
0X2
Bit
Mnemonic Description
X2 Mode
Set to force X2 mode (CkOut = OscOut)
Clear to use the prescaler mode (CkOut = OscOut / (2*(16-M)))
18
Reset Value = 0000 0000b
Not bit addressable
AT89/83EB5114
4311C–8051–02/08
Power Modes
AT89/83EB5114
Overview
Operating Modes
As seen in the previous chapter it is possible to modify the AT8xEB5114 clock management in order to have less consumption.
For applications where power consumption is a critical factor, three power modes are
provided:
•Normal (running) mode
•Idle mode
•Power-down mode
In order to increase ADC accuracy, a Quiet mode also exits. This mode is a pseudo idle
mode in which the CPU and all the peripherals except the AD converter are disabled.
Power modes are controlled by PCON SFR register.
Table 8 summarizes all the power modes and states that AT8xEB5114 can encounter. It
shows which parts of AT8xEB5114 are running depending on the operating mode.
Normal ModeIn normal mode, the oscillator, the CPU and the peripherals are running. The prescaler
can also be activated.
•The CPU and the peripherals clock depends on the software selection using
CKCON, OSCCON, CKSEL and CKRL registers
•CKS bits select either OSCA, OSCB, or OSCC
•CKRL register determines the frequency of the selected clock, unless X2 bit is set.
In this case the prescaler/divider is not used, so CPU core needs only 6-clock
periods per machine cycle.
It is always possible to switch dynamically by software from one to another oscillator by
changing CKS bits, a synchronization cell allows to avoid any spike during transition.
Idle ModeThe idle mode allows to reduce consumption by freezing the CPU. All the peripherals
continue running.
Entering Idle ModeAn instruction that sets PCON.0 causes that to be the last instruction executed before
going into Idle mode.
In Idle mode, the internal clock signal is gated off to the CPU, but not to the interrupt,
and the peripheral functions. The CPU status is entirely preserved: the Stack Pointer,
Program Counter, Program Status Word, Accumulator and all other registers maintain
4311C–8051–02/08
19
their data during Idle. The port pins hold the logical states they had at the time Idle was
INTERRUPT
OSC
Power-down phaseOscillator restart phase
Active phaseActive phase
activated. ALE and PSEN are held at logic high levels. The different operating modes
are summarized on Table 10 on page 21.
Exit from Idle ModeThere are two ways to terminate idle mode. Activation of any enabled interrupt will
cause PCON.0 to be cleared by hardware, terminating Idle mode. The interrupt will be
serviced, and following RETI the next instruction to be executed will be the one following
the instruction that put the device into idle. Exit from idle mode will leave the oscillators
control bits on OSCON and CKS registers unchanged.
The flag bits GF0 and GF1 can be used to give an indication if an interrupt occurred during normal operation or during an Idle mode. For example, an instruction that activates
Idle mode can also set one or both flag bits. When Idle is terminated by an interrupt, the
interrupt service routine can examine the flag bits.
The other way of terminating the Idle mode is with a hardware reset. Since the clock
oscillator is still running, the hardware reset needs to be held active for only two
machine cycles (24 oscillator periods) to complete the reset.
In both cases, PCON.0 is cleared by hardware.
Quiet ModeThe quiet mode is a pseudo idle mode in which the CPU and all the peripherals except
the AD converter are down. For more details, See “Analog-to-Digital Converter (ADC)”
on page 57.
Power-down ModeTo save maximum power, a power-down mode can be invoked by software (refer to
Table 11 on page 22). In power-down mode, the oscillator is stopped and the instruction
that invoked power-down mode is the last instruction executed. The internal RAM and
SFRs retain their value until the power-down mode is terminated. VCC can be lowered to
save further power.
Entering Power-down ModeAn instruction that sets PCON.1 causes that to be the last instruction executed before
going into the power-down mode.
The ports status under power-down is the previous status before entering this power
mode.
Exit from Power-down ModeEither a hardware reset or an external interrupt (low level) on INT0 or INT1 (if enabled)
can cause an exit from power-down. To properly terminate power-down, the reset or
external interrupt should not be executed before VCC is restored to its normal operating
level and must be held active long enough for the oscillator to restart and stabilize.
Exit from power-down by external interrupt does not affect the SFRs and the internal
RAM content.
Figure 6. Power-down Exit Waveform
By a hardware Reset, the CPU will restart in the mode defined by the RST_OSC1 and
RST_OSC0 bits in HSB.
20
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
By INT1 and INT0 interruptions (if enabled), the oscillators control bits on OSCON and
CKSEL will be kept, so the selected oscillator before entering in power-down mode will
be activated. Only external interrupts INT0 and INT1 are useful to exit from power-down.
Note:Exit from power down mode doesn’t depend on IT0 and IT1 configurations. It is only pos-
sible to exit from power down mode on a low level on these pins.
Holding the pin low restarts the oscillator but bringing the pin high completes the exit as
detailed in Figure 6. When both interrupts are enabled, the oscillator restarts as soon as
one of the two inputs is held low and power down exit will be completed when the first
input is released. In this case the higher priority interrupt service routine is executed.
Table 9 shows the state of ports during idle and power-down modes.
Set and Cleared by user for general purpose usage.
General Purpose flag 0
Set and Cleared by user for general purpose usage.
Power-down Mode bit
Cleared by hardware when an interrupt or reset occurs.
Set to activate the Power-down mode.
If IDL and PD are both set, PD takes precedence.
Idle Mode bit
Cleared by hardware when an interrupt or reset occurs.
Set to activate the Idle mode.
If IDL and PD are both set, PD takes precedence.
Reset Value = 00XX XX00b
22
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
AUXR Register
Table 12. AUXR Register
AUXR - Auxiliary Register (8Eh)
76543210
DPU--LOWVD----
Bit
Number
7DPU
6-
5-
4LOWVD
3-1-
0-
Bit
Mnemonic Description
Disable Pull up
Set to disable each pull up on all ports.
Clear to connect all pull-ups on each port.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Low Voltage Detection
This bit is clear by hardware when the supply voltage is under Vpfdp value.
This bit is set by hardware as soon the supply voltage is greater than Vpfdp value.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reset Value = 0XX0 XXXXb
Not bit addressable
4311C–8051–02/08
23
Timers/Counters
Introduction
Timer/Counter
Operations
The AT8xEB5114 implements two general-purpose, 16-bit Timers/Counters. Although
they are identified as Timer 0, Timer 1, they can be independently configured each to
operate in a variety of modes as a Timer or as an event Counter. When operating as a
Timer, a Timer/Counter runs for a programmed length of time, then issues an interrupt
request. When operating as a Counter, a Timer/Counter counts negative transitions on
an external pin. After a preset number of counts, the Counter issues an interrupt
request.
The Timer registers and associated control registers are implemented as addressable
Special Function Registers (SFRs). Two of the SFRs provide programmable control of
the Timers as follows:
•Timer/Counter mode control register (TMOD) and Timer/Counter control register
(TCON) control both Timer 0 and Timer 1.
The various operating modes of each Timer/Counter are described below.
A basic operation is Timer registers THx and TLx (x = 0, 1) connected in cascade to
form a 16-bit Timer. Setting the run control bit (TRx) in the TCON register (see
Figure 15) turns the Timer on by allowing the selected input to increment TLx. When
TLx overflows it increments THx and when THx overflows it sets the Timer overflow flag
(TFx) in the TCON register. Setting the TRx does not clear the THx and TLx Timer registers. Timer registers can be accessed to obtain the current count or to enter preset
values. They can be read at any time but the TRx bit must be cleared to preset their values, otherwise the behavior of the Timer/Counter is unpredictable.
The C/Tx# control bit selects Timer operation or Counter operation by selecting the
divided-down system clock or the external pin Tx as the source for the counted signal.
The TRx bit must be cleared when changing the operating mode, otherwise the behavior
of the Timer/Counter is unpredictable.
For Timer operation (C/Tx# = 0), the Timer register counts the divided-down system
clock. The Timer register is incremented once every peripheral cycle.
Timer 0
24
For Counter operation (C/Tx# = 1), the Timer register counts the negative transitions on
the external input pin Tx. The external input is sampled during every S5P2 state. The
Programmer’s Guide describes the notation for the states in a peripheral cycle. When
the sample is high in one cycle and low in the next one, the Counter is incremented. The
new count value appears in the register during the next S3P1 state after the transition
has been detected. Since it takes 12 states (24 oscillator periods in X1 mode) to recognize a negative transition, the maximum count rate is 1/24 of the oscillator frequency in
X1 mode. There are no restrictions on the duty cycle of the external input signal, but to
ensure that a given level is sampled at least once before it changes, it should be held for
at least one full peripheral cycle.
Timer 0 functions as either a Timer or an event Counter in four operating modes.
Figure 7 to Figure 10 show the logic configuration of each mode.
Timer 0 is controlled by the four lower bits of the TMOD register (see Figure 16) and bits
0, 1, 4 and 5 of the TCON register (see Figure 15). The TMOD register selects the
method of Timer gating (GATE0), Timer or Counter operation (T/C0#) and the operating
mode (M10 and M00). The TCON register provides Timer 0 control functions: overflow
flag (TF0), run control bit (TR0), interrupt flag (IE0) and interrupt type control bit (IT0).
For normal Timer operation (GATE0= 0), setting TR0 allows TL0 to be incremented by
the selected input. Setting GATE0 and TR0 allows external pin INT0# to control Timer
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
TRx
TCON reg
TFx
TCON reg
0
1
GATEx
TMOD reg
Overflow
Timer x
Interrupt
Request
C/Tx#
TMOD reg
TLx
(5 bits)
THx
(8 bits)
INTx#
Tx
F
CkIdle
/ 6
TRx
TCON reg
TFx
TCON reg
0
1
GATEx
TMOD reg
Overflow
Timer x
Interrupt
Request
C/Tx#
TMOD reg
TLx
(8 bits)
THx
(8 bits)
INTx#
Tx
F
CkIdle
/ 6
operation.
Timer 0 overflow (count rolls over from all 1s to all 0s) sets the TF0 flag and generates
an interrupt request.
It is important to stop the Timer/Counter before changing modes.
Mode 0 (13-bit Timer)Mode 0 configures Timer 0 as a 13-bit Timer which is set up as an 8-bit Timer (TH0 reg-
ister) with a modulo-32 prescaler implemented with the lower five bits of the TL0 register
(see Figure 7). The upper three bits of the TL0 register are indeterminate and should be
ignored. Prescaler overflow increments the TH0 register.
Figure 7. Timer/Counter x (x= 0 or 1) in Mode 0
Mode 1 (16-bit Timer)Mode 1 configures Timer 0 as a 16-bit Timer with the TH0 and TL0 registers connected
in a cascade (see Figure 8). The selected input increments the TL0 register.
Figure 8. Timer/Counter x (x = 0 or 1) in Mode 1
Mode 2 (8-bit Timer with AutoReload)
Mode 2 configures Timer 0 as an 8-bit Timer (TL0 register) that automatically reloads
from the TH0 register on overflow (see Figure 9). TL0 overflow sets the TF0 flag in the
TCON register and reloads TL0 with the contents of TH0, which is preset by the software. When the interrupt request is serviced, the hardware clears TF0. The reload
leaves TH0 unchanged. The next reload value may be changed at any time by writing it
to the TH0 register.
4311C–8051–02/08
25
Figure 9. Timer/Counter x (x = 0 or 1) in Mode 2
TRx
TCON reg
TFx
TCON reg
0
1
GATEx
TMOD reg
Overflow
Timer x
Interrupt
Request
C/Tx#
TMOD reg
TLx
(8 bits)
THx
(8 bits)
INTx#
Tx
F
CkIdle
/ 6
TR0
TCON.4
TF0
TCON.5
INT0#
0
1
GATE0
TMOD.3
Overflow
Timer 0
Interrupt
Request
C/T0#
TMOD.2
TL0
(8 bits)
TR1
TCON.6
TH0
(8 bits)
TF1
TCON.7
Overflow
Timer 1
Interrupt
Request
T0
F
CkIdle
F
CkIdle
/ 6
Mode 3 (Two 8-bit Timers)Mode 3 configures Timer 0 so that registers TL0 and TH0 operate as 8-bit Timers (see
Figure 10). This mode is provided for applications requiring an additional 8-bit Timer or
Counter. TL0 uses the Timer 0 control bits C/T0# and GATE0 in the TMOD register, and
TR0 and TF0 in the TCON register in the normal manner. TH0 is locked into a Timer
function (counting F
) and takes over use of the Timer 1 interrupt (TF1) and run con-
UART
trol (TR1) bits. Thus, operation of Timer 1 is restricted when Timer 0 is in mode 3.
Figure 10. Timer/Counter 0 in Mode 3: Two 8-bit Counters
Timer 1
26
Timer 1 is identical to Timer 0 except for Mode 3 which is a hold-count mode. The following comments help to understand the differences:
•Timer 1 functions as either a Timer or an event Counter in the three operating
modes. Figure 7 to Figure 9 show the logical configuration for modes 0, 1, and 2.
Mode 3 of Timer 1 is a hold-count mode.
•Timer 1 is controlled by the four high-order bits of the TMOD register (see Figure 16)
and bits 2, 3, 6 and 7 of the TCON register (see Figure 15). The TMOD register
selects the method of Timer gating (GATE1), Timer or Counter operation (C/T1#)
and the operating mode (M11 and M01). The TCON register provides Timer 1
control functions: overflow flag (TF1), run control bit (TR1), interrupt flag (IE1) and
the interrupt type control bit (IT1).
•Timer 1 can serve as the Baud Rate Generator for the Serial Port. Mode 2 is best
suited for this purpose.
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
•For normal Timer operation (GATE1= 0), setting TR1 allows TL1 to be incremented
by the selected input. Setting GATE1 and TR1 allows external pin INT1# to control
Timer operation.
•Timer 1 overflow (count rolls over from all 1s to all 0s) sets the TF1 flag and
generates an interrupt request.
•When Timer 0 is in mode 3, it uses Timer 1’s overflow flag (TF1) and run control bit
(TR1). For this situation, use Timer 1 only for applications that do not require an
interrupt (such as a Baud Rate Generator for the Serial Port) and switch Timer 1 in
and out of mode 3 to turn it off and on.
•It is important to stop the Timer/Counter before changing modes.
Mode 0 (13-bit Timer)Mode 0 configures Timer 1 as a 13-bit Timer, which is set up as an 8-bit Timer (TH1 reg-
ister) with a modulo-32 prescaler implemented with the lower 5 bits of the TL1 register
(see Figure 7). The upper 3 bits of TL1 register are indeterminate and should be
ignored. Prescaler overflow increments the TH1 register.
Mode 1 (16-bit Timer)Mode 1 configures Timer 1 as a 16-bit Timer with TH1 and TL1 registers connected in
cascade (see Figure 8). The selected input increments the TL1 register.
Mode 2 (8-bit Timer with AutoReload)
Mode 3 (Halt)Placing Timer 1 in mode 3 causes it to halt and hold its count. This can be used to halt
Mode 2 configures Timer 1 as an 8-bit Timer (TL1 register) with automatic reload from
the TH1 register on overflow (see Figure 9). TL1 overflow sets the TF1 flag in the TCON
register and reloads TL1 with the contents of TH1, which is preset by the software. The
reload leaves TH1 unchanged.
Timer 1 when the TR1 run control bit is not available i.e. when Timer 0 is in mode 3.
4311C–8051–02/08
27
Registers
Table 13. TCON (S:88h)
Timer/Counter Control Register
76543210
TF1TR1TF0TR0IE1IT1IE0 IT0
Bit
Number
7TF1
6TR1
5TF0
4TR0
3IE1
2IT1
1IE0
Bit
Mnemonic Description
Timer 1 Overflow flag
Cleared by the hardware when processor vectors to interrupt routine.
Set by the hardware on Timer 1 register overflows.
Timer 1 Run Control bit
Clear to turn off Timer/Counter 1.
Set to turn on Timer/Counter 1.
Timer 0 Overflow flag
Cleared by the hardware when processor vectors to interrupt routine.
Set by the hardware on Timer 0 register overflows.
Timer 0 Run Control bit
Clear to turn off Timer/Counter 0.
Set to turn on Timer/Counter 0.
Interrupt 1 Edge flag
Cleared by the hardware as soon as the interrupt is processed.
Set by the hardware when external interrupt is detected on the INT1 pin.
Interrupt 1 Type Control bit
Clear to select low level active for external interrupt 1 (INT1).
Set to select sensitive edge trigger for external interrupt 1. The sensitive edge
(Rising or Falling) is determined by ESB1 value (Edge Selection Bit 1) in IOR
(Interrupt Option Register).
Interrupt 0 Edge flag
Cleared by the hardware as soon as the interrupt is processed.
Set by the hardware when external interrupt is detected on INT0 pin.
28
0IT0
Reset Value = 0000 0000b
AT89/83EB5114
Interrupt 0 Type Control bit
Clear to select low level active trigger for external interrupt 0 (INT0).
Set to select sensitive edge trigger for external interrupt 0. The sensitive edge
(Rising or Falling) is determined by ESB0 (Edge Selection Bit 0) in IOR (Interrupt
Option Register).
4311C–8051–02/08
AT89/83EB5114
Table 14. IOR (S:A5h)
Interrupt Option Register.
76543210
------ESB1ESB0
Bit
Number
7-2-
1ESB1
0ESB0
Bit
Mnemonic Description
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Edge Selection bit for INT1
Clear to select falling edge sensitive for INT1 pin.
Set to select rising edge sensitive for INT1 pin.
Edge Selection bit for INT0
Clear to select falling edge sensitive for INT0 pin.
Set to select rising edge sensitive for INT0 pin.
Reset Value = XXXX XX00b
4311C–8051–02/08
29
Table 15. TMOD Register
TMOD (S:89h)
Timer/Counter Mode Control Register.
76543210
GATE1C/T1#M11M01GATE0C/T0#M10 M00
Bit
Number
7GATE1
6C/T1#
5M11Timer 1 Mode Select bits
4M01
3GATE0
2C/T0#
1M10Timer 0 Mode Select bit
0M00
Bit
Mnemonic Description
Timer 1 Gating Control bit
Clear to enable Timer counter 1 whenever TR1 bit is set.
Set to enable Timer counter 1 only while INT1# pin is high and TR1 bit is set.
Timer 1 Counter/Timer Select bit
Clear for Timer operation: Timer 1 counts the divided-down system clock.
Set for Counter operation: Timer 1 counts negative transitions on external pin T1.
Clear to enable Timer counter 0 whenever TR0 bit is set.
Set to enable Timer counter 0 only while INT0# pin is high and TR0 bit is set.
Timer 0 Counter/Timer Select bit
Clear for Timer operation: Timer 0 counts the divided-down system clock.
Set for Counter operation: Timer 0 counts negative transitions on external pin T0.
Reloaded from TH0 at overflow
11Mode 3:TL0 is an 8-bit Timer/Counter
TH0 is an 8-bit Timer using Timer 1’s TR0 and TF0 bits.
TH1 at overflow.
30
Reset Value = 0000 0000b
Table 16. TH0 Register
TH0 (S:8Ch)
Timer 0 High Byte Register.
76543210
Bit
Number
7:0High Byte of Timer 0.
Reset Value = 0000 0000b
AT89/83EB5114
Bit
Mnemonic Description
4311C–8051–02/08
AT89/83EB5114
Table 17. TL0 Register
TL0 (S:8Ah)
Timer 0 Low Byte Register.
76543210
Bit
Number
7:0Low Byte of Timer 0.
Bit
Mnemonic Description
Reset Value = 0000 0000b
Table 18. TH1 Register
TH1 (S:8Dh)
Timer 1 High Byte Register.
76543210
Bit
Number
7:0High Byte of Timer 1.
Bit
Mnemonic Description
Reset Value = 0000 0000b
Table 19. TL1 Register
TL1 (S:8Bh)
Timer 1 Low Byte Register.
4311C–8051–02/08
76543210
Bit
Number
7:0Low Byte of Timer 1.
Bit
Mnemonic Description
Reset Value = 0000 0000b
31
Ports
The AT8xEB5114 has 2 I/O ports, port 3, and port 4.
All port3 and port4 I/O port pins on the AT8xEB5114 may be software configured to one
of four types on a bit-by-bit basis, as shown below in Table 20. These are: quasi-bidirectional (standard 80C51 port outputs), push-pull, open drain, and input only. Two
configuration registers for each port select the output type for each port pin.
Port Types
Quasi-Bidirectional Output
Configuration
Table 20. Port Output Configuration setting using PxM1 and PxM2 registers (3
PxM1.(2y+1) bitPxM1.(2y) bit(0<y<3) Port Output Mode
00Quasi bidirectional
01Push-Pull
10Input Only (High Impedance)
11Open Drain
PxM2.(2y-7) bitPxM2.(2y-8) bit(4<y<7) Port Output Mode
00Quasi bidirectional
01Push-Pull
10Input Only (High Impedance)
11Open Drain
< x < 4)
The default port output configuration for standard AT8xEB5114 I/O ports is the quasibidirectional output that is common on the 80C51 and most of its derivatives. This output
type can be used as both an input and output without the need of reconfiguring the port.
This is possible because when the port outputs a logic high, it is weakly driven, allowing
an external device to pull the pin low. When the pin is pulled low, it is driven strongly and
able to sink a fairly large current. These features are somewhat similar to an open drain
output except that there are three pull-up transistors in the quasi-bidirectional output that
serve different purposes. One of these pull-ups, called the "weak" pull-up, is turned on
whenever the port latch for the pin contains a logic 1. The weak pull-up sources a very
small current that will pull the pin high if it is left floating. A second pull-up, called the
"medium" pull-up, is turned on when the port latch for the pin contains a logic 1 and the
pin itself is also at a logic 1 level. This pull-up provides the primary source current for a
quasi-bidirectional pin that is outputting a 1. If a pin that has a logic 1 on it is pulled low
by an external device, the medium pull-up turns off, and only the weak pull-up remains
on. In order to pull the pin low under these conditions, the external device has to sink
enough current to overpower the medium pull-up and take the voltage on the port pin
below its input threshold.
32
The third pull-up is referred to as the "strong" pull-up. This pull-up is used to speed up
low-to-high transitions on a quasi-bidirectional port pin when the port latch changes from
a logic 0 to a logic 1. When this occurs, the strong pull-up turns on for a brief time, two
CPU clocks, in order to pull the port pin high quickly. Then it turns off again.
The quasi-bidirectional port configuration is shown in Figure 11.
AT89/83EB5114
4311C–8051–02/08
Figure 11. Quasi-Bidirectional Output
2 CPU
Input
Pin
Strong
Medium
N
PP
Weak
P
CLOCK DELAY
Port Latch
Data
Data
DPU
AUXR.7
Input
Pin
N
Port latch
Data
Data
AT89/83EB5114
Open Drain Output
Configuration
Figure 12. Open Drain Output
Push-Pull Output
Configuration
The open drain output configuration turns off all pull-ups and only drives the pull-down
transistor of the port driver when the port latch contains a logic 0. To be used as a logic
output, a port configured in this manner must have an external pull-up, typically a resistor tied to VDD. The pull-down for this mode is the same as the quasi-bidirectional mode.
The open drain port configuration is shown in Figure 12.
The push-pull output configuration has the same pull-down structure as both the open
drain and the quasi-bidirectional output modes, but provides a continuous strong pull-up
when the port latch contains a logic 1. The push-pull mode may be used when more
source current is needed from a port output. The push-pull port configuration is shown in
Figure 13.
4311C–8051–02/08
33
Figure 13. Push-Pull Output
Input
Pin
Strong
N
P
Port latch
Data
Data
Input
Pin
Data
Input only Configuration The input only configuration is a pure input with neither pull-up nor pull-down.
The input only configuration is shown in Figure 13.
Figure 14. Input only
Ports Description
Ports P3 and P4The inputs of each I/O port of the AT8xEB5114 are TTL level Schmitt triggers with
hysteresis.
34
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Registers
Table 21. P3M1 Register
P3M1 Address (D5h)
76543210
P3M1.7P3M1.6P3M1.5P3M1.4P3M1.3P3M1.2P3M1.1P3M1.0
Bit
Number
7-6P3M1.7-6
5-4P3M1.5-4
3-2P3M1.3-2
1-0P3M1.1-0
Bit
MnemonicDescription
Port 3.3 Output configuration bit
See Table 20 for configuration definition
Port 3.2 Output configuration bit
See Table 20 for configuration definition
Port 3.1 Output configuration bit
See Table 20 for configuration definition
Port 3.0 Output configuration bit
SeeTable 20 for configuration definition
Reset value = 0000 0000
Table 22. P3M2 Register
P3M2 Address (E4h)
76543210
P3M2.7P3M2.6P3M2.5P3M2.4P3M2.3P3M2.2P3M2.1P3M2.0
Bit
Number
7-6P3M2.7-6
5-4P3M2.5-4
3-2P3M2.3-2
1-0P3M2.1-0
Bit
MnemonicDescription
Port 3.7 Output configuration bit
SeeTable 20 for configuration definition
Port 3.6 Output configuration bit
See Table 20 for configuration definition
Port 3.5 Output configuration bit
See Table 20 for configuration definition
Port 3.4 Output configuration bit
See Table 20 for configuration definition
Reset value = 0000 0000
4311C–8051–02/08
35
Table 23. P4M1 Register
P4M1 Address (D6h)
76543210
P4M1.7P4M1.6P4M1.5P4M1.4P4M1.3P4M1.2P4M1.1P4M1.0
Bit
Number
7-6P4M1.7-6
5-4P4M1.5-4
3-2P4M1.3-2
1-0P4M1.1-0
Bit
MnemonicDescription
Reset value = 0000 0000
Port 4.3 Output configuration bit
See Table 20 for configuration definition
Port 4.2 Output configuration bit
See Table 20 for configuration definition
Port 4.1 Output configuration bit
See Table 20 for configuration definition
Port 4.0 Output configuration bit
See Table 20 for configuration definition
36
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
External Data Memory
AUXR1(A2H)
DPS
DPH(83H) DPL(82H)
07
DPTR0
DPTR1
Dual Data Pointer
Register (DDPTR)
Figure 15. Use of Dual Pointer
The additional data pointer can be used to speed up code execution and reduce code
size in a number of ways.
The dual DPTR structure is a way by which the chip will specify the address of an external data memory location. There are two 16-bit DPTR registers that address the external
memory, and a single bit called DPS = AUXR1/bit0 (See Figure 15) that allows the program code to switch between them.
4311C–8051–02/08
37
Table 24. AUXR1: Auxiliary Register 1
76543210
-----0-DPS
Bit
Number
7-
6-
5-
4-
3-
20
1-
0DPS
Bit
Mnemonic Description
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
always stuck at 0
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Data Pointer Selection
Clear to select DPTR0.
Set to select DPTR1.
Note:User software should not write 1’s to reserved bits. These bits may be used in future
8051 family products to invoke new feature. In that case, the reset value of the new bit
will be 0, and its active value will be 1. The value read from a reserved bit is
indeterminate.
38
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Application
Software can take advantage of the additional data pointers to both increase speed and
reduce code size, for example, block operations (copy, compare, search...) are well
served by using one data pointer as a ’source’ pointer and the other one as a ‘destination’ pointer.
ASSEMBLY LANGUAGE
; Block move using dual data pointers
; Destroys DPTR0, DPTR1, A and PSW
; note: DPS exits opposite of entry state
; unless an extra INC AUXR1 is added
;
00A2 AUXR1 EQU 0A2H
;
0000 909000MOV DPTR,#SOURCE ; address of SOURCE
0003 05A2 INC AUXR1 ; switch data pointers
0005 90A000 MOV DPTR,#DEST ; address of DEST
0008 LOOP:
0008 05A2 INC AUXR1 ; switch data pointers
000A E0 MOVX A,@DPTR ; get a byte from SOURCE
000B A3 INC DPTR ; increment SOURCE address
000C 05A2 INC AUXR1 ; switch data pointers
000E F0 MOVX @DPTR,A ; write the byte to DEST
000F A3 INC DPTR ; increment DEST address
0010 70F6JNZ LOOP ; check for 0 terminator
0012 05A2 INC AUXR1 ; (optional) restore DPS
INC is a short (2 bytes) and fast (12 clocks) way to manipulate the DPS bit in the AUXR1
SFR. However, note that the INC instruction does not directly force the DPS bit to a particular state, but simply toggles it. In simple routines, such as the block move example,
only the fact that DPS is toggled in the proper sequence matters, not its actual value. In
other words, the block move routine works the same whether DPS is '0' or '1' on entry.
Observe that without the last instruction (INC AUXR1), the routine will exit with DPS in
the opposite state.
4311C–8051–02/08
39
PWM Unit 0 (PWMU0)
The PWM unit 0 allows to generate precise pulse width modulation with variable duty
cycle and frequency.
The PWMU0 consists on a dedicated 16 bits auto reload counter/timer which serves as
a time base for the generation of 3 independent PWM signals.
Its clock input can be programmed to count any one of the following signals:
•Peripheral clock, CkIdle
•Timer 0 overflow
•External input on W0CI (P4.0)
The PWMU0 timer/counter shares several external I/O. These pins are listed below. If a
port is not used for the PWMU0, it can still be used for standard I/O.
PWMU0 ComponentExternal I/O Pin
16-bit CounterW0CI (P4.0)
16-bit Module 0W0M0 (P3.0)
16-bit Module 1W0M1 (P3.1)
16-bit Module 2W0M2 (P3.3)
PWMU0 Timer
The PWMU0 timer is a common 16 bits time base for all three modules (See Figure 16).
The timer count source is determined from the W0CPS1 and W0CPS0 bits in the
W0MOD register (See Table 26) and can be programmed to run at:
•Peripheral clock, CkIdle
•Timer 0 overflow
•External input on W0CI (P1.2)
The output frequency depends on the timer source and also on the W0F Registers.
Indeed, the timer/counter counts from zero up to a value loaded via SW0F registers.
Each time the counter is higher or equal to the SW0F shadow registers value, W0C registers are automatically reloaded with zero. If the W0UP bit is set, the shadow SW0F
registers are reloaded with the contents of W0F registers when the W0C overtakes. This
prevents frequency drift (See Figure 16.).
Note:If the PWMU0 is Off (W0R bit in W0CON not set), the contents of W0FH and W0FL are
automatically copied on the shadow registers SW0FH and SW0FL. This allows to charge
the correct comparison values in order to have the wanted frequency as soon as the
PWM is turned on.
40
AT89/83EB5114
4311C–8051–02/08
Figure 16. PWMU0 Timer/Counter
W0EN2 W0EN1 W0EN0
W0CHW0CL
To PWMU0
modules
FCkIdle
T0 OVF
W0CI
W0CON
SW0FHSW0FL
W0OS1
W0R
W0UP
16 bit up
W0INV2 W0INV1 W0INV0
W0MOD
WOPS0
W0PS1
W0FHW0FL
00000000
16 bit comparator
≥
counter
overtaking
AT89/83EB5114
Table 25. W0CON: PWMU0 Control register
W0CON - PWMU0 Control Register (E8h)
76543210
W0UPW0R--W0OSW0EN2W0EN1W0EN0
Bit
Number
7W0UP
6W0R
5-4-Not used
3W0OS
2W0EN2
1W0EN1
Bit
Mnemonic Description
PWMU0 update bit
Set by software to request the load of all shadow registers on the next overtaking of
the W0C counter. Reset by hardware after the loading of the shadow registers.
PWMU0 Run control bit
Set by software to turn the PWMU0 counter on. Must be cleared by software to turn
the PWMU0 counter off.
Pin W0M1 PWMU0 Output Selection
0 W0M1 is PWM module 1 XOR PWM module2 output
1 W0M1 is PWM module 1 output
PWMU0 Module 2 enable bit
Enable PWMU0 module 2 if set.
PWMU0 Module 1 enable bit
Enable PWMU0 module 1if set.
4311C–8051–02/08
0W0EN0
Reset Value = 00XX 0000b
Bit addressable
PWMU0 Module 0 enable bit
Enable PWMU0 module 0 if set.
41
Table 26. W0MOD: PWMU0 Counter Mode Register
W0MOD - PWMU0 Counter Mode Register (E9h)
76543210
W0CPS1W0CPS0---W0INV2W0INV1W0INV0
Bit
Number
7W0CPS1 PWMU0 Count Pulse Select bit1
6W0CPS0
5-3-Not used
2W0INV2
1W0INV1
0W0INV0
Bit
Mnemonic Description
PWMU0 Count Pulse Select bit0
CPS1 CPS0 Selected PWMU0 input
00 Internal clock f
01 Reserved
10 Timer 0 Overflow
11 External clock input on W0CI at max rate = f
PWMU0 Module 2 inverter bit
Select the output PWM mode. If set, PWM module 2 output starts with high level.
PWMU0 Module 1 inverter bit
Select the output PWM mode. If set, PWM module 1 output starts with high level.
PWMU0 Module 0 inverter bit
Select the output PWM mode. If set, PWM module 0 output starts with high level.
CkIdle
CkIdle
/4
Reset Value = 00XX X000b
Not bit addressable
Because they use the same timer, all three modules have the same frequency determined by the shadow SW0F registers.
42
Table 27. W0FH: PWMU0 frequency high control register
W0FH - PWMU0 Frequency Control Register (EAh)
76543210
W0F15W0F14W0F13W0F12W0F11W0F10W0F9W0F8
Bit
Number
7-0W0F15-8
Reset Value = 1111 1111b
Not bit addressable
AT89/83EB5114
Bit
Mnemonic Description
PWMU0 high bits counter control frequency
The PWMU0 counter is counting from zero up to W1F15-0 value.
4311C–8051–02/08
AT89/83EB5114
Table 28. W0FL: PWMU0 frequency low control register
W0FL - PWMU0 Frequency Control Register (EBh)
76543210
W0F7W0F6W0F5W0F4W0F3W0F2W0F1W0F0
Bit
Number
7-0W0F7-0
Bit
Mnemonic Description
PWMU0 low bits counter control frequency
The PWMU0 counter is counting from zero up to WOF15-0 value.
Reset Value = 1111 1111b
Not bit addressable
Table 29. W0CH: PWMU0 counter high control register
W0CH - PWMU0 Counter Control Register (ECh)
76543210
W0C15W0C14W0C13W0C12W0C11W0C10W0C9W0C8
Bit
Number
7-0W0C15-8 PWMU0 high bits counter frequency.
Bit
Mnemonic Description
Reset Value = 0000 0000b
Not bit addressable
Table 30. W0CL: PWMU0 counter low control register
W0CL - PWMU0 Counter Control Register (EDh)
PWMU0 Output
Generation
76543210
W0C7W0C6W0C5W0C4W0C3W0C2W0C1W0C0
Bit
Number
7-0W0C7-0PWMU0 low bits counter frequency.
Bit
Mnemonic Description
Reset Value = 0000 0000b
Not bit addressable
All the PWMU0 modules have the same frequency determined by the W0F register. But
each module has its own duty cycle determined by the W0Rn Register. (n is the module
number).
When the W0C content is lower than the value programmed via the W0Rn registers, the
output is the W0INVn-bit (low if 0, high if 1). When it is equal or higher, the output is the
opposite of this W0INVn-bit (high if 0, low if 1).
When the W0C content is higher than SW0F’s, an overtaking occurs. The counter value
(W0C registers) is automatically reloaded with zero (see Figure 16). If the W0UP bit is
high, the new comparison value is reloaded on the shadow SW0R0 registers with the
4311C–8051–02/08
43
content of the W0R0 registers (see Figure 16). This method allows to change frequency
W0CHW0CL
SW0RnHSW0RnL
W0RnHW0RnL
16 bits-comparator
Š
<
overtaking
Module n output
W0INVn
W0UP
and duty cycle without glitch.
Note:If the PWMU0 is off (W0R bit in W0CON not set), W0RnH and W0RnL contents are auto-
matically copied on the shadow registers SW0RnH and SW0RnLn and the contents of
W0FH and W0FL are automatically copied on the shadow registers SW0FH and SW0FL.
This allows to charge the correct comparison values for each PWM module as soon as
the PWMU0 timer/counter is turned on.
Figure 17. PWMU0 Interrupt System
The W0INVn bits that allow output inversion are on the W0MOD (W0 Counter Mode)
register (See Table 26.).
Table 31. W0RnH: PWMU0 module n High Toggle Register
W0R0H - PWMU0 Module 0 High Toggle Register (D9h)
W0R1H - PWMU0 Module 1 High Toggle Register (DBh)
W0R2H - PWMU0 Module 2 High Toggle Register (DDh)
When the counter exceeds this value, module n output toggles.
Reset Value = 0000 0000b
Not bit addressable
In order to generate no recovery signal, it is possible to configure the microcontroller
with the W0OC register to have PWMU0 module 1 XOR PWMU0 module 2 on the
W0M1 pin (see Figure 18).
Figure 18. .PWMU0 Output Selector
PWMU0 Interrupt System
4311C–8051–02/08
W0CON and W0MOD are detailed on Table 25 and Table 26.
Each PWMU0 module can generate an interrupt. The W0IC register enables or disables
interrupt and interrupt flags (See Table 33).
45
Figure 19. PWMU0 Interrupt Configuration
W0W0
W0W0
Module 2
Module 1
IE0.4
IE0.7
To Interrupt
priority decoder
EW0
EA
CF1CF0
ECF1 ECF0
W0
CF2
W0
COF
Module 0
Overtaking
W0W0
ECOF ECF2
W0IC
Table 33. PWMU0 interrupt control register
W0IC - PWMU0 Interrupt Control Register (EEh)
76543210
W0CFW0CF2W0CF1W0CF0W0ECOFW0ECF2W0ECF1W0ECF0
Bit
Number
7W0COF
6W0CF2
5W0CF1
4W0CF0
3W0ECOF
2W0ECF2
1W0ECF1
0W0ECF0
Bit
Mnemonic Description
PWMU0 Counter Overtaking Flag
Set by hardware when the counter is higher or equal to SW0F’s value. CF flags an
interrupt if bit W0ECOF is set. W0COF can be set either by hardware or software
but can only be cleared by software.
PWMU0 Module 2 Toggle flag
Set by hardware when a match occurs. Can also be set by software. Must be
cleared by software.
PWMU0 Module 1 Toggle flag
Set by hardware when a match occurs. Can also be set by software. Must be
cleared by software.
PWMU0 Module 0 Toggle flag
Set by hardware when a match occurs. Can also be set by software. Must be
cleared by software.
PWMU0 Counter Overtaking flag
Set to Enable IT on PWMU0 Counter Overtaking Flag.
PWMU0 Module 2 Counter flag
Set to enable IT on PWMU0 Module 2 Toggle flag.
PWMU0 Module 1 Counter flag
Set to enable IT on PWMU0 Module 1Toggle flag.
PWMU0 Module 0 Counter flag
Set to enable IT on PWMU0 Module 0Toggle flag.
Reset Value = 0000 0000b
Not bit addressable
46
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
PWM Unit 1 (PWMU1)
PWMU1 Timer
The PWM unit 1 allows to generate precise pulse width modulation with variable duty
cycle and frequency.
The PWMU1 consists of a dedicated 16 bits auto reload counter/timer which serves as a
time base for the generation of an independent PWM signal.
Its clock input can be programmed to count any one of the following signals:
•Peripheral clock, CkIdle
•Timer 1 overflow
•External input on W1CI (P4.2)
The PWMU1 timer/counter shares two external I/O. These pins are listed below. If a port
is not used for the PWMU1, it can still be used for standard I/O.
PWMU1 ComponentExternal I/O Pin
16-bit CounterW1CI (P4.2)
16-bit Module 0W1M0 (P3.5)
The PWMU1 timer is a 16-bit timer (See Figure 20). The timer count source is determined from the W1CPS1 and W1CPS0 bits in the W1CON register (See Table 34) and
can be programmed to run at:
•Peripheral clock, CkIdle
•Timer 1 overflow
•External input on W1CI (P4.2)
The output frequency depends on the timer source and also on the W1F Registers. The
timer/counter counts from zero up to a value loaded via SW1F registers. Each time the
counter is higher or equal to the SW1F shadow registers value, W1C registers are automatically reloaded with zero. If the W1UP bit is set, the shadow SW1F registers is
reloaded with the contents of W1F registers when W1C overtakes. This allows to prevent frequency drift (See Figure 20).
Note:If the PWMU1 is Off (W1R bit in W1CON not set), the contents of W1FH and W1FL are
automatically copied on the shadow registers SW1FH and SW1FL. This allows to charge
the correct comparison values in order to have the desired frequency as soon as the
PWM is turned on.
4311C–8051–02/08
47
Figure 20. PWMU1 Timer/Counter
W1CPS0 W1INV0
W1R
W1CON
W1OCLKW1CPS1
W1UP
W1EN0
W1CHW1CL
To PWMU1
modules
FCkIdle
T0 OVF
W1CI
SW1FHSW1FL
16 bit up
W1FHW1FL
00000000
16 bit comparator
Š
counter
overtaking
48
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Table 34. W1CON: PWMU1 Control Register
W1CON - PWMU1 Control Register (F8h)
76543210
W1UPW1R-W1OCLKW1CPS1W1CPS0W1INV0W1EN0
Bit
Number
7W1UP
6W1R
5-Not used
4W1OCLK
3W1CPS1PWMU1 Count Pulse Select bit1
2W1CPS0
1W1INV0
Bit
MnemonicDescription
PWMU1 update bit
Set by software to request the load of all shadow registers on the next
overtaking of the W1C counter. Reset by hardware after the loading of the
shadow registers
PWMU1 Run control bit
Set by software to turn the PWMU1 counter on. Must be cleared by software to
turn the PWMU1 counter off.
Output Clocking Control bit.
This bit allows to choose between the output clocking signal and the PWM1M0
output.
If set, the external clocking is chosen, if clear, PWM1M0 is chosen.
PWMU Count Pulse Select bit0
CPS1 CPS0 Selected PWMU1 input
00 Internal clock f
01 Reserved
10 Timer 1 Overflow
11 External clock input on W1CI at max rate = f
PWMU1 Module 0 inverter bit
Select the output PWM mode. If set, PWM module 0 output starts with high
level.
CkIdle
CkIdle
/4
4311C–8051–02/08
0W1EN0
PWMU1 Module 0 enable bit
Enable PWMU1 module 0 if set. If clear, P3.5 is an I/O port.
Reset Value = 000’RST_OCLK’ 000’RST_OCLK’b
Bit addressable
Table 35. W1FH: PWMU1 frequency high control register
W1FH - PWMU1 Frequency Control Register (FAh)
76543210
W1F15W1F14W1F13W1F12W1F11W1F10W1F9W1F8
Bit
Number
7-0W1F15-8
Bit
MnemonicDescription
PWMU1 high bits counter control frequency
The PWMU1 counter is counting from zero up to W1F15-0 value.
Reset Value = 1111 1111b
Not bit addressable
49
Table 36. W1FL: PWMU1 frequency low control register
W1FL - PWMU1 Frequency Control Register (FBh)
76543210
W1F7W1F6W1F5W1F4W1F3W1F2W1F1W1F0
Bit
Number
7-0W1F7-0
Bit
MnemonicDescription
PWMU1 low bits counter control frequency
The PWMU1 counter is counting from zero up to W1F15-0 value.
Reset Value = 1111 1111b
Not bit addressable
Table 37. W1CH: PWMU1 counter high control register
W1CH - PWMU1 Counter Control Register (FCh)
76543210
W1C15W1C14W1C13W1C12W1C11W1C10W1C9W1C8
Bit
Number
7-0W1C15-8PWMU1 high bits counter frequency
Bit
MnemonicDescription
Reset Value = 0000 0000b
Not bit addressable
Table 38. W1CL: PWMU1 counter low control register
W1CL - PWMU1 Counter Control Register (FDh)
PWMU1 Output
Generation
76543210
W1C7W1C6W1C5W1C4W1C3W1C2W1C1W1C0
Bit
Number
7-0W1F7-0PWMU1 low bits counter frequency
Bit
MnemonicDescription
Reset Value = 0000 0000b
Not bit addressable
All the PWMU1 modules have the same frequency determined by the W1F registers.
However, each module has is own duty cycle determined by the W1Rn Registers. (n is
the module number).
When the W1C content is lower than the value programmed via W1Rn registers, the
output is the W1INVn-bit (low if 0, high if 1). When it is equal or higher, the output is the
opposite of this W1INVn-bit (high if 0, low if 1).
When the W1C content is higher than SW1F’s, an overtaking occurs. The counter value
(W1C registers) is automatically reloaded with zero (see Figure 21.). If the W1UP bit is
high, the new comparison value is reloaded on the shadow SW1R0 registers with the
50
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
W1CHW1CL
SW1R0HSW1R0L
W1R0HW1R0L
16 bits-comparator
Š
<
overtaking
Module 0 output
W1INV0
W1UP
content of the W1R0 registers (see Figure 21.). This method allows to change frequency
and duty cycle without glitch.
Note:If the PWMU1 is Off (W1R bit in W0CON not set), W1RnH and W1RnL contents are
automatically copied on the shadow registers SW1RnH and SW1RnLn and the contents
of W1FH and W1FL are automatically copied on the shadow registers SW1FH and
SW1FL. This allows to charge the correct comparison values for each PWM module as
soon as the PWMU1 timer/counter is turned on.
Figure 21. PWMU1 Interrupt System
The W1INV0 bit that allows output inversion is on the W1CON (W1 Control) register
(See Table 34.).
Table 39. W1R0H: PWMU1 module 0 High Toggle Register
W1R0H - PWMU1 Module 0 High Toggle Register (C9h)
•An I/O port (W1EN0 = 0)
This configuration is made via W1CON register (See Table 34.). By default, W1CON
register contains 00h. So P3.5 is configured as an I/O port.
The W1INV0 bit allows to start PWMU1 module 0 period with a high (if set) or low level.
Figure 22. PWMU1 Output Selector
PWMU1 Interrupt System
PWMU1 can generate an interrupt. The W1IC register enables or disables interrupt and
interrupt flags (See Table 41).
Figure 23. PWMU1 Interrupt Configuration
52
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Table 41. PWMU1 Interrupt Control Register
W1IC - PWMU1 Interrupt Control Register (FEh)
76543210
W1CF--W1CF0W1ECF--W1ECF0
Bit
Number
7W1COF
6-5-Not used
4W1CF0
3W1ECOF
2-1-Not used
0W1ECF0
Bit
MnemonicDescription
PWMU1 Counter Overtaking Flag
Set by hardware when the counter rolls over. CF flags an interrupt if bit
W1ECOF is set. W1COF
can be set either by hardware or software but can only be cleared by software.
PWMU1 Module 0 Toggle fla
Set by hardware when a match occurs. Can also be set by software. Must be
cleared by software.
PWMU1 Counter Overtaking Flag
Set to Enable PWMU1 Counter Overtaking Flag.
PWMU1 Module 0 Counter flag
Set to enable PWMU1 Module 0Toggle flag.
Reset Value = 0000 0000b
Not bit addressable
4311C–8051–02/08
53
WatchDog Timer
RESET
Decoder
Control
WDTRST
WR
Enable
14-bit COUNTER
7-bit COUNTER
Outputs
F
CPU_PERIPH
RESET
-
-
-
-
-
2
1
0
WDTPRG
Figure 24. WatchDog Timer
AT8xEB5114 contains a powerful programmable hardware WatchDog Timer (WDT) that
automatically resets the chip if its software fails to reset the WDT before the selected
time interval has elapsed. It permits large Time-Out ranking from 16 ms to 2s @Fosc =
12 MHz.
This WDT consists of a 14-bit counter plus a 7-bit programmable counter, a WatchDog
Timer reset register (WDTRST) and a WatchDog Timer programmation (WDTPRG) register. When exiting reset, the WDT is -by default- disabled. To enable the WDT, the user
has to write the sequence 1EH and E1H into WDRST register. When the WatchDog
Timer is enabled, it will increment every machine cycle while the oscillator is running
and there is no way to disable the WDT except through reset (either hardware reset or
WDT overflow reset). When WDT overflows, it will generate an output RESET pulse at
the RST pin. The RESET pulse duration is 96xT
, where T
OSC
OSC
=1/F
. To make the
OSC
best use of the WDT, it should be serviced in those sections of code that will periodically
be executed within the time required to prevent a WDT reset.
The WDT is controlled by two registers (WDTRST and WDTPRG)
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
Reserved
The value read from this bit is indeterminate. Do not set this bit.
WatchDog Timer Duration selection bit 2
Work in conjunction with bit 1 and bit 0.
WatchDog Timer Duration selection bit 1
Work in conjunction with bit 2 and bit 0.
WatchDog Timer Duration selection bit 0
Work in conjunction with bit 1 and bit 2.
Reset Value = XXXX X000b
The three lower bits (S0, S1, S2) located into WDTPRG register permit to program the
WDT duration.
S2S1S0Machine Cycle Count
000214 - 1
001215 - 1
0102
011217 - 1
100218 - 1
101219 - 1
110220 - 1
111221 - 1
16
- 1
To compute WD Time-Out, the following formula is applied:
Note:Note: Value represents the decimal value of (S2 S1 S0) / CKRL represents the Prescaler
4311C–8051–02/08
55
Find Hereafter computed Time-Out value for Fosc = 12 MHz
Table 42. Time-Out Computation @12 MHz
S2S1S0Time-Out for F
00016.38 ms
00132.77 ms
01065.54 ms
011131.07 ms
100262.14 ms
101524.29 ms
1101.05 s
1112.10 s
=12 MHz
OSC
Table 43. WDTRST Register
76543210
--------
Reset Value = XXXX XXXXb
WatchDog Timer During
Power Down Mode and
Idle
The WDTRST register is used to reset/enable the WDT by writing 1EH then E1H in
sequence.
In Power Down mode the oscillator stops, which means the WDT also stops. While in
Power Down mode the user does not need to service the WDT. There are 2 methods of
exiting Power Down mode: by a hardware reset or via a level activated external interrupt
which is enabled prior to entering Power Down mode. When Power Down is exited with
hardware reset, servicing the WDT should occur as it normally does whenever
AT8xEB5114 is reset. Exiting Power Down with an interrupt is significantly different. The
interrupt is held low long enough for the oscillator to stabilize. When the interrupt is
brought high, the interrupt is serviced. To prevent the WDT from resetting the device
while the interrupt pin is held low, the WDT is not started until the interrupt is pulled high.
It is suggested that the WDT be reset during the interrupt service for the interrupt used
to exit Power Down.
To ensure that the WDT does not overflow within a few states of exiting of power down,
it is best to reset the WDT just before entering power down.
In the Idle mode, the oscillator continues to run. To prevent the WDT from resetting
while in Idle mode, the user should always set up a timer that will periodically exit Idle,
service the WDT, and re-enter Idle mode.
56
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Analog-to-Digital
Converter (ADC)
Features
This section describes the on-chip 10 bit analog-to-digital converter of the AT8xEB5114.
Six ADC channels are available for sampling of the external sources AIN0 to AIN5. An
analog multiplexer allows the single ADC converter to select one from the 6 ADC channels as ADC input voltage (ADCIN). ADCIN is converted by the 10 bit-cascaded
potentiometric ADC.
8 to 10 bits resolution can only be reached while using an external voltage reference.
For the precision conversion, set bits PSIDLE and ADSST in ADCON register to start
the conversion. The chip is in a pseudo-idle mode, the CPU doesn’t run but the peripherals are always running. This mode allows digital noise to be lower, to ensure precise
conversion.
For accurate conversion, set bits QUIETM and ADSST in ADCON register to start the
conversion. The chip is in a quiet mode, the AD is the only peripheral running. This
mode allows digital noise to be as low as possible, to ensure high precision conversion.
For these modes it is necessary to work with end of conversion interrupt, which is the
only way to wake up the chip.
If another interrupt occurs during the precision conversion, it will be treated only after
this conversion is ended.
•6 channels with multiplexed inputs
•One channel with input signal average extraction and programmable gain
amplification.
•10-bit cascaded potentiometric ADC
•Typical conversion time 20 micro-seconds
•Zero Error (offset) +/- 2 LSB max
•External Positive Reference Voltage Range 2.4 to Vcc
•Internal Positive Reference typical Voltage 2.4 Volt
•ADCIN Range 0 to V
•Integral non-linearity typical 1 LSB
•Differential non-linearity typical 0.5 LSB
•Conversion Complete Flag or Conversion Complete Interrupt
•Selected ADC Clock
Note:(1): See “DC Parameters for A/D Converter” on page 88.
REF
(1)
(1)
(1)
4311C–8051–02/08
57
ADC I/O Functions
AIN0/P4.0
AIN1/P4.1
AIN2/P4.2
AIN3/P4.3
000
001
010
011
SCH2
ADCON.2
SCH0
ADCON.0
SCH1
ADCON.1
CONV_CK
ADEN
ADCON.5
ADSST
ADCON.3
ADEOC
ADCON.4
ADC
Interrupt
Request
EADC
IE1.1
CONTROL
AVSS
Sample and Hold
ADDH
Vref
R/2R DAC
8
10
+
-
ADDL
2
SAR
ADCIN
VAGND
SELREF
ADCLK.7
2.4V
ADEN
ADCON.5
* gain
AIN4/P3.3
AIN5/P3.4
100
101
AC3E
ADCA.2
R
ADEN
ADSST
ADEOC
T
SETUP
T
CONV
CONV_CK
Figure 26. ADC Description
AINx are general I/O that are shared with the ADC channels. The channel select bit in
ADCF register define which ADC channel pin will be used as ADCIN. The remaining
ADC channels pins can be used as general purpose I/O or as the alternate function that
is available. Writings to the port registers which aren’t selected by the ADCF will not
have any effect.
Figure 27. Timing Diagram
Note:Tsetup = 0 CLK
58
AT89/83EB5114
Figure 27 shows the timing diagram of a complete conversion. For simplicity, the figure
depicts the waveforms in idealized form and do not provide precise timing information.
For ADC characteristics and timing parameters refer to theSection “DC Parameters for
A/D Converter”, page 88.
4311C–8051–02/08
AT89/83EB5114
AIN3/P4.3
A/D input
Amplification
(programmable gain)
AC3G1
ADCF.7
AC3E
ADCF.5
AC3G0
ADCF.6
Enable
Gain
Average value
extraction
Channel 3 Amplifier and
Rectifying Function
If needed, the average value of the rectified signal on channel 3 can be extracted and
amplified before A/D conversion as shown on Figure 28.
Figure 28. Channel 3 Amplifier
The main characteristics of this block are the following:
•Input signal level: sine wave centered around Vssa, peak value from 70 to 550 mV
depending on gain, Frequency range from 35 to 70KHz. Be sure that the peak value
on the amplifier output is lower than voltage supply.
•Gain: x5, x10, x15 and x20, selected using AC3E, AC3G1 and AC3G0 in ADC
Amplifier register (See Table 44 and Table 52)
•Max time constant of the average value extraction: 0.5ms. When the gain is
changed or when the signal levels changes from the minimum to the maximum
value, a new measurement can be done after 10 time constant.
•The amplifier needs 20us to fully load the ADC hold capacitance so the ADC
conversion must occurs at least 20us after the amplified channel is sampled.
•Accuracy on amplification and extraction: +/- 5%
Note:The AIN3 direct channel is not equivalent to the other channels. There is a serial resis-
tance of around 100KΩ between the pin and the ADC input. So when the amplifier is
bypassed, it is necessary to switch at least 20us the mux on AIN3 input before starting a
conversion.
Table 44. ADCF Register
ADCA (S:F7h)
ADC Amplifier Configuration
4311C–8051–02/08
76543210
-----AC3EAC3G1AC3G0
Bit
Number
7-3-Not used
2AC3E
1AC3G1Channel 3 amplifier gain
0AC3G0
Reset Value = 0000 0000b
Bit
Mnemonic Description
Enable Channel 3 amplifier
Set to enable amplifier.
Clear for Standby mode
AC3G1 AC3G0
0 0 gain x5
0 1 gain x10
1 0 gain x15
1 1 gain x20
59
ADC Converter
Operation
A start of single A/D conversion is triggered by setting bit ADSST (ADCON.3).
The busy flag ADSST(ADCON.3) remains set as long as an A/D conversion is running.
After completion of the A/D conversion, it is cleared by hardware. When a conversion is
running, this flag can be read only, a write has no effect.
The end-of-conversion flag ADEOC (ADCON.4) is set when the value of conversion is
available in ADDH and ADDL, it is cleared by software. If the bit EADC (IE0.6) is set, an
interrupt occur when flag ADEOC is set (see Figure 30). Clear this flag for re-arming the
interrupt.
The bits SCH0 to SCH2 in ADCON register are used for the analog input channel
selection.
Before starting normal power reduction modes the ADC conversion has to be
completed.
Table 45. Selected Analog Input
SCH2SCH1SCH0Selected Analog input
000AN0
001AN1
010AN2
011AN3
Voltage Conversion
Clock Selection
100AN4
101AN5
110
111
When the ADCIN is equal to VAREF the ADC converts the signal to 3FFh (full scale). If
the input voltage equals VAGND, the ADC converts it to 000h. Input voltage between
VAREF and VAGND are a straight-line linear conversion. All other voltages will result in
3FFh if greater than VAREF and 000h if less than VAGND.
Note that ADCIN should not exceed VAREF absolute maximum range.
The maximum clock frequency for ADC (CONV_CK for Conversion Clock) is defined in
the Section “AC Parameters”, page 88. A prescaler is featured to generate the
CONV_CK clock from the oscillator frequency. The prescaler value PRS[6:0] is defined
in the ADCLK register (see Table 49 on page 64)
60
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Prescaler PRS
A/D
Converter
CONV_CK
CKADC
/ 2
ADEOC
ADCON.4
EADC
IE0.6
ADCI
Figure 29. A/D Converter clock
The conversion frequency CONV_CK is derived from the oscillator frequency with the
following formulas:
F
CkAdc
and
= F
= F
/ (32 - 2*CKRL), if X2=0
OscOut
OscOut , if X2=1
ADC Standby Mode
Voltage Reference
F
CONV_CK
F
CONV_CK
= F
= F
/ (2*PRS), if PRS > 0
CkAdc
/ 256, if PRS = 0
CkAdc
Some examples can be found on table below:
F
OscOut
MHzX2CKRL
160F81233333
161NA163225044
F
CkAdc
MhzPRSw
F
CONV_CK
khz
Conversion
time µs
When the ADC is not used, it is possible to set it in standby mode by clearing bit ADEN
in ADCON register.
The voltage reference can be either internal or external.
As input, the V
When the voltage reference is active, the V
pin is used to enter the voltage reference for the A/D conversion.
REF
pin is an output. This voltage can be
REF
used for the A/D and for any other application requiring a voltage independent from the
power supply. Voltage typical value is 2.4 volt (See “DC Parameters for A/D Converter”
on page 88.)
IT ADC Management
4311C–8051–02/08
An interrupt end-of-conversion will occur when the bit ADEOC is activated and the bit
EADC is set. For re-arming the interrupt the bit ADEOC must be cleared by software.
Figure 30. ADC Interrupt Structure
61
Accuracy improvement on analog to digital conversion using the internal voltage reference
OverviewThe internal Vref absolute accuracy is around 4%. This variation is mainly due to the
temperature, the process, and the voltage variations. In order to increase the accuracy
of the measurements made thanks to the ADC, it is possible to make a software correction of the Vref, in order to calculate the result the ADC should have returned in case the
Vref was more accurate.
The idea of this improvement is the following: Because there is an EEPROM stacked on
the product, it is possible to store a linear coefficient which allow a correction of the process variations.
Coefficient addressThe coefficient is stored at the address 0x00 of the serial data EEPROM stacked on the
AT8xEB5114.
Coefficient formatIn order to ease the calculation, this coefficient has been stored as a floating decimal
number corresponding to Table 46.
Table 46. Calibration coefficient storage format
BitValue
71,
61/2
51/4
41/8
31/16
21/32
11/64
01/128
It means that if the value is 0x80, the coefficient is equal to 1. If the coefficient is 0x7e,
the coefficient is equal to 0,111 1110 in binary which is 0,983 in decimal.
During the test, the Vref is measured, and the calibration value calculated is stored at
the address 0x00 of the stack die in accordance with the Table 46 format value.
The relation between the coefficient stored, and the true Vref measurement are
recorded on the Table 47.
Table 47. Relation between True Vref measurement and coefficient stored into the
EEPROM
The coefficient stored on the stacked die allow to determine the conversion result the
AT8xEB5114 should have returned in case its Vref was exactly equal to 2.4V. In order to
determine it, a multiplication of the result of the conversion with the coefficient stored in
the stack, followed by a shift are sufficient.
ExampleVref is 2.36V instead of 2.4V, and only 8 bits are necessary.
The value measured during the test 2.36V. So, in accordance with the Table 47, the
coefficient which has to be stored on the EEPROM is 0x7e which corresponds to
0.1111110 in binary, which also corresponds to around 2.36/2.4.
If, for example, after a conversion, the ADDH register contains 0xf0, to know the result
the ADC should have returned in case the Vref was really at 2.4V, the following operations are necessary:
0xf0 * 0x7e = 1111 0000 * 0111 1110 = 0x7620 = 0111 0110 0010 0000.
So because of the point on the coefficient, the result is 1110 110 which is 0xec.
Assembler code exampleThis is an example of assembler code optimized for size and fast recalculation in case 8
bits are sufficient.
start_adjustement : MOV B,coeff ; Coeff
MOV A,ADDH ; ADC result
MUL AB ;
RLC A ; Recover lowest bit
MOV A,B ;
RLC A ; Recover result
JNC end_fix ; Result OK
MOV A,#0ffh ; Overflow
end_adjustement : RET
Registers
The new result is stored on the accumulator.
This routine requires 15 bytes + 3 bytes for the long call (LCALL).
The execution of the subroutine (including the LCALL) is 18 cycles in normal case and
19 cycles in case of overflow (less than 10us with a 12 MHz oscillator and the X2 mode).
Table 48. ADCON Register
ADCON (S:F3h)
ADC Control Register
76543210
QUIETMPSIDLEADENADEOCADSSTSCH2SCH1SCH0
Bit
Number
7QUIETM
6PSIDLE
Bit
Mnemonic Description
Quiet mode (best precision)
Set to put in quiet mode during conversion.
Cleared by hardware after completion of the conversion.
Pseudo Idle mode (good precision)
Set to put in idle mode during conversion.
Cleared by hardware after completion of the conversion.
4311C–8051–02/08
63
Bit
Number
Bit
Mnemonic Description
5ADEN
4ADEOC
3ADSST
2-0SCH2:0
Enable/Standby Mode
Set to enable ADC.
Clear for Standby mode.
End Of Conversion
Set by hardware when ADC result is ready to be read. This flag can generate an
interrupt.
Must be cleared by software.
Start and Status
Set to start an A/D conversion.
Cleared by hardware after completion of the conversion.
Set to use P3.4 as ADC input
Clear to use P3.4 as an other function
Channel Configuration
Set to use P3.3 as ADC input
Clear to use P3.3 as an other function
Channel Configuration
Set to use P4.x as ADC input
Clear to use P4.x as an other function
Reset Value = 0000 0000b
66
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
0
3
High priority
interrupt
Interrupt
polling
sequence
Low priority
interrupt
Global
disable
Individual
enable
TF0
INT0
TF1
IPH, IP
IE0
0
3
0
3
0
3
0
3
0
3
0
3
ADC
0
3
0
3
PWMU0
PWMU1
0
1
ESB0
INT1
IE1
0
1
ESB1
Interrupt System
The AT8xEB5114 has a total of 8 interrupt vectors: two external interrupts (INT0 and
INT1), two timer interrupts (timers 0, 1), serial port interrupt, PWMU0, PWMU1 and A/D.
These interrupts are shown in Figure 31.
Figure 31. Interrupt Control System
Each of the interrupt sources can be individually enabled or disabled by setting or clearing a bit in the Interrupt Enable register (See Table 54). This register also contains a
global disable bit, which must be cleared to disable all interrupts simultaneously.
Each interrupt source can also be individually programmed to one of four priority levels
by setting or clearing a bit in the Interrupt Priority register (See Table 55) and in the
Interrupt Priority High register (See Table 56). Table 53 shows the bit values and priority
levels associated with each combination.
4311C–8051–02/08
67
Table 53. Priority Bit Level Values
IPH.xIP.xInterrupt Level Priority
000 (Lowest)
011
102
113 (Highest)
A low-priority interrupt can be interrupted by a high priority interrupt, but not by another
low-priority interrupt. A high-priority interrupt can’t be interrupted by any other interrupt
source.
If two interrupt requests of different priority levels are received simultaneously, the
request of higher priority level is serviced. If interrupt requests of the same priority level
are received simultaneously, an internal polling sequence determines which request is
serviced. Thus within each priority level there is a second priority structure determined
by the polling sequence.
Interrupt NameInterrupt Address VectorPriority Number
external interrupt (INT0)0003h1
Timer0 (TF0)000Bh2
external interrupt (INT1)0013h3
Timer1 (TF1)001Bh4
PWM00023h5
PWM1002Bh6
ADC0033h7
68
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Table 54. IEN0 Register
IEN0 - Interrupt Enable Register (A8h)
76543210
EAEADCEW1EW0ET1EX1ET0EX0
Bit
Number
7EA
6EADC
5EW1
4EW0
3ET1
2EX1
1ET0
Bit
MnemonicDescription
Enable All interrupt bit
Clear to disable all interrupts.
Set to enable all interrupts.
If EA=1, each interrupt source is individually enabled or disabled
by setting or clearing its interrupt enable bit.
ADC Interrupt Enable
Clear to disable the ADC interrupt.
Set to enable the ADC interrupt.
PWM1 Enable bit
Clear to disable PWMU interrupt.
Set to enable PWMU port interrupt.
PWM0 Enable bit
Clear to disable PWMU interrupt.
Set to enable PWMU port interrupt.
Timer 1 overflow interrupt Enable bit
Clear to disable timer 1 overflow interrupt.
Set to enable timer 1 overflow interrupt.
External interrupt 1 Enable bit
Clear to disable external interrupt 1.
Set to enable external interrupt 1.
Timer 0 overflow interrupt Enable bit
Clear to disable timer 0 overflow interrupt.
Set to enable timer 0 overflow interrupt.
4311C–8051–02/08
0EX0
External interrupt 0 Enable bit
Reset Value = 0000 0000b
Bit addressable
Clear to disable external interrupt 0.
Set to enable external interrupt 0.
69
Table 55. IPL0 Register
IPL0 - Interrupt Priority Register (B8h)
76543210
-PADCPW1PW0PT1PX1PT0PX0
Bit
Number
7-
6PADC
5PW1
4PW1
3PT1
2PX1
1PT0
0PX0
Bit
MnemonicDescription
Reserved
ADC interrupt Priority bit
PWMU1 Priority bit
PWMU0 Priority bit
Timer 1 overflow interrupt Priority bit
External interrupt 1 Priority bit
Timer 0 overflow interrupt Priority bit
External interrupt 0 Priority bit
Reset Value = X000 0000b
Bit addressable.
The value read from this bit is indeterminate. Do not set this bit.
Refer to PADCH for priority level
Refer to PW1H for priority level.
Refer to PW1H for priority level.
Refer to PT1H for priority level.
Refer to PX1H for priority level.
Refer to PT0H for priority level.
Refer to PX0H for priority level.
70
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Table 56. IPH0 Register
IPH0 - Interrupt Priority High Register (B7h)
76543210
-PADCHPW1HPW0HPT1HPX1HPT0HPX0H
Bit
Number
7-
6PADCH
5PW1H
4PW1H
3PT1H
Bit
MnemonicDescription
Reserved
The value read from this bit is indeterminate. Do not set this bit.
As shown Figure 32, the Flash version of AT8xEB5114 implements 4 Kbytes of on-chip
program/code memory.
The Flash memory increases EPROM and ROM functionality by in-circuit electrical erasure and programming. Thanks to the internal charge pump, the high voltage needed for
programming or erasing Flash cells is generated on-chip using the standard VDD
voltage.
Hardware programming mode is available using specific programming tool.
AT8xEB5114 features a Flash memory containing 4 Kbytes of program memory (user
space) organized into 128 byte pages,
This Flash memory is programmable by parallel programming.
Figure 32. Flash Memory Architecture
FM0 Memory
Architecture
User SpaceThis space is composed of a 4 Kbytes Flash memory organized in 32 pages of 128
Extra Row (XRow)This row is a part of flash memory and has a size of 128 bytes. The extra row may con-
Hardware security ByteThe Hardware Security Byte space is a part of flash memory and has a size of 1 byte.
Column latchesThe column latches, also part of flash memory, have a size of full page (128 bytes).
Overview of Flash Memory
Operations
The Flash memory is made up of 4 blocks (see Figure 32):
The 4 MSB can be read/written by software, the 4 LSB can only be read by software and
written by hardware in parallel mode.
The column latches are the entrance buffers of the three previous memory locations
(user array, XROW and Hardware security byte).
The CPU interfaces to the Flash memory through the FCON register used to:
–Map the memory spaces in the adressable space
72
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
–Launch the programming of the memory spaces
–Get the status of the flash memory (busy/not busy)
Mapping of the Memory SpaceBy default, the user space is accessed by MOVC instruction for read only. The column
latches space is made accessible by setting the FPS bit in FCON register. Writing is
possible from 0000h to 0FFFh, address bits 6 to 0 are used to select an address within a
page while bits 14 to 7 are used to select the programming address of the page.
The other memory spaces (user, extra row, hardware security) are made accessible in
the code segment by programming bits FMOD0 and FMOD1 in FCON register in accordance with Table 57. A MOVC instruction is then used for reading these spaces.
Table 57. .FM0 Blocks Select Bits
FMOD1FMOD0FM0 Adressable space
00User (0000h-FFFFh)
01Extra Row(FF80h-FFFFh)
10Hardware Security Byte (0000h)
11reserved
Launching programmingFPL3:0 bits in FCON register are used to secure the launch of programming. A specific
sequence must be written in these bits to unlock the write protection and to launch the
programming. This sequence is 5xh followed by Axh. Table 33 summarizes the memory
spaces to program according to FMOD1:0 bits.
Figure 33. Programming spaces
Write to FCON
OperationFPL3:0FPSFMOD1FMOD0
5X00No action
User
Extra Row
Hardware
Security
Byte
Reserved
AX00
5X01No action
AX01
5X10No action
AX10Write the fuse bits space
5X11No action
AX11No action
Write the column latches in user
space
Write the column latches in extra row
space
4311C–8051–02/08
Notes: 1. The sequence 5xh and Axh must be executing without instructions between then oth-
erwise the programming is aborted.
2. Interrupts that may occur during programming time must be disable to avoid any spurious exit of the idle mode.
73
Status of the Flash MemoryThe bit FBUSY in FCON register is used to indicate the status of programming. FBUSY
Column Latches Loading
Data Load
DPTR= Address
ACC= Data
Exec: MOVX @DPTR, A
Last Byte
to load?
Column Latches Mapping
FPS= 1
Data memory Mapping
FPS= 0
Disable IT
EA= 0
Enable IT
EA= 1
is set when programming is in progress.
Loading the Column LatchesAny number of data from 1 byte to 128 bytes can be loaded in the column latches. This
provides the capability to program the whole memory by byte, by page or by any number
of bytes in a page.
When programming is launched, an automatic erase of the locations loaded in the column latches is first performed, then programming is effectively done. Thus no page or
block erase is needed and only the loaded data are programmed in the corresponding
page.
The following procedure is used to load the column latches and is summarized in
Figure 34:
–Disable interrupt and map the column latch space by setting FPS bit.
–Load the DPTR with the address to load.
–Load Accumulator register with the data to load.
–Execute the MOVX @DPTR, A instruction.
–If needed loop the three last instructions until the page is completely loaded.
–unmap the column latch and Enable Interrupt
Figure 34. Column Latches Loading Procedure
74
Note:The last page address used when loading the column latch is the one used to select the
AT89/83EB5114
page programming address.
4311C–8051–02/08
Programming the Flash SpacesUser
The following procedure is used to program the User space and is summarized in
Figure 35:
Note:1. The last page address used when loading the column latch is the one used to select
Extra Row
The following procedure is used to program the Extra Row space and is summarized in
Figure 35:
AT89/83EB5114
–Load data in the column latches from address 0000h to 0FFFh1.
–Disable the interrupts.
–Launch the programming by writing the data sequence 50h followed by A0h
in FCON register (only from FM1).
The end of the programming indicated by the FBUSY flag cleared.
–Enable the interrupts.
the page programming address.
–Load data in the column latches from address FF80h to FFFFh.
–Disable the interrupts.
–Launch the programming by writing the data sequence 52h followed by A2h
in FCON register (only from FM1).
The end of the programming indicated by the FBUSY flag cleared.
–Enable the interrupts.
4311C–8051–02/08
75
Figure 35. Flash and Extra row Programming Procedure
Flash Spaces
Programming
Disable IT
EA= 0
Launch Programming
FCON= 5xh
FCON= Axh
End Programming
Enable IT
EA= 1
Column Latches Loading
see Figure 34
•
FBusy
Cleared?
Erase Mode
FCON = 00h
Hardware Security Byte
The following procedure is used to program the Hardware
Security
Byte space
and is summarized in Figure 36:
–Set FPS and map Hardware byte (FCON = 0x0C)
–Disable the interrupts.
–Load DPTR at address 0000h.
–Load Accumulator register with the data to load.
–Execute the MOVX @DPTR, A instruction.
–Launch the programming by writing the data sequence 54h followed by A4h
in FCON register (only from FM1).
The end of the programming indicated by the FBusy flag cleared.
–Enable the interrupts.
76
AT89/83EB5114
4311C–8051–02/08
Figure 36. Hardware Programming Procedure
Flash Spaces Programming
Disable IT
EA= 0
Launch Programming
FCON= 54h
FCON= A4h
End Programming
Enable IT
EA= 1
FBusy
Cleared?
Erase Mode
FCON = 00h
Data Load
DPTR= 00h
ACC= Data
Exec: MOVX @DPTR, A
FCON = 0Ch
AT89/83EB5114
Reading the Flash SpacesUser
The following procedure is used to read the User space and is summarized in Figure 37:
Extra Row
The following procedure is used to read the Extra Row space and is summarized in
Figure 37:
Hardware Security Byte
–Map the User space by writing 00h in FCON register.
–Read one byte in Accumulator by executing MOVC A,@A+DPTR with A= 0
& DPTR= 0000h to FFFFh.
–Map the Extra Row space by writing 02h in FCON register.
–Read one byte in Accumulator by executing MOVC A,@A+DPTR with A= 0
& DPTR= FF80h to FFFFh.
–Clear FCON to unmap the Extra Row.
4311C–8051–02/08
77
The following procedure is used to read the Hardware
Flash Spaces Reading
Flash Spaces Mapping
FCON= 00000xx0b
Data Read
DPTR= Address
ACC= 0
Exec: MOVC A, @A+DPTR
Erase Mode
FCON = 00h
Security
space and is
summarized in Figure 37:
–Map the Hardware Security space by writing 04h in FCON register.
–Read the byte in Accumulator by executing MOVC A,@A+DPTR with A= 0 &
DPTR= 0000h.
–Clear FCON to unmap the Hardware Security Byte.
Figure 37. Reading Procedure
Flash Protection from Parallel
Programming
The three lock bits in Hardware Security Byte are programmed according to Table 58,
will provide different level of protection for the on-chip code and data located in flash
memory.
The only way for write this bits are the parallel mode.
Table 58. Program Lock Bit
Program Lock BitsProtection Description
Security
levelLB1LB0
1UUNo program lock feature enabled.
2UP
3PU
Writing Flash data from programmer is disabled but still allowed from
internal code execution.
Writing and reading Flash data from programmer is disabled but still
allowed from internal code execution.
WARNING: Security level 2 and 3 should only be programmed after Flash and Core
verification.
78
AT89/83EB5114
4311C–8051–02/08
Registers
AT89/83EB5114
Table 59. FCON: Flash Control Register
FCON - Flash Control Register (D1h)
76543210
FPL3FPL2FPL1FPL0FPSFMOD1FMOD0FBUSY
Bit
Number
7-4FPL3:0
3FPS
2-1FMOD1:0
0FBUSY
Bit
Mnemonic Description
Programming Launch Command Bits
Write 5Xh followed by AXh to launch the programming according to FMOD1:0.
(see Figure 33.)
Flash Map Program Space
Set to map the column latch space in the data memory space.
Clear to re-map the data memory space.
Flash Mode
See Table 57 or Table 33.
Flash Busy
Set by hardware when programming is in progress.
Clear by hardware when programming is done.
Can not be cleared by software.
Reset Value= 0000 0000b
4311C–8051–02/08
79
AT8xEB5114 ROM
ROM Structure
The AT8xEB5114 ROM memory is divided in two different arrays:
•the code array: 4 Kbytes.
•the configuration byte:1 byte.
Hardware Configuration ByteThe configuration byte sets the starting microcontroller options and the security levels.
The starting default options are X1 mode, Oscillator A.
Clear to force X2 mode (CkOut = OscOut)
Set to use the prescaler mode (CkOut = OscOut / (2*(16-M)))
Oscillator bit 0 on reset
Oscillator bit on reset
11: allow OSCA
10: allow OSCB
01: allow OSCC
00: reserved
Output clocking signal after RESET
Clear to start the microcontroller with a low level on P3.5 followed by an
4RST_OCLK
3CKRLRV
2-Reserved
1-0LB1-0
output clocking signal on P3.5 as soon as the microcontroller is started. This
signal has is a 1/3 high 2/3 low signal. Its frequency is equal to (CKout / 3).
Set to start on normal conditions: No signal on P3.5 which is pulled up.
CKRL Reset Value
If set, the microcontroller starts with the prescaler reset value = XXXX 1000
(OscOut = CkOut/16).
If clear, the microcontroller starts with a prescaler reset value = XXXX 1111
(OscOut = CkOut/2).
User Program Lock Bits
See Table 61 on page 81
HSB = 1111 XX11b
Note:Whatever the value of RST_OSC, the XTAL1 input is always validated in order to enter in
test modes.
80
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
ROM Lock System
The program Lock system, when programmed, protects the on-chip program against
software piracy.
Program ROM lock BitsThe lock bits when programmed according to Table 61 will provide different level of pro-
tection for the on-chip code and data.
Table 61. Program Lock bits
Program Lock BitsProtection Description
Security
levelLB1LB0
1UUNo program lock feature enabled.
3PUReading ROM data from programmer is disabled.
U: unprogrammed
P: programmed
4311C–8051–02/08
81
82
AT89/83EB5114
4311C–8051–02/08
Stacked EEPROM
AT89/83EB5114
Overview
Protocol
The AT8xEB5114 features a stacked 2-wire serial data EEPROM. The data EEPROM
allows to save up to 256 bytes. The EEPROM is internally connected to P3.6 and P3.7
which are respectively connected to the SDA and the SCL pins.
In order to access this memory, it is necessary to use software subroutines according to
the AT24C02 datasheet. Nevertheless, because the internal pull-up resistors of the
AT8xEB5114 is quite high (around 100KΩ), the protocol should be slowed in order to be
sure that the SDA pin can rise to the high level before reading it.
Another solution to keep the access to the EEPROM in specification is to work with a
software pull-up.
Using a software pull-up, consists of forcing a low level at the output pin of the microcontroller before configuring it as an input (high level).
The C51 the ports are “quasi-bidirectional” ports. It means that the ports can be configured as output low or as input high. In case a port is configured as an output low, it can
sink a current and all internal pull-ups are disconnected. In case a port is configured as
an input high, it is pulled up with a strong pull-up (a few hundreds Ohms resistor) for 2
clock periods. Then, if the port is externally connected to a low level, it is only kept high
with a weak pull up (around 100KΩ), and if not, the high level is latched high thanks to a
medium pull (around 10kΩ).
Thus, when the port is configured as an input, and when this input has been read at a
low level, there is a pull-up of around 100KΩ, which is quite high, to quickly load the
SDA capacitance. So in order to help the reading of a high level just after the reading of
a low level, it is possible to force a transition of the SDA port from an input state (1), to
an output low state (0), followed by a new transition from this output low state to input
state; In this case, the high pull-up has been replaced with a low pull-up which warranties a good reading of the data.
4311C–8051–02/08
83
Electrical
Characteristics
Absolute Maximum Ratings
(*)
Ambient Temperature Under Bias:
C = commercial..................................................... 0°C to 70°C
I = industrial ....................................................... -40°C to 85°C
Storage Temperature ................................... -65°C to + 150°C
Voltage on VCC to VSS.....................................-0.5 V to + 4.6 V
Voltage on Any Pin to VSS.......................-0.5 V to VCC + 0.5 V
Power Dissipation.............................................................. 1 W
Electro-static discharge voltage 1500 V
Power Consumption
Measurement
Since the introduction of the first C51 devices, every manufacturer made operating Icc
measurements under reset, which made sense for the designs where the CPU was running under reset. In our new devices, the CPU is no longer active during reset, so the
power consumption is very low and this is not really representative of what will happen
in the customer’s system. Thus, while keeping measurements under Reset, we present
a new way to measure the operating Icc:
Using an internal test ROM, the following code is executed:
Label:SJMP Label (80 FE)
Ports 3, 4 are disconnected, RST = Vcc, XTAL2 is not connected and XTAL1 is driven
by the clock.
*NOTICE:
S
tresses at or above those listed under “Absolute Maximum Ratings” may cause permanent
damage to the device. This is a stress rating only
and functional operation of the device at these or
any other conditions above those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions may affect device reliability.
Power Dissipation value is based on the maximum allowable die temperature and the thermal
resistance of the package.
This is much more representative of the real operating Icc.
DC Parameters for Low
Voltage
TA = 0°C to +70°C; VSS = 0 V; VCC = 3 V to 3.6 V; F = 0 to 24 MHz.
TA = -40°C to +85°C; VSS = 0 V; VCC = 3 V to 3.6 V; F = 0 to 24 MHz.
Table 1. DC Parameters for Low Voltage
SymbolParameterMinTypMaxUnitTest Conditions
V
V
V
V
V
Input Low Voltage-0.50.8V
IL
Input High Voltage except XTAL1, RST2VCC + 0.5V
IH
Input High Voltage, XTAL1, RST0.7 V
IH1
Output Low Voltage, ports 3, 4
OL
Output High Voltage, ports 3, 4.
OH
(6)
(6)
CC
0.9 V
CC
VCC - 0.7
VCC - 1.4
VCC + 0.5V
0.3
0.45
1.0
V
IOL = 100 µA
V
IOL = 1.6 mA
V
IOL = 3.2 mA
V
IOH = -10 µA
V
IOH =-30 µA
V
IOH = -50µA
84
AT89/83EB5114
4311C–8051–02/08
AT89/83EB5114
Table 1. DC Parameters for Low Voltage (Continued)
SymbolParameterMinTypMaxUnitTest Conditions
0.9V
V
OH2
Output High Voltage, ports 3, 4.
(6)
mode Push pull
CC
VCC - 0.7
VCC - 1.5
I
I
I
R
RST
Logical 0 Input Current ports 3 and 4
IL
Input Leakage Current±10µA0.45 V < Vin < V
IL
Logical 1 to 0 Transition Current, ports 3, 4
TL
RST Pull up Resistor5090
(7)
(8)
(5)
-50µAVin = 0.45 V
-650µAVin = 2.0 V
200kΩ
CIOCapacitance of I/O Buffer10pF
I
PD
F
OSCB
F
OSCB
F
OSC C
I
CC
under
RESET
I
CC
operating
I
CC
idle
Power Down Current50200µAVCC = 3.0 V to 3.6 V
OSCB unlocked frequency10.81213.2MHz With ideal R and C
OSCB locked frequency11.51212.5MHz With ideal R and C
OSCC frequency8.41419.6MHz
Power Supply Current Maximum values, X1
mode, OSCA oscillator
Power Supply Current Maximum values, X1
mode, OSCA oscillator
Power Supply Current Maximum values, X1
mode, OSCA oscillator
(9)
(9)
(9)
4
0.4*F+3mA
6
V
IOH = -100 µA
V
IOH = - 1 mA
V
IOH = - 2 mA
Fc = 1 MHz
TA = 25°C
VCC = 3.3 V
mA
OSCA + Prescaler
VCC = 3.3 V
F in MHz
mAVCC = 3.3 V
CC
(3)
(1)
(10)
(2)
I
CC
under
RESET
I
CC
operating
I
CC
idle
I
CC
under
RESET
I
CC
operating
I
CC
idle
V
RET
Power Supply Current Maximum values, X1
mode, OSCB oscillator
Power Supply Current Maximum values, X1
mode, OSCB oscillator
Power Supply Current Maximum values, X1
mode, OSCB oscillator
Power Supply Current Maximum values, X1
mode, OSCC oscillator
Power Supply Current Maximum values, X1
mode, OSCC oscillator
Power Supply Current Maximum values, X1
mode, OSCC oscillator
3. Power Down ICC is measured with all output pins disconnected; Vpp = VSS; XTAL2 NC.; RST = Vcc (see Figure 41.).
4. Not Applicable
5. Typical are based on a limited number of samples and are not guaranteed. The values listed are at room temperature and
3.3V.
6. If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greater
than the listed test conditions.
7. For other values, please contact your sales office.
8. When port configuration have weak pull-up activated.
9. When port configuration is quasi-bidirectional.
10. Operating ICC is measured with all output pins disconnected; XTAL1 driven with T
VSS + 0.5 V,
VIH = VCC - 0.5V; XTAL2 N.C.; RST= VCC;. The internal ROM runs the code 80 FE (label: SJMP label). ICC would be slightly
higher if a crystal oscillator is used. Measurements are made with OTP products when possible, which is the worst case.
Figure 38. ICC Test Condition, under reset
, T
CLCH
CHCL
CLCH
= 5 ns (see Figure 42.), VIL =
CHCL
= 5 ns, VIL = VSS + 0.5 V, VIH = V
, T
= 5 ns (see Figure 42.), VIL =
CHCL
CC
-
86
AT89/83EB5114
Figure 39. Operating ICC Test Condition
4311C–8051–02/08
Figure 40. ICC Test Condition, Idle Mode
RST
XTAL2
XTAL1
V
SS
V
CC
I
CC
(NC)
V
CC
All other pins are disconnected.
CLOCK
SIGNAL
Reset = Vss after a high pulse
during at least 24 clock cycles
V
CC
RST
XTAL2
XTAL1
V
SS
V
CC
I
CC
V
CC
Reset = Vss after a high pulse
during at least 24 clock cycles
V
CC
All other pins are disconnected.
VCC-0.5V
0.45V
0.7V
CC
0.2VCC-0.1
T
CLCH
T
CHCL
T
CLCH
= T
CHCL
= 5ns.
Figure 41. ICC Test Condition, Power-Down Mode
AT89/83EB5114
4311C–8051–02/08
Figure 42. Clock Signal Waveform for ICC Tests in Active and Idle Modes
87
DC Parameters for A/D
2 4,Vr ef–()
2 4,3–×10
-------------------------------
Converter
TA = 0°C to +70°C; VSS = 0 V; VCC = 3V to 3,6 V; F = 0 to 24MHz.
TA = -40°C to +85°C; VSS = 0 V; VCC = 3V to 3,6 V; F = 0 to 24MHz.
Table 2. DC Parameters for Low Voltage
SymbolParameterMinTypMaxUnit Test Conditions
Resolution10bit
AVinAnalog input voltageVss - 0.2Vcc + 0.2V
AC Parameters
RrefResistance between Vref and Vss131824
VrefValue of integrated voltage source2.302.402.50V
Vref
Vref Voltage drift over temperature150
drift
Lref Load on integrated voltage source10
CaiAnalog input Capacitance 60pF During sampling
Integral non linearity12lsb
Differential non linearity0.51lsb
Offset error-22lsb
Input source impedance1
KO
hm
uV/
°C
KO
hm
With ideal
external Ref (1)
For 10 bit
KO
resolution at
hm
maximum speed
Note:(1) With lsb = 2.4/1024 = 2.4mV, typical integral linearity is:
Explanation of the AC
Symbols
88
AT89/83EB5114
Each timing symbol has 5 characters. The first character is always a “T” (stands for
Time). The other characters, depending on their positions, stand for the name of a signal or the logical status of that signal. The following is a list of all the characters and
what they stand for.
Example:T
TA = 0 to +70°C (commercial temperature range); VSS = 0 V; 3 V < V
TA = -40°C to +85°C (industrial temperature range); VSS = 0 V; 3 V < V
= Time from clock rising edge to input data valid.
XHDV
3.6 V; -L range.
CC <
3.6 V; -L
CC <
range.
Table 3. gives the maximum applicable load capacitance for Port 1, 3 and 4. Timings will
be guaranteed if these capacitances are respected. Higher capacitance values can be
used, but timings will then be degraded.
Table 3. Load Capacitance versus speed range, in pF
-L
Port 3 & 460
4311C–8051–02/08
External Clock Drive
VCC-0.5 V
0.45 V
0.7VCC
0.2VCC-0.1 V
TCHCL
TCLCX
TCLCL
TCLCH
TCHCX
Characteristics (XTAL1)
AT89/83EB5114
Table 4. Max frequency for Derating Formula Regarding the Speed Grade
-L X1 mode-L X2 mode
Freq (MHz)40
T (ns)2550
1.Oscillator speed is limited to 24 Mhz
SymbolParameterMinMaxUnits
(1)
20
External Clock Drive
Waveforms
A/D Converter
T
CLCL
T
CHCX
T
CLCX
T
CLCH
T
CHCL
T
CHCX/TCLCX
Oscillator Period25ns
High Time5ns
Low Time5ns
Rise Time5ns
Fall Time5ns
Cyclic ratio in X2 mode4060%
Figure 43. External Clock Drive Waveforms
SymbolParameterMinTypMaxUnits
Clock periods (1 for
Conversion time11
sampling, 10 for
conversion)
4311C–8051–02/08
FConv_CkClock Conversion frequency550 (1)kHz
Sampling frequency1050
Notes: 1. For 10 bits resolution
kilo samples per
second
89
PWM Outputs
0.45 V
VCC-0.5 V
0.2VCC+0.9
0.2VCC-0.1
INPUT/OUTPUT
VOL+0.1 V
VOH-0.1 V
FLOAT
VLOADVLOAD+0.1 V
VLOAD-0.1 V
SymbolParameterMinTypMaxUnits
AC Testing Input/Output
Waveforms
TrRise time of PWM outputs60
TfFall time of PWM outputs30
ns (load 300 pF)
Can be slower
ns (300 pF)
Can be slower
Figure 44. AC Testing Input/Output Waveforms
AC inputs during testing are driven at VCC - 0.5 for a logic “1” and 0.45V for a logic “0”.
Timing measurement are made at VIH min for a logic “1” and VIL max for a logic “0”.
Float WaveformsFigure 45. Float Waveforms
For timing purposes as port pin is no longer floating when a 100 mV change from load
voltage occurs and begins to float when a 100 mV change from the loaded VOH/VOL level
occurs. IOL/IOH ≥± 20mA.
Clock WaveformsValid in normal clock mode. In X2 mode XTAL2 signal must be changed to XTAL2
divided by two.
90
AT89/83EB5114
4311C–8051–02/08
Figure 46. Clock Waveforms
CLOCK
XTAL2
INTERNAL
STATE4STATE5
STATE6
STATE1STATE2STATE3STATE4
STATE5
SERIAL PORT SHIFT CLOCK
PORT OPERATION
TXD (MODE 0)
RXD SAMPLEDRXD SAMPLED
P1, P3, P4 PINS SAMPLED
P1, P3, P4 PINS SAMPLED
MOV DEST PORT (P1, P3, P4)
(INCLUDES INT0, INT1, TO, T1)
OLD DATA
NEW DATA
P1P2P1P2
P1P2
P1P2P1P2P1P2
P1P2P1P2
AT89/83EB5114
This diagram indicates when signals are clocked internally. The time it takes the signals
to propagate to the pins, however, ranges from 25 to 125 ns. This propagation delay is
dependent on variables such as temperature and pin loading. Propagation also varies
from output to output and component. Typically though (TA=25°C fully loaded) RD and
WR propagation delays are approximately 50 ns. The other signals are typically 85 ns.
Propagation delays are incorporated in the AC specifications.
4311C–8051–02/08
91
Typical Application
Digital I/O
VCC
R
C
EE
P3.5/W1M0
P3.4/T0/AIN5
NC
PFC control
P3.6
P3.7
NC
VSS
VSS
VSS
VSS
VSS
P3.3/W0M2/AIN4
P3.2/INT0
P3.1/W0M1
P3.0/W0M0
Lamp driver high
Lamp driver low
Over current
NC
P4.3/AIN3
P4.2/AIN2
P4.1/AIN1
P4.0/AIN0
PFC measurement
DC voltage
Lamp detection
Lamp current
Analog I/O
RST
NC
XTAL1
NC
XTAL2
VCC
VREF
Vref
Vssa
Vcca
Figure 47. Typical Application Diagram
92
AT89/83EB5114
4311C–8051–02/08
Ordering Information
Table 5. Possible Order Entries
Part Number
AT83EB5114xxxTGRIL
AT89EB5114-TGSIL
AT83EB5114xxxTGRUL
AT89EB5114-TGSUL
Memory
Size
4Kb ROM3 to 3.6VIndustrial &
4Kb Flash3 to 3.6VIndustrial &
Supply
Voltage
Temperature
RangeMax FrequencyPackagePacking
Green
Green
OBSOLETE
AT89/83EB5114
40 MHzS020
40 MHzSO20
Reel
Stick
4311C–8051–02/08
93
Package Drawings
SO20
Document Revision
History
Changes from 4311B to
4311C
94
AT89/83EB5114
1. Removed non-green part numbers from Ordering Information.
4311C–8051–02/08
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.