第6章 串行接口.ppt_第1页
第6章 串行接口.ppt_第2页
第6章 串行接口.ppt_第3页
第6章 串行接口.ppt_第4页
第6章 串行接口.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 串行接口 6.1 串行通信的基础知识 6.2 MSC-51系列单片机的串行接口 6.3 串行口工作模式 6.4 串行口应用举例,6.1 串行通信的基础知识,计算机与外设的信息交换称为通信。 通信的基本方式:并行通信和串行通信。 并行通信:指数据的各位同时进行传送。 其优点是传送速度快,缺点是数据有多少位,就需要多少根传输线,适合于近距离传输。 串行通信:指数据的各位按顺序一位一位传送。其优点是只需一对传输线(如电话线),占用硬件资源少,从而降低了传输成本,特别适用于远距离通信,缺点是传送速度较慢。 611 串行通信的两种基本方式 串行通信基本方式:异步通信和同步通信。,1、异步通信方式

2、 起始位 1位 “0”有效 用一帧表示一个字符 数据位 5-8位 一个字符包括4个部分 奇偶校验位 1位 停止位 1位、1位半、2位 “1”有效 所以,一个字符由10个,10个半,11个位构成。,在异步通信时,通信双方必须事先约定。 (1)字符格式。 双方要事先约定数据位的位数、奇偶校验形式及起始位和停止位的位数。 例如:用ASC码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共10位。当然停止位也可以大于1位。 (2)波特率(Baud rate)。波特率就是传送速率,即每秒传送的二进制位数。单位为bit/s或波特。 波特率与字符的传送速率之间的关系为: 波特率= 一个字符的二

3、进制编码位数*字符数/秒. 要求发送端与接收端的波特率必须一致。 假设:数据传送率是120字符/s,每个字符格式包含十个代码位(一个起始位、一个终止位、8个数据位),波特率为: 10120=1200bit/s=1200波特,2同步通信方式 异步通信由于要在每个数据前后附加起始位、停止位,每发送一个字符约有20%的附加数据,占用了传输时间,降低了传送效率。 同步通信则去掉每个数据的起始位和停止位,把要发送的数据按顺序连接成一个数据块,在数据块的开头附加12个同步字符,在数据块的末尾加差错校验字符。同步通信的数据格式如图6-2所示。在数据块内部,数据与数据之间没有间隙。,要求:发送和接收双方要保持

4、完全的同步,所以,要求发送和接收设备必须使用同一时钟。 解决办法: (1)对于近距离通信:采用在传输线中增加一根时钟信号线来解决。 (2)对于远距离通信:通过解调器从数据流中提取同步信号,用锁相技术实现收、发频率完全相同的时钟信号。 如上所述,异步通信技术较为简单,应用范围广;同步通信传输速率高,适用于高速率、大容量的数据通信,但硬件复杂。,612 串行通信的数据传送方式 1、单工方式:数据传送是单向的,一端为发送另一端为接收,只需一条数据线。 图6-3(a) 2、半双工方式:数据传送是双向的,AB,BA,同一时间只能做一个方向传送,只需一条数据线。 图6-3(b) 3、全双工方式:数据传送是

5、双向的,A、B两端可同时发送,又可同时接收,需两根数据线。 图6-3(c),613 串并转换和串行接口 (1)串并转换实现:由串并接口电路+适当的软件配合 串行接口芯片:异步接收/发送器UART 同步接收/发送器USART (2) UART组成: 接收器 发送器 控制器 串行并行 (接收器完成) 并行串行 (发送器完成) 主要功能:完成格式信息的插入,滤除及错误校验 (控制器完成) 格式信息指异步通信中的起始位、奇偶位、停止位。,62 MCS-51系列单片机的串行接口 对于单片机来说,为了进行串行通信,同样也需要有相应的串行接口电路。只不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部

6、,成为单片机芯片的一个组成部分。MCS-51系列单片机有一个全双工的串行口 。 6.2.1 MSC-51系列单片机串行口的结构 6.2.2 MSC-51系列单片机串行口的控制 6.2.3 波特率设计,621 51系列单片机串行口的结构 1、组成: 发送数据缓冲器:只能写入,不能读出 接收数据缓冲器:只能读出,不能写入 发送控制器 输出控制门 接收控制器 输入移位寄存器 两个专用寄存器 SCON:存放串行口的控制和状态信息 PCON:改变串行通信波特率 发送缓冲器和接收缓冲器两个用同一符号SBUF,地址99H,用指令判断选哪个 MOV SBUF,A 写入;MOV A,SBUF 读出,622 MC

