急求单片机高手指点........如何通过串口接收一组字符串,然后判断这组字符串,来调用相应的函数啊???

voidUART()interrupt4{recive[i]=SBUF;i++;delay(10);//P0=a;RI=0;flag=1;//function();swi... void UART() interrupt 4
{

recive[i]=SBUF;
i++;
delay(10);
// P0=a;
RI=0;
flag=1;
// function();
switch(recive[i])
{
case 'a':
P2=0x01;
P1=0x02;
P0=0x02;
break;
case 'b':
P2=0x01;
P1=0x02;
P0=0x00;
break;
}

}
/*
void function()
{
if(a=="00000001")
{ //一号正转
P2=0x01;
P1=0x02;
P0=0x02;
}
if(a=="00000000")
{
P2=0x01;
P1=0x02;
P0=0x00;
}
if(a==3)
P0=0x03;
if(a==4)
{
P2=0x02;
P1=0x03;
P0=0x06;
}*/
展开
 我来答
迷雾心魔
2011-09-30 · TA获得超过174个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:111万
展开全部
我的话我会建一个队列,如果有数据竟来就把数据先放进队列,当需要判断的时候(可能根据已接收的字节数或其他原因) 在整体判断既可!
更多追问追答
追问
额,,,不会、、、。。
追答
你先定义一个数据包 包的类型大概如此:
#define MAX_BUF_SIZE 100
struct Packet
{
int length;
char buf[MAX_BUF_SIZE];
}
当你接收到 数据长度超过 sizeof(int) 时再判断 接受数据的长度是否等于 length 如果是的话证明整个包你都接受成功了,这时候你就可以判断buf里面的内容了。不过前提就是你发送的时候要封包,把你要发送的数据和length都填充好,然后再通过串口发过来!
匿名用户
2011-09-30
展开全部
同学,记得 你 发过一次的,好像
追问
是的。,,单个字符已经解决,就是字符串一直没弄好。
追答
建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式