vb上位机奇偶校验位

郭宇飞 2014-04-09 10:50:46
我用51单片机作下位机,发送数据,没有校验位,我用vb写的上位机有校验位,为什么可以收到啊
#include<reg52.h>
sbit cs=P3^3;
void main()
{
REN=1;
SM0=0; //8位
SM1=1; //串行口工作方式1
SM2=0;
PCON=0;

TMOD=0x20; //设置定时器1为工作方式2
TH1=0xfd; //9600
TL1=0xfd;
TR1=1;
cs=1;
while(1)
{
SBUF='a';
while(TI==0);
TI=0;
}
}

这是单片机程序


...全文
298 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 laoguoziergou 的回复:
引用 4 楼 lym11023 的回复:
楼主误导他人,以楼主的程序,串口应是工作方式2,这时,SM2为0,单片机为11位为一帧的UART;SCON中的TB8默认值未知,故发送出数据的奇偶校验位也是未知,楼主请详细设置TB8试试。
工作方式2哪来的11位
起始位1位+8位数据+校验位1位+停止位1位=11位.
郭宇飞 2014-04-17
  • 打赏
  • 举报
回复
引用 4 楼 lym11023 的回复:
楼主误导他人,以楼主的程序,串口应是工作方式2,这时,SM2为0,单片机为11位为一帧的UART;SCON中的TB8默认值未知,故发送出数据的奇偶校验位也是未知,楼主请详细设置TB8试试。
工作方式2哪来的11位
  • 打赏
  • 举报
回复
楼主误导他人,以楼主的程序,串口应是工作方式2,这时,SM2为0,单片机为11位为一帧的UART;SCON中的TB8默认值未知,故发送出数据的奇偶校验位也是未知,楼主请详细设置TB8试试。
郭宇飞 2014-04-10
  • 打赏
  • 举报
回复
引用 1 楼 of123 的回复:
碰巧了。当采用偶校验的时候,'a' (0x61) 的校验位恰好是 1,与停止位相同。而 Idle 状态下,通讯线又是高电平。 实际上,接收端将你发送的停止位当作奇偶位接收了,而将紧接着的 Idle 电平解释为停止位。 开始要将收发两端的协议设置一致。
可是我不光是发'a',发送什么字符都能接收。
郭宇飞 2014-04-10
  • 打赏
  • 举报
回复
可是我不光是发'a',发送什么字符都能接收。
of123 2014-04-10
  • 打赏
  • 举报
回复
碰巧了。当采用偶校验的时候,'a' (0x61) 的校验位恰好是 1,与停止位相同。而 Idle 状态下,通讯线又是高电平。 实际上,接收端将你发送的停止位当作奇偶位接收了,而将紧接着的 Idle 电平解释为停止位。 开始要将收发两端的协议设置一致。

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