紧急求助各位大侠关于vb的mscomm控件与单片机通讯: 点击:603 | 回复:0



hwhhyh25

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2003年12月02日
发表于: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; }


热门招聘
相关主题

官方公众号

智造工程师