串口调试助手发送一个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;
}
可为什么不对呢。 展开
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
程序逻辑混乱,出现不确定现象,测试结果时好时坏。理顺一下程序思路,保证采集按键、发送、接收数据、显示为一个完整的周期跟后面其他的操作没有关系.你可以联系迪凯特问问,他家挺好的,下边有链接。...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
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)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询