标题: 请教C8051F020单片机串口通信9bit数据通信问题 [打印本页]

作者: jxcrgt35    时间: 2023-8-15 07:08
标题: 请教C8051F020单片机串口通信9bit数据通信问题
串口设置为:

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;
        }
}

作者: Hephaestus    时间: 2023-8-15 16:46
标准串口,不算奇偶校验位,只说数据位,7位或8位数据位是最常见的,9位的闻所未闻。
作者: jxcrgt35    时间: 2023-8-16 03:42
结题:是在串口分析程序,引用了不恰当的程序造成死机,更换后恢复。
作者: yzwzfyz    时间: 2023-8-16 18:06
单片机程序对于通讯出错的处理程序,不当,可以出现长时间恢复问题。
正确的做法是:N ms内收不到一个字节就复初。
作者: jxcrgt35    时间: 2023-8-17 23:01
yzwzfyz 发表于 2023-8-16 18:06
单片机程序对于通讯出错的处理程序,不当,可以出现长时间恢复问题。
正确的做法是:N ms内收不到一个字节 ...

谢谢,目前是这样超时处理的。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1