7、S-51单片机串行口的控制 1串行口控制寄存器SCON 可设定串行口的工作模式、接收/发送控制及设置状态标志。字节地址98H,可位寻址。 SM0、SM1:工作模式选择位,可选择4种工作模式。 表6-1 串行口的工作模式,SM2:多机通信控制位。SM2=1,允许多机通信。 在主从式多机通信中,SM2用于从机的接收控制。设SM2=1:从机只接收地址帧;若接收到的第9位数据(RB8)为0时(数址帧),不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;只有当RB8为1时(地址帧),才将接收到的前8位数据送入SBUF中,并置位RI,以产生中断申请。 设SM2=0:从机可接收所有信息;不

8、论第9位数据是0还是1,都置RI=1,接收到的数据都装入到SBUF中。 在模式1:,若SM2=1,则只有接收到有效停止位时,RI才置1。 在模式0:,SM2必须是0。 REN:允许接收控制位。该位由软件置1或清0。 REN=1时,允许接收数据;若REN=0,则禁止接收;,TB8:在模式2和模式3中,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位。 它可作奇偶校验位(单机通信时)。 在多机通信中可作为发送地址帧或数据帧的标志位。多机通信时,一般约定:发送地址帧时,设置TB8=1;发送数据帧时,设置TB8=0。 在模式0或模式1中,该位未用。 RB8:在模式2和模式3中,RB8是接收

9、数据的第9位,它即可以是约定的奇偶校验位(单机通信时)。 也可以是约定的地址/数据标志位 (多机通信时) 。可根据RB8被置位的情况对接收数据进行某种判断, 多机通信:,若RB8=1,说明收到的数据为地址帧; RB8=0,收到的数据为数据帧。 在模式1时,若SM2=0(即不是多机通信情况),则RB8是已接收到的停止位。模式0中该位未用。,TI:发送中断标志。 在一帧数据发送结束时由硬件置位。 TI=1表示“发送缓冲器已空”,通知CPU可以发送下一帧数据。 TI位可作为查询;也可作为中断申请标志位。 TI不会自动复位,必须由软件清0。 RI:接收中断标志。 在接收到一帧有效数据后由硬件置位。 R

10、I=1表示一帧数据接收完毕,并已装入接收缓冲器中,即表示接收缓冲器以满,通知CPU可取走该数据。 该位可作为查询,也可作为中断申请标志位。 同样RI不会自动复位,必须由软件清0。,2电源控制寄存器PCON 字节地址为87H,不可位寻址,内容如下: 低4位:CHMOS器件的掉电方式控制位。 SMOD:波特率倍增位,在模式1、2、3中 SMOD=1,波特率提高1倍; SMOD=0,波特率不增倍; 复位时,PCON=00H,623 波特率设计 串行口有4种工作模式,对应着3种波特率。 1模式0的波特率 波特率固定:每个机器周期产生一个移位时钟,可发送或接收一位数据。且不受SMOD位的影响。即 模式0

