51单片机的串口接收一帧数据有几位?

作者&投稿:轩郝 (若有异议请与网页底部的电邮联系)
我需要一个程序,51单片机串口接受到一帧数据并把这一帧数据赋值到一个数组中。~

你这串口接收子程序,只要接收到第一个字节的数据就一直在中断子程序中,然后等待接收其它数据了,
while(!RI); 这就是在等待接收其它数据了,接收完了以后又在中断子程序连续发送了。这么写程序是有很大弊病的,一旦进入中断程序,到最后发送结束,都一直在中断子程序中,那这个期间单片机是不能再做其它工作的,也就是不能再执行主程序了。
while(!RI);这就是查询方式等待接收数据,那又何必写成中断程序呢,不如直接写成查询程序了,同样下面的, while(!TI);这也明明是在查询方式发送,就不必要写在中断程序中了。
既然采用中断的方式,就是当接收到一个数据后才响应一次中断,保存这个数据,然后就立即从中断返回,这样,继续执行主程序,这样,接收数据和发送数据才不影响主程序。
同理,在中断程序发送一个字节的数据就立即从中断返回执行主程序,也不影响主程序的执行。
另外,更重要的一点就是while(!RI);,等待接收数据,如果不能收到数据就永远等待下去,假如通信线有故障,或者发送方有问题,不能发送数据了,那么将永远等待下去,这就相当于死机了,多可怕,写程序就怕这个事情发生的。

感觉你的概念不太清晰。上面所说的“1+8bit+1+1”应该是串行通讯一个字节的格式,属于串行通讯中的最小数据格式单位的一种:1个起始位+8个数据位+1个校验位+1个停止位(也有1+8+0+1等等),也就是说如果需要收发N个字节,就有N x (1+8bit+1+1)个这样的组合出现在TXD或RXD线路上,而不是1+nbit+1+1或者1+nx8bit+1+1。这些位中:
1、起始位和停止位:用于同步
2、校验位:用来保证通讯信息的正确性
3、8个数据位:设备需要的真正数据。
起始位和停止位都是收发双方UART适配器自身的硬件完成的,校验位需要程序处理及判断以便知道信息是否正确。一般而言,在初始化设置完成后,软件编程者只需要关注8个数据位及校验位就可以了。

下面说一下帧。
串行通信中,帧信息一般是根据需要自己约定而确定的。其内容一般是由多个8位单字节数据组成,比如你所说的传感器,需要采集电压值,电流值等信息,假设这些信息需要10个字节,那么你的一帧信息最少需要10个字节,也就是收发两方都需要计数,计数到10时才能说明通讯完成。这是最简单的,但大多数应用中规范的做法一帧信息都会包含帧头标识符、帧长度、信息内容及校验信息。给你个链接,这是我以前的回答,其中简单的叙述了帧协议,理解后你可以规定自己的帧格式。
http://zhidao.baidu.com/question/273360213.html

对于多个传感器,应给每一个分配一个唯一的地址,只有地址相符的传感器才对主端的信息做应答。地址信息可以包含到通讯协议中,比如:
帧头 + 帧长度 + 中断地址 + 信息内容 + 校验和
如果使用的是51单片机,也可以用串行通讯方式3方式完成,你可以查阅一下资料,我记不住了。

发送的位数跟工作方式有关。51单片机的发送和接受,只有10位和11位两种。

先说单片机串口的工作方式:
单片机串口的工作方式共4种,方式0--方式3.
方式0:用移位脉冲。RXD做输入/输出,TXD进行移位。收发的数据为八位。
方式1:传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据位由TXD发送,由RXD接收
方式1:一帧信息也是10位;即 1位起始位,8位数据位(先低位),1位停止位。在起始位到达移位寄存器的最左位时,它使控制电路进行最后一次移位。
方式2和方式3:发送(通过TXD)和接收(通过RXD)一帧信息都是 11位: 1位起始位(0), 8位数据位(低位在先),1位可编程位(即第9位数据)和1位停止位(1)。
可见:不论单片机串口接收还是发送一帧数据是多少位,实际有效位数据位都是8位,其余位是为了奇偶校验、做起始位或终止位用的。
以前所述有误,特修正。

标准的8位!因为它是八位单片机,操作位数一般都是8位。一楼那位说的是计算机串口输出规则!

51系列发送和接收都是8-11位,8位只是数据位,另3位是起始位 停止位 奇偶校验位.一般11位更好

串口通信应该是8到11位。要看你自己程序怎样编写。你需要的数据如何定义。1楼说的是对的


从51单片机串口工作方式1时序图,可以看出串口在进行接收和发送数据时...
TI和RI,分别是发送和接收的中断请求标志位,在发送和接收时,应该是0状态的,发送和接收结束后会自动置1的,才请求中断的。否则,两个标志位为1,就不能正常发送和接收了,因为只要是1就请求中断,在开中断的条件下,会反复中断的,无法正常工作了。

51单片机串口接收单字符后如何进行判断
如果在串口助手上发送字符数据 那么在单片机上接收的就可以用该字符对应的十六进制码进行判断 比如你的数据 0,以字符形式发送0,换成十六进制就是 30 单片机用0x表示十六进制数据,所以就是 0x30 判断语句如下 if ( c==0x30 ){ LED = ~LED; } 具体的字符与十六进制码对换,可以参考下表 ...

