发表于:2004-10-27 10:28:00
楼主
小妹近来做pc与单片机通信,用的是vb的mscomm控件,和ms-51单片机通讯。波特率2400。
我用vb向单片机发送一个字节数组,SENDDATA[9],发现单片机接受数据不正确,
经分析,vb发送了9个字节,而单片机只接受到4个。若SENDDATA[9]={50,51,0,52,0,53,0,54,0},单片机接受到的数据是
receivedata[9]={50,52,53,54,0,0,0,0,0},若SENDDATA[9]={50,51,1,52,1,53,1,54,1},单片机接受到的数据是
receivedata[9]={50,54,52,40,0,0,0,0,0},可以看出单片机只接受了4个字节(单片机上电初始化
receivedata=[0,0,0,0,0,0,0,0,0,],请各位大侠帮助!
mscomm控件设置如下:
inputmode=1;采用二进制方式
inputlen=0;
rthreshold=1;
sthreshold=0;
settings:2400,n,8,1
发送程序:
Function Send_Sub()
SendData(0) = &H50
SendData(1) = &H51
SendData(2) = 0
SendData(3) = &H52
SendData(4) = 0
SendData(5) = &H53
SendData(6) = 0
SendData(7) = &H54
SendData(8) = 0
If MSComm1.PortOpen Then
MSComm1.Output = SendData
End If
End Function
单片机接受程序:
void server(void) interrupt 4 using 2 {
static Byte data i=0;
static Byte data RECEIVE[9]={0,0,0,0,0,0,0,0,0};
if(TI){
TI=0;
}
RI=0;
RECEIVE[i++]=SBUF;
if(RECEIVE[0]!=0x50)
i=0; ;如果接受数据开始不是50h,丢掉重收。
if(i==0x09)
i=0;
}