No.11636 作者:clair 邮件:clair@vip.sina.com ID:1858 登陆:1次 文章数:5篇 最后登陆IP: 最后登陆:2002/9/28 13:36:00 注册:2002/9/28 13:36:00 财富:20 发帖时间:2002/9/28 14:34:00 发贴者IP:61.160.199.84 标题:clair:C51编程:高手请进:关于PC与单片机通讯的一些问题 摘要:No.11636C51编程:高手请进:关于PC与单片机通讯的一些问题 近日在作一解码板的开发,主要是模仿国外的板子重做自己的,芯片采用89C51,通讯协议 已经入手。调试时由PC端程序(用VB自编)发送指令,C51接收指令判断后处理。 指令格式:每条指令为七个字节,起始字节为0xff; 指令流程:PC COM1口 --> RS232/RS485转换器 --> MAX1483+AT89C51 目前问题:VB发送指令,那块原装的板子可以正常接收并处理;而用我的板子和程序接收时 必须在VB发送端作附加处理:每两个字节中加入延时。延时的时间和波特率成反比。在波特 率2400时,须加入延时空循环250000次;波特率9600时,空循环100000次。我的机器配置是 赛扬1.7GHz,如果换台主频慢的如赛扬300的话,可能只要空循环50000次就够了。 以下是VB程序中用来测试的单击事件:在测试原装板时 i 和 j 等于 0 即可 If Button = vbLeftButton Then Dim i, j As Double i = 250000 'i和j用来控制空循环的次数 j = 250000 '也是延时程序Delay的入口参数 '由于要发送大于&H80的字节,所以定义了这么多单字节数组 Dim da001(1 To 1) As Byte Dim da002(1 To 1) As Byte Dim da003(1 To 1) As Byte Dim da004(1 To 1) As Byte Dim da005(1 To 1) As Byte Dim da006(1 To 1) As Byte Dim da007(1 To 1) As Byte da001(1) = &HFF da002(1) = &H10 da003(1) = &H0 da004(1) = &H80 da005(1) = &HA3 da006(1) = &H0 da007(1) = &H0 MSComm1.OutBufferCount = 0 &nbs ......
>>返回讨论的主题
|