串口设置为:
void UART_Init()
{
SCON0 = 0xD0; //方式3:9位UART,可变波特率。SM20 = 0,停止位的逻辑电平被忽略
SCON1 = 0x50;
PCON = 0X00; //SSTAT0 = 0:读/写SM20-SM00时访问UART0方式设置位SM20-SM00。
}
现象是:
1.当电脑串口软件设置为9bit数据发送时,可以正常通信。
2.当电脑串口软件设置8bit数据发送时,不能正常通信。
电脑串口软件再设置为9bit数据时,也不能通信了,需要断电才能恢复。
串口中断程序:
void UART0_ISR(void) interrupt UART0_VECTOR//UART0
{
if(RI0)//接收中断
{
RI0=0;
uart0_info.uart0_rx_timer = UART0_RX_TIMEOUT;//启动UART0接收时间判断
uart0_info.uart0_rx_data[uart0_info.uart0_rx_count++] = SBUF0;
uart0_info.uart0_rx_count %= UART0_BUFF_SIZE;
}
if(TI0)//发送中断
{
TI0=0;
uart0_tx_busy = 0;
}
}
|