N76E616 Datasheet
Nuvoton 1T 8051-based Microcontroller
N76E616
Datasheet
Feb 20, 2016
Page 1 of 179
Rev. 1.01
N76E616 Datasheet
TABLE OF CONTENTS
1. GENERAL DESCRIPTION ............................................................................................................................... 5
2. FEATURES ....................................................................................................................................................... 6
3. BLOCK DIAGRAM ............................................................................................................................................ 8
4. PIN CONFIGURATION ..................................................................................................................................... 9
5. MEMORY ORGANIZATION ........................................................................................................................... 14
5.1 Program Memory .................................................................................................................................... 14
5.2 Data Memory .......................................................................................................................................... 16
5.3 On-Chip XRAM ....................................................................................................................................... 17
5.4 Non-Volatile Data Storage ...................................................................................................................... 18
6. SPECIAL FUNCTION REGISTER (SFR) ....................................................................................................... 19
7. GENERAL 80C51 SYSTEM CONTROL......................................................................................................... 24
8. I/O PORT STRUCTURE AND OPERATION .................................................................................................. 27
8.1 Quasi-Bidirectional Mode ........................................................................................................................ 27
8.2 Push-Pull Mode....................................................................................................................................... 28
8.3 Input-Only Mode ..................................................................................................................................... 29
8.4 Open-Drain Mode ................................................................................................................................... 29
8.5 Read-Modify-Write Instructions .............................................................................................................. 30
8.6 Control Registers of I/O Ports ................................................................................................................. 30
8.6.1 Input and Output Data Control ..................................................................................................... 31
8.6.2 Output Mode Control .................................................................................................................... 32
8.6.3 Input Type and Output Strength Control ...................................................................................... 35
9. TIMER/COUNTER 0 AND 1 ............................................................................................................................ 38
9.1 Mode 0 (13-Bit Timer) ............................................................................................................................. 42
9.2 Mode 1 (16-Bit Timer) ............................................................................................................................. 42
9.3 Mode 2 (8-Bit Auto-Reload Timer) .......................................................................................................... 43
9.4 Mode 3 (Two Separate 8-Bit Timers)...................................................................................................... 43
10. TIMER 2A/2B/2C/2D ..................................................................................................................................... 45
10.1 Auto-Reload Mode ................................................................................................................................ 45
10.2 PWM Mode ........................................................................................................................................... 45
10.3 Control Registers of Timer 2 ................................................................................................................. 47
11. TIMER 3 ........................................................................................................................................................ 53
12. WATCHDOG TIMER (WDT) ......................................................................................................................... 55
12.1 Time-Out Reset Timer .......................................................................................................................... 57
12.2 General Purpose Timer ........................................................................................................................ 58
13. SELF WAKE-UP TIMER (WKT) ................................................................................................................... 60
14. SERIAL PORT (UART) ................................................................................................................................. 62
14.1 Mode 0 .................................................................................................................................................. 66
14.2 Mode 1 .................................................................................................................................................. 67
14.3 Mode 2 .................................................................................................................................................. 68
14.4 Mode 3 .................................................................................................................................................. 70
14.5 Baud Rate ............................................................................................................................................. 70
14.6 Framing Error Detection ....................................................................................................................... 72
14.7 Multiprocessor Communication ............................................................................................................ 72
14.8 Automatic Address Recognition ............................................................................................................ 73
2
15. INTER-INTEGRATED CIRCUIT (I C) ........................................................................................................... 77
15.1 Functional Description .......................................................................................................................... 77
15.1.1 START and STOP Condition ..................................................................................................... 78
15.1.2 7-Bit Address with Data Format ................................................................................................. 79
15.1.3 Acknowledge .............................................................................................................................. 80
15.1.4 Arbitration ................................................................................................................................... 80
Feb 20, 2016
Page 2 of 179
Rev. 1.01
N76E616 Datasheet
2
15.2 Control Registers of I C ........................................................................................................................ 81
15.3 Operating Modes .................................................................................................................................. 85
15.3.1 Master Transmitter Mode ........................................................................................................... 85
15.3.2 Master Receiver Mode ............................................................................................................... 86
15.3.3 Slave Receiver Mode ................................................................................................................. 87
15.3.4 Slave Transmitter Mode ............................................................................................................. 88
15.3.5 General Call ............................................................................................................................... 89
15.3.6 Miscellaneous States ................................................................................................................. 90
2
15.4 Typical Structure of I C Interrupt Service Routine ................................................................................ 91
2
15.5 I C Time-Out ......................................................................................................................................... 94
2
15.6 I C Interrupt ........................................................................................................................................... 95
16. PIN INTERRUPT ........................................................................................................................................... 96
17. 10-BIT ANALOG-TO-DIGITAL CONVERTER (ADC) .................................................................................. 99
17.1 Functional Description .......................................................................................................................... 99
17.1.1 ADC Operation ........................................................................................................................... 99
17.1.2 ADC Conversion Result Comparator ....................................................................................... 100
17.2 Control Registers of ADC ................................................................................................................... 101
18. LCD DRIVER ............................................................................................................................................... 105
18.1 Functional Description ........................................................................................................................ 105
18.2 Control Registers of LCD .................................................................................................................... 112
18.3 LCD Program Flow ............................................................................................................................. 114
19. TIMED ACCESS PROTECTION (TA) ........................................................................................................ 117
20. INTERRUPT SYSTEM ................................................................................................................................ 119
20.1 Interrupt Overview............................................................................................................................... 119
20.2 Enabling Interrupts .............................................................................................................................. 119
20.3 Interrupt Priorities................................................................................................................................ 121
20.4 Interrupt Service.................................................................................................................................. 126
20.5 Interrupt Latency ................................................................................................................................. 126
20.6 External Interrupt Pins ........................................................................................................................ 127
21. IN-APPLICATION-PROGRAMMING (IAP) ................................................................................................ 129
21.1 IAP Commands ................................................................................................................................... 132
21.2 IAP User Guide ................................................................................................................................... 133
21.3 Using Flash Memory as Data Storage ................................................................................................ 133
21.4 In-System-Programming (ISP) ............................................................................................................ 135
22. POWER MANAGEMENT ............................................................................................................................ 140
22.1 Idle Mode ............................................................................................................................................ 141
22.2 Power-Down Mode ............................................................................................................................. 141
23. CLOCK SYSTEM ........................................................................................................................................ 143
23.1 Clock Sources ..................................................................................................................................... 143
23.1.1 Internal Oscillators ................................................................................................................... 144
23.1.2 External Crystal/Resonator or Clock Input ............................................................................... 144
23.2 System Clock Switching ..................................................................................................................... 144
23.3 System Clock Divider .......................................................................................................................... 147
23.4 System Clock Output .......................................................................................................................... 147
24. POWER MONITORING .............................................................................................................................. 149
24.1 Power-On Reset (POR) ...................................................................................................................... 149
24.2 Brown-Out Detection (BOD) ............................................................................................................... 149
25. RESET ......................................................................................................................................................... 154
25.1 Power-On Reset ................................................................................................................................. 154
25.2 Brown-Out Reset ................................................................................................................................ 154
25.3 External Reset .................................................................................................................................... 155
Feb 20, 2016
Page 3 of 179
Rev. 1.01
N76E616 Datasheet
25.4 Watchdog Timer Reset ....................................................................................................................... 156
25.5 Software Reset ................................................................................................................................... 156
25.6 Boot Select.......................................................................................................................................... 157
25.7 Reset State ......................................................................................................................................... 158
26. AUXILIARY FEATURES ............................................................................................................................. 159
26.1 Dual DPTRs ........................................................................................................................................ 159
26.2 96-Bit Unique Code ............................................................................................................................ 160
27. ON-CHIP-DEBUGGER (OCD) .................................................................................................................... 161
27.1 Functional Description ........................................................................................................................ 161
27.2 Limitation of OCD................................................................................................................................ 161
28. IN-CIRCUIT-PROGRAMMING (ICP) .......................................................................................................... 163
29. CONFIG BYTES.......................................................................................................................................... 164
30. INSTRUCTION SET .................................................................................................................................... 167
31. ELECTRICAL CHARACTERISTICS .......................................................................................................... 171
31.1 Absolute Maximum Ratings ................................................................................................................ 171
31.2 D.C. Electrical Characteristics ............................................................................................................ 171
31.3 A.C. Electrical Characteristics ............................................................................................................ 174
31.4 Analog Electrical Characteristics ........................................................................................................ 175
32. PACKAGE DIMENSIONS ........................................................................................................................... 178
33. DOCUMENT REVISION HISTORY ............................................................................................................ 179
Feb 20, 2016
Page 4 of 179
Rev. 1.01
N76E616 Datasheet
1. GENERAL DESCRIPTION
The N76E616 is an embedded flash type, 8-bit high performance 1T 8051-based microcontroller. The
instruction set is fully compatible with the standard 80C51 and performance enhanced.
The N76E616 contains an up to 18K Bytes of main Flash called APROM, in which the contents of
User Code reside. The N76E616 Flash supports In-Application-Programming (IAP) function, which
enables on-chip firmware updates. IAP also makes it possible to configure any block of User Code
array to be used as non-volatile data storage, which is written by IAP and read by IAP or MOVC
instruction. There is an additional Flash called LDROM, in which the Boot Code normally resides for
carrying out In-System-Programming (ISP). The LDROM size is configurable with a maximum of 4K
Bytes. To facilitate programming and verification, the Flash allows to be programmed and read
electronically by parallel Writer or In-Circuit-Programming (ICP). Once the code is confirmed, user can
lock the code for security.
The N76E616 provides rich peripherals including 256 Bytes of SRAM, 256 Bytes of auxiliary RAM
(XRAM), up to 46 general purpose I/O, two 16-bit Timers/Counters 0/1, one 16-bit Timer 2 group with
four auto-reload or PWM timers, one Watchdog Timer (WDT), one Self Wake-up Timer (WKT), one
16-bit auto-reload Timer 3 for general purpose or baud rate generator, two UARTs with frame error
2
detection and automatic address recognition, one I C, eight-channel shared pin interrupt for all I/O,
one 10-bit ADC, and the LCD driver for up to 180 pixels. The peripherals are equipped with 17
sources with 4-level-priority interrupts capability.
The N76E616 is equipped with five clock sources and supports switching on-the-fly via software. The
four clock sources include 2 MHz to 16 MHz high-speed external crystal/resonator, 32.768 kHz lowspeed external crystal/resonator, external clock input, 10 kHz internal oscillator, and one 11.059 MHz
internal precise oscillator that is factory trimmed to ±1% at room temperature. The N76E616 provides
additional power monitoring detection such as power-on reset and 4-level brown-out detection, which
stabilizes the power-on/off sequence for a high reliability system design.
The N76E616 microcontroller operation consumes a very low power with two economic power modes
to reduce power consumption - Idle and Power-down mode, which are software selectable. Idle
mode turns off the CPU clock but allows continuing peripheral operation. Power-down mode stops the
whole system clock for minimum power consumption. The system clock of the N76E616 can also be
slowed down by software clock divider, which allows for flexibility between execution performance and
power consumption.
With high performance CPU core and rich well-designed peripherals, the N76E616 benefits to meet a
general purpose, home appliances, or motor control system accomplishment.
Feb 20, 2016
Page 5 of 179
Rev. 1.01
N76E616 Datasheet
2. FEATURES
CPU:
– Fully static design 8-bit high performance 1T 8051-based CMOS microcontroller.
– Instruction set fully compatible with MCS-51.
– 4-priority-level interrupts capability.
– Dual Data Pointers (DPTRs).
Operating:
– Wide supply voltage from 2.4V to 5.5V.
– Wide operating frequency up to 16 MHz.
– Industrial temperature grade: -40℃ to +105℃.
Memory:
– Up to 18K Bytes of APROM for User Code.
– Configurable 4K/3K/2K/1K/0K Bytes of LDROM, which provides flexibility to user developed
Boot Code.
– Flash Memory accumulated with pages of 256 Bytes each.
– Built-in In-Application-Programmable (IAP).
– Flash Memory 20,000 writing cycle endurance.
– Code lock for security.
– 256 Bytes on-chip RAM.
– Additional 256 Bytes on-chip auxiliary RAM (XRAM) accessed by MOVX instruction.
– UID (unique code).
Clock sources:
– 11.059 MHz high-speed internal oscillator trimmed to ±1%, ±5% in all conditions.
– 10 kHz low-speed internal oscillator.
– 2 MHz to 16 MHz high-speed external crystal/resonator.
– 32.768 kHz low-speed external crystal/resonator.
– External clock input.
– On-the-fly clock source switch via software.
– Programmable system clock divider up to 1/512.
Feb 20, 2016
Page 6 of 179
Rev. 1.01
N76E616 Datasheet
Peripherals:
– Up to 45 general purpose I/O pins and one input-only pin. Four pins provide normal/high
current selected via software.
– Standard interrupt pins ̅̅̅̅̅̅̅ and ̅̅̅̅̅̅̅.
– Two 16-bit Timers/Counters 0 and 1 compatible with standard 8051.
– One 16-bit Timer 2 group with four timers 2A/2B/2C/2D, auto-reload mode and PWM mode
supported.
– One 16-bit auto-reload Timer 3, which can be the baud rate clock source of UARTs.
– One programmable Watchdog Timer (WDT) clocked by 10 kHz internal source, functions as
time-out reset timer or general purpose timer.
– One dedicated Self Wake-up Timer (WKT) for self-timed wake-up for power-reduced modes.
– Two full-duplex UART ports with frame error detection and automatic address recognition.
2
– One I C bus with master and slave modes, up to 400 kbps data rate.
– Eight channels of pin interrupt, shared for all I/O ports, with variable configuration of edge/level
detection.
– One 10-bit ADC, up to 300 ksps sampling rate, with hardware conversion result compare.
– LCD driver with 4 COM / 32 SEG or 6 COM / 30 SEG configuration.
Power management:
– Two power reduced modes: Idle and Power-down mode.
Power monitor:
– Brown-out detection (BOD) with low power mode available, 4-level selection, interrupt or reset
options.
– Power-on reset (POR).
Strong ESD and EFT immunity.
Development Tools:
– Nuvoton On-Chip-Debugger (OCD) with KEIL
TM
development environment.
– Nuvoton In-Circuit-Programmer (ICP).
– Nuvoton In-System-Programming (ISP) via UARTs or Nuvoton ISP programmer.
Part numbers and packages:
Part Number
N76E616AL48
Feb 20, 2016
APROM
LDROM
18K Bytes shared with LDROM
Up to 4K Bytes
Page 7 of 179
Package
LQFP-48
Rev. 1.01
N76E616 Datasheet
3. BLOCK DIAGRAM
Figure 3-1 shows the N76E616 functional block diagram and gives the outline of the device. User can
find all the peripheral functions of the device in the diagram.
OCDDA
OCDCK
OCD
VDD
GND
Power-on Reset
and Brown-out
Detection
1T High
Performance
8051 Core
RST
Max. 18K Bytes
APROM Flash
Timer 0/1
Max. 4K Bytes
LDROM Flash
256 Bytes
XRAM
P0 ~ P5
General Purpose
I/O
8-bit Internal Bus
256 Bytes
Internal RAM
Timer
2A/2B/2C/2D
T0
T1
INT0
INT1
T2AO1
T2AO2
T2BO1
T2BO2
T2CO1
T2CO2
T2DO1
T2DO2
Timer 3
Self Wake-up
Timer
Watchdog Timer
TXD
RXD
TXD_1
RXD_1
AIN0 ~ AIN7
STADC
10-bit ADC
Serial Ports
(UARTs)
COM0 ~ COM5
SEG0 ~ SEG31
LCD Driver
I2C
SDA
SCL
External Interrupt
INT0
INT1
Pin Interrupt
Any I/O Port
System Clock
Power
Managment
XIN
XOUT
2~16 MHz/32 kHz
Oscillating Circuit
Clock Divider
CLO
11.059 MHz/10
kHz Internal RC
Oscillator
Figure 3-1. Function Block Diagram
Feb 20, 2016
Page 8 of 179
Rev. 1.01
N76E616 Datasheet
4. PIN CONFIGURATION
RST/P3.6
OCDCK/ICPCK/P3.5
OCDDA/ICPDA/P3.4
GND
VDD
T0/AIN0/P0.0
INT0/AIN1/P0.1
AIN2/P0.2
AIN3/P0.3
AIN4/P0.4
AIN5/P0.5
AIN6/P0.6
48
47
46
45
44
43
42
41
40
39
38
37
COM0/P1.0
1
36
P0.7/AIN7/CLO/SEG31
COM1/P1.1
2
35
P3.3/XOUT/SEG30
COM2/P1.2
3
34
P3.2/XIN/SEG29
COM3/INT1/P1.3
4
33
P3.1/T2DO2/SEG28
COM4/SEG0/P4.0
5
32
P3.0/T2DO1/SEG27
COM5/SEG1/P4.1
6
31
P5.7/TXD_1/SEG26
SEG2/P4.2
7
30
P5.6/RXD_1/SEG25
SEG3/P4.3
8
29
P5.5/SEG24
SEG4/P4.4
9
28
P5.4/SEG23
SEG5/P4.5
10
27
P5.3/SEG22
SEG6/P4.6
11
26
P5.2/SEG21
SEG7/T1/P1.4
12
25
P5.1/SEG20
N76E616AL48
21
22
23
24
P2.4/SCL/SEG15
P2.5/SEG16
P2.6/T2CO1/SEG17
P2.7/T2CO2/SEG18
P5.0/STADC/SEG19
P2.1/RXD/SEG12
20
17
P2.0/T2BO2/SEG11
P2.3/SDA/SEG14
16
P1.7/T2BO1/SEG10
19
15
P1.6/T2AO2/SEG9
P2.2/TXD/SEG13
14
P1.5/T2AO1/SEG8
18
13
Figure 4-1. Pin Assignment of LQFP-48 Package
Feb 20, 2016
Page 9 of 179
Rev. 1.01
N76E616 Datasheet
Table 4–1. Pin Description
Pin Number
Multi-Function Description[1]
Symbol
LQFP-48
44
45
VDD
GND
P0[7:0]
43
P0.0/AIN0/T0
42
P0.1/AIN1/̅̅̅̅̅̅̅
41
P0.2/AIN2
40
P0.3/AIN3
39
P0.4/AIN4
38
P0.5/AIN5
37
P0.6/AIN6
36
P0.7/AIN7/CLO/SEG31
P1[7:0]
1
P1.0/COM0
2
P1.1/COM1
3
P1.2/COM2
4
P1.3/̅̅̅̅̅̅̅/COM3
12
P1.4/T1/SEG7
13
P1.5/T2AO1/SEG8
14
P1.6/T2AO2/SEG9
15
P1.7/T2BO1/SEG10
Feb 20, 2016
POWER SUPPLY: Supply voltage VDD for operation.
GROUND: Ground potential.
P0: Port 0 is a bit-addressable, 8-bit I/O port. After reset, all pins
are in input-only mode.
P0.0: Port 0 bit 0.
AIN0: ADC input channel 0.
T0: External count input to Timer/Counter 0 or its toggle output.
P0.1: Port 0 bit 1.
AIN1: ADC input channel 1.
̅̅̅̅̅̅̅: External interrupt 0 input.
P0.2: Port 0 bit 2.
AIN2: ADC input channel 2.
P0.3: Port 0 bit 3.
AIN3: ADC input channel 3.
P0.4: Port 0 bit 4.
AIN4: ADC input channel 4.
P0.5: Port 0 bit 5.
AIN5: ADC input channel 5.
P0.6: Port 0 bit 6.
AIN6: ADC input channel 6.
P0.7: Port 0 bit 7.
AIN7: ADC input channel 7.
CLO: System clock output.
SEG31: LCD segment 31 output.
P1: Port 1 is a bit-addressable, 8-bit I/O port. After reset, all pins
are in input-only mode.
P1.0: Port 1 bit 0.
COM0: LCD common 0 output.
P1.1: Port 1 bit 1.
COM1: LCD common 1 output.
P1.2: Port 1 bit 2.
COM2: LCD common 2 output.
P1.3: Port 1 bit 3.
̅̅̅̅̅̅̅: External interrupt 1 input.
COM3: LCD common 3 output.
P1.4: Port 1 bit 4.
T1: External count input to Timer/Counter 1 or its toggle output.
SEG7: LCD segment 7 output.
P1.5: Port 1 bit 5.
T2AO1: Timer 2A output 1.
SEG8: LCD segment 8 output.
P1.6: Port 1 bit 6.
T2AO2: Timer 2A output 2.
SEG9: LCD segment 9 output.
P1.7: Port 1 bit 7.
T2BO1: Timer 2B output 1.
SEG10: LCD segment 10 output.
Page 10 of 179
Rev. 1.01
N76E616 Datasheet
Table 4–1. Pin Description
Pin Number
Multi-Function Description[1]
Symbol
LQFP-48
P2[7:0]
P2: Port 2 is a bit-addressable, 8-bit I/O port. After reset, all pins
are in input-only mode.
P2.0: Port 2 bit 0.
T2BO2: Timer 2B output 2.
SEG11: LCD segment 11 output.
P2.1: Port 2 bit 1.
RXD: Serial port 0 receive input.
SEG12: LCD segment 12 output.
P2.2: Port 2 bit 2.
TXD: Serial port 0 transmit data output.
SEG13: LCD segment 13 output.
P2.3: Port 2 bit 3.
16
P2.0/T2BO2/SEG11
17
P2.1/RXD/SEG12
18
P2.2/TXD/SEG13
19
P2.3/SDA/SEG14
SDA: I C data.
SEG14: LCD segment 14 output.
P2.4: Port 2 bit 4.
20
P2.4/SCL/SEG15
21
P2.5/SEG16
22
P2.6/T2CO1/SEG17
23
P2.7/T2CO2/SEG18
SCL: I C clock.
SEG15: LCD segment 15 output.
P2.5: Port 2 bit 5.
SEG16: LCD segment 16 output.
P2.6: Port 2 bit 6.
T2CO1: Timer 2C output 1.
SEG17: LCD segment 17 output.
P2.7: Port 2 bit 7.
T2CO2: Timer 2C output 2.
SEG18: LCD segment 18 output.
P3: Port 3 is a bit-addressable, 7-bit I/O port. P3.6 is a dedicated
input-only pin if available.
P3.0: Port 3 bit 0.
T2DO1: Timer 2D output 1.
SEG27: LCD segment 27 output.
P3.1: Port 3 bit 1.
T2DO1: Timer 2D output 2.
SEG28: LCD segment 28 output.
P3.2: Port 3 bit 2 available only when HXT, LXT, or ECLK is not
used.
XIN: If HXT or LXT is used, XIN is the input pin to the internal
inverting amplifier. If the ECLK mode is enabled, XIN is the
external clock input pin.
SEG29: LCD segment 29 output.
P3.3: Port 3 bit 3 available when HXT or LXT is not used.
XOUT: If HXT or LXT is used, XOUT is the output pin from the
internal inverting amplifier. It emits the inverted signal of XIN.
SEG30: LCD segment 30 output.
P3.4: Port 3 bit 4.
ICPDA: ICP data input or output.
OCDDA: OCD data input or output.
P3[6:0]
32
P3.0/T2DO1/SEG27
33
P3.1/T2DO2/SEG28
34
P3.2/XIN/SEG29
35
P3.3/XOUT/SEG30
46
P3.4/ICPDA/OCDDA
Feb 20, 2016
2
2
Page 11 of 179
Rev. 1.01
N76E616 Datasheet
Table 4–1. Pin Description
Pin Number
Multi-Function Description[1]
Symbol
LQFP-48
P3.5: Port 3 bit 5.
ICPCK: ICP clock input.
OCDCK: OCD clock input.
P3.6: Port 3 bit 6 input pin available when RPD (CONFIG0.2) is
programmed as 0.
̅̅̅̅̅̅: ̅̅̅̅̅̅ pin is a Schmitt trigger input pin for hardware device
48
P3.6/̅̅̅̅̅̅
reset. A low on this pin resets the device. ̅̅̅̅̅̅ pin has an internal
pull-up resistor allowing power-on reset by simply connecting an
external capacitor to GND.
P4: Port 4 is a byte-addressable, maximum 7-bit I/O port. After
P4[6:0]
reset, all pins are in input-only mode.
P4.0: Port 4 bit 0.
SEG0: LCD segment 0 output.
5
P4.0/SEG0/COM4
COM4: LCD common 4 output.
P4.1: Port 4 bit 1.
SEG1: LCD segment 1 output.
6
P4.1/SEG1/COM5
COM5: LCD common 5 output.
P4.2: Port 4 bit 2.
19
P4.2/SEG2
SEG2: LCD segment 2 output.
P4.3: Port 4 bit 3.
7
P4.3/SEG3
SEG3: LCD segment 3 output.
P4.4: Port 4 bit 4.
8
P4.4/SEG4
SEG4: LCD segment 4 output.
P4.5: Port 4 bit 5.
9
P4.5/SEG5
SEG5: LCD segment 5 output.
P4.6: Port 4 bit 6.
10
P4.6/SEG6
SEG6: LCD segment 6 output.
P5: Port 5 is a bit-addressable, 8-bit I/O port. After reset, all pins
P5[7:0]
are in input-only mode.
P5.0: Port 5 bit 0.
STADC: External start ADC trigger.
24
P5.0/STADC/SEG19
SEG19: LCD segment 19 output.
P5.1: Port 5 bit 1.
25
P5.1/SEG20
SEG20: LCD segment 20 output.
P5.2: Port 5 bit 2.
26
P5.2/SEG21
SEG21: LCD segment 21 output.
P5.3: Port 5 bit 3.
27
P5.3/SEG22
SEG22: LCD segment 22 output.
P5.4: Port 5 bit 4.
28
P5.4/SEG23
SEG23: LCD segment 23 output.
P5.5: Port 5 bit 5.
29
P5.5/SEG24
SEG24: LCD segment 24 output.
P5.6: Port 5 bit 6.
RXD_1: Serial port 1 receive input.
30
P5.6/RXD_1/SEG25
SEG25: LCD segment 25 output.
P5.7: Port 5 bit 7.
TXD_1: Serial port 1 transmit data output.
31
P5.7/TXD_1/SEG26
SEG26: LCD segment 26 output.
[1] All I/O pins can be configured as an interrupt pin. This feature is not listed in multi-function description. See
Section 16. “Pin Interrupt” on page 96.
47
Feb 20, 2016
P3.5/ICPCK/OCDCK
Page 12 of 179
Rev. 1.01
N76E616 Datasheet
VDD
VDD
0.1μF
0.1μF
C1
10μF
XIN
as close to MCU
as possible
R
XOUT
VSS
GND
C2
N76E616
Crystal Frequency
R
2 MHz to 16 MHz
Without
32.768 kHz
Without
as close to the
power source
as possible
C1
C2
Depending on crystal
specifications
Figure 4-2. Application Circuit with External Crystal
Feb 20, 2016
Page 13 of 179
Rev. 1.01
N76E616 Datasheet
5. MEMORY ORGANIZATION
A standard 80C51 based microcontroller divides the memory into two different sections, Program
Memory and Data Memory. The Program Memory is used to store the instruction codes, whereas the
Data Memory is used to store data or variations during the program execution.
The Data Memory occupies a separate address space from Program Memory. In N76E616, there are
256 Bytes of internal scratch-pad RAM. For many applications those need more internal RAM, the
N76E616 provides another on-chip 256 Bytes of RAM, which is called XRAM, accessed by MOVX
instruction.
The whole embedded flash, functioning as Program Memory, is divided into three blocks: Application
ROM (APROM) normally for User Code, Loader ROM (LDROM) normally for Boot Code, and CONFIG
bytes for hardware initialization. Actually, APROM and LDROM function in the same way but have
different size. Each block is accumulated page by page and the page size is 256 Bytes. The flash
control unit supports Erase, Program, and Read modes. The external writer tools though specific I/O
pins, In-Application-Programming (IAP), or In-System-Programming (ISP) can both perform these
modes.
5.1 Program Memory
The Program Memory stores the program codes to execute as shown in Figure 5–1. After any reset,
the CPU begins execution from location 0000H.
To service the interrupts, the interrupt service locations (called interrupt vectors) should be located in
the Program Memory. Each interrupt is assigned with a fixed location in the Program Memory. The
interrupt causes the CPU to jump to that location with where it commences execution of the interrupt
service routine (ISR). External Interrupt 0, for example, is assigned to location 0003H. If External
Interrupt 0 is going to be used, its service routine should begin at location 0003H. If the interrupt is not
going to be used, its service location is available as general purpose Program Memory.
The interrupt service locations are spaced at an interval of eight Bytes: 0003H for External Interrupt 0,
000BH for Timer 0, 0013H for External Interrupt 1, 001BH for Timer 1, etc. If an interrupt service
routine is short enough (as is often the case in control applications), it can reside entirely within the 8Byte interval. However longer service routines should use a JMP instruction to skip over subsequent
interrupt locations if other interrupts are in use.
The N76E616 provides two internal Program Memory blocks APROM and LDROM. Although they
both behave the same as the standard 8051 Program Memory, they play different rules according to
their ROM size. The APROM on N76E616 can be up to 18K Bytes. User Code is normally put inside.
CPU fetches instructions here for execution. The MOVC instruction can also read this region.
Feb 20, 2016
Page 14 of 179
Rev. 1.01
N76E616 Datasheet
The other individual Program Memory block is called LDROM. The normal function of LDROM is to
store the Boot Code for ISP. It can update APROM space and CONFIG bytes. The code in APROM
can also re-program LDROM. For ISP details and configuration bit setting related with APROM and
LDROM, see Section 21.4 “In-System-Programming (ISP)” on page 135. Note that APROM and
LDROM are hardware individual blocks, consequently if CPU re-boots from LDROM, CPU will
automatically re-vector Program Counter 0000H to the LDROM start address. Therefore, CPU
accounts the LDROM as an independent Program Memory and all interrupt vectors are independent
from APROM.
CONFIG1
7
-
Bit
2:0
6
-
5
-
4
-
3
-
2
1
0
LDSIZE[2:0]
R/W
Factory default value: 1111 1111b
Name
Description
LDSIZE[2:0]
LDROM size select
This field selects the size of LDROM.
111 = No LDROM. APROM is 18K Bytes.
110 = LDROM is 1K Bytes. APROM is 17K Bytes.
101 = LDROM is 2K Bytes. APROM is 16K Bytes.
100 = LDROM is 3K Bytes. APROM is 15K Bytes.
0xx = LDROM is 4K Bytes. APROM is 14K Bytes.
37FFH/
3BFFH/
3FFFH/
43FFH/
47FFH[1]
APROM
0FFFH/
0BFFH/
07FFH/
03FFH/
0000H[1]
LDROM
0000H
0000H
BS = 0
BS = 1
[1] The logic boundary addresses of APROM and LDROM are defined
by CONFIG1[2:0].
Figure 5–1. N76E616 Program Memory Map
Feb 20, 2016
Page 15 of 179
Rev. 1.01
N76E616 Datasheet
5.2 Data Memory
Figure 5-2 shows the internal Data Memory spaces available on N76E616. Internal Data Memory
occupies a separate address space from Program Memory. The internal Data Memory can be divided
into three blocks. They are the lower 128 Bytes of RAM, the upper 128 Bytes of RAM, and the 128
Bytes of SFR space. Internal Data Memory addresses are always 8-bit wide, which implies an address
space of only 256 Bytes. Direct addressing higher than 7FH will access the special function registers
(SFRs) space and indirect addressing higher than 7FH will access the upper 128 Bytes of RAM.
Although the SFR space and the upper 128 Bytes of RAM share the same logic address, 80H through
FFH, actually they are physically separate entities. Direct addressing to distinguish with the higher 128
Bytes of RAM can only access these SFRs. Sixteen addresses in SFR space are either byteaddressable or bit-addressable. The bit-addressable SFRs are those whose addresses end in 0H or
8H.
The lower 128 Bytes of internal RAM are present in all 80C51 devices. The lowest 32 Bytes as
general-purpose registers are grouped into 4 banks of 8 registers. Program instructions call these
registers as R0 to R7. Two bits RS0 and RS1 in the Program Status Word (PSW[3:4]) select which
Register Bank is used. It benefits more efficiency of code space, since register instructions are shorter
than instructions that use direct addressing. The next 16 Bytes above the general-purpose registers
(byte-address 20H through 2FH) form a block of bit-addressable memory space (bit-address 00H
through 7FH). The 80C51 instruction set includes a wide selection of single-bit instructions, and the
128 bits in this area can be directly addressed by these instructions. The bit addresses in this area are
00H through 7FH.
Either direct or indirect addressing can access the lower 128 Bytes space. But the upper 128 Bytes
can only be accessed by indirect addressing.
Another application implemented with the whole block of internal 256 Bytes RAM is used for the stack.
This area is selected by the Stack Pointer (SP), which stores the address of the top of the stack.
Whenever a JMP, CALL or interrupt is invoked, the return address is placed on the stack. There is no
restriction as to where the stack can begin in the RAM. By default however, the Stack Pointer contains
07H at reset. User can then change this to any value desired. The SP will point to the last used value.
Therefore, the SP will be incremented and then address saved onto the stack. Conversely, while
popping from the stack the contents will be read first, and then the SP is decreased.
Feb 20, 2016
Page 16 of 179
Rev. 1.01
N76E616 Datasheet
FFH
80H
7FH
Upper 128 Bytes
SFR
Internal RAM
(direct addressing)
(indirect addressing)
00H
Lower 128 Bytes
Internal RAM
(direct or indirect
addressing)
00FFH
256 Bytes XRAM
(MOVX addressing)
0000H
Figure 5-2. Data Memory Map
FFH FFH
Indirect Accessing RAM
80H
7FH
Direct or Indirect Accessing RAM
30H
2FH
2EH
2DH
2CH
2BH
2AH
29H
28H
27H
26H
25H
24H
23H
22H
21H
20H
1FH
18H
17H
General Purpose
Registers
10H
0FH
08H
07H
7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
07
7E
76
6E
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06
7D
75
6D
65
5D
55
4D
45
3D
35
2D
25
1D
15
0D
05
7C
74
6C
64
5C
54
4C
44
3C
34
2C
24
1C
14
0C
04
7B
73
6B
63
5B
53
4B
43
3B
33
2B
23
1B
13
0B
03
7A
72
6A
62
5A
52
4A
42
3A
32
2A
22
1A
12
0A
02
79
71
69
61
59
51
49
41
39
31
29
21
19
11
09
01
78
70
68
60
58
50
48
40
38
30
28
20
18
10
08
00
Bit-addressable
Register Bank 3
Register Bank 2
General Purpose Registers
Register Bank 1
Register Bank 0
00H
00H
Figure 5-3. Internal 256 Bytes RAM Addressing
5.3 On-Chip XRAM
The N76E616 provides additional on-chip 256 bytes auxiliary RAM called XRAM to enlarge the RAM
space. It occupies the address space from 00H through FFH. The 256 bytes of XRAM are indirectly
accessed by move external instruction MOVX @DPTR or MOVX @Ri. (See the demo code below.)
Note that the stack pointer cannot be located in any part of XRAM.
XRAM demo code:
MOV
Feb 20, 2016
R0,#23H
;write #5AH to XRAM with address @23H
Page 17 of 179
Rev. 1.01
N76E616 Datasheet
MOV
MOVX
MOV
MOVX
MOV
MOV
MOVX
MOV
MOVX
A,#5AH
@R0,A
R1,#23H
A,@R1
DPTR,#0023H
A,#5BH
@DPTR,A
DPTR,#0023H
A,@DPTR
;read from XRAM with address @23H
;write #5BH to XRAM with address @0023H
;read from XRAM with address @0023H
5.4 Non-Volatile Data Storage
By applying IAP, any page of APROM or LDROM can be used as non-volatile data storage. For IAP
details, please see Section 21. “In-Application-Programming (IAP)” on page 129.
Feb 20, 2016
Page 18 of 179
Rev. 1.01
N76E616 Datasheet
6. SPECIAL FUNCTION REGISTER (SFR)
The N76E616 uses Special Function Registers (SFRs) to control and monitor peripherals and their
modes. The SFRs reside in the register locations 80 to FFH and are accessed by direct addressing
only. SFRs those end their addresses as 0H or 8H are bit-addressable. It is very useful in cases where
user would like to modify a particular bit directly without changing other bits via bit-field instructions. All
other SFRs are byte-addressable only. The N76E616 contains all the SFRs presenting in the standard
8051. However, some additional SFRs are built in. Therefore, some of unused bytes in the original
8051 have been given new functions. The SFRs are listed below.
To accommodate more than 128 SFRs in the 0x80 to 0xFF address space, SFR paging has been
implemented. By default, all SFR accesses target SFR page 0. During device initialization, some
SFRs located on SFR page 1 may need to be accessed. The register SFRS is used to switch SFR
addressing page. Note that this register has TA write protection. Most of SFRs are available on both
SFR page 0 and 1.
SFRS – SFR Page Selection (TA protected)
7
6
5
4
Address: 91H
Bit
0
3
-
Name
Description
SFRPAGE
SFR page select
0 = Instructions access SFR page 0.
1 = Instructions access SFR page 1.
2
-
1
0
SFRPAGE
R/W
Reset value: 0000 0000b
Switch SFR page demo code:
MOV
MOV
ORL
TA,#0AAH
TA,#55H
SFRS,#01H
;switch to SFR page 1
MOV
MOV
ANL
TA,#0AAH
TA,#55H
SFRS,#0FEH
;switch to SFR page 0
Feb 20, 2016
Page 19 of 179
Rev. 1.01
N76E616 Datasheet
Table 6–1. SFR Memory Map
Page
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Addr
0/8
1/9
2/A
3/B
4/C
LCDDAT
-
5/D
6/E
EIP1
-
7/F
EIPH1
-
F8
SCON_1
LCDCON
LCDCLK
LCDPTR
F0
B
-
ADCAQT
-
-
-
P0DIDS
EIPH
E8
ADCCON0
PICON
PINEN
PIPEN
PIF
PITYP
LCDSEG3
EIP
E0
ACC
ADCCON1
ADCCON2
ADCMPL
ADCMPH
LCDSEG0
LCDSEG1
LCDSEG2
D8
P5
P4
P4M1
P4S
P4M2
-
P5M1
P5S
P5M2
-
-
-
D0
PSW
-
-
-
R2CL
R2CH
R2DL
R2DH
C8
T2CON
T2MOD0
T2MOD1
T2OE
R2AL
R2AH
R2BL
R2BH
C0
I2CON
I2ADDR
ADCRL
ADCRH
T3CON
R3L
R3H
TA
B8
IP
SADEN
SADEN_1
SADDR_1
I2DAT
I2STAT
I2CLK
I2TOC
B0
P3
P0M1
P0S
P0M2
-
P1M1
P1S
IPH
IE
SADDR
WDCON
BODCON1
P2M1
P2S
P3M2
-
P2M2
-
A8
P1M2
P1OS
P3M1
P3S
IAPFD
IAPCN
A0
P2
-
AUXR1
BODCON0
IAPTRG
IAPUEN
IAPAL
IAPAH
98
SCON
SBUF
SBUF_1
EIE
EIE1
-
-
CHPCON
90
P1
SFRS
-
-
-
CKDIV
CKSWT
CKEN
88
TCON
TMOD
TL0
TL1
TH0
TH1
CKCON
WKCON
80
P0
SP
DPL
DPH
-
-
RWK
PCON
-
Unoccupied addresses in the SFR space marked in ‘-‘ are reserved for future use. Accessing
these areas will have an indeterminate effect and should be avoided.
Feb 20, 2016
Page 20 of 179
Rev. 1.01
N76E616 Datasheet
Table 6–2. SFR Definitions and Reset Values
Symbol
Definition
Addr/
page
LCDDAT
LCDPTR
LCDCLK
LCDCON
Extensive interrupt priority
FFH/0
high 1
Extensive interrupt priority
FEH/0
1
LCD data
FCH/0
LCD data pointer
FBH
LCD clock control
FAH
LCD control
F9H
SCON_1
Serial port 1 control
EIPH1
EIP1
P0DIDS
ADCAQT
Extensive interrupt priority
high
P0 digital input disable
ADC acquisition time
B
B register
EIP
LCDSEG3
PITYP
PIF
Extensive interrupt priority
LCD segment 3
Pin interrupt type
Pin interrupt flag
Pin interrupt high
level/rising edge enable
Pin interrupt low
level/falling edge enable
Pin interrupt control
EIPH
PIPEN
PINEN
PICON
F8H
F7H
MSB
LSB
[1]
-
-
-
-
-
-
-
-
LCDEN
(FF)
SM0_1/
FE_1
VLCDADJ
(FE)
SM1_1
SM2_1
REN_1
TB8_1
RB8_1
TI_1
RI_1
PT2DH
-
PT2CH
PWDTH
PT2BH
PT2AH
PPIH
PI2CH
LCDCKS[1:0]
BIAS
(FD)
(FC)
-
PWKTH
PT3H
PSH_1
0000 0000b
-
PWKT
PT3
PS_1
0000 0000b
LCDDAT[5:0]
LCDPTR[4:0]
LCDDIV[2:0]
DUTY[1:0]
RSEL[1:0]
(FB)
(FA)
(F9)
(F8)
0000
0000
0000
0000
0000b
0000b
0000b
0000b
0000 0000b
0000 0000b
F6H
F2H
P07DIDS P06DIDS P05DIDS P04DIDS P03DIDS P02DIDS P01DIDS P00DIDS 0 0 0 0 0 0 0 0 b
ADCAQT[7:0]
0000 0000b
(F7)
(F6)
(F5)
(F4)
(F3)
(F2)
(F1)
(F0)
F0H
0000 0000b
B.7
B.6
B.5
B.4
B.3
B.2
B.1
B.0
EFH
PT2D
PT2C
PWDT
PT2B
PT2A
PPI
PI2C
0000 0000b
EEH SEG31EN SEG30EN SEG29EN SEG28EN SEG27EN SEG26EN SEG25EN SEG24EN 0 0 0 0 0 0 0 0 b
EDH
PIT7
PIT6
PIT5
PIT4
PIT3
PIT2
PIT1
PIT0
0000 0000b
ECH
PIF7
PIF6
PIF5
PIF4
PIF3
PIF2
PIF1
PIF0
0000 0000b
EBH
PIPEN7
PIPEN6
PIPEN5
PIPEN4
PIPEN3
PIPEN2
EAH
PINEN7
PINEN6
PINEN5
PINEN4
PINEN3
E9H
(EF)
(EE)
(ED)
(EC)
(EB)
ADCF
ADCS
ADCHS3
SEG23EN SEG22EN SEG21EN SEG20EN SEG19EN
SEG15EN SEG14EN SEG13EN SEG12EN SEG11EN
SEG7EN SEG6EN SEG5EN SEG4EN SEG3EN
ADCMP[9:2]
ADCMPOP ADCMPEN ADCMPO
ADCDIV[2:0]
(E7)
(E6)
(E5)
(E4)
(E3)
ACC.7
ACC.6
ACC.5
ACC.4
ACC.3
P5M2.7
P5M2.6
P5M2.5
P5M2.4
P5M2.3
P5S.7
P5S.6
P5S.5
P5S.4
P5S.3
P5M1.7
P5M1.6
P5M1.5
P5M1.4
P5M1.3
P4M2.6
P4M2.5
P4M2.4
P4M2.3
P4S.6
P4S.5
P4S.4
P4S.3
P4M1.6
P4M1.5
P4M1.4
P4M1.3
PIPEN1
PIPEN0 0 0 0 0 0 0 0 0 b
PINEN2
PINEN1
PINEN0 0 0 0 0 0 0 0 0 b
(EA)
ADCHS2
SEG18EN
SEG10EN
SEG2EN
PIPS[2:0]
(E9)
ADCHS1
SEG17EN
SEG9EN
SEG1EN
0000 0000b
(E8)
ADCHS0
SEG16EN
SEG8EN
SEG0EN
ADCCON0
ADC control 0
E8H
LCDSEG2
LCDSEG1
LCDSEG0
ADCMPH
ADCMPL
ADCCON2
ADCCON1
LCD segment 2
LCD segment 1
LCD segment 0
ADC compare high byte
ADC compare low byte
ADC control 2
ADC control 1
E7H
E6H
E5H
E4H
E3H
E2H
E1H
ACC
Accumulator
P5M2
P5S
P5M1
P4M2
P4S
P4M1
P5 mode select 2
P5 Schmitt trigger input
P5 mode select 1
P4 mode select 2
P4 Schmitt trigger input
P4 mode select 1
P4
Port 4
D9H
0
P4.6
P4.5
P4.4
P4.3
P4.2
P4.1
P4.0
P5
Port 5
D8H
(DF)
P5.7
(DE)
P5.6
(DD)
P5.5
(DC)
P5.4
(DB)
P5.3
(DA)
P5.2
(D9)
P5.1
(D8)
P5.0
R2DH
R2DL
R2CH
R2CL
Timer 2D reload high byte
Timer 2D reload low byte
Timer 2C reload high byte
Timer 2C reload low byte
D7H
D6H
D5H
D4H
PSW
Program status word
D0H
(D2)
OV
(D1)
-
(D0)
P
R2BH
R2BL
R2AH
R2AL
T2OE
T2MOD1
T2MOD0
Timer 2B reload high byte
Timer 2B reload low byte
Timer 2A reload high byte
Timer 2A reload low byte
Timer 2 output enable
Timer 2 mode 1
Timer 2 mode 0
CFH
CEH
CDH
CCH
CBH
CAH
C9H
T2CON
Timer 2 control
C8H
Feb 20, 2016
[2]
Reset Value
E0H
DDH/0
DCH/1
DCH/0
DBH/0
DAH/1
DAH/0
(D7)
CY
T2DOE2
T2DM
T2BM
(CF)
TF2D
R2DH[7:0]
R2DL[7:0]
R2CH[7:0]
R2CL[7:0]
(D6)
(D5)
(D4)
(D3)
AC
F0
RS1
RS0
R2BH[7:0]
R2BL[7:0]
R2AH[7:0]
R2AL[7:0]
T2DOE1 T2COE2 T2COE1 T2BOE2
T2DPS[2:0]
T2CM
T2BPS[2:0]
T2AM
(CE)
(CD)
(CC)
(CB)
TF2C
TF2B
TF2A
TR2D
Page 21 of 179
(E2)
ACC.2
P5M2.2
P5S.2
P5M1.2
P4M2.2
P4S.2
P4M1.2
ADCMP[1:0]
ADCEX
ADCEN
(E1)
(E0)
ACC.1
ACC.0
P5M2.1
P5M2.0
P5S.1
P5S.0
P5M1.1
P5M1.0
P4M2.1
P4M2.0
P4S.1
P4S.0
P4M1.1
P4M1.0
0000 0000b
0000
0000
0000
0000
0000
0000
0010
0000b
0000b
0000b
0000b
0000b
0000b
0000b
0000 0000b
0000 0000b
0000 0000b
1111 1111b
0000 0000b
0000 0000b
0111 1111b
Output latch,
0111 1111b
Input,
[3]
0XXX XXXXb
Output latch,
1111 1111b
Input,
[3]
XXXX XXXXb
0000 0000b
0000 0000b
0000 0000b
0000 0000b
0000 0000b
0000
0000
0000
0000
T2BOE1 T2AOE2 T2AOE1 0 0 0 0
T2CPS[2:0]
0000
T2APS[2:0]
0000
(CA)
(C9)
(C8)
0000
TR2C
TR2B
TR2A
0000b
0000b
0000b
0000b
0000b
0000b
0000b
0000b
Rev. 1.01
N76E616 Datasheet
Table 6–2. SFR Definitions and Reset Values
Symbol
Definition
TA
R3H
R3L
T3CON
ADCRH
ADCRL
I2ADDR
Timed access protection
Timer 3 reload high byte
Timer 3 reload low byte
Timer 3 control
ADC result high byte
ADC result low byte
2
I C own slave address
I2CON
I C control
2
2
Addr/
page
C7H
C6H
C5H
C4H
C3H
C2H
C1H
C0H
I2TOC
I2CLK
I2STAT
I2DAT
SADDR_1
SADEN_1
SADEN
I C time-out counter
2
I C clock
2
I C status
2
I C data
Slave 1 address
Slave 1 address mask
Slave 0 address mask
BFH
BEH
BDH
BCH
BBH
BAH
B9H
IP
Interrupt priority
B8H
IPH
P2M2
P2S
P2M1
P1OS
P1M2
P1S
P1M1
P0M2
P0S
P0M1
Interrupt priority high
P2 mode select 2
P2 Schmitt trigger input
P2 mode select 1
P1 output strength
P1 mode select 2
P1 Schmitt trigger input
P1 mode select 1
P0 mode select 2
P0 Schmitt trigger input
P0 mode select 1
P3
Port 3
IAPCN
IAPFD
P3M2
P3S
P3M1
IAP control
IAP flash data
P3 mode select 2
P3 Schmitt trigger input
P3 mode select 1
B7H
B6H/0
B5H/1
B5H/0
B4H/1
B4H/0
B3H/1
B3H/0
B2H/0
B1H/1
B1H/0
B0H
MSB
LSB
TA[7:0]
R3H[7:0]
R3L[7:0]
TF3
TR3
SMOD_1 SMOD0_1 BRCK
ADCR[9:2]
I2ADDR[7:1]
(C7)
(C6)
(C4)
(C4)
(C3)
I2CEN
STA
STO
SI
I2CLK[7:0]
I2STAT[7:3]
I2DAT[7:0]
SADDR_1[7:0]
SADEN_1[7:0]
SADEN[7:0]
(BF)
(BE)
(BD)
(BC)
(BB)
PADC
PBOD
PS
PT1
PADCH
PBODH
PSH
PT1H
P2M2.7
P2M2.6
P2M2.5
P2M2.4
P2M2.3
P2S.7
P2S.6
P2S.5
P2S.4
P2S.3
P2M1.7
P2M1.6
P2M1.5
P2M1.4
P2M1.3
P1OS.3
P1M2.7
P1M2.6
P1M2.5
P1M2.4
P1M2.3
P1S.7
P1S.6
P1S.5
P1S.4
P1S.3
P1M1.7
P1M1.6
P1M1.5
P1M1.4
P1M1.3
P0M2.7
P0M2.6
P0M2.5
P0M2.4
P0M2.3
P0S.7
P0S.6
P0S.5
P0S.4
P0S.3
P0M1.7
P0M1.6
P0M1.5
P0M1.4
P0M1.3
(DF)
0
(DE)
P3.6
(DB)
P3.3
CLOEN
T1OE
P36UP
P3S.6
T0OE
P3M2.5
P3S.5
P3M1.5
Brown-out detection
control 1
ABH
-
-
-
-
-
WDCON
Watchdog Timer control
AAH
WDTEN
WDCLR
WDTF
WIDPD
WDTRF
SADDR
Slave 0 address
A9H
IE
Interrupt enable
A8H
(AF)
EA
(AE)
EADC
(AD)
EBOD
IAPAH
IAPAL
IAP address high byte
IAP address low byte
IAP update enable
A7H
A6H
A5H
-
-
-
IAP trigger
A4H
-
-
-
Brown-out detection
control 0
A3H
-
BOV[1:0]
[4]
[4]
[4]
IAPUEN
[4]
IAPTRG
[4]
BODCON0
Feb 20, 2016
BODEN
[5]
FOEN
(DC)
P3.4
AFH
AEH
ADH/0
ACH/1
ACH/0
BODCON1
IAPA[17:16]
(DD)
P3.5
FCEN
IAPFD[7:0]
P3M2.4
P3M2.3
P3S.4
P3S.3
P3M1.4
P3M1.3
SADDR[7:0]
(AC)
(AB)
ES
ET1
IAPA[15:8]
IAPA[7:0]
-
[5]
Page 22 of 179
-
[6]
BOF
[1]
T3PS[2:0]
(C2)
AA
I2TOCEN
ADCR[1:0]
GC
(C1)
(C0)
DIV
I2TOF
0
0
0
(BA)
PX1
PX1H
P2M2.2
P2S.2
P2M1.2
P1OS.3
P1M2.2
P1S.2
P1M1.2
P0M2.2
P0S.2
P0M1.2
(B9)
PT0
PT0H
P2M2.1
P2S.1
P2M1.1
P1OS.1
P1M2.1
P1S.1
P1M1.1
P0M2.1
P0S.1
P0M1.1
(B8)
PX0
PX0H
P2M2.0
P2S.0
P2M1.0
P1OS.0
P1M2.0
P1S.0
P1M1.0
P0M2.0
P0S.0
P0M1.0
-
-
IAPGO
[2]
Reset Value
0000
0000
0000
0000
0000
0000
0000
0000b
0000b
0000b
0000b
0000b
0000b
0000b
0000 0000b
0000
0000
1111
0000
0000
0000
0000
0000b
1110b
1000b
0000b
0000b
0000b
0000b
0000 0000b
0000 0000b
0000 0000b
0000 0000b
1111 1111b
0000 0000b
0000 0000b
0000 0000b
1111 1111b
0000 0000b
0000 0000b
1111 1111b
Output latch,
0011 1111b
(DA)
(D9)
(D8)
Input,
P3.2
P3.1
P3.0
[3]
0XXX XXXXb
FCTRL[3:0]
0011 0000b
0000 0000b
P3M2.2
P3M2.1
P3M2.0 0 0 0 0 0 0 0 0 b
P3S.2
P3S.1
P3S.0 0 0 0 0 0 0 0 0 b
P3M1.2
P3M1.1
P3M1.0 0 0 1 1 1 1 1 1 b
POR,
0000 0001b
LPBOD[1:0]
BODFLT
Others,
0000 0UUUb
POR,
0000 0111b
WDT,
WDPS[2:0]
0000 1UUUb
Others,
0 0 00 U U U U b
0000 0000b
(AA)
(A9)
(A8)
0000 0000b
EX1
ET0
EX0
0000 0000b
0000 0000b
CFUEN
LDUEN
APUEN 0 0 0 0 0 0 0 0 b
BORST
[5]
BORF
BOS
[7]
0000 0000b
POR,
C0CC XC 0Xb
BOD,
U0UU XU 1Xb
Others,
U0UU XUUXb
Rev. 1.01
N76E616 Datasheet
Table 6–2. SFR Definitions and Reset Values
Symbol
Definition
Addr/
page
MSB
LSB
[1]
[2]
Reset Value
POR,
0000 0000b
Software,
1U00 0000b
̅̅̅̅̅̅ pin,
U100 0000b
Others,
UU00 0000b
Output latch,
1111 1111b
Input,
[3]
XXXX XXXXb
Software,
0000 00U0b
Others,
0000 00C0b
AUXR1
Auxiliary register 1
A2H
SWRF
RSTPINF
T1LXTM
T0LXTM
GF2
-
0
DPS
P2
Port 2
A0H
(A7)
P2.7
(A6)
P2.6
(A5)
P2.5
(A4)
P2.4
(A3)
P2.3
(A2)
P2.2
(A1)
P2.1
(A0)
P2.0
Chip control
9FH
SWRST
IAPFF
-
-
-
-
9CH
-
-
-
-
-
EWKT
ET3
ES_1
0000 0000b
9BH
9AH
99H
ET2D
-
ET2C
ET2A
EPI
EI2C
0000 0000b
0000 0000b
0000 0000b
(9A)
RB8
-
(99)
TI
-
(98)
0000 0000b
RI
CKSWTF 0 0 1 1 0 0 0 0 b
OSC[2:0]
0011 0000b
0000 0000b
SFRPSEL 0 0 0 0 0 0 0 0 b
Output latch,
1111 1111b
(90)
Input,
P1.0
[3]
XXXX XXXXb
CHPCON
[4]
EIE
SBUF_1
SBUF
Extensive interrupt enable
1
Extensive interrupt enable
Serial port 1 data buffer
Serial port 0 data buffer
SCON
Serial port 0 control
98H
Clock enable
97H
Clock switch
Clock divider
SFR page selection
96H
95H
91H
Port 1
Self Wake-up Timer
control
Clock control
Timer 1 high byte
Timer 0 high byte
Timer 1 low byte
Timer 0 low byte
Timer 0 and 1 mode
EIE1
CKEN
[4]
CKSWT
CKDIV
SFRS
[4]
[4]
P1
WKCON
CKCON
TH1
TH0
TL1
TL0
TMOD
(9F)
(9E)
SM0/FE
SM1
EXTEN[1:0]
(9D)
SM2
HIRCEN
HXTST
LXTST
HIRCST
-
-
-
90H
(97)
P1.7
(96)
P1.6
(95)
P1.5
(94)
P1.4
(93)
P1.3
8FH
-
-
WKTCKS
WKTF
WKTR
8EH
8DH
8CH
8BH
8AH
89H
-
-
-
GATE
(8F)
TF1
(8E)
TR1
M1
(8D)
TF0
SMOD
SMOD0
-
TCON
Timer 0 and 1control
88H
PCON
Power control
87H
DPH
DPL
SP
Self Wake-up Timer
reload byte
Data pointer high byte
Data pointer low byte
Stack pointer
P0
Port 0
RWK
EWDT
ET2B
SBUF_1[7:0]
SBUF[7:0]
(9C)
(9B)
REN
TB8
-
̅
ECLKST
CKDIV[7:0]
-
T1M
T0M
TH1[7:0]
TH0[7:0]
TL1[7:0]
TL0[7:0]
M0
GATE
(8C)
(8B)
TR0
IE1
POF
GF1
BS
[5]
-
-
(92)
P1.2
(91)
P1.1
IAPEN
WKPS[2:0]
-
0000 0000b
-
-
(8A)
IT1
M1
(89)
IE0
M0
(88)
IT0
GF0
PD
IDL
̅
0000
0000
0000
0000
0000
0000
0000b
0000b
0000b
0000b
0000b
0000b
0000 0000b
POR,
0001 0000b
Others,
000U 0000b
86H
RWK[7:0]
0000 0000b
83H
82H
81H
DPTR[15:8]
DPTR[7:0]
SP[7:0]
0000 0000b
0000 0000b
0000 0111b
Output latch,
1111 1111b
Input,
[3]
XXXX XXXXb
80H
(87)
P0.7
(86)
P0.6
(85)
P0.5
(84)
P0.4
(83)
P0.3
(82)
P0.2
(81)
P0.1
(80)
P0.0
[1] ( ) item means the bit address in bit-addressable SFRs.
[2] Reset value symbol description. 0: logic 0; 1: logic 1; U: unchanged; C: see [5]; X: see [3], [6], and [7].
[3] All I/O pins are default input-only mode (floating) after reset. Reading back P3.6 is always 0 if RPD
(CONFIG0.2) remains un-programmed 1.
[4] These SFRs have TA protected writing. See Section 19. “Timed Access Protection (TA)” on page 117.
[5] These SFRs have bits those are initialized according to CONFIG values after specified resets. See Section 29.
“CONFIG Bytes” on page 164 for details.
[6] BOF reset value depends on different setting of CONFIG2 and V DD voltage level. Please check Table 24–1.
[7] BOS is a read-only flag decided by VDD level while brown-out detection is enabled.
Bits marked in ‘-‘ are reserved for future use. They must be kept in their own initial states.
Accessing these bits may cause an unpredictable effect.
Feb 20, 2016
Page 23 of 179
Rev. 1.01
N76E616 Datasheet
7. GENERAL 80C51 SYSTEM CONTROL
A or ACC – Accumulator (Bit-addressable)
7
6
5
4
ACC.7
ACC.6
ACC.5
ACC.4
R/W
R/W
R/W
R/W
Address: E0H
Bit
7:0
7:0
2
ACC.2
R/W
1
0
ACC.1
ACC.0
R/W
R/W
Reset value: 0000 0000b
Name
Description
ACC[7:0]
Accumulator
The A or ACC register is the standard 80C51 accumulator for arithmetic operation.
B – B Register (Bit-addressable)
7
6
5
B.7
B.6
B.5
R/W
R/W
R/W
Address: F0H
Bit
3
ACC.3
R/W
Name
B[7:0]
4
B.4
R/W
3
B.3
R/W
2
B.2
R/W
1
0
B.1
B.0
R/W
R/W
Reset value: 0000 0000b
Description
B register
The B register is the other accumulator of the standard 80C51 .It is used mainly
for MUL and DIV instructions.
SP – Stack Pointer
7
6
5
4
3
2
1
0
SP[7:0]
R/W
Address: 81H
Bit
7:0
Reset value: 0000 0111b
Name
SP[7:0]
Description
Stack pointer
The Stack Pointer stores the scratch-pad RAM address where the stack begins. It
is incremented before data is stored during PUSH or CALL instructions. Note that
the default value of SP is 07H. It causes the stack to begin at location 08H.
DPL – Data Pointer Low Byte
7
6
5
4
3
2
1
0
DPL[7:0]
R/W
Address: 82H
Bit
7:0
Feb 20, 2016
Reset value: 0000 0000b
Name
Description
DPL[7:0]
Data pointer low byte
This is the low byte of 16-bit data pointer. DPL combined with DPH serve as a 16bit data pointer DPTR to access indirect addressed RAM or Program Memory.
DPS (AUXR1.0) bit decides which data pointer, DPTR or DPTR1, is activated.
Page 24 of 179
Rev. 1.01
N76E616 Datasheet
DPH – Data Pointer High Byte
7
6
5
4
3
2
1
0
DPH[7:0]
R/W
Address: 83H
Bit
7:0
Reset value: 0000 0000b
Name
Description
DPH[7:0]
Data pointer high byte
This is the high byte of 16-bit data pointer. DPH combined with DPL serve as a
16-bit data pointer DPTR to access indirect addressed RAM or Program Memory.
DPS (AUXR1.0) bit decides which data pointer, DPTR or DPTR1, is activated.
PSW – Program Status Word (Bit-addressable)
7
6
5
4
CY
AC
F0
RS1
R/W
R/W
R/W
R/W
Address: D0H
Bit
Name
3
RS0
R/W
2
OV
R/W
1
0
F1
P
R/W
R
Reset value: 0000 0000b
Description
7
CY
Carry flag
For a adding or subtracting operation, CY will be set when the previous operation
resulted in a carry-out from or a borrow-in to the Most Significant bit, otherwise
cleared.
If the previous operation is MUL or DIV, CY is always 0.
CY is affected by DA A instruction, which indicates that if the original BCD sum is
greater than 100.
For a CJNE branch, CY will be set if the first unsigned integer value is less than
the second one. Otherwise, CY will be cleared.
6
AC
Auxiliary carry
Set when the previous operation resulted in a carry-out from or a borrow-in to the
4th bit of the low order nibble, otherwise cleared.
5
F0
User flag 0
The general-purpose flag that can be set or cleared by user.
4
RS1
3
RS0
2
OV
Feb 20, 2016
Register bank selection bits
These two bits select one of four banks in which R0 to R7 locate.
RS1 RS0 Register Bank
RAM Address
0
0
0
00H to 07H
0
1
1
08H to 0FH
1
0
2
10H to 17H
1
1
3
18H to 1FH
Overflow flag
OV is used for a signed character operands. For an ADD or ADDC instruction, OV
will be set if there is a carry out of bit 6 but not out of bit 7, or a carry out of bit 7
but not bit 6. Otherwise, OV is cleared. OV indicates a negative number produced
as the sum of two positive operands or a positive sum from two negative
operands. For a SUBB, OV is set if a borrow is needed into bit6 but not into bit 7,
or into bit7 but not bit 6. Otherwise, OV is cleared. OV indicates a negative
number produced when a negative value is subtracted from a positive value, or a
positive result when a positive number is subtracted from a negative number.
For a MUL, if the product is greater than 255 (00FFH), OV will be set. Otherwise, it
is cleared.
For a DIV, it is normally 0. However, if B had originally contained 00H, the values
returned in A and B will be undefined. Meanwhile, the OV will be set.
Page 25 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
1
F1
User flag 1
The general-purpose flag that can be set or cleared by user via software.
0
P
Parity flag
Set to 1 to indicate an odd number of ones in the accumulator. Cleared for an
even number of ones. It performs even parity check.
Table 7–1. Instructions That Affect Flag Settings
Instruction
CY
[1]
ADD
X
OV
AC
Instruction
CY
X
X
CLR C
0
ADDC
X
X
X
CPL C
X
SUBB
X
X
X
ANL C, bit
X
MUL
0
X
ANL C, /bit
X
DIV
0
X
ORL C, bit
X
DA A
X
ORL C, /bit
X
RRC A
X
MOV C, bit
X
RLC A
X
CJNE
X
SETB C
1
OV
AC
[1] X indicates the modification depends on the result of the instruction.
PCON – Power Control
7
6
SMOD
SMOD0
R/W
R/W
Address: 87H
Bit
Name
5
-
4
3
2
1
0
POF
GF1
GF0
PD
IDL
R/W
R/W
R/W
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
3
GF1
General purpose flag 1
The general-purpose flag that can be set or cleared by user via software.
2
GF0
General purpose flag 0
The general-purpose flag that can be set or cleared by user via software.
Feb 20, 2016
Page 26 of 179
Rev. 1.01
N76E616 Datasheet
8. I/O PORT STRUCTURE AND OPERATION
The N76E616 has a maximum of 26 bit-addressable general I/O pins grouped as 6 ports, P0 to P5.
Each port has its port control register (Px register). The writing and reading of a port control register
have different meanings. A write to port control register sets the port output latch logic value, whereas
a read gets the port pin logic state. All I/O pins (except P3.6) can be configured individually as one of
four I/O modes by software. These four modes are quasi-bidirectional (standard 8051 port structure),
push-pull, input-only, and open-drain modes. Each port spends two special function registers PxM1
and PxM2 to select the I/O mode of port Px. The list below illustrates how to select the I/O mode of
Px.n. Note that the default configuration of is input-only (high-impedance) after any reset.
Table 8–1. Configuration for Different I/O Modes
PxM1.n
PxM2.n
I/O Type
0
0
Quasi-bidirectional
0
1
Push-pull
1
0
Input-only (high-impedance)
1
1
Open-drain
All I/O pins can be selected as TTL level inputs or Schmitt triggered inputs by selecting corresponding
bit in PxS register. Schmitt triggered input has better glitch suppression capability.
There are four I/O pins support large source and sink current, including P1.0 to P1.3. By default, they
have the same output capability as other I/O pins. By setting corresponding bits in P1OS register, they
can be individually configured as high output capability. It is suitable to drive LED or large loading
without additional BJT devices.
P3.6 is configured as an input-only pin when programming RPD (CONFIG0.2) as 0. Meanwhile, P3.6
is permanent in input-only mode and Schmitt triggered type. P3.6 also has an internal pull-up enabled
by P36UP (P3M2.6). If RPD remains un-programmed, P3.6 pin functions as an external reset pin and
P3.6 is not available. A read of P3.6 bit is always 0. Meanwhile, the internal pull-up is always enabled.
8.1 Quasi-Bidirectional Mode
The quasi-bidirectional mode, as the standard 8051 I/O structure, can rule as both input and output.
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 large current. In the quasibidirectional I/O structure, there are three pull-high transistors. Each of them serves different
purposes. One of these pull-highs, called the “very weak” pull-high, is turned on whenever the port
latch contains logic 1. he “very weak” pull-high sources a very small current that will pull the pin high
if it is left floating.
Feb 20, 2016
Page 27 of 179
Rev. 1.01
N76E616 Datasheet
A second pull-high, called the “weak” pull-high, is turned on when the outside port pin itself is at logic 1
level. This pull-high provides the primary source current for a quasi-bidirectional pin that is outputting
1. If a pin which has logic 1 on it is pulled low by an external device, the “weak” pull-high turns off, and
only the “very weak” pull-high remains on. To pull the pin low under these conditions, the external
device has to sink enough current (larger than ITL) to overcome the “weak” pull-high and make the
voltage on the port pin below its input threshold (lower than VIL).
The third pull-high is the “strong” pull-high. This pull-high is used to speed up 0-to-1 transitions on a
quasi-bidirectional port pin when the port latch changes from logic 0 to logic 1. When this occurs, the
strong pull-high turns on for two-CPU-clock time to pull the port pin high quickly. Then it turns off and
“weak” and “very weak” pull-highs continue remaining the port pin high. The quasi-bidirectional port
structure is shown as follows.
VDD
2-CPU-Clock
Delay
P
Strong
P
Very
Weak
P
Weak
Port Pin
Port Latch
N
Input
Figure 8-1. Quasi-Bidirectional Mode Structure
8.2 Push-Pull Mode
The push-pull mode has the same pull-low structure as the quasi-bidirectional mode, but provides a
continuous strong pull-high when the port latch is written by logic 1. The push-pull mode is generally
used as output pin when more source current is needed for an output driving.
Feb 20, 2016
Page 28 of 179
Rev. 1.01
N76E616 Datasheet
VDD
P
Strong
Port Pin
N
Port Latch
Input
Figure 8-2. Push-Pull Mode Structure
8.3 Input-Only Mode
Input-only mode provides true high-impedance input path. Although a quasi-bidirectional mode I/O can
also be an input pin, but it requires relative strong input source. Input-only mode also benefits to power
consumption reduction for logic 0 input always consumes current from VDD if in quasi-bidirectional
mode. User needs to take care that an input-only mode pin should be given with a determined voltage
level by external devices or resistors. A floating pin will induce leakage current especially in Powerdown mode.
Input
Port Pin
Figure 8-3. Input-Only Mode Structure
8.4 Open-Drain Mode
The open-drain mode turns off all pull-high transistors and only drives the pull-low of the port pin when
the port latch is given by logic 0. If the port latch is logic 1, it behaves as if in input-only mode. To be
2
used as an output pin generally as I C lines, an open-drain pin should add an external pull-high,
typically a resistor tied to VDD. User needs to take care that an open-drain pin with its port latch as
logic 1 should be given with a determined voltage level by external devices or resistors. A floating pin
will induce leakage current especially in Power-down mode.
Feb 20, 2016
Page 29 of 179
Rev. 1.01
N76E616 Datasheet
Port Pin
N
Port Latch
Input
Figure 8-4. Open-Drain Mode Structure
8.5 Read-Modify-Write Instructions
Instructions that read a byte from SFR or internal RAM, modify it, and rewrite it back, are called “ eadModify-Write” instructions. When the destination is an O port or a port bit, these instructions read the
internal output latch rather than the external pin state. This kind of instructions read the port SFR
value, modify it and write back to the port SFR. All “Read-Modify-Write” instructions are listed as
follows.
Instruction
Description
ANL
Logical AND. (ANL direct, A and ANL direct, #data)
ORL
Logical OR. (ORL direct, A and ORL direct, #data)
XRL
Logical exclusive OR. (XRL direct, A and XRL direct, #data)
JBC
Jump if bit = 1 and clear it. (JBC bit, rel)
CPL
Complement bit. (CPL bit)
INC
Increment. (INC direct)
DEC
Decrement. (DEC direct)
DJNZ
Decrement and jump if not zero. (DJNZ direct, rel)
MOV
bit, C
Move carry to bit. (MOV bit, C)
CLR
bit
Clear bit. (CLR bit)
SETB
bit
Set bit. (SETB bit)
The last three seem not obviously “Read-Modify-Write” instructions but actually they are. They read
the entire port latch value, modify the changed bit, and then write the new value back to the port latch.
8.6 Control Registers of I/O Ports
The N76E616 has a lot of I/O control registers to provide flexibility in all kind of applications. The SFRs
related with I/O ports can be categorized into three groups: input and output control, output mode
control, and input type and sink current control. All of SFRs are listed as follows.
Feb 20, 2016
Page 30 of 179
Rev. 1.01
N76E616 Datasheet
8.6.1 Input and Output Data Control
These registers are I/O input and output data buffers. Reading gets the I/O input data. Writing forces
the data output. All of these registers are bit-addressable.
P0 – Port 0 (Bit-addressable)
7
6
5
P0.7
P0.6
P0.5
R/W
R/W
R/W
Address: 80H
Bit
Name
7:0
P0[7:0]
Name
7:0
P1[7:0]
Name
7:0
P2[7:0]
Name
7
0
6
P3.6
Feb 20, 2016
1
0
P0.1
P0.0
R/W
R/W
Reset value: 1111 1111b
4
P1.4
R/W
3
P1.3
R/W
2
P1.2
R/W
1
0
P1.1
P1.0
R/W
R/W
Reset value: 1111 1111b
2
P2.2
R/W
1
0
P2.1
P2.0
R/W
R/W
Reset value: 1111 1111b
2
P3.2
R/W
1
0
P31
P3.0
R/W
R/W
Reset value: 0011 1111b
Description
Port 1
Port 1 is an 8-bit general purpose I/O port.
4
P2.4
R/W
3
P2.3
R/W
Description
Port 2
Port 2 is an 8-bit general-purpose I/O port.
P3 – Port 3 (Bit-addressable)
7
6
5
0
P3.6
P3.5
R
R
R/W
Address: B0H
Bit
2
P0.2
R/W
Port 0
Port 0 is an 8-bit general-purpose I/O port.
P2 – Port 2 (Bit-addressable)
7
6
5
P2.7
P2.6
P2.5
R/W
R/W
R/W
Address: A0H
Bit
3
P0.3
R/W
Description
P1 – Port 1 (Bit-addressable)
7
6
5
P1.7
P1.6
P1.5
R/W
R/W
R/W
Address: 90H
Bit
4
P0.4
R/W
4
P3.4
R/W
3
P3.3
R/W
Description
Reserved
This bit is always read as 0.
Port 3 bit 6
P3.6 is an input-only pin when RPD (CONFIG0.2) is programmed as 0. When
leaving RPD un-programmed, P3.6 is always read as 0.
Page 31 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
5
P3.5
Port 3 bit 5
P3.5 is a general-purpose I/O pin, multi-function shared with ICPCK and OCDCK.
4
P3.4
Port 3 bit 4
P3.4 is a general-purpose I/O pin, multi-function shared with ICPDA and OCDDA.
3
P3.3
Port 3 bit 3
P3.3 is available when HXT or LXT is not used. At this moment, P3.3 functions as
a general purpose I/O.
If HXT or LXT is used, P3.3 pin functions as XOUT. A write to P3.3 is invalid and
P3.3 is always read as 0.
2
P3.2
Port 3 bit 2
P3.2 is available only when HXT, LXT, or ECLK is not used. At this moment, P3.2
functions as a general purpose I/O.
If HXT, LXT, or ECLK is used, P3.2 pin functions as XIN. A write to P3.2 is invalid
and P3.2 is always read as 0.
1
P3.1
Port 3 bit 1
P3.1 is a general-purpose I/O pin, multi-function shared with T2DO2 and SEG28.
0
P3.0
Port 3 bit 0
P3.0 is a general-purpose I/O pin, multi-function shared with T2DO1 and SEG27.
P4 – Port 4
7
0
R
Address: D9H
Bit
6
P4.6
R/W
5
P4.5
R/W
Name
Description
7
-
6:0
P4[6:0]
7:0
Name
P5[7:0]
3
P4.3
R/W
2
P4.2
R/W
1
0
P4.1
P4.0
R/W
R/W
Reset value: 0111 1111b
2
P5.2
R/W
1
0
P5.1
P5.0
R/W
R/W
Reset value: 1111 1111b
Reserved
This bit is always read as 0.
Port 4
Port 4 is a 7-bit general-purpose I/O port.
P5 – Port 5 (Bit-addressable)
7
6
5
P5.7
P5.6
P5.5
R/W
R/W
R/W
Address: D8H
Bit
4
P4.4
R/W
4
P5.4
R/W
3
P5.3
R/W
Description
Port 5
Port 5 is an 8-bit general-purpose I/O port.
8.6.2 Output Mode Control
These registers controls output mode, which is configurable among four modes: input-only, quasibidirectional, push-pull, or open-drain. Each pin can be configured individually. There is also a pull-up
control for P3.6 in P3M6.2.
Feb 20, 2016
Page 32 of 179
Rev. 1.01
N76E616 Datasheet
P0M1 – Port 0 Mode Select 1[1]
7
6
5
P0M1.7
P0M1.6
P0M1.5
R/W
R/W
R/W
Address: B1H, Page: 0
Bit
7:0
Name
Description
P0M1[7:0]
Port 0 mode select 1
P0M2 – Port 0 Mode Select 2[1]
7
6
5
P0M2.7
P0M2.6
P0M2.5
R/W
R/W
R/W
Address: B2H, Page: 0
Bit
4
P0M1.4
R/W
Name
4
P0M2.4
R/W
3
P0M1.3
R/W
2
P0M1.2
R/W
1
0
P0M1.1
P0M1.0
R/W
R/W
Reset value: 1111 1111b
3
P0M2.3
R/W
2
P0M2.2
R/W
1
0
P0M2.1
P0M2.0
R/W
R/W
Reset value: 0000 0000b
Description
7:0
P0M2[7:0] Port 0 mode select 2
[1] P0M1 and P0M2 are used in combination to determine the I/O mode of each pin of P0. See Table 8–1.
Configuration for Different I/O Modes.
P1M1 – Port 1 Mode Select 1[2]
7
6
5
P1M1.7
P1M1.6
P1M1.5
R/W
R/W
R/W
Address: B3H, Page: 0
Bit
7:0
Name
Description
P1M1[7:0]
Port 1 mode select 1
P1M2 – Port 1 Mode Select 2[2]
7
6
5
P1M2.7
P1M2.6
P1M2.5
R/W
R/W
R/W
Address: B4H, Page: 0
Bit
4
P1M1.4
R/W
Name
4
P1M2.4
R/W
3
P1M1.3
R/W
2
P1M1.2
R/W
1
0
P1M1.1
P1M1.0
R/W
R/W
Reset value: 1111 1111b
3
P1M2.3
R/W
2
P1M2.2
R/W
1
0
P1M2.1
P1M2.0
R/W
R/W
Reset value: 0000 0000b
Description
7:0
P1M2[7:0] Port 1 mode select 2
[2] P1M1 and P1M2 are used in combination to determine the I/O mode of each pin of P1. See Table 8–1.
Configuration for Different I/O Modes.
P2M1 – Port 2 Mode Select 1[3]
7
6
5
P2M1.7
P2M1.6
P2M1.5
R/W
R/W
R/W
Address: B5H, Page: 0
Bit
7:0
Feb 20, 2016
4
P2M1.4
R/W
Name
Description
P2M1[7:0]
Port 2 mode select 1
3
P2M1.3
R/W
Page 33 of 179
2
P2M1.2
R/W
1
0
P2M1.1
P2M1.0
R/W
R/W
Reset value: 0111 1111b
Rev. 1.01
N76E616 Datasheet
P2M2 – Port 2 Mode Select 2[3]
7
6
5
P2M2.7
P2M2.6
P2M2.5
R/W
R/W
R/W
Address: B6H, Page: 0
Bit
Name
4
P2M2.4
R/W
3
P2M2.3
R/W
2
P2M2.2
R/W
1
0
P2M2.1
P2M2.0
R/W
R/W
Reset value: 0000 0000b
Description
7:0
P2M2[7:0] Port 2 mode select 2
[3] P2M1 and P2M2 are used in combination to determine the I/O mode of each pin of P2. See Table 8–1.
Configuration for Different I/O Modes.
P3M1 – Port 3 Mode Select 1
7
6
5
T1OE
T0OE
P3M1.5[4]
R/W
R/W
R/W
Address: ACH, Page: 0
Bit
5:0
Name
Description
P3M1[5:0]
Port 3 mode select 1
P3M2 – Port 3 Mode Select 2
7
6
5
CLOEN
P36UP
P3M2.5[4]
R/W
R/W
R/W
Address: ADH, Page: 0
Bit
Name
6
4
P3M1.4[4]
R/W
P36UP
4
P3M2.4[4]
R/W
3
P3M1.3[4]
R/W
2
P3M1.2[4]
R/W
1
0
P3M1.1[4]
P3M1.0[4]
R/W
R/W
Reset value: 0000 0011b
3
P3M2.3[4]
R/W
2
P3M2.2[4]
R/W
1
0
P3M2.1[4]
P3M2.0[4]
R/W
R/W
Reset value: 0000 0000b
Description
P3.6 pull-up enabled
0 = P3.6 pull-up Disabled.
1 = P3.6 pull-up Enabled.
This bit is valid only when RPD (CONFIG0.2) is programmed as 0. When
selecting as a ̅̅̅̅̅̅ pin, the pull-up is always enabled.
5:0
P3M2[5:0] Port 3 mode select 2.
[4] P3M1 and P3M2 are used in combination to determine the I/O mode of each pin of P1. See Table 8–1.
Configuration for Different I/O Modes.
P4M1 – Port 4 Mode Select 1[5]
7
6
5
P4M1.6
P4M1.5
R/W
R/W
Address: DAH, Page: 0
Bit
6:0
Feb 20, 2016
4
P4M1.4
R/W
Name
Description
P4M1[6:0]
Port 4 mode select 1
3
P4M1.3
R/W
Page 34 of 179
2
P4M1.2
R/W
1
0
P4M1.1
P4M1.0
R/W
R/W
Reset value: 1111 1111b
Rev. 1.01
N76E616 Datasheet
P4M2 – Port 4 Mode Select 2[5]
7
6
5
P4M2.6
P4M2.5
R/W
R/W
Address: DBH, Page: 0
Bit
Name
4
P4M2.4
R/W
3
P4M2.3
R/W
2
P4M2.2
R/W
1
0
P4M2.1
P4M2.0
R/W
R/W
Reset value: 0000 0000b
Description
6:0
P4M2[6:0] Port 4 mode select 2
[5] P4M1 and P4M2 are used in combination to determine the I/O mode of each pin of P4. See Table 8–1.
Configuration for Different I/O Modes.
P5M1 – Port 5 Mode Select 1[6]
7
6
5
P5M1.7
P5M1.6
P5M1.5
R/W
R/W
R/W
Address: DCH, Page: 0
Bit
7:0
Name
Description
P5M1[7:0]
Port 5 mode select 1
P5M2 – Port 5 Mode Select 2[6]
7
6
5
P5M2.7
P5M2.6
P5M2.5
R/W
R/W
R/W
Address: DDH, Page: 0
Bit
4
P5M1.4
R/W
Name
4
P5M2.4
R/W
3
P5M1.3
R/W
2
P5M1.2
R/W
1
0
P5M1.1
P5M1.0
R/W
R/W
Reset value: 1111 1111b
3
P5M2.3
R/W
2
P5M2.2
R/W
1
0
P5M2.1
P5M2.0
R/W
R/W
Reset value: 0000 0000b
Description
7:0
P5M2[7:0] Port 5 mode select 2
[6] P5M1 and P5M2 are used in combination to determine the I/O mode of each pin of P5. See Table 8–1.
Configuration for Different I/O Modes.
8.6.3 Input Type and Output Strength Control
Each I/O pin can be configured individually as TTL input or Schmitt triggered input. P1OS[3:0] bits are
for output strength control of P1.0 to P1.3. These four pins support large sink and source current
capability. Note that all PxS and P1OS registers are accessible by switching SFR page to page 1.
P0S – Port 0 Schmitt Triggered Input
7
6
5
P0S.7
P0S.6
P0S.5
R/W
R/W
R/W
Address: B1H, Page: 1
Bit
Name
n
Feb 20, 2016
P0S.n
4
P0S.4
R/W
3
P0S.3
R/W
2
P0S.2
R/W
1
0
P0S.1
P0S.0
R/W
R/W
Reset value: 0000 0000b
Description
P0.n Schmitt triggered input
0 = TTL level input of P0.n.
1 = Schmitt triggered input of P0.n.
Page 35 of 179
Rev. 1.01
N76E616 Datasheet
P1S – Port 1 Schmitt Triggered Input
7
6
5
P1S.7
P1S.6
P1S.5
R/W
R/W
R/W
Address: B3H, Page: 1
Bit
Name
n
P1S.n
Name
n
P2S.n
Name
n
P3S.n
Name
n
Feb 20, 2016
P4S.n
1
0
P1S.1
P1S.0
R/W
R/W
Reset value: 0000 0000b
4
P2S.4
R/W
3
P2S.3
R/W
2
P2S.2
R/W
1
0
P2S.1
P2S.0
R/W
R/W
Reset value: 0000 0000b
2
P3S.2
R/W
1
0
P3S.1
P3S.0
R/W
R/W
Reset value: 0000 0000b
2
P4S.2
R/W
1
0
P4S.1
P4S.0
R/W
R/W
Reset value: 0000 0000b
Description
P2.n Schmitt triggered input
0 = TTL level input of P2.n.
1 = Schmitt triggered input of P2.n.
4
P3S.4
R/W
3
P3S.3
R/W
Description
P3.n Schmitt triggered input
0 = TTL level input of P3.n.
1 = Schmitt triggered input of P3.n.
P4S – Port 4 Schmitt Triggered Input
7
6
5
P4S.6
P4S.5
R/W
R/W
Address: DAH, Page: 1
Bit
2
P1S.2
R/W
P1.n Schmitt triggered input
0 = TTL level input of P1.n.
1 = Schmitt triggered input of P1.n.
P3S – Port 3 Schmitt Triggered Input
7
6
5
P3S.6
P3S.5
R/W
R/W
Address: ACH, Page: 1
Bit
3
P1S.3
R/W
Description
P2S – Port 2 Schmitt Triggered Input
7
6
5
P2S.7
P2S.6
P2S.5
R/W
R/W
R/W
Address: B5H, Page: 1
Bit
4
P1S.4
R/W
4
P4S.4
R/W
3
P4S.3
R/W
Description
P4.n Schmitt triggered input
0 = TTL level input of P4.n.
1 = Schmitt triggered input of P4.n.
Page 36 of 179
Rev. 1.01
N76E616 Datasheet
P5S – Port 5 Schmitt Triggered Input
7
6
5
P5S.7
P5S.6
P5S.5
R/W
R/W
R/W
Address: DCH, Page: 1
Bit
Name
n
P5S.n
Name
7:4
-
n
P1OS.n
Feb 20, 2016
3
P5S.3
R/W
2
P5S.2
R/W
1
0
P5S.1
P5S.0
R/W
R/W
Reset value: 0000 0000b
2
P1OS.2
R/W
1
0
P1OS.1
P1OS.0
R/W
R/W
Reset value: 0000 0000b
Description
P5.n Schmitt triggered input
0 = TTL level input of P5.n.
1 = Schmitt triggered input of P5.n.
P1OS – Port 1 Output Strength Control
7
6
5
Address: B4H, Page: 1
Bit
4
P5S.4
R/W
4
-
3
P1OS.3
R/W
Description
Reserved
P1.n output strength select
0 = P1.n has normal output strength.
1 = P1.n has large output strength.
Note that this bit is valid to switch normal/large source output strength only when
its corresponding I/O is configured in its push-pull mode.
Page 37 of 179
Rev. 1.01
N76E616 Datasheet
9. TIMER/COUNTER 0 AND 1
Timer/Counter 0 and 1 on N76E616 are two 16-bit Timers/Counters. Each of them has two 8-bit
registers those form the 16-bit counting register. For Timer/Counter 0, they are TH0, the upper 8-bit
register, and TL0, the lower 8-bit register. Similarly, Timer/Counter 1 has two 8-bit registers, TH1 and
TL1. TCON and TMOD can configure modes of Timer/Counter 0 and 1.
The Timer or Counter function is selected by the
̅ bit in TMOD. Each Timer/Counter has its own
selection bit. TMOD.2 selects the function for Timer/Counter 0 and TMOD.6 selects the function for
Timer/Counter 1
When configured as a "Timer", the timer counts the system clock cycles. The timer clock is 1/12 of the
system clock (FSYS) for standard 8051 capability or direct the system clock for enhancement, which is
selected by T0M (CKCON.3) bit for Timer 0 and T1M (CKCON.4) bit for Timer 1. In the "Counter"
mode, the countering register increases on the falling edge of the external input pin T0. If the sampled
value is high in one clock cycle and low in the next, a valid 1-to-0 transition is recognized on T0 or T1
pin. The N76E616 supports the LXT input mode when T0LXTM (T1LXTM) is set. It provides a
constant overflow rate no matter how the system clock switches. In addition, each Timer/Counter can
be set to operate in any one of four possible modes. Bits M0 and M1 in TMOD do the mode selection.
The Timers 0 and 1 can be configured to automatically toggle a port output whenever a timer overflow
occurs. The same device pins that are used for the T0 and T1 count inputs are also used for the timer
toggle outputs. This function is enabled by control bits T0OE and T1OE in the P1M1 register, and
applies to Timer 0 and Timer 1 respectively. The port outputs will be logic 1 prior to the first timer
overflow when this mode is turned on. In order for this mode to function, the
̅ bit should be cleared
selecting the system clock as the clock source for the timer.
Note that the TH0 (TH1) and TL0 (TL1) are accessed separately. It is strongly recommended that in
mode 0 or 1, user should stop Timer temporally by clearing TR0 (TR1) bit before reading from or
writing to TH0 (TH1) and TL0 (TL1). The free-running reading or writing may cause unpredictable
result.
Feb 20, 2016
Page 38 of 179
Rev. 1.01
N76E616 Datasheet
TMOD – Timer 0 and 1 Mode
7
6
̅
GATE
R/W
Address: 89H
Bit
R/W
Name
7
GATE
6
̅
5
M1
4
M0
3
GATE
2
̅
1
M1
0
M0
5
M1
4
M0
3
GATE
2
̅
R/W
R/W
R/W
R/W
R/W
R/W
Reset value: 0000 0000b
Timer 1 gate control
0 = Timer 1 will clock when TR1 is 1 regardless of ̅̅̅̅̅̅̅ logic level.
1 = Timer 1 will clock only when TR1 is 1 and ̅̅̅̅̅̅̅ is logic 1.
Timer 1 Counter/Timer select
0 = Timer 1 is incremented by internal system clock.
1 = Timer 1 is incremented by the falling edge of the external pin T1.
Timer 1 mode select
M1
M0
Timer 1 Mode
0
0
Mode 0: 13-bit Timer/Counter
0
1
Mode 1: 16-bit Timer/Counter
1
0
Mode 2: 8-bit Timer/Counter with auto-reload from TH1
1
1
Mode 3: Timer 1 halted
Timer 0 gate control
0 = Timer 0 will clock when TR0 is 1 regardless of ̅̅̅̅̅̅̅ logic level.
1 = Timer 0 will clock only when TR0 is 1 and ̅̅̅̅̅̅̅ is logic 1.
Timer 0 Counter/Timer select
0 = Timer 0 is incremented by internal system clock.
1 = Timer 0 is incremented by the falling edge of the external pin T0.
Timer 0 mode select
M1
M0
Timer 0 Mode
0
0
Mode 0: 13-bit Timer/Counter
0
1
Mode 1: 16-bit Timer/Counter
1
0
Mode 2: 8-bit Timer/Counter with auto-reload from TH0
1
1
Mode 3: TL0 as a 8-bit Timer/Counter and TH0 as a 8-bit
Timer
R/W
R/W
Name
Description
R/W
3
IE1
R (level)
R/W (edge)
Address: 88H
Bit
0
M0
Description
TCON – Timer 0 and 1 Control (Bit-addressable)
7
6
5
4
TF1
TR1
TF0
TR0
R/W
1
M1
2
IT1
R/W
1
0
IE0
IT0
R (level)
R/W
R/W (edge)
Reset value: 0000 0000b
7
TF1
Timer 1 overflow flag
This bit is set when Timer 1 overflows. It is automatically cleared by hardware
when the program executes the Timer 1 interrupt service routine. This bit can be
set or cleared by software.
6
TR1
Timer 1 run control
0 = Timer 1 Disabled. Clearing this bit will halt Timer 1 and the current count will
be preserved in TH1 and TL1.
1 = Timer 1 Enabled.
Feb 20, 2016
Page 39 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
5
TF0
Timer 0 overflow flag
This bit is set when Timer 0 overflows. It is automatically cleared via hardware
when the program executes the Timer 0 interrupt service routine. This bit can be
set or cleared by software.
4
TR0
Timer 0 run control
0 = Timer 0 Disabled. Clearing this bit will halt Timer 0 and the current count will
be preserved in TH0 and TL0.
1 = Timer 0 Enabled.
TL0 – Timer 0 Low Byte
7
6
5
4
3
2
1
0
TL0[7:0]
R/W
Address: 8AH
Bit
7:0
Reset value: 0000 0000b
Name
TL0[7:0]
TH0 – Timer 0 High Byte
7
6
Description
Timer 0 low byte
The TL0 register is the low byte of the 16-bit counting register of Timer 0.
5
4
3
2
1
0
TH0[7:0]
R/W
Address: 8CH
Bit
7:0
Reset value: 0000 0000b
Name
Description
TH0[7:0]
Timer 0 high byte
The TH0 register is the high byte of the 16-bit counting register of Timer 0.
TL1 – Timer 1 Low Byte
7
6
5
4
3
2
1
0
TL1[7:0]
R/W
Address: 8BH
Bit
7:0
Reset value: 0000 0000b
Name
TL1[7:0]
TH1 – Timer 1 High Byte
7
6
Description
Timer 1 low byte
The TL1 register is the low byte of the 16-bit counting register of Timer 1.
5
4
3
2
1
0
TH1[7:0]
R/W
Address: 8DH
Bit
7:0
Feb 20, 2016
Reset value: 0000 0000b
Name
Description
TH1[7:0]
Timer 1 high byte
The TH1 register is the high byte of the 16-bit counting register of Timer 1.
Page 40 of 179
Rev. 1.01
N76E616 Datasheet
CKCON – Clock Control
7
6
Address: 8EH
Bit
Name
5
-
4
T1M
R/W
3
T0M
R/W
2
-
1
0
Reset value: 0000 0000b
Description
4
T1M
Timer 1 clock mode select
0 = The clock source of Timer 1 is the system clock divided by 12. It maintains
standard 8051 compatibility.
1 = The clock source of Timer 1 is direct the system clock.
3
T0M
Timer 0 clock mode select
0 = The clock source of Timer 0 is the system clock divided by 12. It maintains
standard 8051 compatibility.
1 = The clock source of Timer 0 is direct the system clock.
AUXR1 – Auxiliary Register 1
7
6
5
SWRF
RSTPINF
T1LXTM
R/W
R/W
R/W
Address: A2H
Bit
4
3
2
1
0
T0LXTM
GF2
0
DPS
R/W
R/W
R
R/W
reset value: see Table 6–2. SFR Definitions and Reset Values
Name
Description
5
T1LXTM
Timer 1 LXT input mode
0 = Timer 1 counts the clock selected by
1 = Timer 1 counts the LXT clock.
̅ (TMOD.6) and T1M (CKCON.4).
4
T0LXTM
Timer 0 LXT input mode
0 = Timer 0 counts the clock selected by
1 = Timer 0 counts the LXT clock.
̅ (TMOD.2) and T0M (CKCON.3).
P3M1 – Port 3 Mode Select 1
7
6
5
T1OE
T0OE
P3M1.5
R/W
R/W
R/W
Address: ACH, Page: 0
Bit
Name
4
P3M1.4
R/W
3
P3M1.3
R/W
2
P3M1.2
R/W
1
0
P3M1.1
P3M1.0
R/W
R/W
Reset value: 0011 1111b
Description
7
T1OE
Timer 1 output enable
0 = Timer 1 output Disabled.
1 = Timer 1 output Enabled from T1 pin.
Note that Timer 1 output should be enabled only when operating in its Timer
mode.
6
T0OE
Timer 0 output enable
0 = Timer 0 output Disabled.
1 = Timer 0 output Enabled from T0 pin.
Note that Timer 0 output should be enabled only when operating in its Timer
mode.
Feb 20, 2016
Page 41 of 179
Rev. 1.01
N76E616 Datasheet
9.1 Mode 0 (13-Bit Timer)
In Mode 0, the Timer/Counter is a 13-bit counter. The 13-bit counter consists of TH0 (TH1) and the
five lower bits of TL0 (TL1). The upper three bits of TL0 (TL1) are ignored. The Timer/Counter is
enabled when TR0 (TR1) is set and either GATE is 0 or ̅̅̅̅̅̅̅ (̅̅̅̅̅̅̅) is 1. Gate setting as 1 allows the
Timer to calculate the pulse width on external input pin ̅̅̅̅̅̅̅ (̅̅̅̅̅̅̅). When the 13-bit value moves
from 1FFFH to 0000H, the Timer overflow flag TF0 (TF1) is set and an interrupt occurs if enabled.
1/12
FSYS
T0M (CKCON.3)
(T1M (CKCON.4))
0
1
C/T
0
1
T0 (T1) Pin
0
1
FLXT
0
TL0 (TL1)
4
7
T0LXTM (AUXR1.4)
(T1LXTM (AUXR1.5))
0
TR0 (TR1)
7
TH0 (TH1)
GATE
TF0
(TF1)
Timer Interrupt
T0 (T1) Pin
T0OE (P3M1.6)
(T1OE(P3M1.7))
INT0 (INT1) pin
Figure 9-1. Timer/Counters 0 and 1 in Mode 0
9.2 Mode 1 (16-Bit Timer)
Mode 1 is similar to Mode 0 except that the counting registers are fully used as a 16-bit counter. Rollover occurs when a count moves FFFFH to 0000H. The Timer overflow flag TF0 (TF1) of the relevant
Timer/Counter is set and an interrupt will occur if enabled.
1/12
FSYS
T0M (CKCON.3)
(T1M (CKCON.4))
0
1
C/T
0
1
T0 (T1) Pin
FLXT
TL0 (TL1)
0
1
0
7
0
7
T0LXTM (AUXR1.4)
(T1LXTM (AUXR1.5))
TR0 (TR1)
TH0 (TH1)
GATE
TF0
(TF1)
Timer Interrupt
T0OE (P3M1.6)
(T1OE(P3M1.7))
INT0 (INT1) pin
T0 (T1) Pin
Figure 9-2. Timer/Counters 0 and 1 in Mode 1
Feb 20, 2016
Page 42 of 179
Rev. 1.01
N76E616 Datasheet
9.3 Mode 2 (8-Bit Auto-Reload Timer)
In Mode 2, the Timer/Counter is in auto-reload mode. In this mode, TL0 (TL1) acts as an 8-bit count
register whereas TH0 (TH1) holds the reload value. When the TL0 (TL1) register overflow, the TF0
(TF1) bit in TCON is set, TL0 (TL1) is reloaded with the contents of TH0 (TH1), and the counting
process continues from here. The reload operation leaves the contents of the TH0 (TH1) register
unchanged. This feature is best suitable for UART baud rate generator for it runs without continuous
software intervention. Note that only Timer1 can be the baud rate source for UART. Counting is
enabled by setting the TR0 (TR1) bit as 1 and proper setting of GATE and ̅̅̅̅̅̅̅ (̅̅̅̅̅̅̅) pins. The
functions of GATE and ̅̅̅̅̅̅̅ (̅̅̅̅̅̅̅) pins are just the same as Mode 0 and 1.
1/12
FSYS
T0M (CKCON.3)
(T1M (CKCON.4))
0
1
C/T
0
1
T0 (T1) Pin
TL0 (TL1)
0
0
1
FLXT
7
T0LXTM (AUXR1.4)
(T1LXTM (AUXR1.5))
TR0 (TR1)
0
GATE
7
TF0
(TF1)
Timer Interrupt
T0OE (P3M1.6)
(T1OE(P3M1.7))
T0 (T1) Pin
TH0 (TH1)
INT0 (INT1) pin
Figure 9-3. Timer/Counters 0 and 1 in Mode 2
9.4 Mode 3 (Two Separate 8-Bit Timers)
Mode 3 has different operating methods for Timer 0 and Timer 1. For Timer/Counter 1, Mode 3 simply
freezes the counter. Timer/Counter 0, however, configures TL0 and TH0 as two separate 8 bit count
registers in this mode. TL0 uses the Timer/Counter 0 control bits
̅, GATE, TR0, ̅̅̅̅̅̅̅, and TF0.
The TL0 also can be used as a 1-to-0 transition counter on pin T0 as determined by
̅ (TMOD.2).
TH0 is forced as a clock cycle counter and takes over the usage of TR1 and TF1 from Timer/Counter
1. Mode 3 is used in case that an extra 8 bit timer is needed. If Timer/Counter 0 is configured in Mode
3, Timer/Counter 1 can be turned on or off by switching it out of or into its own Mode 3. It can still be
used in Modes 0, 1 and 2 although its flexibility is restricted. It no longer has control over its overflow
flag TF1 and the enable bit TR1. However Timer 1 can still be used as a Timer/Counter and retains
the use of GATE, ̅̅̅̅̅̅̅ pin, T1M, and T1LXTM. It can be used as a baud rate generator for the serial
port or other application not requiring an interrupt.
Feb 20, 2016
Page 43 of 179
Rev. 1.01
N76E616 Datasheet
1/12
FSYS
T0M (CKCON.3)
0
1
C/T
0
1
T0 Pin
FLXT
TL0
0
1
0
7
T0LXTM
(AUXR1.4)
TF0
T0OE (P3M1.6)
TR0
Timer 0 Interrupt
T0 Pin
GATE
TH0
INT0 pin
TR1
0
7
TF1
T1OE(P3M1.7)
Timer 1 Interrupt
T1 Pin
Figure 9-4. Timer/Counter 0 in Mode 3
Feb 20, 2016
Page 44 of 179
Rev. 1.01
N76E616 Datasheet
10. TIMER 2A/2B/2C/2D
The entire Time 2 block is combined with four identical timers: Timer 2A, Timer 2B, Timer 2C, and
Timer 2D. Each timer is implemented simply by an auto-reload, down-counting counter. Note that
each timer has the same structure and function. Its own control bits can control each of them
individually. Each timer supports two operating modes including auto-reload mode and PWM mode,
which is selected by T2xM in T2MOD0 or T2MOD1 register. User can select the pre-scale value by
T2xPS[2:0] field. There are two output pins, which generate complementary 50% duty cycle or PWM
waveform. In following descriptions and figures, Timer 2A is used as an illustration. The other three
timers have the control method the same as Timer 2A.
10.1 Auto-Reload Mode
In auto-reload mode, contents in R2AH and R2AL registers are combined as a 16-bit reload value that
determines the underflow rate of Timer 2A. After deciding the pre-scale value and filling proper values
in R2AH and R2AL, user can set TR2A (T2CON.0) to start counting. After TR2A is set, R2AH and
R2AL are loaded into the internal 16-bit counter and the counter starts down counting. When the
counter underflows, TF2A (T2CON.4) is set as 1 by hardware which causes contents of the R2AH and
R2AL registers to be reloaded again into the internal 16-bit down counter. If ET2A (EIE.2) is set as 1,
the Timer 2A interrupt service routine will be served. In auto-reload mode, TF2A is auto-cleared by
hardware after entering its interrupt service routine. There are two complementary output pins
available and they toggle whenever the timer underflows. Control bits T2AOE1 and T2AOE2 in the
T2OE register enable this function. T2AO1 will be logic 1 prior to the first underflow. The underflow
period follows the equation below:
eriod
re scale
FSYS
TR2A
(T2CON.0)
Pre-scalar
(1/1~1/1024)
.
16-bit Down Counter
Timer 2A
Underflow
TF2A
(T2CON.4)
Timer 2A Interrupt
T2AO1 pin
T2AOE1(T2OE.0)
T2APS[2:0]
(T2MOD0[2:0])
0
7 0
R2AL
7
R2AH
T2AO2 pin
T2AOE2(T2OE.1)
Figure 10-1. Timer 2A Auto-Reload Mode Block Diagram
10.2 PWM Mode
In PWM mode, the down counter is configured as an 8-bit width. R2AH and R2AL are reloaded to the
counter alternately when every matching 0 event occurs. R2AH determines the width of PWM output
Feb 20, 2016
Page 45 of 179
Rev. 1.01
N76E616 Datasheet
high duty and R2AL the low duty. After setting proper pre-scale values in T2MOD0 and T2MOD1, user
can set TR2A (T2CON.0) to start PWM output. Meanwhile, R2AH is loaded into the internal 8-bit
counter and the counter starts down counting. T2AO1 is logic 1 output before a matching 0 event
occurs. Once a matching 0 event occurs, R2AL is reloaded and T2AO1 toggles its output to logic 0.
After the next matching 0 event, R2AH is reloaded again and T2AO1 toggles back to logic 1. The timer
runs so on repeatedly to generate continuous PWM waveform. The state of the other output pin
T2AO2 is just the inverse of T2AO1. When every matching 0 event occurs, TF2A will be set as 1 to
require a Timer 2A interrupt. In PWM mode, TF2A needs to be cleared via software by user. The
PWM output duty cycle and period follow equations below:
PWM high duty cycle:
.
PWM low duty cycle:
PWM period:
FSYS
TR2A
(T2CON.0)
.
re-scale
.
Pre-scalar
(1/1~1/1024)
8-bit Down Counter
Timer 2A
Match 0 Event
TF2A
(T2CON.4)
Repeat Control
T2APS[2:0]
(T2MOD0[2:0])
0
7
R2AL
Timer 2A Interrupt
T2AO1 pin
T2AOE1(T2OE.0)
0
7
R2AH
T2AO2 pin
T2AOE2(T2OE.1)
Figure 10-2. Timer 2A PWM Mode Block Diagram
Feb 20, 2016
Page 46 of 179
Rev. 1.01
N76E616 Datasheet
R2AH (1st)
R2AL (1st)
R2AH (2nd)
R2AL (2nd)
8-bit
Counter
Value
R2AH is updated during this period
R2AL is updated during this period
T2AO1
TR1A = 1 (Timer 1A
Counter matches 0,
starts running),
new R2AH is
R2AH is loaded into
loaded. The output
8-bit down counter,
of T2AO1 is 1.
The output of
Counter matches 0,
T2AO1 is 1.
R2AL is loaded into
8-bit down counter.
The output of
T2AO1 is 0.
Counter matches 0,
new R2AL is
loaded. The output
of T2AO1 is 0.
Figure 10-3. Timer 2A PWM Waveform
10.3 Control Registers of Timer 2
T2CON – Timer 2 Control (Bit-addressable)
7
6
5
4
TF2D
TF2C
TF2B
TF2A
R/W
R/W
R/W
R/W
Address: C8H
3
TR2D
R/W
2
TR2C
R/W
1
0
TR2B
TR2A
R/W
R/W
Reset value: 0000 0000b
Bit
Name
7
TF2D
Timer 2D flag
This bit is set when Timer 2D underflows/matches 0. In auto-reload mode, TF2D
is automatically cleared by hardware when the program executes the Timer 2D
interrupt service routine. This bit can be set or cleared by software.
6
TF2C
Timer 2C lag
This bit is set when Timer 2C underflows/matches 0. In auto-reload mode, TF2C
is automatically cleared by hardware when the program executes the Timer 2C
interrupt service routine. This bit can be set or cleared by software.
5
TF2B
Timer 2B flag
This bit is set when Timer 2B underflows/matches 0. In auto-reload mode, TF2B is
automatically cleared by hardware when the program executes the Timer 2B
interrupt service routine. This bit can be set or cleared by software.
Feb 20, 2016
Description
Page 47 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
4
TF2A
Timer 2A flag
This bit is set when Timer 2A underflows/matches 0. In auto-reload mode, TF2A is
automatically cleared by hardware when the program executes the Timer 2A
interrupt service routine. This bit can be set or cleared by software.
3
TR2D
Timer 2D run control
0 = Timer 2D is stopped and reset.
1 = Timer 2D starts running.
Note that in auto-reload mode, the reload registers R2DH and R2DL can only be
written when Timer 2D is halted (TR2D bit is 0). If any of R2DH or R2DL is written
while TR2D is 1, the result is unpredictable.
2
TR2C
Timer 2C run control
0 = Timer 2C is stopped and reset.
1 = Timer 2C starts running.
Note that in auto-reload mode, the reload registers R2CH and R2CL can only be
written when Timer 2C is halted (TR2C bit is 0). If any of R2CH or R2CL is written
while TR2C is 1, the result is unpredictable.
1
TR2B
Timer 2B run control
0 = Timer 2B is stopped and reset.
1 = Timer 2B starts running.
Note that in auto-reload mode, the reload registers R2BH and R2BL can only be
written when Timer 2B is halted (TR2B bit is 0). If any of R2BH or R2BL is written
while TR2B is 1, the result is unpredictable.
0
TR2A
Timer 2A run control
0 = Timer 2A is stopped and reset.
1 = Timer 2A starts running.
Note that in auto-reload mode, the reload registers R2AH and R2AL can only be
written when Timer 2A is halted (TR2A bit is 0). If any of R2AH or R2AL is written
while TR2A is 1, the result is unpredictable.
T2MOD0 – Timer 2 Mode 0
7
6
5
T2BM
T2BPS[2:0]
R/W
R/W
Address: C9H
Bit
Name
7
T2BM
6:4
T2BPS[2:0]
Feb 20, 2016
4
3
T2AM
R/W
2
1
0
T2APS[2:0]
R/W
Reset value: 0000 0000b
Description
Timer 2B mode
This bit selects the operation mode of Timer 2B.
0 = Auto-reload mode.
1 = PWM mode.
Note that changing this bit may cause unpredictable result when TR2B is 1.
Timer 2B pre-scalar
These bits determine the scale of the clock divider for Timer 2B.
000 = 1/1.
001 = 1/2.
010 = 1/8.
011 = 1/16.
100 = 1/64.
101 = 1/128.
110 = 1/512.
111 = 1/1024.
Note that changing this field may cause unpredictable result when TR2B is 1.
Page 48 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
3
T2AM
2:0
T2APS[2:0]
Description
Timer 2A mode
This bit selects the operation mode of Timer 2A.
0 = Auto-reload mode.
1 = PWM mode.
Note that changing this bit may cause unpredictable result when TR2A is 1.
Timer 2A pre-scalar
These bits determine the scale of the clock divider for Timer 2A.
000 = 1/1.
001 = 1/2.
010 = 1/8.
011 = 1/16.
100 = 1/64.
101 = 1/128.
110 = 1/512.
111 = 1/1024.
Note that changing this field may cause unpredictable result when TR2A is 1.
T2MOD1 – Timer 2 Mode 1
7
6
5
T2DM
T2DPS[2:0]
R/W
R/W
Address: CAH
Bit
Name
7
T2DM
6:4
T2DPS[2:0]
3
T2CM
Feb 20, 2016
4
3
T2CM
R/W
2
1
0
T2CPS[2:0]
R/W
Reset value: 0000 0000b
Description
Timer 2D mode
This bit selects the operation mode of Timer 2D.
0 = Auto-reload mode.
1 = PWM mode.
Note that changing this bit may cause unpredictable result when TR2D is 1.
Timer 2D pre-scalar
These bits determine the scale of the clock divider for Timer 2D.
000 = 1/1.
001 = 1/2.
010 = 1/8.
011 = 1/16.
100 = 1/64.
101 = 1/128.
110 = 1/512.
111 = 1/1024.
Note that changing this field may cause unpredictable result when TR2D is 1.
Timer 2C mode
This bit selects the operation mode of Timer 2C.
0 = Auto-reload mode.
1 = PWM mode.
Note that changing this bit may cause unpredictable result when TR2C is 1.
Page 49 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
2:0
T2CPS[2:0]
Description
Timer 2C pre-scalar
These bits determine the scale of the clock divider for Timer 2C.
000 = 1/1.
001 = 1/2.
010 = 1/8.
011 = 1/16.
100 = 1/64.
101 = 1/128.
110 = 1/512.
111 = 1/1024.
Note that changing this field may cause unpredictable result when TR2C is 1.
T2OE – Timer 2 Output Enable
7
6
5
T2DOE2
T2DOE1
T2COE2
R/W
R/W
R/W
Address: CBH
4
T2COE1
R/W
Bit
Name
7
T2DOE2
Timer 2D output enable 2
0 = T2DO2 output Disabled.
1 = T2DO2 output Enabled.
6
T2DOE1
Timer 2D output enable 1
0 = T2DO1 output Disabled.
1 = T2DO1 output Enabled.
5
T2COE2
Timer 2C output enable 2
0 = T2CO2 output Disabled.
1 = T2CO2 output Enabled.
4
T2COE1
Timer 2C output enable 1
0 = T2CO1 output Disabled.
1 = T2CO1 output Enabled.
3
T2BOE2
Timer 2B output enable 2
0 = T2BO2 output Disabled.
1 = T2BO2 output Enabled.
2
T2BOE1
Timer 2B output enable 1
0 = T2BO1 output Disabled.
1 = T2BO1 output Enabled.
1
T2AOE2
Timer 2A output enable 2
0 = T2AO2 output Disabled.
1 = T2AO2 output Enabled.
0
T2AOE1
Timer 2A output enable 1
0 = T2AO1 output Disabled.
1 = T2AO1 output Enabled.
Feb 20, 2016
3
T2BOE2
R/W
2
T2BOE1
R/W
1
0
T2AOE2
T2AOE1
R/W
R/W
Reset value: 0000 0000b
Description
Page 50 of 179
Rev. 1.01
N76E616 Datasheet
R2AL – Timer 2A Reload Low Byte
7
6
5
4
3
2
1
0
R2AL[7:0]
R/W
Address: CCH
Reset value: 0000 0000b
Bit
Name
Description
7:0
R2AL[7:0]
Timer 2A reload low byte
In auto-reload mode, it holds the low byte of the reload value of Timer 2A. In PWM
mode, it holds the low duty value.
R2AH – Timer 2A Reload High Byte
7
6
5
4
3
2
1
0
R2AH[7:0]
R/W
Address: CDH
Reset value: 0000 0000b
Bit
Name
7:0
R2AH[7:0]
Description
Timer 2A reload high byte
In auto-reload mode, it holds the high byte of the reload value of Timer 2A. In
PWM mode, it holds the high duty value.
R2BL – Timer 2B Reload Low Byte
7
6
5
4
3
2
1
0
R2BL[7:0]
R/W
Address: CEH
Reset value: 0000 0000b
Bit
Name
Description
7:0
R2BL[7:0]
Timer 2B reload low byte
In auto-reload mode, it holds the low byte of the reload value of Timer 2B. In PWM
mode, it holds the low duty value.
R2BH – Timer 2B Reload High Byte
7
6
5
4
3
2
1
0
R2BH[7:0]
R/W
Address: CFH
Reset value: 0000 0000b
Bit
Name
7:0
R2BH[7:0]
Feb 20, 2016
Description
Timer 2B reload high byte
In auto-reload mode, it holds the high byte of the reload value of Timer 2B. In
PWM mode, it holds the high duty value.
Page 51 of 179
Rev. 1.01
N76E616 Datasheet
R2CL – Timer 2C Reload Low Byte
7
6
5
4
3
2
1
0
R2CL[7:0]
R/W
Address: D4H
Reset value: 0000 0000b
Bit
Name
7:0
R2CL[7:0]
Description
Timer 2C reload low byte
In auto-reload mode, it holds the low byte of the reload value of Timer 2C. In
PWM mode, it holds the low duty value.
R2CH – Timer 2C Reload High Byte
7
6
5
4
3
2
1
0
R2CH[7:0]
R/W
Address: D5H
Reset value: 0000 0000b
Bit
Name
7:0
R2CH[7:0]
Description
Timer 2C reload high byte
In auto-reload mode, it holds the high byte of the reload value of Timer 2C. In
PWM mode, it holds the high duty value.
R2DL – Timer 2D Reload Low Byte
7
6
5
4
3
2
1
0
R2DL[7:0]
R/W
Address: D6H
Reset value: 0000 0000b
Bit
Name
7:0
R2DL[7:0]
Description
Timer 2D reload low byte
In auto-reload mode, it holds the low byte of the reload value of Timer 2D. In
PWM mode, it holds the low duty value.
R2DH – Timer 2D Reload High Byte
7
6
5
4
3
2
1
0
R2DH[7:0]
R/W
Address: D7H
Reset value: 0000 0000b
Bit
Name
7:0
R2DH[7:0]
Feb 20, 2016
Description
Timer 2D reload high byte
In auto-reload mode, it holds the high byte of the reload value of Timer 2D. In
PWM mode, it holds the high duty value.
Page 52 of 179
Rev. 1.01
N76E616 Datasheet
11. TIMER 3
Timer 3 is implemented simply as a 16-bit auto-reload, up-counting timer. The user can select the prescale with T3PS[2:0] (T3CON[2:0]) and fill the reload value into R3H and R3L registers to determine
its overflow rate. User then can set TR3 (T3CON.3) to start counting. When the counter rolls over
FFFFH, TF3 (T3CON.4) is set as 1 and a reload is generated and causes the contents of the R3H and
R3L registers to be reloaded into the internal 16-bit counter. If ET3 (EIE1.1) is set as 1, Timer 3
interrupt service routine will be served. TF3 is auto-cleared by hardware after entering its interrupt
service routine.
Timer 3 can also be the baud rate clock source of both UARTs. For details, please see Section 14.5
“Baud Rate” on page 70.
FSYS
Pre-scalar
(1/1~1/128)
TR3
(T3CON.3)
T3PS[2:0]
(T3CON[2:0])
Timer 3
Overflow
16-bit Up Counter
0
7 0
R3L
TF3
(T3CON.4)
Timer 3 Interrupt
7
R3H
Figure 11-1. Timer 3 Block Diagram
T3CON – Timer 3 Control
7
6
SMOD_1
SMOD0_1
R/W
R/W
Address: C4H
5
BRCK
R/W
4
TF3
R/W
3
TR3
R/W
2
1
0
T3PS[2:0]
R/W
Reset value: 0000 0000b
Bit
Name
4
TF3
Timer 3 overflow flag
This bit is set when Timer 3 overflows. It is automatically cleared by hardware
when the program executes the Timer 3 interrupt service routine. This bit can be
set or cleared by software.
3
TR3
Timer 3 run control
0 = Timer 3 is halted.
1 = Timer 3 starts running.
Note that the reload registers R3H and R3L can only be written when Timer 3 is
halted (TR3 bit is 0). If any of R3H or R3L is written if TR3 is 1, result is
unpredictable.
Feb 20, 2016
Description
Page 53 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
2:0
T3PS[2:0]
Description
Timer 3 pre-scalar
These bits determine the scale of the clock divider for Timer 3.
000 = 1/1.
001 = 1/2.
010 = 1/4.
011 = 1/8.
100 = 1/16.
101 = 1/32.
110 = 1/64.
111 = 1/128.
R3L – Timer 3 Reload Low Byte
7
6
5
4
3
2
1
0
R3L[7:0]
R/W
Address: C5H
Reset value: 0000 0000b
Bit
Name
7:0
R3L[7:0]
Description
Timer 3 reload low byte
It holds the low byte of the reload value of Timer 3.
R3H – Timer 3 Reload High Byte
7
6
5
4
3
2
1
0
R3H[7:0]
R/W
Address: C6H
Reset value: 0000 0000b
Bit
Name
7:0
R3H[7:0]
Feb 20, 2016
Description
Timer 3 reload high byte
It holds the high byte of the reload value of Time 3.
Page 54 of 179
Rev. 1.01
N76E616 Datasheet
12. WATCHDOG TIMER (WDT)
The N76E616 provides one Watchdog Timer (WDT). It can be configured as a time-out reset timer to
reset whole device. Once the device runs in an abnormal status or hangs up by outward interference,
a WDT reset recover the system. It provides a system monitor, which improves the reliability of the
system. Therefore, WDT is especially useful for system that is susceptible to noise, power glitches, or
electrostatic discharge. The WDT also can be configured as a general purpose timer, of which the
periodic interrupt serves as an event timer or a durational system supervisor in a monitoring system,
which is able to operate during Idle or Power-down mode. WDTEN[3:0] (CONFIG4[7:4]) initialize the
WDT to operate as a time-out reset timer or a general purpose timer.
CONFIG4
7
6
5
WDTEN[3:0]
R/W
Bit
7:4
4
3
-
2
1
0
Factory default value: 1111 1111b
Name
Description
WDTEN[3:0]
WDT enable
This field configures the WDT behavior after MCU execution.
1111 = WDT is Disabled. WDT can be used as a general-purpose timer via
software control.
0101 = WDT is Enabled as a time-out reset timer and it stops running during
Idle or Power-down mode.
Others = WDT is Enabled as a time-out reset timer and it keeps running during
Idle or Power-down mode.
The WDT is implemented with a set of divider that divides the LIRC clock nominal 10 kHz. The divider
output is selectable and determines the time-out interval. When the time-out interval is fulfilled, it will
wake the system up from Idle or Power-down mode and an interrupt event will occur if WDT interrupt
is enabled. If WDT is initialized as a time-out reset timer, a system reset will occur after a period of
delay if without any software action.
WDCON – Watchdog Timer Control (TA protected)
7
6
5
4
3
2
1
0
[1]
[2]
WDTR
WDCLR
WDTF
WIDPD
WDTRF
WDPS[2:0]
R/W
R/W
R/W
R/W
R/W
R/W
Address: AAH
Reset value: see Table 6–2. SFR Definitions and Reset Values
Bit
Name
7
Feb 20, 2016
WDTR
Description
WDT run
This bit is valid only when control bits in WDTEN[3:0] (CONFIG4[7:4]) are all 1.
At this time, WDT works as a general-purpose timer.
0 = WDT Disabled.
1 = WDT Enabled. The WDT counter starts running.
Page 55 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
WDT clear
Setting this bit will reset the WDT count to 00H. It puts the counter in a known
state and prohibits the system from unpredictable reset. The meaning of writing
and reading WDCLR bit is different.
Writing:
0 = No effect.
1 = Clearing WDT counter.
Reading:
0 = WDT counter is completely cleared.
1 = WDT counter is not yet cleared.
6
WDCLR
5
WDTF
WDT time-out flag
This bit indicates an overflow of WDT counter. This flag should be cleared by
software.
4
WIDPD
WDT running in Idle or Power-down mode
This bit is valid only when control bits in WDTEN[3:0] (CONFIG4[7:4]) are all 1. It
decides whether WDT runs in Idle or Power-down mode when WDT works as a
general purpose timer.
0 = WDT stops running during Idle or Power-down mode.
1 = WDT keeps running during Idle or Power-down mode.
3
WDTRF
WDT reset flag
When the CPU is reset by WDT time-out event, this bit will be set via hardware.
This flag is recommended to be cleared via software after reset.
2:0
WDPS[2:0]
WDT clock pre-scalar select
These bits determine the pre-scale of WDT clock from 1/1 through 1/256. See
Table 12–1. The default is the maximum pre-scale value.
[1] WDTRF will be cleared after power-on reset, be set after WDT reset, and remains unchanged after any other
resets.
[2] WDPS[2:0] are all set after power-on reset and keep unchanged after any reset other than power-on reset.
The Watchdog time-out interval is determined by the equation
1
× 64 , where
FLIRC × clock dividerscalar
FLIRC is the frequency of 10 kHz internal oscillator. The following table shows an example of the
Watchdog time-out interval with different pre-scales.
Feb 20, 2016
Page 56 of 179
Rev. 1.01
N76E616 Datasheet
Table 12–1. Watchdog Timer-out Interval Under Different Pre-scalars
Clock Divider
Scale
Watchdog Time-out Interval
(FLIRC ~= 10 kHz)
WDPS.2
WDPS.1
WDPS.0
0
0
0
1/1
6.40 ms
0
0
1
1/4
25.60 ms
0
1
0
1/8
51.20 ms
0
1
1
1/16
102.40 ms
1
0
0
1/32
204.80 ms
1
0
1
1/64
409.60 ms
1
1
0
1/128
819.20 ms
1
1
1
1/256
1.638 s
12.1 Time-Out Reset Timer
When the CONFIG bits WDTEN[3:0] (CONFIG4[7:4]) is not FH, the WDT is initialized as a time-out
reset timer. If WDTEN[3:0] is not 5H, the WDT is allowed to continue running after the system enters
Idle or Power-down mode. Note that when WDT is initialized as a time-out reset timer, WDTR and
WIDPD has no function.
LIRC
Pre-scalar
(1/1~1/256)
WDT Counter
(6-bit)
Overflow
WDTRF
WDT Reset
clear
clear
WDPS[2:0]
512-Clock
Delay
WDCLR
WDTF
WDT Interrupt
Figure 12-1. WDT as A Time-Out Reset Timer
After the device is powered and it starts to execute software code, the WDT starts counting
simultaneously. The time-out interval is selected by the three bits WDPS[2:0] (WDCON[2:0]). When
the selected time-out occurs, the WDT will set the interrupt flag WDTF (WDCON.5). If the WDT
interrupt enable bit EWDT (EIE.4) and global interrupt enable EA are both set, the WDT interrupt
routine will be executed. Meanwhile, an additional 512 clocks of the LIRC delays to expect a counter
clearing by setting WDCLR to avoid the system reset by WDT if the device operates normally. If no
counter reset by writing 1 to WDCLR during this 512-clock period, a WDT reset will happen. Setting
WDCLR bit is used to clear the counter of the WDT. This bit is self-cleared for user monitoring it. Once
a reset due to WDT occurs, the WDT reset flag WDTRF (WDCON.3) will be set. This bit keeps
unchanged after any reset other than a power-on reset. User may clear WDTRF via software. Note
that all bits in WDCON require timed access writing.
Feb 20, 2016
Page 57 of 179
Rev. 1.01
N76E616 Datasheet
The main application of the WDT with time-out reset enabling is for the system monitor. This is
important in real-time control applications. In case of some power glitches or electro-magnetic
interference, CPU may begin to execute erroneous codes and operate in an unpredictable state. If this
is left unchecked the entire system may crash. Using the WDT during software development requires
user to select proper “Feeding Dog” time by clearing the WDT counter. By inserting the instruction of
setting WDCLR, it allows the code to run without any WDT reset. However If any erroneous code
executes by any interference, the instructions to clear the WDT counter will not be executed at the
required instants. Thus, the WDT reset will occur to reset the system state from an erroneously
executing condition and recover the system.
12.2 General Purpose Timer
There is another application of the WDT, which is used as a simple, long period timer. When the
CONFIG bits WDTEN[3:0] (CONFIG4[7:4]) is FH, the WDT is initialized as a general purpose timer. In
this mode, WDTR and WIDPD are fully accessed via software.
LIRC
WDT Counter
(6-bit)
overflow
WDTF
WDT Interrupt
clear
IDL (PCON.0)
PD (PCON.1)
WIDPD
Pre-scalar
(1/1~1/256)
WDPS[2:0]
WDCLR
WDTR
Figure 12-2. Watchdog Timer Block Diagram
The WDT starts running by setting WDTR as 1 and halts by clearing WDTR as 0. The WDTF flag will
be set while the WDT completes the selected time interval. The software polls the WDTF flag to detect
a time-out. An interrupt will occur if the individual interrupt EWDT (EIE.4) and global interrupt enable
EA is set. WDT will continue counting. User should clear WDTF and wait for the next overflow by
polling WDTF flag or waiting for the interrupt occurrence.
In some application of low power consumption, the CPU usually stays in Idle mode when nothing
needs to be served to save power consumption. After a while the CPU will be woken up to check if
anything needs to be served at an interval of programmed period implemented by Timer 0 to Timer 3.
However, the current consumption of Idle mode still keeps at a “mA” level. To further reducing the
current consumption to “μA” level, the CPU should stay in Power-down mode when nothing needs to
be served, and has the ability of waking up at a programmable interval. The N76E616 is equipped with
this useful function by WDT waking up. It provides a very low power LIRC as the clock source of the
WDT. It is also able to count under Power-down mode and wake CPU up.
Feb 20, 2016
Page 58 of 179
Rev. 1.01
N76E616 Datasheet
The demo code to accomplish this feature is shown below.
ORG
LJMP
0000H
START
ORG
LJMP
0053H
WDT_ISR
ORG
0100H
;********************************************************************
;WDT interrupt service routine
;********************************************************************
WDT_ISR:
CLR
EA
MOV
TA,#0AAH
MOV
TA,#55H
ANL
WDCON,#11011111B
;clear WDT interrupt flag
SETB
EA
RETI
;********************************************************************
;Start here
;********************************************************************
START:
MOV
TA,#0AAH
MOV
TA,#55H
ORL
WDCON,#00010111B
;choose interval length and enable
during
;Power-down
SETB
EWDT
;enable WDT interrupt
SETB
EA
MOV
MOV
ORL
TA,#0AAH
TA,#55H
WDCON,#10000000B
WDT
running
; WDT run
;********************************************************************
;Enter Power-down mode
;********************************************************************
LOOP:
ORL
PCON,#02H
LJMP
LOOP
Feb 20, 2016
Page 59 of 179
Rev. 1.01
N76E616 Datasheet
13. SELF WAKE-UP TIMER (WKT)
The N76E616 has a dedicated Self Wake-up Timer (WKT), which serves for a periodic wake-up timer
in low power mode or for general-purpose timer. WKT remains counting in Idle or Power-down mode.
When WKT is being used as a wake-up timer, a start of WKT can occur just prior to entering a power
management mode. WKT has two clock sources, LIRC or LXT, determined by WKTCKS (WKCON.5)
bit. Note that the system clock frequency must be twice over WKT clock. If WKT starts counting, the
selected clock source will remain active once the device enters Idle or Power-down mode. Note that
the selected clock source of WKT will not automatically enable along with WKT configuration. User
should manually enable the selected clock source and waiting for stability to ensure a proper
operation.
The WKT is implemented simply as a 8-bit auto-reload, up-counting timer with pre-scale 1/1 to 1/512
selected by WKPS[2:0] (WKCON[2:0]). User fills the reload value into RWK register to determine its
overflow rate. The WKTR (WKCON.3) can be set to start counting. When the counter rolls over FFH,
WKTF (WKCON.4) is set as 1 and a reload is generated and causes the contents of the RWK register
to be reloaded into the internal 8-bit counter. If EWKT (EIE1.2) is set as 1, WKT interrupt service
routine will be served.
LIRC
0
Pre-scalar
(1/1~1/2048)
1
WKT
Overflow
8-bit Up Counter
WKTF
(WKCON.4)
WKT Interrupt
LXT
WKTCKS
(WKCON.5)
WKPS[2:0]
(WKCON[2:0])
WKTR
(WKCON.3)
0
7
RWK
Figure 13-1. Self Wake-Up Timer Block Diagram
WKCON – Self Wake-up Timer Control
7
6
5
WKTCKS
R/W
Address: 8FH
4
WKTF
R/W
3
WKTR
R/W
2
1
0
WKPS[2:0]
R/W
Reset value: 0000 0000b
Bit
Name
5
WKTCKS
WKT clock source select
0 = LIRC.
1 = LXT.
Note that this bit cannot be switched on-the-fly when WKT is running. It must be
selected before WKTR is set as 1.
4
WKTF
WKT overflow flag
This bit is set when WKT overflows. If the WKT interrupt and the global interrupt
are enabled, setting this bit will make CPU execute WKT interrupt service
routine. This bit is not automatically cleared via hardware and should be cleared
via software.
Feb 20, 2016
Description
Page 60 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
3
WKTR
2:0
WKPS[2:0]
Description
WKT run control
0 = WKT is halted.
1 = WKT starts running.
Note that the reload register RWK can only be written when WKT is halted
(WKTR bit is 0). If WKT is written while WKTR is 1, result is unpredictable.
WKT pre-scalar
These bits determine the pre-scale of WKT clock.
000 = 1/1.
001 = 1/4.
010 = 1/16.
011 = 1/64.
100 = 1/256.
101 = 1/512.
110 = 1/1024.
111 = 1/2048.
RWK – Self Wake-up Timer Reload Byte
7
6
5
4
3
2
1
0
RWK[7:0]
R/W
Address: 86H
Reset value: 0000 0000b
Bit
Name
7:0
RWK[7:0]
Feb 20, 2016
Description
WKT reload byte
It holds the 8-bit reload value of WKT. Note that RWK should not be FFH if the
pre-scale is 1/1 for implement limitation.
Page 61 of 179
Rev. 1.01
N76E616 Datasheet
14. SERIAL PORT (UART)
The N76E616 includes two enhanced full duplex serial ports enhanced with automatic address
recognition and framing error detection. As control bits of these two serial ports are implemented the
same, the bit names (including interrupt enabling or priority setting bits) end with “ _ ” (e.g.
O _1)
to indicate serial port 1 control bits for making a distinction between these two serial ports. General
speaking, in the following contents, there will not be any reference to serial port 1, but only to serial
port 0.
Each serial port supports one synchronous communication mode, Mode 0, and three modes of full
duplex UART (Universal Asynchronous Receiver and Transmitter), Mode 1, 2, and 3. This means it
can transmit and receive simultaneously. The serial port is also receiving-buffered, meaning it can
commence reception of a second byte before a previously received byte has been read from the
register. The receiving and transmitting registers are both accessed at SBUF. Writing to SBUF loads
the transmitting register, and reading SBUF accesses a physically separate receiving register. There
are four operation modes in serial port. In all four modes, transmission initiates by any instruction that
uses SBUF as a destination register.
SCON – Serial Port Control (Bit-addressable)
7
6
5
4
SM0/FE
SM1
SM2
REN
R/W
R/W
R/W
R/W
Address: 98H
Bit
Name
7
SM0/FE
6
SM1
3
TB8
R/W
2
RB8
R/W
1
0
TI
RI
R/W
R/W
Reset value: 0000 0000b
Description
Serial port mode select
SMOD0 (PCON.6) = 0:
See Table 14–1. Serial Port 0 Mode Description for details.
SMOD0 (PCON.6) = 1:
SM0/FE bit is used as frame error (FE) status flag. It is cleared by software.
0 = Frame error (FE) did not occur.
1 = Frame error (FE) occurred and detected.
Feb 20, 2016
Page 62 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
5
SM2
Description
Multiprocessor communication mode enable
The function of this bit is dependent on the serial port 0 mode.
Mode 0:
This bit selects the baud rate between FSYS/12 and FSYS/2.
0 = The clock runs at FSYS/12 baud rate. It maintains standard 8051
compatibility.
1 = The clock runs at FSYS/2 baud rate for faster serial communication.
Mode 1:
This bit checks valid stop bit.
0 = Reception is always valid no matter the logic level of stop bit.
1 = Reception is valid only when the received stop bit is logic 1 and the
received data matches “Given” or “Broadcast” address.
Mode 2 or 3:
For multiprocessor communication.
0 = Reception is always valid no matter the logic level of the 9th bit.
1 = Reception is valid only when the received 9th bit is logic 1 and the
received data matches “Given” or “Broadcast” address.
4
REN
Receiving enable
0 = Serial port 0 reception Disabled.
1 = Serial port 0 reception Enabled in Mode 1,2, or 3. In Mode 0, reception is
initiated by the condition REN = 1 and RI = 0.
3
TB8
9th transmitted bit
This bit defines the state of the 9th transmission bit in serial port 0 Mode 2 or 3. It
is not used in Mode 0 or 1.
2
RB8
9th received bit
The bit identifies the logic level of the 9th received bit in serial port 0 Mode 2 or 3.
In Mode 1, RB8 is the logic level of the received stop bit. SM2 bit as logic 1 has
restriction for exception. RB8 is not used in Mode 0.
1
TI
Transmission interrupt flag
This flag is set by hardware when a data frame has been transmitted by the serial
port 0 after the 8th bit in Mode 0 or the last data bit in other modes. When the
serial port 0 interrupt is enabled, setting this bit causes the CPU to execute the
serial port 0 interrupt service routine. This bit should be cleared manually via
software.
0
RI
Receiving interrupt flag
This flag is set via hardware when a data frame has been received by the serial
port 0 after the 8th bit in Mode 0 or after sampling the stop bit in Mode 1, 2, or 3.
SM2 bit as logic 1 has restriction for exception. When the serial port 0 interrupt is
enabled, setting this bit causes the CPU to execute to the serial port 0 interrupt
service routine. This bit should be cleared manually via software.
Feb 20, 2016
Page 63 of 179
Rev. 1.01
N76E616 Datasheet
SCON_1 – Serial Port 1 Control (bit-addressable)
7
6
5
4
SM0_1/FE_1
SM1_1
SM2_1
REN_1
R/W
R/W
R/W
R/W
Address: F8H
Bit
Name
7
SM0_1/FE_1
6
SM1_1
3
TB8_1
R/W
2
RB8_1
R/W
1
0
TI_1
RI_1
R/W
R/W
Reset value: 0000 0000b
Description
Serial port 1 mode select
SMOD0_1 (T3CON.6) = 0:
See Table 14–2. Serial Port 1 Mode Description for details.
SMOD0_1 (T3CON.6) = 1:
SM0_1/FE_1 bit is used as frame error (FE) status flag. It is cleared by
software.
0 = Frame error (FE) did not occur.
1 = Frame error (FE) occurred and detected.
5
SM2_1
Multiprocessor communication mode enable
The function of this bit is dependent on the serial port 1 mode.
Mode 0:
No effect.
Mode 1:
This bit checks valid stop bit.
0 = Reception is always valid no matter the logic level of stop bit.
1 = Reception is valid only when the received stop bit is logic 1 and
the received data matches “Given” or “Broadcast” address.
Mode 2 or 3:
For multiprocessor communication.
0 = Reception is always valid no matter the logic level of the 9th bit.
1 = Reception is valid only when the received 9th bit is logic 1 and
the received data matches “Given” or “Broadcast” address.
4
REN_1
Receiving enable
0 = Serial port 1 reception Disabled.
1 = Serial port 1 reception Enabled in Mode 1,2, or 3. In Mode 0, reception is
initiated by the condition REN_1 = 1 and RI_1 = 0.
3
TB8_1
9th transmitted bit
This bit defines the state of the 9th transmission bit in serial port 1 Mode 2 or 3.
It is not used in Mode 0 or 1.
2
RB8_1
9th received bit
The bit identifies the logic level of the 9th received bit in serial port 1 Mode 2 or
3. In Mode 1, RB8_1 is the logic level of the received stop bit. SM2 _1 bit as
logic 1 has restriction for exception. RB8_1 is not used in Mode 0.
1
TI_1
Transmission interrupt flag
This flag is set by hardware when a data frame has been transmitted by the
serial port 1 after the 8th bit in Mode 0 or the last data bit in other modes.
When the serial port 1 interrupt is enabled, setting this bit causes the CPU to
execute the serial port 1 interrupt service routine. This bit must be cleared
manually via software.
0
RI_1
Receiving interrupt flag
This flag is set via hardware when a data frame has been received by the serial
port 1 after the 8th bit in Mode 0 or after sampling the stop bit in Mode 1, 2, or
3. SM2_1 bit as logic 1 has restriction for exception. When the serial port 1
interrupt is enabled, setting this bit causes the CPU to execute to the serial port
1 interrupt service routine. This bit must be cleared manually via software.
Feb 20, 2016
Page 64 of 179
Rev. 1.01
N76E616 Datasheet
PCON – Power Control
7
6
SMOD
SMOD0
R/W
R/W
Address: 87H
Bit
Name
5
-
4
3
2
1
0
POF
GF1
GF0
PD
IDL
R/W
R/W
R/W
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
7
SMOD
Serial port 0 double baud rate enable
Setting this bit doubles the serial port baud rate when UART0 is in Mode 2 or
when Timer 1 overflow is used as the baud rate source of UART0 Mode 1 or 3.
See Table 14–1. Serial Port 0 Mode Description for details.
6
SMOD0
Serial port 0 framing error flag access enable
0 = SCON.7 accesses to SM0 bit.
1 = SCON.7 accesses to FE bit.
T3CON – Timer 3 Control
7
6
SMOD_1
SMOD0_1
R/W
R/W
Address: C4H
5
BRCK
R/W
4
TF3
R/W
3
TR3
R/W
2
1
0
T3PS[2:0]
R/W
Reset value: 0000 0000b
Bit
Name
Description
7
SMOD_1
Serial port 1 double baud rate enable
Setting this bit doubles the serial port baud rate when UART1 is in Mode 2. See
Table 14–2. Serial Port 1 Mode Description for details.
6
SMOD0_1
Serial port 1 framing error access enable
0 = SCON_1.7 accesses to SM0_1 bit.
1 = SCON_1.7 accesses to FE_1 bit.
Table 14–1. Serial Port 0 Mode Description
Mode
SM0
SM1
Description
Frame Bits
Baud Rate
0
0
0
Synchronous
8
FSYS divided by 12 or by 2[1]
1
0
1
Asynchronous
10
Timer 1/Timer 3 overflow rate divided by 32 or divided
by 16[2]
2
1
0
Asynchronous
11
FSYS divided by 32 or 64[2]
3
1
1
Asynchronous
11
Timer 1/Timer 3 overflow rate divided by 32 or divided
by 16[2]
Baud Rate
[1] While SM2 (SCON.5) is logic 1.
[2] While SMOD (PCON.7) is logic 1.
Table 14–2. Serial Port 1 Mode Description
Mode
SM0
SM1
Description
Frame Bits
0
0
0
Synchronous
8
FSYS divided by 12 or by 2[1]
1
0
1
Asynchronous
10
Timer 3 overflow rate divided by 16
2
1
0
Asynchronous
11
FSYS divided by 32 or 64[2]
3
1
1
Asynchronous
11
Timer 3 overflow rate divided by 16
Feb 20, 2016
Page 65 of 179
Rev. 1.01
N76E616 Datasheet
[1] While SM2_1 (SCON_1.5) is logic 1.
[2] While SMOD_1 (T3CON.7) is logic 1.
SBUF – Serial Port 0 Data Buffer
7
6
5
4
3
2
1
0
SBUF[7:0]
R/W
Address: 99H
Bit
7:0
Reset value: 0000 0000b
Name
Description
SBUF[7:0]
Serial port 0 data buffer
This byte actually consists two separate registers. One is the receiving resister,
and the other is the transmitting buffer. When data is moved to SBUF, it goes to
the transmitting buffer and is shifted for serial transmission. When data is moved
from SBUF, it comes from the receiving register.
The transmission is initiated through giving data to SBUF.
SBUF_1 – Serial Port 1 Data Buffer
7
6
5
4
3
SBUF_1[7:0]
R/W
Address: 9AH
Bit
7:0
2
1
0
Reset value: 0000 0000b
Name
Description
SBUF_1[7:0]
Serial port 1 data buffer
This byte actually consists two separate registers. One is the receiving resister,
and the other is the transmitting buffer. When data is moved to SBUF_1, it
goes to the transmitting buffer and is shifted for serial transmission. When data
is moved from SBUF_1, it comes from the receiving register.
The transmission is initiated through giving data to SBUF_1.
14.1 Mode 0
Mode 0 provides synchronous communication with external devices. Serial data enters and exits
through RXD pin. TXD outputs the shift clocks. 8-bit frame of data are transmitted or received. Mode 0
therefore provides half-duplex communication because the transmitting or receiving data is via the
same data line RXD. The baud rate is enhanced to be selected as FSYS/12 if SM2 (SCON.5) is 0 or as
FSYS/2 if SM2 is 1. Note that whenever transmitting or receiving, the serial clock is always generated
by the MCU. Thus any device on the serial port in Mode 0 should accept the MCU as the master.
Figure 14-1 shows the associated timing of the serial port in Mode 0.
Feb 20, 2016
Page 66 of 179
Rev. 1.01
N76E616 Datasheet
Figure 14-1. Serial Port Mode 0 Timing Diagram
As shown there is one bi-directional data line (RXD) and one shift clock line (TXD). The shift clocks
are used to shift data in or out of the serial port controller bit by bit for a serial communication. Data
bits enter or emit LSB first. The band rate is equal to the shift clock frequency.
Transmission is initiated by any instruction writes to SBUF. The control block will then shift out the
clocks and begin to transfer data until all 8 bits are complete. Then the transmitted flag TI (SCON.1)
will be set 1 to indicate one byte transmitting complete.
Reception is initiated by the condition REN (SCON.4) = 1 and RI (SCON.0) = 0. This condition tells the
serial port controller that there is data to be shifted in. This process will continue until 8 bits have been
received. Then the received flag RI will be set as 1. User can clear RI to triggering the next byte
reception.
14.2 Mode 1
Mode 1 supports asynchronous, full duplex serial communication. The asynchronous mode is
commonly used for communication with PCs, modems or other similar interfaces. In Mode 1, 10 bits
are transmitted through TXD or received through RXD including a start bit (logic 0), 8 data bits (LSB
first) and a stop bit (logic 1). The Timer 1 determines the baud rate. SMOD (PCON.7) setting 1 makes
the baud rate double. Figure 14-2 shows the associated timings of the serial port in Mode 1 for
transmitting and receiving.
Feb 20, 2016
Page 67 of 179
Rev. 1.01
N76E616 Datasheet
Figure 14-2. Serial Port Mode 1 Timing Diagram
Transmission is initiated by any writing instructions to SBUF. Transmission takes place on TXD pin.
First, the start bit comes out; the 8-bit data follows to be shifted out and then ends with a stop bit. After
the stop bit appears, TI (SCON.1) will be set to indicate one-byte transmission complete. All bits are
shifted out depending on the rate determined by the baud rate generator.
Once the baud rate generator is activated and REN (SCON.4) is 1, the reception can begin at any
time. Reception is initiated by a detected 1-to-0 transition at RXD. Data will be sampled and shifted in
at the selected baud rate. In the midst of the stop bit, certain conditions should be met to load SBUF
with the received data:
1. RI (SCON.0) = 0, and
2. Either SM2 (SCON.5) = 0, or the received stop bit = 1 while SM2 = 1 and the received data matches
“Given”
or
“Broadcast”
address.
( or
enhancement
function,
see
14.7
“Multiprocessor
Communication” and 14.8 “Automatic Address Recognition”.)
If these conditions are met, then the SBUF will be loaded with the received data, the RB8 (SCON.2)
with stop bit, and RI will be set. If these conditions fail, there will be no data loaded and RI will remain
0. After above receiving progress, the serial control will look forward another 1-to-0 transition on RXD
pin to start next data reception.
14.3 Mode 2
Mode 2 supports asynchronous, full duplex serial communication. Different from Mode1, there are 11
bits to be transmitted or received. They are a start bit (logic 0), 8 data bits (LSB first), a programmable
9th bit TB8 or RB8 bit and a stop bit (logic 1). The most common use of 9th bit is to put the parity bit in
it or to label address or data frame for multiprocessor communication. The baud rate is fixed as 1/32
Feb 20, 2016
Page 68 of 179
Rev. 1.01
N76E616 Datasheet
or 1/64 the system clock frequency depending on SMOD (PCON.7) bit. Figure 14-3 shows the
associated timings of the serial port in Mode 2 for transmitting and receiving.
Figure 14-3. Serial Port Mode 2 and 3 Timing Diagram
Transmission is initiated by any writing instructions to SBUF. Transmission takes place on TXD pin.
First, the start bit comes out, the 8-bit data and bit TB8 (SCON.3) follows to be shifted out and then
ends with a stop bit. After the stop bit appears, TI will be set to indicate the transmission complete.
While REN is set, the reception is allowed at any time. A falling edge of a start bit on RXD will initiate
the reception progress. Data will be sampled and shifted in at the selected baud rate. In the midst of
the stop bit, certain conditions should be met to load SBUF with the received data:
1. RI (SCON.0) = 0, and
2. Either SM2 (SCON.5) = 0, or the received 9th bit = 1 while SM2 = 1 and the received data matches
“Given”
or
“Broadcast”
address.
( or
enhancement
function,
see
14.7
“Multiprocessor
Communication” and 14.8 “Automatic Address Recognition”.)
If these conditions are met, the SBUF will be loaded with the received data, the RB8(SCON.2) with the
received 9th bit and RI will be set. If these conditions fail, there will be no data loaded and RI will
remain 0. After above receiving progress, the serial control will look forward another 1-to-0 transition
on RXD pin to start next data reception.
Feb 20, 2016
Page 69 of 179
Rev. 1.01
N76E616 Datasheet
14.4 Mode 3
Mode 3 has the same operation as Mode 2, except its baud rate clock source uses Timer 1 overflows
as its baud rate clocks. See Figure 14-3 for timing diagram of Mode 3. It has no difference from Mode
2.
14.5 Baud Rate
The baud rate source and speed for different modes of serial port is quite different from one another.
All cases are listed in Table 14–3. The user should calculate the baud rate according to their system
configuration.
In Mode 1 or 3, the baud rate clock source of UART0 can be selected from Timer 1 or Timer 3. User
can select the baud rate clock source by BRCK (T3CON.5). For UART1, its baud rate clock comes
only from Timer 3 as its unique clock source.
T3CON – Timer 3 Control
7
6
SMOD_1
SMOD0_1
R/W
R/W
Address: C4H
Bit
Name
5
BRCK
5
BRCK
R/W
4
TF3
R/W
3
TR3
R/W
2
1
0
T3PS[2:0]
R/W
Reset value: 0000 0000b
Description
Serial port 0 baud rate clock source
This bit selects which Timer is used as the baud rate clock source when serial
port 0 is in Mode 1 or 3.
0 = Timer 1.
1 = Timer 3.
When using Timer 1 as the baud rate clock source, note that the Timer 1 interrupt should be disabled.
Timer 1 itself can be configured for either “ imer” or “ ounter” operation. It can be in any of its three
running modes.
owever, in the most typical applications, it is configured for “ imer” operation, in the
auto-reload mode (Mode 2). If using Timer 3 as the baud rate generator, its interrupt should also be
disabled.
Table 14–3. UART Baud Rate Equations
UART Mode
Baud Rate Clock Source
Baud Rate
0
System clock
FSYS / 12 or FSYS / 2 [1]
2
System clock
FSYS / 64 or FSYS / 32 [2]
1 or 3
Feb 20, 2016
2SMOD
Timer 1 (only for UART0)
[3]
32
×
FSYS
12 × (256 - TH1)
Page 70 of 179
or
2SMOD
32
×
FSYS
[4]
256 - TH1
Rev. 1.01
N76E616 Datasheet
UART Mode
Baud Rate Clock Source
Baud Rate
2SMOD
Timer 3 (for UART0)
32
1
Timer 3 (for UART1)
16
×
×
FSYS
[5]
Pr e - scale× (65536 - {R3H,R3L})
FSYS
[5]
Pr e - scale× (65536 - {R3H, R3L})
[1] SM2 (SCON.5) or SM2_1(SCON_1.5) is set as logic 1.
[2] SMOD (PCON.7) or SMOD_1(T3CON.7) is set as logic 1.
[3] Timer 1 is configured as a timer in auto-reload mode (Mode 2).
[4] T1M (CKCON.4) is set as logic 1. While SMOD is 1, TH1 should not be FFH.
[5] {R3H,R3L} in the equation means 256 × RH3 + RL3 . While SMOD is 1 and pre-scale is 1/1, {R3H,R3L} should
not be FFFFH.
Table 14–4 lists various commonly used baud rates and how they can be obtained with Timer 1. In
this mode, Timer 1 operates as an auto-reload Timer with SMOD (PCON.7) is 0 and T1M (CKCON.4)
is 0. Table 14–5 is related to UART0 for Timer 3. This table illustrates that when SMOD is 0. The
same setting doubles the baud rate for UART1.
Table 14–4. Commonly Used Baud Rates by Timer 1
Oscillator Frequency (MHz)
Baud Rate
(bps)
3.6864
7.3728
11.0592
14.7456
TH1 reload value
57600
-
-
-
-
38400
-
-
-
FFH
19200
-
FFH
-
FEH
9600
FFH
FEH
FDH
FCH
4800
FEH
FCH
FAH
F8H
2400
FCH
F8H
F4H
F0H
1200
F8H
F0H
E8H
E0H
300
E0H
C0H
A0H
80H
Table 14–5. Commonly Used Baud Rates by Timer 3
Oscillator Frequency (MHz)
Baud Rate
(bps)
3.6864
4
7.3728
8
11.0592
12
14.7456
16
{R3H,R3L} Reload Value
115200
FFFFH
-
FFFEH
-
FFFDH
-
FFFCH
-
57600
FFFEH
-
FFFCH
-
FFFAH
-
FFF8H
-
38400
FFFDH
-
FFFAH
-
FFF7H
-
FFF4H
FFF3H
19200
FFFAH
-
FFF4H
FFF3H
FFEEH
-
FFE8H
FFE6H
9600
FFF4H
FFF3H
FFE8H
FFE6H
FFDCH
FFD9H
FFD0H
FFCCH
Feb 20, 2016
Page 71 of 179
Rev. 1.01
N76E616 Datasheet
Oscillator Frequency (MHz)
Baud Rate
(bps)
3.6864
4
7.3728
8
11.0592
12
14.7456
16
{R3H,R3L} Reload Value
4800
FFE8H
FFE6H
FFD0H
FFCCH
FFB8H
FFB2H
FFA0H
FF98H
2400
FFD0H
FFCCH
FFA0H
FF98H
FF70H
FF64H
FF40H
FF30H
1200
FFA0H
FF98H
FF40H
FF30H
FEE0H
FEC8H
FE80H
FE5FH
300
FE80H
FE5FH
FD00H
FCBFH
FB80H
FB1EH
FA00H
F97DH
14.6 Framing Error Detection
Framing error detection is provided for asynchronous modes. (Mode 1, 2, or 3.) The framing error
occurs when a valid stop bit is not detected due to the bus noise or contention. The UART can detect
a framing error and notify the software.
The framing error bit, FE, is located in SCON.7. This bit normally serves as SM0. While the framing
error accessing enable bit SMOD0 (PCON.6) is set 1, it serves as FE flag. Actually, SM0 and FE
locate in different registers.
The FE bit will be set 1 via hardware while a framing error occurs. FE can be checked in UART
interrupt service routine if necessary. Note that SMOD0 should be 1 while reading or writing to FE. If
FE is set, any following frames received without frame error will not clear the FE flag. The clearing has
to be done via software.
14.7 Multiprocessor Communication
The N76E616 multiprocessor communication feature lets a master device send a multiple frame serial
message to a slave device in a multi-slave configuration. It does this without interrupting other slave
devices that may be on the same serial line. This feature can be used only in UART Mode 2 or 3. User
can enable this function by setting SM2 (SCON.5) as logic 1 so that when a byte of frame is received,
the serial interrupt will be generated only if the 9th bit is 1. (For Mode 2, the 9th bit is the stop bit.)
When the SM2 bit is 1, serial data frames that are received with the 9th bit as 0 do not generate an
interrupt. In this case, the 9th bit simply separates the slave address from the serial data.
When the master device wants to transmit a block of data to one of several slaves on a serial line, it
first sends out an address byte to identify the target slave. Note that in this case, an address byte
differs from a data byte. In an address byte, the 9th bit is 1 and in a data byte, it is 0. The address byte
interrupts all slaves so that each slave can examine the received byte and see if it is addressed by its
own slave address. The addressed slave then clears its SM2 bit and prepares to receive incoming
data bytes. The SM2 bits of slaves that were not addressed remain set, and they continue operating
normally while ignoring the incoming data bytes.
Feb 20, 2016
Page 72 of 179
Rev. 1.01
N76E616 Datasheet
Follow the steps below to configure multiprocessor communications:
1. Set all devices (masters and slaves) to UART Mode 2 or 3.
2. Write the SM2 bit of all the slave devices to 1.
3. The master device's transmission protocol is:
– First byte: the address, identifying the target slave device, (9th bit = 1).
– Next bytes: data, (9th bit = 0).
4. When the target slave receives the first byte, all of the slaves are interrupted because the 9th data
bit is 1. The targeted slave compares the address byte to its own address and then clears its SM2 bit
to receiving incoming data. The other slaves continue operating normally.
5. After all data bytes have been received, set SM2 back to 1 to wait for next address.
SM2 has no effect in Mode 0, and in Mode 1 can be used to check the validity of the stop bit. For
Mode 1 reception, if SM2 is 1, the receiving interrupt will not be issue unless a valid stop bit is
received.
14.8 Automatic Address Recognition
The automatic address recognition is a feature, which enhances the multiprocessor communication
feature by allowing the UART to recognize certain addresses in the serial bit stream by using
hardware to make the comparisons. This feature saves a great deal of software overhead by
eliminating the need for the software to examine every serial address, which passes by the serial port.
Only when the serial port recognizes its own address, the receiver sets RI bit to request an interrupt.
The automatic address recognition feature is enabled when the multiprocessor communication feature
is enabled, SM2 is set.
If desired, user may enable the automatic address recognition feature in Mode 1. In this configuration,
the stop bit takes the place of the ninth data bit. RI is set only when the received command frame
address matches the device’s address and is terminated by a valid stop bit.
Using the automatic address recognition feature allows a master to selectively communicate with one
or more slaves by invoking the “Given” slave address or addresses. ll of the slaves may be contacted
by using the “Broadcast” address. wo
s are used to define the slave address,
DD , and the
slave address mask, SADEN. SADEN is used to define which bits in the SADDR are to be used and
which bits are “don’t care”. he
DE
mask can be logically
Ded with the
DD
to create the
“Given” address, which the master will use for addressing each of the slaves. Use of the “Given”
address allows multiple slaves to be recognized while excluding others.
Feb 20, 2016
Page 73 of 179
Rev. 1.01
N76E616 Datasheet
SADDR – Slave 0 Address
7
6
5
4
3
2
1
0
SADDR[7:0]
R/W
Address: A9H
Bit
7:0
Reset value: 0000 0000b
Name
Description
SADDR[7:0]
Slave 0 address
his byte specifies the microcontroller’s own slave address for UATR0 multiprocessor communication.
SADEN – Slave 0 Address Mask
7
6
5
4
3
2
1
0
SADEN[7:0]
R/W
Address: B9H
Bit
7:0
Reset value: 0000 0000b
Name
Description
SADEN[7:0]
Slave 0 address mask
This byte is a mask byte of UART0 that contains “don’t-care” bits (defined by
zeros) to form the device’s “Given” address. The don’t-care bits provide the
flexibility to address one or more slaves at a time.
SADDR_1 – Slave 1 Address
7
6
5
4
3
SADDR_1[7:0]
R/W
2
Address: BBH
Bit
7:0
Name
Description
SADDR_1[7:0]
Slave 1 address
his byte specifies the microcontroller’s own slave address for UART1 multiprocessor communication.
4
3
SADEN_1[7:0]
R/W
Address: BAH
7:0
0
Reset value: 0000 0000b
SADEN_1 – Slave 1 Address Mask
7
6
5
Bit
1
2
1
0
Reset value: 0000 0000b
Name
Description
SADEN_1[7:0]
Slave 1 address mask
This byte is a mask byte of UART1 that contains “don’t-care” bits (defined by
zeros) to form the device’s “Given” address. The don’t-care bits provide the
flexibility to address one or more slaves at a time.
The following examples will help to show the versatility of this scheme.
Example 1, slave 0:
Feb 20, 2016
Page 74 of 179
Rev. 1.01
N76E616 Datasheet
SADDR = 11000000b
SADEN = 11111101b
Given = 110000X0b
Example 2, slave 1:
SADDR = 11000000b
SADEN = 11111110b
Given = 1100000Xb
In the above example, SADDR is the same and the SADEN data is used to differentiate between the
two slaves. Slave 0 requires 0 in bit 0 and it ignores bit 1. Slave 1 requires 0 in bit 1 and bit 0 is
ignored. A unique address for Slave 0 would be 1100 0010 since slave 1 requires 0 in bit 1. A unique
address for slave 1 would be 11000001b since 1 in bit 0 will exclude slave 0. Both slaves can be
selected at the same time by an address, which has bit 0 = 0 (for slave 0) and bit 1 = 0 (for slave 1).
hus, both could be addressed with
b as their “Broadcast” address.
In a more complex system, the following could be used to select slaves 1 and 2 while excluding slave
0:
Example 1, slave 0:
SADDR = 11000000b
SADEN = 11111001b
Given = 11000XX0b
Example 2, slave 1:
SADDR = 11100000b
SADEN = 11111010b
Given = 11100X0Xb
Example 3, slave 2:
SADDR = 11000000b
SADEN = 11111100b
Given = 110000XXb
In the above example, the differentiation among the 3 slaves is in the lower 3 address bits. Slave 0
requires that bit 0 = 0 and it can be uniquely addressed by 11100110b. Slave 1 requires that bit 1 = 0
and it can be uniquely addressed by 11100101b. Slave 2 requires that bit 2 = 0 and its unique address
is 11100011b. To select Slaves 0 and 1 and exclude Slave 2 use address 11100100b, since it is
necessary to make bit 2 = 1 to exclude slave 2.
he “Broadcast” address for each slave is created by taking the logical O
of
DD
and
DE .
Zeros in this result are treated as “don’t-cares”, e.g.:
SADDR
= 01010110b
SADEN
= 11111100b
Broadcast = 1111111Xb
Feb 20, 2016
Page 75 of 179
Rev. 1.01
N76E616 Datasheet
The use of don’t-care bits provides flexibility in defining the Broadcast address, however in most
applications, interpreting the “don’t-cares” as all ones; the broadcast address will be FFH.
On reset,
DD
and
DE
are initialized to
.
his produces a “Given” address of all “don’t
care” as well as a “Broadcast” address of all XXXXXXXXb (all “don’t care” bits). his ensures that the
serial port will reply to any address, and so that it is backwards compatible with the standard 80C51
microcontrollers that do not support automatic address recognition.
Feb 20, 2016
Page 76 of 179
Rev. 1.01
N76E616 Datasheet
2
15. INTER-INTEGRATED CIRCUIT (I C)
2
The Inter-Integrated Circuit (I C) bus serves as a serial interface between the microcontrollers and the
2
2
I C devices such as EEPROM, LCD module, temperature sensor, and so on. The I C bus used two
wires design (a serial data line SDA and a serial clock line SCL) to transfer information between
devices.
2
The I C bus uses bi-directional data transfer between masters and slaves. There is no central master
and the multi-master system is allowed by arbitration between simultaneously transmitting masters.
The serial clock synchronization allows devices with different bit rates to communicate via one serial
2
bus. The I C bus supports four transfer modes including master transmitter, master receiver, slave
2
receiver, and slave transmitter. The I C interface only supports 7-bit addressing mode. A special mode
2
General Call is also available. The I C can meet both standard (up to 100kbps) and fast (up to 400k
bps) speeds.
15.1 Functional Description
For a bi-directional transfer operation, the SDA and SCL pins should be open-drain pads. These
implements a wired-AND function, which is essential to the operation of the interface. A low level on
2
2
an I C bus line is generated when one or more I C devices output a logic 0. A high level is generated
2
when all I C devices output logic 1, allowing the pull-up resistors to pull the line high. In N76E616, user
2
should set output latches of P2.3 and P2.4. as logic 1 before enabling the I C function by setting
I2CEN (I2CON.6).
VDD
RUP
RUP
SDA
SCL
SDA
SCL
SDA
N76E616
SCL
Other MCU
SDA
SCL
Slave Device
2
Figure 15-1. I C Bus Interconnection
2
The I C is considered free when both lines are high. Meanwhile, any device, which can operate as a
master can occupy the bus and generate one transfer after generating a START condition. The bus
now is considered busy before the transfer ends by sending a STOP condition. The master generates
all of the serial clock pulses and the START and STOP condition. However if there is no START
Feb 20, 2016
Page 77 of 179
Rev. 1.01
N76E616 Datasheet
condition on the bus, all devices serve as not addressed slave. The hardware looks for its own slave
address or a General Call address. (The General Call address detection may be enabled or disabled
by GC (I2ADDR.0).) If the matched address is received, an interrupt is requested.
2
Every transaction on the I C bus is 9 bits long, consisting of 8 data bits (MSB first) and a single
acknowledge bit. The number of bytes per transfer (defined as the time between a valid START and
STOP condition) is unrestricted but each byte has to be followed by an acknowledge bit. The master
device generates 8 clock pulse to send the 8-bit data. After the 8th falling edge of the SCL line, the
device outputting data on the SDA changes that pin to an input and reads in an acknowledge value on
the 9th clock pulse. After 9th clock pulse, the data receiving device can hold SCL line stretched low if
next receiving is not prepared ready. It forces the next byte transaction suspended. The data
transaction continues when the receiver releases the SCL line.
SDA
MSB
LSB
ACK
8
9
SCL
1
2
START
Condition
STOP
Condition
2
Figure 15-2. I C Bus Protocol
15.1.1 START and STOP Condition
2
The protocol of the I C bus defines two states to begin and end a transfer, START (S) and STOP (P)
conditions. A START condition is defined as a high-to-low transition on the SDA line while SCL line is
high. The STOP condition is defined as a low-to-high transition on the SDA line while SCL line is high.
2
The master always generates a START or a STOP condition and I C bus is considered busy after a
START condition and free after a STOP condition. After issuing the STOP condition successful, the
original master device will release the control authority and turn back as a not addressed slave.
2
Consequently, the original addressed slave will become a not addressed slave. The I C bus is free
and listens to next START condition of next transfer.
A data transfer is always terminated by a STOP condition generated by the master. However, if a
master still wishes to communicate on the bus, it can generate a repeated START (Sr) condition and
address the pervious or another slave without first generating a STOP condition. Various combinations
of read/write formats are then possible within such a transfer.
Feb 20, 2016
Page 78 of 179
Rev. 1.01
N76E616 Datasheet
SDA
SCL
START
STOP
Repeated
START
START
STOP
Figure 15-3. START, Repeated START, and STOP Conditions
15.1.2 7-Bit Address with Data Format
Following the START condition is generated, one byte of special data should be transmitted by the
master. It includes a 7-bit long slave address (SLA) following by an 8th bit, which is a data direction bit
(R/W), to address the target slave device and determine the direction of data flow. If R/W bit is 0, it
indicates that the master will write information to a selected slave. Also, if R/W bit is 1, it indicates that
the master will read information from the addressed slave. An address packet consisting of a slave
address and a read (R) or a write (W) bit is called SLA+R or SLA+W, respectively. A transmission
basically consists of a START condition, a SLA+W/R, one or more data packets and a STOP
condition. After the specified slave is addressed by SLA+W/R, the second and following 8-bit data
bytes issue by the master or the slave devices according to the R/W bit configuration.
here is an exception called “General
all” address, which can address all devices by giving the first
byte of data all 0. A General Call is used when a master wishes to transmit the same message to
several slaves in the system. When this address is used, other devices may respond with an
acknowledge or ignore it according to individual software configuration. If a device response the
General Call, it operates as like in the slave-receiver mode. Note that the address 0x00 is reserved for
2
General Call and cannot be used as a slave address, therefore, in theory, a 7-bit addressing I C bus
accepts 127 devices with their slave addresses 1 to 127.
SDA
SCL
S
1-7
8
9
ADDRESS
W/R
ACK
1-7
8
DATA
9
1-7
ACK
8
DATA
9
ACK
P
2
Figure 15-4. Data Format of One I C Transfer
During the data transaction period, the data on the SDA line should be stable during the high period of
the clock, and the data line can only change when SCL is low.
Feb 20, 2016
Page 79 of 179
Rev. 1.01
N76E616 Datasheet
15.1.3 Acknowledge
The 9th SCL pulse for any transferred byte is dedicated as an Acknowledge (ACK). It allows receiving
devices (which can be the master or slave) to respond back to the transmitter (which also can be the
master or slave) by pulling the SDA line low. The master generates the acknowledge-related clock
pulse. The transmitter should release control of SDA line during the acknowledge clock pulse. The
ACK is an active-low signal, pulling the SDA line low during the clock pulse high duty, indicates to the
transmitter that the device has received the transmitted data. Commonly, a receiver, which has been
addressed is requested to generate an ACK after each byte has been received. When a slave receiver
does not acknowledge (NACK) the slave address, the slave should leave the SDA line high so that the
mater can generate a STOP or a repeated START condition.
If a slave-receiver does acknowledge the slave address, it switches itself to not addressed slave mode
and cannot receive any more data bytes. This slave leaves the SDA line high. The master should
generate a STOP or a repeated START condition.
If a master-receiver is involved in a transfer, because the master controls the number of bytes in the
transfer, it should signal the end of data to the slave-transmitter by not generating an acknowledge on
the last byte. The slave-transmitter then switches to not addressed mode and releases the SDA line to
allow the master to generate a STOP or a repeated START condition.
SDA Output By Transmitter
SDA Output By Receiver
SDA = 0, Acknowledge (ACK)
SDA = 1, Not Acknowledge (NACK)
SCL From Master
1
2
8
9
Clock Pulse For
Acknowledge Bit
START
Condition
Figure 15-5. Acknowledge Bit
15.1.4 Arbitration
A master may start a transfer only if the bus is free. It is possible for two or more masters to generate
a START condition. In these situations, an arbitration scheme takes place on the SDA line, while SCL
is high. During arbitration, the first of the competing master devices to place a '1' (high) on SDA while
another master transmits a '0' (low) switches off its data output stage because the level on the bus
does not match its own level. The arbitration lost master switches to the not addressed slave
immediately to detect its own slave address in the same serial transfer whether it is being addressed
by the winning master. It also releases SDA line to high level for not affecting the data transfer
Feb 20, 2016
Page 80 of 179
Rev. 1.01
N76E616 Datasheet
continued by the winning master. However, the arbitration lost master continues generating clock
pulses on SCL line until the end of the byte in which it loses the arbitration.
All masters continuously monitoring the SDA line after outputting data carry out arbitration. If the value
read from the SDA line does not match the value that the master has to output, it has lost the
arbitration. Note that a master can only lose arbitration when it outputs a high SDA value while another
master outputs a low value. Arbitration will continue until only one master remains, and this may take
many bits. Its first stage is a comparison of address bits, and if both masters are trying to address the
same device, arbitration continues on to the comparison of data bits or acknowledge bit.
DATA 1 From Master 1
Master 1 loses arbitration for DATA 1 ≠ SDA.
It immediately switches to not addressed slave
and outputs high level.
DATA 2 From Master 2
SDA Line
SCL Line
START
condition
Figure 15-6. Arbitration Procedure of Two Masters
2
Since control of the I C bus is decided solely on the address or master code and data sent by
competing masters, there is no central master, nor any order of priority on the bus.
Slaves are not involved in the arbitration procedure.
2
15.2 Control Registers of I C
2
There are five control registers to interface the I C bus, including I2CON, I2STAT, I2DAT, I2ADDR,
and I2CLK. These registers provide protocol control, status, data transmitting and receiving functions,
2
and clock rate configuration. The following registers relate to I C function.
Feb 20, 2016
Page 81 of 179
Rev. 1.01
N76E616 Datasheet
2
I2CON – I C Control (Bit-addressable)
7
6
5
I2CEN
STA
R/W
R/W
Address: C0H
Bit
Name
4
STO
R/W
3
SI
R/W
2
AA
R/W
1
0
Reset value: 0000 0000b
Description
7
-
6
I2CEN
5
STA
START flag
2
When STA is set, the I C generates a START condition if the bus is free. If the bus
2
is busy, the I C waits for a STOP condition and generates a START condition
following.
2
If STA is set while the I C is already in the master mode and one or more bytes
2
have been transmitted or received, the I C generates a repeated START
condition.
Note that STA can be set anytime even in a slave mode, but STA is not hardware
automatically cleared after START or repeated START condition has been
detected. User should take care of it by clearing STA manually.
4
STO
STOP flag
2
When STO is set if the I C is in the master mode, a STOP condition is transmitted
to the bus. STO is automatically cleared by hardware once the STOP condition
has been detected on the bus.
2
The STO flag setting is also used to recover the I C device from the bus error
2
state (I2STAT as 00H). In this case, no STOP condition is transmitted to the I C
bus.
If the STA and STO bits are both set and the device is original in the master
2
mode, the I C bus will generate a STOP condition and immediately follow a
START condition. If the device is in slave mode, STA and STO simultaneous
2
setting should be avoid from issuing illegal I C frames.
3
SI
I C interrupt flag
2
SI flag is set by hardware when one of 26 possible I C statuses (besides F8H
status) is entered. After SI is set, the software should read I2STAT register to
determine which step has been passed and take actions for next step.
SI is cleared by software. Before the SI is cleared, the low period of SCL line is
stretched. The transaction is suspended. It is useful for the slave device to deal
with previous data bytes until ready for receiving the next byte.
The serial transaction is suspended until SI is cleared by software. After SI is
2
cleared, I C bus will continue to generate START or repeated START condition,
STOP condition, 8-bit data, or so on depending on the software configuration of
controlling byte or bits. Therefore, user should take care of it by preparing suitable
setting of registers before SI is software cleared.
Feb 20, 2016
Reserved
2
I C bus enable
2
0 = I C bus Disabled.
2
1 = I C bus Enabled.
2
Before enabling the I C, P2.3 and P0.6 port latches should be set to logic 1.
2
Page 82 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
2
AA
1:0
-
Description
Acknowledge assert flag
If the AA flag is set, an ACK (low level on SDA) will be returned during the
2
acknowledge clock pulse of the SCL line while the I C device is a receiver or an
own-address-matching slave.
If the AA flag is cleared, a NACK (high level on SDA) will be returned during the
2
acknowledge clock pulse of the SCL line while the I C device is a receiver or an
own-address-matching slave. A device with its own AA flag cleared will ignore its
own salve address and the General Call. Consequently, SI will note be asserted
and no interrupt is requested.
Note that if an addressed slave does not return an ACK under slave receiver
mode or not receive an ACK under slave transmitter mode, the slave device will
become a not addressed slave. It cannot receive any data until its AA flag is set
and a master addresses it again.
There is a special case of I2STAT value C8H occurs under slave transmitter
mode. Before the slave device transmits the last data byte to the master, AA flag
can be cleared as 0. Then after the last data byte transmitted, the slave device will
actively switch to not addressed slave mode of disconnecting with the master. The
further reading by the master will be all FFH.
Reserved
2
I2STAT – I C Status
7
6
5
I2STAT[7:3]
R
4
3
2
0
R
Address: BDH
Bit
1
0
0
0
R
R
Reset value: 1111 1000b
Name
Description
7:3
I2STAT[7:3]
I C status code
The MSB five bits of I2STAT contains the status code. There are 27 possible
status codes. When I2STAT is F8H, no relevant state information is available
2
and SI flag keeps 0. All other 26 status codes correspond to the I C states.
When each of these statuses is entered, SI will be set as logic 1 and an
interrupt is requested.
2:0
0
2
Reserved
The least significant three bits of I2STAT are always read as 0.
2
I2DAT – I C Data
7
6
5
4
3
2
1
0
I2DAT[7:0]
R/W
Address: BCH
Bit
7:0
Feb 20, 2016
Reset value: 0000 0000b
Name
I2DAT[7:0]
Description
2
I C data
2
I2DAT contains a byte of the I C data to be transmitted or a byte, which has just
received. Data in I2DAT remains as long as SI is logic 1. The result of reading
2
or writing I2DAT during I C transceiving progress is unpredicted.
While data in I2DAT is shifted out, data on the bus is simultaneously being
shifted in to update I2DAT. I2DAT always shows the last byte that presented on
2
the I C bus. Thus, the event of lost arbitration, the original value of I2DAT
changes after the transaction.
Page 83 of 179
Rev. 1.01
N76E616 Datasheet
2
I2ADDR – I C Own Slave Address
7
6
5
4
I2ADDR[7:1]
R/W
3
2
Address: C1H
Bit
Name
7:1
1
0
GC
R/W
Reset value: 0000 0000b
Description
2
I2ADDR[7:1]
I C device’s own slave address
In master mode:
These bits have no effect.
In slave mode:
2
These 7 bits define the slave address of this I C device by user. The master
2
should address I C device by sending the same address in the first byte data
2
after a START or a repeated START condition. If the AA flag is set, this I C
device will acknowledge the master after receiving its own address and
become an addressed slave. Otherwise, the addressing from the master will
be ignored.
Note that I2ADDR[7:1] should not remain its default value of all 0, because
address 0x00 is reserved for General Call.
6
General Call bit
In master mode:
This bit has no effect.
GC
In slave mode:
0 = The General Call is always ignored.
1 = The General Call is recognized if AA flag is 1; otherwise, it is ignored if AA
is 0.
2
I2CLK – I C Clock
7
6
5
4
3
2
1
0
I2CLK[7:0]
R/W
Address: BEH
Bit
7:0
Reset value: 0000 1110b
Name
Description
I2CLK[7:0]
I C clock setting
In master mode:
2
This register determines the clock rate of I C bus when the device is in a master
mode. The clock rate follows the equation,
FSYS
4 × (I2CLK + 1)
.
2
The default value will make the clock rate of I C bus 266k bps if the peripheral
clock is 16 MHz. Note that the I2CLK value of 00H and 01H are not valid. This is
an implement limitation.
2
In slave mode:
2
This byte has no effect. In slave mode, the I C device will automatically
synchronize with any given clock rate up to 400k bps.
Feb 20, 2016
Page 84 of 179
Rev. 1.01
N76E616 Datasheet
15.3 Operating Modes
2
In I C protocol definition, there are four operating modes including master transmitter, master receiver,
slave receiver, and slave transmitter. There is also a special mode called General Call. Its operating is
similar to master transmitter mode.
15.3.1 Master Transmitter Mode
In the master transmitter mode, several bytes of data are transmitted to a slave receiver. The master
should prepare by setting desired clock rate in I2CLK. The master transmitter mode may now be
entered by setting STA (I2CON.5) bit as 1. The hardware will test the bus and generate a START
condition as soon as the bus becomes free. After a START condition is successfully produced, the SI
flag (I2CON.3) will be set and the status code in I2STAT show 08H. The progress is continued by
loading
D
with the target slave address and the data direction bit “write” (
W).
he
bit
should then be cleared to commence SLA+W transaction.
After the SLA+W byte has been transmitted and an acknowledge (ACK) has been returned by the
addressed slave device, the SI flag is set again and I2STAT is read as 18H. The appropriate action to
be taken follows user defined communication protocol by sending data continuously. After all data is
transmitted, the master can send a STOP condition by setting STO (I2CON.4) and then clearing SI to
terminate the transmission. A repeated START condition can also be generated without sending
STOP condition to immediately initial another transmission.
Feb 20, 2016
Page 85 of 179
Rev. 1.01
N76E616 Datasheet
(STA,STO,SI,AA) = (1,0,0,X)
A START will be transmitted
Normal
Arbitration lost
08H
A START has been transmitted
(STA,STO,SI,AA) = (X,0,0,X)
I2DAT = SLA+W
SLA+W will be transmitted
(STA,STO,SI,AA) = (X,0,0,1)
I2DAT = SLA+W
SLA+W will be transmitted
MT
68H
18H
SLA+W has been transmitted
ACK has been received
OR
20H
SLA+W has been transmitted
NACK has been received
78H
or
Arbitration lost and addressed
as slave receiver
ACK has been transmitted
OR
B0H
Arbitration lost and addressed
as slave transmitter
ACK has been transmitted
to corresponding
slave mode
(STA,STO,SI,AA)=(0,0,0,X)
I2DAT = Data Byte
Data byte will be transmitted
(STA,STO,SI,AA)=(1,0,0,X)
A repeated START will be
transmitted
28H
10H
Data byte has been transmitted
ACK has been received
or
A repeated START has
been transmitted
(STA,STO,SI,AA)=(0,1,0,X)
A STOP will be transmitted
(STA,STO,SI,AA)=(1,1,0,X)
A STOP followed by a
START will be transmitted
A STOP has been transmitted
A STOP has been transmitted
30H
Data byte has been transmitted
NACK has been received
38H
Arbitration lost in
SLA+W or Data byte
(STA,STO,SI,AA) =(0,0,0,X)
I2DAT = SLA+R
SLA+R will be transmitted
(STA,STO,SI,AA)=(0,0,0,X)
Not addressed slave
will be entered
(STA,STO,SI,AA)=(1,0,0,X)
A START will be transmitted
when the bus becomes free
MR
to master receiver
Figure 15-7. Flow and Status of Master Transmitter Mode
15.3.2 Master Receiver Mode
In the master receiver mode, several bytes of data are received from a slave transmitter. The
transaction is initialized just as the master transmitter mode. Following the START condition, I2DAT
should be loaded with the target slave address and the data direction bit “read” (
).
fter the
SLA+R byte is transmitted and an acknowledge bit has been returned, the SI flag is set again and
I2STAT is read as 40H. SI flag then should be cleared to receive data from the slave transmitter. If AA
flag (I2CON.2) is set, the master receiver will acknowledge the slave transmitter. If AA is cleared, the
master receiver will not acknowledge the slave and release the slave transmitter as a not addressed
slave. After that, the master can generate a STOP condition or a repeated START condition to
terminate the transmission or initial another one.
Feb 20, 2016
Page 86 of 179
Rev. 1.01
N76E616 Datasheet
(STA,STO,SI,AA) = (1,0,0,X)
A START will be transmitted
Normal
Arbitration lost
08H
A START has been transmitted
(STA,STO,SI,AA) = (X,0,0,X)
I2DAT = SLA+R
SLA+R will be transmitted
(STA,STO,SI,AA) = (X,0,0,1)
I2DAT = SLA+R
SLA+R will be transmitted
40H
or
Arbitration lost and addressed
as slave receiver
ACK has been transmitted
OR
MR
68H
SLA+R has been transmitted
ACK has been received
OR
48H
78H
B0H
SLA+R has been transmitted
NACK has been received
Arbitration lost and addressed
as slave transmitter
ACK has been transmitted
to corresponding
slave mode
(STA,STO,SI,AA)=(0,0,0,0)
Data byte will be received
NACK will be transmitted
(STA,STO,SI,AA)=(0,0,0,1)
Data byte will be received
ACK will be transmitted
(STA,STO,SI,AA)=(0,1,0,X)
A STOP will be transmitted
(STA,STO,SI,AA)=(1,1,0,X)
A STOP followed by a
START will be transmitted
A STOP has been transmitted
A STOP has been transmitted
(STA,STO,SI,AA)=(1,0,0,X)
A repeated START will be
transmitted
58H
50H
10H
Data byte has been received
NACK has been transmitted
I2DAT = Data Byte
Data byte has been received
ACK has been transmitted
I2DAT = Data Byte
A repeated START has
been transmitted
38H
Arbitration lost in NACK bit
(STA,STO,SI,AA) =(0,0,0,X)
I2DAT = SLA+W
SLA+W will be transmitted
(STA,STO,SI,AA)=(0,0,0,X)
Not addressed slave
will be entered
(STA,STO,SI,AA)=(1,0,0,X)
A START will be transmitted
when the bus becomes free
MT
to master transmitter
Figure 15-8. Flow and Status of Master Receiver Mode
15.3.3 Slave Receiver Mode
In the slave receiver mode, several bytes of data are received form a master transmitter. Before a
transmission is commenced, I2ADDR should be loaded with the address to which the device will
respond when addressed by a master. I2CLK does not affect in slave mode. The AA bit should be set
2
to enable acknowledging its own slave address. After the initialization above, the I C idles until it is
addressed by its own address with the data direction bit “write” (
W).
he slave receiver mode
may also be entered if arbitration is lost.
Feb 20, 2016
Page 87 of 179
Rev. 1.01
N76E616 Datasheet
After the slave is addressed by SLA+W, it should clear its SI flag to receive the data from the master
transmitter. If the AA bit is 0 during a transaction, the slave will return a non-acknowledge after the
next received data byte. The slave will also become not addressed and isolate with the master. It
cannot receive any byte of data with I2DAT remaining the previous byte of data, which is just received.
(STA,STO,SI,AA) = (0,0,0,1)
If own SLA+W is received,
ACK will be transmitted
60H
Own SLA+W has been received
ACK has been transmitted
I2DAT = own SLA+W
OR
68H
Arbitration lost and own SLA+W
has been received
ACK has been transmitted
I2DAT = own SLA+W
(STA,STO,SI,AA)=(X,0,0,1)
Data byte will be received
ACK will be transmitted
(STA,STO,SI,AA)=(X,0,0,0)
Data byte will be received
NACK will be transmitted
(STA,STO,SI,AA)=(X,0,0,X)
A STOP or repeated START
will be received
80H
88H
A0H
Data byte has been received
ACK has been transmitted
I2DAT = Data Byte
Data byte has been received
NACK has been transmitted
I2DAT = Data Byte
A STOP or repeated START
has been received
(STA,STO,SI,AA)=(0,0,0,1)
Not addressed slave will be
entered; own SLA will be
recognized; General Call will
be recognized if GC = 1
(STA,STO,SI,AA)=(1,0,0,0)
Not addressed slave will be
entered; no recognition of own
SLA or General Call;
A START will be transmitted
when the bus becomes free
(STA,STO,SI,AA)=(0,0,0,0)
Not addressed slave
will be entered; no recognition
of own SLA or General Call
(STA,STO,SI,AA)=(1,0,0,1)
Not addressed slave will be
entered; own SLA will be
recognized; General Call will
be recognized if GC = 1;
A START will be transmitted
when the bus becomes free
Figure 15-9. Flow and Status of Slave Receiver Mode
15.3.4 Slave Transmitter Mode
In the slave transmitter mode, several bytes of data are transmitted to a master receiver. After
2
I2ADDR and I2CON values are given, the I C wait until it is addressed by its own address with the
data direction bit “read” (
). he slave transmitter mode may also be entered if arbitration is lost.
After the slave is addressed by SLA+R, it should clear its SI flag to transmit the data to the master
receiver. Normally the master receiver will return an acknowledge after every byte of data is
transmitted by the slave. If the acknowledge is not received, it will transmit all logic 1 data if it
continues the transaction. It becomes a not addressed slave. If the AA flag is cleared during a
transaction, the slave transmits the last byte of data. The next transmitting data will be all logic 1 and
the slave becomes not addressed.
Feb 20, 2016
Page 88 of 179
Rev. 1.01
N76E616 Datasheet
(STA,STO,SI,AA) = (0,0,0,1)
If own SLA+R is received,
ACK will be transmitted
A8H
Own SLA+R has been received
ACK has been transmitted
I2DAT = own SLA+R
OR
B0H
Arbitration lost and own SLA+R
has been received
ACK has been transmitted
I2DAT = own SLA+R
(STA,STO,SI,AA)=(X,0,0,1)
I2DAT = Data Byte
Data byte will be transmitted
ACK will be received
(STA,STO,SI,AA)=(X,0,0,X)
I2DAT = Data Byte
Data byte will be transmitted
NACK will be received
(STA,STO,SI,AA)=(X,0,0,0)
I2DAT = Last Data Byte
Last data byte will be transmitted
ACK will be received
(STA,STO,SI,AA)=(X,0,0,X)
A STOP or repeated START
will be received
B8H
C0H
C8H
A0H
Data byte has been transmitted
ACK has been received
Data byte has been transmitted
NACK has been received
Last Data byte has been transmitted
ACK has been received
A STOP or repeated START
has been received
*
(STA,STO,SI,AA)=(0,0,0,0)
Not addressed slave
will be entered; no recognition
of own SLA or General Call
(STA,STO,SI,AA)=(0,0,0,1)
Not addressed slave will be
entered; own SLA will be
recognized; General Call will
be recognized if GC = 1
(STA,STO,SI,AA)=(1,0,0,0)
Not addressed slave will be
entered; no recognition of own
SLA or General Call;
A START will be transmitted
when the bus becomes free
flow is not recommended. If the MSB of next byte which the Slave is going to transmit is 0, it
* This
will hold SDA line. The STOP or repeated START cannot be successfully generated by Master.
(STA,STO,SI,AA)=(1,0,0,1)
Not addressed slave will be
entered; own SLA will be
recognized; General Call will
be recognized if GC = 1;
A START will be transmitted
when the bus becomes free
Figure 15-10. Flow and Status of Slave Transmitter Mode
15.3.5 General Call
The General Call is a special condition of slave receiver mode by been addressed with all logic 0 data
in slave address with data direction bit. Both GC (I2ADDR.0) bit and AA bit should be set as 1 to
enable acknowledging General Calls. The slave addressed by a General Call has different status code
in I2STAT with normal slave receiver mode. The General Call may also be produced if arbitration is
lost.
Feb 20, 2016
Page 89 of 179
Rev. 1.01
N76E616 Datasheet
(STA,STO,SI,AA) = (0,0,0,1)
GC = 1
If General Call is received,
ACK will be transmitted
70H
General Call has been received
ACK has been transmitted
I2DAT = 00H
OR
78H
Arbitration lost and General Call
has been received
ACK has been transmitted
I2DAT = 00H
(STA,STO,SI,AA)=(X,0,0,1)
Data byte will be received
ACK will be transmitted
(STA,STO,SI,AA)=(X,0,0,0)
Data byte will be received
NACK will be transmitted
(STA,STO,SI,AA)=(X,0,0,X)
A STOP or repeated START
will be received
90H
98H
A0H
Data byte has been received
ACK has been transmitted
I2DAT = Data Byte
Data byte has been received
NACK has been transmitted
I2DAT = Data Byte
A STOP or repeated START
has been received
(STA,STO,SI,AA)=(0,0,0,1)
Not addressed slave will be
entered; own SLA will be
recognized; General Call will
be recognized if GC = 1
(STA,STO,SI,AA)=(1,0,0,0)
Not addressed slave will be
entered; no recognition of own
SLA or General Call;
A START will be transmitted
when the bus becomes free
(STA,STO,SI,AA)=(0,0,0,0)
Not addressed slave
will be entered; no recognition
of own SLA or General Call
(STA,STO,SI,AA)=(1,0,0,1)
Not addressed slave will be
entered; own SLA will be
recognized; General Call will
be recognized if GC = 1;
A START will be transmitted
when the bus becomes free
Figure 15-11. Flow and Status of General Call Mode
15.3.6 Miscellaneous States
There are two I2STAT status codes that do not correspond to the 25 defined states, which are
mentioned in previous sections. These are F8H and 00H states.
The first status code F8H indicates that no relevant information is available during each transaction.
2
Meanwhile, the SI flag is 0 and no I C interrupt is required.
The other status code 00H means a bus error has occurred during a transaction. A bus error is caused
by a START or STOP condition appearing temporally at an illegal position such as the second through
eighth bits of an address or a data byte, and the acknowledge bit. When a bus error occurs, the SI flag
2
is set immediately. When a bus error is detected on the I C bus, the operating device immediately
switches to the not addressed salve mode, releases SDA and SCL lines, sets the SI flag, and loads
I2STAT as 00H. To recover from a bus error, the STO bit should be set and then SI should be cleared.
2
After that, STO is cleared by hardware and release the I C bus without issuing a real STOP condition
2
waveform on I C bus.
Feb 20, 2016
Page 90 of 179
Rev. 1.01
N76E616 Datasheet
There is a special case if a START or a repeated START condition is not successfully generated for
2
I C bus is obstructed by a low level on SDA line e.g. a slave device out of bit synchronization, the
2
problem can be solved by transmitting additional clock pulses on the SCL line. The I C hardware
transmits additional clock pulses when the STA bit is set, but no START condition can be generated
because the SDA line is pulled low. When the SDA line is eventually released, a normal START
condition is transmitted, state 08H is entered, and the serial transaction continues. If a repeated
2
START condition is transmitted while SDA is obstructed low, the I C hardware also performs the same
action as above. In this case, state 08H is entered instead of 10H after a successful START condition
is transmitted. Note that the software is not involved in solving these bus problems.
2
15.4 Typical Structure of I C Interrupt Service Routine
The following software example in C language for KEIL
TM
C51 compiler shows the typical structure of
2
the I C interrupt service routine including the 26 state service routines and may be used as a base for
user applications. User can follow or modify it for their own application. If one or more of the five
modes are not used, the associated state service routines may be removed, but care should be taken
that a deleted routine can never be invoked.
void I2C_ISR (void) interrupt 6
{
switch (I2STAT)
{
//===============================================
//Bus Error, always put in ISR for noise handling
//===============================================
case 0x00:
/*00H, bus error occurs*/
STO = 1;
//recover from bus error
break;
//===========
//Master Mode
//===========
case 0x08:
/*08H, a START transmitted*/
STA = 0;
//STA bit should be cleared by
software
I2DAT = SLA_ADDR1;
//load SLA+W/R
break;
case 0x10:
/*10H, a repeated START transmitted*/
STA = 0;
I2DAT = SLA_ADDR2;
break;
//=======================
//Master Transmitter Mode
//=======================
case 0x18:
/*18H,
SLA+W
transmitted,
ACK
received*/
I2DAT = NEXT_SEND_DATA1;
//load DATA
break;
Feb 20, 2016
Page 91 of 179
Rev. 1.01
N76E616 Datasheet
case 0x20:
/*20H,
SLA+W
transmitted,
NACK
received*/
STO = 1;
AA = 1;
//transmit STOP
//ready for ACK
own
SLA+W/R
or
General Call
break;
case 0x28:
/*28H,
DATA
transmitted,
ACK
received*/
if (Conti_TX_Data)
//if continuing to send DATA
I2DAT = NEXT_SEND_DATA2;
else
//if no DATA to be sent
{
STO = 1;
AA = 1;
}
break;
case 0x30:
/*30H,
DATA
transmitted,
NACK
received*/
STO = 1;
AA = 1;
break;
//===========
//Master Mode
//===========
case 0x38:
STA = 1;
break;
//====================
//Master Receiver Mode
//====================
case 0x40:
/*38H, arbitration lost*/
//retry to transmit START if bus free
/*40H,
SLA+R
transmitted,
ACK
received*/
AA = 1;
break;
case 0x48:
//ACK next received DATA
/*48H,
SLA+R
transmitted,
NACK
received*/
STO = 1;
AA = 1;
break;
case 0x50:
/*50H,
DATA
received,
ACK
transmitted*/
DATA_RECEIVED1 = I2DAT;
if (To_RX_Last_Data1)
AA = 0;
else
AA = 1;
break;
case 0x58:
//store received DATA
//if last DATA will be received
//not ACK next received DATA
//if continuing receiving DATA
/*58H,
DATA
received,
NACK
transmitted*/
DATA_RECEIVED_LAST1 = I2DAT;
STO = 1;
AA = 1;
break;
//====================================
//Slave Receiver and General Call Mode
//====================================
case 0x60:
/*60H,
own
SLA+W
received,
ACK
returned*/
AA = 1;
break;
Feb 20, 2016
Page 92 of 179
Rev. 1.01
N76E616 Datasheet
case 0x68:
/*68H, arbitration lost in SLA+W/R
own SLA+W received, ACK returned */
//not ACK next received DATA after
//arbitration lost
//retry to transmit START if bus free
AA = 0;
STA = 1;
break;
case 0x70:
/*70H,
General
Call
received,
ACK
returned */
AA = 1;
break;
case 0x78:
/*78H, arbitration lost in SLA+W/R
General
Call
received,
ACK
returned*/
AA = 0;
STA = 1;
break;
case 0x80:
/*80H,
previous
own
SLA+W,
DATA
own
SLA+W,
DATA
received,
ACK returned*/
DATA_RECEIVED2 = I2DAT;
if (To_RX_Last_Data2)
AA = 0;
else
AA = 1;
break;
case 0x88:
/*88H,
previous
received,
NACK returned, not addressed SLAVE
mode
entered*/
DATA_RECEIVED_LAST2 = I2DAT;
AA = 1;
//wait for ACK next Master addressing
break;
case 0x90:
/*90H, previous General Call, DATA
received,
ACK returned*/
DATA_RECEIVED3 = I2DAT;
if (To_RX_Last_Data3)
AA = 0;
else
AA = 1;
break;
case 0x98:
/*98H,
previous
General
Call,
DATA
received,
NACK returned, not addressed SLAVE
mode
entered*/
DATA_RECEIVED_LAST3 = I2DAT;
AA = 1;
break;
//==========
//Slave Mode
//==========
case 0xA0:
/*A0H,
STOP
or
repeated
received while
still addressed SLAVE mode*/
AA = 1;
break;
Feb 20, 2016
Page 93 of 179
START
Rev. 1.01
N76E616 Datasheet
//======================
//Slave Transmitter Mode
//======================
case 0xA8:
/*A8H,
own
SLA+R
received,
ACK
returned*/
I2DAT = NEXT_SEND_DATA3;
AA = 1;
break;
case 0xB0:
//when AA is ‘1’, not last data to be
//transmitted
/*B0H, arbitration lost in SLA+W/R
own SLA+R received, ACK returned */
I2DAT = DUMMY_DATA;
AA = 0;
//when AA is ‘0’, last data to be
//transmitted
//retry to transmit START if bus free
STA = 1;
break;
case 0xB8:
/*B8H,
previous
own
SLA+R,
DATA
transmitted,
ACK received*/
I2DAT = NEXT_SEND_DATA4;
if (To_TX_Last_Data)
AA = 0;
else
AA = 1;
break;
case 0xC0:
//if last DATA will be transmitted
/*C0H,
previous
own
SLA+R,
DATA
transmitted,
NACK received, not addressed SLAVE
mode
entered*/
AA = 1;
break;
case 0xC8:
/*C8H, previous own SLA+R, last DATA
transmitted, ACK received, not addressed
SLAVE
AA = 1;
break;
}//end of switch (I2STAT)
SI = 0;
I2C ISR
while(STO);
error
mode entered*/
//SI should be the last command of
//wait for STOP transmitted or bus
//free, STO is cleared by hardware
}//end of I2C_ISR
2
15.5 I C Time-Out
2
There is a 14-bit time-out counter, which can be used to deal with the I C bus hang-up. If the time-out
counter is enabled, the counter starts up counting until it overflows. Meanwhile I2TOF will be set by
2
hardware and requests I C interrupt. When time-out counter is enabled, setting flag SI to high will
2
reset counter and restart counting up after SI is cleared. If the I C bus hangs up, it causes the SI flag
not set for a period. The 14-bit time-out counter will overflow and require the interrupt service.
Feb 20, 2016
Page 94 of 179
Rev. 1.01
N76E616 Datasheet
0
FSYS
1/4
14-bit I2C Time-out Counter
1
I2TOF
Clear Counter
DIV
I2CEN
I2TOCEN
SI
2
Figure 15-12. I C Time-Out Counter
2
I2TOC – I C Time-out Counter
7
6
Address: BFH
Bit
5
-
4
-
Name
Description
2
I2TOCEN
I C time-out counter enable
2
0 = I C time-out counter Disabled.
2
1 = I C time-out counter Enabled.
1
DIV
0
I2TOF
3
-
2
I2TOCEN
R/W
1
0
DIV
I2TOF
R/W
R/W
Reset value: 0000 0000b
2
2
I C time-out counter clock divider
2
0 = The clock of I C time-out counter is FSYS/1.
2
1 = The clock of I C time-out counter is FSYS/4.
2
I C time-out flag
2
This flag is set by hardware if 14-bit I C time-out counter overflows. It is cleared
by software.
2
15.6 I C Interrupt
2
2
There are two I C flags, SI and I2TOF. Both of them can generate an I C event interrupt requests. If
2
2
I C interrupt mask is enabled via setting EI2C (EIE.0) and EA as 1, CPU will execute the I C interrupt
service routine once any of these two flags is set. User needs to check flags to determine what event
2
caused the interrupt. Both of I C flags are cleared by software.
Feb 20, 2016
Page 95 of 179
Rev. 1.01
N76E616 Datasheet
16. PIN INTERRUPT
The N76E616 provides pin interrupt input for each I/O pin to detect pin state if button or keypad set is
used. A maximum 8-channel pin interrupt detection can be assigned by I/O port sharing. The pin
interrupt is generated when any key is pressed on a keyboard or keypad, which produces an edge or
level triggering event. Pin interrupt may be used to wake the CPU up from Idle or Power-down mode.
Each channel of pin interrupt can be enabled and polarity controlled independently by PIPEN and
PINEN register. PICON selects which port that the pin interrupt is active. PITYP defines which type of
pin interrupt is used, level detect or edge detect. Each channel also has its own interrupt flag. There
are total eight pin interrupt flags located in PIF register. The respective flags for each pin interrupt
channel allow the interrupt service routine to poll on which channel on which the interrupt event
occurs. All flags in PIF register are set by hardware and should be cleared by software.
PIPS[2:0]
(PICON[2:0])
P0.0
P1.0
P2.0
P3.0
P4.0
P5.0
000
001
010
011
100
101
0
PIT0
PIF0
1
PINEN0
Pin Interrupt Channel 0
P0.1
P1.1
P2.1
P3.1
P4.1
P5.1
000
001
010
011
100
101
PIPEN0
0
PIT1
PIF1
1
PINEN1
Pin Interrupt Channel 1
PIPEN1
Pin Interrupt
P0.7
P1.7
P2.7
Reserved
Reserved
P5.7
000
001
010
011
100
101
0
PIT7
PIF7
1
PINEN7
Pin Interrupt Channel 7
PIPEN7
Figure 16-1. Pin Interface Block Diagram
Feb 20, 2016
Page 96 of 179
Rev. 1.01
N76E616 Datasheet
Pin interrupt is generally used to detect an edge transient from peripheral devices like keyboard or
keypad. During idle state, the system prefers to enter Power-down mode to minimize power
consumption and waits for event trigger. Pin interrupt can wake up the device from Power-down mode.
PICON – Pin Interrupt Control
7
6
Address: E9H
Bit
Name
7:3
-
2:0
PIPS[2:0]
PITYP – Pin Interrupt Type
7
6
PIT7
PIT6
R/W
R/W
Address: EDH
Bit
Name
n
PITn
5
-
4
-
Name
n
Feb 20, 2016
PINENn
2
1
0
PIPS[2:0]
R/W
Reset value: 0000 0000b
Description
Reserved
Pin interrupt port select
This field selects which port is active as the 8-channel of pin interrupt.
000 = Port 0.
001 = Port 1.
010 = Port 2.
011 = Port 3.
100 = Port 4.
101 = Port 5.
Others = Reserved.
5
PIT5
R/W
4
PIT4
R/W
3
PIT3
R/W
2
PIT2
R/W
1
0
PIT1
PIT0
R/W
R/W
Reset value: 0000 0000b
Description
Pin interrupt channel n type select
This bit selects which type that pin interrupt channel n is triggered.
0 = Level triggered.
1 = Edge triggered.
PINEN – Pin Interrupt Negative Polarity Enable.
7
6
5
4
PINEN7
PINEN6
PINEN5
PINEN4
R/W
R/W
R/W
R/W
Address: EAH
Bit
3
-
3
PINEN3
R/W
2
PINEN2
R/W
1
0
PINEN1
PINEN0
R/W
R/W
Reset value: 0000 0000b
Description
Pin interrupt channel n negative polarity enable
This bit enables low-level/falling edge triggering pin interrupt channel n. The level
or edge triggered selection depends on each control bit PITn in PICON.
0 = Low-level/falling edge detect Disabled.
1 = Low-level/falling edge detect Enabled.
Page 97 of 179
Rev. 1.01
N76E616 Datasheet
PIPEN – Pin Interrupt Positive Polarity Enable.
7
6
5
4
PIPEN7
PIPEN6
PIPEN5
PIPEN4
R/W
R/W
R/W
R/W
Address: EBH
Bit
Name
n
PIPENn
PIF – Pin Interrupt Flags
7
6
PIF7
PIF6
R (level)
R (level)
R/W (edge) R/W (edge)
Address: ECH
Bit
Name
n
Feb 20, 2016
PIFn
3
PIPEN3
R/W
2
PIPEN2
R/W
1
0
PIPEN1
PIPEN0
R/W
R/W
Reset value: 0000 0000b
Description
Pin interrupt channel n positive polarity enable
This bit enables high-level/rising edge triggering pin interrupt channel n. The level
or edge triggered selection depends on each control bit PITn in PICON.
0 = High-level/rising edge detect Disabled.
1 = High-level/rising edge detect Enabled.
5
PIF5
R (level)
R/W (edge)
4
PIF4
R (level)
R/W (edge)
3
PIF3
R (level)
R/W (edge)
2
PIF2
R (level)
R/W (edge)
1
0
PIF1
PIF0
R (level)
R (level)
R/W (edge) R/W (edge)
Reset value: 0000 0000b
Description
Pin interrupt channel n flag
If the edge trigger is selected, this flag will be set by hardware if the channel n of
pin interrupt detects an enabled edge trigger. This flag should be cleared by
software.
f the level trigger is selected, this flag follows the inverse of the input signal’s logic
level on the channel n of pin interrupt. Software cannot control it.
Page 98 of 179
Rev. 1.01
N76E616 Datasheet
17. 10-BIT ANALOG-TO-DIGITAL CONVERTER (ADC)
The N76E616 is embedded with a 10-bit SAR ADC. The ADC (analog-to-digital converter) allows
conversion of an analog input signal to a 10-bit binary representation of that signal. The N76E616 is
selected as 9-channel inputs in single end mode. The internal band-gap voltage also can be the
internal ADC input. The analog input, multiplexed into one sample and hold circuit, charges a sample
and hold capacitor. The output of the sample and hold capacitor is the input into the converter. The
converter then generates a digital result of this analog level via successive approximation and stores
the result in the result registers.
17.1 Functional Description
17.1.1 ADC Operation
0000
0001
ADCF
0010
10-bit SAR
ADC
0011
0100
0101
1111
A/D Conversion Start
0111
ADCEN
ADCHS[3:0]
FSYS
ADC Clock
Divider
ADC Interrupt
10
0100
ADC Clock Input
AIN0
AIN1
AIN2
AIN3
AIN4
AIN5
AIN6
AIN7
Internal Band-gap
ADCRH
ADCRL
ADC Result
Comparator
FADC
ADCDIV[2:0]
STADC
(P5.0)
ADCS
ADCEX
Figure 17-1. 10-bit ADC Block Diagram
Before ADC operation, the ADC circuit should be enabled by setting ADCEN (ADCCON1.0). This
makes ADC circuit active. It consumes extra power. Once ADC is not used, clearing ADCEN to turn
off ADC circuit saves power.
The ADC analog input pin should be specially considered. ADCHS[3:0] are channel selection bits that
control which channel is connected to the sample and hold circuit. User needs to configure selected
ADC input pins as input-only (high impedance) mode via respective bits in P0Mn registers. This
Feb 20, 2016
Page 99 of 179
Rev. 1.01
N76E616 Datasheet
configuration disconnects the digital output circuit of each selected ADC input pin. However, the digital
input circuit still works. Digital input may cause the input buffer to induce leakage current. To disable
the digital input buffer, the respective bits in P0DIDS should be set. Configuration above makes
selected ADC analog input pins pure analog inputs to allow external feeding of the analog voltage
signals. Also, the ADC clock rate needs to be considered carefully. The ADC maximum clock
frequency is listed in Table 31–9. Clock above the maximum clock frequency degrades ADC
performance unpredictably.
An A/D conversion is initiated by setting the ADCS bit (ADCCON0.6). When the conversion is
complete, the hardware will clear ADCS automatically, set ADCF (ADCCON0.7) and generate an
interrupt if enabled. The new conversion result will also be stored in ADCRH (most significant 8 bits)
1023×
and ADCRL (least significant 2 bits). The 10-bit ADC result value is
VAIN
VDD
.
Besides setting ADCS via software, the N76E616 is enhanced by supporting hardware triggering
method to start an A/D conversion. If ADCEX (ADCCON1.1) is set, the falling edges of STADC pin will
automatically trigger an A/D conversion. (The hardware trigger also sets ADCS by hardware.) Note
that during ADC is busy in converting (ADCS = 1), any conversion triggered by software or hardware
will be ignored and there is no warning presented.
The ADC acquisition time is programmable, which provides a range of 1 (1 + 0) to 256 (1 + 255) ADC
clock cycles, by configuring ADCAQT register. It is useful to preserve the accuracy of ADC result
especially when the input impedance of the analog input source is not ideally low. The programmable
acquisition time overcomes the high impedance of an analog input source.
By the way, digital circuitry inside and outside the device generates noise, which might affect the
accuracy of ADC measurements. If conversion accuracy is critical, the noise level can be reduced by
applying the following techniques:
1. Keep analog signal paths as short as possible. Make sure to run analog signals tracks well away
from high-speed digital tracks.
2. Place the device in Idle mode during a conversion.
3. If any AIN pins are used as digital outputs, it is essential that these do not switch while a conversion
is in progress.
17.1.2 ADC Conversion Result Comparator
The N76E616 ADC has a digital comparator, which compares the A/D conversion result with a 10-bit
constant value given in ACMPH and ACMPL registers. The ADC comparator is enabled by setting
Feb 20, 2016
Page 100 of 179
Rev. 1.01
N76E616 Datasheet
ADCMPEN (ADCCON2.5) and each compare will be done on every A/D conversion complete
moment. ADCMPO (ADCCON2.4) shows the compare result according to its output polarity setting bit
ADCMPOP (ADCCON2.6).
ADCR[9:0]
+
0
ADCMP[9:0]
-
1
ADCMPEN
(ADCCON2.5)
ADCMPO
(ADCCON2.4)
ADCMPOP
(ADCCON2.6)
Figure 17-2. ADC Result Comparator
17.2 Control Registers of ADC
ADCCON0 – ADC Control 0 (Bit-addressable)
7
6
5
4
ADCF
ADCS
R/W
R/W
Address: E8H
Bit
Name
3
ADCHS3
R/W
2
ADCHS2
R/W
1
0
ADCHS1
ADCHS0
R/W
R/W
Reset value: 0000 0000b
Description
7
ADCF
ADC flag
This flag is set when an A/D conversion is completed. The ADC result can be
read. While this flag is 1, ADC cannot start a new converting. This bit is
cleared by software.
6
ADCS
A/D converting software start trigger
Setting this bit 1 triggers an A/D conversion. This bit remains logic 1 during
A/D converting time and is automatically cleared via hardware right after
conversion complete. The meaning of writing and reading ADCS bit is
different.
Writing:
0 = No effect.
1 = Start an A/D converting.
Reading:
0 = ADC is in idle state.
1 = ADC is busy in converting.
5:4
-
3:0
ADCHS[3:0]
Feb 20, 2016
Reserved
A/D converting channel select
This filed selects the activating analog input source of ADC. If ADCEN is 0, all
inputs are disconnected.
0000 = AIN0.
0001 = AIN1.
0010 = AIN2.
0011 = AIN3.
0100 = AIN4.
0101 = AIN5.
0110 = AIN6.
0111 = AIN7.
1111 = Internal band-gap voltage.
Others = Reserved.
Page 101 of 179
Rev. 1.01
N76E616 Datasheet
ADCCON1 – ADC Control 1
7
6
5
ADCDIV[2:0]
R/W
Address: E1H
Bit
Name
4
3
-
2
-
1
0
ADCEX
ADCEN
R/W
R/W
Reset value: 0010 0000b
Description
Reserved
7
-
6:4
ADCDIV[2:0]
3:2
-
1
ADCEX
ADC external conversion trigger select
This bit selects the methods of triggering an A/D conversion.
0 = A/D conversion is started only via setting ADCS bit.
1 = A/D conversion is started via setting ADCS bit or by the falling edge of
STADC pin. Note that while ADCS is 1 (busy in converting), the ADC will
ignore the following external trigger until ADCS is hardware cleared.
0
ADCEN
ADC enable
0 = ADC circuit OFF.
1 = ADC circuit ON.
ADC clock divider
000 = FADC is FSYS/1.
001 = FADC is FSYS/2.
010 = FADC is FSYS/4. (By default.)
011 = FADC is FSYS/8.
100 = FADC is FSYS/16.
101 = FADC is FSYS/32.
110 = FADC is FSYS/64.
111 = FADC is FSYS/128.
Reserved
ADCCON2 – ADC Control 2
7
6
5
ADCMPOP ADCMPEN
R/W
R/W
Address: E2H
Bit
Name
4
ADCMPO
R
3
-
2
-
1
0
Reset value: 0000 0000b
Description
Reserved
7
-
6
ADCMPOP
ADC comparator output polarity
0 = ADCMPO is 1 if ADCR[9:0] is greater than or equal to ADCMP[9:0].
1 = ADCMPO is 1 if ADCR[9:0] is less than ADCMP[9:0].
5
ADCMPEN
ADC result comparator enable
0 = ADC result comparator Disabled.
1 = ADC result comparator Enabled.
4
ADCMPO
ADC comparator output value
This bit is the output value of ADC result comparator based on the setting of
ACMPOP. This bit updates after every A/D conversion complete.
3:0
-
Feb 20, 2016
Reserved
Page 102 of 179
Rev. 1.01
N76E616 Datasheet
ADCAQT – ADC Acquisition Time
7
6
5
4
3
ADCAQT[7:0]
R/W
2
Address: F2H
Bit
7:0
Name
Description
ADCAQT[7:0]
ADC acquisition time
This 8-bit field decides the acquisition time for ADC sampling, following by
equation below:
1 + ADCAQT
ADC acquisition time =
.
FADC
Note that this field should not be changed when ADC is in converting.
Name
n
0
Reset value: 0000 0000b
P0DIDS – P0 Digital Input Disconnect
7
6
5
P07DIDS
P06DIDS
P05DIDS
R/W
R/W
R/W
Address: F6H
Bit
1
P0nDIDS
4
P04DIDS
R/W
3
P03DIDS
R/W
2
P02DIDS
R/W
1
0
P01DIDS
P00DIDS
R/W
R/W
Reset value: 0000 0000b
Description
P0.n digital input disable
0 = P0.n digital input Enabled.
1 = P0.n digital input Disabled. P0.n is read always 0.
ADCRH – ADC Result High Byte
7
6
5
4
3
2
1
0
ADCR[9:2]
R
Address: C3H
Bit
7:0
Reset value: 0000 0000b
Name
ADCR[9:2]
Description
ADC result high byte
The most significant 8 bits of the ADC result stored in this register.
ADCRL – ADC Result Low Byte
7
6
5
Address: C2H
Bit
1:0
Feb 20, 2016
Name
ADCR[1:0]
4
-
3
-
2
-
1
0
ADCR[1:0]
R
Reset value: 0000 0000b
Description
ADC result low byte
The least significant 2 bits of the ADC result stored in this register.
Page 103 of 179
Rev. 1.01
N76E616 Datasheet
ADCMPH – ADC Compare High Byte
7
6
5
4
3
2
1
0
ADCMP[9:2]
W/R
Address: E4H
Bit
7:0
Reset value: 0000 0000b
Name
Description
ADCMP[9:2]
ADC compare high byte
The most significant 8 bits of the ADC compare value stores in this register.
ADCMPL – ADC Compare Low Byte
7
6
5
Address: E3H
Bit
1:0
Feb 20, 2016
4
-
3
-
2
-
1
0
ADCMP[1:0]
W/R
Reset value: 0000 0000b
Name
Description
ADCMP[1:0]
ADC compare low byte
The least significant 2 bits of the ADC compare value stores in this register.
Page 104 of 179
Rev. 1.01
N76E616 Datasheet
18. LCD DRIVER
The Liquid Crystal Displays (LCD) panel is commonly used in a variety of applications to meet display
needs. The N76E616 is equipped with an LCD driver which can directly drive an LCD panel with 4
common pins (COM0 to COM3), 32 segment pins (SEG0 to SEG31) or 6 common pins (COM0 to
COM5), 30 segment pins (SEG2 to SEG31). The LCD driver supports 1/4 duty, 1/3 duty, or 1/6 duty.
The driving voltage supports 1/3 bias or 1/2 bias with waveform type A. When LXT or LIRC is selected
as the LCD clock source, the LCD display keeps working even during Power-down mode.
18.1 Functional Description
Setting LCDEN (LCDCON.7) as 1 turns on the LCD circuit. If LCDEN is set, SEG pins and COM pins
drive signals and display the LCD panel according to the internal display registers. The duty and bias
can be set by DUTY[1:0] (LCDCON[3:2]) and BIAS (LCDCON.4) bits individually. VLCD that drives LCD
panel is also adjusted between VDD and 0.9VDD by the VLCDADJ (LCDCON.6) bit. This is especially
suitable for the application of 5.0V system power with 4.5V LCD panel power. Note that user should
not change DUTY and BIAS settings while the LCD driver is enabled; otherwise, the output waveform
is unpredictable and may lead to a DC-component for one LCD frame.
The bias type of LCD driver is R type. Bias voltages are generated only from the internal resistor
ladder. The total value of the resistor ladder is selectable among 600 kΩ, 300 kΩ, and 150 kΩ by
RSEL[1:0] (LCDCON[1:0]). The 15 kΩ resistor ladder provides the best display contract on the LCD
panel, but it consumes large bias current. For a low power application, 300 kΩ or 600 kΩ is a suitable
choice. This feature makes user flexible between satisfactory display quality and power consumption.
The LCD clock source is selected by LCDCKS[1:0] (LCDCLK[5:4]) and its frequency is configured by
LCDDIV[2:0] (LCDCLK[2:0]). It is important to select the correct frame rate for the LCD display.
Normally, the frame rate is recommended to be 30 Hz to 100 Hz. A too low frame rate may introduce
flickering. When a frame rate is too high, it may lead to ghosting and unnecessary high power
consumption. Giving a proper frame rate according to the LCD panel requirement achieves a good
display quality. The LCD frequency follows equations below:
FLCD =
FLCD =
FLCD =
Divider
X
Divider
Divider
Feb 20, 2016
, when LCDCKS[1:0] = [0,0] (The LCD clock is from the system clock);
, when LCDCKS[1:0] = [0,1] (The LCD clock is from LXT);
, when LCDCKS[1:0] = [1,0] (The LCD clock is from LIRC).
Page 105 of 179
Rev. 1.01
N76E616 Datasheet
Each COM pin is selected sequentially according to the duty in a frame period. For 1/4 duty, COM0 to
COM3 generate LCD driving signals. Whereas, for 1/3 duty, COM0 to COM2 generate signals. COM3
does not generate signals but functions as a general purpose I/O. When 1/6 duty is selected, SEG0
and SEG1 function as COM4 and COM5. The original SEG0 and SEG1 with their control bits are all
unavailable.
COM0
COM1
COM2
COM3
1 Frame
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
1/FLCD
Figure 18-1. COM Driving Signals (1/4 Duty and 1/3 Bias)
1 Frame
COM0
COM1
COM2
COM0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
1/FLCD
Figure 18-2. COM Driving Signals (1/3 Duty and 1/3 Bias)
Feb 20, 2016
Page 106 of 179
Rev. 1.01
N76E616 Datasheet
COM0
COM1
COM2
COM3
COM4
COM5
1 frame
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
1/FLCD
Figure 18-3. COM Driving Signals (1/6 Duty and 1/3 Bias)
COM0
COM1
1 Frame
VLCD
1/2 VLCD
0
VLCD
1/2 VLCD
0
VLCD
COM2 1/2 VLCD
COM3
0
VLCD
1/2 VLCD
0
1/FLCD
Figure 18-4. COM Driving Signals (1/4 Duty and 1/2 Bias)
1 Frame
VLCD
Even frame
COM0 1/2 VLCD
0
VLCD
COM1 1/2 VLCD
0
VLCD
COM2 1/2 VLCD
0
1/FLCD
Figure 18-5. COM Driving Signals (1/3 Duty and 1/2 Bias)
Feb 20, 2016
Page 107 of 179
Rev. 1.01
N76E616 Datasheet
COM0
COM1
1 Frame
VLCD
1/2 VLCD
0
VLCD
1/2 VLCD
0
VLCD
COM2 1/2 VLCD
COM3
0
VLCD
1/2 VLCD
0
VLCD
COM4 1/2 VLCD
COM5
0
VLCD
1/2 VLCD
0
1/FLCD
Figure 18-6. COM Driving Signals (1/6 Duty and 1/2 Bias)
Each SEG pin signal corresponds to its LCD display data register. LCD data stored in the display
registers are transferred synchronously with the FLCD and in turn automatically generate the necessary
LCD driving signals to each SEG pin without program control. When the bit value of a display data
register is 1, the corresponding LCD pixel is darkened; when the bit value is 0, the pixel is cleared.
There are 32 internal registers for the LCD display data storage. LCDPTR determines which register
can be accessed by program. Each byte controls one SEG pin cross with different COM pins. To
display an LCD panel, proper data needs to be written into the LCDDAT after LCDPTR is given. The
accompanying LCD register map figures show how the internal LCD registers are mapped to the SEG
pins and COM pins of the display for the devices. Note that the unused bits and registers not used can
alternatively be allocated to general-purpose use.
Each SEG pin has its own enable bit SEGnEN located in LCDSEG0 to LCDSEG3 registers. These
bits control the SEG output signals. Please note several special conditions of SEGnEN bits, as
described below:
1. They are valid only when LCDEN (LCDCON.7) is 1. When LCDEN is 0, SEG pin functions as
general purpose I/O and its multi-functions other than LCD.
2. When 1/6 duty is selected, SEG0EN and SEG1EN are invalid.
3. HXT/LXT and AIN7 pins are shared with SEG pins. If HXT/LXT or AIN7 needs to be used, user
should clear their corresponding SEGnEN bits if LCD is enabled. Or SEG output signals makes
HXT/LXT and AIN7 function works abnormally.
Feb 20, 2016
Page 108 of 179
Rev. 1.01
N76E616 Datasheet
LCDDAT (bit)
(7) (6) (5) (4) (3) (2) (1) (0)
0H
1H
2H
3H
4H
5H
6H
7H
8H
9H
AH
BH
CH
DH
EH
FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
SEG0
SEG1
SEG2
SEG3
SEG4
SEG5
SEG6
SEG7
SEG8
SEG9
SEG10
SEG11
SEG12
SEG13
SEG14
SEG15
SEG16
SEG17
SEG18
SEG19
SEG20
SEG21
SEG22
SEG23
SEG24
SEG25
SEG26
SEG27
SEG28
SEG29
SEG30
SEG31
0H
1H
2H
3H
4H
5H
6H
7H
8H
9H
AH
BH
CH
DH
EH
FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
SEG0
SEG1
SEG2
SEG3
SEG4
SEG5
SEG6
SEG7
SEG8
SEG9
SEG10
SEG11
SEG12
SEG13
SEG14
SEG15
SEG16
SEG17
SEG18
SEG19
SEG20
SEG21
SEG22
SEG23
SEG24
SEG25
SEG26
SEG27
SEG28
SEG29
SEG30
SEG31
COM0
COM1
COM2
COM3
COM4
COM5
COM0
COM1
COM2
COM0
COM1
COM2
COM3
1/4 duty
: Unused
LCDDAT (bit)
(7) (6) (5) (4) (3) (2) (1) (0)
LCDPTR[4:0]
SEG0
SEG1
SEG2
SEG3
SEG4
SEG5
SEG6
SEG7
SEG8
SEG9
SEG10
SEG11
SEG12
SEG13
SEG14
SEG15
SEG16
SEG17
SEG18
SEG19
SEG20
SEG21
SEG22
SEG23
SEG24
SEG25
SEG26
SEG27
SEG28
SEG29
SEG30
SEG31
LCDPTR[4:0]
LCDPTR[4:0]
0H
1H
2H
3H
4H
5H
6H
7H
8H
9H
AH
BH
CH
DH
EH
FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
LCDDAT (bit)
(7) (6) (5) (4) (3) (2) (1) (0)
1/3 duty
1/6 duty
Figure 18-7. LCD Register Map
The nature of LCD requires that only AC voltages can be applied to their pixels as the application of
DC component to LCD pixels may degrade and cause permanent damage. To avoid this, the applied
waveforms are arranged such that the differential voltage seen by each segment has an average
value of zero, and such that the actual RMS voltage applied to each pixel, which is equal to the RMS
value of the voltage on the COM pin minus the voltage applied to the SEG pin. This differential RMS
voltage must be greater than the LCD threshold voltage for the pixel to be darkened and less than the
threshold voltage for the pixel to be cleared.
The accompanying timing diagrams depict the display driver signals generated by the microcontroller
for various values of bias. Diagrams show the default 1/4 duty waveforms for illustration.
Feb 20, 2016
Page 109 of 179
Rev. 1.01
N76E616 Datasheet
1 Frame
LCDDAT (bit)
(7) (6) (5) (4) (3) (2) (1) (0)
LCDPTR = 0H
0 0 1 1 SEG0
LCDPTR = 1H
0 1 1 0 SEG1
COM0
COM0
COM1
COM2
COM3
COM1
COM0
COM2
COM1
COM3
COM2
SEG0
COM3
SEG1
COM0 - SEG0
COM1 - SEG0
SEG0
SEG1
COM2 - SEG0
COM3 - SEG0
COM0 - SEG1
COM1 - SEG1
COM2 - SEG1
COM3 - SEG1
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
VLCD
2/3 VLCD
1/3 VLCD
0
-1/3 VLCD
-2/3 VLCD
-VLCD
Figure 18-8. Example of COM and SEG Driving Signals (1/3 Bias)
Feb 20, 2016
Page 110 of 179
Rev. 1.01
N76E616 Datasheet
LCDDAT (bit)
(7) (6) (5) (4) (3) (2) (1) (0)
LCDPTR = 0H
1 1 1 0 SEG0
LCDPTR = 1H
0 0 1 1 SEG1
1 Frame
COM0
COM0
COM1
COM2
COM3
COM1
COM0
COM2
COM1
COM3
COM2
VLCD
1/2 VLCD
0
VLCD
1/2 VLCD
0
VLCD
1/2 VLCD
0
VLCD
1/2 VLCD
0
VLCD
SEG0 1/2 VLCD
COM3
SEG1
COM0 - SEG0
COM1 - SEG0
SEG0
SEG1
COM2 - SEG0
COM3 - SEG0
COM0 - SEG1
COM1 - SEG1
COM2 - SEG1
COM3 - SEG1
0
VLCD
1/2 VLCD
0
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
VLCD
1/2 VLCD
0
-1/2 VLCD
-VLCD
Figure 18-9. Example of COM and SEG Driving Signals (1/2 Bias)
Feb 20, 2016
Page 111 of 179
Rev. 1.01
N76E616 Datasheet
18.2 Control Registers of LCD
LCDCON – LCD Control
7
6
LCDEN
VLCDADJ
R/W
R/W
Address: F9H
Bit
Name
5
-
4
BIAS
R/W
3
2
DUTY[1:0]
R/W
1
0
RSEL[1:0]
R/W
Reset value: 0000 0000b
Description
LCD enable
0 = LCD circuit OFF. Each COM and SEG pin functions as general purpose I/O
and its multi-functions other than LCD.
1 = LCD circuit ON. COM and enabled SEG pins generate the LCD driving
waveform.
7
LCDEN
6
VLCDADJ
5
-
4
BIAS
3:2
DUTY[1:0]
LCD duty
00 = 1/4 duty.
01 = 1/3 duty.
10 = 1/6 duty.
11 = Reserved.
Note that when 1/3 duty is selected, only COM0 to COM2 are used for LCD
driving. COM3 is not used and functions as a general purpose I/O. When 1/6 duty
is selected, SEG0 and SEG1 are not available. These pins function as COM4 and
COM5.
1:0
RSEL[1:0]
LCD resister select
This field selects the total value of the bias resistor ladder. The smaller the resister
value, the stronger the driving capability.
00 = 1 kΩ.
01 = 3 kΩ.
10 = 6 kΩ.
11 = Reserved.
VLCD adjust
0 = VLCD is VDD.
1 = VLCD is 0.9VDD.
Reserved
LCD bias
0 = 1/3 bias.
1 = 1/2 bias.
LCDCLK – LCD Clock Control
7
6
5
4
LCDCKS[1:0]
R/W
Address: FAH
Bit
7:6
Feb 20, 2016
Name
-
3
-
2
1
0
LCDDIV[2:0]
R/W
Reset value: 0000 0000b
Description
Reserved
Page 112 of 179
Rev. 1.01
N76E616 Datasheet
Bit
5:4
Name
Description
LCDCKS[1:0]
LCD clock source select
12
00 = FSYS/2 .
4
01 = LXT/2 .
4
10 = LIRC/2 .
11 = Reserved.
Note that when LXT or LIRC is selected as the LCD clock source, the LCD
display keeps working even during Power-down mode. If LXT is used as the
LCD clock source, user should turn on LXT first by software and segments
reduce 2 channels.(SEG29 and SEG30 are shared with Xin and Xout
pins of LXT)
3
-
2:0
LCDDIV[1:0]
LCDPTR – LCD Data Pointer
7
6
Address: FBH
Bit
Name
7:5
-
4:0
LCDPTR[4:0]
LCDDAT – LCD Data
7
6
Address: FCH
Bit
LCD clock divider
000 = 1/1.
001 = 1/2.
010 = 1/4.
011 = 1/8.
100 = 1/16.
101 = 1/32.
Others = Reserved.
5
-
4
3
2
LCDPTR[4:0]
R/W
1
0
Reset value: 0000 0000b
Description
Reserved
LCD data pointer
This field determines which LCD display data register is accessed by LCDDAT.
User should fill the target pointer value in LCDPTR before accessing LCDDAT.
5
4
3
2
LCDDAT[5:0]
R/W
1
0
Reset value: 0000 0000b
Name
7:6
-
5:0
LCDDAT[5:0]
Feb 20, 2016
Reserved
Description
Reserved
LCD data
The value written into this register will be displayed to the corresponding LCD
SEG and COM pins pointed by LCDPTR.
0 = LCD pixel is cleared.
1 = LCD pixel is darkened.
Page 113 of 179
Rev. 1.01
N76E616 Datasheet
LCDSEG0 – LCD Segment 0
7
6
5
SEG7EN
SEG6EN
SEG5EN
R/W
R/W
R/W
Address: E5H
4
SEG4EN
R/W
3
SEG3EN
R/W
2
SEG2EN
R/W
1
0
SEG1EN
SEG0EN
R/W
R/W
Reset value: 0000 0000b
LCDSEG1 – LCD Segment 1
7
6
5
SEG15EN
SEG14EN
SEG13EN
R/W
R/W
R/W
Address: E6H
4
SEG12EN
R/W
3
SEG11EN
R/W
2
SEG10EN
R/W
1
0
SEG9EN
SEG8EN
R/W
R/W
Reset value: 0000 0000b
LCDSEG2 – LCD Segment 2
7
6
5
SEG23EN
SEG22EN
SEG21EN
R/W
R/W
R/W
Address: E7H
4
SEG20EN
R/W
3
SEG19EN
R/W
2
SEG18EN
R/W
1
0
SEG17EN
SEG16EN
R/W
R/W
Reset value: 0000 0000b
LCDSEG3 – LCD Segment 3
7
6
5
SEG31EN
SEG30EN
SEG29EN
R/W
R/W
R/W
Address: EEH
4
SEG28EN
R/W
3
SEG27EN
R/W
2
SEG26EN
R/W
1
0
SEG25EN
SEG24EN
R/W
R/W
Reset value: 0000 0000b
Bit
7:0
Name
Description
SEGnEN
LCD SEGn pin enable
0 = SEGn pin Disabled.
1 = SEGn pin Enabled.
Note that when this bit is 1 and LCDEN is 1, reading from the corresponding bit of
I/O data register is always 0. Writing changes the I/O latch value.
18.3 LCD Program Flow
Before LCD driver is enabled, the I/O state shared with used COM and SEG pins should be carefully
considered. All the used COM and SEG pins generate analog output waveforms. Therefore, all the
corresponding I/O output mode should be set as input-only (high impedance) mode via respective bits
in PxMn registers. This configuration disconnects the digital output circuit of each used COM and SEG
pin so that I/O circuit will not interfere LCD output voltages and driving waveforms.
After configuration of I/O mode, user needs to determine the VLCD, duty, and bias selections according
to the target LCD panel. A suitable frame rate, normally 30 Hz to 100 Hz, is also important. User
needs to carefully give the LCDCLK register a proper value. If LXT is used as the LCD clock source,
user should turn on LXT first by software. Proper considerations above will achieve a good display
quality.
After the steps above, user can enable all the used SEG pins by setting the corresponding SEGnEN
bits in registers LCDSEG0 to LCDSEG3. The last step is to enable the LCD driver by setting LCDEN
Feb 20, 2016
Page 114 of 179
Rev. 1.01
N76E616 Datasheet
(LCDCON.7) bit as 1. This step generates LCD driving waveforms via all the used CON and SEG
pins. User can determine the LCDPTR and set LCDDAT to darken or clear each pixel on LCD panel
afterward.
The complete LCD driver demo code is illustrated as follows:
;******************************************************************************
;
This code illustrates how to enable LCD driver. A 3V, 1/4 duty, 1/3
;
bias with 4*COM and 16*SEG panel is used. The system VDD is 3.3V. LCD
;
uses LXT 32.768 kHz as its clock source. COM0~COM3 and SEG0~SEG15 are
;
used to drive the panel to shows “12345678” eight digits by the same
;
typology of Figure 18-8.
;******************************************************************************
NUM_1 EQU
01100000b
NUM_2 EQU
00111110b
NUM_3 EQU
01111010b
NUM_4 EQU
01100011b
NUM_5 EQU
01011011b
NUM_6 EQU
01011111b
NUM_7 EQU
01110001b
NUM_8 EQU
01111111b
ORG
0000h
;******************************************************************************
;
Configure I/O output mode
;******************************************************************************
ORL
P1M1,#11111111b
;Configure COM0~COM3, SEG0~SEG15 as
ANL
P1M2,#00000000b
;input only mode
ORL
P2M1,#00011111b
ANL
P2M2,#11100000b
ORL
P4M1,#01111111b
ANL
P4M2,#10000000b
;******************************************************************************
;
LCD setting
;******************************************************************************
MOV
LCDCON,#01000000b
;VLCD = 0.9VDD (VDD = 3.3V, VLCD =
;3.0V)
;1/4 duty, 1/3 bias, 150kΩ resistor
;ladder
;******************************************************************************
;
LCD clock setting
;******************************************************************************
MOV
TA,#0AAh
;TA protection
MOV
TA,#55h
;
ORL
CKEN,#01000000b
;Enable the LXT
Polling_LXT_stable:
MOV
A,CKSWT
JNB
ACC.6, Polling_LXT_stable
MOV
LCDCLK,#00010011b
;Waiting for the LXT stable
;Select LXT as LCD clock source
;Frame rate = (32768/16)/8/4 = 64
;******************************************************************************
;
Enable SEG pins and enable LCD
;******************************************************************************
MOV
LCDSEG0,#0FFh
;Enable SEG0~SEG15
MOV
LCDSEG1,#0FFh
Feb 20, 2016
Page 115 of 179
Rev. 1.01
N76E616 Datasheet
ORL
LCDCON,#80h
;******************************************************************************
;
Write LCD data to display “12345678”
;******************************************************************************
MOV
LCDPTR,#0
MOV
LCDDAT,#(NUM_8 & 0x0F)
MOV
LCDPTR,#1
MOV
LCDDAT,#(NUM_8 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#2
LCDDAT,#(NUM_7 & 0x0F)
LCDPTR,#3
LCDDAT,#(NUM_7 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#4
LCDDAT,#(NUM_6 & 0x0F)
LCDPTR,#5
LCDDAT,#(NUM_6 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#6
LCDDAT,#(NUM_5 & 0x0F)
LCDPTR,#7
LCDDAT,#(NUM_5 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#8
LCDDAT,#(NUM_4 & 0x0F)
LCDPTR,#9
LCDDAT,#(NUM_4 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#10
LCDDAT,#(NUM_3 & 0x0F)
LCDPTR,#11
LCDDAT,#(NUM_3 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#12
LCDDAT,#(NUM_2 & 0x0F)
LCDPTR,#13
LCDDAT,#(NUM_2 >> 4)
MOV
MOV
MOV
MOV
LCDPTR,#14
LCDDAT,#(NUM_1 & 0x0F)
LCDPTR,#15
LCDDAT,#(NUM_1 >> 4)
Feb 20, 2016
Page 116 of 179
Rev. 1.01
N76E616 Datasheet
19. TIMED ACCESS PROTECTION (TA)
The N76E616 has several features such as WDT and BOD that are crucial to proper operation of the
system. If leaving these control registers unprotected, errant code may write undetermined value into
them and results in incorrect operation and loss of control. To prevent this risk, the N76E616 has a
protection scheme, which limits the write access to critical SFRs. This protection scheme is
implemented using a timed access (TA). The following registers are related to the TA process.
TA – Timed Access
7
6
5
4
3
2
1
0
TA[7:0]
W
Address: C7H
Bit
7:0
Reset value: 0000 0000b
Name
TA[7:0]
Description
Timed access
The timed access register controls the access to protected SFRs. To access
protected bits, user should first write AAH to the TA and immediately followed by a
write of 55H to TA. After these two steps, a writing permission window is opened
for 4 clock cycles during this period that user may write to protected SFRs.
In timed access method, the bits, which are protected, have a timed write enable window. A write is
successful only if this window is active, otherwise the write will be discarded. When the software writes
AAH to TA, a counter is started. This counter waits for 3 clock cycles looking for a write of 55H to TA.
If the second write of 55H occurs within 3 clock cycles of the first write of AAH, then the timed access
window is opened. It remains open for 4 clock cycles during which user may write to the protected bits.
After 4 clock cycles, this window automatically closes. Once the window closes, the procedure should
be repeated to write another protected bits. Not that the TA protected SFRs are required timed access
for writing but reading is not protected. User may read TA protected SFR without giving AAH and 55H
to TA register. The suggestion code for opening the timed access window is shown below.
(CLR
EA)
;if any interrupt is enabled, disable temporally
MOV
TA,#0AAH
MOV
TA,#55H
(Instruction that writes a TA protected register)
(SETB
EA)
;resume interrupts enabled
Any enabled interrupt should be disabled during this procedure to avoid delay between these three
writings. If there is no interrupt enabled, the CLR EA and SETB EA instructions can be left out.
Feb 20, 2016
Page 117 of 179
Rev. 1.01
N76E616 Datasheet
Examples of timed assess are shown to illustrate correct or incorrect writing process.
Example 1,
MOV
MOV
ORL
TA,#0AAH
TA,#55H
WDCON,#data
;3 clock cycles
;3 clock cycles
;4 clock cycles
TA,#0AAH
TA,#55H
BODCON0,#data
;3
;3
;1
;4
TA,#0AAH
TA,#55H
WDCON,#data1
BODCON0,#data2
;3 clock cycles
;3 clock cycles
;3 clock cycles
;4 clock cycles
TA,#0AAH
;3
;1
;3
;4
Example 2,
MOV
MOV
NOP
ANL
clock
clock
clock
clock
cycles
cycles
cycle
cycles
Example 3,
MOV
MOV
MOV
ORL
Example 4,
MOV
NOP
MOV
ANL
TA,#55H
BODCON0,#data
clock
clock
clock
clock
cycles
cycle
cycles
cycles
In the first example, the writing to the protected bits is done before the 3-clock-cycle window closes. In
example 2, however, the writing to BODCON0 does not complete during the window opening, there
will be no change of the value of BODCON0. In example 3, the WDCON is successful written but the
BODCON0 write is out of the 3-clock-cycle window. Therefore, the BODCON0 value will not change
either. In Example 4, the second write 55H to TA completes after 3 clock cycles of the first write TA of
AAH, and thus the timed access window is not opened at all, and the write to the protected byte
affects nothing.
Feb 20, 2016
Page 118 of 179
Rev. 1.01
N76E616 Datasheet
20. INTERRUPT SYSTEM
20.1 Interrupt Overview
The purpose of the interrupt is to make the software deal with unscheduled or asynchronous events.
The N76E616 has a four-priority-level interrupt structure with 18 interrupt sources. Each of the
interrupt sources has an individual priority setting bits, interrupt vector and enable bit. In addition, the
interrupts can be globally enabled or disabled. When an interrupt occurs, the CPU is expected to
service the interrupt. This service is specified as an Interrupt Service Routine (ISR). The ISR resides
at a predetermined address as shown in Table 20–1. Interrupt Vectors. When the interrupt occurs if
enabled, the CPU will vector to the respective location depending on interrupt source, execute the
code at this location, stay in an interrupt service state until the ISR is done. Once an ISR has begun, it
can be interrupted only by a higher priority interrupt. The ISR should be terminated by a return from
interrupt instruction RETI. This instruction will force the CPU return to the instruction that would have
been next when the interrupt occurred.
Table 20–1. Interrupt Vectors
Vector
Address
Vector
Number
Vector
Address
Vector
Number
Reset
0000H
-
-
-
-
External interrupt 0
0003H
0
WDT interrupt
0053H
10
Timer 0 overflow
000BH
1
ADC interrupt
005BH
11
External interrupt 1
0013H
2
Timer 2B underflow/match 0
0063H
12
Timer 1 overflow
001BH
3
Timer 2C underflow/match 0
006BH
13
Serial port 0 interrupt
0023H
4
Timer 2D underflow/match 0
0073H
14
Timer 2A underflow/match 0
002BH
5
Serial port 1 interrupt
007BH
15
I C status/timer-out interrupt
0033H
6
Timer 3 overflow
0083H
16
Pin interrupt
003BH
7
Self Wake-up Timer interrupt
008BH
17
Brown-out detection interrupt
0043H
8
Source
2
Source
20.2 Enabling Interrupts
Each of individual interrupt sources can be enabled or disabled through the use of an associated
interrupt enable bit in the IE and EIE SFRs. There is also a global enable bit EA bit (IE.7), which can
be cleared to disable all the interrupts at once. It is set to enable all individually enabled interrupts.
Setting the EA bit to logic 0 disables all interrupt sources regardless of the individual interrupt-enable
settings. Note that interrupts which occur when the EA bit is set to logic 0 will be held in a pending
state, and will not be serviced until the EA bit is set back to logic 1. All interrupt flags that generate
interrupts can also be set via software. Thereby software initiated interrupts can be generated.
Feb 20, 2016
Page 119 of 179
Rev. 1.01
N76E616 Datasheet
Note that every interrupts, if enabled, is generated by a setting as logic 1 of its interrupt flag no matter
by hardware or software. User should take care of each interrupt flag in its own interrupt service
routine (ISR). Most of interrupt flags should be cleared by writing it as logic 0 via software to avoid
recursive interrupt requests.
IE – Interrupt Enable (Bit-addressable)
7
6
5
EA
EADC
EBOD
R/W
R/W
R/W
Address: A8H
Bit
Name
4
ES
R/W
3
ET1
R/W
2
EX1
R/W
1
0
ET0
EX0
R/W
R/W
Reset value: 0000 0000b
Description
Enable all interrupt
This bit globally enables/disables all interrupts that are individually enabled.
0 = All interrupt sources Disabled.
1 = Each interrupt Enabled depending on its individual mask setting. Individual
interrupts will occur if enabled.
7
EA
6
EADC
Enable ADC interrupt
0 = ADC interrupt Disabled.
1 = Interrupt generated by ADCF (ADCCON0.7) Enabled.
5
EBOD
Enable brown-out interrupt
0 = Brown-out detection interrupt Disabled.
1 = Interrupt generated by BOF (BODCON0.3) Enabled.
4
ES
Enable serial port 0 interrupt
0 = Serial port 0 interrupt Disabled.
1 = Interrupt generated by TI (SCON.1) or RI (SCON.0) Enabled.
3
ET1
Enable Timer 1 interrupt
0 = Timer 1 interrupt Disabled.
1 = Interrupt generated by TF1 (TCON.7) Enabled.
2
EX1
Enable external interrupt 1
0 = External interrupt 1 Disabled.
1 = Interrupt generated by ̅̅̅̅̅̅̅ pin Enabled.
1
ET0
Enable Timer 0 interrupt
0 = Timer 0 interrupt Disabled.
1 = Interrupt generated by TF0 (TCON.5) Enabled.
0
EX0
Enable external interrupt 0
0 = External interrupt 0 Disabled.
1 = Interrupt generated by ̅̅̅̅̅̅̅ pin Enabled.
EIE – Extensive Interrupt Enable
7
6
5
ET2D
ET2C
R/W
R/W
Address: 9BH
Bit
Name
7
Feb 20, 2016
-
4
EWDT
R/W
3
ET2B
R/W
2
ET2A
R/W
1
0
EPI
EI2C
R/W
R/W
Reset value: 0000 0000b
Description
Reserved
Page 120 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
Enable Timer 2D interrupt
0 = Timer 2D interrupt Disabled.
1 = Interrupt generated by TF2D (T2CON0.7) Enabled.
7
ET2D
6
-
5
ET2C
Enable Timer 2C interrupt
0 = Timer 2C interrupt Disabled.
1 = Interrupt generated by TF2C (T2CON0.6) Enabled.
4
EWDT
Enable WDT interrupt
0 = WDT interrupt Disabled.
1 = Interrupt generated by WDTF (WDCON.5) Enabled.
3
ET2B
Enable Timer 2B interrupt
0 = Timer 2B interrupt Disabled.
1 = Interrupt generated by TF2B (T2CON0.5) Enabled.
2
ET2A
Enable Timer 2A interrupt
0 = Timer 2A interrupt Disabled.
1 = Interrupt generated by TF2A (T2CON0.4) Enabled.
1
EPI
0
EI2C
Reserved
Enable pin interrupt
0 = Pin interrupt Disabled.
1 = Interrupt generated by any flags in PIF register Enabled.
2
Enable I C interrupt
2
0 = I C interrupt Disabled.
1 = Interrupt generated by SI (I2CON.3) or I2TOF (I2TOC.0) Enabled.
EIE1 – Extensive Interrupt Enable 1
7
6
5
Address: 9CH
Bit
Name
4
-
3
-
2
EWKT
R/W
1
0
ET3
ES_1
R/W
R/W
Reset value: 0000 0000b
Description
Reserved
7:3
-
2
EWKT
1
ET3
Enable Timer 3 interrupt
0 = Timer 3 interrupt Disabled.
1 = Interrupt generated by TF3 (T3CON.4) Enabled.
0
ES_1
Enable serial port 1 interrupt
0 = Serial port 1 interrupt Disabled.
1 = Interrupt generated by TI_1 (SCON_1.1) or RI_1 (SCON_1.0) Enabled.
Enable WKT interrupt
0 = WKT interrupt Disabled.
1 = Interrupt generated by WKTF (WKCON.4) Enabled.
20.3 Interrupt Priorities
There are four priority levels for all interrupts. They are level highest, high, low, and lowest; and they
are represented by level 3, level 2, level 1, and level 0. The interrupt sources can be individually set to
one of four priority levels by setting their own priority bits. Table 20–2 lists four priority setting.
Naturally, a low level priority interrupt can itself be interrupted by a high level priority interrupt, but not
Feb 20, 2016
Page 121 of 179
Rev. 1.01
N76E616 Datasheet
by any same level interrupt or lower level. In addition, there exists a pre-defined natural priority among
the interrupts themselves. The natural priority comes into play when the interrupt controller has to
resolve simultaneous requests having the same priority level.
In case of multiple interrupts, the following rules apply:
1. While a low priority interrupt handler is running, if a high priority interrupt arrives, the handler will be
interrupted and the high priority handler will run. When the high priority handler does “RETI”, the low
priority handler will resume. When this handler does “RETI”, control is passed back to the main
program.
2. If a high priority interrupt is running, it cannot be interrupted by any other source – even if it is a high
priority interrupt, which is higher in natural priority.
3. A low-priority interrupt handler will be invoked only if no other interrupt is already executing. Again,
the low priority interrupt cannot preempt another low priority interrupt, even if the later one is higher in
natural priority.
4. If two interrupts occur at the same time, the interrupt with higher priority will execute first. If both
interrupts are of the same priority, the interrupt, which is higher in natural priority, will be executed first.
This is the only context in which the natural priority matters.
This natural priority is defined as shown on Table 20–3. It also summarizes the interrupt sources, flag
bits, vector addresses, enable bits, priority bits, natural priority and the permission to wake up the CPU
from Power-down mode. For details of waking CPU up from Power-down mode, please see Section
22.2 “Power-Down Mode” on page 141.
Table 20–2. Interrupt Priority Level Setting
Interrupt Priority Control Bits
Interrupt Priority Level
IPH / EIPH / EIPH1
IP / EIP / EIP2
0
0
Level 0 (lowest)
0
1
Level 1
1
0
Level 2
1
1
Level 3 (highest)
Feb 20, 2016
Page 122 of 179
Rev. 1.01
N76E616 Datasheet
Table 20–3. Characteristics of Each Interrupt Source
Vector
Address
Interrupt Source
Interrupt Flag(s)
Natural
Priority
Enable Bit
Priority Control Bits
Power-down
Wake-up
Reset
0000H
-
Always
Enabled
Highest
-
Yes
External interrupt 0
0003H
IE0[1]
EX0
1
PX0, PX0H
Yes
Brown-out
0043H
BOF (BODCON0.3)
EBOD
2
PBOD, PBODH
Yes
Watchdog Timer
0053H
WDTF (WDCON.5)
EWDT
3
PWDT, PWDTH
Yes
ET0
4
PT0, PT0H
No
Timer 0
[2]
000BH
TF0
I C status/time-out
0033h
SI + I2TOF (I2TOC.0)
EI2C
5
PI2C, PI2CH
No
ADC
005Bh
ADCF
EADC
6
PADC, PADCH
No
External interrupt 1
0013H
IE1[1]
EX1
7
PX1, PX1H
Yes
EPI
8
PPI, PPIH
Yes
ET1
9
PT1, PT1H
No
2
Pin interrupt
003BH
[3]
PIF0 to PIF7 (PIF)
[2]
Timer 1
001BH
TF1
Serial port 0
0023H
RI + TI
ES
10
PS, PSH
No
Timer 2A
002Bh
TF2A[2]
ET2A
11
PT2A, PT2AH
No
0063H
[2]
ET2B
13
PT2B, PT2BH
No
[2]
ET2C
14
PT2C, PT2CH
No
[2]
Timer 2B
Timer 2C
006BH
TF2B
TF2C
Timer 2D
0073H
TF2D
ET2D
15
PT2D, PT2DH
No
Serial port 1
007BH
RI_1 + TI_1
ES_1
16
PS_1, PSH_1
No
[2]
Timer 3
0083H
TF3 (T3CON.4)
ET3
17
PT3, PT3H
No
Self Wake-up Timer
008BH
WKTF (WKCON.4)
EWKT
18
PWKT, PWKTH
Yes
[1] While the external interrupt pin is set as edge triggered (ITx = 1), its own flag IEx will be automatically cleared
if the interrupt service routine (ISR) is executed. While as level triggered (ITx = 0), IEx follows the inverse of
respective pin state. It is not controlled via software.
[2] TF0, TF1, or TF3 is automatically cleared if the interrupt service routine (ISR) is executed. TF2x is
automatically cleared if the interrupt service routine (ISR) is executed when Timer 2x is configured in its autoreload mode.
[3] If level triggered is selected for pin interrupt channel n, PIFn flag reflects the respective channel state. It is not
controlled via software.
IP – Interrupt Priority (Bit-addressable)[1]
7
6
5
PADC
PBOD
R/W
R/W
Address: B8H
Bit
Name
4
PS
R/W
3
PT1
R/W
1
0
PT0
PX0
R/W
R/W
Reset value: 0000 0000b
Description
Reserved
7
-
6
PADC
ADC interrupt priority low bit
5
PBOD
Brown-out detection interrupt priority low bit
4
PS
Feb 20, 2016
2
PX1
R/W
Serial port 0 interrupt priority low bit
Page 123 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
3
PT1
Timer 1 interrupt priority low bit
2
PX1
External interrupt 1 priority low bit
1
PT0
Timer 0 interrupt priority low bit
External interrupt 0 priority low bit
0
PX0
[1] IP is used in combination with the IPH to determine the priority of each interrupt source. See Table 20–2.
Interrupt Priority Level Setting for correct interrupt priority configuration.
IPH – Interrupt Priority High[2]
7
6
5
PADCH
PBODH
R/W
R/W
Address: B7H
Bit
Name
4
PSH
R/W
3
PT1H
R/W
2
PX1H
R/W
1
0
PT0H
PX0H
R/W
R/W
Reset value: 0000 0000b
Description
Reserved
7
-
6
PADC
ADC interrupt priority high bit
5
PBOD
Brown-out detection interrupt priority high bit
4
PSH
Serial port 0 interrupt priority high bit
3
PT1H
Timer 1 interrupt priority high bit
2
PX1H
External interrupt 1 priority high bit
1
PT0H
Timer 0 interrupt priority high bit
External interrupt 0 priority high bit
0
PX0H
[2] IPH is used in combination with the IP respectively to determine the priority of each interrupt source. See
Table 20–2. Interrupt Priority Level Setting for correct interrupt priority configuration.
EIP – Extensive Interrupt Priority[3]
7
6
5
PT2D
PT2C
R/W
R/W
Address: EFH
Bit
Name
4
PWDT
R/W
3
PT2B
R/W
2
PT2A
R/W
1
0
PPI
PI2C
R/W
R/W
Reset value: 0000 0000b
Description
Timer 2D interrupt priority low bit
7
PT2D
6
-
5
PT2C
Timer 2C interrupt priority low bit
4
PWDT
WDT interrupt priority low bit
3
PT2B
Timer 2B interrupt priority low bit
2
PT2A
Timer 2A interrupt priority low bit
1
PPI
0
PI2C
Reserved
Pin interrupt priority low bit
2
I C interrupt priority low bit
[3] EIP is used in combination with the EIPH to determine the priority of each interrupt source. See Table 20–2.
Interrupt Priority Level Setting for correct interrupt priority configuration.
Feb 20, 2016
Page 124 of 179
Rev. 1.01
N76E616 Datasheet
EIPH – Extensive Interrupt Priority High[4]
7
6
5
4
PT2DH
PT2CH
PWDTH
R/W
R/W
R/W
Address: F7H
Bit
Name
3
PT2BH
R/W
2
PT2AH
R/W
1
0
PPIH
PI2CH
R/W
R/W
Reset value: 0000 0000b
Description
Timer 2D interrupt priority high bit
7
PT2DH
6
-
5
PT2CH
Timer 2C interrupt priority high bit
4
PWDTH
WDT interrupt priority high bit
3
PT2BH
Timer 2B interrupt priority high bit
2
PT2AH
Timer 2A interrupt priority high bit
1
PPIH
0
PI2CH
Reserved
Pin interrupt priority high bit
2
I C interrupt priority high bit
[4] EIPH is used in combination with the EIP to determine the priority of each interrupt source. See Table 20–2.
Interrupt Priority Level Setting for correct interrupt priority configuration.
EIP1 – Extensive Interrupt Priority 1[5]
7
6
5
Address: FEH, Page: 0
Bit
Name
2
PWKT
1
PT3
4
-
3
-
2
PWKT
R/W
1
0
PT3
PS_1
R/W
R/W
Reset value: 0000 0000b
Description
WKT interrupt priority low bit
Timer 3 interrupt priority low bit
Serial port 1 interrupt priority low bit
PS_1
[5] EIP1 is used in combination with the EIPH1 to determine the priority of each interrupt source. See Table 20–2.
Interrupt Priority Level Setting for correct interrupt priority configuration.
0
EIPH1 – Extensive Interrupt Priority High 1[6]
7
6
5
4
Address: FFH, Page: 0
Bit
Name
2
PWKTH
1
PT3H
3
-
2
PWKTH
R/W
1
0
PT3H
PSH_1
R/W
R/W
Reset value: 0000 0000b
Description
WKT interrupt priority high bit
Timer 3 interrupt priority high bit
Serial port 1 interrupt priority high bit
PSH_1
[6] EIPH1 is used in combination with the EIP1 to determine the priority of each interrupt source. See Table 20–2.
Interrupt Priority Level Setting for correct interrupt priority configuration.
0
Feb 20, 2016
Page 125 of 179
Rev. 1.01
N76E616 Datasheet
20.4 Interrupt Service
The interrupt flags are sampled every system clock cycle. In the same cycle, the sampled interrupts
are polled and their priority is resolved. If certain conditions are met then the hardware will execute an
internally generated LCALL instruction, which will vector the process to the appropriate interrupt vector
address. The conditions for generating the LCALL are,
1. An interrupt of equal or higher priority is not currently being serviced.
2. The current polling cycle is the last cycle of the instruction currently being executed.
3. The current instruction does not involve a write to any enabling or priority setting bits and is not a
RETI.
If any of these conditions are not met, then the LCALL will not be generated. The polling cycle is
repeated every system clock cycle. If an interrupt flag is active in one cycle but not responded to for
the above conditions are not met, if the flag is not still active when the blocking condition is removed,
the denied interrupt will not be serviced. This means that the interrupt flag, which was once active but
not serviced, is not remembered. Every polling cycle is new.
The processor responds to a valid interrupt by executing an LCALL instruction to the appropriate
service routine. This action may or may not clear the flag, which caused the interrupt according to
different interrupt source. The hardware LCALL behaves exactly like the software LCALL instruction.
This instruction saves the Program Counter contents onto the Stack RAM but does not save the
Program Status Word (PSW). The PC is reloaded with the vector address of that interrupt, which
caused the LCALL. Execution continues from the vectored address until an RETI instruction is
executed. On execution of the RETI instruction, the processor pops the Stack and loads the PC with
the contents at the top of the stack. User should take care that the status of the stack. The processor
does not notice anything if the stack contents are modified and will proceed with execution from the
address put back into PC. Note that a simple RET instruction would perform exactly the same process
as a RETI instruction, but it would not inform the Interrupt controller that the interrupt service routine is
completed. RET would leave the controller still thinking that the service routine is underway, making
future interrupts impossible.
20.5 Interrupt Latency
The response time for each interrupt source depends on several factors, such as the nature of the
interrupt and the instruction underway. Each interrupt flags are polled and priority decoded each
system clock cycle. If a request is active and all three previous conditions are met, then the hardware
generated LCALL is executed. This LCALL itself takes 4 clock cycles to be completed. Thus, there is a
Feb 20, 2016
Page 126 of 179
Rev. 1.01
N76E616 Datasheet
minimum reaction time of 5 clock cycles between the interrupt flag being set and the interrupt service
routine being executed.
A longer response time should be anticipated if any of the three conditions are not met. If a higher or
equal priority is being serviced, then the interrupt latency time obviously depends on the nature of the
service routine currently being executed. If the polling cycle is not the last clock cycle of the instruction
being executed, then an additional delay is introduced. The maximum response time (if no other
interrupt is currently being serviced or the new interrupt is of greater priority) occurs if the device is
performing a RETI, and then executes a longest 6-clock-cycle instruction as the next instruction. From
the time an interrupt source is activated (not detected), the longest reaction time is 16 clock cycles.
This period includes 5 clock cycles to complete RETI, 6 clock cycles to complete the longest
instruction, 1 clock cycle to detect the interrupt, and 4 clock cycles to complete the hardware LCALL to
the interrupt vector location.
Thus in a single-interrupt system the interrupt response time will always be more than 5 clock cycles
and not more than 16 clock cycles.
20.6 External Interrupt Pins
The external interrupt ̅̅̅̅̅̅̅ and ̅̅̅̅̅̅̅ can be used as interrupt sources. They are selectable to be
either edge or level triggered depending on bits IT0 (TCON.0) and IT1 (TCON.2). The bits IE0
(TCON.1) and IE1 (TCON.3) are the flags those are checked to generate the interrupt. In the edge
triggered mode, the ̅̅̅̅̅̅̅ or ̅̅̅̅̅̅̅ inputs are sampled every system clock cycle. If the sample is high in
one cycle and low in the next, then a high to low transition is detected and the interrupts request flag
IE0 or IE1 will be set. Since the external interrupts are sampled every system clock, they have to be
held high or low for at least one system clock cycle. The IE0 and IE1 are automatically cleared when
the interrupt service routine is called. If the level triggered mode is selected, then the requesting
source has to hold the pin low till the interrupt is serviced. The IE0 and IE1 will not be cleared by the
hardware on entering the service routine. In the level triggered mode, IE0 and IE1 follows the inverse
value of ̅̅̅̅̅̅̅ and ̅̅̅̅̅̅̅ pins. If interrupt pins continue to be held low even after the service routine is
completed, the processor will acknowledge another interrupt request from the same source. Both ̅̅̅̅̅̅̅
and ̅̅̅̅̅̅̅ can wake up the device from the Power-down mode.
Feb 20, 2016
Page 127 of 179
Rev. 1.01
N76E616 Datasheet
TCON – Timer 0 and 1 Control (Bit-addressable)
7
6
5
4
TF1
TR1
TF0
TR0
R/W
R/W
R/W
Name
Description
R/W
3
IE1
R (level)
R/W (edge)
2
IT1
R/W
Address: 88H
Bit
1
0
IE0
IT0
R (level)
R/W
R/W (edge)
Reset value: 0000 0000b
3
IE1
External interrupt 1 edge flag
If IT1 = 1 (falling edge trigger), this flag will be set by hardware when a falling edge
is detected. It remains set until cleared via software or cleared by hardware in the
beginning of its interrupt service routine.
If IT1 = 0 (low level trigger), this flag follows the inverse of the ̅̅̅̅̅̅̅ input signal's
logic level. Software cannot control it.
2
IT1
External interrupt 1 type select
This bit selects by which type that ̅̅̅̅̅̅̅ is triggered.
0 = ̅̅̅̅̅̅̅ is low level triggered.
1 = ̅̅̅̅̅̅̅ is falling edge triggered.
1
IE0
External interrupt 0 edge flag
If IT0 = 1 (falling edge trigger), this flag will be set by hardware when a falling edge
is detected. It remains set until cleared via software or cleared by hardware in the
beginning of its interrupt service routine.
If IT0 = 0 (low level trigger), this flag follows the inverse of the ̅̅̅̅̅̅̅ input signal's
logic level. Software cannot control it.
0
IT0
External interrupt 0 type select
This bit selects by which type that ̅̅̅̅̅̅̅ is triggered.
0 = ̅̅̅̅̅̅̅ is low level triggered.
1 = ̅̅̅̅̅̅̅ is falling edge triggered.
Feb 20, 2016
Page 128 of 179
Rev. 1.01
N76E616 Datasheet
21. IN-APPLICATION-PROGRAMMING (IAP)
Unlike RAM’s real-time operation, to update flash data often takes long time. Furthermore, it is a quite
complex timing procedure to erase, program, or read flash data. The N76E616 carried out the flash
operation with convenient mechanism to help user re-programming the flash content by In-ApplicationProgramming (IAP). IAP is an in-circuit electrical erasure and programming method through software.
After IAP enabling by setting IAPEN (CHPCON.0 with TA protected) and setting the enable bit in
IAPUEN that allows the target block to be updated, user can easily fill the 16-bit target address in
IAPAH and IAPAL, data in IAPFD, and command in IAPCN. Then the IAP is ready to begin by setting
a triggering bit IAPGO (IAPTRG.0). Note that IAPTRG is also TA protected. At this moment, the CPU
holds the Program Counter and the built-in IAP automation takes over to control the internal chargepump for high voltage and the detail signal timing. The erase and program time is internally controlled
disregard of the operating voltage and frequency. Nominally, a page-erase time is 28 ms and a byteprogram time is 50 μs. After IAP action completed, the Program Counter continues to run the following
instructions. The IAPGO bit will be automatically cleared. An IAP failure flag, IAPFF (CHPCON.6), can
be check whether the previous IAP operation was successful or not. Through this progress, user can
easily erase, program, and verify the Flash Memory by just taking care of pure software.
The following registers are related to IAP processing.
CONFIG2
7
CBODEN
R/W
Bit
6
-
Name
3
BOIAP
5
4
CBOV[1:0]
R/W
Name
6
Feb 20, 2016
IAPFF
2
1
0
CBORST
R/W
Factory default value: 1111 1111b
Description
Brown-out inhibiting IAP
This bit decides whether IAP erasing or programming is inhibited by brown-out
status. This bit is valid only when brown-out detection is enabled.
1 = IAP erasing or programming is inhibited if VDD is lower than VBOD.
0 = IAP erasing or programming is allowed under any workable V DD.
CHPCON – Chip Control (TA protected)
7
6
5
SWRST
IAPFF
W
R/W
Address: 9FH
Bit
3
BOIAP
R/W
4
3
2
1
0
BS
IAPEN
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
IAP fault flag
The hardware will set this bit after IAPGO (ISPTRG.0) is set if any of the following
condition is met:
(1) The accessing address is oversize.
Page 129 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
Description
(2) IAPCN command is invalid.
(3) IAP erases or programs updating un-enabled block.
(4) IAP erasing or programming operates under VBOD while BOIAP (CONFIG2.5)
remains un-programmed 1 with BODEN (BODCON0.7) as 1 and BORST
(BODCON0.2) as 0.
This bit should be cleared via software.
0
IAPEN
IAP enable
0 = IAP function Disabled.
1 = IAP function Enabled.
Once enabling IAP function, the HIRC will be turned on for timing control. To clear
IAPEN should always be the last instruction after IAP operation to stop internal
oscillator if reducing power consumption is concerned.
IAPUEN – IAP Updating Enable (TA protected)
7
6
5
4
Address: A5H
Bit
Name
3
-
2
CFUEN
R/W
Description
2
CFUEN
CONFIG bytes updated enable
0 = Inhibit erasing or programming CONFIG bytes by IAP.
1 = Allow erasing or programming CONFIG bytes by IAP.
1
LDUEN
LDROM updated enable
0 = Inhibit erasing or programming LDROM by IAP.
1 = Allow erasing or programming LDROM by IAP.
0
APUEN
APROM updated enable
0 = Inhibit erasing or programming APROM by IAP.
1 = Allow erasing or programming APROM by IAP.
IAPCN – IAP Control
7
6
IAPB[1:0]
R/W
Address: AFH
Bit
Name
7:6
IAPB[1:0]
5
FOEN
4
FCEN
3:0
FCTRL[3:0]
Feb 20, 2016
1
0
LDUEN
APUEN
R/W
R/W
Reset value: 0000 0000b
5
FOEN
R/W
4
FCEN
R/W
3
2
1
0
FCTRL[3:0]
R/W
Reset value: 0011 0000b
Description
IAP control
This byte is used for IAP command. For details, see Table 21–1. IAP Modes
and Command Codes.
Page 130 of 179
Rev. 1.01
N76E616 Datasheet
IAPAH – IAP Address High Byte
7
6
5
4
3
2
1
0
IAPA[15:8]
R/W
Address: A7H
Bit
7:0
Reset value: 0000 0000b
Name
Description
IAPA[15:8]
IAP address high byte
IAPAH contains address IAPA[15:8] for IAP operations.
IAPAL – IAP Address Low Byte
7
6
5
4
3
2
1
0
IAPA[7:0]
R/W
Address: A6H
Bit
7:0
Reset value: 0000 0000b
Name
IAPA[7:0]
IAPFD – IAP Flash Data
7
6
Description
IAP address low byte
IAPAL contains address IAPA[7:0] for IAP operations.
5
4
3
2
1
0
IAPFD[7:0]
R/W
Address: AEH
Bit
7:0
Feb 20, 2016
Reset value: 0000 0000b
Name
Description
IAPFD[7:0]
IAP flash data
This byte contains flash data, which is read from or is going to be written to the
Flash Memory. User should write data into IAPFD for program mode before
triggering IAP processing and read data from IAPFD for read/verify mode after
IAP processing is finished.
Page 131 of 179
Rev. 1.01
N76E616 Datasheet
IAPTRG – IAP Trigger (TA protected)
7
6
5
Address: A4H
Bit
Name
0
IAPGO
4
-
3
-
2
-
1
0
IAPGO
W
Reset value: 0000 0000b
Description
IAP go
IAP begins by setting this bit as logic 1. After this instruction, the CPU holds the
Program Counter (PC) and the IAP hardware automation takes over to control
the progress. After IAP action completed, the Program Counter continues to run
the following instruction. The IAPGO bit will be automatically cleared and always
read as logic 0.
Before triggering an IAP action, interrupts (if enabled) should be temporary
disabled for hardware limitation. The program process should follow below.
CLR
EA
MOV
TA,#0AAH
MOV
TA,#55H
ORL
IAPTRG,#01H
(SETB
EA)
21.1 IAP Commands
The N76E616 provides a wide range of applications to perform IAP to APROM, LDROM, or CONFIG
bytes. The IAP action mode and the destination of the flash block are defined by IAP control register
IAPCN.
Table 21–1. IAP Modes and Command Codes
IAPCN
IAP Mode
IAPB[1:0] FOEN FCEN FCTRL[3:0]
IAPA[15:0]
{IAPAH, IAPAL}
IAPFD[7:0]
XX[1]
0
0
1011
X
DAH
Device ID read
XX
0
0
1100
Low-byte DID: 0000H
High-byte DID: 0001H
Low-byte DID: 50H
High-byte DID: 2FH
96-bit Unique Code read
XX
0
0
0100
0000H to 000BH
Data out
APROM page-erase
00
1
0
0010
Address in[2]
FFH
LDROM page-erase
01
1
0
0010
Address in[2]
FFH
APROM byte-program
00
1
0
0001
Address in
Data in
LDROM byte-program
01
1
0
0001
Address in
Data in
APROM byte-read
00
0
0
0000
Address in
Data out
LDROM byte-read
01
0
0
0000
Address in
Data out
All CONFIG bytes erase
11
1
0
0010
0000H
FFH
CONFIG byte-program
11
1
0
0001
CONFIG0: 0000H
CONFIG1: 0001H
CONFIG2: 0002H
CONFIG4: 0004H
Data in
Company ID read
Feb 20, 2016
Page 132 of 179
Rev. 1.01
N76E616 Datasheet
IAPCN
IAP Mode
IAPB[1:0] FOEN FCEN FCTRL[3:0]
CONFIG byte-read
11
0
0
0000
IAPA[15:0]
{IAPAH, IAPAL}
IAPFD[7:0]
CONFIG0: 0000H
CONFIG1: 0001H
CONFIG2: 0002H
CONFIG4: 0004H
Data out
[1] ‘X’ means “don’t care”.
[2] Each page is 256-Byte size. Therefore, the address should be the address pointed to the target page.
21.2 IAP User Guide
IAP facilitates the updating flash contents in a convenient way; however, user should follow some
restricted laws in order that the IAP operates correctly. Without noticing warnings will possible cause
undetermined results even serious damages of devices. Furthermore, this paragraph will also support
useful suggestions during IAP procedures.
(1) If no more IAP operation is needed, user should clear IAPEN (CHPCON.0). It will make the system
void to trigger IAP unaware. Furthermore, IAP requires the HIRC running. If the external clock source
is selected, disabling IAP will stop the HIRC for saving power consumption. Note that a write to IAPEN
is TA protected.
(2) When the LOCK bit (CONFIG0.1) is activated, IAP reading, writing, or erasing can still be valid.
During IAP progress, interrupts (if enabled) should be disabled temporally by clearing EA bit
for implement limitation.
Do not attempt to erase or program to a page that the code is currently executing. This will
cause unpredictable program behavior and may corrupt program data.
21.3 Using Flash Memory as Data Storage
In general application, there is a need of data storage, which is non-volatile so that it remains its
content even after the power is off. Therefore, in general application user can read back or update the
data, which rules as parameters or constants for system control. The Flash Memory array of the
N76E616 supports IAP function and any byte in the Flash Memory array may be read using the MOVC
instruction and thus is suitable for use as non-volatile data storage. IAP provides erase and program
function that makes it easy for one or more bytes within a page to be erased and programmed in a
routine. IAP performs in the application under the control of the microcontroller’s firmware. Be aware
of Flash Memory writing endurance of 20,000 cycles. A demo is illustrated as follows.
Feb 20, 2016
Page 133 of 179
Rev. 1.01
N76E616 Datasheet
Assembly demo code:
;******************************************************************************
;
This code illustrates how to use IAP to make APROM 201h as a byte of
;
Data Flash when user code is executed in APROM.
;******************************************************************************
PAGE_ERASE_AP
EQU
00100010b
BYTE_PROGRAM_AP
EQU
00100001b
ORG
0000h
MOV
MOV
ORL
TA,#0AAh
TA,#55h
CHPCON,#00000001b
;CHPCON is TA protected
MOV
MOV
ORL
TA,#0AAh
TA,#55h
IAPUEN,#00000001b
;IAPUEN is TA protected
MOV
MOV
MOV
MOV
MOV
MOV
ORL
MOV
MOV
MOV
MOV
MOV
MOV
ORL
IAPCN,#PAGE_ERASE_AP
IAPAH,#02h
IAPAL,#00h
IAPFD,#0FFh
TA,#0AAh
TA,#55h
IAPTRG,#00000001b
IAPCN,#BYTE_PROGRAM_AP
IAPAH,#02h
IAPAL,#01h
IAPFD,#55h
TA,#0AAh
TA,#55h
IAPTRG,#00000001b
;Erase page 200h to 27Fh
MOV
MOV
ANL
TA,#0AAh
TA,#55h
IAPUEN,#11111110b
;APUEN = 0, disable APROM update
MOV
MOV
ANL
TA,#0AAh
TA,#55h
CHPCON,#11111110b
;IAPEN = 0, disable IAP mode
MOV
CLR
MOVC
MOV
DPTR,#201h
A
A,@A+DPTR
P0,A
SJMP
$
Feb 20, 2016
;IAPEN = 1, enable IAP mode
;APUEN = 1, enable APROM update
;IAPTRG is TA protected
;write ‘1’ to IAPGO to trigger IAP process
;Program 201h with 55h
;Read content of address 201h
Page 134 of 179
Rev. 1.01
N76E616 Datasheet
C language demo code:
//******************************************************************************
//
This code illustrates how to use IAP to make APROM 201h as a byte of
//
Data Flash when user code is executed in APROM.
//******************************************************************************
#define
PAGE_ERASE_AP
0x22
#define
BYTE_PROGRAM_AP
0x21
/*Data Flash, as part of APROM, is read by MOVC. Data Flash can be defined as
256-element array in “code” area from absolute address 0x0200
*/
volatile unsigned char code Data_Flash[256] _at_ 0x0200;
Main (void)
{
TA = 0xAA;
TA = 0x55;
CHPCON |= 0x01;
//CHPCON is TA protected
//IAPEN = 1, enable IAP mode
TA = 0xAA;
TA = 0x55;
IAPUEN |= 0x01;
//IAPUEN is TA protected
IAPCN = PAGE_ERASE_AP;
IAPAH = 0x02;
IAPAL = 0x00;
IAPFD = 0xFF;
TA = 0xAA;
TA = 0x55;
IAPTRG |= 0x01;
//Erase page 200h to 27Fh
IAPCN = BYTE_PROGRAM_AP;
IAPAH = 0x02;
IAPAL = 0x01;
IAPFD = 0x55;
TA = 0xAA;
TA = 0x55;
IAPTRG |= 0x01;
// Program 201h with 55h
TA = 0xAA;
TA = 0x55;
IAPUEN &= ~0x01;
//IAPUEN is TA protected
TA = 0xAA;
TA = 0x55;
CHPCON &= ~0x01;
//CHPCON is TA protected
P0 = Data_Flash[1];
//Read content of address 200h+1
//APUEN = 1, enable APROM update
//IAPTRG is TA protected
//write ‘1’ to IAPGO to trigger IAP process
//write ‘1’ to IAPGO to trigger IAP process
//APUEN = 0, disable APROM update
//IAPEN = 0, disable IAP mode
while(1);
}
21.4 In-System-Programming (ISP)
The Flash Memory supports both hardware programming and In-Application-Programming (IAP).
Hardware programming mode uses gang-writers to reduce programming costs and time to market
while the products enter the mass production state. However, if the product is just under development
or the end product needs firmware updating in the hand of an end user, the hardware programming
Feb 20, 2016
Page 135 of 179
Rev. 1.01
N76E616 Datasheet
mode will make repeated programming difficult and inconvenient. In-System-Programming (ISP)
makes it easy and possible. ISP performs Flash Memory updating without removing the
microcontroller from the system. It allows a device to be re-programmed under software control.
Furthermore, the capability to update the application firmware makes wide range of applications
possible.
User can develop a custom Boot Code that resides in LDROM. The maximum size of LDROM is 4K
Bytes. User developed Boot Code can be re-programmed by parallel writer or In-Circuit-Programming
(ICP) tool.
General speaking, an ISP is carried out by a communication between PC and MCU. PC transfers the
new User Code to MCU through serial port. Then Boot Code receives it and re-programs into User
Code through IAP commands. Nuvoton provides ISP firmware and PC application for N76E616. It
makes user quite easy perform ISP through UART port. Please visit Nuvoton 8-bit Microcontroller
website: Nuvoton 80C51 Microcontroller Technical Support. A simple ISP demo code is given below.
Assembly demo code:
;******************************************************************************
;
This code illustrates how to do APROM and CONFIG IAP from LDROM.
;
APROM is re-programmed by the code to output P1 as 55h and P2 as AAh.
;
The CONFIG2 is also updated to disable BOD reset.
;
User needs to configure CONFIG0 = 0x7F, CONFIG1 = 0xFE, CONFIG2 = 0xFF.
;******************************************************************************
PAGE_ERASE_AP
EQU
00100010b
BYTE_PROGRAM_AP
EQU
00100001b
BYTE_READ_AP
EQU
00000000b
ALL_ERASE_CONFIG
EQU
11100010b
BYTE_PROGRAM_CONFIG
EQU
11100001b
BYTE_READ_CONFIG
EQU
11000000b
ORG
0000h
CLR
CALL
EA
Enable_IAP
CALL
CALL
CALL
CALL
CALL
Enable_AP_Update
Erase_AP
Program_AP
Disable_AP_Update
Program_AP_Verify
CALL
CALL
CALL
CALL
CALL
CALL
Read_CONFIG
Enable_CONFIG_Update
Erase_CONFIG
Program_CONFIG
Disable_CONFIG_Update
Program_CONFIG_Verify
CALL
MOV
MOV
ANL
MOV
Disable_IAP
TA,#0AAh
TA,#55h
CHPCON,#11111101b
TA,#0AAh
Feb 20, 2016
;disable all interrupts
;erase AP data
;programming AP data
;verify Programmed AP data
;read back CONFIG2
;erase CONFIG bytes
;programming CONFIG2 with new data
;verify Programmed CONFIG2
;TA protection
;
;BS = 0, reset to APROM
Page 136 of 179
Rev. 1.01
N76E616 Datasheet
MOV
ORL
TA,#55h
CHPCON,#80h
SJMP
$
;software reset and reboot from APROM
;********************************************************************
;
IAP Subroutine
;********************************************************************
Enable_IAP:
MOV
TA,#0AAh
;CHPCON is TA protected
MOV
TA,#55h
ORL
CHPCON,#00000001b
;IAPEN = 1, enable IAP mode
RET
Disable_IAP:
MOV
TA,#0AAh
MOV
TA,#55h
ANL
CHPCON,#11111110b
RET
Enable_AP_Update:
MOV
TA,#0AAh
MOV
TA,#55h
ORL
IAPUEN,#00000001b
RET
Disable_AP_Update:
MOV
TA,#0AAh
MOV
TA,#55h
ANL
IAPUEN,#11111110b
RET
Enable_CONFIG_Update:
MOV
TA,#0AAh
MOV
TA,#55h
ORL
IAPUEN,#00000100b
RET
Disable_CONFIG_Update:
MOV
TA,#0AAh
MOV
TA,#55h
ANL
IAPUEN,#11111011b
RET
Trigger_IAP:
MOV
TA,#0AAh
MOV
TA,#55h
ORL
IAPTRG,#00000001b
RET
;IAPEN = 0, disable IAP mode
;IAPUEN is TA protected
;APUEN = 1, enable APROM update
;APUEN = 0, disable APROM update
;CFUEN = 1, enable CONFIG update
;CFUEN = 0, disable CONFIG update
;IAPTRG is TA protected
;write ‘1’ to IAPGO to trigger IAP process
;********************************************************************
;
IAP APROM Function
;********************************************************************
Erase_AP:
MOV
IAPCN,#PAGE_ERASE_AP
MOV
IAPFD,#0FFh
MOV
R0,#00h
Erase_AP_Loop:
MOV
IAPAH,R0
MOV
IAPAL,#00h
CALL
Trigger_IAP
MOV
IAPAL,#80h
CALL
Trigger_IAP
INC
R0
Feb 20, 2016
Page 137 of 179
Rev. 1.01
N76E616 Datasheet
CJNE
RET
R0,#44h,Erase_AP_Loop
Program_AP:
MOV
IAPCN,#BYTE_PROGRAM_AP
MOV
IAPAH,#00h
MOV
IAPAL,#00h
MOV
DPTR,#AP_code
Program_AP_Loop:
CLR
A
MOVC
A,@A+DPTR
MOV
IAPFD,A
CALL
Trigger_IAP
INC
DPTR
INC
IAPAL
MOV
A,IAPAL
CJNE
A,#14,Program_AP_Loop
RET
Program_AP_Verify:
MOV
IAPCN,#BYTE_READ_AP
MOV
IAPAH,#00h
MOV
IAPAL,#00h
MOV
DPTR,#AP_code
Program_AP_Verify_Loop:
CALL
Trigger_IAP
CLR
A
MOVC
A,@A+DPTR
MOV
B,A
MOV
A,IAPFD
CJNE
A,B,Program_AP_Verify_Error
INC
DPTR
INC
IAPAL
MOV
A,IAPAL
CJNE
A,#14,Program_AP_Verify_Loop
RET
Program_AP_Verify_Error:
CALL
Disable_IAP
MOV
P0,#00h
SJMP
$
;********************************************************************
;
IAP CONFIG Function
;********************************************************************
Erase_CONFIG:
MOV
IAPCN,#ALL_ERASE_CONFIG
MOV
IAPAH,#00h
MOV
IAPAL,#00h
MOV
IAPFD,#0FFh
CALL
Trigger_IAP
RET
Read_CONFIG:
MOV
MOV
MOV
CALL
MOV
RET
IAPCN,#BYTE_READ_CONFIG
IAPAH,#00h
IAPAL,#02h
Trigger_IAP
R7,IAPFD
Program_CONFIG:
MOV
IAPCN,#BYTE_PROGRAM_CONFIG
MOV
IAPAH,#00h
Feb 20, 2016
Page 138 of 179
Rev. 1.01
N76E616 Datasheet
MOV
MOV
ANL
MOV
MOV
CALL
RET
IAPAL,#02h
A,R7
A,#11111011b
IAPFD,A
R6,A
Trigger_IAP
;disable BOD reset
;temp data
Program_CONFIG_Verify:
MOV
IAPCN,#BYTE_READ_CONFIG
MOV
IAPAH,#00h
MOV
IAPAL,#02h
CALL
Trigger_IAP
MOV
B,R6
MOV
A,IAPFD
CJNE
A,B,Program_CONFIG_Verify_Error
RET
Program_CONFIG_Verify_Error:
CALL
Disable_IAP
MOV
P0,#00h
SJMP
$
;********************************************************************
;
APROM code
;********************************************************************
AP_code:
DB
75h,0B1h, 00h
;OPCODEs of “MOV
P0M1,#0”
DB
75h,0B5h, 00h
;OPCODEs of “MOV
P2M1,#0”
DB
75h, 90h, 55h
;OPCODEs of “MOV
P1,#55h”
DB
75h,0A0h,0AAh
;OPCODEs of “MOV
P2,#0AAh”
DB
80h,0FEh
;OPCODEs of “SJMP
$”
END
Feb 20, 2016
Page 139 of 179
Rev. 1.01
N76E616 Datasheet
22. POWER MANAGEMENT
The N76E616 has several features that help user to control the power consumption of the device. The
power-reduced feature has two option modes: Idle mode and Power-down mode, to save the power
consumption. For a stable current consumption, the state and mode of each pin should be taken care
of. The minimum power consumption can be attained by giving the pin state just the same as the
external pulls for example output 1 if pull-high is used or output 0 if pull-low. If the I/O pin is floating,
user is recommended to leave it as quasi-bidirectional mode. If P3.6 is configured as an input-only pin,
it should have an external pull-up or pull-low, or enable its internal pull-up by setting P36UP (P3M2.6).
PCON – Power Control
7
6
SMOD
SMOD0
R/W
R/W
Address: 87H
Bit
Name
5
-
4
3
2
1
0
POF
GF1
GF0
PD
IDL
R/W
R/W
R/W
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
1
PD
Power-down mode
Setting this bit puts CPU into Power-down mode. Under this mode, both CPU and
peripheral clocks stop and Program Counter (PC) suspends. It provides the lowest
power consumption. After CPU is woken up from Power-down, this bit will be
automatically cleared via hardware and the program continue executing the
interrupt service routine (ISR) of the very interrupt source that woke the system up
before. After return from the ISR, the device continues execution at the instruction,
which follows the instruction that put the system into Power-down mode.
Note that If IDL bit and PD bit are set simultaneously, CPU will enter Power-down
mode. Then it does not go to Idle mode after exiting Power-down.
0
IDL
Idle mode
Setting this bit puts CPU into Idle mode. Under this mode, the CPU clock stops
and Program Counter (PC) suspends but all peripherals keep activated. After
CPU is woken up from Idle, this bit will be automatically cleared via hardware and
the program continue executing the ISR of the very interrupt source that woke the
system up before. After return from the ISR, the device continues execution at the
instruction, which follows the instruction that put the system into Idle mode.
P3M2 – Port 3 Mode Select 2
7
6
5
CLOEN
P36UP
P3M2.5
R/W
R/W
R/W
Address: ADH, Page: 0
Bit
Name
6
Feb 20, 2016
P36UP
4
P3M2.4
R/W
3
P3M2.3
R/W
2
P3M2.2
R/W
1
0
P3M2.1
P3M2.0
R/W
R/W
Reset value: 0000 0000b
Description
P3.6 pull-up enable
0 = P3.6 pull-up Disabled.
1 = P3.6 pull-up Enabled.
This bit is valid only when RPD (CONFIG0.2) is programmed as 0. When
selecting as a ̅̅̅̅̅̅ pin, the pull-up is always enabled.
Page 140 of 179
Rev. 1.01
N76E616 Datasheet
22.1 Idle Mode
Idle mode suspends CPU processing by holding the Program Counter. No program code are fetched
and run in Idle mode. It forces the CPU state to be frozen. The Program Counter (PC), Stack Pointer
(SP), Program Status Word (PSW), Accumulator (ACC), and the other registers hold their contents
during Idle mode. The port pins hold the logical states they had at the time Idle was activated.
Generally, it saves considerable power of typical half of the full operating power.
Since the clock provided for peripheral function logic circuit like timer or serial port still remain in Idle
mode, the CPU can be released from the Idle mode with any of enabled interrupt sources. User can
put the device into Idle mode by writing 1 to the bit IDL (PCON.0). The instruction that sets the IDL bit
is the last instruction that will be executed before the device enters Idle mode.
The Idle mode can be terminated in two ways. First, as mentioned, any enabled interrupt will cause an
exit. It will automatically clear the IDL bit, terminate Idle mode, and the interrupt service routine (ISR)
will be executed. After using the RETI instruction to jump out of the ISR, execution of the program will
be the one following the instruction, which put the CPU into Idle mode. The second way to terminate
Idle mode is with any reset other than software reset. Remember that if Watchdog reset is used to exit
Idle mode, the WIDPD (WDCON.4) needs to be set 1 to let WDT keep running in Idle mode.
22.2 Power-Down Mode
Power-down mode is the lowest power state that the N76E616 can enter. It remain the power
consumption as a ”μA” level by stopping the system clock source. Both of
U and peripheral
functions like Timers or UART are frozen. Flash memory is put into its stop mode. All activity is
completely stopped and the power consumption is reduced to the lowest possible value. The device
can be put into Power-down mode by writing 1 to bit PD (PCON.1). The instruction that does this
action will be the last instruction to be executed before the device enters Power-down mode. In the
Power-down mode, RAM maintains its content. The port pins output the values held by their own state
before Power-down respectively.
There are several ways to exit the N76E616 from the Power-down mode. The first is with all resets
except software reset. Brown-out reset will also wake up CPU from Power-down mode. Be sure that
brown-out detection is enabled before the system enters Power-down. However, for least power
consumption, it is recommended to enable low power BOD and disable ADC circuit before entering
Power-down mode. Of course, the external pin reset and power-on reset will remove the Power-down
status. After the external reset or power-on reset. The CPU is initialized and starts executing program
code from the beginning.
Feb 20, 2016
Page 141 of 179
Rev. 1.01
N76E616 Datasheet
The second way to wake the N76E616 up from the Power-down mode is by an enabled external
interrupt. The trigger on the external pin will asynchronously restart the system clock. After oscillator is
stable, the device executes the interrupt service routine (ISR) for the corresponding external interrupt.
After the ISR is completed, the program execution returns to the instruction after the one, which puts
the device into Power-down mode and continues. Interrupts that allows to wake up CPU from Powerdown mode includes external interrupt ̅̅̅̅̅̅̅ and ̅̅̅̅̅̅̅, pin interrupt, WDT interrupt, WKT interrupt, and
brown-out interrupt.
Feb 20, 2016
Page 142 of 179
Rev. 1.01
N76E616 Datasheet
23. CLOCK SYSTEM
The N76E616 has a wide variety of clock sources and selection features that allow it to be used in a
wide range of applications while maximizing performance and minimizing power consumption. The
N76E616 provides five options of the system clock sources including internal oscillator,
crystal/resonator, or external clock from XIN pin via software. The N76E616 is embedded with two
internal oscillators: one 10 kHz low-speed and one 11.059 MHz high-speed, which is factory trimmed
to ±2.5% under all conditions. If the clock source is from the crystal/resonator, the frequency supports
two ranges: 2 MHz to 16 MHz high-speed and 32.768 kHz low-speed. A clock divider CKDIV is also
available on N76E616 for adjustment of the flexibility between power consumption and operating
performance.
32.768 kHz
Oscillating
Circuit (LXT)
FLXT
01
2 to 16 MHz
Oscillating
Circuit (HXT)
XOUT
XIN
FHXT
FECLK
[1]
11.059 MHz
Internal
Oscillator (HIRC)
10 kHz
Internal
Oscillator (LIRC)
FHIRC
Flash
Memory
10
11
EXTEN[1:0]
(CKEN[7:6])
100
010
Clock
Filter
FOSC
Clock FSYS
Divider
CPU
000
CKDIV
FLIRC
OSC[2:0]
(CKSWT[2:0])
Watchdog
Timer
0
1
WKTCK
(WKCON.5)
Self
Wake-up
Timer
Peripherals
CLOEN
(P3M2.7)
CLO (P0.7)
00
01
LCD Driver
10
LCDCKS[1:0]
(LCDCLK[5:4])
[1] Default system clock source after power-on
Figure 23-1 Clock System Block Diagram
23.1 Clock Sources
There are a total of five system clock sources selectable in the N76E616, including high-speed internal
oscillator, low-speed internal oscillator, high-speed external crystal/resonator, low-speed external
crystal/resonator, and external clock input. Each of them can be the system clock source in the
Feb 20, 2016
Page 143 of 179
Rev. 1.01
N76E616 Datasheet
N76E616. Different active system clock sources also affect multi-function of P3.2/XIN and P3.3/XOUT
pins.
23.1.1 Internal Oscillators
There are two internal oscillators in the N76E616 – one 11.059 MHz high-speed internal oscillator
(HIRC) and one 10 kHz low-speed (LIRC). Both of them can be selected as the system clock. HIRC
can be enabled by setting HIRCEN (CKEN.5). LIRC is enabled after device is powered up. User can
set OSC[2:0] (CKSWT [2:0]) as [0,0,0] to select the HIRC as the system clock. By setting OSC[2:0] as
[1,0,0], LIRC will be selected as the system clock. Note that after the N76E616 is powered, HIRC and
LIRC will be both enabled and HIRC is default selected as the system clock source. While using
internal oscillators, XIN and XOUT automatically switch as two general purpose I/O P3.2 and P3.3 to
expend the numbers of general purpose I/O. The I/O output mode of P3.2 and P3.3 can be selected
by configuring P3M1 and P3M2 registers.
23.1.2 External Crystal/Resonator or Clock Input
There are three possible clock source options of external clock sources – 2 MHz to 16 MHz highspeed crystal/resonator (HXT), 32.768 kHz low-speed crystal/resonator (LXT), and the external clock
input (ECLK) through XIN pin. They are exclusively enabled by giving proper EXTEN[1:0] (CKEN[7:6])
value. User can change OSC[2:0] value as [0,1,0] to select the enabled external clock source as the
system clock. When HXT or LXT is used as the system clock, XIN and XOUT are the input and output,
respectively, of an internal inverting amplifier. A crystal or resonator should be connected between XIN
and XOUT pins. When enabling and selecting ECLK as the system clock source, the system clock is
supplied via the XIN pin. The common application is to drive X IN with an active oscillator or clocks from
another host device. When ECLK is selected, XOUT pin automatically switches as a general purpose
I/O P3.3. The I/O output mode of P3.5 can be selected by configuring P3M1 and P3M2 registers. Be
aware that user should never feed any clock signal larger than voltage 1.8V to XIN when LXT mode is
selected; otherwise, it may break the device. Always use ECLK mode when the external clock input is
required.
23.2 System Clock Switching
The N76E616 supports clock source switching on-the-fly by controlling CKSWT and CKEN registers
via software. It provides a wide flexibility in application. Note that these SFRs are writing TA protected
for precaution. With this clock source control, the clock source can be switched between the external
clock source and the internal oscillator, even between the high-speed and low-speed internal
oscillator. However, during clock source switching, the device requires some amount of warm-up
period for an original disabled clock source. Therefore, use should follow steps below to ensure a
complete clock source switching. User can enable the target clock source by writing proper value into
Feb 20, 2016
Page 144 of 179
Rev. 1.01
N76E616 Datasheet
CKEN register, wait for the clock source stable by polling its status bit in CKSWT register, and switch
to the target clock source by changing OSC[2:0]. After these steps, the clock source switching is
successful and then user can also disable the original clock source if power consumption is
concerned. Note that if not following the steps above, the hardware will take certain actions to deal
with such illegal operations as follows.
1. If user tries to disable the current clock source by changing CKEN value, the device will ignore this
action. The system clock will remain the original one and CKEN will remain the original value.
2. If user tries to switch the system clock source to a disabled one by changing OSC[2:0] value,
OSC[2:0] value will be updated right away. But the system clock will remain the original one and
CKSWTF (CLKEN.0) flag will be set by hardware.
3. Once user switches the system clock source to an enabled but still instable one, the hardware will
wait for stabilization of the target clock source and then switch to it in the background. During this
waiting period, the device will continue executing the program with the original clock source and
CKSWTF will be set as 1. After the stable flag of the target clock source (see CKSWT[7:5] and
CKSWT.3) is set and the clock source switches successfully, CKSWTF will be cleared as 0
automatically by hardware.
Here is an illustration of switching the clock source from HIRC source to HXT.
MOV
MOV
ORL
TA,#0AAh
TA,#55h
CKEN,#10000000b
;TA protection
;
;Enable the HXT
;******Polling can be ignored if not disabling the original clock source******
Polling_HXT_stable:
;Waiting for the HXT stable
MOV
A,CKSWT
JNB
ACC.7, Polling_HXT_stable
;*****************************************************************************
MOV
MOV
MOV
TA,#0AAh
TA,#55h
CKSWT,#02h
;TA protection
;
;switch the clock source to the HXT
;******Disable the original HIRC clock source, for example******
MOV
TA,#0AAh
;TA protection
MOV
TA,#55h
;
ANL
CKEN,#11011111b
;Disable the IHRC
;***************************************************************
Feb 20, 2016
Page 145 of 179
Rev. 1.01
N76E616 Datasheet
CKSWT – Clock Switch (TA protected)
7
6
5
HXTST
LXTST
HIRCST
R
R
R
Address: 96H
Bit
Name
4
-
3
ECLKST
R
2
1
0
OSC[2:0]
W
Reset value: 0011 0000b
Description
7
HXTST
HXT status
0 = HXT is instable or disabled.
1 = HXT is enabled and stable.
6
LXTST
LXT status
0 = LXT is instable or disabled.
1 = LXT is enabled and stable.
5
HIRCST
4
-
3
ECLKST
ECLK status
0 = ECLK is instable or disabled.
1 = ECLK is enabled and stable.
2:0
OSC[2:0]
Oscillator selection bits
This field selects the system clock source.
000 = HIRC.
010 = External clock source according to EXTEN[1:0] (CKEN[7:6]) setting.
100 = LIRC.
Others = Reserved.
Note that this field is write only. The read back value of this field may not
correspond to the present system clock source.
HIRC status
0 = HIRC is instable or disabled.
1 = HIRC is enabled and stable.
Reserved
CKEN – Clock Enable (TA protected)
7
6
5
EXTEN[1:0]
HIRCEN
R/W
R/W
Address: 97H
Bit
4
-
3
-
2
-
1
0
CKSWTF
R
Reset value: 0011 0000b
Name
Description
7:6
EXTEN[1:0]
External clock source enable
This field enables one of the external clock sources. It also selects the enabled
external clock as the system clock source once OSC[2:0] is [0,1,0].
00 = None of the external clock sources is enabled. P3.2 and P3.3 work as
general purpose I/O.
01 = LXT Enabled.
10 = HXT Enabled.
11 = ECLK Enabled.
5
HIRCEN
HIRC enable
0 = HIRC Disabled.
1 = HIRC Enabled.
Note that once IAP is enabled by setting IAPEN (CHPCON.0), the HIRC will be
enabled automatically. The hardware will also set HIRCEN and HIRCST bits.
After IAPEN is cleared, HIRCEN and EHRCST resume the original values.
4:1
-
Feb 20, 2016
Reserved
Page 146 of 179
Rev. 1.01
N76E616 Datasheet
Bit
Name
0
CKSWTF
Description
Clock switch fault flag
0 = The previous system clock source switch was successful.
1 = User tried to switch to an instable or disabled clock source at the previous
system clock source switch. If switching to an instable clock source, this bit
remains 1 until the clock source is stable and switching is successful.
23.3 System Clock Divider
The oscillator frequency (FOSC) can be divided down, by an integer, up to 1/510 by configuring a
dividing register, CKDIV, to provide the system clock (FSYS). This feature makes it possible to
temporarily run the MCU at a lower rate, reducing power consumption. By dividing the clock, the MCU
can retain the ability to respond to events other than those that can cause interrupts (i.e. events that
allow exiting the Idle mode) by executing its normal program at a lower rate. This can often result in
lower power consumption than in Idle mode. This can allow bypassing the oscillator start-up time in
cases where Power-down mode would otherwise be used. The program may change the value of
CKDIV at any time without interrupting code execution.
CKDIV – Clock Divider
7
6
5
4
3
2
1
0
CKDIV[7:0]
R/W
Address: 95H
Bit
7:0
Reset value: 0000 0000b
Name
CKDIV[7:0]
Description
Clock divider
The system clock frequency FSYS follows the equation below according to
CKDIV value.
FSYS = FOSC
, while CKDIV = 00H, and
FSYS =
FOSC
2 × CKDIV , while CKDIV = 01H to FFH.
23.4 System Clock Output
The N76E616 provides a CLO pin (P0.7) that outputs the system clock. Its frequency is the same as
FSYS. The output enable bit is CLOEN (P3M2.7). CLO output stops when device is put in its Powerdown mode because the system clock is turned off. Note that when noise problem or power
consumption is important issue, user had better not enable CLO output.
Feb 20, 2016
Page 147 of 179
Rev. 1.01
N76E616 Datasheet
P3M2 – Port 3 Mode Select 2
7
6
5
CLOEN
P36UP
P3M2.5
R/W
R/W
R/W
Address: ADH, Page: 0
Bit
Name
7
Feb 20, 2016
CLOEN
4
P3M2.4
R/W
3
P3M2.3
R/W
2
P3M2.2
R/W
1
0
P3M2.1
P3M2.0
R/W
R/W
Reset value: 0000 0000b
Description
System clock output enable
0 = System clock output Disabled.
1 = System clock output Enabled from CLO pin (P0.7).
Page 148 of 179
Rev. 1.01
N76E616 Datasheet
24. POWER MONITORING
To prevent incorrect execution during power up and power drop, The N76E616 provide two power
monitor functions, power-on detection and brown-out detection.
24.1 Power-On Reset (POR)
The power-on detection function is designed for detecting power up after power voltage reaches to a
level where system can work. After power-on detected, the POF (PCON.4) will be set 1 to indicate a
cold reset, a power-on reset complete. The POF flag can be cleared via software.
PCON – Power Control
7
6
SMOD
SMOD0
R/W
R/W
Address: 87H
Bit
Name
4
POF
5
-
4
3
2
1
0
POF
GF1
GF0
PD
IDL
R/W
R/W
R/W
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
Power-on reset flag
This bit will be set as 1 after a power-on reset. It indicates a cold reset, a power
cycle reset complete. This bit remains its value after any other resets. This flag is
recommended to be cleared via software.
24.2 Brown-Out Detection (BOD)
The other power monitoring function brown-out detection (BOD) circuit is used for monitoring the VDD
level during execution. There are four selectable brown-out trigger levels available for wide voltage
applications. These four nominal levels are 2.2V, 2.7V, 3.8V, and 4.3V selected via setting CBOV[1:0]
(CONFIG2[5:4]). BOD level can also be changed by setting BOV[1:0] (BODCON0[5:4]) after poweron. When VDD drops to the selected brown-out trigger level (VBOD), the BOD logic will either reset the
MCU or request a brown-out interrupt. User may decide to being reset or generating a brown-out
interrupt according to different applications. VBOD also can be set by software after power-on. Note that
BOD output is not available until 2 to 3 LIRC clocks after software enabling.
The BOD will request the interrupt while VDD drops below VBOD while BORST (BODCON0.2) is 0. In
this case, BOF (BODCON0.3) will be set as 1. After user cleared this flag whereas VDD remains below
VBOD, BOF will not set again. BOF just acknowledge user a power drop occurs. The BOF will also be
set as 1 after VDD goes higher than VBOD to indicate a power resuming. The BOD circuit provides an
useful status indicator BOS (BODCON0.0), which is helpful to tell a brown-out event or power
resuming event occurrence. If the BORST bit is set as 1, this will enable brown-out reset function.
After a brown-out reset, BORF (BODCON0.1) will be set as 1 via hardware. It will not be altered by
reset other than power-on. This bit can be cleared via software. Note that all bits in BODCON0 are
writing protected by timed access (TA).
Feb 20, 2016
Page 149 of 179
Rev. 1.01
N76E616 Datasheet
The N76E616 provides low power BOD mode for saving current consumption and remaining BOD
functionality with limited detection response. By setting LPBOD[1:0] (BODCON1[2:1]), the BOD circuit
can be periodically enabled to sense the power voltage nominally every 1.6 ms, 6.4 ms, or 25.6 ms. It
saves much power but also provides low-speed power voltage sensing. Note that the hysteresis
feature will disappear in low power BOD mode.
For a noise sensitive system, the N76E616 has a BOD filter, which filters the power noise to avoid
BOD event triggering unconsciously. The BOD filter is enabled by default and can be disabled by
setting BODFLT (BODCON1.0) as 0 if user requires a rapid BOD response. The minimum brown-out
detect pulse width is listed in Table 24–2.
VDD
Brownout Detection
BOF
or
-
BOD
Filter
+
VBOD
Voltage
Select
BOV[1:0]
BOS
BORF
Brown-out Interrupt
Brown-out Reset
BORST
BODFLT
LPBOD[1:0]
BODEN
Figure 24-1. Brown-out Detection Block Diagram
CONFIG2
7
CBODEN
R/W
Bit
6
-
5
Name
7
CBODEN
6
-
5:4
CBOV[1:0]
2
CBORST
Feb 20, 2016
4
CBOV[1:0]
R/W
3
BOIAP
R/W
2
1
0
CBORST
R/W
Factory default value: 1111 1111b
Description
CONFIG brown-out detect enable
1 = Brown-out detection circuit ON.
0 = Brown-out detection circuit OFF.
Reserved
CONFIG brown-out voltage select
11 = VBOD is 2.2V.
10 = VBOD is 2.7V.
01 = VBOD is 3.8V.
00 = VBOD is 4.3V.
CONFIG brown-out reset enable
This bit decides whether a brown-out reset is caused by a power drop below
VBOD.
1 = Brown-out reset Enabled.
0 = Brown-out reset Disabled.
Page 150 of 179
Rev. 1.01
N76E616 Datasheet
BODCON0 – Brown-out Detection Control 0 (TA protected)
7
6
5
4
3
2
1
0
BODEN[1]
BOV[1:0][1]
BOF[2]
BORST[1]
BORF
BOS
R/W
R/W
R/W
R/W
R/W
R
Address: A3H
Reset value: see Table 6–2. SFR Definitions and Reset Values
Bit
Name
Description
Brown-out detection enable
0 = Brown-out detection circuit OFF.
1 = Brown-out detection circuit ON.
Note that BOD output is not available until 2 to 3 LIRC clocks after enabling.
7
BODEN
6
-
5:4
BOV[1:0]
3
BOF
Brown-out interrupt flag
This flag will be set as logic 1 via hardware after a VDD dropping below or rising
above VBOD event occurs. If both EBOD (EIE.2) and EA (IE.7) are set, a brown-out
interrupt requirement will be generated. This bit should be cleared via software.
2
BORST
Brown-out reset enable
This bit decides whether a brown-out reset is caused by a power drop below VBOD.
0 = Brown-out reset when VDD drops below VBOD Disabled.
1 = Brown-out reset when VDD drops below VBOD Enabled.
1
BORF
Reserved
Brown-out voltage select
00 = VBOD is 4.3V.
01 = VBOD is 3.8V.
10 = VBOD is 2.7V.
11 = VBOD is 2.2V.
Brown-out reset flag
When the MCU is reset by brown-out event, this bit will be set via hardware. This
flag is recommended to be cleared via software.
Brown-out status
This bit indicates the VDD voltage level comparing with VBOD while BOD circuit is
enabled. It keeps 0 if BOD is not enabled.
0 = VDD voltage level is higher than VBOD or BOD is disabled.
1 = VDD voltage level is lower than VBOD.
Note that this bit is read-only.
[1] BODEN, BOV[1:0], and BORST are initialized by being directly loaded from CONFIG0 bit 7, bit 5 to 4, and bit
2 after all resets.
[2] BOF reset value depends on different setting of CONFIG2 and VDD voltage level. Please check Table 24–1.
0
Feb 20, 2016
BOS
Page 151 of 179
Rev. 1.01
N76E616 Datasheet
Table 24–1. BOF Reset Value
CBODEN
(CONFIG2.7)
CBORST
(CONFIG2.2)
VDD Level
BOF
1
1
> VBOD always
0
1
0
< VBOD
1
1
0
> VBOD
0
0
X
X
0
BODCON1 – Brown-out Detection Control 1 (TA protected)
7
6
5
4
3
2
1
0
LPBOD[1:0]
BODFLT
R/W
R/W
Address: ABH
Reset value: see Table 6–2. SFR Definitions and Reset Values
Bit
Name
7:3
-
2:1
LPBOD[1:0]
0
BODFLT
Feb 20, 2016
Description
Reserved
Low power BOD enable
00 = BOD normal mode. BOD circuit is always enabled.
01 = BOD low power mode 1 by turning on BOD circuit every 1.6 ms
periodically.
10 = BOD low power mode 2 by turning on BOD circuit every 6.4 ms
periodically.
11 = BOD low power mode 3 by turning on BOD circuit every 25.6 ms
periodically.
BOD filter control
BOD has a filter which counts 32 clocks of FSYS to filter the power noise when
MCU runs with HIRC, HXT, or ECLK as the system clock and BOD does not
operates in its low power mode (LPBOD[1:0] = [0, 0]). In other conditions, the
filter counts 2 clocks of LIRC.
Note that when CPU is halted in Power-down mode. The BOD output is
permanently filtered by 2 clocks of LIRC.
The BOD filter avoids the power noise to trigger BOD event. This bit controls
BOD filter enabled or disabled.
0 = BOD filter Disabled.
1 = BOD filter Enabled. (Power-on reset default value.)
Page 152 of 179
Rev. 1.01
N76E616 Datasheet
Table 24–2. Minimum Brown-out Detect Pulse Width
BODFLT
(BODCON1.1)
0
BOD Operation Mode
System Clock
Source
Minimum Brown-out Detect
Pulse Width
Normal mode
(LPBOD[1:0] = [0,0])
Any clock source
Typ. 1μs
Low power mode 1
(LPBOD[1:0] = [0,1])
Any clock source
16 (1/FLIRC)
Low power mode 2
(LPBOD[1:0] = [1,0])
Any clock source
64 (1/FLIRC)
Low power mode 3
(LPBOD[1:0] = [1,1])
Any clock source
256 (1/ FLIRC)
HIRC/HXT/ECLK
Normal operation: 32 (1/FSYS)
Idle mode: 32 (1/FSYS)
Power-down mode: 2 (1/FLIRC)
LIRC/LXT
2 (1/FLIRC)
Low power mode 1
(LPBOD[1:0] = [0,1])
Any clock source
18 (1/FLIRC)
Low power mode 2
(LPBOD[1:0] = [1,0])
Any clock source
66 (1/FLIRC)
Low power mode 3
(LPBOD[1:0] = [1,1])
Any clock source
258 (1/ FLIRC)
1
Normal mode
(LPBOD[1:0] = [0,0])
Feb 20, 2016
Page 153 of 179
Rev. 1.01
N76E616 Datasheet
25. RESET
The N76E616 has several options to place device in reset condition. It also offers the software flags to
indicate the source, which causes a reset. In general, most SFRs go to their Reset value irrespective
of the reset condition, but there are several reset source indicating flags whose state depends on the
source of reset. User can read back these flags to determine the cause of reset using software. There
are five ways of putting the device into reset state. They are power-on reset, brown-out reset, external
reset, WDT reset, and software reset.
25.1 Power-On Reset
The N76E616 incorporates an internal power-on reset. During a power-on process of rising power
supply voltage VDD, the power-on reset will hold the MCU in reset mode when VDD is lower than the
voltage reference threshold. This design makes CPU not access program flash while the V DD is not
adequate performing the flash reading. If an undetermined operating code is read from the program
flash and executed, this will put CPU and even the whole system in to an erroneous state. After a
while, VDD rises above the threshold where the system can work, the selected oscillator will start and
then program code will executes from 0000H. At the same time, a power-on flag POF (PCON.4) will
be set 1 to indicate a cold reset, a power cycle reset complete. Note that the contents of internal RAM
will be undetermined after a power-on. It is recommended that user give initial values for the RAM
block.
The POF is recommended to be cleared to 0 via software to check if a cold reset or a warm reset
performed after the next reset occurs. If a cold reset caused by power off and on, POF will be set 1
again. If the reset is a warm reset caused by other reset sources, POF will remain 0. User may take a
different course to check other reset flags and deal with the warm reset event.
PCON – Power Control
7
6
SMOD
SMOD0
R/W
R/W
Address: 87H
Bit
Name
4
POF
5
-
4
3
2
1
0
POF
GF1
GF0
PD
IDL
R/W
R/W
R/W
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
Power-on reset flag
This bit will be set as 1 after a power-on reset. It indicates a cold reset, a power
cycle reset complete. This bit remains its value after any other resets. It is
recommended that the flag be cleared via software.
25.2 Brown-Out Reset
The brown-out detection circuit is used for monitoring the VDD level during execution. When VDD drops
to the selected brown-out trigger level (VBOD), the brown-out detection logic will reset the MCU if
Feb 20, 2016
Page 154 of 179
Rev. 1.01
N76E616 Datasheet
BORST (BODCON0.2) setting 1. After a brown-out reset, BORF (BODCON0.1) will be set as 1 via
hardware. BORF will not be altered by any reset other than a power-on reset or brown-out reset itself.
This bit can be cleared via software.
BODCON0 – Brown-out Detection Control 0 (TA protected)
7
6
5
4
3
2
1
0
BODEN
BOV[1:0]
BOF
BORST
BORF
BOS
R/W
R/W
R/W
R/W
R/W
R
Address: A3H
Reset value: see Table 6–2. SFR Definitions and Reset Values
Bit
Name
1
BORF
Description
Brown-out reset flag
When the MCU is reset by brown-out event, this bit will be set via hardware. This
flag is recommended to be cleared via software.
25.3 External Reset
The external reset pin ̅̅̅̅̅̅ is an input with a Schmitt trigger. An external reset is accomplished by
holding the ̅̅̅̅̅̅ pin low for at least 24 system clock cycles to ensure detection of a valid hardware
reset signal. The reset circuitry then synchronously applies the internal reset signal. Thus, the reset is
a synchronous operation and requires the clock to be running to cause an external reset.
Once the device is in reset condition, it will remain as long as ̅̅̅̅̅̅ pin is low. After the ̅̅̅̅̅̅ high is
removed, the MCU will exit the reset state and begin code executing from address 0000H. If an
external reset applies while CPU is in Power-down mode, the way to trigger a hardware reset is
slightly different. Since the Power-down mode stops system clock, the reset signal will asynchronously
cause the system clock resuming. After the system clock is stable, MCU will enter the reset state.
There is a RSTPINF (AUXR1.6) flag, which indicates an external reset took place. After the external
reset, this bit will be set as 1 via hardware. RSTPINF will not change after any reset other than a
power-on reset or the external reset itself. This bit can be cleared via software.
AUXR1 – Auxiliary Register 1
7
6
5
SWRF
RSTPINF
T1LXTM
R/W
R/W
R/W
Address: A2H
Bit
6
Feb 20, 2016
4
3
2
1
0
T0LXTM
GF2
0
DPS
R/W
R/W
R
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Name
Description
RSTPINF
External reset flag
When the MCU is reset by the external reset, this bit will be set via hardware. It is
recommended that the flag be cleared via software.
Page 155 of 179
Rev. 1.01
N76E616 Datasheet
25.4 Watchdog Timer Reset
The WDT is a free running timer with programmable time-out intervals and a dedicated internal clock
source. User can clear the WDT at any time, causing it to restart the counter. When the selected timeout occurs but no software response taking place for a while, the WDT will reset the system directly
and CPU will begin execution from 0000H.
Once a reset due to WDT occurs, the WDT reset flag WDTRF (WDCON.3) will be set. This bit keeps
unchanged after any reset other than a power-on reset or WDT reset itself. User can clear WDTRF via
software.
WDCON – Watchdog Timer Control (TA protected)
7
6
5
4
3
2
1
0
WDTEN
WDCLR
WDTF
WIDPD
WDTRF
WDPS[2:0]
R/W
R/W
R/W
R/W
R/W
R/W
Address: AAH
Reset value: see Table 6–2. SFR Definitions and Reset Values
Bit
Name
3
WDTRF
Description
WDT reset flag
When the MCU is reset by WDT time-out event, this bit will be set via hardware. It
is recommended that the flag be cleared via software.
25.5 Software Reset
The N76E616 provides a software reset, which allows the software to reset the whole system just
similar to an external reset, initializing the MCU as it reset state. The software reset is quite useful in
the end of an ISP progress. For example, if an ISP of Boot Code updating User Code finishes, a
software reset can be asserted to re-boot CPU to execute new User Code immediately. Writing 1 to
SWRST (CHPCON.7) will trigger a software reset. Note that this bit is writing TA protection. The
instruction that sets the SWRST bit is the last instruction that will be executed before the device reset.
See demo code below.
If a software reset occurs, SWRF (AUXR.7) will be automatically set by hardware. User can check it
as the reset source indicator. SWRF keeps unchanged after any reset other than a power-on reset or
software reset itself. SWRF can be cleared via software.
Feb 20, 2016
Page 156 of 179
Rev. 1.01
N76E616 Datasheet
CHPCON – Chip Control (TA protected)
7
6
5
SWRST
IAPFF
W
R/W
Address: 9FH
Bit
Name
7
Description
SWRST
Software reset
To set this bit as logic 1 will cause a software reset. It will automatically be cleared
via hardware after reset is finished.
AUXR1 – Auxiliary Register 1
7
6
5
SWRF
RSTPINF
T1LXTM
R/W
R/W
R/W
Address: A2H
Bit
Name
7
4
3
2
1
0
BS
IAPEN
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
4
3
2
1
0
T0LXTM
GF2
0
DPS
R/W
R/W
R
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
SWRF
Software reset flag
When the MCU is reset via software reset, this bit will be set via hardware. It is
recommended that the flag be cleared via software.
The software demo code is listed below.
ANL
...
...
CLR
MOV
MOV
ORL
AUXR1,#01111111b
;software reset flag clear
EA
TA,#0AAh
TA,#55h
CHPCON,#10000000b
;software reset
25.6 Boot Select
The N76E616 provides user a flexible boot selection for variant application. The SFR bit BS in
CHPCON.1 determines MCU booting from APROM or LDROM after any source of reset. If reset
occurs and BS is 0, MCU will reboot from address 0000H of APROM. Else, the CPU will reboot from
address 0000H of LDROM. Note that BS is loaded from the inverted value of CBS bit in CONFIG0.7
after all resets except software reset.
CONFIG0.7
CHPCON.1
CBS
BS
Load
Power-on Reset
Watchgod Timer Reset
Brown-out Reset
RST Pin Reset
Reset and Boot From APROM
BS = 0
BS = 1
Reset and Boot From LDROM
Software Reset
Feb 20, 2016
Page 157 of 179
Rev. 1.01
N76E616 Datasheet
Figure 25-1. Boot Selecting Diagram
CONFIG0
7
CBS
R/W
6
-
Bit
Name
7
CBS
5
-
Name
3
-
2
1
0
RPD
LOCK
R/W
R/W
Factory default value: 1111 1111b
Description
CONFIG boot select
This bit defines from which block that MCU re-boots after resets except
software reset.
1 = MCU will re-boot from APROM after resets except software reset.
0 = MCU will re-boot from LDROM after resets except software reset.
CHPCON – Chip Control (TA protected)
7
6
5
SWRST
IAPFF
W
R/W
Address: 9FH
Bit
4
OCDEN
R/W
4
3
2
1
0
BS[1]
IAPEN
R/W
R/W
Reset value: see Table 6–2. SFR Definitions and Reset Values
Description
Boot select
This bit defines from which block that MCU re-boots after all resets.
0 = MCU will re-boot from APROM after all resets.
1 = MCU will re-boot from LDROM after all resets.
[1] BS is initialized by being loaded from the inverted value of CBS bit in CONFIG0.7 after resets except software
reset. It keeps unchanged after software reset.
1
BS
After the MCU is released from all reset state, the hardware will always check the BS bit
instead of the CBS bit to determine from which block that the device reboots.
25.7 Reset State
The reset state besides power-on reset does not affect the on-chip RAM. The data in the RAM will be
preserved during the reset. After the power-on reset the RAM contents will be indeterminate.
After a reset, most of SFRs go to their initial values except bits, which are affected by different reset
events. See the notes of Table 6–2. SFR Definitions and Reset Values. The Program Counter is
forced to 0000H and held as long as the reset condition is applied. Note that the Stack Pointer is also
reset to 07H and thus the stack contents may be effectively lost during the reset event even though
the RAM contents are not altered.
After a reset, all peripherals and interrupts are disabled. The I/O port latches resumes FFH and I/O
mode input-only.
Feb 20, 2016
Page 158 of 179
Rev. 1.01
N76E616 Datasheet
26. AUXILIARY FEATURES
26.1 Dual DPTRs
The original 8051 contains one DPTR (data pointer) only. With single DPTR, it is difficult to move data
form one address to another with wasting code size and low performance. The N76E616 provides two
data pointers. Thus, software can load both a source and a destination address when doing a block
move. Once loading, the software simply switches between DPTR and DPTR1 by the active data
pointer selection DPS (AUXR1.0) bit.
An example of 64 bytes block move with dual DPTRs is illustrated below. By giving source and
destination addresses in data pointers and activating cyclic makes block RAM data move more simple
and efficient than only one DPTR. The INC AUXR1 instruction is the shortest (2 bytes) instruction to
accomplish DPTR toggling rather than ORL or ANL. For AUXR1.1 contains a hard-wired 0, it allows
toggling of the DPS bit by incrementing AUXR1 without interfering with other bits in the register.
MOV
MOV
INC
MOV
R0,#64
DPTR,#D_Addr
AUXR1
DPTR,#S_Addr
;number of bytes to move
;load destination address
;change active DPTR
;load source address
MOVX
INC
MOVX
INC
INC
INC
DJNZ
INC
A,@DPTR
AUXR1
@DPTR,A
DPTR
AUXR1
DPTR
R0,LOOP
AUXR1
;read source data byte
;change DPTR to destination
;write data to destination
;next destination address
;change DPTR to source
;next source address
LOOP:
;(optional) restore DPS
AUXR1 also contains a general-purpose flag GF2 in its bit 3 that can be set or cleared by the user via
software.
DPL – Data Pointer Low Byte
7
6
5
4
3
2
1
0
DPL[7:0]
R/W
Address: 82H
Bit
7:0
Feb 20, 2016
reset value: 0000 0000b
Name
Description
DPL[7:0]
Data pointer low byte
This is the low byte of 16-bit data pointer. DPL combined with DPH serve as a 16bit data pointer DPTR to address non-scratch-pad memory or Program Memory.
DPS (DPS.0) bit decides which data pointer, DPTR or DPTR1, is activated.
Page 159 of 179
Rev. 1.01
N76E616 Datasheet
DPH – Data Pointer High Byte
7
6
5
4
3
2
1
0
DPH[7:0]
R/W
Address: 83H
Bit
7:0
reset value: 0000 0000b
Name
Description
DPH[7:0]
Data pointer high byte
This is the high byte of 16-bit data pointer. DPH combined with DPL serve as a
16-bit data pointer DPTR to address non-scratch-pad memory or Program
Memory. DPS (DPS.0) bit decides which data pointer, DPTR or DPTR1, is
activated.
AUXR1 – Auxiliary Register 1
7
6
5
SWRF
RSTPINF
T1LXTM
R/W
R/W
R/W
Address: A2H
Bit
Name
3
GF2
1
0
0
DPS
4
3
2
1
0
T0LXTM
GF2
0
DPS
R/W
R/W
R
R/W
reset value: see Table 6–2. SFR Definitions and Reset Values
Description
General purpose flag 2
The general-purpose flag that can be set or cleared by the user via software.
Reserved
This bit is always read as 0.
Data pointer select
0 = Data pointer 0 (DPTR) is active by default.
1 = Data pointer 1 (DPTR1) is active.
After DPS switches the activated data pointer, the previous inactivated data
pointer remains its original value unchanged.
26.2 96-Bit Unique Code
Before shipping out, each N76E616 chip was factory pre-programmed with a 96-bit width serial
number, which is guaranteed to be unique. The serial number is called Unique Code. The user can
read the Unique Code only by IAP command. Please see Section 21.1 “IAP Commands” on page 132.
Feb 20, 2016
Page 160 of 179
Rev. 1.01
N76E616 Datasheet
27. ON-CHIP-DEBUGGER (OCD)
27.1 Functional Description
The N76E616 is embedded in an on-chip-debugger (OCD) providing developers with a low cost
method for debugging user code, which is available on each package. The OCD gives debug
capability of complete program flow control with eight hardware address breakpoints, single step, free
running, and non-intrusive commands for memory access. The OCD system does not occupy any
locations in the memory map and does not share any on-chip peripherals.
When the OCDEN (CONFIG0.4) is programmed as 0 and LOCK (CONFIG0.1) remains unprogrammed as 1, the OCD is activated. The OCD cannot operate if chip is locked. The OCD system
uses a two-wire serial interface, OCDDA and OCDCK, to establish communication between the target
device and the controlling debugger host. OCDDA is an input/output pin for debug data transfer and
OCDCK is an input pin for synchronization with OCDDA data. The P3.6/̅̅̅̅̅̅ pin is also necessary for
OCD mode entry and exit. The N76E616 supports OCD with Flash Memory control path by ICP writer
mode, which shares the same three pins of OCD interface.
The N76E616 uses OCDDA, OCDCK, and P3.6/̅̅̅̅̅̅ pins to interface with the OCD system. When
designing a system where OCD will be used, the following restrictions must be considered for correct
operation:
1. If P3.6/ ̅̅̅̅̅̅ is configured as external reset pin, it cannot be connected directly to VDD and all
external reset devices must be disconnected.
2. If P3.6/̅̅̅̅̅̅ is configured as input pin P3.6, any external input source must be isolated.
3. Any external component connected on OCDDA and OCDCK must be isolated.
27.2 Limitation of OCD
The N76E616 is a fully-featured microcontroller that multiplexes several functions on its limited I/O
pins. Some device functionality must be sacrificed to provide resources for OCD system. The OCD
has the following limitations:
1. The P3.6/̅̅̅̅̅̅ pin needs to be used for OCD mode selection. Therefore, neither P3.6 input nor an
external reset source can be emulated.
2. The OCDDA pin is physically located on the same pin as P3.4. Therefore, neither its I/O function
nor shared multi-functions can be emulated.
Feb 20, 2016
Page 161 of 179
Rev. 1.01
N76E616 Datasheet
3. The OCDCK pin is physically located on the same pin as P3.5. Therefore, neither its I/O function
nor shared multi-functions can be emulated.
4. When the system is in Idle or Power-down mode, it is invalid to perform any accesses because
parts of the device may not be clocked. A read access could return garbage or a write access might
not succeed.
5. HIRC cannot be turned off because OCD uses this clock to monitor its internal status. The
instruction that turns off HIRC affects nothing if executing under debug mode. When CPU enters its
Power-down mode under debug mode, HIRC keeps turning on.
The N76E616 OCD system has another limitation that non-intrusive commands cannot be executed at
any time while the user’s program is running. Non-intrusive commands allow a user to access MCU
memory locations, status or control registers with the debug controller. A reading or writing memory or
control register space is allowed only when MCU is under halt condition after a matching of the
hardware address breakpoint or a single step running.
CONFIG0
7
CBS
R/W
6
-
Bit
Name
4
Feb 20, 2016
OCDEN
5
-
4
OCDEN
R/W
3
-
2
1
0
RPD
LOCK
R/W
R/W
Factory default value: 1111 1111b
Description
OCD enable
1 = OCD Disabled.
0 = OCD Enabled.
Page 162 of 179
Rev. 1.01
N76E616 Datasheet
28. IN-CIRCUIT-PROGRAMMING (ICP)
The Flash Memory can be programmed by “In-Circuit-Programming” (ICP). In general, hardwareprogramming mode uses gang-writers to reduce programming costs and time to market while the
products enter the mass production state. However, if the product is just under development or the
end product needs firmware updating in the hand of an end customer, the hardware programming
mode will make repeated programming difficult and inconvenient. ICP method makes it easy and
possible without removing the microcontroller from the system. ICP mode also allows customers to
manufacture circuit boards with un-programmed devices. Programming can be done after the
assembly process allowing the device to be programmed with the most recent firmware or a
customized firmware.
There are three signal pins, ̅̅̅̅̅̅, ICPDA, and ICPCK, involved in ICP function. ̅̅̅̅̅̅ is used to enter
or exit ICP mode. ICPDA is the data input and output pin. ICPCK is the clock input pin, which
synchronizes the data shifted in to or out from MCU under programming. User should leave these
three pins plus VDD and GND pins on the circuit board to make ICP possible.
Nuvoton provides ICP tool for N76E616, which enables user to easily perform ICP through Nuvoton
ICP programmer. The ICP programmer developed by Nuvoton has been optimized according to the
electric characteristics of MCU. It also satisfies the stability and efficiency during production progress.
For more details, please visit Nuvoton 8-bit Microcontroller website: Nuvoton 80C51 Microcontroller
Technical Support.
Feb 20, 2016
Page 163 of 179
Rev. 1.01
N76E616 Datasheet
29. CONFIG BYTES
The N76E616 has several hardware configuration bytes, called CONFIG, those are used to configure
the hardware options such as the security bits, system clock source, and so on. These hardware
options can be re-configured through the parallel Writer, In-Circuit-Programming (ICP), or InApplication-Programming (IAP). Several functions, which are defined by certain CONFIG bits, are also
available to be re-configured by SFR. Therefore, there is a need to load such CONFIG bits into
respective SFR bits. Such loading will occur after resets. These SFR bits can be continuously
controlled via user’s software.
CONFIG bits marked as ‘-‘ should always keep un-programmed.
CONFIG0
7
CBS
R/W
6
-
Bit
5
-
Name
3
-
2
1
0
RPD
LOCK
R/W
R/W
Factory default value: 1111 1111b
Description
7
CBS
6:5
-
4
OCDEN
3
-
2
RPD
1
LOCK
Feb 20, 2016
4
OCDEN
R/W
CONFIG boot select
This bit defines from which block that MCU re-boots after resets except
software reset.
1 = MCU will re-boot from APROM after resets except software reset.
0 = MCU will re-boot from LDROM after resets except software reset.
Reserved
OCD enable
1 = OCD Disabled.
0 = OCD Enabled.
Reserved
Reset pin disable
1 = The reset function of P3.6/̅̅̅̅̅̅ pin Enabled. P3.6/̅̅̅̅̅̅ functions as the
external reset pin.
0 = The reset function of P3.6/̅̅̅̅̅̅ pin Disabled. P3.6/̅̅̅̅̅̅ functions as an
input-only pin P3.6.
Chip lock enable
1 = Chip is unlocked. Flash Memory is not locked. Their contents can be read
out through a parallel Writer/ICP programmer.
0 = Chip is locked. Whole Flash Memory is locked. Their contents read
through a parallel Writer or ICP programmer will be all blank (FFH).
Programming to Flash Memory is invalid.
Note that CONFIG bytes are always unlocked and can be read. Hence, once
the chip is locked, the CONFIG bytes cannot be erased or programmed
individually. The only way to disable chip lock is execute “Whole Chip Erase”.
However, all data within the Flash Memory and CONFIG bits will be erased
when this procedure is executed.
If the chip is locked, it does not alter the IAP function.
Page 164 of 179
Rev. 1.01
N76E616 Datasheet
CONFIG0
7
6
5
4
3
2
1
0
CBS
-
-
OCDEN
-
RPD
LOCK
-
Software reset does not reload this bit
7
6
5
4
3
2
1
0
SWRST
IAPFF
-
-
-
-
BS
IAPEN
CHPCON
Figure 29-1. CONFIG0 Any Reset Reloading
CONFIG1
7
-
6
-
Bit
2:0
CONFIG2
7
CBODEN
R/W
Bit
5
-
3
-
2
1
0
LDSIZE[2:0]
R/W
Factory default value: 1111 1111b
Name
Description
LDSIZE[2:0]
LDROM size select
This field selects the size of LDROM.
111 = No LDROM. APROM is 18K Bytes.
110 = LDROM is 1K Bytes. APROM is 17K Bytes.
101 = LDROM is 2K Bytes. APROM is 16K Bytes.
100 = LDROM is 3K Bytes. APROM is 15K Bytes.
0xx = LDROM is 4K Bytes. APROM is 14K Bytes.
6
-
5
4
CBOV[1:0]
R/W
Name
7
CBODEN
6
-
5:4
CBOV[1:0]
3
BOIAP
2
CBORST
Feb 20, 2016
4
-
3
BOIAP
R/W
2
1
0
CBORST
R/W
Factory default value: 1111 1111b
Description
CONFIG brown-out detect enable
1 = Brown-out detection circuit on.
0 = Brown-out detection circuit off.
Reserved
CONFIG brown-out voltage select
11 = VBOD is 2.2V.
10 = VBOD is 2.7V.
01 = VBOD is 3.8V.
00 = VBOD is 4.3V.
Brown-out inhibiting IAP
This bit decides whether IAP erasing or programming is inhibited by brown-out
status. This bit is valid only when brown-out detection is enabled.
1 = IAP erasing or programming is inhibited if VDD is lower than VBOD.
0 = IAP erasing or programming is allowed under any workable V DD.
CONFIG brown-out reset enable
This bit decides whether a brown-out reset is caused by a power drop below
VBOD.
1 = Brown-out reset Enabled.
0 = Brown-out reset Disabled.
Page 165 of 179
Rev. 1.01
N76E616 Datasheet
CONFIG2
7
6
CBODEN
-
7
6
BODEN
-
BODCON0
5
4
CBOV[1:0]
5
3
2
1
0
BOIAP
CBORST
-
-
4
BOV[1:0]
3
2
1
0
BOF
BORST
BORF
BOS
Figure 29-2. CONFIG2 Power-On Reset Reloading
CONFIG4
7
Bit
6
5
WDTEN[3:0]
R/W
4
3
-
2
1
0
Factory default value: 1111 1111b
Name
Description
7:4
WDTEN[3:0]
WDT enable
This field configures the WDT behavior after MCU execution.
1111 = WDT is Disabled. WDT can be used as a general-purpose timer via
software control.
0101 = WDT is Enabled as a time-out reset timer and it stops running during
Idle or Power-down mode.
Others = WDT is Enabled as a time-out reset timer and it keeps running during
Idle or Power-down mode.
3:0
-
Feb 20, 2016
Reserved
Page 166 of 179
Rev. 1.01
N76E616 Datasheet
30. INSTRUCTION SET
The N76E616 executes all the instructions of the standard 80C51 family fully compatible with MCS-51.
However, the timing of each instruction is different for it uses high performance 1T 8051 core. The
architecture eliminates redundant bus states and implements parallel execution of fetching, decode,
and execution phases. The N76E616 uses one clock per machine-cycle. It leads to performance
improvement of rate 8.1 (in terms of MIPS) with respect to traditional 12T 80C81 device working at the
same clock frequency. However, the real speed improvement seen in any system will depend on the
instruction mix.
All instructions are coded within an 8-bit field called an OPCODE. This single byte should be fetched
from Program Memory. The OPCODE is decoded by the CPU. It determines what action the CPU will
take and whether more operation data is needed from memory. If no other data is needed, then only
one byte was required. Thus, the instruction is called a one-byte instruction. In some cases, more data
is needed, which is two or three byte instructions.
Table 30–1 lists all instructions for details. The note of the instruction set and addressing modes are
shown below.
Rn (n = 0~7)
direct
location
Register R0 to R7 of the currently selected Register Bank.
8-bit internal data location’s address. It could be an internal data RAM
(00H to 7FH) or an SFR (80H to FFH).
@Ri (i = 0, 1)
through
8-bit internal data RAM location (00H to FFH) addressed indirectly
register R0 or R1.
#data
8-bit constant included in the instruction.
#data16
16-bit constant included in the instruction.
addr16
16-bit destination address. Used by LCALL and LJMP. A branch can
anywhere within the Program Memory address space.
addr11
11-bit destination address. Used by ACALL and AJMP. The branch will
be
be
within the same 2K-Byte page of Program Memory as the first byte of
following instruction.
the
rel
conditional
Signed (2’s complement) 8-bit offset Byte. Used by SJMP and all
branches. The range is -128 to +127 Bytes relative to first byte of the
following
instruction.
bit
Feb 20, 2016
Direct addressed bit in internal data RAM or SFR.
Page 167 of 179
Rev. 1.01
N76E616 Datasheet
Table 30–1. Instruction Set for N76E616
Instruction
NOP
OPCODE
N76E616 V.S.
Tradition 80C51
Speed Ratio
Bytes
Clock Cycles
00
1
1
12
ADD
A, Rn
28~2F
1
2
6
ADD
A, direct
25
2
3
4
ADD
A, @Ri
26, 27
1
4
3
ADD
A, #data
24
2
2
6
ADDC
A, Rn
38~3F
1
2
6
ADDC
A, direct
35
2
3
4
ADDC
A, @Ri
36, 37
1
4
3
ADDC
A, #data
34
2
2
6
SUBB
A, Rn
98~9F
1
2
6
SUBB
A, direct
95
2
3
4
SUBB
A, @Ri
96, 97
1
4
3
SUBB
A, #data
94
2
2
6
INC
A
04
1
1
12
INC
Rn
08~0F
1
3
4
INC
direct
05
2
4
3
INC
@Ri
06, 07
1
5
2.4
INC
DPTR
A3
1
1
24
DEC
A
14
1
1
12
DEC
Rn
18~1F
1
3
4
DEC
direct
15
2
4
3
DEC
@Ri
16, 17
1
5
MUL
AB
A4
1
4
12
DIV
AB
84
1
4
12
DA
A
D4
1
1
12
ANL
A, Rn
58~5F
1
2
6
ANL
A, direct
55
2
3
4
ANL
A, @Ri
56, 57
1
4
3
ANL
A, #data
54
2
2
6
ANL
direct, A
52
2
4
3
ANL
direct, #data
53
3
4
6
ORL
A, Rn
48~4F
1
2
6
ORL
A, direct
45
2
3
4
ORL
A, @Ri
46, 47
1
4
3
ORL
A, #data
44
2
2
6
ORL
direct, A
42
2
4
3
ORL
direct, #data
43
3
4
6
XRL
A, Rn
68~6F
1
2
6
XRL
A, direct
65
2
3
4
XRL
A, @Ri
66, 67
1
4
3
XRL
A, #data
64
2
2
6
XRL
direct, A
62
2
4
3
Feb 20, 2016
Page 168 of 179
2.4
Rev. 1.01
N76E616 Datasheet
Table 30–1. Instruction Set for N76E616
Instruction
OPCODE
Bytes
Clock Cycles
N76E616 V.S.
Tradition 80C51
Speed Ratio
XRL
direct, #data
63
3
4
6
CLR
A
E4
1
1
12
CPL
A
F4
1
1
12
RL
A
23
1
1
12
RLC
A
33
1
1
12
RR
A
03
1
1
12
RRC
A
13
1
1
12
SWAP
A
C4
1
1
12
MOV
A, Rn
E8~EF
1
1
12
MOV
A, direct
E5
2
3
4
MOV
A, @Ri
E6, E7
1
4
3
MOV
A, #data
74
2
2
6
MOV
Rn, A
F8~FF
1
1
12
MOV
Rn, direct
A8~AF
2
4
6
MOV
Rn, #data
78~7F
2
2
6
MOV
direct, A
F5
2
2
6
MOV
direct, Rn
88~8F
2
3
8
MOV
direct, direct
85
3
4
6
MOV
direct, @Ri
86, 87
2
5
4.8
MOV
direct, #data
75
3
3
8
MOV
@Ri, A
F6, F7
1
3
4
MOV
@Ri, direct
A6, A7
2
4
6
MOV
@Ri, #data
76, 77
2
3
6
MOV
DPTR, #data16
90
3
3
8
MOVC A, @A+DPTR
93
1
4
6
MOVC A, @A+PC
83
1
4
6
E2, E3
1
5
4.8
E0
1
4
6
MOVX
MOVX
A, @Ri[1]
A, @DPTR
[1]
[1]
MOVX
@Ri, A
F2, F3
1
6
4
MOVX
@DPTR, A[1]
F0
1
5
4.8
PUSH
direct
C0
2
4
6
POP
direct
D0
2
3
8
XCH
A, Rn
C8~CF
1
2
6
XCH
A, direct
C5
2
3
4
XCH
A, @Ri
C6, C7
1
4
3
XCHD
A, @Ri
D6, D7
1
5
2.4
CLR
C
C3
1
1
12
CLR
bit
C2
2
4
3
SETB
C
D3
1
1
12
SETB
bit
D2
2
4
3
CPL
C
B3
1
1
12
CPL
bit
B2
2
4
3
Feb 20, 2016
Page 169 of 179
Rev. 1.01
N76E616 Datasheet
Table 30–1. Instruction Set for N76E616
Instruction
OPCODE
Bytes
Clock Cycles
N76E616 V.S.
Tradition 80C51
Speed Ratio
ANL
C, bit
82
2
3
8
ANL
C, /bit
B0
2
3
8
ORL
C, bit
72
2
3
8
ORL
C, /bit
A0
2
3
8
MOV
C, bit
A2
2
3
4
MOV
bit, C
92
2
4
6
ACALL addr11
11, 31, 51, 71,
91, B1, D1, F1[2]
2
4
6
LCALL addr16
12
3
4
6
RET
22
1
5
4.8
RETI
32
1
5
4.8
AJMP
addr11
01, 21, 41, 61,
81, A1, C1, E1[3]
2
3
8
LJMP
addr16
02
3
4
6
SJMP
rel
80
2
3
8
JMP
@A+DPTR
73
1
3
8
JZ
rel
60
2
3
8
JNZ
rel
70
2
3
8
JC
rel
40
2
3
8
JNC
rel
50
2
3
8
JB
bit, rel
20
3
5
4.8
JNB
bit, rel
30
3
5
4.8
JBC
bit, rel
10
3
5
4.8
CJNE
A, direct, rel
B5
3
5
4.8
CJNE
A, #data, rel
B4
3
4
6
CJNE
Rn, #data, rel
B8~BF
3
4
6
CJNE
@Ri, #data, rel
B6, B7
3
6
4
DJNZ
Rn, rel
D8~DF
2
4
6
DJNZ direct, rel
D5
3
5
4.8
[1] The N76E616 does not have external memory bus. MOVX instructions are used to access
internal XRAM.
[2] The most three significant bits in the 11-bit address [A10:A8] decide the ACALL hex code.
The code will be [A10,A9,A8,1,0,0,0,1].
[3] The most three significant bits in the 11-bit address [A10:A8] decide the AJMP hex code.
The code will be [A10,A9,A8,0,0,0,0,1].
Feb 20, 2016
Page 170 of 179
Rev. 1.01
N76E616 Datasheet
31. ELECTRICAL CHARACTERISTICS
31.1 Absolute Maximum Ratings
Parameter
Rating
Unit
Operating temperature under bias (TA)
-40 to +105
C
Storage temperature range
-55 to +150
C
Voltage on VDD pin to GND pin
-0.3 to +6.3
V
-0.3 to (VDD+0.3)
V
Voltage on any other pin to GND pin
Stresses at or above those listed under “Absolute Maximum Ratings” may cause permanent damage
to the device. It 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.
31.2 D.C. Electrical Characteristics
Table 31–1. D.C. Electrical Characteristics
Symbol
Parameter
Condition
Min.
Typ.
Max.
Unit
2.4
-
5.5
V
VDD-0.3
-
0.2VDD-0.1
V
VDD-0.3
-
0.3VDD
V
VDD-0.3
-
0.2VDD
V
0.2VDD+0.9
-
VDD+0.3
V
0.7VDD
-
VDD+0.3
V
-
-
0.4
V
-
-
0.4
-
-
0.4
VDD = 4.5V, IOL = 32mA
-
-
0.4
VDD = 3.0V, IOL = 24mA
-
-
0.4
VDD = 2.4V, IOL = 18mA
-
-
0.4
Supply voltage
VDD
Operating voltage
F = 0 to 16 MHz
VIL
Input low voltage
(I/O with TTL input)
2.4V < VDD < 5.5V
VIL1
Input low voltage
(I/O with Schmitt trigger input and
XIN)
2.4V < VDD < 5.5V
VIL2
Input low voltage (̅̅̅̅̅̅)
2.4V < VDD < 5.5V
VIH
Input high voltage
(I/O with TTL input)
2.4V < VDD < 5.5V
VIH1
Input high voltage
(I/O with Schmitt trigger input
̅̅̅̅̅̅, and XIN)
2.4V < VDD < 5.5V
I/O
VOL
VOL1
[1]
Output low voltage
VDD = 4.5V, IOL = 10mA
(Normal output strength, all modes
VDD = 3.0V, IOL = 7mA
except input-only)
VDD = 2.4V, IOL = 5mA
[1]
Output low voltage
(P1.0 to P1.3 with large output
strength, all modes except inputonly)
Feb 20, 2016
Page 171 of 179
V
Rev. 1.01
N76E616 Datasheet
Symbol
VOH
VOH1
VOH2
Parameter
Condition
Min.
Typ.
Max.
Unit
VDD = 4.5V, IOH = -360μ
2.4
-
-
V
VDD = 3.0V, IOH = -90μ
2.4
-
-
VDD = 2.4V, IOH = -50μ
2.0
-
-
Output high voltage
VDD = 4.5V, IOH = -20mA
(Normal output strength, push-pull
VDD = 3.0V, IOH = -5.5mA
mode)
VDD = 2.4V, IOH = -3mA
2.4
-
-
2.4
-
-
2.0
-
-
Output high voltage
(P1.0 to P1.3 with large output
strength, push-pull mode)
VDD = 4.5V, IOH = -32mA
2.4
-
-
VDD = 3.0V, IOH = -8mA
2.4
-
-
VDD = 2.4V, IOH = -4mA
2.0
-
-
VDD = 5.5V, VIN = 0.4V
-
-
-75
μ
VDD = 5.5V, VIN = 2.0V
--
-500
-650
μ
-
1
±10
μ
50
-
600
kΩ
HXT, VDD = 5.0V
-
5.1
-
mA
HXT, VDD = 3.3V
-
3.9
-
HIRC, VDD = 5.0V
-
2.9
-
HIRC, VDD = 3.3V
-
2.8
-
LXT, VDD = 5.0V
-
180
-
LXT, VDD = 3.3V
-
165
-
LIRC, VDD = 5.0V
-
175
-
LIRC, VDD = 3.3V
-
160
-
HXT, VDD = 5.0V
-
3.5
-
HXT, VDD = 3.3V
-
2.2
-
HIRC, VDD = 5.0V
-
1.8
-
HIRC, VDD = 3.3V
-
1.7
-
LXT, VDD = 5.0V
-
180
-
μA
μA
Output high voltage
(quasi-bidirectional mode)
IIL
Logical 0 input current
(quasi-bidirectional mode)
ITL
Logical 1-to-0 transition current
(quasi-bidirectional mode)
ILI
Input leakage current
(open-drain or input-only mode)
0 < VIN < VDD
RRST
̅̅̅̅̅̅ pin internal pull-low resistor
2.4V < VDD < 5.5V
[2]
V
V
Supply current
IDD
IIDL
[3]
Normal operating current
Idle mode current
LXT, VDD = 3.3V
IPD
IPD1
mA
μA
μA
mA
mA
165
LIRC, VDD = 5.0V
-
175
-
LIRC, VDD = 3.3V
-
160
-
Power-down mode current (BOD
off, LXT off)
TA = 25℃
-
6.5
8
μ
TA = -40℃ to +105℃
-
40
80
μ
Power-down mode current (BOD
off, LXT on, XTGS[1:0] = [0,1])
TA = 25℃
-
8.5
11
μ
TA = -40℃ to +105℃
-
44
85
μ
Feb 20, 2016
Page 172 of 179
Rev. 1.01
N76E616 Datasheet
[1] Under steady state (non-transient) conditions, IOL must be externally limited as follows,
Maximum IOL per port pin:
40mA
Maximum total IOL for all outputs: 120mA
[2] Pins of all ports in quasi-bidirectional mode source a transition current when they are being externally driven
from 1 to 0. The transition current reaches its maximum value when VIN is approximately 2V.
[3] It is measured while MCU keeps in running “SJMP $” loop continuously. All pins of ports are configured as
quasi-bidirectional mode.
Feb 20, 2016
Page 173 of 179
Rev. 1.01
N76E616 Datasheet
31.3 A.C. Electrical Characteristics
Table 31–2. System Clock A.C. Electrical Characteristics
Symbol
1/ tCLCL
Parameter
Min.
Typ.
Max.
Unit
External clock input frequency (ECLK)
0
-
16
MHz
High-speed crystal/resonator frequency (HXT)
2
-
16
Low-speed crystal/resonator frequency (LXT)
-
32.768
-
kHz
tCHCX
External clock input high time
30
-
-
ns
tCLCX
External clock input low time
30
-
-
ns
tCLCH
External clock input rise time
-
-
10
ns
tCHCL
External clock input fall time
-
-
10
ns
Figure 31-1. External Clock Input Timing
Table 31–3. Internal Oscillator A.C. Electrical Characteristics
Symbol
FHIRC
FLIRC
Parameter
High-speed 11.059 MHz
oscillator frequency (HIRC)
Low-speed 10 kHz oscillator
frequency (LIRC)
Frequency
Deviation
Min.
Typ.
Max.
Unit
VDD = 5.0V,
TA = 25℃
±1%
10.948
11.059
11.170
MHz
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃
±5%
10.506
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃
50%
5
10
15
kHz
Min.
Typ.
Max.
Unit
FSYS = HIRC
-
40
-
μs
FSYS = HXT, F = 16 MHz
-
600
-
Min.
Typ.
Max.
Unit
-
24/FSYS
450
μs
Condition
11.612
Table 31–4. Power-Down Wake-Up A.C. Electrical Characteristics
Symbol
TPDWK
Parameter
Power-down wake-up time
Condition
Table 31–5. External Reset Pin A.C. Electrical Characteristics
Symbol
TRST
Parameter
̅̅̅̅̅̅ pin detect pulse width
Feb 20, 2016
Condition
VDD = 2.4V to 5.5V
Page 174 of 179
Rev. 1.01
N76E616 Datasheet
31.4 Analog Electrical Characteristics
Table 31–6. POR Electrical Characteristics
Symbol
VPOR
Parameter
Power-on reset voltage
TPORRD Power-on reset release delay
Condition
TA = -40℃ to +105℃
VDD = 2.4V to 5.5V
Min.
Typ.
Max.
Unit
1.6
2.0
2.4
V
-
5
-
ms
Min.
Typ.
Max.
Unit
Table 31–7. BOD Electrical Characteristics
Symbol
Parameter
Condition
VBOD0
Brown-out threshold 4.3V
BOV[1:0] = [0,0]
4.1
4.3
4.5
V
VBOD1
Brown-out threshold 3.8V
BOV[1:0] = [0,1]
3.5
3.7
3.9
V
VBOD2
Brown-out threshold 2.7V
BOV[1:0] = [1,0]
2.55
2.7
2.85
V
VBOD3
Brown-out threshold 2.2V
BOV[1:0] = [1,1]
2.05
2.2
2.35
V
30
-
200
mV
VDD = 5V, LPBOD[1:0] = [0,0]
-
180
260
μA
VDD = 5V, LPBOD[1:0] = [0,1]
-
25
35
VDD = 5V, LPBOD[1:0] = [1,0]
-
6
9
VDD = 5V, LPBOD[1:0] = [1,1]
-
2
3.5
VBODHYS Brown-out hysteresis
IBOD
TBOD
TBODEN
Brown-out quiescent current
LPBOD[1:0] = [0,0] only
Brown-out detect pulse width
VDD = 2.4V to 5.5V
Brown-out enable time
VDD = 2.4V to 5.5V
See Table 24–2
-
2
-
3
1/FLIRC
Min.
Typ.
Max.
Unit
1.15
1.21
1.27
V
1
-
2
1/FLIRC
Min.
Typ.
Max.
Unit
2.4
-
5.5
V
Table 31–8. Band-gap Electrical Characteristics
Symbol
VBG
TBGEN
Parameter
Condition
Band-gap voltage
TA = -40℃ to +105℃
Band-gap enable time
VDD = 2.4V to 5.5V
Table 31–9. ADC Electrical Characteristics
Symbol
Parameter
Condition
VAVDD
ADC supply voltage
-
IAVDD
ADC supply current
VDD = 5V
-
500
650
μA
VAIN
Analog input voltage
-
0
-
VDD
V
NR
Resolution
VDD = 2.4V to 5.5V
DNL
Differential non-linearity error
Feb 20, 2016
10
bit
VDD = 5V, TA = 25℃,
Conversion rate = 300 ksps
-
+3.5
-
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 300 ksps
-
-
+6
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
-
-
+2
LSB
Page 175 of 179
Rev. 1.01
N76E616 Datasheet
Symbol
Parameter
Condition
Min.
Typ.
Max.
Unit
VDD = 5V, TA = 25℃,
Conversion rate = 300 ksps
-
+2
-
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 300 ksps
-4.5
-
+2.5
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 150 ksps
-1.5
-
+1.5
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 300 ksps
-1
-
+3
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 150 ksps
-1
-
+2.5
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 300 ksps
-3
-
-0.5
LSB
VDD = 5V, TA = 25℃,
Conversion rate = 300 ksps
-
+5
-
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 300 ksps
-
-
+8
LSB
VDD = 5V, TA = 25℃,
TA = -40℃ to +105℃,
Conversion rate = 150 ksps
-
+2.5
-
LSB
VDD = 2.4V to 5.5V,
TA = -40℃ to +105℃,
Conversion rate = 150 ksps
-
-
+4
LSB
Conversion rate = 150 ksps
INL
OE
FE
TUE
-
Integral non-linearity error
Offset error
Full scale error
Total un-adjust error
Monotonicity
VDD = 2.4V to 5.5V
ADC clock frequency
VDD = 2.4V to 5.5V
0.01
-
4
MHz
Sampling time (software
programmable)
VDD = 2.4V to 5.5V
6
-
261
1/FADC
TCONV
Total conversion time
VDD = 2.4V to 5.5V
TADCEN
ADC enable time
VDD = 2.4V to 5.5V
-
-
10
μs
RIN
ADC input equivalent resistor
VDD = 2.4V to 5.5V
-
2.5
-
kΩ
CIN
ADC input equivalent capacitor VDD = 2.4V to 5.5V
-
3.6
-
pF
FADC
TS
Feb 20, 2016
Page 176 of 179
Guaranteed
-
TS + 12
1/FADC
Rev. 1.01
N76E616 Datasheet
Table 31–10. LCD Driver Electrical Characteristics
Symbol
Parameter
Condition
Min.
Typ.
Max.
Unit
3.0
-
5.5
V
μA
VLCD
LCD supply voltage
‘-
ILCD
LCD supply current
VLCD = 5V, RSEL[1:0] = [0,0],
frame rate = 64 Hz, 1/4 duty, 1/3
bias, all SEG pins enable, display
disconnect
-
35
40
VLCD = 5V, RSEL[1:0] = [0,1],
frame rate = 64 Hz, 1/4 duty, 1/3
bias, all SEG pins enable, display
disconnect
-
18
20
VLCD = 5V, RSEL[1:0] = [1,0],
frame rate = 64 Hz, 1/4 duty, 1/3
bias, all SEG pins enable, display
disconnect
-
10
11
Feb 20, 2016
Page 177 of 179
Rev. 1.01
N76E616 Datasheet
32. PACKAGE DIMENSIONS
Figure 32-1. LQFP-48 (7x7x1.4mm footprint 2.0mm) Package Dimension
Feb 20, 2016
Page 178 of 179
Rev. 1.01
N76E616 Datasheet
33. DOCUMENT REVISION HISTORY
Revision
Date
Description
1.00
2015/9/1
Preliminary version.
1.01
2016/2/20
1.
2.
hapter. Modify pin assignment part no. name add 7 E
8 into
the picture
hapter . Modify
M access description.
Before: ll bytes in the lower 8 Bytes space can be accessed by either
direct or indirect addressing. ndirect addressing can only access the
upper 8 Bytes.
fter: Either direct or indirect addressing can access the lower 8 Bytes
space. But the upper 8 Bytes can only be accessed by indirect
addressing.
Important Notice
Nuvoton Products are neither intended nor warranted for usage in systems or equipment, any
malfunction or failure of which may cause loss of human life, bodily injury or severe property
damage. Such applications are deemed, “ nsecure Usage”.
Insecure Usage includes, but is not limited to: equipment for surgical implementation, atomic
energy control instruments, airplane or spaceship instruments, the control or operation of
dynamic, brake or safety systems designed for vehicular use, traffic signal instruments, all
types of safety devices, and other applications intended to support or sustain life.
All nsecure Usage shall be made at customer’s risk, and in the event that third parties lay
claims to uvoton as a result of customer’s nsecure Usage, customer shall indemnify the
damages and liabilities thus incurred by Nuvoton.
Feb 20, 2016
Page 179 of 179
Rev. 1.01