单片机原理及应用第九章.ppt

上传人:小飞机 文档编号:5937882 上传时间:2023-09-06 格式:PPT 页数:94 大小:414KB
返回 下载 相关 举报
单片机原理及应用第九章.ppt_第1页
第1页 / 共94页
单片机原理及应用第九章.ppt_第2页
第2页 / 共94页
单片机原理及应用第九章.ppt_第3页
第3页 / 共94页
单片机原理及应用第九章.ppt_第4页
第4页 / 共94页
单片机原理及应用第九章.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《单片机原理及应用第九章.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用第九章.ppt(94页珍藏版)》请在三一办公上搜索。

1、第9章 MCS-51单片机的串行口,9.1 数据通信基础知识9.2 MCS-51单片机的串行口结构与工作原理9.3 串行口的控制寄存器9.4 串行口的工作方式9.5 单片机与PC机的通信,9.1 数据通信基础知识,.数据通信的概念不同的独立系统利用线路(传输介质)互相交换信息(数据)称之为通信。而构成整个通信的线路(传输介质)称之为网络。如果交换信息的系统是计算机系统的话,则称之为计算机网络(Computer Network)通信。计算机通信也称为数据通信,典型的数据通信系统可用下面的等式来描述:数据通信=数据处理+数据传输为了解决数据是如何传输的,数据是如何编码的,数据通信是以什么样的规则去

2、管理和控制的等问题,可以把数据通信划分为三个基本部分:传输、通信接口和通信处理。,通信协议1.通信协议的概念 数据通信是机器之间的通信,所以和其它通信方式一样,应该在通信系统中规定一个统一的通信标准,即通信的内容是什么,如何通信,何时通信,都必须在通信的实体之间达成大家都能接受的协定,这些协定就被称为通信协议。也可以将协议定义为监督和管理两个实体之间的数据交换的一整套规则。简单地说,通信协议是对数据传送方式的规定,包括数据格式和数据位的定义等。,通信协议由以下三个部分组成:语法:规定通信双方彼此“如何讲”,即确定协议元素的格式,包括数据格式和信号电平。语义:规定通信双方彼此“讲什么”,即确定协

3、议元素的类型和内容,包括用于相互协调及差错处理的信息。定时关系:规定事件执行的顺序,即确定通信进程中通信的状态变化,包括速度匹配和时序。如规定正确的应答关系等。,2.串行通信协议 串行通信协议有同步协议和异步协议两种。异步串行通信协议规定字符数据的传输格式,主要有下述内容:起始位。通信线上没有数据传送时处于逻辑“1”的状态(又称mark)。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位(又称space状态)。起始位所起的作用就是使设备同步,通信双方必须在传送数据位前协调同步。数据位。当接收设备收到起始位后,紧接着就会收到数据位。80C51串行口采用8位或9

4、位数据传送。,奇偶校验位。数据位发送完之后,便可以发送奇偶校验位。奇偶校验用于有限差错检测,通信双方应约定一致的奇偶校验方式。停止位。在奇偶或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位、1.5位或2位的低电平。帧(frame)。从起始位开始到停止位结束的全部信息位的内容称为一帧,帧在异步串行通信中是一个字符的完整通信格式,所以我们可将异步通信的字符格式称之为帧格式,即每个字符均是独立传送的一帧。,在异步串行通信中,一个字符代码在通信线路上的传输格式如图9.1所示。,(A)异步通信格式,(B)字符E(ASCII码为45H)的传送波形,图9.1 异步串行

5、通信的传送格式,波特率设置。通信线路上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据传送速率确定,而传送速率是以每秒传送多少个二进制位来度量的,这个速率称作波特率(Baud Rate),其单位为bps(bits per second,位/秒)。例如,如果数据以每秒300个二进制位在通信线路上传输,那么这个传输速率就是300波特。在串行通信中,二进制信息位的发送与接收分别由发送端和接收端的时钟脉冲进行定时控制,时钟频率越高,则波特率也高,串行通信的传输率快,反之则慢。在串行通信中经常使用的标准波特率在RS-232C标准中已有规定,如1200、2400、4800、9600bps等,

6、使用时可根据实际需要加以选择。,数据传输模式1.并行与串行传输 并行通信(Paralled Communication):并行通信是将待传送字符的二进制代码中的各数据位在并行信道上同时传送的方式。并行传输时,一次传输一个字符,这种方式速度快,效率高,但所需的数据线数目较多(等于所传送数据的字长),而且在传送过程中容易因线路的因素(如信号衰减问题、信号间相互串音干扰问题)导致信息传送发生错误。因此并行通信的控制比较复杂,传送成本较高,仅适用于传送距离较短的场合,如系统内的信息传送等。,串行通信(Serial Communication):串行通信是将待传送字符中的各数据位在一条信道上以位为单位,

