为什么单片机双机通信初始化时必须先设串口SCON=0x50;再设波特率;而不能将两个顺序写反?

供稿:hz-xin.com     日期:2025-01-14
C51单片机串口初始化为何是这样:SCON=0X52;TMOD=0X20;TH1=0XF3;TR1=1;

  SCON-串行口控制寄存器:可位寻址,单片机复位时,各位都被清0B7B6B5B4B3B2B1B0SM0SM1SM2RENTB8RB8TIRI SM0、SM1:串行通信方式选择位。SM0SM1工作方式功能说明波特率00方式0同步移位寄存器方式osc f /1201方式18位异步通信方式可变,由定时器控制10方式29位异步通信方式osc f /32 或osc f /6411方式39位异步通信方式可变,由定时器控制 SM2:多机通信控制位。在方式0时,SM2必须为0。在方式1时,若SM2=0,RB8是接受到的停止位;若SM2=1,则只有收到有效的停止位才会激活中断RI,若没有接受到有效停止位,则RI清0。在方式2或3时,如果SM2 = 1,则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将接收到的前8位数据送入SBUF。当接收到的第9位数据(RB8)为“0”时,不提出中断,接收到的前8位数据无效。若SM2 = 0,接收到RB8后必然置位RI,产生中断,此时不论地址帧还是数据帧都能接收。REN:接收控制位。由软件置1或清0,“0”即禁止接收。“1”允许接收。TB8:发送数据的第9 位。方式2和方式3,TB8是要发送的第9位数据,其值由软件置“1”或清“0”。在双机串行通信时,一般作为奇偶校验位使用;在多机串行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。RB8:接收数据的第9位。方式2和方式3,RB8存放接收到的第9位数据。在方式1,如SM2 = 0,RB8是接收到的停止位。在方式0,不使用RB8。TI:发送中断标志位。发送数据前由软件清0,发送结束由硬件置1。方式0,发送完8位数据时TI由硬件置“1”,其他方式中,发送停止位时置TI 为“1”。其状态可供软件查询,也可请求中断RI:接收中断标志位。接收前由软件清0,接收完时由硬件置“1”。方式0时,接收完第8位数据RI由硬件置“1”。在其他工作方式中,串行接收到停止位的中间时,该位置“1”。 其状态可供软件查询,也可请求中断 TMOD-定时器控制寄存器:不按位寻址,高四位控制T1,低四位控制T0。地址89HB7B6B5B4B3B2B1B0GATEC/TM1M0GATEC/TM1M0GATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0(P3.4)或T1(P3.5)输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。M1 :模式选择位高位M0 :模式选择位低位M1M0工作模式0013位计数/计时器0116位计数/计时器108位自动加载计数/计时器11定时器1停止工作,定时器0分为两个独立的8位定时器TH0及TL0 SCON=0X52 :选择8位异步通信方式,波特率可变,由定时器控制;允许接受;发送中断标志、接收中断标志分别为1、0TMOD=0X20:使用定时器1,8位自动加载计时器TH1=0XF3:设置8位自动加载计时器定时时间,设定波特率为9600TR1=1:启用定时器1。

令TI = 1;,表示发送完毕。
这一语句,可以启动串口中断,在中断里面,可以继续发送下一个字符。
当中断函数中,没有编写“继续发送”的程序段时,这个置一,就没有用了,可以删除。

可以呀,我刚试了。
void initUART()
{
TMOD=0x20; //M1=1,M0=0 定时器1工作方式2(定时常数重装,8 位)
//SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允许接收
TH1=0xfd; //晶振11.0592时,波特率9600
TL1=TH1; //TL1计数,溢出后,TH1值送入TL1
SCON=0x50;
EA=1; //开总中断
ES=1; //允许串口中断
TR1=1; //启动定时器1
}

因为,串口那个引脚也可以作为一般引脚使用。

8255单片机能实现双机直接通信吗
8255并不是单片机,是并行接口。不论什么单片机,只要有串口,就可以实现双机直接通信的。如下,两个51单片机的串口直接对连,就可以通信了。剩下就是写程序的事啦。

Zigbee短距离无线通信实现51单片机双机通信
zigbee是一种协议,CC2530是51内核的单片机,zigbee协议的。基本的51单片机应该是做不了zigbee协议的。

求两片16f628a之间串口通信的程序
我以前做过的8251A的双机通信,你参考一下吧!a.发送端初始化程序及发送控制程序 DATA SEGMENT DA1 DB 5 TABLE1 DB 1,2,3,4,5 PORT1 EQU 82H ;设8251A控制端口地址=82H PORT2 EQU 80H ;设8251A数据端口地址=80H TABLE2 DB ‘OK!$’DATA ENDS C...

51单片机双机通讯物理接线有什么要求(芯片引脚怎么连接)?
51单片机双机通讯,如果双机距离超过了1米,就要采用RS232接口,这是常用的串口通信方式,物理接线可采用3线连接即可,距离超过10米时应采用双芯屏蔽线。距离小于1米时,属于实验性的临时串口通信,两个单片机的RXD,TXD引脚交叉连接就行,需要共地,用普通的3条导线连接。

51单片机双机通信
\/\/=== \/\/ 多机通讯主机程序 \/\/zhuji.c \/\/writer:谷雨 2008年3月22日于EDA实验室 \/\/注:主机先发送地址,接收到应答后,再发送数据 \/\/===#include<reg52.h>#define addr1 0x31 \/\/从机1地址 define addr2 0x

51单片机串口双机通信 通信双方是不是满足波特率相同就可以了,晶振一定...
波特率相同就可以,晶振不用相同,不同的晶振也可以设置相同的波特率!

【51单片机】串口通信
串口配置代码包括寄存器配置、发送和接收数据处理。双机通信示例中,主机发送数据,从机接收并反馈,实现数据交互。多机通信通常采用RS485总线,主机向多个从机发送信息,各从机接收。在多机通信前,需定义从机地址,并正确设置SM2、TB8和RB8。参考资源包括《单片机原理及应用》和B站UP主江协科技的单片机...

两个单片机UART通信不能正常进行
单片机串口可以在115.2k可靠传输,不要怀疑波特率,如果你的波特率计算真的没有错误的话;从你的条件不会退出能通信的结果,肯定有的细节你没有说明,不知是什么;如果真的如你所说,只能让一片单片机不断的发,示波器监视发送是否正常;串口助手给另一片单片机发数据,看接受是否正常,一步步来。如果还...

如果8051单片机系统晶振是6MHz,双机串行通信的波特率为9600的,计算出TH...
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一,...

51单片机双机通信最远距离能有多远
单片机双机通信有很多模式,距离也是不一样的。UART-TTL1-2米,速率1M以内,有线连接,3条线(RXD-TXD、TXD-RXD、GND),串行全双工。SPI1米以内,速率10M以内,有线连接,5条线(含共地),主从模式双工。315M\/2.4G无线模块,速率100K以内,无线连接,可靠距离通常在50-100米,半双工。借助于公共...