⑴ 单片机要实现多机通信,那个RB8和TB8是怎么变化的
------
主机:
设置为SM2=0。
这是双机通信的形式,可以任意的发送和接收
发送:
以TB8=1发送,将发送到所有SM2=1的分机。这是呼叫某个从机。
以TB8=0发送,将发送到SM2=0的分机。这是双机通信的形式。
------
从机:
先设置为SM2=1。
这是多机通信的形式,只能收到RB8=1的。
接收:
仅能收到RB8=1的数据,确认是呼叫本机时,令SM2=0。
设置为SM2=0后,是双机通信的形式。
⑵ 51单片机串口方式2中的TB8到底是用来奇偶校验还是定义地址/数据的
看书要仔细,书上的说法没有错。
TB8:工作方式2和方式3时,为发送的第9位数据,也可以当做奇偶校验位。
(跟地址/数据没有关系)
SM2:多机通信控制位(方式2和方式3)
SM2=1:只有接收到第9位(RB8=1)时,RI才置位。(如果RB8=0,RI就会等于0,就不能进入接收中断,自然丢失信息了。)
SM2=0:接收到单个字节,RI就置位。(单机通信方式)
而且这里说的奇偶校验是TB8,SM2=1时考虑的是RB8,这两个分别是不同的位,功能又不冲突。
串口通信最基本的控制寄存器SCON,书上的描述都很简洁,不能跳着看,要对比着一条一条理解。掌握了控制寄存器各个位的作用,串口通信也就基本了解了。
⑶ 单片机状态控制寄存器SCON中的TB8有什么用
TB8:第9位发送的数据,多机通信时(方式2、方式3)TB8标明主机发送的是地址还是数据,TB8=0为数据,TB8=1为地址。TB8由指令置位或复位。
方式2和方式3用于多机通信,方式1和方式0用于点对点的通信,因为方式2和方式3中每帧数据有第9位,在通信时候,主机先发送一个地址信息给从机,从机接收到地址信息然后和自己的地址对比,地址相同则认为主机要同自己通信,
就是当串行口工作在方式2,和方式3时候,每帧数据一共有9位,前面8位为发送的数据位,最后面第9位标明的是发送过来的数据是发送的地址信息还是发送的数据信息,当发送的为地址信息的时候写程序的时候将TB8置1,当发送的数据为数据信息的时候将TB8置0.就是用第9位来让单片机识别发送的信息类型。
这是我个人的理解,比较通俗,别见笑!
⑷ 单片机奇偶校验
通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位。
有时为了提高准确度,需要增加一个“奇”校验位或者“偶”校验位。
对于高级语言的做法是很简单的,只要把格式命令“8-n-1”,改为“8-P-1”或“8-O-1”即可。
串行口在带有校验位的通信方式中,是先发送8位数据,然后再发送校验位。
51单片机也可以按照带有校验位的方式进行串行通信,这在51单片机中称为9位数据方式。
51单片机中有两个位,分别称为TB8和RB8,它们在“无校验”的时候,并没有用处。
当51单片机用9位数据方式进行串行通信的时候,TB8和RB8的作用如下:
51单片机在发送的时候,先发送8位数据,然后发送TB8中的内容;
51单片机在接收的时候,先接收8位数据,然后接收校验位,存到RB8中。
编写51单片机程序的时候,应该在发送数据之前,在TB8中,写好待发送的校验位。
8位数据的校验位,可以利用单片机中奇偶标志位P来自动生成,程序如下。
MOV A, #待发数据 ;数据进了A,即刻生成奇偶标志位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P
由于P = 1则说明A中有奇数个1,所以上述程序是“偶”校验的形式。
如果要求的是“奇”校验,则需要增加一条取反指令,如下:
MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8
接收方会把收到的8位数送到SBUF,第9位数,送到RB8,然后自动设立RI = 1。
之后,就可以用RB8中的内容,对刚才收到的8位数进行正确性检验。
另一个问题:51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?
本来想用串口的模式1,可是仔细一看,模式1是10异步通信方式,1起始位,8数据位,1停止位?
悬赏分:20 - 解决时间:2009-12-1 13:26
问题补充:首先感谢一楼的回答。我还有些疑问,刚才用示波器看了下,当发送0xFF时,示波器显示一位低电平,其余为高电平,这点应该是对的,因为起始位是0.可是为什么发送0xAA时,示波器的(起始位+数据位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列为:0 +1010 1010 + 1,这两个值好像不对,是相反了,要是调一下刚好对?
;-----------------------------------------------------------------
最佳答案用串口的模式1,是10位异步通信方式。
1起始位,8数据位,1停止位,没有奇偶校验位。
这种模式就是:8-n-1(8数据位,无奇偶校验位,1停止位)的模式。
完全符合你的要求。
⑸ 8051单片机中scon的sm2 tb8 rb8有何作用
SM2,TB8,RB8涉及的是串行通信
SM2:多机通信时的接收允许标志位
TB8,RB8:当串口工作于方式2或3 时使用到,指向的是串行传输的第9位数据;
1)SM2=0,在方式2或3下,TB8、RB8 发送与接收第9位奇偶校验位;
2)SM2=1,多机通信时的接收允许位,并且在方式2或3下工作;
下面给你个参考;
简述多机通讯过程中SM2、TB8和RB8的作用。
答:整个系统只有一台主机,其余为从机,每台从机都有一个唯一的地址编号;
(1)所有从机 SM2=1;
(2)主机欲和某台从机通信,就将该从机编号作为地址帧信息发送,设置TB8位为1,表示发送地址帧;
(3)所有从机通过RB8位判断收到地址帧后(在RB8=1 时并使RI=1 产生中断请求),进行中断处理,把接收到的地址和自己的地址编号进行比较,若相等,就使 SM2=0,准备接收主机发送的数据信息,如果不相等,仍维持 SM2=1;
(4)被主机点名的从机已经置SM2=0,可以接收主机随后发送的TB8=0的数据信息,其他从机则不能接收;
(5)通信完毕,该从机恢复 SM2=1;