串口调试助手发送一个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]。

追答

你把程序发给我看一下吧

如何用串口调试软件发送16进制数到单片机里
首先设置一下:串口号(你用哪个串口用来通讯就设置哪个串口),波特率、校验位、停止位这几个参数(这几个要和你单片机程序中串口设置的参数一样)。然后“打开串口”,然后勾选“HEX发送”。字符串输入框中输入二进制数,如aa。然后点“发送”就可以了。

串口调试助手发送一个16进制的数组 单片机怎么接受
给你一个单片机基础通讯程序和上位机串口调试程序,你试一下,在这个基础之上修改。

想用单片机接受从串口调试助手那里发送过来的数值数据,如何写代码(C...
\/\/ 和微机相接后键入的字符回显示在屏幕上 \/\/ 可用此程序测试 \/\/ include <reg51.h> define XTAL 11059200 \/\/ CUP 晶振频率 define baudrate 9600 \/\/ 通信波特率 void main(void){ unsigned char c;TMOD = 0x20; \/\/ 定时器1工作于8位自动重载模式, 用于产生波特率 TH1=(unsigned ...

单片机给电脑发送一个字节的十六进制数,这个数该存放在什么类型的变量里...
1。串口发送:单片机这里很简单:设好波特率后,只要一条MOV SBUF,A即可将累加器的内容(一个字节)送到串口。2。数据格式:在单片机这里,全是以字节方式运行的,更大的数要多字节拼装 3。在VB中,串口接收要选用“字节”方式,不要用“字符串”方式,这样可以很好的和单片机配合。4。在VB中,...

串口调试助手如何接受数据?
首先,单片机里面要有程序。然后,电脑串口的参数要与单片机一致。例:9600,N,8,1. (9600波特率,无校验,8个数据位,1个停止位)。最后,点:“打开串口”。当单片机有数据发送时,PC电脑就能显示数据。注意显示格式:如果单片机是按16进制发送,则PC也要设为16进制显示。

用串口调试助手向单片机发送数据,单片机怎么接受并储存到一个数组中
\/\/128字节数据 校验字节1 校验字节2 校验字节是防止数据传输错误,校验方式可自行选择。如果数据不是很重要,定义一个132字节接收队列(全局变量数组),如果数据很重要,定义两个132字节接收队列,一个做接收缓冲,接受正确才更新正式队列。还要定义一个接收指针,当接收到帧头标志,接收指针清零,以后每...

单片机发数据给串口助手,为啥怎么都是十六进制的,我修改了好几次也不...
单片机 没有 处理的 情况下,发送 接收 的 都是 十六进制数 串口助手 里可以 显示 十六进制数,也可以 显示 ASCII 字符 其实,如果 单片机 有程序处理,一样可以显示 字符、ASCII码 显示 十六进制数 没有什么关系,你能看懂就可以了 下一步 你 写 上位机 程序 时 要 处理、转换 的 ...

怎么用51单片机向串口调试助手发送字符串?有程序解释更好啊,求解~_百 ...
ASCII码在单片机中也是用16进制来表示的,只是解码后显示的是字符,你要是随便发一个字符,串口调试助手选择字符显示接收就可以显示一个字符出来(可能我们不认识这个字符)。发送一个字符串就是不停的发送直到发送完毕,51单片机有自己的串行发送端口P3.0和P3.1端口,但是它是一个字节一个字节发送的,...

怎么转这样的16进制
1、如果用调试助手一类的,直接设hex模式发送然后单片机直接显示就行 2、自己转换的话可以这样:先拆分:uchar Rcv ,D0,D1; \/\/Rcv= 串口数据 D0=Rcv低4位 D1=Rcv高4位 。。。D0 = Rcv&0x0f;D1 = Rcv>>4;再转换:if(D0\/D1 是数字(<0x0a)) {D0\/D1 = D0\/D1+'0'} else ...

计算机如何接受单片机发来的数据
这个要看你的具体要求,如果是单一的测试你可以直接用串口调试助手,前提条件你必须写好单片机串口通讯程序,我给你个参考程序啊,我前段时间帮一位网友写的串口调试助手控制单片机LED开关,下位机介绍到上位机数据后,然后再把接收到的数据返回给上位机。\/ \/ include "REG52.H"include "INTRINS.H"\/ ...

相似回答