340 likes | 525 Views
知识点:. 串行异步通信的工作方式. 串行异步通信的帧格式. 串行异步通信的控制. 串行异步通信的波特率. 问题的提出. 单片机的应用已从单机应用发展成多机应用,解决多机互连的核心问题是单片机之间的通信。它们之间的通信有两种基本的通信方式:串行通信和并行通信。 直接用两块单片机的四个并行口中的一个并行口进行数据的传输称为并行通信;用两块单片机的TXD,RXD进行数据传输称为串行通信。. 什么是串行通信?. 计算机 1 GND. 发送. 计算机 2 GND. TXD
E N D
知识点: 串行异步通信的工作方式 串行异步通信的帧格式 串行异步通信的控制 串行异步通信的波特率
问题的提出 单片机的应用已从单机应用发展成多机应用,解决多机互连的核心问题是单片机之间的通信。它们之间的通信有两种基本的通信方式:串行通信和并行通信。 直接用两块单片机的四个并行口中的一个并行口进行数据的传输称为并行通信;用两块单片机的TXD,RXD进行数据传输称为串行通信。
什么是串行通信? 计算机1 GND 发送 计算机2 GND TXD RXD GND RXD TXD GND 接收 并行通信 串行通信 并行通信:数据的各位同时传送; 串行通信:数据一位一位顺序传送。 串行通信和并行通信
在并行通信中,一个并行数据占多少位二进制数,就需要多少根传输线。这种方式的特点是通信速度快,但传输线多,成本高,只适合近距离传送信息,一般通信距离应小于30米。 在并行通信中,一个并行数据占多少位二进制数,就需要多少根传输线。这种方式的特点是通信速度快,但传输线多,成本高,只适合近距离传送信息,一般通信距离应小于30米。 串行通信仅需一到两根传输线,故在长距离传送数据时,比较经济。但由于它每次只能传送一位,所以,传送速度较慢。 例如:如果一个8位二进制数据用并行通信传送所需时间为T,用串行同步通信所需时间约为8T,而用串行异步通信所需时间大于8T。
各种通信方式的比较 并行通信:8位数据在1个时钟作用下同时送出 优点:方法简单、速度快 缺点:费用高、只适合短距离 串行同步通信:通信双方由同一时钟,经同步字符引导后,8位数据分别在8个时钟作用下逐位送出。与串行异步通信相比较 优点:方法简单、速度略快 缺点:需要同一时钟 串行异步通信:通信双方约定按帧传送数据,需要10个以上的时钟作用下才能将8位数据送出。与串行同步通信比较 优点:无需同一时钟 缺点:方法复杂、速度略慢 比较结果:串行异步通信更优,本章重点介绍
A站 B站 单工通信 发送器 接收器 ( a ) 发 发 发 收 收 收 收 发 A站 B站 A站 B站 ( b ) ( c ) 串行通信的分类:异步(Asynchronous Communication) 同步(Synchronous Communication) 串行通信制式:单工(a)、半双工(b)和全双工(c) (simplex half duplex full duplex)
串行异步通信 • 起始位“0”信号用来通知接收设备一个待接收的字符开始到来。线路上在不传送字符期间应保持为“1”。接收端不断检测线路的状态,若连续为“1”以后又测到一“0”,表示发来了一个新字符,应马上准备接收 • 奇偶校验位:为了防止接收错误数据特意安排的校验位。在通信中也可以用这一位是“0”或“1”来确定这一帧中的字符所代表的信息是地址或数据。 • 停止位用来表征字符的结束,它一定是高电位“1”,停止位可以是l位(常用)、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一个字符做好准备 • 起始位后面紧接着是数据位,它可以是5位(DO~D4)、6位、7位或8位(DO~D7) 串行通信有两种基本通信方式,即异步通信和同步通信。 1. 异步通信 在异步通信中,数据或字符是分为一帧一帧地传送。在帧格式中,一个字符由四个部分组成: 起始位、数据位、奇偶校验位和停止位。
MCS-51串行接口寄存器 • SBUF——串行口数据缓冲器 • 共两个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。 • SCON——串行口控制寄存器 • PCON——电源及波特率选择寄存器
控制寄存器SCON SM0 9FH SM1 9EH SM2 9DH REN 9CH TB8 9BH 9AH RB8 TI 99H 98H RI 接收中断标志 工作方式选择 发送中断标志 多机通信控制位 允许串行接收位 接收数据的第9位 发送数据的第9位
串行方式的定义 工作方式 功能 波特率 0 0 方式0 8位同步移位寄存器 fosc/12 0 1 10位UART 可变 1 0 方式2 11位UART fosc/64或fosc/32 1 1 方式3 11位UART 可变 SM0 SM1 方式1 例:设串行口工作在方式1,允许接收,则指令为: MOV SCON,#01010000B
电源及波特率选择寄存器PCON SMOD × × × GF1 GF0 PD IDL 87H 串行通信只用该位,为1时,波特率×2;为0时不变。
串行口四种工作方式应用比较 • 方式的选择由SM1、SM0实现。
方式0 在方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口。 方式0用于扩展I/O口输出
方式1 串行口为波特率可变的10位通用异步接口UART。每发送或接收的一帧信息中,包括1位起始位0,8位数据位和1位停止位1。 10位的帧格式
方式2 串行口为11位UART,传送波特率与SMOD有关。发送或接收的一帧数据中包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。 11位的帧格式
方式3 方式3为11位UART通信方式,除了波特率可变以外,方式3和方式2完全相同。 11位的帧格式
8051串行口的波特率 • 在方式2中,波特率取决于PCON中的SMOD值: • 当SMOD=0时,波特率为fosc/64; • 当SMOD=1时,波特率为fosc/32.即波特率 = 。 SMOD 2 f osc 64 1.方式0和方式2的波特率是固定的 • 在方式0中,波特率为晶振频率的1/12,即fosc/12,固定不变 方式0发送数据的时钟将fosc经12分频获得 方式2的发送数据的时钟是将fosc经过32或64分频(由SMOD位决定)获得
2. 方式1和方式3的波特率可变,由定时器1的溢出率决定 方式1和方式3的发送数据的时钟由定时器T1的溢出提供,并且将T1的溢出信号经过16或32分频(由SMOD位决定),所以它们的波特率与T1的定时初值密切相关。
思考题 串行通信的方向分为3类。即单工、半双工、全双工 数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位/秒。 FCH 1、串行通信的方向分为哪几类? 2、串行异步通信的帧格式是怎样的? 3、波特率的含义是什么? 4、串行异步通信的波特率要求7.8K时,若SMOD=0,T1的定时初值应该是多少?(查表)
思考题 在方式0下,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。其作用相当于同步移位寄存器。 SMOD的状态(1、0)、T1的溢出率、晶振频率fosc 查表可知,当SMOD=1时方式1和方式3对应的定时器T1的初值均为FFH。 5、为什么说串行通信的方式0是一个移位寄存器? 6、方式1、方式2、方式3的波特率与哪些参数有关? 7、 当fosc= 12MHz、串行通信工作分别工作在方式1和方式3,定时器T1的初值应为多少?(查表)
串行口应用举例 两片74LSl65扩展两个8位并行输入口的实用电路。74LSl65是可并行置入的8位移位寄存器 当移位/置入端S/L 由“1”变为“0”时,并行输入端的数据被置入各寄存器 当S/L =“1”,,且时钟禁止端(15脚)为低时,在时钟脉冲的作用下,数据由QA向QH方向移动,图中SIN为串行输入端 利用串行口工作方式0扩展I/O口 当单片机系统为单机使用时,串行口别无它用,就可用来扩展并行I/O口,这种方法不占用片外RAM地址,而且还能简化单片机系统的硬件结构。但缺点是操作速度较慢、扩展芯片越多。 例1、
下面的程序是从16位扩展口读入10组数据(每组2个字节),并把它们转存到内部RAM 40H开始的单元。 ORG 1000H MOV R6,#0AH ;设置读入组数 MOVRl,#40H ;设片内RAM指针 RCV0: CLR P l.0. ;并行置入数据 SETBP l.0 ;允许串行移位 MOV R0,#02H ;设置每组字节数
RCV1: MOV SCON,#10H ;设工作方式0,并启动接收 WAlT: JNB RI,WAIT ;未接收完一帧数据,等待 CLR RI ;清接收中断标志,准备下次 接收 MOV A,SBUF ;读入数据 MOV @R1,A ;送内部RAM区 INC R1 ;指向下一个地址 DJNZ R0,RCV1 ;若未读完一组继续 DJNZ R6,RCV0 ;预定的字节数读完否,未完 继续 END ;读完,结束
在CLR=0的作用下,两个74LS164将16位数据从这里送出。在CLR=0的作用下,两个74LS164将16位数据从这里送出。 RXD:在时钟的作用下,将输出缓冲器的数据逐位移入74LS164 TXD:提供移位脉冲(该脉冲的周期就是单片机的机器周期),将输出缓冲器的数据逐位移入74LS164 当16位数据各就各位后,CLR端提供一个“0”信号,74LS164将16位数据送出。即:16位数据移位到74LS164后,P1.0输出“0”信号 例2、用74LS164扩展并行输出口 74LS164是8位串入并出移位寄存器,由于其无输出控制端,故在串行输入过程中,输出端会不断地变化,所以,一般应在74LS164和输出 装置之间加接输出控制门,以保证串行输入结束后再输出数据。
下面的程序将内部RAM区中20H和21H单元的内容经串行口由74LS164并行送出。下面的程序将内部RAM区中20H和21H单元的内容经串行口由74LS164并行送出。 ORG 2000H START: MOV R6,#02H ;设置发送字节数 MOV R0,#20H ;设置片内RAM指针 MOV SCON,#00H ;设置串行口方式0 SEND: MOV A,@R0 MOV SBUF,A ;启动串行口发送 WAIT: JNB TI,WAIT ;未发送完一帧,等待 CLR TI ;清发送中断标志 INC R0 ;取下一个数 DJNZ R6,SEND ;判是否发送完 CLR P1.0;送出16位数据 END
例3、用串行口进行异步单工通信 发送 TXD RXD计算机1 GND RXD TXD计算机2 GND 接收 串行通信 编程把片内40H~4FH单元中的数据串行发送 串口定义为工作方式2(11位),TB8作为奇偶校验位,在数据写入发送缓冲器之前,先将数据的奇偶位写入TB8,这时,第9位数据作为奇偶校验用。
程序清单 MOV SCON,#80H ;设定工作方式2 MOV PCON,#80H ;波特率为focs/32 MOV R0,#40H ;设片内指针 MOV R2,#10H ;数据长度送送R2 LOOP:MOV A,@R0 ;取数据送A MOV C,P ;奇偶位送TB8 MOV TB8,C MOV SBUF,A ;启动发送 WAIT:JBC TI,CONT ;判发送中断标志 SJMP WAIT CONT:INC R0 DJNZ R2,LOOP
发送 TXD RXD计算机1 GND RXD TXD计算机2 GND 接收 串行通信 串行接收 用工作方式2编制一个串行口接收程序,核对奇偶校验位,并进行接收正确和接收错误的判断和处理。
程序清单 MOV SCON,#90H ;工作方式2,并允许接收 LOOP:JBC RI,READ ;等待接收数据并将RI清0 SJMP LOOP READ:MOV A,SBUF ;读入一帧数据 JB PSW.0,ONE ;判接收端奇偶 JB RB8,ERR ;判发送端奇偶 SJMP RIGHT ; ONE: JNB RB8,ERR ; RIGHT:…;接收正确 ERR: …;接收错误
思考题 扩充I/O接口 异步单工通信只能单方发送或接收 异步双工通信在发送的同时可以接收或接收的同时可以发送。 1、方式0主要应用在什么场合? 2、异步单工通信的特点是什么? 3、比较异步单工通信与异步双工通信的主要特点。