VB与单片机串口通信

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:51:04
用VB的MSCOMM控件给51单片机发4个字节数据,
单片机收完一个字节之后(因为SBUF只能装一个字节),通过片内程序移走SBUF中数据后,
单片机是不是会给PC发个迅息通知它发下一个字节直到4字节发完?

要不一次发完4个那前三个数据不是会被覆盖吗?

或者在单片机收到1字节时就立刻通知PC发下一个,片内程序这时还没来得及移走数据怎么办?
请教啦!
如果MCU在接收第一个字节后处理中断程序而暂停接收,MSCOMM却是连续发4个数据而不停顿的,等MCU处理完中断再接收数据必定会漏掉一些数吧??

我不是征求解决办法,我已经用VB实现一次发4个字节,单片机也全部能收到,我是问它是怎么做到的!!!!!!!!!!(具体问题见上面的补充)

不会的,我记得我刚回答了和你这个一样的问题啊。

中断产生后你有足够的时间把它移走的。一般说来,你不退出中断,不会收下一个数的。但是如果你在中断里呆的时间太长,会丢失数据的。

具体见
http://zhidao.baidu.com/question/71761637.html

一般这种情况要算好时间,也就是处理SBUF并到等待下一个字节发送的这段时间PC需要等待,MCU是不会发通知给PC的,所有的通讯都是单方无条件发送,所以要控制发送时间保证另一方能收到数据,或者说MCU收到数据后再主动发一个字节数据给PC告诉PC说收到了。这是指3线通讯的情况,如果再上RTS、CTS流控制就不同了,通过信号状态判断是否为忙,当然这也要双方软件配合。

单片机是有数据来就接收。数据处理在软件中断中实现了。不会漏的,但是会来不及处理。

接收到后一走再接收

因为单片机和VB之间的比特率是设置好的
而且要根据你的设置是否有校验位,停止位情况的不同来看
都没设置的话就直接8个数据发送,此时如果机器工作异常则就可能会出现数据错误的现象

一般来说,你发每两个数据中间的间隔时间远远大于单片机执行的周期,一个是毫秒级的,一个是微秒级的,在这个间隔里有足够的时间把数据移走,所以也就不用通知了。
但若是不及时移走,是会覆盖的。