51单片机串口通信是全双工的,但是为什么又说它的发送和接受不可以同时进...
51单片机串口通信是全双工的,发送和接受可以同时进行。不可以同时进行的是半双工。全双工方式分别由两根不同的传输线传送数据时,通信双方都能在同一时刻进行发送和接收操作,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在发送和接受两个方向上传送。半双工使用同一根传输线既作接收又...

请问51单片机怎么通过串口接收字符串?能解释一下代码吗?谢谢了_百度知 ...
要活学活用知识才是,教材或者单片机资料上有说到串口通信的接收数据寄存器;当这个寄存器满时(即收到了一个完整的字节时),会发出中断信号,那么你就在中断例程中取走数据就是了,取走数据后,接收端就会自动接收或者等待接收新的数据。如此中断一次取走一个字节,直至发送端停止发送数据。取走的数据怎么...

单片机串口是什么意思
问题九:单片机中的TXD RXD指什么? RXD、TXD是Receive Data ,Tran *** it Data 的意思。 RXD 为接收数据的引脚,TXD 为发送数据的引脚。RXD是P3.0,TXD是P3.1 问题十:单片机串行口与普通IO口区别? hi 低调136 ,串行口是复用口,可以作为串口使用,也可以作为普通IO口。但是其他的IO口就...

51单片机的串口接收一帧数据有几位?
和接收(通过RXD)一帧信息都是 11位: 1位起始位(0), 8位数据位(低位在先),1位可编程位(即第9位数据)和1位停止位(1)。可见:不论单片机串口接收还是发送一帧数据是多少位,实际有效位数据位都是8位,其余位是为了奇偶校验、做起始位或终止位用的。以前所述有误,特修正。

51单片机串口是什么工作方式?
51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本...

单片机串口中断关闭,当接收完一帧数据,由硬件将RI置1,必须用软件将其清...
请问在RI清零之前,能否接收下一帧数据?--- 可以接收。如果连续给单片机发送多个字节,当出现RI=1后,通过软件可以读出第一个字节。但是如果没有把R1清零,就无法知道何时收到了第二、第三...字节。当过去足够长的时间后,再次读出SBUF,将会读出最后收到的字节,前面没有及时读出的第二、第三.....

单片机串口实验:为什么是数据接收完成后RI=1,为1不就是说明申请中断吗...
RI = 1不等于串口的中断就已经发生,而是一个字节数据接收完毕所产生的标志。串口接收数据不一定要使用中断,采用程序查询RI的状态,来判断数据是否到达的方式也是可以的。51单片机串口的中断使能位是ES,全局中断使能位是EA。尽管RI = 1,但如果上述两个标志位在初始化时没有置位,串口的中断依然没有...

51单片机串口通信接收的过程的疑问
一点:1单片机在执行程序,若有串口中断来,去执行中断(这种接收数据比较常用)2 如果你不是中断接收数据,是查询接收数据,单片机执行到等待点(除非有中断,去执行中断),不不执行其他了,等待执行点结束,才能去执行其他的,一般都不常用 第二点:1串口中断没有执行完,是无法进行下个串口中断的,...

礼泉县18713201426: 51单片机的串口接收一帧数据有几位? -
薄冠泻痢: 发送的位数跟工作方式有关.51单片机的发送和接受,只有10位和11位两种. 先说单片机串口的工作方式: 单片机串口的工作方式共4种,方式0--方式3. 方式0:用移位脉冲.RXD做输入/输出,TXD进行移位.收发的数据为八位. 方式1:传...

礼泉县18713201426: 51单片机串行通信中1帧是多少个字节啊,要算一个字节数据的传送时间是不是要把起始位和停止位也算上 -
薄冠泻痢: 串行通信是按bps就是bit每秒为单位的 一个字节是有算起始和停止位的

礼泉县18713201426: 单片机串行通信里面的数据帧是怎么理解?一帧数据的位数可以改变吗?比如1+8bit+1+1,这样的就是一帧—— -
薄冠泻痢: 感觉你的概念不太清晰.上面所说的“1+8bit+1+1”应该是串行通讯一个字节的格式,属于串行通讯中的最小数据格式单位的一种:1个起始位+8个数据位+1个校验位+1个停止位(也有1+8+0+1等等),也就是说如果需要收发N个字节,就有N x ...

礼泉县18713201426: 51单片机的串行口有几种工作方式?它们的帧格式是如何规定的? -
薄冠泻痢: 串行口分四种工作方式,由SM0、SM1二位决定,其定义如下:SM0、SM1 工作方式 功能描述 波特率 0 0 方式0 8位移位寄存器 Fosc/12 0 1 方式1 10...

礼泉县18713201426: 51单片机的串口通信,每一次是不是只能发送一个字节,比如说12,是分两次发送的吗,第一次发1,第二 -
薄冠泻痢: 如果你想发的是 字符 '1' 跟字符 '2'(字符串“12”),那么每次只能发一个字符.必须成'1'跟'2'分开. 如果你想发的是数字'12',那么可以直接发'12'(0x0C). 串口一次只能接收8个位(当然可以设置成 9个位),也就是 一次通讯 1Byte 数据.

礼泉县18713201426: 51单片机怎么接收电脑发送的16位数据 -
薄冠泻痢: 51单片机是8位的,一次只能接一个字节,你这16位的,要分两次的. 电脑串口也是按两次来发送,也就是把这个16位的拆成两个字节,所以每个字节发送都是遵循串口协议的,你在单片机里面开串口接收中断即可. 你可能会疑问,要是第一...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网