1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14_串口

串口多机通信 ③主机发送数据时,所有从机可以接收到,从机之间互不影响。 串口多机通信 ④主机的RX和所有从机的TX连接,该线电平取决于从机的TX。 为了防止冲突,此时所有从机的TX被配置位开漏输出(开漏时,输出0为低电平,输出1为高阻) ,外接上拉电阻。 串口多机通信 当所有从机输出0时,该线位低电平。 当有的从机输出0,有的从机输出1时,由于输出1的从机为高阻状态,相当于和该线断开,不影响该线。此时该线为低电平。 当所有从机输出0时,该线为低电平。 为什么要开漏,外接上拉? 串口多机通信 由此可以看出,多机通讯主机接收数据时,从机之间相互影响。必须保证在任意时刻,最多有1个从机控制主机的RX线。 这就意味着,在任一时刻,主机最多只能和1个从机通讯。 串口多机通信 多机通讯过程如下: A.系统启动后,所有从机处于不激活状态:不发送数据(软件控制),仅能接收数据。 B.主机想和某个主机通讯,必须先激活它。此后该从机和主机通讯。当主机和该从机通讯完成后(例如激活后从机发送100个字节),从机自动转入不激活状态(从机软件控制) C.转入B 地址识别硬件 串口0 是一个具有帧错误检测、地址识别硬件并支持多处理器通信的增强型串口。 地址识别硬件完成如下功能: 设置本机串口的地址; 对收到的数据进行识别,和本机地址匹配才接收数据。 与地址识别硬件相关的SFR有两个: UART0从地址设置寄存器SADDR0 UART0从地址掩码寄存器SADEN0 地址识别硬件 A.如果SM2=0,则必须保证① REN=1 ②RI=0才接收数据,否则丢弃该数据; B.如果SM2=1,则必须保证① REN=1 ②RI=0 ③接收到的D8 =1 ④接收到的D0-D7必须和自己的地址匹配,才接收数据,否则丢弃数据; 串口接收数据的条件 地址设置举例 地址由SADDR0和SADEN0设置。 SADEN0中某位为1,则在SADDR0中对应位作为串口地址; SADEN0中某位为0,则在SADDR0中对应位无关。 如何理解x 主机1有16个不同的地址(多个地址分配给1个从机) 也可以将一个地址分配给多个主机,这样就允许同时向多个从机进行“广播”式发送。广播地址是寄存器SADDR0和SADEN0 的逻辑或,结果为‘0’的那些位被视为“无关”位。 广播寻址 从机1接收时,如果收到的D0-D7 = xxxx0101 或xx111111都认为地址匹配成功。 广播寻址 广播寻址 注意观察: 或结果为1时广播地址位1, 或结果位0时广播地址位x,既然位x,那x=1也是广播地址。 所以无论个从机如何设置,0xFF必时所有从机的广播地址。 多机通讯流程 A.所有从机初始化为SM2=1,REN=1。 B.当主机想要向一个或多个从机发送数据数据时,它先发送一个用于选择目标从机的地址字节,且TB8 =1。 所有从机能满足REN=1,RI=0,收到的第9个位为1,只有本机地址=D0---D7的才满足条件④,才会接收这个字节。 C.收到这个字节后,该从机将SM2改为0。 D.主机和该从机通讯,收发数据,TB8=0。其他从机不满足条件③,不会接收数据。 E.当主机和该从机通讯结束后,该从机将SM2改为1 F.回到B 表12.2. 产生标准波特率的振荡器频率 *假定SMOD=1 且TIM=1。 **括号里的数是实际波特率。 12.4 UART1 串口1和串口0类似,有空可自学。 在C8051F120的片内数据存储器20H—3FH单元中共有32个字节的数据,要求使用串口0方式1发送出去,传输的波特率为9600,SYSCLK=11.0592MHz。分别用查询和中断方式实现发送和接收程序。 例1: [(2^SMOD)/32]*定时器T1的溢出率=9600 定时器T1的溢出率=9600*32=307200 定时器T1的溢出时间=1/307200 (1/(11.0592M/12))*(256-x)=1/307200 X=253 T1工作在方式2,作为波特率发生器,T1M=0(主频/12),SMOD=0. 查询方式发送程序: 注意:没写端口初始化,时钟初始化 TMOD TCON CKCON T1M=0,使用预分频时钟(见前框图) SCA1,SCA0多少预分频 SCON0 SSTA0 查询方式接收程序: 中断方式发送方的程序: 中断方式接收方的程序: 编写一个串口0方式1发送ASC码的程序,要求该字节最高位为其余7位的奇偶校验。已知主频:11.0592M,要求波特率9600,用T2作波特率发生器,T2使用主频的12分频作为输入时钟。 (1/16)T2溢出率=9600 T2溢出率=153600 (65536-x)*(1/11.0592M)=1/153600 x=65464

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档