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

我用串口调试助手发送一个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;

}

可为什么不对呢。

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


追问

谢谢,大哥

温馨提示:内容为网友见解,仅供参考
第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这个变量

本回答被提问者采纳
第2个回答  2013-07-21
sbuf是一个八位寄存器 一次不能存储16位数据 一个十六位数据要分两次发送追问

不是16位的啊,是16进制啊,共8个字节(00 03 00 61 00 01 d4 05)

不是16位的啊,是16进制啊,共8个字节(00 03 00 61 00 01 d4 05)

追答

哦 我看错了 不对是哪里不对呢

追问

我写的程序是接收到8个字节后led灯亮一下,但如果我烧完程序,不断电接着发送字节,会发送7个字节led就亮一下。可如果烧完程序断电再重新上电后,就可以接到8个字节后led亮一下。

单片机接到8个字节(00 03 00 61 00 01 d4 05)后,存放在uchar uart[8]。

追答

你把程序发给我看一下吧

相似回答