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;
The S0BUF is loaded in the ISR and I expect that TI_0 is set so that the next character in my array is loaded to S0BUF and so on. your expectation is correct, TI_0 should be set on completion of the transmission. Based on the above, your problem is not S0BUF/TI, but something else. Possibilities: 1)the interrupt get disabled (check IE) 2)the progrem gets hung elsewhere 3)the simulator - It is a simulator not the real thing - does not simulate TI_0 correctly due to setup or malfunction. 4) I tend to recall that in the MX you can redirect TI interrupts to an unique vector, leaving the standard vector for RI only. try making an ISR for that vector and see if that is wwhere you go. Erik