我用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 电平解释为停止位。
开始要将收发两端的协议设置一致。