11、的波特率=fosc/12 2模式2的波特率 由系统的振荡频率fosc和SMOD共同确定,即 模式2的波特率=2SMODfosc /64 3模式1和模式3的波特率 模式1和模式3的移位时钟由定时器T1的溢出率决定,故波特率由T1的溢出率与SMOD值共同决定,即 模式1和模式3的波特率= 2SMODT1的溢出率/32,当T1做波特率发生器使用时,最典型的用法是使T1工作在模式2(初值自动加载)、定时方式,若计数初值为X,则每经过“256X”个机器周期。定时器T1就会产生一次溢出;溢出周期为: (256X) 溢出率为溢出周期的倒数,所以 波特率= 此时,定时器T1工作在模式2时的初值应为: X=(2

12、56 ),对于52子系列单片机,通过设置T2CON寄存器中TCLK和RCLK这两位,可选择T2做串行口的波特率发生器。当TCLK=1时,选T2做发送波特率发生器,当RCLK=1时,选T2做接收波特率发生器,当两者均为1时,选T2做发送/接收波特率发生器。 当T2做波特率发生器时,波特率取决于它的溢出率,而与SMOD的状态无关。计数时钟可以来自内部,也可以来自外部,决定于T2CON中的C/T2位的值,并且T2的溢出信号要经过一个16分频计数器(见5.2节T2的内部结构框图)。 当C/T2=0时,选用内部时钟,计数频率为fosc /2,波特率由下式给出:,波特率= fosc/2*1665536-(

13、RCAP2H-RCAP2L) 式中RCAP2H,RCAP2L为自动重装载值。 当C/T2=1时,选用外部时钟,计数频率为外部时钟频率,其最高频率为fosc/24。 波特率=外部时钟频率/ 65536-(RCAP2H-RCAP2L) 例6-1已知51系列单片机系统晶振频率为11.0592 MHz,选用定时器T1工作模式2做波特率发生器,波特率为2400波特,求初值X。 解:设波特率选择位SMOD=0,则有: X=25611.0592*106(0+1)/(320*2400)=244=F4H 所以,(TH1)=(TL1)=F4H。 系统晶振频率选为11.0592 MHz是为了使初值为整数,从而产生精

14、确的波特率。,63 串行口工作模式 6.3.1 模式0 6.3.2 模式1 6.3.3 模式2 6.3.4 模式3,631 模式0 模式0是同步移位寄存器方式,用于扩展I/口。 模式0以8位为一帧数据,没有起始位和停止位,低位在前、高位在后,其帧格式为: 8位串行数据的输入或输出都是通过RXD端,而TXD端用于送出同步移位脉冲,作为外接器件的同步移位信号。波特率固定为fosc/12。 发送与接收工作过程: 模式0的发送是在TI=0的情况下,由一条写发送缓冲器的指令开始。 例如: MOV SBUF ,A,CPU执行完该指令,串行口即将8位数据从RXD端送出(低位在前),同时,在TXD端发出同步移

15、位脉冲。8位数据发送完毕后,由硬件置位TI=1。可通过查询TI位来确定是否发送完一组数据,TI=1表示发送缓冲器已空;TI=1也可作为中断请求信号,申请串行口发送中断。当要发送下一组数据时,需用软件使TI清0,然后才可发送下一组数据。 模式0的接收是在RI=0和REN=1的条件下,启动串行口接收。接收数据由RXD端输入(低位在前),TXD端仍发出同步移位脉冲。接收到8位数据以后,由硬件使RI=1。可通过查询RI位来确定是否接收到一组数据,RI=1表示接收数据已装入接收缓冲器,可以由CPU用指令读取;RI=1也可作为中断请求信号,申请串行口接收中断。,当CPU读取数据后,需用软件清RI,以准备接

16、收下一组数据。,632 模式1 是串行异步通信方式。TXD为数据发送端,RXD为数据接收端。波特率可变。 一帧数据10位:1位起始位,8位数据位,1位停止位 模式1的发送:在TI=0时,由MOV SBUF,A指令启动。启动发送后,串行口自动地插入一位起始位(逻辑0),接着是8位数据(低位在前),然后又插入一位停止位(逻辑1),在发送移位脉冲作用下,依次由TXD端发出。 一帧信息发完之后,由硬件使TI置1,用以通知CPU可以发送下一帧数据。 模式1发送时的定时信号,也就是发送移位脉冲,是由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值是0还是1)而取得的。,模式1的接收:在REN置

17、1的条件下,串行口采样引脚RXD。 在无信号时,RXD端的状态为1,当采样到1至0的跳变时,确认是起始位“0”,就开始接收一帧数据。在接收移位脉冲的控制下,把收到的数据一位一位地送入输入移位寄存器,直到9位数据全部收齐(包括一位停止位) 当RI=0且停止位为1或者SM2=0时,8位数据送入接收缓冲器SBUF,停止位进入RB8,同时硬件使RI置1; 否则,8位数据不装入SBUF,放弃接收的结果。 模式1接收时,应先用软件清RI或SM2标志。,633 模式2 模式2也是串行异步通信方式。TXD为数据发送端,RXD为数据接收端。 一帧数据11位:1位起始位、8位数据位、1位可编程位、1位停止位,其帧

