vb与单片机串口通讯

写了一个简单的vb控制单片机的串口程序,但实际调试过程中总没有实现,有高人可以指点一下么,下面附有单片机和vb程序,作用只是通过vb输出数据,单片机收到数据后,根据所得使... 写了一个简单的vb控制单片机的串口程序,但实际调试过程中总没有实现,有高人可以指点一下么,下面附有单片机和vb程序,作用只是通过vb输出数据,单片机收到数据后,根据所得使P1 口置高或置低
#include<reg52.h>
#define uint unsigned int
uchar flag,a;
uchar temp[3];
uchar r_ready_glag;
uchar r_full; //缓冲区接收已满标志
uchar r_in; //缓冲区(3字节) 变量
void Lturn();
void init()
{
TMOD=0x20; //设定T1定时器工作方式2
TH1=0xfd; //T1定时器装初始值
TL1=0xfd; //T1定时器装初始值
TR1=1; //启动定时器1
REN=1; //允许窜口接收
SM0=0; //设置串口工作方式
SM1=1;
EA=1; //开总中断
ES=1; //开串口中断
}
void delay(uint time)
{
uint i;
uint j;

for(i=0;i<time;i++)
{
for (j=0;j<1;j++)
{
}
}
}
void main()
{
init();
while(1)
{
while( r_ready_glag==1 )
{
r_full=0;
r_ready_glag=0;
switch(temp[1])
{
case 0x01: { P1=0x00;} break;
case 0x02: { P1=0xff; } break;
default: break;
}
}
}
}

void sec() interrupt 4
{
if(RI&&~r_full)
{
temp[r_in]=SBUF; //读取寄存器的值
RI=0;
r_in++;
if(r_in==3)
{
r_full=1;
r_in=0;
r_ready_glag=1; //接收完毕,标志位置1
}
}
}

Vb程序

Dim sendata(2) As Byte

sendata(0) = &H8
If Option1.Value = True Then 'P1=ox00
sendata(1) = &H1 ‘P1=oxff
Else
sendata(2) = &H2
End If

If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True '打开串行口
MSComm1.Output = sendata
MSComm1.PortOpen = False '关闭串行口
End If
End Sub
谢谢各位的回答,现在单片机已经可以接收信号了,但是单片机每接收一个字节之前,似乎都有一个空白,因为我每次点击两次vb的Button按钮,单片机才会执行一条命令,我想这是vb传输十六进制数的问题吧,vb只要定义了variant变量就可以传输十六进制数了,程序如下,不知我说明白我的问题了没呵呵
Dim sendata(1) As Byte
dim hk as variant
sendata(0) = &H8
If Option1.Value = True Then
sendata(1) = &H1
Else
sendata(1) = &H2
hk=sendata()
mscomm1.output=hk
End If
展开
 我来答
做而论道
高能答主

2010-07-19 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8435万
展开全部
两个程序,都是新编的,也许都有毛病。

最好使用“串口调试助手”软件,分别调试你其中的一个程序;

分别都调试成功后,再用你的两个程序通信。
萍水e相逢
2010-07-19 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.5亿
展开全部
2端 通信 设置 一定 要 匹配
波特率、数据位 等等

统一 1 楼 的

备个 好的 串口工具 很重要

武汉鸿伟光电 有 串口调试助手、虚拟串口 等软件下载
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-07-19
展开全部
关于VB串口通信,有一套非常好的技术资料,800M多,有源码,控件,文章,视频,书籍等,你在淘宝搜索“太阳雨VB串口资料”就可以找到,希望可以帮助到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友012e8576c
2010-07-20
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
我看你VB的程序连波特率都没有设置,那肯定不对头了,建议你把MSComn控件好好了解一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式