From: Karl B. <ka...@tu...> - 2001-02-16 01:09:30
|
Muhammad, Check where the stack is positioned in the map, or look at the startup ASM code where it sets up your stack. If it overlaps at 30H, thats where the bit flags are. I think the SDCC default place for the stack is after the last used bank, which puts it in the bit flag area. Also, figure out which bank your ISR is using, you might want to make it explicit(using 1; for example).. If your stack is clobbering the bit flags, then use command line options to move the stack somewhere else, or don't use bit-flags. cheers, karl. At 12:51 AM 2/16/01 -0000, you wrote: >Hi.. > >My idea is to set certain flags upon command on serial comm port, the code >should look like these, > >/***********************************/ >bit f_char1, f_char2; > >void serial_ISR( void ) interrupt 4 { > if ( RI ) { > unsigned char ch = SBUF; > RI = 0; > switch ( ch ) { > case CHAR1 : > f_char1 = 1; > break; > case CHAR2 : > f_char2 = 1; > break; > } > } > TI = 0; >} > >void main( void ) { > while ( 1 ) { > if ( f_char1 ) func1(); > if ( f_char2 ) func2(); > } >} >/***********************************/ > > >It seems that in my current project such idea is not working. func1() or >func2() was never accessed. > >I'm using SDCC v211 Borland. Is there any explaination ? > >regards, >fahmy >_________________________________________________________________________ >Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com. > > >_______________________________________________ >Sdcc-user mailing list >Sdc...@li... >http://lists.sourceforge.net/lists/listinfo/sdcc-user > |