18、格式为: 模式2的波特率有两种:一种是fosc/32;另一种是fosc/64。 模式2的发送包括9位有效数据,在启动发送之前,应把要发送的第9位数值装入SCON寄存器中的TB8位,(是由用户根据通信协议用软件来设置。) 启动发送:设置好TB8的值以后,在TI=0的条件下,执行一条MOV SBUF,A 指令就可以。 串行口能自动把TB8取出,并装入到第9位数据的位置,逐一发送出去。,发送完毕,由硬件使TI置1。这些过程与模式1基本相同。 模式2的接收与模式1基本相似。不同之处是要接收9位有效数据。在模式1时是把停止位当作第9位数据来处理,而在模式2(或模式3)中存在着真正的第9位数据。因此,接收

19、数据真正有效的条件为: (1) RI=0; (2) SM2=0或收到的第9位数据为1。 第一个条件是提供“接收缓冲器已空”的信息,即CPU已把SBUF中上次收到的数据读走,允许再次写入。 第二个条件则提供了根据SM2的状态和所接收到的第9位状态来决定接收数据是否有效。若第9位是一般的奇偶校验位(单机通信时),应令SM2=0,以保证可靠的接收;若第9位作地址/数据标志位(多机通信时),应令SM2=1,这样。当第9位为1时,表明接收的信息为地址帧,串行口将接收该地址信号。,若上述两个条件成立,接收的前8位数据进入SBUF,以准备让CPU读取,接收的第9位数据进入RB8,同时置位RI。 若以上条件不

20、成立,则这次接收无效,放弃接收结果,即8位数据不装入SBUF,也不置位RI。 634 模式3 模式3同样是串行异步通信方式,其一帧数据格式,接收、发送过程与模式2完全相同,所不同的仅在于波特率。 模式2的波特率只有固定的两种,而模式3的波特率由定时器T1的溢出率及SMOD决定。这一点与模式1相同。,64 串行口应用举例,51系列单片机的串行口基本上是异步通信接口,利用串行口控制寄存器SCON中的有关控制位, 可以实现单机通信、多机通信以及利用串行口来扩展I/O口。,641 用串行口扩展I/O口 串行口的模式0不属于通信, 工作在模式0时可以和外接的移位寄存器结合来进行并行I/O口的扩展。当串行

21、口别无它用时,则可利用串行口模式0来扩展并行I/O口。 优点:这种方法不占用片外RAM地址,而且还能简化单片机系统的硬件结构。 缺点:操作速度较慢。 1扩展并行输出口 在模式0时外接一个串入/并出的移位寄存器,就可以扩展一个8位并行输出口。所用的移位寄存器应该带有输出允许控制端,这样可以避免在数据串行输入时,并行输出端出现不稳定的输出。,采用串入/并出移位寄存器CD4094(也可用74LS164) (1)先对SCON寄存器初始化,进行工作模式设置 模式0的设置:只把00H送入SCON即可。 (2)数据输出: 中断方式:TI=1,产生中断申请, 可采用 中断后才发下一组数据。 查询方式:TI=0

22、,继续查询; TI=1,结束查询,发下一组数据。,STB:输出允许控制端 STB=1,打开输出控制门, 输出,例6-2 用8751串行口外接CD4094扩展8位并行输出口,8位输出端的各位都接一个发光二极管。要求编程实现:发光二极管从左到右以一定延迟轮流点亮,并不断循环。假设发光二极管为共阴极,则电路连接如图6-6所示。,解: 数据的串行发送采用查询方式,显示的延迟由延时程序DELAY实现。编程如下: ORG 0200H BFS0:MOV SCON ,#00H ;串行口模式0的初始化 CLR ES ;禁止串行中断 MOV A ,#80H ;拟先点亮最左边一位 LOOP:CLR P1.0 ;关闭

