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