串口调试助手发送一个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;
}
可为什么不对呢。 展开
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;
}
可为什么不对呢。 展开
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这个变量
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sbuf是一个八位寄存器 一次不能存储16位数据 一个十六位数据要分两次发送
更多追问追答
追问
不是16位的啊,是16进制啊,共8个字节(00 03 00 61 00 01 d4 05)
不是16位的啊,是16进制啊,共8个字节(00 03 00 61 00 01 d4 05)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询