23、并行输出 MOV SBUF ,A ;数据送SBUF,启动串行输出 JNB TI ,$ ;查询TI=0,未发送完等待 SETB P1.0 ;TI=1,发送完启动并行输出 ACALL DELAY ;调延时程序 CLR TI ;软件清TI RR A ;右移一位,准备显示下一位 SJMP LOOP ;转移,继续发送 RET,2、扩展并行输入口: 在模式0时,外接一个并入/串出的移位寄存器,就可以扩展一个8位并行输入口。 如图外接一个并入/串出的移位寄存器CD4014(也可用74LS165) 数据输入: 中断方式:RI=1,产生中断申请, 可采用 中断后才读取数据。 查询方式:RI=0,继续查询; RI

24、=1,结束查询,读取数据。,例6-3 用8751串行口外接CD4014扩展8位并行输入口,输入数据由8个开关提供,另有一个开关S提供联络信号,电路连接如图6-7所示。当S=0时,要求输入数据,并连续输入8组数据,读入的数据转存到内部RAM 40H开始的单元中。试编程实现。 解 : 用串行口模式0接收数据,初始化时应使REN为1,采用查询方式输入数据。,ORG 0300H BJS0:JB P1.0 ,LP2 ;开关K未闭合,转返回 MOV R6 ,#08H ;K闭合,读入次数送R6 MOV R1 ,#40H ;存放数据的首地址送R1 CLR ES ;禁止串行中断 MOV SCON ,#10H ;

25、设模式0,RI清0,启动接收 LP: SETB P1.1 ;P/S=1,并行置入开关数据 CLR P1.1 ;P/S=0,开始串行 LP1:JNB RI,LP1 ;查询RI,RI=0,未接收完等待 CLR RI ;接收完,清RI,准备接收下一个 MOV A ,SBUF ;读取数据送入累加器 MOV R1 ,A ;送内部RAM区 INC R1 ;修改地址,指向下一个单元 DJNZ R6 ,LP ;计数器减1,不为0,转继续接收 LP2:RET ;接收完,子程序返回,642 单片机双机通信技术 双机通信也称为点对点的异步通信。 进行双机通信时,是通过双方的串行口进行,其串行接口的硬件连接方式有多种

26、,应根据实际需要进行选择。 1串行接口的硬件连接 (1)TTL电平信号直接传输 当通信双方传输距离近时(小于5 m),可以采用单片机自身的TTL电平直接传输信息,这时双方的串行口可以直接连接,如图6-8所示。,(2) RS-232C电平信号传输 当通信双方距离较近时(15 m),可采用RS-232C 电平信号传输。RS-232C通信接口是一种标准的串行接口,在电气特性上RS-232C采用负逻辑: 它规定 逻辑“1”:-5V-15V 逻辑“0”:+5V+15V 单片机信号是TTL电平 逻辑“1”:大于+2.4V 逻辑“0”:小于+0.4V 显然,RS-232信号电平与TTL电平不匹配,为了实现二

27、者的连接,必须进行电平转换。一般采用专用芯片: MC1488:长线传输驱动器,完成TTLRS-232转换, MC1489:长线传输接收器,完成RS-232TTL转换。 MAX232:能完成发送转换和接收转换的双重功能。 单一+5V供电,内置自升压电平转换电路,专用芯片MAX232。一个芯片内含2个接收器和2个发送器,故可以同时完成发送转换和接收转换。 其引脚及连接如图所示, 引脚功能说明如下: (1)C1+,C1-,C2+,C2-:外接电容端; (2)R1in,R2in:2路RS-232C电平输入端。可接传 输线;,(3) R1out,R2out :2路转换后的TTL电平输出端。可送单片机的R

28、XD端; (4)T1in,T2in:2路TTL电平输入端。可接单片机的TXD端; (5) T1out,T2out :2路转换后的RS-232C电平信号输出端。可接传输线; (6)V+,V-:分别经电容接电源和地 两个单片机之间双机通信,采用MAX232 进行电平转换,其硬件连接方法如图所示。 采用双绞线,传输速率小于20kbit/s,8031与终端的接收,电平转换采用MC1488、MC1489 (3)RS-422A、RS-485电平信号传输 当通信双方距离较远时(大于15 m以上),可采用RS-422或RS-485C串行标准进行数据传输。 RS-422A和RS-485C标准都是采用双线差分信号

