当前位置: 代码迷 >> 单片机 >> vb上位机奇偶校验位,该怎么处理
  详细解决方案

vb上位机奇偶校验位,该怎么处理

热度:180   发布时间:2016-04-28 14:50:15.0
vb上位机奇偶校验位
本帖最后由 woshi_ziyu 于 2014-04-19 22:03:21 编辑
我用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;
}
}

这是单片机程序



------解决思路----------------------
碰巧了。当采用偶校验的时候,'a' (0x61) 的校验位恰好是 1,与停止位相同。而 Idle 状态下,通讯线又是高电平。

实际上,接收端将你发送的停止位当作奇偶位接收了,而将紧接着的 Idle 电平解释为停止位。

开始要将收发两端的协议设置一致。
  相关解决方案