单片机UART串行接口_第1页
单片机UART串行接口_第2页
单片机UART串行接口_第3页
单片机UART串行接口_第4页
单片机UART串行接口_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 UART串行接口 串行通信是CPU与外界交换信息的一种基本通信方式。为了实现串行通信,绝大多数单片机都配置了UART串行接口。 71串行通信信概述计算机与与外界的的信息交交换称为为通信。基本的的通信方方式有两两种。并行通信信(parallelcommunication):所传送数数据的各各位同时发送或接接收。串行通信信(serialcommunication):所传送数数据的各各位按顺序一位一位位地发送送或接收收。在并行通信信中,一个个并行数数据占多多少位二二进制数数,就要要多少根根传输线线,这种种方式的的特点是是通信速度度快,但传输线多多,价格较贵贵,适合近距离传输。串行通信信仅需1

2、2根传输线线,故在在长距离传输数据据时比较较经济,但由于于它每次次只能传传送1位,所以以传送速度度较慢。图7.1基本通信信方式图图示711同步通信信和异步步通信方方式串行通信信分同步和异步两种方式式。1异步通通信ASYNC在异步通通信中数数据或字字符是逐逐帧(frame)传送的。帧定义为为一个字字符的完完整的通通信格式式,通常常也称为为帧格式式。最常常见的帧帧格式一一般是先先用一个个起始位位“0”表示字符符的开始始;然后后是58位数据,规定低低位在前前,高位位在后;其后是是奇偶校校验位;最后是是停止位位,用以以表示字字符的结结束,停停止位可可以是1位、1.5位、2位,不同同的计算算机规定定有所

3、不不同。从从起始位位开始到到停止位位结束就就构成完完整的1帧。起始位通信线上上没有数数据传送送时,为为高电平平(逻辑辑1);当要要发送数数据时,首先发发1个低电平平信号(逻辑0),此信信号称为为“起始始位”,表示开开始传输输1帧数据。数据位起始位之之后的位位即数据据位。数数据位可可以是5、6、7或8位(不同同计算机机的规定定不同),上图图的数据据位为8位。一般般从最低低位开始始传送,最高位位在最后后。奇偶校验验位数据位之之后的位位为奇偶偶校验位位(有的的方式具具有)。此位可可用于判判别字符符传送的的正确性性,其有有3种可能的的选择,即奇、偶、无无校验,用户可可根据需需要选择择(在有有的格式式中

4、,该该位可省省略)。在80C51单片机中中,此位位还可以以用来确确定该帧帧字符信信息的性性质(地地址或数数据)。停止位校验位后后为停止止位,用用于表示示1帧结束,用高电电平(逻逻辑1)表示。停止位位可以是是1、15或2位,不同同计算机机的规定定有所不不同。异步通信信的主要要特点如如下:进行串行行通信的的单片机机的时钟钟相互独独立;其其时钟频频率可以以不相同同;在通通信时不不要求有有同步时时钟信号号。由于于异步通通信是逐逐帧进行行传输的的,各位位之间的的时间间间隔应该该相同,所以必须保证证2个单片机机之间有有相同的的传送波波特率。如果传送送波特率率不同,则时间间间隔不不同;当当误差超超过5时,就

5、就不能正正常进行行通信。由于信信息传输输可以是是随时不不间断地地进行的的,因而而帧与帧帧之间的的时间间间隔可以以是不固固定的,间隙处处为高电电平。由于异步步通信每每传送一一帧有固固定格式式,通信信双方只只需按约约定的帧帧格式来来发送和和接收数数据,所所以硬件件结构比比同步通通信方式式简单。此外,它还能能利用校校验位检检测错误误,所以以这种通通信方式式应用较较广泛。在单片机机中主要要是采用用异步通通信方式式。2同步通通信SYNC在同步通通信中,数据或或字符开开始处是是用一同同步字符符来指示示(一般般约定为为l2个字符),以实实现发送送端和接接收端同同步,一一旦检测测到约定定同步字字符,下面就连连