7、按时间及位的顺序依次进行传送的方式。显然,串行传送速度低于并行传送,但只需一条传输信道,传送控制较为简单,传输成本较低,适用于传送距离较长的场合,加上驱动后其传输距离可以从几米到几千公里。串行通信又可分为同步和异步两种方式。,2.同步和异步传输 异步传输方式:在异步传输方式下,传输数据是以字符为单位的,当发送一个字符代码时,字符前面要加一个“起”信号,其长度为1个码元,极性为”0”,即空号极性;字符后面要加一个“止”信号,其长度为1、1.5或2个码元(在国际NO.2码时用1.5码元长),极性为“1”,即传号极性。加上“起”、“止”信号后,即可区分出所传输的字符。待传送的字符串中的每个字符均加上

8、起始位、停止位、校验位等控制信息位,构成一个字符帧。在传送时,以串行方式将字符帧一个一个地传送出去,字符帧与字符帧之间可以是连续发送,也可以是间断的单独发送,两字符之间的间隔长度可以不确定。异步传输方式适用于1200bps以下的低速传输,且实现起来比较简单。异步传输方式的优点是收发双方不需要严格的位同步,缺点是每个字符都要按字符帧的格式传输,传输效率就比较低。,同步传输方式:在同步传输方式下,收发双方必须建立准确的位定时信号,正确地区分每位数据信号。在该传输方式中,每个字符不增加任何附加位,而且是连续发送。但在传输中,数据要分成组(或帧),一组含多个字符代码或多个独立码元(位),为了使收发双方

9、建立和保持同步,在每组的开始和结束需加上规定的码元序列,作为标志序列,标志序列的码型因传输规程不同而异。在发送数据之前,必须先发送该标志序列,接收端通过检测出该标志序列来实现同步。同步传输方式适用于2400bps以上的数据传输,不需加起、止信号,因此传输效率高,但是实现起来比较复杂。,双工通信方式 双工通信方式是对相互通信的两台通信设备间数据流向的描述,或者说是对一台通信设备执行收发操作能力的描述。双工包括全双工、半双工和单工。,1.单工(Simplex)形式:单工形式的数据传送是单向的,通信双方中一方固定作为发送端,而另一方则固定作为接收端,单工方式通信时仅需一根数据线,连接图如图7.2所示

10、。图7.2 单工通信形式,2.全双工(Full-duplex)形式:全双工形式的数据传送是双向的,通信双方中的任何一方均可同时发送和接收数据,这就需要两根数据线,连接图如图7.3所示。,图7.3 全双工通信形式,3.半双工(Half-duplex)形式:半双工形式的数据传送也是双向的,通信双方中的任何一方均可发送和接收数据,但它任何时刻只能由其中的一方作为发送端,而另一方作为接收端。任何一方均不能同时发送和接收数据。采用该形式进行串行通信时,可以使用一对数据线,也可使用两条数据线。连接图如图7.4所示。图7.4半双工通信形式,串行通信接口电路 能够完成串行通信的接口电路:通用异步收发器UART

11、(Universal Asynchronous Receiver Transmitter,简称UART),可用来完成异步串行通信;通用同步收发器USRT(Universal Synchronous Receiver Transmitter,简称USRT),它能完成同步串行通信;通用同步/异步收发器USART(Universal Synchronous/Asynchronous Receiver Transmitter,简称USART),它既可完成同步串行通信又可完成异步串行通信。,所有的串行通信接口都是以并行数据形式与CPU接口,而以串行数据形式与外部通信线路接口。其基本功能是从外部通信线路接

12、收串行数据信息,并转换成并行数据后传送给CPU;或者由CPU将内部的并行数据信息转换成串行数据信息输出给外部通信线路进行串行通信。MCS-51单片机的串行口是一个全双工的异步串行通信接口。一般全双工串行通信接口电路至少包括一个发送器和一个接收器。它们分别有数据寄存器和移位寄存器,以便串行口实现CPU并行输出串行发送,串行接收CPU并行接收的转换功能。,9.1.6 串行通信总线标准1.串行通信总线标准接口 所谓标准接口,就是明确定义若干信号线,使接口电路标准化、通用化。借助串行通信标准接口,不同类型的数据通信设备可以很容易实现它们之间的串行通信连接。串行通信接口标准经过使用和发展,目前已经有比较

