标题:
请教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