6、续、顺顺序地发发送和接接收数据据。由于同步步通信数数据块传传送时去去掉了每每个数字字都必须须具有的的字符开开始和结结束的标标志,且且它一次次可以发发送一个个数据段段(多个个数据),因此此,其速度高高于异步步通信;但这种种方式要要求接收收和发送送时钟严严格保持同步步,在通信信时通常常要求有有同步时时钟信号号,对硬硬件结构构要求较较高。由由于这种种方式易易于进行行串行外外围扩展展,所以以目前很很多型号号的单片片机都增增加了串串行同步步通信接接口,如如目前已已得到广广泛应用用的I2C串行总线线和SPI串行接口口等。712串行通信信的数据据传送速速率传送速率率是指数据据传送的的速度。用b/s或bps(

7、比特秒秒)表示示,称为为比特率。在二进进制的情情况下,比特率率与波特特率数值值相等,因而在在单片机机的串行行通信中中,常称称为波特率。假如数据据传送的的速率为为120个字符每每秒,每每个字符符由1个起始位位、8个数据位位和1个停止位位组成,则其传传送波特特率为:10b120s1200bs1200波特每一位的的传送时时间即为为波特率率的倒数数:异步通信信的数据据传送速速率一般般为50b/s100kb/s,常用于计计算机到到CRT终端,以以及双机机或多机机之间的的通信等等。713串行通信信的方式式在串行通通信中,数据是是在两机机之间传传送的。按照数数据传送送方向,串行通通信可分分为单工工(Simp

8、lex)制式、半半双工(half duplex)制式和全全双工(full duplex)制式。图72串行通信信方式示示意图(1)单工制制式在单工制制式下,数据在在甲机和和乙机之之间只允允许单方向传送。两两机之间间只需1条数据线线。(2)半双工工制式在半双工工制式下下,数据据在甲机机和乙机机之间允允许双方方向传送送,但它它们之间间只有一一个通信信回路,接收和发发送不能同时时进行,只只能分时时发送和和接收(即甲机机发送,乙机接接收,或或者乙机机发送,甲机接接收),因而两两机之间间只需1条数据线线。(3)全双工工制式在全双工工制式下下,甲、乙两机机之间数数据的发发送和接接收可以以同时进进行,称称为“

9、全全双工传传送”。全双工工形式的的串行通通信必须须使用2条数据线线。不管哪种种形式的的串行通通信,在在两机之之间均应应有公共地线线。*信号的调调制与解解调当异步通通信的距距离在15m之内时,计算机机之间可可以直接接进行通通信。而而当传输输距离较较远时,通常是是用电话话线传送送。由于于电话线线频带不不够宽,再加上上远距离离传输时时信号不不可避免免地衰减减,因而而使信号号发生明明显的畸畸变。在发送时要用调制器(modulator)把数字信信号转换换为模拟拟信号,并加以以放大再再传送,这个过过程叫做做调制。在接收时,再用解调器(demodulator)检测此模模拟信号号,并把把它转换换成数字字信号再

10、再送入计计算机接接口,这这个过程程即解调调。714通信协议议通信协议议是指在在计算机机之间进进行数据据传输时时的一些些约定,包括通通信方式式、波特特率、命命令码的的约定等等。为保保证计算算机之间间能准确确、可靠靠地通信信,相互互之间必必须遵循循统一的的通信协协议。在在通信之之前一定定要先设设置好通通信协议议。7280C51串行口简简介80C51的串行口口是一个个可编程的的全双工工串行通通信接口口,通过软软件编程程它可以以作通用用异步接接收和发发送器UART(UniversalAsynchronous ReceiverTransmitter)用,也可可作同步步移位寄寄存器用用。其帧帧格式可可有8

11、位、10位和11位,并能设置置各种波波特率,使用灵灵活方便便。721串行口结结构与工工作原理理80C51串行口主主要由接收与发发送缓冲寄存存器SBUF、输入移位位寄存器器以及串串行控制制寄存器器SCON等组成。波特率率发生器器可以利利用定时时器T1或T2控制发送送和接收收的速率率。SCON用于存放放串行口口的控制制和状态态信息;发送数据据缓冲寄寄存器SBUF用于存放放准备发发送出去去的数据据;接收数据据缓冲寄寄存器SBUF用于接收收由外部部输入到到输入移移位寄存存器中的的数据。80C51串行口正正是通过过对上述述专用寄寄存器的的设置、检测与与读取来来管理串串行通信信的。图73串行口结结构框图图