13、成熟的几种,这几种都是在RS-232标准的基础上经过改进而形成的,例如:RS-232C、RS-449、RS-422、RS-423和RS-485,20mA电流环等。,RS-232C是用二进制方式进行数据交换的数据通信设备(DCE)与数据终端设备(DTE)之间的接口技术标准。RS-232C是由美国电子工业协会(Electronic Industry Association 简称EIA)与BELL等公司一起开发,并在1969年正式公布的通信协议,它是一种串行物理接口标准。RS-232C总线标准的全称是EIA-RS-232C标准,RS是英文“推荐标准”的缩写,232为标识符号,C表示修改次数(C 表示

14、RS232在1969年的最新一次修改,在这之前,有RS232B、RS232A)。,这个标准对串行通信接口的有关问题,如信号线功能,按位串行传输的电气和机械特性都作了明确规定。它适合于数据传输速率在020000bps范围内的通信,适合于短距离或带调制解调器的通信场合。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在计算机通信接口中广泛采用。,2.RS-232C总线标准的电气特性和信号接口 电气特性 RS-232C标准对电气特性、逻辑电平和各种信号线功能都作了规定。在TxD和RxD上:逻辑1(MARK)=-3V-15V 逻辑0(SPACE)=+315V 在R

15、TS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V+15V 信号无效(断开,OFF状态,负电压)=-3V-15V,以上规定说明了RS-323C标准对逻辑电平的定义。对于数据,逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V;对于控制信号,接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在(315)V之间。,EIA-RS-232C与TTL转换:E

16、IA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL和EIA的双向电平转换。,信号接口 RS-232C总线标准规定了21个信号和25个引脚,包括一个主通道和一个辅助通道,在多数情况下主要使用

17、主通道。对于一般双工通信,仅需几条信号线就可以实现,包括一条发送线,一条接收线和一条地线。与RS-232C相匹配的D 型连接器有BD-25、DB-15和DB-9,其引脚定义各不相同。常用的有BD-25和DB-9两种连接器。,DB-25连接器 DB-25连接器定义25根信号线,分成4组:异步通信的9个电压信号(含信号地SG),引脚编号为2、3、4、5、6、7、8、20、22。20mA电流环信号9个,引脚编号为12、13、14、15、16、17、19、23、24(注意,20mA电流环信号仅IBM PC和IBM PC/XT机提供,至AT机及以后,已不支持)。空脚6个,引脚编号为9、10、11、18、

18、21、25。保护地(PE)1个,作为设备接地端,引脚编号为1。DB-25连接器引脚排列如图7.5所示。图7.5 DB-25连接器引脚排列图,RS-232C规定标准接口有25条线,4条数据线,11条控制线,3条定时线,7条备用和未定义线,而常用的只有9条,它们可分为以下3类。联络控制信号线:数据装置准备好(DSR)有效状态时(ON),表明Modem处于以使用状态。数据终端准备好(DTR)有效状态时(ON),表明数据终端可以使用。这两个信号有时连接到电源上,一上电就立即有效。这两个设备状态信号有效只表示设备本身可用,能否开始进行通信要由下面的控制信号决定。,请求发送(RTS)用来表示DTE请求DC

19、E发送数据,即当终端要发送数据时,使该信号有效(ON状态),向Modem请求发送,它用来控制Modem是否要进入发送状态。允许发送(CTS)用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当Modem已准备好接收终端传来数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TXD发送数据。,接收线信号检出(RLSD)用来表示DCE已接通通信链路,告知DTE准备接收数据,此线也叫做数据载波检出(DCD)线。振铃指示(RI)当Modem收到交换台送来的振铃呼叫信号时,使该信号有效,通知终端,已被呼叫。,数据发送与接收线:发送数据(TXD)通过TXD终端将串行数据发送

20、到Modem。接收数据(RXD)通过RXD线,终端接收从Modem发来的串行数据。地线:有SG、PE两根信号地和保护地,无方向。,DB-9连接器 目前已经很少有人使用25针D型连接器了,一般都使用9针D型连接器。DB-9连接器引脚排列如图7.6所示。图7.6 DB-9连接器引脚排列图,9针和25针连接器间的对应关系如表7.2所示,9.2 MCS-51单片机的串行口结构与工作原理,89C51单片机中有一个全双工的串行通信接口,它既可作为串行异步通信(UART)接口,也可以作为同步移位寄存器方式下的串行扩展接口。,串行口结构 1.串行口的基本功能 单片机串行口必须具备以下功能:串/并转换功能;串行

