串口调试助手发送一个16进制的数组 单片机怎么接受

我用串口调试助手发送一个16进制的数组,共8位(000300610001d405)。这是单片机接受串口信息的程序,voidse()interrupt4{REN=0;RI=... 我用串口调试助手发送一个16进制的数组,共8位(00 03 00 61 00 01 d4 05)。这是单片机接受串口信息的程序,
void se() interrupt 4
{

REN = 0;

RI = 0;
uart[num_uart] = SBUF;
num_uart ++;
if( num_uart == 8)
{
flag = 1;
num_uart = 0;
}

REN = 1;

}

可为什么不对呢。
展开
 我来答
cjj796
2013-07-21 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3449万
展开全部

给你一个单片机基础通讯程序和上位机串口调试程序,你试一下,在这个基础之上修改。


追问
谢谢,大哥
匿名用户
2013-07-21
展开全部
void se() interrupt 4

if (RI)

RI = 0;
uart[num_uart] = SBUF;
if( ++num_uart == 8)
{
    flag = 1;
    num_uart = 0;
}
}
}

这样你试下,还有不对是哪里不对要说明白!

追问
谢谢大哥,我有点明白了,我还有两个问题:
我写的程序是接收到8个字节后led灯亮一下,但如果我烧完程序,不断电接着发送字节,会发送7个字节led就亮一下。可如果烧完程序断电再重新上电后,就可以接到8个字节后led亮一下。

单片机接到8个字节(00 03 00 61 00 01 d4 05)后,存放在uchar uart[8]。
追答
就是要注意控制num_uart这个变量
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
似锐进6Z
2013-07-21
知道答主
回答量:21
采纳率:0%
帮助的人:14.5万
展开全部
sbuf是一个八位寄存器 一次不能存储16位数据 一个十六位数据要分两次发送
更多追问追答
追问
不是16位的啊,是16进制啊,共8个字节(00 03 00 61 00 01 d4 05)
不是16位的啊,是16进制啊,共8个字节(00 03 00 61 00 01 d4 05)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式