12、在进行串串行通信信时,外外界数据据通过引引脚RXD(P3.0)输入。输输入数据据首先逐逐位进入入输入移移位寄存存器,由由串行数数据转换换为并行行数据,然后再再送入接接收寄存存器。在在接收寄寄存器中中采用了了双缓冲冲结构,以避免免在接收收到第2帧数据前前,CPU未及时响响应接收收寄存器器前一帧帧的中断断请求,没把前前一帧数数据读走走,而造造成2帧数据重重叠的错错误。在在发送时时,串行行数据通通过引脚脚TXD(P3.1)输出。由由于CPU是主动的的,因此此不会产产生写重重叠问题题,一般般不需要要双缓冲冲器结构构。要发发送的数数据通过过发送控控制器控控制逻辑辑门电路路逐位输输出。722串行口寄寄存器

13、与串行口口工作有有关的寄寄存器共共有6个,分别别是串行行口控制制寄存器器SCON、接收与发发送缓冲冲寄存器器SBUF、电源控制制寄存器器PCON、中断允许许控制寄寄存器IE、中断优先先级寄存存器IP。1串行口口控制寄寄存器SCON串行口控控制寄存存器SCON用于串行行通信的的方式选选择、接接收和发发送控制制,并可可反映串串行口的的工作状状态。SCON9FH9EH9DH9CH9BH9AH99H98H(98H)SM0SM1SM2RENTB8RB8TIRISCON7和SCON6位SM0和SM1串行方式式选择位位表71串行口工工作方式式选择SM0 SM1工作方式功能描述波特率0 00 10 01 1方

14、式0方式1方式2方式38位同步移位寄存器10位UART11位UART11位UARTfosc/12可变fosc/64和fosc/32可变SCON.5位SM2多机通信信控制位位。在方式2和方式3中,SM2主要用于于进行多多机通信信控制。当串行行口以方方式2或方式3接收时,如果SM2=1,允许多机机通信,且接收收到第9位RB8为0时,则RI不置1不接收主主机发来来的数据据;如果果SM2=1,且RB8为1,则RI置1,产生中中断请求求,将接接收到的的8位数据送送入SBUF。当SM2=0时,不论论RB8为0还是1,都将收收到的8位数据送送入SBUF,并产生中中断。在方式1中,当处处于接收收状态时时,若S

15、M2=1,则只有接接收到有有效的停停止位时时,RI才置1。在方式式0中,SM2应置0。SCON.4位REN允许串行行接收位位。REN=1时,允许许接收;REN=O时,禁止止接收。由软件件置位或或清除。SCON.3位TB8发送数据据的第9位(D8)。在方式2或方式3中,根据据需要由由软件置置位或复复位。双双机通信信时,它它可约定定作奇偶偶校验位位;在多多机通信信中,可可作为区区别地址址帧或数数据帧的的标识位位。一般般由指令令设定地址帧时,设TB8为1;而设定定数据帧时,设TB8为0。方式0和方式1中没用该该位。SCON.2位RB8接收数据据的第9位(D8)。在方式2或方式3中,RB8的状态与与T

16、B8相呼应,(如可以是是约定的的奇偶校校验位,也可以以是约定定的地址址/数据标识识位)。例如,当SM2=1时,如果果RB8为0,则说明明收到的的是数据据帧。SCON.1位TI发送中断断标志位位。在方式0中,发送送完8位数据后后,由硬硬件置位位;在其其他方式式中,在在发送停停止位之之初由硬硬件置位位。TI=1时,可申申请中断断,也可可供软件件查询用用。在任何方方式中,都必须须由软件件来清除除TI。SCON.0位RI接收中断断标志位位。在方式0中,接收收完8位数据后后,由硬硬件置位位;在其其他方式式中,在在接收停停止位的的中间,由硬件件置位。RI=1时,可申申请中断断,也可可供软件件查询用用。在任