21、数据的格式化功能;可靠性功能;串行口与数据通信设备DCE(Date Communication Equipment)之间的握手联络功能。所有为实现上述功能而设计的硬件逻辑电路集成在一起,作为单片机实现串行异步通信的部件,并被称之为单片机的串行口。,2.串行口的结构 就MCS-51系列单片机而言,其串行口的主要功能是由图9.7所示的寄存器结构的通用异步收发器(UART)来实现的。它是一个全双工的异步串行通信接口,通过它既可以发送数据也可以接收数据。其硬件结构主要由发送器部分和接收器部分组成。图9.7 MCS-51串行口UART结构,接收器部分:接收部分主要由一个数据接收缓冲寄存器(接收SBUF)

22、和一个输入移位寄存器构成,用于实现接收数据传输格式的拆装和串/并格式转换功能。由于在数据接收缓冲寄存器之前设置了一个移位寄存器,从而构成了串行接收的双缓冲结构。以防止在数据接收过程中出现帧重叠错误。即当下一帧数据来时,前一帧数据还未读走情况出现。,发送器部分:发送器部分仅由一个具有移位功能的发送缓冲寄存器(发送SBUF)组成,用来实现发送数据的并/串格式转换和发送标准格式的组装功能。其结构与接收器部分不同的原因在于:在数据发送过程中单片机是主动的,它会根据发送过程是否完成来决定是否继续发送下一帧数据,从而避免了传送过程中帧重叠错误的发生。因此,对于发送器部分来说只需采用单缓冲结构即可,同时也可

23、提高数据发送的速度。SBUF是数据接收缓冲寄存器和数据发送缓冲寄存器的总称,两者共用一个地址为99H。,串行口的工作原理 单片机通过串行口进行串行异步通信时,其接收和发送过程如下:1.接收 串行口按软件设定的工作方式和波特率,在时钟脉冲的控制下,通过引脚RXD(P3.0)逐位移入数据至输入移位寄存器,完成串并转换,然后将数据并行送入接收数据缓冲寄存器SBUF,并形成中断请求RI,通知CPU读取传入的数据。在接收的过程中,还要对接收到的数据帧进行起始值、校验位、停止位等附加信息的反格式化的处理。,2.发送 当单片机CPU向串行口的发送数据缓冲寄存器SBUF写入所需发送的数据后,串行口自动地按软件

24、设定的格式将待传送的数据组成数据帧,并以软件规定的波特率借助于SBUF的移位功能,在时钟脉冲的控制下,通过引脚TXD(P3.1)逐位移出。待该帧完全移出后,形成中断请求TI,通知CPU准备下一帧的发送工作。,串行口控制寄存器SCON SCON是一个可位寻址的特殊功能寄存器,用于存放关于串行口的控制信息和状态信息。SCON的单元地址为98H,在位寻址时,D7D0各位的位地址和位符号如下表所示。表9.3 SCON的位地址和位符号,9.3 串行口的控制寄存器,1.SM0SM1串行口工作方式选择位。当两位设置为00、01、10、11时,串行口分别工作在方式0、方式1、方式2和方式3。2.SM2多机通信

25、控制位(该位主要用于方式2和方式3)。当串行口工作在方式0时,SM2必须为零。,当串行口工作在方式1时,若SM2=1,则只有串行口接收到的停止位为1时,才将接收到的前8位数据送入SBUF,接收到的停止位进入RB8,并将 RI置1,产生中断请求,通知CPU接收数据。若接收到的停止位为0,则将收到的8位数据丢弃,RI清零,不启动中断。SM2=0时正常接收,即不论串行口接收到的停上位(RB8)状态如何,一律将接收到的前8位数据装入SBUF,并将 RI置1,产生中断请求。一般在工作方式1时将SM2置为0。,当串行口工作在方式2和方式3时,若SM2=1,则规定只有当串行口接收到的第9位数据(RB8)为1

26、时,才启动双缓冲,将接收到的前8位数据送入SBUF,并将 RI置1,产生中断请求。若第9位数据(RB8)为0,则将收到的8位数据丢弃,RI清零,不启动中断。SM2=0时正常接收,即不论串行口接收到的第9位数据(RB8)状态如何,一律将接收到的前8位数据装入SBUF,并将 RI置1,产生中断请求。,3.REN允许/禁止串行口接收控制位 可通过软件对该位进行设置,实现串行口接收过程的启停控制。REN=1,允许接收;REN=0,禁止接收。4.TB8第9位发送数据 当串行口工作在方式2和方式3时,TB8的内容是要发送的数据格式中的第9位,其值由程序设置。在双机通信过程中,TB8常作为奇偶校验位使用。在

