I just studies software debug using ISD51 through AT89C51SND1C's UART port.but now i have some questions. let me describe it. I write a simple main program in keil uvsion2 ICE(below), then add some program and set uvision according to the help file:isd51.htm. I have a good luck, after do that, the uvison can connect to my user board , the program can run step by step using F11. but some quesitons puzzle me: when debugging, 1) i set a software breakpoint , but it can not work. 2) i can not stop running when the program is running. 3) i can not step over a function(exmple :Delay_10ms();) use shortkey: F10. below is my main.c #include "lib_mcu\compiler.h" /* compiler definitions */ #include "lib_mcu\regsnd1.h" /* component declaration */ #include "lib_mcu\extsnd1.h" /* component extended declaration */ #include "ISD51.H" sfr p4 = 0xc0; extern void in_system_prog (void); static void main(void); static void Delay_10ms(void) { unsigned char i; unsigned int j; for(j = 0; j < 40; j++){ j++; for (i = 0; i < 200; i++); } } static void seiral__initial(void) { (CKCON |= MSK_X2); //set x2 mode SCON = 0x50; PCON |= (1 << 7); BRL = 230; /* set 38400 baud @ 16MHz */ BDRCON = 0x1E; EA = 1; //ES = 1; } void main(void) { seiral__initial(); #if 0 // init ISD51 and start user program until the uVision2 Debugger connects ISDinit (); // initialize uVision2 Debugger and continue program run #endif #if 1 // init ISD51 and wait until the uVision2 Debugger connects ISDwait (); // wait for connection to uVision2 Debugger #endif p4 = 0xff; while(1){ #if 1 // init ISD51 only when the uVision2 Debugger tries to connect ISDcheck(); // initialize uVision2 Debugger and continue program run #endif // ES = 1; Delay_10ms(); p4 = ~p4; #if 0 // you may use ISDbreak when ISD51 is started with ISDcheck or ISDwait ISDbreak (); // hard coded stop (breakpoint) #endif } } Somebody can help me ? Regards, hexiuchi (何修池). Namtai Electr. Co. PRC E-Mail: xche@namtai.com.cn Tel:(86755)27495818-3433 Fax:(86755)27497143