17、何方方式中,都必须须由软件件清除RI。SCON的低2位与中断断有关。SCON的地址为为98H,可以位寻寻址。复复位时,SCON的所有位位均清0。2数据缓缓冲寄存存器SBUF数据缓冲冲寄存器器SBUF实际上是是2个寄存器器:发送数据据缓冲寄寄存器和接收数据据缓冲寄寄存器。接收与与发送缓缓冲寄存存器SBUF采用同一一个地址址代码99H,其寄存器器名亦同同样为SBUF。CPU通过不同同的操作作命令,区别这这2个寄存器器,所以以不会因因为地址址代码相相同而产产生错误误。当CPU发出写SBUF命令时,即向向发送缓缓冲寄存存器中装装载新的的信息,同时启启动数据据串行发发送;当当CPU发出读SBUF命令时,

18、即读读接收缓缓冲寄存存器的内内容。3电源控控制寄存存器PCON电源控制制寄存器器PCON主要用于于电源控控制,PCON的最高位位SMOD是串行口口的波特特率倍增增位:当SMOD为1时,波特特率加倍;当SMOD为O时,波特特率不变。PCOND7D6D5D4D3D2D1D0(87H)SMODGF1GF0PDIDL4中断允允许控制制寄存器器IE中断允许许控制寄寄存器IE用于控制制与管理理单片机机的中断断系统。IE的ES位用于控控制串行行口的中中断:当ES=O时,禁止串行口中中断;当ES=1时,允许串行口中中断。5中断优优先级寄寄存器IP中断优先先级寄存存器IP用于管理理单片机机中各中中断源中中断优先

19、先级。IP的PS位用于设设置串行行口中断断的优先先级:当PS=0时,串行行口中断断为低优先级级;当PS=1时,串行行口中断断为高优先级级。72380C51的帧格式式80C51串行口通通过编程程可设置置四种工工作方式式及三种种帧格式式。方式0以8位数据为为一帧,不设起起始位和和停止位位,先发发送或接接收最低低位。方式1以10位为一帧帧传输,设设有1个起始位位“0”、8个数据位位和1个停止位位“1”。方式2和3以11位为一帧帧传输,设有1个起始位位“0”、8个数据位位、1个可编程程位(第第9数据位)D8和1个停止位位“1”。可编程位位D8由软件置置“1”或清“0”,该位可可作检验验位,也也可作它它

20、用。724波特率的的设置在串行通通信前,首先要要设置收发双方方对发送送或接收收的数据据传送速速率,即波特率。通过软软件对80C51串行口编编程可设设定4种工作方方式。这这4种方式波波特率的的计算方方法不同同:方式0和方式2的波特率率是固定的,而方式1和方式3的波特率率是可变的,由定定时器T1或T2(AT89S52)的溢出率率控制。1方式0和方式2的波特率率方式0中,每个个机器周周期发送送或接收收1位数据,且不受SMOD的影响。方式2的波特率率取决于于PCON中SMOD之值。当SMOD0时,波特特率为fosc的164;若SMOD1,则波特率率为fosc的132,即:2方式1和方式3的波特率率80

21、C51串行口方方式1和方式3的波特率率由定时时器T1的溢出率率与SMOD的值决定定,即:T1溢出率取取决于计计数速率率和定时时器的预预置值。计数速率率与TMOD寄存器中中CT的状态有有关。当CT0时,计数数速率fosc12;当CT1时,计数数速率取取决于外外部输入入时钟频频率。当定时器器T1作波特率率发生器器使用时时,通常常是选用用自动重装装载方式式,即方式2。设计数数初值为为X,那么每过过(256X)个机器周周期,定定时器1就会产生生一次溢溢出。为为了避免免因溢出出而产生生不必要要的中断断,此时时应禁止止T1中断。溢溢出周期期为:溢出率为为溢出周周期之倒倒数,所所以:则定时器器T1方式2的初

