Reset 功能使用方法

Reset 功能使用方法
Reset 功能使用方法
1
適用產品:
1.1 SM59R16A5/SM59R09A5/SM59R05A5/SM59R16A3/SM59R09A3/SM59R05A3
1.2 SM59R04A2/ SM59R04A1/ SM59R03A1/ SM59R02A1
2
Reset 使用概述:
2.1 本系列 MCU 除了標準 Reset Pin 重置功能,另外提供軟件重置功能、內建重置電路 (可選擇重置
時間長短)及低電壓重置功能提供客戶使用。
2.2 當低電壓重置功能產生時,其中斷向量為 0x63H。
3
Reset 功能相關的特殊暫存器 [Reset Special Function Register] (SFR)
Mnemonic
Description
Direct
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RESET
Reset
TAKEY
Time Access Key
register
F7h
TAKEY [7:0]
00H
SWRES
Software Reset
register
E7h
SWRES [7:0]
00H
IEN0
Interrupt Enable
0 register
A8h
EA
-
ET2
ES0
ET1
EX1
ET0
EX0
00h
IEN1
Interrupt Enable
1 register
B8h
EXEN2
-
IEIIC
IELVI
IEKBI
IEADC
IESPI
IEPWM
00h
IRCON
Interrupt request
register
C0H
EXF2
TF2
IICIF
LVIIF
KBIIF
ADCIF
SPIIF
PWMIF
00H
E6H
LVI_EN
-
LVRXE
-
-
-
-
LVC
4
軟件重置功能選擇方式:
Address: F7H
Mnemonic: TAKEY
7
6
5
4
3
TAKEY [7:0]
2
1
0
Reset
00H
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0179
1
Ver A 2010/06
20H
Reset 功能使用方法
Software reset register (SWRES) is read-only by default; software must write three
specific values 55h, AAh and 5Ah sequentially to the TAKEY register to enable the SWRES
register write attribute. That is:
MOV TAKEY, #055h
MOV TAKEY, #0AAh
MOV TAKEY, #05Ah
Mnemonic: SWRES
7
6
Address: E7H
5
4
3
SWRES [7:0]
2
1
0
Reset
00H
SWRES [7:0]: Software reset register bit. These 8-bit is self-reset at the end of the reset
procedure.
SWRES [7:0] = FFh, software reset.
SWRES [7:0] = 00h ~ FEh, MCU no action.
Software reset example:
MOV TAKEY, #055h
MOV TAKEY, #0AAh
MOV TAKEY, #05Ah
MOV SWRES, #0FFh
5
內建重置電路功能,重置時間可由燒錄時設定:
(Provides Internal reset circuit inside,the Internal reset time can set by writer or ISP)
Internal Reset time
25ms (default)
200ms
100ms
50ms
16ms
8ms
4ms
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0179
2
Ver A 2010/06
Reset 功能使用方法
6
低電壓重置功能:
The interrupt vector 63h.
Mnemonic: LVC
7
LVI_EN
Address: E6h
6
-
5
LVRXE
4
-
3
-
2
-
1
-
0
Reset
20H
LVI_EN: Low voltage interrupt function enable bit.
LVI_EN = 0 : disable low voltage detect function.
LVI_EN = 1 : enable low voltage detect function. LVIIF will be set when low voltage detect.
LVRXE: External low voltage reset function enable bit.
LVRXE = 0 : disable external low voltage reset function.
LVRXE = 1 : enable external low voltage reset function.
以下適用元件:SM59R16A5/SM59R09A5/SM59R05A5
Low Voltage Detect Level
LVI
LVRX
C = 4.5V ~ 5.5V
3.5V
3.1V
L =2.7V ~ 3.6V
2.3V
2.1V
以下適用元件:SM59R04A2
Low Voltage Detect Level
LVI
C = 4.5V ~ 5.5V
3.5V
L =2.7V ~ 3.6V
2.3V
LVRX
3.1V
2.1V
Mnemonic: IEN1
7
EXEN2
6
-
Address: B8h
5
IEIIC
4
IELVI
3
IEKBI
2
IEADC
1
IESPI
0
IEPWM
Reset
00h
IELVI: LVI interrupt enable.
IELVI = 0 – Disable LVI interrupt.
IELVI = 1 – Enable LVI interrupt.
Mnemonic: IRCON
7
EXF2
6
TF2
Address: C0h
5
IICIF
4
LVIIF
3
KBIIF
2
ADCIF
1
SPIIF
0
PWMIF
Reset
00H
LVIIF: LVI interrupt flag.
LVIIF will be set when LVI_EN=1 & occur low voltage detect. Must be cleared by software.
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0179
3
Ver A 2010/06
Reset 功能使用方法
7
中斷功能:
IE0 – External interrupt 0
TF0 – Timer 0 interrupt
Interrupt Vector
Address
0003h
000Bh
Interrupt Number
*(use Keil C Tool)
0
1
IE1 – External interrupt 1
0013h
2
TF1 – Timer 1 interrupt
RI0/TI0 – Serial channel 0 interrupt
TF2/EXF2 – Timer 2 interrupt
001Bh
0023h
002Bh
3
4
5
PWMIF – PWM interrupt
0043h
8
SPIIF – SPI interrupt
004Bh
9
ADCIF – A/D converter interrupt
KBIIF – keyboard Interface interrupt
LVIIF – Low Voltage Interrupt
IICIF – IIC interrupt
RI1/TI1 – Serial channel 1 interrupt
RTC/ALARM interrupt
Comparator interrupt
0053h
005Bh
0063h
006Bh
0083h
008Bh
0093h
10
11
12
13
16
17
18
Interrupt Request Flags
*See Keil C about C51 User’s Guide about Interrupt Function description
8
重置功能範例程序(1) 軟件重置:
Description
Main program
Software reset sample code
//===================================================================
//
//
S Y N C M O S
T E C H N O L O G Y
//
//===================================================================
#include "..\h\SM59R04A2.h"
void Function_Enable(void)
{
TAKEY = 0x55;
TAKEY = 0xAA;
TAKEY = 0x5A;
}
void Software_Reset(void)
{
Function_Enable();
SWRES = 0xFF;
}
// must write specific value sequentially
// before execute S/W Reset
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0179
4
Ver A 2010/06
Reset 功能使用方法
void main(void)
{
P0 = 0x55;
while(1)
{
P0 = 0xAA;
Software_Reset();
}
}
9
// user code
// user code
// execute S/W Reset
重置功能範例程序(2) 低電壓偵測置功能:
Description
LVI & LVR sample code
//===================================================================
//
//
S Y N C M O S
T E C H N O L O G Y
//
//===================================================================
#include "..\h\SM59R04A2.h"
bit LVI_test =0;
void LVI_interrupt(void) interrupt d_LVI_Vector // vector=63h
{
P0 =0x04;
// test code
LVI_test = 1;
LVIIF =0;
// clear LVI flag
}
Main program
void LVI_init(void)
{
EA
= 1;
IEN1 |= 0x10;
LVC |= 0xA0;
}
void main(void)
{
P0 =0x01;
LVI_init();
while(1)
{
if(LVI_test)
P0 =0x08;
else
P0 = 0x02;
}
}
// Enable all interrupt
// Enable LVI interrupt
// Enable LVR & LVD
// test code
// test code
// test code
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0179
5
Ver A 2010/06