1、第7章 MCS-51的串行口,7.0 概述,7.1 串行口的结构,7.2 串行口的工作方式,MCS-51 单片机内部集成了一个全双工异步通信串行口,1、并行通信和串行通信,7.0 概述,异步方式:双方只有数据线而没有时钟线。双方都以自己的时钟源控制发送和接收的速率,以字符为单位进行数据传送,每一个字符均按固定的字符格式传送,又被称为帧。,2、异步方式和同步方式,注意:由于通讯双方系统时钟往往不同,所以在异步通信中, 要想保证通信的成功必须保证两点: 通信双方必须保持相同的传送、接收速率(波特率); 双方必须遵守相同的数据格式(字符帧)。,优点:是不需要传送同步脉冲,可靠性高,所需设备简单; 缺点:是传输速率低(增加起始位和停止位)。,同步方式:,在物理结构上,通信双方除了通信的数据线外还增加了一个通信用的“时钟传输线clock”。由主控方提供时钟信号clock。 由于有了时钟信号来“同步”发送或接收操作,所以被传送的数据不再使用“起始位”和“停止位”,因而提高了传送速度。因此同步通信常被用于系统内部各芯片之间的接口设计。 由于同步通信多了一条“时钟线”,因此不太适合远距离的通信。,优点
2、是数据传输速率较高; 缺点是要求发送时钟和接收时钟保持严格同步。,3、串行通信工作方式,单工,A 发,B 收,半双工,A 发 收,B 收 发,广播电台 收音机,对讲机,全双工,A 发 收,B 收 发,电话机,例:异步串行通信的数据传送的速率是120字符/秒,而每个字符规定包含10位( 1个起始位、8个数据位、1个停止位)数字,则传输波特率为: 120字符/秒 10位/字符=1200位/秒= 1200bps,4、波特率,用于表征串行通信速率的参数称为“波特率”; 波特率是指每秒钟传送二进制的位数; (发送一个二进制位的时间的倒数) 波特率的单位为:位/秒(bit / s);波特(Baud)。 波特率取值范围一般为: 0 115200 bit/s。影响波特率的 主要因素取决于传输线的分布电容、通信电平标准和传送距离;,TTL电平、RS-232、RS-485等通信标准。,5、串行通信的电平标准,TTL电平(05V):1.5米以内。 RS-232标准(+12V-12V):15米之内。 RS-485标准(差分输入输出):1200米以上。,TTL电平: 逻辑1:5V 逻辑0:0V RS-232标准
3、:逻辑1:-3-15V 逻辑0:+3V+15V RS-485标准:逻辑1:+(26)V 逻辑0:-(26)V,MCS-51单片机的异步串行通讯应用示意图,MCS-51 TXD (甲) RXD,RXD MCS-51 TXD (乙),单片机甲、乙之间近距离的直接通讯,异步串行UART、同步串行USRT总线接口; SPI(Micro wire)总线接口 -同步外设接口(SPI)是由摩托罗 拉公司开发全双工同步串行总线。 I2C总线接口-由PHILIPS公司开发的两线式串行总线。 1-Wire总线接口-是 Maxim 子公司达拉斯半导体的专利技术,采 用单一信号线, CAN总线接口 - 1986 年德国电气商博世公司开发出面 向汽车的CAN 通信协议 ; USB总线接口-是由Intel、 Compaq、Digital、IBM、 Microsoft、NEC、Northern Telecom等7家 世界著名的计算机和通信公司共同推出。,6、当前嵌入式系统流行的串行接口,4种工作方式如何设置 波特率如何设置,7.1 串行口的结构,一、串行口的结构图:,CPU如何查知已发完或已接收完数据 如何发送和接
4、收数据,P3.0,P3.1,P3.5,P3.4,P3.2,P3.3,IT0,IT1,2、SCON:串行口控制寄存器 98H,3、PCON:波特率加倍寄存器 87H,1、SBUF:串行发送 / 接收数据缓冲器 99H,4、IE:中断允许寄存器 A8H,发送,接收,5、IP: 中断优先级寄存器,B8H,1、SBUF 串行发送 / 接收数据缓冲器 99H,SBUF 串行发送 / 接收数据缓冲器是两个独立的物理单元, 共用一个地址(99H),可同时收、发数据。,指注:向发送缓冲器SBUF写入数据即可发送数据; 从接收缓冲器SBUF读出数据即可接收数据。,发送SBUF,接收SBUF,MOV SBUF,A ;启动一次数据发送,MOV A,SBUF ;完成一次数据接收,二、特殊功能寄存器,TI :发送中断标志,发送一帧结束,TI=1,必须软件清零 RI :接收中断标志,接收一帧结束,RI=1,必须软件清零,RB8:方式1中放停止位,方式2、3中放接收的第九位数,REN:允许接收控制位,软件置位或清零,SM2:多机通信控制位(常与RB8配合,决定是否激活RI),SM0、SM1:工作方式选择位(四种工作
5、方式),00:方式0,8位同步移位寄存器,其波特率为fosc/12; 01:方式1,10位UART,其波特率为可变,由定时器控制; 10:方式2,11位UART,其波特率为fosc/64或fosc/32; 11:方式3,11位UART,其波特率为可变,由定时器控制。,2、 SCON:串行口控制寄存器 98H,TB8:将要发送的第九位数, 在执行 MOV SBUF ,A 指令之前 要事先将TB8设定好;双机通信作校验位,多机通信作地 址/数据标识位。,3、 PCON: 波特率加倍寄存器 87H,SMOD:串行口波特率倍增位 1:串行口波特率加倍。 0:串行口波特率不变,系统复位时默认为SMOD=0。,(1)当CPU执行:MOV SBUF,A 指令后,便发送一帧数据。,1、利用发送标志 TI (SCON.1)控制数据的发送操作,思考(1) CPU如何发送数据? (2)CPU如何知道已发送完一帧数据?,方案一:使用查询的方式对TI进行检测: JNB TI,$ ;如果TI1 则等待 CLR TI ;清楚标志位 MOV SBUF,A ;TI=1时发送下一个数据 方案二:如果系统中断是开放的,则T
6、I=1会自动引发中断。 CLR TI ;清楚标志位 MOV SBUF, A ;在中断程序中发送下一个数据;,(2)当完成一帧数据的发送后,TI=1,有两种方案可以知 道已发完一帧数据。,三、接收和发送操作,2、利用接收标志 RI (SCON.0)控制数据的接收操作,(1)当SUBF从RXD引脚接收完一个完整的数据帧时RI=1,思考(1)CPU如何知道已接收完一帧数据? (2)CPU如何处理接收的数据?,(2)CPU可以使用两种方案来处理接收的数据:,方案一:CPU采用查询RI来控制数据的读取。 JNB RI,$ ;如果RI1 则等待 CLR RI ;清楚标志位 MOV A,SBUF ;RI=1时,取SBUF中数据送A。 方案二:如果中断是开放的,则RI=1时会自动引发中断。 CLR RI MOV A,SBUF ; 中断方式接收数据;,1、 波特率:固定为fosc / 12 2、 数据格式:一帧信息8位 RXD :接收、发送数据端,接收/发送完,置位RI / TI , (SM2 = 0) TXD :产生同步移位脉冲,7.2 串行口的工作方式,一、方式0:同步移位寄存器输入输出方式,串行口
7、方式0的时序,思考: 1、如何启动发送过程? 2、如何知道发送完毕? 2、多长时间移一位?,思考: 1、如何启动接收过程? 2、如何知道接收完毕? 2、多长时间接收一位?,接收条件: TI=0, 置位 REN=1,发送条件:TI=0,3、方式0的应用:扩展并行输入输出口,CB: MOV R7,#0AH MOV R0,#50H MOV SCON ,#00H SEND1: MOV A,R0 MOV SBUF ,A,WAIT: JNB TI,WAIT CLR TI INC R0 DJNZ R7, SEND1 RET,例:将以50H为首地址的10个单元中数据由串口送出。,CB:MOV R7,#05H MOV R0,#30H RE1: MOV SCON ,#10H WAIT: JNB RI,WAIT CLR RI MOV A,SBUF MOV R0 ,A,INC R0 DJNZ R7,RE1 RET,例:从扩展口读入5个数据,存到内部RAM以30H开始的单元中。,1、波特率:(2SMODT1的溢出率)/ 32 ,可变。 2、 数据格式: 一帧信息10位。,发送,接收,送 RB8,当接收到数据后,
8、必须同时满足以下两个条件,接收才真正有效: REN = 1,RI = 0 SM2 = 0 或接收到的停止位为1。 此时,数据装载SBUF, RI置1 ,停止位进入RB8。,二、方式1:波特率可变的10位异步通信方式,注意:何时开始接收信息? 检测到起始位的负跳变时,开始接收。,1、波特率:(2SMODfosc)/ 64 ,固定。 2、一帧信息11位。,发送,发送完数据置位TI。,接收,接收到有效数据完毕,置位RI的条件: REN = 1,RI = 0 且SM2 = 0或接收到第9位数据为1, 此时,数据装载SBUF,RI置1,第9位数据(TB8)送入 RB8。,送RB8,三、方式2:固定波特率的11位异步接收/发送方式,串行口方式2、3的时序,1、波特率:(2SMODT1的溢出率)/ 32 ,可变,同方式1。 2、一帧信息11位。,四、方式3:可变波特率的11位异步接收/发送方式,方式0:波特率固定为fosc/12。 方式2:波特率由PCON中的选择位SMOD来决定,可由下式表示: 波特率=(2SMOD/64)fosc 方式1和方式3:波特率是可变的,由定时器T1的溢出率控制。 波特率
9、=(2SMOD/32)定时器T1溢出率 T1溢出率=T1计数率/产生溢出所需的周期 =(fosc/12)/(28TC),五、串行口的通信波特率,例:设晶振fosc为11.0592MHz,选定定时器工作方式2,SMOD=0 求:4800bps、9600bps时的初值 。 解:定时器方式2的初始值X的公式经过推导可得到,在实际应用时,通常是先确定波特率,后根据波特率求T1定时 初值.,故: X1=256(11.05921)/(3844800)= FAH X2 =256(11.05921)/(3849600)=FDH,7.3 串行口的应用,使用串行口的步骤: 1、通信双方的硬件连接 2、制定通信协议 工作方式、波特率、数据格式、效验方法等。 3、主程序 串行口中断入口处理 串口初始化:SCON PCON T1工作方式及初值、IE、IP 4、中断服务程序,一、串口方式0的应用,例:用8051串行口外接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,要求发光二极管呈流水灯状态(轮流点亮)。 方案一:采用查询TI决定是否发送下一帧数据 方案二:采用中断决定是否发送下一帧数据,RR A CLR P1.0 SJMP OUT0 DELAY: MOV R7, #250 D1: MOV R6, #250 D2: DJNZ R6, D2 DJNZ R7, D1 RET END,ORG 0000H START: MOV SCON, #00H MOV A, #80H CLR P1.0 OUT0: MOV SBUF, A OUT1: JNB TI, OUT1 CLR TI SETB P1.0 ACALL DELAY,P3.0 RXD,P3.1 TX
《东北石油大学测控单片机幻灯片第七章串行通信ppt08》由会员F****n分享,可在线阅读,更多相关《东北石油大学测控单片机幻灯片第七章串行通信ppt08》请在金锄头文库上搜索。