22、始值值为:表7.2定时器T1的常用波波特率串行口工作方式 波特率(kbps)foscMHzSMOD定时器1C/T模式初值方式0 100012方式2375121方式1,362.512102FFH19.211.059102FDH9.611.059002FDH4.811.059002FAH2.411.059002F4H1.211.059002E8H0.11600272H0.1112001FFEBH【例1】已知80C51单片机时时钟振荡荡频率为为11.0592MHz选用定时时器T1工作方式式2作波特率率发生器器,波特特率为2400波特,求求时间常常数。解:设波波特率控控制位SMOD0,定时器T1的时间

23、常常数为:所以TH1TL1F4H。由于上述述公式包包含除法法,所以以当晶振振频率与与波特率率不同时时,计算算值有时时会有一定误差差。例如,如果晶晶振频率率为12MHz,波特率要要求为2400,在SMOD=0时,TH1=F3H,波特率的的实际计计算值为为2404,误差为为0.11。但如如果2个单片机机的波特特率相同同,例如如均为2404,则不会会影响通通信;如果2个单片机机的波特特率误差差超过2.5,则可可能会引引起通信信错误。AT89S52单片机的的定时器器T2也可作为为波特率率发生器器。7.3串行通信信工作方方式通过软件件编程可可使串行行通信有有4种工作方方式。731方式0在方式0下,串行行

24、口作同步移位位寄存器器用,以8位数据为为1帧,先发发送或接接收最低低位,每每个机器器周期发发送或接接收一位位,故其其波特率率是固定定的,为为fosc12。串行数据据由RXD(P3.0)端输入或或输出。同步移移位脉冲冲由TXD(P3.1)端送出。这种方方式常用用于扩展展I/O口。采用用不同的的指令实实现输入入或输出出。(1)发送送当执行“MOVSBUF,A”指令时,CPU将1字节的数数据写入入发送缓缓冲寄存存器SBUF(99H),串行口即即把8位数据以以fosc12的波特率率从RXD端送出(低位在在前)。发送完完成后,置中断断标志位位TI为1。如要继继续发送送应将TI清0。(2)接收收由于REN

25、是串行口口允许接接收控制制位,因因此在准准备接收收时,首首先要用用软件置置REN为1,使其允允许接收收;然后后,执行行“MOVA,SBUF”指令,CPU即开始从从RXD端以fosc12波特率输输入数据据(低位位在前),当接接收到8位数据时时,置中中断标志志RI为1。读取数数据后,一定要要将RI清0。串行控制制寄存器器中,TB8和RB8位在方式式0中未用。每当发发送或接接收完8位数据时时,由硬硬件将发发送中断断TI或接收中中断RI标志置位位。不管是中中断方式式还是查查询方式式,都不不会清除除TI或RI标志,必必须用软软件清0。在方式0中,SM2位必须为为0。图73串行口结结构框图图732方式1在

26、方式1下,串行行口为10位通用异异步接口口。发送送或接收收1帧数据,包括1位起始位位“0”、8位数据位位和1位停止位位“1”,其传送送波特率率可调。(1)发送送当执行“MOVSBUF,A”指令时,CPU将1字节的数数据写入入发送缓缓冲寄存存器SBUF(99H),就启动发发送器发发送,数数据从引引脚TXD(P31)端输出。当发送完1帧数据后后,TI标志置1,在中断断方式下下将申请请中断,通知CPU可以发送送下一个个数据。如要继继续发送送,必须须将TI清0。图73串行口结结构框图图(2)接收收接收时,先使REN置1,使串行行口处于于允许接接收状态态,RI标志为0,串行口口采样引引脚RXD(P30)

27、。当采样到到1至0的跳变时时,确认认是起始始位“0”,就开始始接收1帧数据。当停止止位到来来时,RB8位置1,同时,中断标标志位RI也置1,在中断断方式下下将申请请中断,通知CPU从SBUF取走接收收到的1个数据。不管是中中断方式式,还是是查询方方式,都不会清清除TI或RI标志,必必须用软软件清0。733方式2和方式3方式2和方式3均为11位异步通通信方式式,只是是波特率率的设置置方法不不同,其其余完全全相同。这两种种方式发发送或接接收1帧的信息息包括1位起始位位“0”、8位数据位位、1位可编程程位和1位停止位位“1”。其信息息传送波波特率与与SMOD有关。(1)发送送发送前,首先根根据通信协

