在调试单片机与PC机通信的时候,发现我在51中以奇校验方式通过串口发送数据的时候(借助PSW,ACC软件实现)在串口助手上无论以奇校验还是偶校验方式都能收到完整数据,这让我很疑惑,偶校验应该啥也接受不到,直接摒弃数据才对。
所以我做了一下实验:
下了个VSPD虚拟串口,开两个串口助手,一个以奇校验发数据,一个以偶校验收,结果,还是全都能收!
我感觉很奇怪,有如下猜测:
1.我的单片机模式设置有问题——对此,我附上代码,我相信应该没啥错,因为实在是没什么好错的,就几个寄存器。
2.单片机与PC机的通信中,PC根本不理会发送方式——但如果真是这样,那么,串口助手问什么会开发出奇偶校验的功能。
3.虚拟串口的问题,是数据传递出现问题——可是,我是先单片机直接与串口助手相连都出问题才用的这个,应该不会,我还用keil和串口助手做实验,从串口助手发数据给keil,结果,发现rb8一直为零,似乎不受发送方的tb8的影响
。。。。。。(学一下VC编串口的源代码似乎很费时间,不允许,有没有那个大虾做过)
没辙了,求助。
可能串口助手就是不管奇偶的,其设置可能用于别的地方,如果因奇偶错串口助手不显示的话,何以起到"助手"的作用.
那串口助手的奇偶校验用于什么地方呢,如果以奇校验方式发送数据的话,那帧的格式又应该是怎样的?
串口助手的奇偶较验对PC发送数据有效(对TB8奇偶处理),对接收无效(即接收时对不判断RB8)。
你要验证你单片机奇偶校验程序是否正确的话可以用示波器采样一组数据,看上面的高低电平来判断你的第九位是否正确
嗯,试了下,单片机的设定确实没有错,这样的话,结论应该如4楼所说
奇偶校验只不过是数据位变成了9位,如果接收方(计算机)不理睬第9位的话,那选择奇偶就都一样了。另外能把你如何实现奇校验的代码贴出来吗,大家一起共享啊,哈哈
单片机和PC都是发送必须要第9位 亲自实验过
接收的话如果奇偶校验设的不一样 如果数据传输速度比较快 后面肯定会出错的 所以还是要设成一样的