单片机教程3资料.ppt
文本预览下载声明
RI=0是保证下一个数据的正常接收的重要条件。每次当SBUF收到数据时,RI自动置一。当取走数据时必须通过软件复位RI(指令 CLR RI),否则外部发来的数据将丢失! 模式2、3的接收过程类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位“1”;而模式2、3时,RB8是接收到的第9位。 大连理工大学 电信学院 陈育斌 关于SM2的设定 对于接收操作: 模式1:SM2无用,令其=0即可。此时接收数据条件是:RI=0 且 REN=1。单片机可以利用查询或中断方式为串口服务。 模式2、3的接收条件是:( 除了RI=0、REN=1外) ① 当 SM2=0时:RI 可以被激活(但不能引发中断); ② 当 SM2=1时:只有接收到RB8=1时,RI不仅能激活,还能引发中断。 可见:当SM2=1时,单片机是否能接收到数据取决于外部数据的第9位RB8。这样外部可以通过第九位数据是“0”还是“1”来控制、决定单片机的接收状况。 大连理工大学 电信学院 陈育斌 在模式2、3中:如何利用和设置SM2和RB8来控制接收? ①当数据是带奇偶效验位的9位数据时(效验位是RB8): 必须令SM2=0,这样才能保证所有数据的正确接收(无论RB8如何); ②在“多机通讯”时,所有的从机都将其SM2=1,这样作为主机在向从机发送数据/命令时,可以通过所发数据的第9位TB8(对于从机来说是RB8)来决定从机是否可以接收到此数据/命令(取决于RB8)。 即 RB8=1时接收有效;RB8=0时接收无效。 所以,SM2也称“多机通讯位”,用于多机通讯。 奇偶效验:一种防止串行通讯出错的方法。 大连理工大学 电信学院 陈育斌 返回本节目录二 返回上一页 串行口模式2、3时数据帧格式 SM0 SM1 SM2 REN TB8 RB8 TI RI 大连理工大学 电信学院 陈育斌 发送时:将SCON中的TB8作为第9位数据发送; 接收时:将接收来的第9位送到SCON中的RB8中。 D0 D1 D2 D3 D4 D5 D6 D7 D8 起始位 9位数据 停止位 返回上一次 模式2、3的应用之一带奇偶校验位的数据传送 奇偶校验:收到的第9位RB8是发送方送来的奇偶校验位。 在这种情况下必须令SM2=0,否则接收的校验位RB8=0时,将影响数据的接收(因为RB8有时为“1”,而有时为“0”)。 当接收数据后,对 PSW.P位进行判断。将此结果与RB8进行“异或”,结果是否与约定的相符合。 大连理工大学 电信学院 陈育斌 【例】:收发双方约定为奇校验(9位数据中1的个数为奇): 则发送方的第9位要根据前8位数据来确定。 若发送的8位数据是,则TB8为0。这样当接收方将SBUF的数据送A时(MOV A,SBUF), A中数据是这时PSW.P=1,且 RB8=0 。这样进行时 P⊕ RB8运算,当=1时表明通讯正确。 反之若SBUF送A此时RB8=0), 这样PSW.P=0, RB8=0 , P ⊕ RB8=0 表明不符合约定条件,接收出错。 【注意】使用模式2、3发送带“奇偶校验”位的数据时: 1,一定要使SM2=0(为什么?)。 2,又因为SM2=0,所以尽管RI能够激活,但不会引发中 断,所以只能采用“查询”的方式接收数据。 大连理工大学 电信学院 陈育斌 利用模式2,3进行带奇校验的串行通讯程序流程图 大连理工大学 电信学院 陈育斌 数据送累加器A PSW.P=1 ? SET SCON.TB8 CLR SCON.TB8 MOV SBUF,A TI=1 ? CLR SCON.TI YES NO NO YES 发送端程序(原始TI=0) 使用“查询法”编制的发送、接收程序 返回本节目录二 RI=1 ? MOV A,SBUF PSW.P⊕RB8=1? 出错处理 CLR SCON.RI YES NO 接收端程序(原始RI=0) N Y 数据送内存 模式2、3的应用之二:多机通讯 如果系统采用多CPU结构,并且有一个做主机,其它为从机时,它们之间可以通过多机通讯的方式进行数据交换。如:多路数据采集系统。 我们选一台单片机作为主机,专门负责接收从机传回的数据,并进行数据的后期处理(保存、打印和显示等); 而从机则完成对传感器的信号检测、A/D转换,最后将数据采用串行通讯的形式上传给主机。 大连理工大学 电信学院 陈育斌 传统方式的多路数据采集系统 大连理工大学 电信学院 陈育斌
显示全部