28、议议由软件设设置TB8(如作奇偶偶校验位位或地址址数据据标识位位),然然后,将将要发送送的数据据写入SBUF即可启动动发送器器。发送过程程是由执执行任何何一条以以SBUF作为目的的寄存器器的指令令而启动动的(写SBUF指令),把8位数据装装入SBUF,同时,串串行口还还自动把把TB8装到发送送移位寄寄存器的的第9位数据位位置上,并通知知发送控控制器要要求进行行一次发发送,然然后即从从TXD(P31)端输出1帧数据。图73串行口结结构框图图(2)接收收在接收时时,先置位REN为1,使串行行口处于于允许接接收状态态,同时时还要将将RI清0。在满足足这个条条件的前前提下,再根据据SM2的状态(因为S

29、M2是方式2和方式3的多机通通信控制制位)和和所接收收到的RB8的状态,才能决决定此串串行口在在信息到到来后是是否会使使RI置1。如果RI置1,在中断断方式下下将申请请中断,接收数数据。当SM2=0时,不管管RB8为0还是为1,RI都置1,此串行行口将接接收发来来的信息息。当SM2=1,且RB8为1时,表示示在多机机通信情情况下,接收的的信息为为地址帧,此时RI置1。串行口口将接收收发来的的地址。当SM2=1,且RB8为0时,表示示接收的的信息为为数据帧,但不是发发给本从从机的,此时RI不置1,因而SBUF中所接收收的数据据帧将丢丢失。在方式2和方式3下,同样样不管是是中断方方式,还还是查询询

30、方式,都不会会清除TI或RI标志。在在发送和和接收之之后,也也都必须须用软件清清TI和RI位。734多机通信信80C51的方式2和方式3有一个专专门的应应用领域域,即多机通信信。这一功功能使它它可以方方便地应应用于集集散式分分布系统统中。这这种系统统采用一一台主机机和多台台从机。图74多机通信信连接图图多机通信信的实现现,主要要靠主、从机之之间正确确地设置置与判断断多机通通信控制制位SM2和发送或或接收的的第9数据位(D8)。在编程前前,首先要给给各从机机定义地地址编号号,如分别别为00H、01H、02H。当主机想想发送一一数据块块给几个个从机中中的一个个时,它它首先送出出一个地地址字节节,以

31、辨认认从机。地址字字节和数数据字节节可用第第9数据位(TB8)来区别,地址为1,数据为为0。所以,在主机发送地址址帧时,地址数据标标识位TB8应设置为为“1”,以表示示是地址址帧。如:MOVSCON,#0D8H;设串行口口为方式式3,TB8置“1”,准备发发地址此时,所所有的从从机初始始化时均均置SM21,使它们只只处于接接收地址址帧的状状态。如:MOVSCON,#0F0H;置串行口口为方式式3,SM21,允许接收收当从机接接收到从从主机发发来的信信息后,第9位RB8若为“1”,则置位位中断标标志RI,并在中断断后判断断主机送送来的地地址与本本从机地地址是否否相符。若相符符,则被被寻址的的从机

32、就就清除其其SM2标志,即即SM20,准备接收收即将从从主机送送来的数数据帧;未被选中中的从机机仍保持持SM21。当主机发发送数据据帧时,应置TB80。此时,虽虽然各从从机都能能接收到到,但由于TB80,所以只有有SM20的那个被被寻址的的从机才才能接收收到数据据,那些未被被选中的的从机将将不理睬睬进入到到串行口口的数据据字节,继续进进行它们们自己的的工作,直到一一个新的的地址字字节到来来,这样样就实现现了主机机控制的的主从机机之间的的通信。综上所述述,通信只能能在主从从机之间间进行,从机之之间的通通信只有有经主机机才能实实现。多机之间间的通信信过程可可归纳如如下:(1)主、从从机均初初始化为