29、传输,能更有效地抑制远距离传输中的信号干扰。,优点: 传输速率快,传输距离远 总线驱动能力和抗干扰能力强 有的电平转换带三态控制,可实现总线缓冲隔离 传输距离100m,速率1Mbit/s以上 传输距离1000m,速率100kbit/s以上 加中继器后传输距离更远 RS-422A与TTL电平转换常用的芯片 传输线驱动器:SN75174、MC3487、MAX1480 传输线接收器:SN75175、MC3486、MAX1481 为增加通信距离,减小通道及电源干扰,可以在通信线路上采用光电隔离技术。 见图6-11。,图6-11,在图6-11中,发送方的数据由串行口TXD端输出,通过74LS04反相驱动

30、后,经光电耦合器至平衡差分长线驱动器SN75174的输入端,SN75174将输入的TTL信号变换成符合RS-422A标准的差动信号输出,经传输线(双绞线)将信号传送到接收端。 接收方通过平衡差分长线接收器SN75175将RS-422A接口信号转换成TTL电平信号,通过反相驱动后,经光电藕合到达接收方串行口的接收端RXD。 图6-11中每个通道的接收端都有3个电阻R1、R2、R3,其中R1为传输线的匹配电阻,取值范围在1001 k之间,其他2个电阻是为了解决第一个数据的误码而设置的匹配电阻。 还有一点值得注意,光电偶合器必须使用两组独立的电源,方能起到隔离、抗干扰的作用。,2双机通信软件设计 为

31、确保通信成功,通信双方必须在软件上有一系列的约定,通常称为软件协议。 本例规定双机通信的软件协议如下: (1) 甲、乙双方均工作在模式3; (2) 采用定时器T1工作在模式2做波特率发生器,波特率为2400 波特,当系统晶振为6 MHz时,计数初值为F3H,SMOD=1; (3) 发送方是把片内RAM 50H5FH单元中的数据块从串行口输出。接收方则把接收的数据块存入片外RAM 2000H200FH单元中; (4) 甲、乙双方使用偶校验,发送方通过对TB8置1或置0来保证发送偶数个“1”,接收方接收到有效数据(8位数据加RB8)后,要判断是否为偶数个“1”,若为偶数1,表明接收正确,置F0标志

32、为0,否则,接收出错,置F0标志为1,然后返回;,(5) 甲、乙双方均可发送和接收,并且双方均采用查询方式接收和发送数据。 1)编写发送子程序 首先应对串行口进行初始化编程:主要是设置定时器T1的工作模式、装载初值,以满足波特率的要求;确定串行口的工作模式及控制设置。 Sout:MOV TMOD,#20H ;设置定时器T1为模式2 MOV TL1,#0F3H ;送入波特率的初值 MOV TH1,#0F3H SETB TR1 ;启动定时器T1 MOV SCON,#0D0H ;设串口模式3,允许接收 MOV PCON。#80H ;设SMOD=1,MOV R0,#50H ;发送数据首地址送R0 MO

33、V R7,#10H ;数据块长度送R7 TRS:MOV A,R0 ;取数据送A MOV C,P ;奇偶标志P送C MOV TB8,C ;根据P标志设置TB8(偶校验) MOV SUBF,A ;数据送SBUF,启动发送 WAIT:JBC TI,CONT ;查TI=1,发送完则转,清TI SJMP WAIT ;TI=0未发送完,等待 CONT:INC R0 ;修改数据地址 DJNZ R7,TRS ;一组数据未发送完,继续 RET ;发送完,子程序返回,2)编写接收子程序 Sin:MOV TMOD,#20H ;设置定时器T1为模式2 MOV TL1,#0F3H ;送入波特率的初值 MOV TH1,#

34、0F3H SETB TR1 ;启动定时器T1 MOV SCON,#0D0H ;设串口模式3,允许接收 MOV PCON,#80H ;设SMOD=1 MOV DPTR,#2000H ;送存放数据首地址 MOV R7,#10H ;数据块长度送R7 WAIT:JBC RI,READ ;查RI=1一帧接收完,则转, 同时清RI SJMP WAIT ;RI=0未接收完,等待 READ:MOV A,SBUF ;读入一帧数据 JNB P,PZ ;奇偶位P为0则转 JNB RB8,ERR ;P=1时,查RB8=0,则出错, 转出错处理,SJMP YES ;P=1时,查RB8=1,则正确, 转正确处理 PZ:J

