AT89S52单片机串口通信问题
使用AT89S52单片机串口与计算机进行通信,但是单片机上电复位以后为什么会自动通过串口发送1个字节左右的乱码过去?即使只写了个main(){while(1);}也会自动...
使用AT89S52单片机串口与计算机进行通信,但是单片机上电复位以后为什么会自动通过串口发送1个字节左右的乱码过去?
即使只写了个
main()
{
while(1);
}也会自动发送一个字节的乱码,正常初始化也是,只要上电就发送,然后就完全正常了
这是什么情况? 展开
即使只写了个
main()
{
while(1);
}也会自动发送一个字节的乱码,正常初始化也是,只要上电就发送,然后就完全正常了
这是什么情况? 展开
展开全部
因串口通信格式所决定:
1.串口通信起始位为“0”,在上电之初,因没有电压,当然=0,所以PC机以为已经开始通信
2.通信开始后,不再判分割,只按预定波特率读取数值,所以通常读的也是一串0
3.串口通信结束的标志是1,当你上电完成,51芯片端口自动保持到高电平,PC自然以为串口通信结束,于是完成一个字节。结果,一般会“自动”收到一个无效字节(十六进制的“00H”)在ASCII码状态会显示为乱码。
4.解决建议,在正式通信开始前,PC清除已收到的无效字符;或PC机发出指令,单片机收到后,再进行正式通信。
1.串口通信起始位为“0”,在上电之初,因没有电压,当然=0,所以PC机以为已经开始通信
2.通信开始后,不再判分割,只按预定波特率读取数值,所以通常读的也是一串0
3.串口通信结束的标志是1,当你上电完成,51芯片端口自动保持到高电平,PC自然以为串口通信结束,于是完成一个字节。结果,一般会“自动”收到一个无效字节(十六进制的“00H”)在ASCII码状态会显示为乱码。
4.解决建议,在正式通信开始前,PC清除已收到的无效字符;或PC机发出指令,单片机收到后,再进行正式通信。
追问
貌似不是这个问题,从PC端接收到的结果看是FC F0 F8之类的,每次收到的都不大一样,唯独就没有0,而且有时候不仅是1个字节,平均1-3个字节
展开全部
很正常,计算机在你上电的时候误认为你触发了发送,它则进行了一个字节的接收。不就多了一个字节么,处理掉就行了嘛。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看硬件中断上有没有什么相关的,还有中断配置寄存器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的max232的电源是不是和单片机电源在一起?有可能是max232的问题照成的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
乱码?波特率不一致?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询