33、为方式2或方式3,置SM21,允许中断断。(2)主机置TB81,发送要寻寻址的从从机地址址。(3)所有从从机均接接收主机机发送的的地址,并进行行地址比比较。(4)被寻址址的从机机确认地地址后,置本机机SM20,向主机返返回地址址,供主主机核对对。(5)核对无无误后,主机向向被寻址址的从机机发送命命令,通通知从机机接收或或发送数数据。(6)通信只只能在主主、从机机之间进进行,两两个从机机之间的的通信需需通过主主机作中中介。(7)本次通通信结束束后,主主、从机机重置SM21,主机可再再对其他他从机寻寻址。在实际应应用中,因为单单片机功功能有限限,因而而在较大大的测控控系统中中,常常常把单片片机应用

34、用系统作作为前端端机(下下位机或或从机)直接用用于控制制对象的的数据采采集与控控制,而而把PC机作为中中央处理理机(上上位机或或主机)用于数数据处理理和对下下位机的的监控管管理。它它们之间间的信息息交换主主要是采采用串行行通信,此时单单片机可可直接利利用其串串行接口口,而PC机可利用用其配备备的8250或8251、16450等可编程程串行接接口芯片片。实现单片片机与PC机串行通通信的关关键是在在通信协协议的约约定上要要一致,例如,应设定相同同的波特特率及帧帧格式等。在正正式工作作之前,双方应应先互发发联络信信号,以以确保通通信收发发数据的的准确性性。74串行口应应用举例例本节将介介绍串行行口在

35、作作IO扩展及一一般异步步通信和和多机通通信中的的应用原原理及实实例。741用串行口口扩展IO口串行口的的方式0主要用于扩展展并行IO口。此处将将给出实实用线路路和简单单的控制制指令。例7.1用并行输输入8位移位寄寄存器74HC165扩展16位并行输输入口。编程实实现从16位扩展口口读入20字节数据据,并把把它们转转存到内内部RAM的50H63H中。图75利用串行行口扩展展输入口口解:在此此采用74HC165与单片机机相连实实现I/O口扩展,是利用用80C51的3根口线扩扩展为16根输入口口线的实实用电路路,其由由2块74HC165串接而成成。74HC165是并入串串出移位位寄存器器(也可可选

36、用其其他同样样功能的的CMOS器件)。图中,CK为时钟脉脉冲输入入端,D0D7为并行输输入端,SIN、QH分别为数数据的输输入、输输出端。前级的的数据输输出端QH与后级的的信号输输入端SIN相连。S/L=0时,允许许并行置置入数据据;S/L=1时,允许许串行移移位。MOVR7,#20;设置读入入字节数数MOVR0,#50H;设片内RAM指针SETBF0;设置读入入字节奇奇偶数标标志RCV0:CLRP1.0;允许并行行置入数数据SETBP1.0;允许串行行移位RCV1:MOVSCON,#10H;设串行口口方式0并启动接接收JNBRI,$;等待接收收一帧数数据CLRRI;清接收中中断标志志MOVA

37、,SBUF;取缓冲器器数据MOVR0,AINCR0CPLF0JBF0,RCV2;判是否接接收完偶偶数帧,接收完完则DECR7重新并行行置入SJMPRCV1;否则再接接收一帧帧RCV2:DJNZR7,RCV0;判是否已已读入预预定的字字节数;对读入入数据进进行处理理程序中F0用来作读读入字节节数的奇奇偶性标标志。由由于每次次由扩展展口并行行置入到到移位寄寄存器的的是2个字节数数据,置置入1次,串行行口应接接收2帧数据。故已接接收的数数据字节节数为奇奇数时F00,不再并行行置入数数据就直直接启动动接收过过程;否否则F01,在启动接接收过程程前,应应该先在在外部移移位寄存存器中置置入新的的数据。【例

38、72】用2片8位串入并并出移位位寄存器器74HC164作扩展输输出口。编程使这这16个发光二二极管交交替为间间隔点亮亮状态,循环交交替时间间为2s。图76利用串行行口扩展展输出接接口74HC164是串行输输入、并并行输出出移位寄寄存器。Q0Q7为并行输输出端;A、B为串行输输入端;CLR为清除端端,零电电平时,使74HC164输出清“0”;CK为时钟脉脉冲输入入端,在在CK脉冲的上上升沿作作用下实实现移位位。在CK0,CLR1时,74HC164保持原来来数据状状态。由于74HC164无并行输输出控制制端,在在串行输输入过程程中其输输出端的的状态会会不断变变化,故故在某些些使用场场合,在在74H

