|
串口設(shè)置為:
void UART_Init()
{
SCON0 = 0xD0; //方式3:9位UART,可變波特率。SM20 = 0,停止位的邏輯電平被忽略
SCON1 = 0x50;
PCON = 0X00; //SSTAT0 = 0:讀/寫SM20-SM00時訪問UART0方式設(shè)置位SM20-SM00。
}
現(xiàn)象是:
1.當(dāng)電腦串口軟件設(shè)置為9bit數(shù)據(jù)發(fā)送時,可以正常通信。
2.當(dāng)電腦串口軟件設(shè)置8bit數(shù)據(jù)發(fā)送時,不能正常通信。
電腦串口軟件再設(shè)置為9bit數(shù)據(jù)時,也不能通信了,需要斷電才能恢復(fù)。
串口中斷程序:
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)//發(fā)送中斷
{
TI0=0;
uart0_tx_busy = 0;
}
}
|
|