27、多机通信中,TB8常作为地址信息与数据信息的区别标志。在方式1中,TB8为停止位,方式0中不使用TB8。,5.RB8第9位接收数据 当串行口工作在方式2和方式3时,RB8存放接收到的第9位数据,代表着前8位数据的某些特征(如奇偶校验标志,地址或数据标志等)。故程序可根据RB8的状态决定对所接收到的数据的处理。在方式1中,RB8为接收到的停止位,方式0中不使用RB8。,6.TI发送结束和发送中断标志位 发送前,TI必须清零。串行口工作在方式0时,8位数据发送完毕,该标志由单片机内部硬件自动置1,当串行口工作在其它方式时,该位在一个数据帧的停止位开始发送时,由单片机内部硬件自动置1。所以TI=1可

28、表示为一帧发送结束的标志,其状态可供程序查询或形成中断请求,TI的清零由软件完成。7.RI接收结束和接收中断标志位 接收前,RI必须清零。串行口工作在方式0时,8位数据接收完毕后该标志位由单片机内部硬件自动置1。当串行口工作其它方式时,该位在串行口接收到停止位时由单片机内部硬件自动置1。所以RI=1可表示为一帧接收结束的标志,其状态可供程序查询或形成中断请求,RI的清零也由软件完成。,电源控制寄存器PCON 对于HMOS型单片机来说,仅利用PCON中的一个标志位SOMD作为通信波特率的控制位使用PCON的单元地址为87H,其内部各位均不能进行位寻址,若需对其中的某位进行设定,只能通过对87H单

29、元整个字节的写入来完成。PCON中有效位的位符号如表9.4所示。,表9.4 PCON中有效位的位符号 1.SMOD为串行口波特率倍增位,当串行口工作在方式1和方式3时,其波特率可调。调节手段之一便是利用SMOD。若SMOD=0,波特率不倍增;若SMOD=1,则选定的波特率倍频1倍;系统复位时,SMOD自动清零。2.GF1、GF0、PD、IDL这4位用于CHMOS型单片机的掉电方式控制。对于HMOS型单片机而言,该4位无定义。,中断允许寄存器IE 该寄存器中的ES位是专门用于串行口中断管理的标志,称之为串行口中断允许位。其位地址为0ACH,我们可以通过在程序中安排SETB ES和CLR ES指令

30、来对其置1和清零,从而实现对串行口中断的开启和关闭。当ES=0时禁止串行口中断功能,当ES=1时开启串行口中断功能。,9.4 串行口的工作方式,MCS51单片机的串行口共有4种工作方式,我们可以通过对SCON中的SM0、SM1编程的方法来选择其工作方式。工作方式0(SM0SM1=00)1.工作方式0时串口的结构与特点 在该方式下串口中的内部结构被定义成一个8位同步移位寄存器使用,用于实现单片机I/O端口的扩展。其特点具体表现为:必须由外接移位寄存器配合。即由串入并出移位寄存器来扩展输出端口;由并入串出移位寄存器来扩展输入端口。,此时引脚RXD(P3.0)固定作为数据移位的输入端(接收时)和输出

31、端(发送时);而引脚TXD(P3.1)则固定作为提供移位时钟脉冲的输出端。移位数据的发送和接收格式以一个字节为一组。其发送顺序为低位先发,高位后发。其接收顺序为低位先收,高位后收。,2.工作过程:方式0输出 采用“串入并出”功能的移位寄存器(如CD4094或74LS164等)与串行口配合,实现将串行口扩展成并行输出口。其扩展结构如图9.8所示。,运作时,通过指令将需要发送的数据写入串行口数据缓冲寄存器SBUF,发送过程就会自动启动,串口将SBUF中的内容按低位在先,高位在后的顺序自动由RXD端引脚移出,并同时在TXD引脚自动提供同步移位时钟脉冲。在同步移位时钟脉冲控制下,数据逐位移入外接“串入

32、并出”移位寄存器CD4094(时钟正跳变时串入)。当8位数据全部移出后,SCON寄存器中的发送中断标志TI被自动置1,程序员可以在程序中采用查询或中断的方法来编制应用程序。本例采用查询方式,并用单片机的P1.0对CD4094芯片的STB引脚输出控制信号,在时钟脉冲的作用下,STB低电平时CD4094串行移入并锁存单片机发来的数据,高电平时将数据并行输出,完成串入并出的功能。,方式0输入 采用“并入串出”功能的移位寄存器(如CD4014或74LS165等)与串行口配合使用,实现将串行口扩展成并行输入口。其扩展结构如图9.8所示。图中8位数据从D0D7并入,单片机的P1.1与CD4014的P/S连

