This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Bad serial interrupt...

Hello,

I have two programs loaded in memory at different locations (not in multitasking, just loaded). Both are using the serial port and the first one uses its own ISR (interrupt service routine) for comunicating with the serial port.
I did make the first program to launch the second program by jumping to its startup address. The second program starts running but there is a problem !
It cannot use the serial port anymore ! :(

I use the following code in the first program to initialize the serial port:

void init_ser(void){
// Use timer T1
TH1=253; // serial baud 9600
TMOD=TMOD&0x0F; // clean the T1 part
TMOD=0x20|TMOD; // set timer 1 in mode 2 -> 8bit autoreload with TH1 set
S0CON=0x50;
PCON=PCON | 0x80;
pfun = ser_int; // take the address of my ISR
addrintser = (unsigned)pfun; // save it
XBYTE[0x8023] = 0x02; // Put a LJMP to my ISR
XBYTE[0x8024] = (uchar)((addrintser&0xff00)>>8);
XBYTE[0x8025] = (uchar)(addrintser&0x00ff);
PS0 = 1;
TI=0;
RI=0;
ES0=1; // Enable serial interrupt
}

What can i do to restore the old serial interrupt service routine ?!
I tried alot of things to do (like saving and restoring registers) but it didnt work at all !! :(

Or what else can be wrong ?! Anyone has any ideea why my serial port doesnt want to work in my second program !?!

Please help ! :O

P.S. I have no operating system (such as RTX51), i only use an old
Franklin monitor to load these programs.