39、C164与输出装装置之间间还应加加上输出出可控的的缓冲级级(如74HC244),以便在串串行输入入过程结结束后再再输出。图中的的输出装装置是16位发光二二极管。由于74HC164在低电平平输出时时允许通通过的电电流可达达8mA,故不需再再加驱动动电路。ST:MOVSCON,#00H;设串行口口为方式式0MOVA,#55H;二极管间间隔点亮亮初值LP2:MOVR0,#2;输出口字字节数CLRP1.0;对74HC164清0SETBP1.0;允许数据据串行移移位LP1:MOVSBUF,A;启动串行行口发送送JNBTI,$;等待1帧发送结结束CLRTI;清串行口口发送中中断标志志位DJNZR0,LP1

40、;判断预定定字节数数发送完完否LCALLDEL2s;调延时2s子程序(略)CPLA;交替点亮亮二极管管SJMPLP2;循环显示示从理论上上讲,74HC164或74HC165可以无限限地串级级上去,进一步步扩展输输入输输出并行行口,但但这种扩扩展方法法,输入入输出出的速度度不高,移位时时钟频率率为fosc12。若fosc=12MHz,则每移1位需1s。742用串行口口进行异异步通信信图77双机异步步通信连连接图【例73】编程把甲甲机片内内RAM的60H7FH单元中的的数据块块从串行行口输出出。定义义在工作作方式3下发送,TB8用作奇偶校校验位。采用定定时器T1方式2作波特率率发生器器,波特特率为

41、4800,fosc=11.0592MHz,定时器初初始预置置值TH1=TL1=0FAH。编程使乙乙机从甲甲机接收收32个字节数数据块,并存入入片外1000H101FH单元。接接收过程程中要求求判奇偶偶校验标标志RB8。若出错,则置F0标志为1,若正确确则置F0标志为0,然后返返回。解:编写写发送子子程序如如下:MOVTMOD,#20H;设置定时时器T1为方式2MOVTL1,#0FAH;设预置值值MOVTH1,#0FAHSETBTR1;启动定时时器T1MOVSCON,#0C0H;设置串行行口为方方式3MOVPCON,#00H;SMOD0MOVR0,#60H;设数据决决指针MOVR7,#20H;设

42、数据长长度20HTRS:MOVA,R0;取数据送送至AMOVC,PMOVTB8,C;奇偶位P送至TB8MOVSBUF,A;数据送至至SBUF,启动发送送WAIT:JNBTI,$;判1帧是否发发送完CLRTIINCR0;更新数据据单元DJNZR7,TRS;循环发送送至结束束RET;返回在进行双双机通信信时,两两机应用用相同的的工作方方式和波波特率,因而接接收子程程序编程程如下:MOVTMOD,#20H;设置定时时器T1为方式2MOVTL1,#0FAH;设预置值值MOVTH1,#0FAHSETBTR1;启动定时时器T1MOVSCON,#0C0H;设置串行行口为方方式3MOVPCON,#00H;SM

43、OD0MOVDPTR,#1000H;设置数据据块指针针MOVR7,#20H;设数据块块长度SETBREN;允许接收收WAIT:JNBRI,;判断1帧是否接接收完CLRRIMOVA,SBUF;读入1帧数据JNBPSW.0,PZ;奇偶位P为0,则转JNBRB8,ERR;P=1,RB8=0,则出错SJMPYES;二者全为为1,则正确确PZ:JBRB8,ERR;二者全为为0,则正确确;P0,RB81,则出错YES:MOVXDPTR,A;正确,存存放数据据INCDPTR;修改地址址指针DJNZR7,WAIT;判断数据据块接收收完否CLRPSW.5;接收正确确,且接接收完,清F0标志RET;返回ERR:SE

温馨提示

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

评论

0/150

提交评论