33、接,通过P1.1向CD4014的P/S输出控制信号,P/S置1时禁止数据从CD4014串出,当P/S置0时,在同步移位时钟脉冲的控制下,数据从CD4014串出,。程序中用指令对单片机SCON中的REN标志置1,启动单片机的串行接收,此时TXD端自动提供同步移位时钟脉冲给外接移位寄存器,在同步移位时钟脉冲的控制下,“并入串出”寄存器的数据位自动按先低后高的顺序通过RXD引脚串行移入单片机的串行口,由串行口自动接收。当接收到8位数据时,串行口自动置位RI,程序员可在程序中采用查询或中断的方法,读取串行口输入数据缓冲器SBUF中的内容。,波特率的设定 当串行口工作在方式0时,移位操作(串入或串出)的

34、波特率是固定的,其值为单片机晶振频率的1/12,表明单片机是利用一个机器周期完成1位二进制信息的传送,若我们采用fosc表示单片机的晶振频率,则波特率fosc/12,当fosc12MHz时,其串行口的传送波特率为1Mbps,即每1微秒移位1次。应用举例 例9.1 使用CD4014“并入串出”移位寄存器的并行输入端外接8个开关,作为单片机系统的输入设备。使用CD4094“串入并出”移位寄存器的并行输出端外接8个发光二极管作为单片机系统的输出设备,连接图如图9.8所示,试编写程序完成将开关的状态读入,并由发光二级管进行显示(开关合上为亮,断开为暗)的任务。,编制程序为:MOV SCON,#00H

35、CLR ES;关中断 LOOP:CLR P1.0;关CD4094并出 CLR P1.1;开CD4014串出 MOV SCON,#10H;启动单片机输入 JNB RI,$;等待接收完成 SETB P1.1;关CD4014串出 CLR RI;清接收结束标志 MOV SCON,#00H;关单片机输入 MOV A,SBUF;读取开关输入状态 CPL A;状态取反 MOV SBUF,A;启动单片机串行口输出 JNB TI,$;等待发送完成 SETB P1.0;开CD4094并出 ACALL DELAY;调用延时子程序,保持输出延时 CLR TI;清发送结束标志 AJMP LOOP;继续循环,工作方式11

36、.工作方式1时串口的结构与特点 当串行口规定为方式1时,其内部结构定义为一个10位信息(8位数据)的异步串行通信接口,UART使用RXD(P3.0)引脚作为串行数据输入线,使用TXD(P3.1)引脚作为串行数据输出线。该方式是以10位信息位作为一帧,其中1位起始位,8位数据位D0D7,1位停止位,其帧格式如下:,2.串行口工作方式1的工作过程 方式1输出(发送)过程 该过程是由程序中安排一条写发送寄存器SBUF的指令来启动的,当数据送入输出缓冲寄存器后,UART硬件自动加入起始位和停止位,在单片机内部移位脉冲的作用下,按规定的波特率,由外部引脚TXD端按序依次串行输出,完成一个10位数据帧的串

37、行传送。,一个数据帧发送完毕后,UART使TXD引脚维持在mark状态,并将SCON寄存器中断标志TI置位,发送过程结束。程序员可利用查询或中断方法通知CPU进行下一个字符的发送,以上过程以数据写入输出寄存器SBUF开始启动,以SCON中的TI标志为1时结束,程序员不需加以干预。,方式1输入(接收)过程 该过程进行的前提是SCON中的REN位置1。当REN=1时,接收过程启动,串口UART自动采样RXD引脚,当采样到从mark到space状态的跳变时,将其认定为起始位,然后在内部移位脉冲的控制下,以规定的波特率将RXD引脚上的数据逐位移入接收移位寄存器中,停止位移入后,被送入SCON的RB8位

38、。然后,数据位D0D7被锁入接收SBUF,并置位RI。可使用查询或中断的方法通知CPU从SBUF中读走刚接收到的数据。以上过程从REN=1启动,到SCON中的RI标志=1结束。中间过程自动完成,程序员不需加以干预。,3.串口在方式1下的波特率设定:在该方式下,数据传送时的波特率可以根据系统的具体要求加以调节,此时串行口以定时/计数器1工作在方式2时作为其波特率发生器,并用PCON中的SMOD位对波特率进行倍增控制。公式为:波特率()(定时/计数器1的溢出率)定时/计数器1的溢出率/12(256初值)波特率 定时器初值256,4.方式1应用举例 例9.2设单片机采用12MHz晶振频率,串行口以方

