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]时(通过上位机来控制电机的转数),电机就不能动了,谁知道我的程序错在哪里了? 展开
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]时(通过上位机来控制电机的转数),电机就不能动了,谁知道我的程序错在哪里了? 展开
展开全部
单片机程序好像有问题
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;
}
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询