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

Serial interrupts on Mx2 chip

Hi
This question is about serial interrupts on the 8051 based extended memory chip (P87C51Mx2).

The transmit interrupt TI_0 is supposed to be set when a character is written to S0BUF. This is not happening.
My initialization settings are as follows (I'm initializing both the UART channels)

T2CON = 0x30;
RCAP2H = 0xFF; // BAUD for UART0 - 9600
RCAP2L = 0xB8;

S0CON = 0x50;
S1CON = 0x50;

TXD   = 1;
RXD   = 1;
TXD1  = 1;
RXD1  = 1;
ES0   = 1;
ES1   = 1;

S0STAT = 0x00;
S1STAT = 0x00;

TR2 = 1;

BRGCON = 0x00; //UART1 baud - 38400
BRGR1 = 0x01;
BRGR0 = 0x10;
BRGCON = 0x01; 


I'm setting the bits TI_0 or TI_1 when I've data to transmit and resetting it in the ISR. But what I observe is that the ISR is entered only once and never again!

The processor runs at 6 clock mode and 11.0592 MHz oscillator frequency.

Any help would be appreciated.

warm regards,
Sundeep M S

Parents
  • Sundeep,

    I am not familiar with this chip, but is it not the case that TI and RI are associated with SBUF. Whereas, I would expect S0BUF to be associated with TI_0 and RI_0.

    If your are setting TI to get your ISR going then it will be invoked once. However, on completion of the transmission from S0BUF, it will be TI_0 that gets set not TI.

    Could it be, therefore, that you are also not using the correct interrupt number?

Reply
  • Sundeep,

    I am not familiar with this chip, but is it not the case that TI and RI are associated with SBUF. Whereas, I would expect S0BUF to be associated with TI_0 and RI_0.

    If your are setting TI to get your ISR going then it will be invoked once. However, on completion of the transmission from S0BUF, it will be TI_0 that gets set not TI.

    Could it be, therefore, that you are also not using the correct interrupt number?

Children
No data