39、式1工作,定时/计数器1工作于定时器方式2作为其波特率发生器,波特率选定为1200bps。试编程实现单片机从键盘上接收所键入的字符,并把它送到CRT显示器显示的功能。程序如下:CRT:MOV SP,#60H;设栈指针 MOV TMOD,#20H;设T1为方式2,作定时器使用 MOV TL1,#0E6H;设波特率为1200bps MOV TH1,#0E6H;设置重置值 SETB TR1;启动T1运行 MOV PCON,#00H;SMOD=0,波特率不倍增 MOV SCON,#40H;设串行口为方式1,关接收 MOV SBUF,#3FH;启动发送提示符“?”到CRT JNB TI,$;等待发送结束

40、,KEY:MOV SCON,#50H;设串行口工作方式1,启动接收 WAIT:JBC RI,GET;等待字符接收结束 AJMP WAITGET:MOV A,SBUF;接收键入字符 DIR:MOV SCON,#40H;关接收 MOV SBUF,A;发送字符到显示器 JNB TI,$;等待发送结束 CLR TI;清发送标志 AJMP KEY;循环至下一字符的键入,工作方式21.工作方式2时串口的结构与特点 串口的内部结构定义为一个11位(9位数据位)的异步串行通信接口UART。使用其RXD(P3.0)引脚作为串行数据输入线,使用TXD(P3.1)引脚作为串行数据输出线。以11位信息位为一帧,其中1

41、位起始位、8位数据位、1位校验位和1位停止位。其帧格式如下:,2.方式2下串行口的工作过程。数据的发送过程 首先根据要传送的8位数据的特征(如奇偶、地址/数据特征)决定第9个信息位的状态,并利用SETB TB8或CLR TB8指令将其设置在SCON寄存器的TB8上。然后将要传送的8位数据D0D7通过MOV指令写入串行口的发送数据缓冲器SBUF,启动串口的自动发送过程。UART自动地按起始位、数据位D0D7、校验位、停止位的顺序将该帧信息以规定的波特率逐一从TXD引脚移出。待发送完毕后自动将SCON中的TI位置1,表示发送过程结束,编程时可通过查询或中断的方式开始新的信息帧的发送。,数据的接收过

42、程 首先由指令设置SCON中的REN标志,将REN置1,启动串行口在方式2下的接收过程,UART自动地按规定的波特率从引脚RXD上逐位接收信息,移入串口中的接收移位寄存器。接收完毕后,将接收移位寄存器中的数据位D0D7锁入SBUF。同时将校验位送入SCON中的RB8位,并自动将SCON中的RI置1,表示接收过程结束。编程时可通过查询和中断方式对下一步进行处理。3 方式2下串行口波特率的设定方式2下的波特率有倍频和不倍频二种选择,由PCON中的SMOD决定。当SMOD=1时,波特率=(fosc)/64=fosc/32(倍频)当SMOD=0时,波特率=(fosc)/64=fosc/64(不倍频),

43、4.方式2下串行口的应用举例 例9.3串行口工作在方式2时,第9位常用于作为奇偶校验位使用,下面发送子程序的功能是将50H5FH单元中的内容从串行口上发送出去。程序编制如下:TRT:MOV SCON,#80H;方式2编程 MOV PCON,#80H;取波特率为倍频 MOV RO,#50H;数据块起始地址50H送R0 MOV R7,#10H;字节数10H送R7 LOOP:MOV A,RO;取数据送A MOV C,P;A中数据的奇偶标志P送TB8 MOV TB8,C MOV SBUF,A;数据送SBUF,启动发送WAIT:JBC TI,CONT;判断发送过程是否结束 SJMP WAITCONT:I

44、NC RO DJNZ R7,LOOP RET,工作方式31.工作方式3时串行口的结构和特点 在方式3下,串行口的结构与方式2相同,传送的帧格式也相同,均为每帧11位信息位,各位的定义也相同。唯一的区别在于工作方式3通信的波特率是可编程的,而不是固定的。2.方式3下串行口的工作过程 在方式3下,串行口的发送和接收过程与方式2的发送和接收过程相同。3.方式3下串行口波特率的确定 方式3下串行口波特率的确定与方式1完全相同,即由定时/计数器1的溢出率和PCON中的SMOD位的状态决定,我们可以通过设置定时/计数器1的初值和SMOD位的方法来调整串行口的通信波特率,使其达到实际通信的要求。,4.方式3