35、B RB8,ERR ;P=0,查RB8=1,则出错, 转出错处理; YES:MOVX DPTR,A ;P=0,且RB8=0,则正确,存放数据 INC DPTR ;修改存放数据的地址 DJNZ R7,WAIT ;一组数据未接收完,继续 CLR PSW.5 ;接收完,置接收正确标志 RET ;子程序返回 ERR:SETB PSW.5 ;置出错标志 RET ;子程序返回 说明: 上述程序是在模式3下进行收发,双方约定偶校验,若约定奇校验,发送和接收程序稍加修改即可。,下面介绍在模式1下进行的双机通信,用累加校验和进行校验的编程方法 此例规定通信协议和握手信号如下: (1) 甲、乙双方均采用串行口模式

36、1; (2) 采用定时器T1工作在模式2做波特率发生器,波特率为2400 波特,当系统晶振为6 MHz时,计数初值为F3H,SMOD=1; (3) 发送方是把片内RAM 50H6FH单元中的数据块从串行口输出。接收方则把接收的数据块存入片外RAM 2000H201FH单元中;,(4) 甲、乙双方使用累加和进行校验。即发送方每发送一个数据求一次“累加和”,一组数据发完后,将所求的“累加和”作为“校验和”发送给接收方。接收方每接收到一个数据也求一次“累加和”,所有数据接收完,将所求的“累加和”与接收到的“校验和”相比较,如相等,说明正确;否则,说明出错。 (5) 甲机发送数据,乙机接收数据。甲机发

37、送时,先发送一个呼叫信号“A1”,乙机收到后回答一个“B1”的应答信号,表示同意接收。甲机只有收到应答信号“B1”后才开始发送数据。乙机接收数据,若接收正确,向甲机回发“00H”,否则回发“0FFH”,请求重发。甲机收到“00H”的回答后结束发送。否则重新发送数据。 程序框图如图6-12所示。,甲机发送程序清单如下。 ORG 1000H A1S:MOV TMOD,#20H ;设置定时器T1为模式2 MOV TL1,#0F3H ;送入波特率的初值 MOV TH1,#0F3H SETB TR1 ;启动定时器T1 MOV SCON,#50H ;设串口模式1,允许接收 MOV PCON。#80H ;设

38、SMOD=1 AT1:MOV SBUF,#0A1H;发呼叫信号“A1” AS1:JBC TI,AR1 ;判是否发送完 SJMP AS1 ;未完等待 AR1:JBC RI,AR2 ;发送完,接收乙机回答 SJMP AR1 AR2:MOV A,SBUF ;读取乙机回答信号到A中 XRL A,#0B1H ;检测回答信号是否为“B1” JNZ AT1 ;不是,转继续呼叫,AT2:MOV R0,#50H ;是“B1”, 数据首地址送R0 MOV R7,#20H ;数据块长度送R7 MOV A ,#00H ;累加和单元清0 AT3:MOV SBUF,R0 ;发送一个数据 ADD A,R0 ;求累加和 IN

39、C R0 ;地址指针加1 AS2:JBC TI,AT4 ;判一帧是否发送完 SJMP AS2 ;未完等待 AT4:DJNZ R7,AT3 ;数据块未发送完,转发送 MOV SBUF, A ;数据块发送完,发校验和 AS3:JBC TI,AR3 ;判是否发送完 SJMP AS3 ;未完等待 AR3: JBC RI,AR4 ;发送完、接收乙机的回答,SLMP AR3 AR4:MOV A,SBUF ;读取乙机回答信号到A中 JNZ AT2 ;结果不为0,接收出错,转重发 RET ;结果为0,接收正确,子程序返回 乙机接收程序清单: ORG 2000H B1R:MOV TMOD,#20H ;设置定时器T1为模式2 MOV TL1,#0F3H ;送入波特率的初值 MOV TH1,#0F3H SETB TR1 ;启动定时器T1 MOV SCON,#50H ;设串口模式1,允许接收 MOV PCON。#80H ;设SMOD=1 BR1:JBC RI,BR2 ;等待接收甲机的呼叫信号 SJMP BR1,BR2:MOV A,SBUF ;读取呼叫信号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论