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

while loop and ISR routine

Hello all,
I am using 8051 controller with UART working.
I am generating interrupt for UART RX.

in main()
I am sending one string to hyperterminal through UART TX and I can see it on Hyperterminal
i.e my UART TX is working.
I am sending one string to UART RX through hyperterminal and I can see it in my UART RX interrupt
i.e my UART RX with interrupt is also working.
I could establish the communication between hyperterminal on PC and UART_TX_RX on controller.

Now,My transmit code:
1. I am transmitting one string to hyperterminal from UART TX and I can see it on terminal say for example "ABC"
2. I am waiting for response from hypterminal say "123", using following loop
3. and when I get the required string I will come out of the loop

extern volatile unsigned char rx_buf[20;

#define DETECTED_STR "123"

Transmit_string("ABC");
while(strncmp((const char *)DETECTED_STR,(const char *)rx_buf,4));
Delay();

Now,My receive code:

volatile unsigned char rx_buf[20];
void sci0rx_isr(void)
{
        rx_buf[index] = SCI0.RDR;
        SCI0.SSR.BIT.RDRF = 0;
}

if I omit while loop I will get interrupt and string correctly.
but I dont get the interrupt, if I add while loop. Wait there and do not proceed further until I get the required string.

ISR is at highest priority even then it can not interrupt while loop.
Please provide the solution for that

0