45、下串行口通信的应用举例 例9.4 编制串行口的接收程序。其功能为通过串行口以方式3接收16个字符,并写入内部RAM中以50H开始的存储单元之中。设fosc=11.0592MHz。波特率为2400bps。定义PSW.5(F0)为奇偶校验出错标志位,“1”出错,“0”正确。其程序如下:RVE:MOV TMOD,#20H;TMOD初始化 MOV TH1,#0F4H;置初值 MOV TL1,#0F4H;置重置值 SETB TR1;启动定时/计数器1 MOV R0,#50H;地址指针R0置初值 MOV R7,#10H;10H送长度计数器R7 MOV SCON,#0D0H;串行口规定为方式3接收 MOV

46、PCON,#00H;SMOD规定为00WAIT:JBC RI,PRI;等待接收到的数据,SJMP WAIT PRI:MOV A,SBUF;接收数据 A JNB PSW.0,PNP;判断接收数据的奇偶状态P JNB RB8,PER;P不等于RB8转出错 SJMP RIGHT;P等于RB8存储接收数据 PNP:JB RB8,PER;P不等于RB8转出错RIGHT:MOV R0,A;数据RAM缓冲区 INC R0;修改缓冲区指针 DJNZ R7,WAIT;判数据块接收是否结束?CLR PSW.5;正确接收完16个字节 RET PER:SETB PSW.5;奇偶校验出错 RET,串行通信编程的程序流程

47、 串行通信的编程有两种方式,一种是通过指令查询一帧数据是否发送完的标志位TI(TI=1,一帧发送完,TI1,没有发送完)和通过指令查询一帧数据是否送到的标志位RI(RI=1,一帧数据已送到,RI1,没有送到),称之查询方式;另一种是设置中断允许,以TI和RI作为中断请求标志位,TI=1或RI=1均可引发中断,称之为中断方式。在编程中还要注意的是TI和RI两个标志位是以硬件自动置1,而以软件清零的。1.以查询方式发送和接收的程序流程,发送流程 接收流程 图7.9 查询方式程序流程,2.以中断方式发送和接收的程序流程 主程序 中断服务程序 图7.10 中断发送程序流程,主程序 中断服务程序 图7.

48、11 中断接收程序流程,例7.5设甲、乙两机利用串行口以串行方式1进行通信,采用定时/计数器1,工作在方式2作为波特率发生器,波特率为2400bps,晶振频率采用6MHz。甲机将片外RAM中从1000H开始的少于256字节的数据从串口发送出去,发送的数据字节数在R7中,用R6作累加和寄存器。甲机发送数据之前先发联络信号“?”(ASCII码为3FH),乙机有应答后,先发送待发送的数据的字节数,再发数据,当数据发送完还要向乙机发送一个累加校验和。乙机应答信号是“.”(ASCII码为2EH),乙机先接收数据长度,然后接收数据并送片外1000H为首地址的RAM 存储单元中,同时将数据进行累加求一个累加

49、和,最后要与甲机发送来的累加和进行累加和校验,如果一致,发“O”(ASCII码为4FH)以示接收正确,如果不一致,发“F”(ASCII码为46H),要甲方重发。,通过前述波特率计算公式计算得到,定时/计数器1的定时计数初值FAH,设甲机以查询方式发送,乙机以中断方式接收。编制程序如下:甲机查询方式发送子程序:SEND:MOV TMOD,#20H;发送初始化 MOV SCON,#50H;MOV TH1,#0FAH;MOV TL1,#0FAH;SETB TR1;MOV A,#3FH;发“?”,MOV SBUF,A;JNB TI,;CLR TI;JNB RI,;等乙机应答 CLR RI;MOV A,

50、SBUF;接收应答 CJNE A,#2EH,SEND;应答信号是“”,则发字节数 MOV A,R7;发字节数 MOV R3,A;MOV SBUF,A;JNB TI,;CLR TI;MOV R6,#00H;准备发数据 MOV DPTR,#1000H;,SEND1:MOVX A,DPTR;发数据 MOV SBUF,A;JNB TI,;CLR TI;ADD A,R6;累加 MOV R6,A;INC DPTR;地址加1 DJNZ R7,SEND1;未发完继续 MOV A,R6;发累加和 MOV SBUF,A;JNB TI,CLR TI;JNB RI,;等乙机的校验结 CLR RI;MOV A,SBUF

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号