51单片机串口接收十六进制数组数据有误

我用VB做为上位机通过串口发送一组数据给51单片机,让单片机去控制步进电机运动.但实验了好久都还不能正常工作,请能人帮忙一下.VB的发送程序如下:Dimsende(0To... 我用VB做为上位机通过串口发送一组数据给51单片机,让单片机去控制步进电机运动.但实验了好久都还不能正常工作,请能人帮忙一下.

VB的发送程序如下:
Dim sende(0 To 3) As Byte
sende(0) = "&H" & Text1.Text

sende(1) = "&H" & Text3.Text

MSComm1.Output = sende

text1.text是正反转标志位
text2.text是电机要转的圈数

单片机的接收程序如下:
void serial () interrupt 4 using 3

{ uchar a;

a=0;
RI=0;

str[a++] =SBUF;

iab=str[0];
// iab=1;
n=str[1];

flg=1;

}
iab是正反转标志位,
n为步进电机要转的圈数,都是全局变量

步进电机正反转程序没有问题,因为如果我在下位机中把电机要转的圈数定义为常数,比如:n=5时,步进电机可以按要求正反转,但如果用到n=str[1]时(通过上位机来控制电机的转数),电机就不能动了,谁知道我的程序错在哪里了?
展开
 我来答
sanjinluo
2009-04-21 · TA获得超过4714个赞
知道大有可为答主
回答量:3402
采纳率:0%
帮助的人:2375万
展开全部
单片机程序好像有问题

void serial () interrupt 4 using 3

{

RI=0;

iab =SBUF;
while(!RI){
RI=0;
n =SBUF;

flg=1;

}

///////////////////////////好纯////

void serial () interrupt 4 using 3

{ uchar a;

a=0; //每次都会初始化为零
RI=0;

str[a++] =SBUF; //所以每次都是str[0]=SBUF;str[1]永竖袜弊远都没有得到更新

iab=str[0];
/余族/ iab=1;
n=str[1];

flg=1;

}
zdingyun
2009-04-21 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48170
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部
Dim sende(1) As Byte
sende(0) = Val("&H" & Text1.Text)
sende(1) = Val("&H"掘竖大 & Text3.Text)
MSComm1.Output = sende
这样才发判竖送2字节指纤罩令,你代码是发了4字节指令.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式