《输入输出中断定时与串行通信课件》由会员分享,可在线阅读,更多相关《输入输出中断定时与串行通信课件(165页珍藏版)》请在金锄头文库上搜索。
1、第第4 4章章 输入输入/ /输出、中断、定时输出、中断、定时与串行通信与串行通信主要内容:主要内容: 介绍介绍I/OI/O的基本概念、的基本概念、I/OI/O数据传递方式,中数据传递方式,中断的基本概念,串行通信基本概念。主要介绍单断的基本概念,串行通信基本概念。主要介绍单片机中断系统结构、特点及使用方法;片内定时片机中断系统结构、特点及使用方法;片内定时器器/ /计数器结构、原理及使用;片内串行口结构、计数器结构、原理及使用;片内串行口结构、原理以及双机和多机通信实现方法;原理以及双机和多机通信实现方法;PCPC机与单片机与单片机通信实现方法。机通信实现方法。1输入输出中断定时与串行通信课
2、件4.1 4.1 输入输入/ /输出概述输出概述 4.1.14.1.1输入输入/ /输出的基本概念输出的基本概念 输入输入/ /输出设备又称为计算机外围设备;输出设备又称为计算机外围设备;简称外设或简称外设或I IO O设备。单片机应用系统常设备。单片机应用系统常用的输入设备有按钮、键盘、各种传感器用的输入设备有按钮、键盘、各种传感器等。常用的输出设备有等。常用的输出设备有LED(LED(发光二极管显发光二极管显示器示器) )、LCD(LCD(液晶显示器液晶显示器) )等。等。二、输入输出信息种类二、输入输出信息种类二、输入输出信息种类二、输入输出信息种类 计算机与输入输出设备之间交换信计算机
3、与输入输出设备之间交换信计算机与输入输出设备之间交换信计算机与输入输出设备之间交换信息,有三种信息形式:息,有三种信息形式:息,有三种信息形式:息,有三种信息形式:数据信息、控制信数据信息、控制信数据信息、控制信数据信息、控制信息息息息和和和和状态信息状态信息状态信息状态信息。一、输入一、输入/ /输出设备输出设备2输入输出中断定时与串行通信课件 三、输入三、输入/ /输出接口与端口输出接口与端口 CPUCPUCPUCPU与外设,并不直接相连,而是通过接口电路进与外设,并不直接相连,而是通过接口电路进与外设,并不直接相连,而是通过接口电路进与外设,并不直接相连,而是通过接口电路进行连接。行连接
4、。行连接。行连接。输入输入/ /输出设备与主机的连接部分称为输入输出设备与主机的连接部分称为输入/ /输出接口,简称输出接口,简称I IO O接口。接口。 输入输入/ /输出接口的作用是:输出接口的作用是: 2.2.锁存与缓冲作用:一锁存与缓冲作用:一般用般用D D触发器进行锁存。触发器进行锁存。 1.1.隔离与寻址作用:例隔离与寻址作用:例如右图用三态门组成的接口。如右图用三态门组成的接口。3.3.信号电平或形式变换:信号电平或形式变换:例如例如A/DA/D、D/AD/A、232/485232/485的变换。的变换。3输入输出中断定时与串行通信课件 通常接口电路中可编址并能进行读写操作的寄存
5、器称通常接口电路中可编址并能进行读写操作的寄存器称为端口或简称口。一个接口电路中可能包括多个口,例如为端口或简称口。一个接口电路中可能包括多个口,例如数据口、状态口、控制口,即包含有多个口地址。同一单数据口、状态口、控制口,即包含有多个口地址。同一单片机系列中,片内集成的片机系列中,片内集成的I/OI/O模块各有不同,当片内模块各有不同,当片内I/OI/O不不能满足实际需求时,可扩展外部能满足实际需求时,可扩展外部I/OI/O。 四、四、I/OI/O的分类的分类 按照信号的传递方式,可将按照信号的传递方式,可将I/OI/O分为串行和并行两类。分为串行和并行两类。 按照按照I/OI/O连接的信号
6、大致可分为模拟量、数字量、脉冲连接的信号大致可分为模拟量、数字量、脉冲量量I/OI/O三类。三类。 五、数据总线隔离技术五、数据总线隔离技术 为了正确地进行数据的为了正确地进行数据的I/OI/O传递,必须解决数据总线的传递,必须解决数据总线的隔离问题,即在任一时刻,隔离问题,即在任一时刻,CPUCPU只对一个只对一个I/OI/O进行操作。为进行操作。为此,对输出设备的接口电路要使用锁存器,对输入设备的此,对输出设备的接口电路要使用锁存器,对输入设备的接口电路,使用三态缓冲器。接口电路,使用三态缓冲器。 4输入输出中断定时与串行通信课件六、单片机六、单片机I/OI/O编址方式编址方式 每一个每一
7、个I/OI/O都需要编址,以便都需要编址,以便CPUCPU分别进行寻址。常分别进行寻址。常用的用的I/OI/O编址方式有两种:独立编址方式和统一编址方式。编址方式有两种:独立编址方式和统一编址方式。 独立编址方式独立编址方式: : I/O I/O和存储器分开编址,有各自独立和存储器分开编址,有各自独立的地址空间,采用不同的控制总线,使用不同的指令分别的地址空间,采用不同的控制总线,使用不同的指令分别寻址。寻址。 统一编址方式统一编址方式: : I/O I/O与数据存储器在同一地址空间编与数据存储器在同一地址空间编址,寻址方式相同,采用相同的地址、数据、控制总线,址,寻址方式相同,采用相同的地址
8、、数据、控制总线,使用相同的指令寻址。使用相同的指令寻址。5输入输出中断定时与串行通信课件4.1.2 4.1.2 4.1.2 4.1.2 输入输出的传送方式输入输出的传送方式输入输出的传送方式输入输出的传送方式 单片机系统中有不同类型的单片机系统中有不同类型的I/OI/O设备,由于设备,由于I/OI/O所连接所连接的外设或的外设或I/OI/O接口本身的速度与接口本身的速度与CPUCPU的处理速度相比,通常的处理速度相比,通常低于低于CPUCPU的速度,为了实现数据的正确传输,的速度,为了实现数据的正确传输,CPUCPU通常采用通常采用三种控制方式,即无条件传送方式、查询方式和中断控制三种控制方
9、式,即无条件传送方式、查询方式和中断控制方式。方式。一、无条件传送方式一、无条件传送方式 I/OI/O或与或与I/OI/O连接的外设随时都处于准备好状态,这时连接的外设随时都处于准备好状态,这时CPUCPU不需要测试外设状态,随时直接对其进行操作。不需要测试外设状态,随时直接对其进行操作。 6输入输出中断定时与串行通信课件查询方式流程图 二、查询方式二、查询方式 查询方式是指查询方式是指CPUCPU在执行输入在执行输入输出指令之前,先对外围设备的输出指令之前,先对外围设备的状态进行检测,以判别外设是否状态进行检测,以判别外设是否准备就绪。如果已经准备就绪,准备就绪。如果已经准备就绪,CPUCP
10、U就可以执行输入输出指令。如就可以执行输入输出指令。如果还没有准备就绪,必须继续查果还没有准备就绪,必须继续查询(如右图所示)。询(如右图所示)。 查询方式的特点:实现简单,查询方式的特点:实现简单,通用性强,适合各种设备数据的通用性强,适合各种设备数据的输入输入/ /输出;其缺点是需要占用输出;其缺点是需要占用CPUCPU的时间,外设速度较慢时,效的时间,外设速度较慢时,效率较低。率较低。 7输入输出中断定时与串行通信课件三、中断方式三、中断方式 中断方式下外设的状态信号以中断申请方式输入中断方式下外设的状态信号以中断申请方式输入CPUCPU。 CPUCPU响应中断,暂停正在执行的程序,转而
11、执行中断服务响应中断,暂停正在执行的程序,转而执行中断服务程序,在中断服务程序中对外设进行输入程序,在中断服务程序中对外设进行输入/ /输出操作,中输出操作,中断返回后,再继续执行被中断的程序。断返回后,再继续执行被中断的程序。 中断方式可提高单片机系统的效率。中断方式可提高单片机系统的效率。8输入输出中断定时与串行通信课件4.2.1 4.2.1 4.2.1 4.2.1 中断的概念中断的概念中断的概念中断的概念 当当CPUCPU正在处理某件事正在处理某件事情的时候,内部或外部发生情的时候,内部或外部发生的某一事件的某一事件( (如一个电平的如一个电平的变化,一个脉冲沿的发生或变化,一个脉冲沿的
12、发生或定时器计数溢出等定时器计数溢出等) )请求请求CPUCPU迅速去处理,于是,迅速去处理,于是,CPUCPU暂暂时中止当前的工作,转去处时中止当前的工作,转去处理所发生的事件。处理完该理所发生的事件。处理完该事件以后,再回到原来被中事件以后,再回到原来被中止的地方,继续原来的工作,止的地方,继续原来的工作,这样的过程称为这样的过程称为中断中断。 4.2 MCS-514.2 MCS-51单片机的中断系统单片机的中断系统9输入输出中断定时与串行通信课件一、中断源一、中断源 中断源是指中断源是指向向CPUCPU申请中断的事件来源申请中断的事件来源。例如。例如外部输入输出设备,定时外部输入输出设备
13、,定时/ /计数器,串行接口都可计数器,串行接口都可以作为中断源。以作为中断源。二、中断优先权二、中断优先权 中断优先权也叫中断排序,是用户根据中断中断优先权也叫中断排序,是用户根据中断源的性质和重要性自行排列的先后次序。在多个源的性质和重要性自行排列的先后次序。在多个中断源同时提出申请时,保证优先权高的中断源中断源同时提出申请时,保证优先权高的中断源首先得到响应,纵使首先得到响应,纵使CPUCPU正在处理一个中断,也要正在处理一个中断,也要暂时停止较低级的中断。响应优先权更高的中断暂时停止较低级的中断。响应优先权更高的中断源请求。这个过程称为源请求。这个过程称为中断嵌套中断嵌套或或多重中断多
14、重中断。 优先权排序可以用软件也可以用硬件实现。优先权排序可以用软件也可以用硬件实现。10输入输出中断定时与串行通信课件三、中断系统的功能:三、中断系统的功能:(1)(1)可实现高速可实现高速CPU CPU 与慢速外设之间的配合。与慢速外设之间的配合。因为许多外围设因为许多外围设备的速度比备的速度比CPUCPU慢,二者间无法同步地进行数据交换。为此慢,二者间无法同步地进行数据交换。为此可通过中断方式实现可通过中断方式实现CPUCPU与外围设备之间的协调工作。与外围设备之间的协调工作。 (2)(2)可实现实时处理。可实现实时处理。实时处理是自动控制系统对计算机提出实时处理是自动控制系统对计算机提
15、出的要求,各控制参量可以随时向的要求,各控制参量可以随时向CPUCPU发出中断申请,而发出中断申请,而CPUCPU也必须做出快速响应和及时处理,以便使被控对象总保也必须做出快速响应和及时处理,以便使被控对象总保持在最佳工作状态。持在最佳工作状态。(3) (3) 实现故障的紧急处理。实现故障的紧急处理。当外围设备或计算机出现故障时,当外围设备或计算机出现故障时,可以利用中断系统请求可以利用中断系统请求CPUCPU及时处理这些故障。及时处理这些故障。(4)(4)便于人机联系。便于人机联系。操作人员可以利用键盘中断等,实现人机操作人员可以利用键盘中断等,实现人机联系,完成人的干预。联系,完成人的干预
16、。11输入输出中断定时与串行通信课件 四、中断响应过程四、中断响应过程 1) 1)寻找中断源。(寻找中断源。(中断识别中断识别) 2) 2)将当前将当前PCPC值值( (下一条指令的下一条指令的地址地址) )压入堆栈压入堆栈( (即即保护断点保护断点),以),以便中断返回时使用。便中断返回时使用。 3) 3)寻找中断入口,以便转向执寻找中断入口,以便转向执行中断服务程序。行中断服务程序。 4) 4)保护现场。保护现场。 5) 5)执行中断服务程序(执行中断服务程序(中断处中断处理理)。)。 6) 6)执行完中断服务程序后执行完中断服务程序后, ,恢恢复现场并返回主程序(复现场并返回主程序(中断
17、返中断返回回)。)。12输入输出中断定时与串行通信课件4.2.2 MCS-514.2.2 MCS-514.2.2 MCS-514.2.2 MCS-51单片机的中断系统单片机的中断系统单片机的中断系统单片机的中断系统一、中断源与中断标志位一、中断源与中断标志位8051/80318051/8031型型单单片片机机提提供供了了5 5个个中中断断源源:两两个个外外部部中中断断源源和和三三个个内内部部中中断断源源。每每一一个个中中断断源源都都有有一一个个中中断断申申请请标标志志,但但串串行行口口占占两两个个中中断断标标志志位位,一一共共六六个个中中断断标标志志,下下表给出了它们各自的名称。表给出了它们各
18、自的名称。分分 类类中断源名称中断源名称中断申请标志中断申请标志触发方式触发方式中断入口地址中断入口地址外部中断外部中断外部中断外部中断0 0IE0(TCON.1)IE0(TCON.1)INT0(P3.2)INT0(P3.2)引脚上的低引脚上的低电平电平/ /下降沿引起的中断下降沿引起的中断0003H0003H内部中断内部中断T0T0定时器定时器/ /计数器计数器0 0中断中断IF0(TCON.5)IF0(TCON.5)T0T0计数器溢出后引起的计数器溢出后引起的中断中断000BH000BH外部中断外部中断外部中断外部中断1 1IE1(TCON.3)IE1(TCON.3)INT1(P3.3)I
19、NT1(P3.3)引脚上的低引脚上的低电平电平/ /下降沿引起的中断下降沿引起的中断0013H0013H内部中断内部中断T1T1定时器定时器/ /计数器计数器1 1中断中断IF1(TCON.7)IF1(TCON.7)T1T1计数器溢出后引起的计数器溢出后引起的中断中断001BH001BH内部中断内部中断串口中断串口中断RI (SCON.0)RI (SCON.0)TI ( SCON.1)TI ( SCON.1)串行口接收完成或发送串行口接收完成或发送完一帧数据后引起的中完一帧数据后引起的中断断0023H0023H中断源和中断申请标志中断源和中断申请标志13输入输出中断定时与串行通信课件MCS -
20、 51MCS - 51中断系统中断系统MCS - 51MCS - 51中断系统结构框图中断系统结构框图中断源中断源中断选择中断选择中断标志中断标志14输入输出中断定时与串行通信课件 1.1.中断源中断源(1) 1) 外外部部中中断断0 0请请求求,由由P3.2P3.2引引脚脚输输入入。可可由由用用户户设设定定为为两两种种触触发发方方式式,(电电平平触触发发方方式式还还是是边边沿沿触触发发方方式式)。一一旦旦输输入入信信号号有有效效,则则向向CPUCPU申申请请中中断断,并且将中断标志并且将中断标志IE0IE0置置1 1。(2) 2) 外外部部中中断断1 1请请求求,由由P3.3P3.3引引脚脚
21、输输入入。亦亦可可由由用用户户设设定定为为电电平平触触发发方方式式还还是是边边沿沿触触发发方方式式。一一旦旦输输人人信信号号有有效效,则则向向CPUCPU申申请请中中断断,并并将将中中断断标标志志IE1IE1置置1 1。 (3 3)片片内内定定时时器器T0T0溢溢出出中中断断请请求求。当当定定时时器器T0T0产产生生溢出时,溢出时,T0T0中断请求标志中断请求标志TF0 TF0 置置1 1,请求中断处理。,请求中断处理。 (4)4)片片内内定定时时器器T1T1溢溢出出中中断断请请求求。当当定定时时器器T1T1产产生生溢溢出时,出时,T1T1中断请求标志中断请求标志TF1TF1置置l l,请求中
22、断处理。,请求中断处理。 (5)5)片片内内串串行行口口发发送送接接收收中中断断请请求求。当当通通过过串串行行口口发发送送或或接接收收完完一一帧帧串串行行数数据据时时,串串行行口口中中断断请请求求标标志志TITI或或RIRI置置1 1,请求中断处理。,请求中断处理。 15输入输出中断定时与串行通信课件因此,与中断有关的特殊功能寄存器有:因此,与中断有关的特殊功能寄存器有: 中断允许控制寄存器中断允许控制寄存器(IE) (IE) 定时器定时器/ /计数器控制寄存器计数器控制寄存器(TCON) (TCON) 中断优先级控制寄存器中断优先级控制寄存器(IP) (IP) 串行口控制寄存器串行口控制寄存
23、器(SCON )(SCON ) MCS-51 MCS-51单片机的中断系统中,使用何种中断,采用单片机的中断系统中,使用何种中断,采用何种触发方式,可通过定时器何种触发方式,可通过定时器/ /计数器控制寄存器计数器控制寄存器TCONTCON和串行口控制寄存器和串行口控制寄存器SCONSCON的有关位来规定。只要根据这的有关位来规定。只要根据这些位的状态就能确定有无中断请求及中断的来源。些位的状态就能确定有无中断请求及中断的来源。 在中断源与在中断源与CPUCPU之间有二级中断允许控制逻辑电路,之间有二级中断允许控制逻辑电路,一级为总允许,第二级为源允许,由一级为总允许,第二级为源允许,由IEI
24、E控制。控制。 中断优先级由中断优先级由IPIP控制。控制。16输入输出中断定时与串行通信课件2.2.中断请求标志中断请求标志 (1)TCON(1)TCON的中断标志的中断标志 TCONTCON是是专专用用寄寄存存器器,字字节节地地址址为为88H88H,它它锁锁存存了了外外部部中中断请求标志及断请求标志及T0T0和和T1T1的溢出中断请求标志。的溢出中断请求标志。TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 IT0/ IT1IT0/ IT1: 外部中断请求的触发方
25、式选择位:外部中断请求的触发方式选择位: =0 =0:在:在INT0/INT1INT0/INT1端申请中断的信号低电平有效端申请中断的信号低电平有效; ; =1 =1:在:在INT0/INT1INT0/INT1端申请中断的信号负跳变有效端申请中断的信号负跳变有效. . IE0/IE1 IE0/IE1:外部中断申请标志位:外部中断申请标志位: =0 =0:没有外部中断申请;:没有外部中断申请; =1 =1:有外部中断申请。:有外部中断申请。 TF0/TF1TF0/TF1:定时器溢出中断申请标志位:定时器溢出中断申请标志位: =0 =0:定时器未溢出;:定时器未溢出; =1 =1:定时器溢出申请中
26、断,进中断后自动清零。:定时器溢出申请中断,进中断后自动清零。 TR0/TR1 TR0/TR1:定时器运行启停控制位:定时器运行启停控制位: =0 =0:定时器停止运行;:定时器停止运行; =1 =1:定时器启动运行。:定时器启动运行。17输入输出中断定时与串行通信课件(2)SCON(2)SCON的中断标志的中断标志 SCONSCON是串行口控制寄存器,与中断有关的是它的低两位是串行口控制寄存器,与中断有关的是它的低两位TITI和和RIRI。 TITI(SCON.1SCON.1):串行口发送中断标志位。每发送完一):串行口发送中断标志位。每发送完一个串行帧,由硬件置位个串行帧,由硬件置位TIT
27、I。CPUCPU响应中断时,不能清除响应中断时,不能清除TITI,TITI必须由软件清除。必须由软件清除。 RIRI(SCON.0)(SCON.0):串行口接收中断标志位,当允许串行口接:串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位收数据时,每接收完一个串行帧,由硬件置位RIRI。同样,。同样,RIRI必须由软件清除。必须由软件清除。SCON RI RI TITIRB8TB8RENSM2SM1SM018输入输出中断定时与串行通信课件二、二、MCS51MCS51的中断管理的中断管理 1 1、中断允许寄存器、中断允许寄存器IEIE中断的允许与开放中断的允许与开放 在
28、中断源与在中断源与CPUCPU之间有两级中断允许控制逻辑电路,一级之间有两级中断允许控制逻辑电路,一级为总允许,第二级为源允许,由为总允许,第二级为源允许,由IEIE控制。控制。 19输入输出中断定时与串行通信课件2 2中断优先级寄存器中断优先级寄存器IPIP 中断优先级控制中断优先级控制内部自然优先级:内部自然优先级: 入口地址入口地址INT0高高0003HT0000BHINT10013HT1001BHTI/RI低低0023H20输入输出中断定时与串行通信课件3.3.同一级中的同一级中的5 5个中断源的优先顺序个中断源的优先顺序/INT0/INT0中断中断 T0 T0溢出中断溢出中断 /IN
29、T1 /INT1中断中断 T1 T1溢出中断溢出中断 串口中断串口中断高高低低自然优先级自然优先级中断优先原则:中断优先原则:(概括为四句话)(概括为四句话)1)1)低级不中断高级低级不中断高级2)2)高级不睬低级高级不睬低级3)3)同级不能打断同级不能打断4)4)同级、同时中断,按同级、同时中断,按自然优先级自然优先级21输入输出中断定时与串行通信课件MCS - 51MCS - 51中断系统中断系统MCS - 51MCS - 51中断系统结构框图中断系统结构框图中断源中断源中断选择中断选择中断标志中断标志22输入输出中断定时与串行通信课件 中中断断处处理理过过程程一一般般分分为为三三个个阶阶
30、段段,即即中中断断响响应应、中中断断处处理理和和中断返回中断返回。 三、中断三、中断响应响应的条件及过程的条件及过程 1.1.中断响应中断响应(1 1)中断响应的条件:)中断响应的条件: 1 1)有中断源发出请求信号)有中断源发出请求信号 2 2)中断是开放的(总允许、源允许)中断是开放的(总允许、源允许) 3 3)没有封锁(受阻),受阻情况是:)没有封锁(受阻),受阻情况是: CPU CPU正在执行同级或高一级的中断服务程序;正在执行同级或高一级的中断服务程序; 现现行行机机器器周周期期不不是是正正在在执执行行的的指指令令的的最最后后一一个个机机器器周周期期,即现行指令完成前不响应任何中断请
31、求;即现行指令完成前不响应任何中断请求; 当当前前正正在在执执行行的的是是中中断断返返回回指指令令RETIRETI或或访访问问专专用用寄寄存存器器IEIE或或IPIP的的指指令令。也也就就是是说说,在在执执行行RETIRETI或或是是访访问问IEIE、IPIP的的指指令令后,至少需要再执行一条其他指令,才会响应中断请求。后,至少需要再执行一条其他指令,才会响应中断请求。23输入输出中断定时与串行通信课件 (2 2)中断响应过程)中断响应过程 进入中断响应周期。进入中断响应周期。CPUCPU在中断响应周期要完成下列操作:在中断响应周期要完成下列操作: 1) 1) 根根据据中中断断请请求求源源的的
32、优优先先级级高高低低,使使相相应应的的优优先先级级状状态态触发器置触发器置1 1。 2) 2) 清相应中断请求标志位清相应中断请求标志位IE0IE0、IE1IE1、TF0TF0或或TF1TF1。 3) 3) 保留断点,把保留断点,把PCPC内容压入堆栈保存。内容压入堆栈保存。 4) 4) 把被响应的中断源的服务把被响应的中断源的服务程序入口地址送入程序入口地址送入PCPC,转入相应的,转入相应的中断服务程序。中断服务程序。24输入输出中断定时与串行通信课件(3 3)中断响应时间)中断响应时间 从查询中断请求标志位到转向中断服务入口地址所需的机从查询中断请求标志位到转向中断服务入口地址所需的机器
33、周期数。器周期数。1 1)最快响应时间)最快响应时间 以外部中断的电平触发为最快。以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三个机器周期:从查询中断请求信号到中断服务程序需要三个机器周期: 1 1个周期(查询)个周期(查询)2 2个周期(长调用个周期(长调用LCALLLCALL)2 2)最长时间)最长时间 若当前指令是若当前指令是RETRET、RETIRETI和和IPIP、IEIE指令,紧接着下一条是乘指令,紧接着下一条是乘除指令发生,则最长为除指令发生,则最长为8 8个周期:个周期: 2 2个周期执行当前指令(其中含有个周期执行当前指令(其中含有1 1个周期查询)个周
34、期查询)4 4个周期个周期乘除指令乘除指令2 2个周期长调用个周期长调用8 8个周期。个周期。25输入输出中断定时与串行通信课件2.2.中断处理(服务)与返回中断处理(服务)与返回 在编写中断服务程序时加在编写中断服务程序时加注意注意的几点:的几点:(1)(1)因因各各入入口口地地址址之之间间只只相相隔隔8 8个个字字节节,所所以以通通常常在在中中断断入入口口地地址址单单元元处处存存放放一一条条无无条条件件转转移移指指令令,使使中中断断服服务务程程序序灵灵活活地安排在地安排在64KB64KB程序存储器的任何空间。程序存储器的任何空间。(2)(2)若若要要在在执执行行当当前前中中断断程程序序时时
35、禁禁止止更更高高优优先先级级中中断断,可可先先用用软软件件关关闭闭CPUCPU中中断断(全全局局中中断断),或或禁禁止止某某中中断断源源中中断断(局局部中断部中断),在中断返回前再开放中断。,在中断返回前再开放中断。(3)(3)注意保护现场和恢复现场。注意保护现场和恢复现场。(4(4)中中断断服服务务程程序序的的最最后后一一条条是是返返回回指指令令RETIRETI,该该指指令令将将清清除除响响应应中中断断时时被被置置位位的的优优先先级级状状态态触触发发器器,然然后后自自动动将将断断点点地地址址从从栈栈顶顶弹弹出出,装装入入PCPC,使使程程序序返返回回到到被被中中断断处处,继继续续向向下执行。
36、下执行。 26输入输出中断定时与串行通信课件中断服务程序流程图中断服务程序流程图27输入输出中断定时与串行通信课件3.3.中断请求的撤除中断请求的撤除 CPUCPU响响应应中中断断请请求求后后,在在中中断断返返回回(RETI)(RETI)前前,该该中中断断请请求求信号必须撤除,否则会引起另外一次中断。信号必须撤除,否则会引起另外一次中断。注意:注意:(1)(1)采采用用边边沿沿触触发发的的外外部部中中断断标标志志IE0IE0或或IElIEl和和定定时时器器中中断断标标志志TF0TF0或或TFlTFl,CPUCPU响应中断后能用响应中断后能用硬件自动情除硬件自动情除; ;(2)(2)在在电电平平
37、触触发发时时,IE0IE0或或IElIEl受受外外部部引引脚脚中中断断信信号号的的直直接接控控制制,CPUCPU无无法法控控制制IE0IE0或或IElIEl,需需要要另另外外考考虑虑撤撤除除中中断断请请求求信信号号的的措措施施,如如通通过过外外加加硬硬件件电电路路(见见下下页页所所示示),并并配配合合软软件来解决件来解决;(3)(3)串串行行口口中中断断请请求求标标志志TITI和和RIRI也也不不能能由由硬硬件件自自动动清清除除,需需要要在在中中断断服服务务程程序序中中,用用软软件件来来清清除除相相应应的的中中断断请请求求标标志志.。 28输入输出中断定时与串行通信课件 并并并并在中断服务程序
38、在中断服务程序在中断服务程序在中断服务程序中增加如下指令,使得的中增加如下指令,使得的中增加如下指令,使得的中增加如下指令,使得的/INT0/INT0/INT0/INT0输入变输入变输入变输入变为高电平。为高电平。为高电平。为高电平。ORLORLORLORLP1P1P1P1,#01H#01H#01H#01HANLANLANLANLP1P1P1P1,#0FEH#0FEH#0FEH#0FEH 外部中断为电平触发时,如果中断响应后,外部中断为电平触发时,如果中断响应后, 管脚仍为低电平,则会重新置位中断请求,为此可以管脚仍为低电平,则会重新置位中断请求,为此可以在系统中增加辅助电路解决。在系统中增加
39、辅助电路解决。 29输入输出中断定时与串行通信课件1.1.在在CPUCPU已经开放了外部中断允许的前提下;已经开放了外部中断允许的前提下;2.2.在在INT0/INT1INT0/INT1引脚输入一个引脚输入一个负脉冲负脉冲或或低电平低电平; 3.3.TCONTCON寄存器中的寄存器中的IE0/IE1IE0/IE1标志位自动变标志位自动变“1”“1”;4.4.检测到检测到IE0/IE1IE0/IE1变变“1”“1”后后, ,将产生指令:将产生指令: LCALL 0003H(/0013H) LCALL 0003H(/0013H)执行中断服务程序;执行中断服务程序;4 4并将并将IE0/IE1IE0
40、/IE1标志位自动清标志位自动清“0”“0”或用或用硬件电路撤硬件电路撤除中断请求信号除中断请求信号, ,以备下次申请。以备下次申请。外部中断外部中断(INT0,INT1)(INT0,INT1)申请过程:申请过程:30输入输出中断定时与串行通信课件例例1 1 假设允许片内定时器假设允许片内定时器/ /计数器中断,禁止其他中断。计数器中断,禁止其他中断。试根据假设条件设置试根据假设条件设置IEIE的相应值。的相应值。解:解:根据题目要求,要允许内部定时器中断,就需要根据题目要求,要允许内部定时器中断,就需要将将IEIE寄存器的寄存器的EAEA、ET1ET1、ET0ET0置置1 1,其他位清,其他
41、位清0 0,可分别,可分别通过字节寻址或者位寻址进行。通过字节寻址或者位寻址进行。(1) (1) 用字节操作指令:用字节操作指令: MOV IE MOV IE,#8AH #8AH 或或 MOV A8H MOV A8H,#8AH#8AH(2)(2)用位操作指令:用位操作指令: SETBSETBET0 ET0 ; ;定时器定时器/ /计数器计数器0 0允许中断允许中断 SETBSETBET1 ET1 ; ;定时器定时器/ /计数器计数器1 1允许中断允许中断 SETBSETBEA EA ;CPU;CPU开中断开中断31输入输出中断定时与串行通信课件例例2 2 系统要求设定系统要求设定8051805
42、1的片外中断为高优先级中断,片的片外中断为高优先级中断,片内中断为低优先级。请写出相应的指令。内中断为低优先级。请写出相应的指令。解:解:根据题目要求,需要将根据题目要求,需要将80518051的外部中断优先级控制的外部中断优先级控制位位PX0PX0、PX1PX1设置为设置为1 1,而内部中断优先级控制位,而内部中断优先级控制位PT0PT0、PT1PT1、PSPS清为清为0 0。(1)(1)用字节操作指令:用字节操作指令: MOV IP MOV IP,#05H#05H(2)(2)用位操作指令:用位操作指令: SETB PX0 SETB PX0 SETB PX1 SETB PX1 CLR PS
43、CLR PS CLR PT0 CLR PT0 CLR PT1 CLR PT132输入输出中断定时与串行通信课件4.34.3 MCS-51 MCS-51单片机的定时器单片机的定时器/ /计数器计数器u定时器定时器/ /计数器计数器的结构的结构u定时器定时器/ /计数器计数器的工作方式的工作方式u定时器定时器/ /计数器计数器应用应用33输入输出中断定时与串行通信课件 实现定时或延时控制有三种方法:实现定时或延时控制有三种方法:软件定时、不可编程软件定时、不可编程硬件定时器、可编程硬件定时器。硬件定时器、可编程硬件定时器。 可编程的硬件定时器就是其工作方式、定时值和定时范可编程的硬件定时器就是其工
44、作方式、定时值和定时范围可以很方便地由软件来确定和改变。通常,一个可编程定围可以很方便地由软件来确定和改变。通常,一个可编程定时时/ /计数器的主要用途有:计数器的主要用途有: 以均匀分布的时间间隔中断分时操作系统,以便切换程序。以均匀分布的时间间隔中断分时操作系统,以便切换程序。 向向I/OI/O设备输出精确的定时信号,该信号的周期由程序控制。设备输出精确的定时信号,该信号的周期由程序控制。 用作可编程波特率或速率发生器。用作可编程波特率或速率发生器。 检测外部事件发生的频率或周期。检测外部事件发生的频率或周期。 统计外部事件处理过程中某一事件发生的次数。统计外部事件处理过程中某一事件发生的
45、次数。 在定时或计数达到编程规定的值之后,产生输出信号,向在定时或计数达到编程规定的值之后,产生输出信号,向CPUCPU申请中断。申请中断。 34输入输出中断定时与串行通信课件 51 51系列单片机有两个系列单片机有两个1616位的定时器位的定时器/ /计数器:计数器:T0T0和和T1T1。T0T0由两个由两个8 8位的定时寄存器位的定时寄存器TH0TH0和和TL0TL0构成构成1616位寄存器,同样,位寄存器,同样,T1T1由两个由两个8 8位的定时寄存器位的定时寄存器TH1TH1和和TL1TL1构成构成1616位寄存器,它们位寄存器,它们分别映射在特殊功能寄存器中。分别映射在特殊功能寄存器
46、中。TH0TH0、TL0TL0的地址分别为的地址分别为8CH8CH、8AH8AH,TH1TH1和和TL1TL1的地址分别为的地址分别为8DH8DH和和8BH8BH。 其内部还有其内部还有2 2个个8 8位的专用寄存器位的专用寄存器TMODTMOD(88H88H)和)和TCON TCON (89H89H) 。其中。其中TMODTMOD是定时器的工作方式寄存器,是定时器的工作方式寄存器,TCONTCON是是控制寄存器,主要用于定时控制寄存器,主要用于定时/ /计数器管理与控制。计数器管理与控制。 4.3.1 4.3.1 定时器定时器/ /计数器的结构计数器的结构35输入输出中断定时与串行通信课件8
47、0518051单片机的定时器结构单片机的定时器结构T0T136输入输出中断定时与串行通信课件一、定时器一、定时器/ /计数器的定时和计数功能计数器的定时和计数功能 在在TMODTMOD中,各有一个控制位(中,各有一个控制位(C CT T),分别用于控制),分别用于控制定时定时器器/ /计数器计数器T0T0和和T1T1是工作在是工作在定时器定时器方式还是方式还是计数器计数器方式。方式。1. 1. 定时功能定时功能-计数输入信号是内部时钟脉冲,每个计数输入信号是内部时钟脉冲,每个机机器周期器周期使寄存器的值加使寄存器的值加1 1。所以,计数频率是振荡频率的。所以,计数频率是振荡频率的1/121/1
48、2。2. 2. 计数功能计数功能-计数脉冲来自相应的计数脉冲来自相应的外部输入引脚,外部输入引脚,T0T0为为P3.4P3.4,T1T1为为P3.5P3.5。即对由。即对由T0/T1T0/T1引脚输入的引脚输入的负脉冲负脉冲进行进行加法计数。加法计数。 定时定时器器/ /计数器的核心部件是计数器的核心部件是二进制加二进制加1 1计数器计数器(TH0(TH0、TL0TL0或或TH1TH1、TL1) TL1) 。其输入的计数脉冲有。其输入的计数脉冲有两个来源两个来源(内部时内部时钟脉冲和钟脉冲和外部输入引脚外部输入引脚)。当加到计数器为全)。当加到计数器为全“1”“1”时,再时,再输入一个脉冲,就
49、使计数器回零,同时产生溢出脉冲使输入一个脉冲,就使计数器回零,同时产生溢出脉冲使TCONTCON中溢出中断标志中溢出中断标志TF0TF0或或TF1TF1置置1 1,并可向,并可向CPUCPU申请中断。申请中断。37输入输出中断定时与串行通信课件二、定时器计数器的控制寄存器二、定时器计数器的控制寄存器 与定时器计数器有关的控制寄存器有:与定时器计数器有关的控制寄存器有:1 1定时器控制寄存器定时器控制寄存器TCONTCOND7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0中断请求标志中断请求标志触发方式选择触发方式选择启动定时器启动定时器/ /计数器计
50、数器0 0 低电平低电平1 1 下降沿下降沿0 0 停止停止1 1 启动启动38输入输出中断定时与串行通信课件2 2工作方式控制寄存器工作方式控制寄存器TMODTMOD T1T1控制控制T0T0控制控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATEGATE门控位门控位C/TC/T计数计数/ /定时选择定时选择M1 M0M1 M0工作方式选择工作方式选择用于选定定时用于选定定时/ /计数器的工作方式、启动方式等。计数器的工作方式、启动方式等。39输入输出中断定时与串行通信课件 TMOD TMOD的高的高4 4位用于位用于T1T1控制,低控制,低4 4位用于位
51、用于T0T0控制,符号的控制,符号的定义如下:定义如下: (1) (1) GATEGATE:门控位。门控位。GATEGATE和软件控制位和软件控制位TRTR、外引脚(、外引脚(/INT0/INT0、/INT1/INT1)的状态,共同控制定时器)的状态,共同控制定时器/ /计数器的启动和停止。计数器的启动和停止。 GATE = 0 GATE = 0 普通用法普通用法 Timer Timer的启的启/ /停由软件对停由软件对TRxTRx位写位写“1”/“0”“1”/“0”控制。控制。 GATE = 1 GATE = 1 门控用法门控用法 Timer Timer的启的启/ /停由软件对停由软件对TR
52、xTRx位写位写“1”/“0” “1”/“0” 和在和在INTxINTx引脚引脚上出现的信号的高上出现的信号的高/ /低共同控制。低共同控制。(2) (2) C/TC/T:定时定时/ /计数器方式选择位。计数器方式选择位。 C/T C/T 1 1为计数方式;为计数方式; C/T C/T 0 0为定时方式。为定时方式。(3) (3) M1 M0M1 M0:工作方式选择位。工作方式选择位。 M1 M0 M1 M00000;方式;方式0 0 M1 M0 M1 M00101;方式;方式1 1 M1 M0 M1 M01010;方式;方式2 2 M1 M0 M1 M01111;方式;方式3 3。40输入输
53、出中断定时与串行通信课件4.3.2 4.3.2 4.3.2 4.3.2 定时器的工作方式定时器的工作方式定时器的工作方式定时器的工作方式一、一、 方式方式0 0 定时定时/ /计数器工作于方式计数器工作于方式0 0时为一个时为一个1313位的计数器位的计数器。选择定时器选择定时器(T0(T0或或T1)T1)的高的高8 8位和低位和低5 5位组成的一个位组成的一个1313位定位定时器计数器。下图是时器计数器。下图是T0T0在方式在方式0 0时的逻辑电路结构。时的逻辑电路结构。T1T1的模式的模式0 0电路结构与电路结构与T0T0相同。相同。定时器定时器T0T0的方式的方式0 0逻辑电路逻辑电路
54、MCS-51 MCS-51单片机内部的定时单片机内部的定时/ /计数器是一种可编程器计数器是一种可编程器件,可设置为四种工作方式,由两个件,可设置为四种工作方式,由两个8 8位专用寄存器位专用寄存器TMODTMOD和和TCONTCON进行管理与控制。进行管理与控制。 注:注:此时,此时,/INT0/INT0(须为(须为1 1)不是外部中断请求信号,而不是外部中断请求信号,而只是只是对对定时定时/ /计数器的计数器的一个一个附加控制信号。附加控制信号。41输入输出中断定时与串行通信课件(1 1)加)加1 1计数器为计数器为1313位。位。TL0=5TL0=5位,位,TH0=8TH0=8位位(2
55、2)(GATE+INT0)TR0(GATE+INT0)TR0为真则启动定时器。为真则启动定时器。(3 3)C/T=1C/T=1为计数工作方式,计数脉冲由为计数工作方式,计数脉冲由T0T0引脚输入。引脚输入。 计数个数计数个数 N= N=( 2 21313初值)初值)(4 4)C/T=0C/T=0为定时工作方式,时钟频率为为定时工作方式,时钟频率为fosc/12fosc/12。 定时时间定时时间t=t=(2 21313初值)初值)* *时钟周期时钟周期*12*12 显显然然:在在机机器器周周期期固固定定的的情情况况下下,定定时时时时间间的的长长短短与与计计数器事先装入的初值有关,装入的数器事先装
56、入的初值有关,装入的初值越大,定时越短。初值越大,定时越短。 (5 5)计数器溢出,)计数器溢出,TF0TF0置置1 1。由硬件申请中断。由硬件申请中断。42输入输出中断定时与串行通信课件二、方式二、方式1 1 定定时时/ /计计数数器器工工作作于于方方式式1 1时时为为一一个个1616位位的的计计数数器器。其其逻逻辑辑结结构构、操操作作及及运运行行控控制制几几乎乎与与方方式式0 0完完全全样样,差差别别仅仅在在于于计数器的位数不同。计数器的位数不同。 在在方方式式1 1中中TL0TL0和和TH0TH0均均为为8 8位位,TL0TL0和和TH0TH0一一起起构构成成了了l6l6位位计计数器。数
57、器。定时工作方式定时工作方式1 1时,定时时间为:时,定时时间为:定时时间定时时间 t t(2(21616计数初值计数初值)机器周期机器周期用于计数器工作方式时:用于计数器工作方式时:最大计数值最大计数值为为: 2: 216166553665536。43输入输出中断定时与串行通信课件定时器定时器T0T0的方式的方式1 1逻辑电路逻辑电路44输入输出中断定时与串行通信课件三、三、 方式方式2 2 定定时时/ /计计数数器器工工作作于于方方式式2 2时时,将将两两个个8 8位位计计数数器器THxTHx、TLxTLx分分成成独独立立的的两两部部分分,组组成成一一个个可可自自动动重重装装载载的的8 8
58、位位定定时时/ /计计数数器器。其逻辑结构如下图所示。其逻辑结构如下图所示。 方式方式2 2的控制运行与方式的控制运行与方式0 0、方式、方式1 1相同。相同。 用于定时工作方式时,用于定时工作方式时,定时时间定时时间t t为:为: t t(2(28 8-计数初值计数初值X)X)机器周期机器周期 方方式式2 2用用于于计计数数工工作作方方式式时时,最最大大计计数数值值( (初初值值0 0时时) )是是2 28 8。方方式式2 2特特别别适适合合于于用用作作较较精精确确的的定定时时和和脉脉冲冲信信号号发发生生器器。还还常常用作用作串行口波特率发生器串行口波特率发生器 。45输入输出中断定时与串行
59、通信课件四、方式四、方式3 3 方式方式3 3只适用于定时器只适用于定时器T0T0。在方式。在方式3 3下,下,T0T0被分成两个相互被分成两个相互独立的独立的8 8位计数器位计数器TL0TL0和和TH0TH0,如下图所示,如下图所示 。(1 1)TH0TH0和和TL0TL0变成变成2 2个分开的独立计数器。个分开的独立计数器。(2 2)TL0TL0占用了全部的定时器控制位(占用了全部的定时器控制位(C/T,GATE,TR0,TF0C/T,GATE,TR0,TF0)。)。(3 3)TH0TH0只能用于定时方式,运行控制位和溢出标志位则借用定只能用于定时方式,运行控制位和溢出标志位则借用定 时器
60、时器1 1的的TR1TR1和和TF1TF1。此时的定时器。此时的定时器1 1用于串行口波特率发生器。用于串行口波特率发生器。 注:注:在在T0T0设置为方式设置为方式3 3工作工作时时,一般是,一般是将定时器将定时器T1T1作为串行口作为串行口波特率发生器,或用于不需要中断的场合。波特率发生器,或用于不需要中断的场合。 46输入输出中断定时与串行通信课件定时器定时器T0T0的方式的方式3 3(a)T0(a)T0方式方式3 3时的时的T1T1方式方式0 0(b)T0(b)T0方式方式3 3时的时的T1T1方式方式1 147输入输出中断定时与串行通信课件4.3.3 4.3.3 定时器定时器/ /计
61、数器计数器应用应用一、定时器一、定时器/ /计数器的计数初始化计数器的计数初始化1. 1. 定时器计数器的初始化方法定时器计数器的初始化方法 初始化的主要内容是对初始化的主要内容是对TCONTCON和和TMODTMOD编程,计算和装载编程,计算和装载T0T0和和T1T1的计数初值。的计数初值。(1 1)确定相关参数)确定相关参数1 1)分分析析定定时时器器计计数数器器的的工工作作方方式式,将将方方式式字字写写入入TMODTMOD寄寄存存器器;( 即确定:定即确定:定/ /计、内计、内/ /外启动、工作方式)外启动、工作方式)2)2)计算计算T0T0或或T1T1中的计数初值,并将其写入中的计数初
62、值,并将其写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1;3)3)根根据据需需要要开开放放CPUCPU和和定定时时器器计计数数器器的的中中断断,即即对对IEIE和和IPIP寄寄存存器器编程;编程;4)4)启启动动定定时时器器计计数数器器工工作作:若若要要求求用用软软件件启启动动,编编程程时时对对TCONTCON中中的的TR0TR0或或TR1TR1置置位位即即可可启启动动;若若由由外外部部中中断断引引脚脚电电平平启启动动,则则对对TCONTCON中的中的TR0TR0或或TR1TR1置位后,还需给外部引脚加启动电平。置位后,还需给外部引脚加启动电平。48输入输出中断定时与串行通信课件
63、(2 2)计算定时器)计算定时器/ /计数器的初值计数器的初值1 1)计数器计数器方式时的方式时的计数初值计数初值 TCTC2 2M MN N (M M为计数器位数,为计数器位数,N N为要求的计数值)为要求的计数值) 方式方式0 0:M M1313,计数器的最大计数值,计数器的最大计数值2 213138192;8192;方式方式1 1:M M1616,计数器的最大计数值,计数器的最大计数值2 216166553665536;方式方式2 2:M M8 8,计数器的最大计数值,计数器的最大计数值2 28 8256256; 方式方式3 3同方式同方式2 2。 例如,设例如,设T0T0工作在计数器方
64、式工作在计数器方式2 2,求计数,求计数1010个脉冲的计数初值。个脉冲的计数初值。TCTC2 28 8 1010246246(11110110)B(11110110)B0F6H0F6H2 2)定时器定时器方式时的方式时的计数初值计数初值 在在定定时时器器方方式式下下,定定时时器器T0(T0(或或T1)T1)是是对对机机器器周周期期进进行行计计数数的的。定定时时时间为:时间为:t t(2(2M M计数初值计数初值X)X)机器周期。故:机器周期。故: 计数初值计数初值X X 2 2M M- -(t/t/(12*T osc 12*T osc )= =49输入输出中断定时与串行通信课件 注意:注意:
65、不同方式下,不同方式下,M M的取值不同。若系统时钟频率的取值不同。若系统时钟频率f fOSCOSC12MHz12MHz。则。则 方式方式0 0:M M1313,定时器的最大定时值为:,定时器的最大定时值为: 2 21313* *机器周期机器周期8192S8192S; 方式方式1 1:M M1616,定时器的最大定时值为:,定时器的最大定时值为: 2 21616* *机器周期机器周期65536S65536S; 方式方式2 2:M M8 8,定时器的最大定时值为:,定时器的最大定时值为: 2 28 8* *机器周期机器周期256S256S; 方式方式3 3同方式同方式2 2。例如:例如:若若f
66、fOSCOSC6MHz6MHz,定时时间为,定时时间为10ms10ms,使用定时器,使用定时器T0T0工作于工作于方式方式1 1,则定时器,则定时器T0T0的初值为的初值为 : TC0TC0 = 60536 = 605360EC78H0EC78H 注意时钟频率(注意时钟频率(H HZ Z)和定时时间)和定时时间(S)(S)的的单位换算!单位换算!50输入输出中断定时与串行通信课件2. 2. 定时器定时器/ /计数器初始化举例计数器初始化举例编写初始化程序的步骤:编写初始化程序的步骤: (1 1)方式控制字送)方式控制字送TMODTMOD; MOV TMOD MOV TMOD,#(2 2)计数器
67、的初值送)计数器的初值送THTH、TLTL(0/10/1);); MOV TH0 MOV TH0,# MOV TL0 MOV TL0,#(3 3)根据需要开放中断和设定优先级;)根据需要开放中断和设定优先级; 即对即对IEIE和和IPIP赋初值。赋初值。 (4) 4) 启动启动T0/T1T0/T1开始工作开始工作-置位置位TR0/TR1TR0/TR1; SETB TR0/TR1 SETB TR0/TR1(5 5)等待溢出信号的出现()等待溢出信号的出现(如何进入处理程序?如何进入处理程序?) (有(有查询法查询法或或中断法中断法)51输入输出中断定时与串行通信课件 例例1:1:要要求求定定时时
68、器器T1T1工工作作于于方方式式1 1,定定时时50ms50ms,由由软软件件启启动动,允允许中断。设系统时钟频率许中断。设系统时钟频率f fOSCOSC6MHz6MHz,编写初始化程序段。,编写初始化程序段。解:解:1 1)方式控制字为)方式控制字为 00010000B=10H 00010000B=10H 2 2)计数初值为)计数初值为 TC1 TC1T1T1初始化程序段如下:初始化程序段如下: MOV MOVTMODTMOD,#10H#10H;写入工作方式字;写入工作方式字 MOV MOVTH1TH1,#9EH#9EH;写入计数初值;写入计数初值 MOV MOVTL1TL1,#58H#58
69、H SETB SETBET1ET1;开放;开放T1T1中断中断 SETB SETBEAEA;开放;开放CPUCPU中断中断 SETB SETBTR1TR1;启动;启动T1T1工作工作 52输入输出中断定时与串行通信课件例例2:2: 要要求求利利用用定定时时/ /计计数数器器T0T0对对T0T0引引脚脚(P3.4P3.4)出出现现的的脉脉冲冲计计数数,每每计计数数100100个个脉脉冲冲向向CPUCPU申申请请中中断断,设设由由软软件件启启动动。编编写初始化程序段。写初始化程序段。解解:1 1)经经分分析析,可可设设定定时时器器T0T0工工作作于于方方式式2 2计计数数,方方式式控控制制字为字为
70、00000110B=06H00000110B=06H 2 2)要求的计数值)要求的计数值N=100N=100,则计数初值为,则计数初值为 2 28 8-100=156-100=156初始化程序段如下:初始化程序段如下: MOV MOVTMODTMOD,#06H#06H;写入工作方式字;写入工作方式字 MOV MOVTH0TH0,#156#156;写入计数初值;写入计数初值 MOV MOVTL0TL0,#156#156 MOV MOVIEIE,#10000010B#10000010B ;开放;开放T0T0、 CPU CPU中断中断 SETB SETBTR0TR0;启动;启动T0T0工作工作53输
71、入输出中断定时与串行通信课件二、定时器二、定时器/ /计数器应用举例计数器应用举例 在在应应用用定定时时器器计计数数器器时时,溢溢出出标标志志TFxTFx置置位位后后既既可可由由硬硬件件向向CPUCPU申申请请中中断断;也也可可通通过过用用户户程程序序查查询询TFxTFx的的状状态态,因因此对计数溢出信息的处理有以下此对计数溢出信息的处理有以下两种方法两种方法:中断法:中断法:在定时器初始化时要开放对应的源允许(在定时器初始化时要开放对应的源允许(ET0ET0或或ET1ET1)和总允许,在启动后等待中断。当计数器溢出中断时,)和总允许,在启动后等待中断。当计数器溢出中断时,CPUCPU将程序转
72、到中断服务程序入口,因此应将程序转到中断服务程序入口,因此应在中断服务程序在中断服务程序中安排相应的处理程序。中安排相应的处理程序。查查询询法法:在在定定时时器器初初始始化化并并启启动动后后,在在程程序序中中安安排排指指令令查查询询TFxTFx的状态。的状态。LPLP:JBC TF0JBC TF0,NEXT NEXT ;TF0TF0为为1 1,转后面的处理程序,并将,转后面的处理程序,并将TF0TF0复位复位 SJMP SJMPLP LP ;TF0TF0为为0 0,继续查询,继续查询NEXTNEXT:54输入输出中断定时与串行通信课件采用查询方式时的一般编程模式为:采用查询方式时的一般编程模式
73、为: ORG 0030H ORG 0030HMAINMAIN: MOV TMOD MOV TMOD,# MOV TH0 MOV TH0,# MOV TL0 MOV TL0,# - - SETB TR0 SETB TR0WAITWAIT: JBC TF0 JBC TF0,NEXTNEXT; SJMP WAIT SJMP WAIT;NEXTNEXT:MOV TH0MOV TH0,#;重装;重装 MOV TL0 MOV TL0,# # ;初值;初值 - - - - ;处理程序;处理程序 SLMP WAIT SLMP WAIT注意问题:注意问题: 1 1)方式)方式0 0、1 1、3 3溢出后要重装初
74、值,溢出后要重装初值,方式方式2 2可自动重装初值。可自动重装初值。2 2)方式)方式0 0时时THTH为为8 8位,位,TLTL为为5 5位。位。采用中断方式时的一般编程模式为:采用中断方式时的一般编程模式为: ORG 0000H ORG 0000H SJMP MAIN SJMP MAIN ORG 000BH ORG 000BH (001BH001BH) LJMP T0S LJMP T0S ORG 0030H ORG 0030HMAINMAIN: MOV TMOD MOV TMOD,# MOV TH0 MOV TH0,# MOV TL0 MOV TL0,# # SETB ET0 SETB E
75、T0; SETB EA SETB EA; -;置其他初值;置其他初值 SETB TR0 SETB TR0; SJMP $ SJMP $T0ST0S: MOV TH0 MOV TH0,# MOV TL0 MOV TL0,# # ;重装初值;重装初值 - - ;处理程序;处理程序 RETI RETI假设使用假设使用T0T0,则:,则:55输入输出中断定时与串行通信课件1.1.定时器计数器定时器计数器定时定时方式的应用方式的应用例例3:3: 利用定时利用定时/ /计数器定时产生周期信号。要求用定时器计数器定时产生周期信号。要求用定时器T0T0定时,在定时,在P1.7P1.7引脚上输出频率为引脚上输出
76、频率为50Hz50Hz的方波。设晶振频率为的方波。设晶振频率为12MHz12MHz。解解:1 1)按按题题意意分分析析:方方波波周周期期T=1/50=20msT=1/50=20ms,可可用用T0T0方方式式1 1定定时时10ms10ms,使使P1.7P1.7每每隔隔10ms10ms取取反反一一次次,即即可可得得到到周周期期为为20ms20ms的方波。设的方波。设T0T0工作在方式工作在方式1 1,由软件启动。,由软件启动。 2 2)TMODTMOD控制字为控制字为 0000 0001 B 0000 0001 B 3 3)初值计算:因)初值计算:因f foscosc=12MHz=12MHz,则机
77、器周期为,则机器周期为1s1s。 初值初值2 21616-1010-10103 3/1=65536-10000=55536=D8F0H/1=65536-10000=55536=D8F0H, 即有即有TH0=D8HTH0=D8H,TL0=F0HTL0=F0H。56输入输出中断定时与串行通信课件4 4)编程)编程a.a.若采用若采用查询法查询法,编程如下:,编程如下: ORG 0030H ORG 0030HSTARSTAR:MOV TMODMOV TMOD,#01H #01H ;写方式字;写方式字 MOV TH0 MOV TH0,#0D8H #0D8H ;写入计数初值;写入计数初值 MOV TL0
78、 MOV TL0,#0F0H#0F0H SETB TR0 SETB TR0 ;启动;启动T0T0LPLP: JBC TF0 JBC TF0,NEXTNEXT ;TF0TF0为为1 1转转NXET NXET SJMP LP SJMP LP ;TF0TF0为为0 0,继续查询,继续查询NEXTNEXT:MOV TH0MOV TH0,#0D8H #0D8H ;重装初值;重装初值 MOV TL0 MOV TL0,#0F0H#0F0H CPL P1.7 CPL P1.7 ;P1.7P1.7取反输出方波取反输出方波 AJMP LP AJMP LP ;反复循环;反复循环 57输入输出中断定时与串行通信课件b
79、.b.若采用若采用中断法中断法,编程如下:,编程如下:主程序:主程序: ORG 0000HORG 0000H SJMP STAR SJMP STAR ORG 000BH ORG 000BH ;定义;定义T0T0服务程序入口服务程序入口 AJMP DVT0 AJMP DVT0 ORG 0030H ORG 0030HSTARSTAR:MOV TMODMOV TMOD,#01H #01H ;写入工作方式字;写入工作方式字 MOV TH0 MOV TH0,#0D8H #0D8H ;写入计数初值;写入计数初值 MOV TL0 MOV TL0,#0F0H#0F0H SETB ET0 SETB ET0 ;
80、SETB EA SETB EA ;开放;开放T0T0和和CPUCPU中断中断 SETB TR0 SETB TR0 ;启动;启动T0T0 SJMP $ SJMP $ ;等待中断;等待中断中断服务程序:中断服务程序: DVT0DVT0:MOV TH0, #0D8HMOV TH0, #0D8H ;重装初值;重装初值 MOV TL0 MOV TL0,#0F0H #0F0H ; CPL P1.7 CPL P1.7 ; RETI RETI 58输入输出中断定时与串行通信课件2. 2. 定时器计数器定时器计数器计数计数方式的应用方式的应用 例例4:4: 某某系系统统要要求求用用定定时时器器T1T1对对由由P
81、3.5P3.5(T1T1)引引脚脚输输入入的的脉脉冲计数,每计满冲计数,每计满100100个脉冲,在个脉冲,在P1.0P1.0引脚输出一个正脉冲。引脚输出一个正脉冲。 解:解:1 1)据题意分析,可将定时器)据题意分析,可将定时器T1T1设置为方式设置为方式2 2计数,由软计数,由软件启动。件启动。 2 2)方式控制字)方式控制字 :TMODTMOD01100000B01100000B60H60H 3 3)计数初值)计数初值 :TC1TC12 28 81001001561569CH,9CH,即有即有 TH1 TH1TL1TL19CH9CH59输入输出中断定时与串行通信课件4 4)程序如下:)程
82、序如下: ORG 0000H ORG 0000H SJMP MAIN SJMP MAIN ORG 001BH ORG 001BH ;定义;定义T1T1服务程序入口服务程序入口 AJMP DVT1 AJMP DVT1 ORG 0030H ORG 0030HMAINMAIN:MOV TMODMOV TMOD,#60H #60H ;写入工作方式字;写入工作方式字 MOV TH1 MOV TH1,#9CH #9CH ;写入计数初值;写入计数初值 MOV TL1 MOV TL1,#9CH#9CH SETB ET1 SETB ET1 ;开放;开放T1T1中断中断 SETB EA SETB EA ;开放;开
83、放CPUCPU中断中断 CLR P1.0 CLR P1.0 SETB TR1 SETB TR1 ;启动;启动T1T1 SJMP $ SJMP $ ;等待中断;等待中断 DVT1DVT1: SETB P1.0SETB P1.0 NOP NOP NOP NOP CLR P1.0 CLR P1.0; RETI RETI 60输入输出中断定时与串行通信课件3. 3. 定时时间的扩展定时时间的扩展 为什么要扩展?为什么要扩展? 因为晶振频率为因为晶振频率为6MHz6MHz时一个定时器最长的定时时间为:时一个定时器最长的定时时间为: 例如,若用例如,若用T0T0定时定时50ms50ms,每次溢出后就计数一
84、次,则计数,每次溢出后就计数一次,则计数2020次次就得就得1 1秒的定时。较常用的是秒的定时。较常用的是软件计数扩展法。软件计数扩展法。 软件扩展是利用内存单元作溢出次数的计数器。如果定时软件扩展是利用内存单元作溢出次数的计数器。如果定时时间长,时间长,8 8位计数器不够,还可采用位计数器不够,还可采用1616位计数器或用更多字节位计数器或用更多字节单元计数。单元计数。61输入输出中断定时与串行通信课件例例5 5:要求利用软件扩展方法实现要求利用软件扩展方法实现1 1秒定时,使得由秒定时,使得由P1P1口控制口控制的的8 8个个LEDLED指示灯每隔一秒轮流闪亮(输出为低电平时亮),指示灯每
85、隔一秒轮流闪亮(输出为低电平时亮),设设f fOSCOSC6MHz6MHz。解:解:1 1)分析:设利用定时器)分析:设利用定时器T0T0工作于方式工作于方式1 1,定时,定时50ms50ms,并,并用用R2R2作软件计数器,取作软件计数器,取R2R2的初值为的初值为2020,作减法计数,每次,作减法计数,每次T0T0溢出时,溢出时,R2R2减减1 1,当,当R2R2减到减到0 0,则定时,则定时1 1秒完成。秒完成。 2 2) 即有:即有:TMOD=00000001B=01HTMOD=00000001B=01H, TH0=9EH TH0=9EH,TL0=58HTL0=58H(见前见前PPT5
86、2PPT52例例1 1)62输入输出中断定时与串行通信课件主程序:主程序:ORG 0000HORG 0000H SJMP MAIN SJMP MAIN ORG 000BH ORG 000BH ;定义;定义T0T0服务程序入口服务程序入口 AJMP DVT0 AJMP DVT0 ORG 0030H ORG 0030HMAINMAIN:MOV TMODMOV TMOD,#01H#01H;置工作方式字置工作方式字 MOV TH0 MOV TH0,#9EH#9EH MOV TL0 MOV TL0,#58H#58H;置置计数初值计数初值 SETB ET0 SETB ET0 SETB EA SETB EA
87、; ;开放中断开放中断 MOV R2MOV R2,#20 #20 ;置软件计数初值;置软件计数初值 MOV A MOV A,#0FEH#0FEH MOV P1 MOV P1,A A ;从;从P1P1输出一位低电平输出一位低电平 SETB TR0 SETB TR0 SJMP $ SJMP $ ;等待中断;等待中断;中断服务程序;中断服务程序DVT0:MOVTH0,#9EHMOVTL0,#58H;重置计数值重置计数值DJNZR2,RTNMOVP1,ARLA;A A循环左移一位循环左移一位MOVR2,#20;再置计数值再置计数值RTN:RETI若采用若采用中断法中断法,编程如下:,编程如下:63输入
88、输出中断定时与串行通信课件 4. 4.利用定时器利用定时器/ /计数器扩展外部中断源计数器扩展外部中断源 利用定时利用定时/ /计数器来扩展外部中断源。方法是计数器来扩展外部中断源。方法是将定时器将定时器/ /计计数器设置成计数器方式数器设置成计数器方式2 2计数,计数初值设定为计数,计数初值设定为THxTHx、TLxTLx均为均为0FFH0FFH,并将待扩展的外部中断源接到定时器,并将待扩展的外部中断源接到定时器/ /计数器的外部脉计数器的外部脉冲计数引脚冲计数引脚. .例如例如,利用定时器,利用定时器/ /计数器计数器T0T0扩展一个外部中断源。将扩展一个外部中断源。将T0T0设置为计数器
89、方式,设置为计数器方式,按方式按方式2 2工作,工作,TH0TH0、TL0TL0的初值均为的初值均为0FFH0FFH,T0T0允许中断,允许中断,CPUCPU开放中断。其开放中断。其初始化程序段如下:初始化程序段如下: MOV MOV TMOD TMOD,#06H#06H;置;置T0T0为计数器方式为计数器方式2 2 MOV MOV TL0 TL0,#0FFH#0FFH;置计数初值;置计数初值 MOV MOV TH0 TH0,#0FFH#0FFH SETB TR0 SETB TR0 ;启动;启动T0T0工作工作 SETB EA SETB EA;CPUCPU开中断开中断 SETB ET0 SET
90、B ET0;允许;允许T0T0中断中断64输入输出中断定时与串行通信课件5.5.门控位门控位GATEGATE的应用的应用例例6:6:利用定时利用定时/ /计数器计数器T0T0的门控位的门控位GATEGATE,测量引脚上出现的脉冲,测量引脚上出现的脉冲宽度,并将结果宽度,并将结果( (机器周期数机器周期数) )存入内部存入内部RAMRAM的的30H30H和和31H31H单元中。单元中。解解:1 1)由由题题意意分分析析,外外部部脉脉冲冲由由引引脚脚输输入入,可可设设T0T0工工作作于于定定时时器器方方式式1 1,计计数数初初值值为为0 0,在在一一个个完完整整的的外外部部脉脉冲冲宽宽度度内内对对
91、机机器器周周期期计计数数(定定时时方方式式),显显然然计计数数值值乘乘上上机机器器周周期期就就是是脉脉冲冲宽宽度。度。2 2)设设定定GATEGATE1 1,当当TR0TR0置置1 1时时,由由外外部部脉脉冲冲上上升升沿沿启启动动T0T0开开始始工工作作。加加1 1计计数数器器开开始始对对机机器器周周期期计计数数;引引脚脚变变为为低低电电平平时时,停停止止计计数数,这这时时读读出出TH0TH0、TL0TL0的的值值,该该计计数数值值即即为为被被测测信信号号的的脉脉冲宽度对应的机器周期数。测试过程如图所示冲宽度对应的机器周期数。测试过程如图所示. . 65输入输出中断定时与串行通信课件3 3)程
92、序设计)程序设计工作方式字工作方式字:TMOD=00001001BTMOD=00001001B计数初值:计数初值: TH0=00H TH0=00H,TL0=00HTL0=00H ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 0030H ORG 0030HMAINMAIN: MOV TMOD MOV TMOD,#09H #09H ;GATEGATE1 1 MOV TH0 MOV TH0,#00H #00H ;置计数初值;置计数初值 MOV TL0 MOV TL0,#00H#00H MOV R0 MOV R0,#30H#30HWAIT1WAIT1:JB P
93、3.2JB P3.2,WAIT1 WAIT1 ;等待变低;等待变低 SETB TR0 SETB TR0 ;预启动;预启动T0T0 WAIT2WAIT2:JNB P3.2JNB P3.2,WAIT2 WAIT2 ;等等待待 INT0INT0变变高高、启启动动计计数数 WAIT3 WAIT3:JB P3.2JB P3.2,WAIT3WAIT3 ;等待;等待 INT0 INT0再变低再变低 CLR TR0 CLR TR0 ;停止计数;停止计数 MOV R0 MOV R0,TL0TL0 ;读取计数值,存入指定单元;读取计数值,存入指定单元 INC R0 INC R0, MOV R0 MOV R0,TH
94、0TH0 AJMP DATA AJMP DATA;转数据处理程序;转数据处理程序66输入输出中断定时与串行通信课件 主要内容:主要内容: 串行通信基础;串行通信基础;MCS-51MCS-51单片机串行通信接口单片机串行通信接口的结构;的结构;MCS-51MCS-51单片机串行通信的工作原理及其单片机串行通信的工作原理及其工作方式;工作方式;MCS-51MCS-51单片机串行接口应用编程。单片机串行接口应用编程。重点:重点: MCS-51 MCS-51单片机串行接口的工作原理及工单片机串行接口的工作原理及工作方式;作方式;MCS-51MCS-51单片机串行接口应用程序单片机串行接口应用程序设计方
95、法。设计方法。4.44.4单片机的串行通信单片机的串行通信67输入输出中断定时与串行通信课件 串行通信串行通信优点优点: :便于长距离传送便于长距离传送 缺点缺点: :传送速度较慢传送速度较慢计算机与外界信息交换称为计算机与外界信息交换称为通信通信。通信的通信的基本方式基本方式可分为并行通信和串行通信:可分为并行通信和串行通信:并行通信并行通信是数据的各位同时发送或同时接收;是数据的各位同时发送或同时接收;串行通信串行通信是数据的各位依次逐位发送或接收。是数据的各位依次逐位发送或接收。并行通信并行通信优点优点: :传送速度快传送速度快 缺点缺点: :不便长距离传送不便长距离传送68输入输出中断
96、定时与串行通信课件 (a)(a)并行通信并行通信(b)(b)串行通信串行通信通信的两种基本方式通信的两种基本方式69输入输出中断定时与串行通信课件异异步步通通信信对对硬硬件件要要求求较较低低,实实现现起起来来比比较较简简单单、灵灵活活,适适用用于于数数据据的的随随机机发发送送/ /接接收收,但但因因每每个个字字节节都都要要建建立立一一次次同同步步,即即每每个个字字符符都都要要额额外外附附加加两两位位,所所以以工工作速度较低,在单片机中主要采用异步通信方式。作速度较低,在单片机中主要采用异步通信方式。4.4.1 4.4.1 串行通信串行通信基础基础串行通信有两种基本通信方式:串行通信有两种基本通
97、信方式:异步通信异步通信和和同步通信。同步通信。在此,只介绍在此,只介绍异步通信。异步通信。一、异步串行通信的字符格式一、异步串行通信的字符格式异步通信依靠异步通信依靠起始位、停止位起始位、停止位保持通信同步。保持通信同步。 异步通信数据传送异步通信数据传送按帧传输按帧传输,一帧数据包含,一帧数据包含起始位、起始位、数据位、校验位和停止位数据位、校验位和停止位。70输入输出中断定时与串行通信课件帧帧异步串行通信的字符格式异步串行通信的字符格式起起始始位位数数据据位位0(n 1)位位奇奇偶偶位位停停止止位位起起始始位位位时间位时间异步串行通信以字符为单位,即异步串行通信以字符为单位,即一个字符一
98、个字符一个字符的传送一个字符的传送。71输入输出中断定时与串行通信课件(b)(b)有空闲位有空闲位串行异步通信的帧格式串行异步通信的帧格式(a)(a)无空闲位无空闲位72输入输出中断定时与串行通信课件奇奇偶偶效效验验位位用用于于对对字字符符的的传传送送作作正正确确性性检检查查,因因此此奇奇偶偶效效验验位位是是可可选选择择的的,共共有有3种种可可能能,即即奇奇效效验验、偶偶效效验验和和无无效效验验,由由用用户户根根据据需要选定。需要选定。起始位起始位开始一个字符的传送的标志位。起开始一个字符的传送的标志位。起始位使数据线处于始位使数据线处于“0”状态。状态。数据位数据位起始位之后传送的数据信号位
99、。在起始位之后传送的数据信号位。在数据位中,数据位中,低位在前低位在前(左)(左)高位在后高位在后(右)。由(右)。由于字符编码方式的不同,数据位可以是于字符编码方式的不同,数据位可以是5、6、7或或8位。位。停止位停止位用以标志一个字符的用以标志一个字符的结束结束,它对应它对应于于“1”状态。停止位在一帧的最后,它可能是状态。停止位在一帧的最后,它可能是1、1.5或或2位,在实际中根据需要确定。位,在实际中根据需要确定。73输入输出中断定时与串行通信课件位时间位时间一个格式位的时间宽度。一个格式位的时间宽度。帧帧(frame)从从起起始始位位开开始始到到停停止止位位结结束束的的全全部部内内容
100、容称称之之为为一一帧帧。帧帧是是一一个个字字符符的的完完整整通通信信格格式式,因因此此也也就就把把串串行行通通信信的的字字符符格格式式称之为帧格式。称之为帧格式。二、异步串行通信的信号形式二、异步串行通信的信号形式1、近程通信、近程通信近程通信又称本地通信。近程通信又称本地通信。近程通信采用近程通信采用数字信号数字信号直接传送形式,即在传直接传送形式,即在传送过程中送过程中不改变原数据代码的波形和频率。不改变原数据代码的波形和频率。这种数这种数据传送方式称之为据传送方式称之为基带传送方式基带传送方式。74输入输出中断定时与串行通信课件寄存器寄存器串行接口串行接口TTL电平电平寄存器寄存器串行接
101、口串行接口TTL电平电平计算机计算机A计算机计算机BRS-232电平标准电平标准近程串行通信近程串行通信计算机内部的数据信号是计算机内部的数据信号是TTL电平标准,而通电平标准,而通信线上的数据信号却是信线上的数据信号却是RS 232C电平标准。然而,电平标准。然而,尽管电平标准不同,但尽管电平标准不同,但数据信号的波形和频率并数据信号的波形和频率并没有改变没有改变。近程串行通信只需用传输线。近程串行通信只需用传输线把两端的把两端的接口电路直接连起来接口电路直接连起来即可实现,既方便又经济。即可实现,既方便又经济。75输入输出中断定时与串行通信课件2、远程通信、远程通信在远程串行通信中,应使用
102、在远程串行通信中,应使用专用的通信电缆专用的通信电缆,但,但出于经济上的考虑也可以使用电话线作为传输线。出于经济上的考虑也可以使用电话线作为传输线。数数 字字 信信号号计算机计算机MODEM计算机计算机电话线电话线MODEM远程串行通信远程串行通信模拟信号模拟信号数字信号数字信号远距离直接传送数字信号,信号会发生畸变,因远距离直接传送数字信号,信号会发生畸变,因此要此要把数字信号变为模拟信号再进行传送把数字信号变为模拟信号再进行传送。信号形式。信号形式的转变通常使用的转变通常使用频率调制法频率调制法,即即以不同频率的载波信以不同频率的载波信号代表数字信号的两种不同电平状态号代表数字信号的两种不
103、同电平状态。这种数据传送。这种数据传送方式就称为方式就称为频带传送频带传送方式。方式。76输入输出中断定时与串行通信课件 波特率对于波特率对于CPUCPU与外界的通信是很重要的。与外界的通信是很重要的。相互通信的相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。数据通信。在通信中发、接双方有两次约定在通信中发、接双方有两次约定在通信中发、接双方有两次约定在通信中发、接双方有两次约定: : : : 字符格式字符格式字符格式字符格式帧格式帧格式帧格式帧格式 传送速率传送速率传送速率传送速率波特率波特率波特率波特率三、串行通信
104、波特率三、串行通信波特率 波特率波特率bps(bit per second) bps(bit per second) 为数据传送速率,表为数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是示每秒钟传送二进制代码的位数,它的单位是b/sb/s。即:。即:1 1波特波特 = 1 = 1位位/ /秒(秒(1bps1bps)作用:作用:1.1.反映串行通信的速率;反映串行通信的速率; 2. 2.反映对传输通道的要求:波特率越高,要反映对传输通道的要求:波特率越高,要求的传输通道的频带宽度就越宽。求的传输通道的频带宽度就越宽。77输入输出中断定时与串行通信课件 假假如如数数据据传传送送的的速速率率
105、是是120120个个字字符符秒秒,每每一一个个字字符符规规定定包包含含1010个个位位( (一一个个起起始始位位、8 8个个数数据据位和位和1 1个停止位个停止位) ),则传送的波特率为:,则传送的波特率为:101201012012001200位秒位秒12001200波特波特(bps)(bps) 每一位的传送时间即为波特率的倒数。每一位的传送时间即为波特率的倒数。 注意:注意:时钟频率和波特率不是同一个概念,时钟时钟频率和波特率不是同一个概念,时钟频率比波特率高得多。频率比波特率高得多。78输入输出中断定时与串行通信课件四、串行通信的制式四、串行通信的制式串串行行通通信信按按照照数数据据传传送
106、送方方向向可可分分为为三三种种制制式:式:单工制式单工制式是指甲乙双方通信时是指甲乙双方通信时只能单向传只能单向传送数据送数据,发送方和接收方固定。,发送方和接收方固定。 1 1、单工制式(、单工制式(SimplexSimplex)79输入输出中断定时与串行通信课件 半半双双工工制制式式是是指指通通信信双双方方都都具具有有发发送送器器和和接接收收器器,既既可可发发送送也也可可接接收收,但但不不能能同同时时接接收收和和发发送送,发发送送时时不不能能接接收收,接接收收时时不不能发送。能发送。2 2、半双工制式(、半双工制式(Half DuplexHalf Duplex)80输入输出中断定时与串行通
107、信课件三三、 EIA-232-D EIA-232-D EIA-232-D EIA-232-D端口的直接连接端口的直接连接端口的直接连接端口的直接连接 两台计算机可通过调制解调器(两台计算机可通过调制解调器(ModemModem),由电话线连接),由电话线连接实现长距离通信。在工业数据通信中,常直接将两台计算机实现长距离通信。在工业数据通信中,常直接将两台计算机的的EIA-232EIA-232端口连接。在通信过程中,不需要握手时,只需要端口连接。在通信过程中,不需要握手时,只需要3 3根连接线,根连接线,DB-9DB-9连接器的接线如图连接器的接线如图(a)(a)所示。在需要握手时,所示。在需要
108、握手时,还需要将还需要将请求发送、允许发送、准备就绪请求发送、允许发送、准备就绪等信号端形成如图等信号端形成如图(b)(b)所示的交叉连接形式。所示的交叉连接形式。 (a) (a) 无握手无握手 (b) (b) 全握手全握手 EIA-232EIA-232端口的直接连接端口的直接连接 81输入输出中断定时与串行通信课件 全全双双工工制制式式是是指指通通信信双双方方均均设设有有发发送送器器和和接接收收器器,并并且且信信道道划划分分为为发发送送信信道道和和接接收收信信道道,因因此此全全双双工工制制式式可可实实现现甲甲乙乙双双方方同同时时发发送送和和接接收数据收数据,发送时能接收,接收时也能发送。,发
109、送时能接收,接收时也能发送。3 3、全双工制式(、全双工制式(Full DuplexFull Duplex)82输入输出中断定时与串行通信课件4.4.2 EIA-232-D4.4.2 EIA-232-D接口标准接口标准 EIA-232-DEIA-232-D是是由美国电子工业协会正式公布的由美国电子工业协会正式公布的串行总线标串行总线标准准,也是目前最常用的,也是目前最常用的串行接口标准串行接口标准,用来实现计算机之间、,用来实现计算机之间、计算机与外设之间的数据通信。计算机与外设之间的数据通信。EIA-232-DEIA-232-D总线接口适用于总线接口适用于设备之间距离不大于设备之间距离不大于
110、1515米,传输速度最大米,传输速度最大20kb/s20kb/s。一、一、EIA-232-DEIA-232-D信号引脚定义信号引脚定义 EIA-232-D EIA-232-D定义了定义了2222根线,采用标准根线,采用标准2525芯芯 (DB-25) (DB-25) 插头插头座,在座,在EIA-232EIA-232中描述的连接器还有中描述的连接器还有DB-9DB-9。如表。如表4.74.7和和4.84.8所所示(见教材示(见教材7878页)。页)。 二、电气特性二、电气特性 EIA-232-D EIA-232-D采用负逻辑,即:采用负逻辑,即: 逻辑逻辑“1”“1”:-3V-15V -3V-1
111、5V 逻辑逻辑“0”“0”:+3V+15V+3V+15V EIA-232-D EIA-232-D的逻辑电平与的逻辑电平与TTLTTL电平不兼容,为了与电平不兼容,为了与TTLTTL器件器件相连必须进行电平转换。相连必须进行电平转换。83输入输出中断定时与串行通信课件4.4.3 MCS-514.4.3 MCS-51串行口结构及工作原理串行口结构及工作原理 当计算机向外发送数据时,必须当计算机向外发送数据时,必须将并行的数据转换为串行将并行的数据转换为串行的数据的数据再传送。反之,又必须再传送。反之,又必须将串行数据转换为并行数据将串行数据转换为并行数据输入输入计算机中。通用的异步接收计算机中。通
112、用的异步接收/ /发送器,简称发送器,简称UARTUART(Universal Universal Asynchronous Receiver/TransmitterAsynchronous Receiver/Transmitter),就是完成这一功能),就是完成这一功能的硬件电路。的硬件电路。 MCS-51 MCS-51 MCS-51 MCS-51单片机有一个单片机有一个单片机有一个单片机有一个可编程全双工可编程全双工可编程全双工可编程全双工的串行通信接口的串行通信接口的串行通信接口的串行通信接口(UART) UART) UART) UART) ,可同时发送、接收数据,可同时发送、接收数据,
113、可同时发送、接收数据,可同时发送、接收数据(Transmit/Receive)(Transmit/Receive)(Transmit/Receive)(Transmit/Receive);可以方便地实可以方便地实现与其他单片机之间、与现与其他单片机之间、与PCPC机之间的串行通信,也可用通信接机之间的串行通信,也可用通信接口实现键盘输入、口实现键盘输入、LEDLED显示及其他的控制。显示及其他的控制。 在串行口中可供用户使用的是它的寄存器,因此了解其寄在串行口中可供用户使用的是它的寄存器,因此了解其寄存器结构对用户来说是十分重要的。存器结构对用户来说是十分重要的。84输入输出中断定时与串行通信
114、课件 MCS-51 MCS-51单片机串行接口由单片机串行接口由两个独立的数据缓冲器两个独立的数据缓冲器SBUFSBUF( (一一个用作接收,一个用作发送个用作接收,一个用作发送) )以及发送控制器、接收控制器、以及发送控制器、接收控制器、输入移位寄存器和输出控制门等组成。输入移位寄存器和输出控制门等组成。 用户可访问的四个地址单元为:用户可访问的四个地址单元为:SBUFSBUF(99H99H):):两个两个SBUFSBUF共用一个地址共用一个地址99H99H。发送。发送SBUFSBUF只写不读,只写不读,接收接收SBUFSBUF只读不写,由所用指令是发送还是接收来决定对两个只读不写,由所用指
115、令是发送还是接收来决定对两个SBUFSBUF进行操作;进行操作;SCON SCON (98H98H) :串行口控制寄存器串行口控制寄存器PCON PCON (87H87H) :电源控制寄存器电源控制寄存器IE(0A8H): IE(0A8H): 中断允许寄存器中断允许寄存器 一、一、MCS-51MCS-51单片机串行接口的结构单片机串行接口的结构 输入输入/ /输出接口是输出接口是CPUCPU与外设之间信息交换的桥梁,它可以与外设之间信息交换的桥梁,它可以制成一块单独的大规模集成电路,也可以和制成一块单独的大规模集成电路,也可以和CPUCPU集成在同一块芯集成在同一块芯片上,单片机中就是后一种结
116、构。片上,单片机中就是后一种结构。I/OI/O接口有接口有并行接口并行接口和和串行接串行接口口两种。两种。85输入输出中断定时与串行通信课件86输入输出中断定时与串行通信课件5151单片机的串行接口结构单片机的串行接口结构SBUF(发)(发)SBUF(收)(收)发送控制器发送控制器TI接收控制器接收控制器RI移位寄存器移位寄存器波波特特率率发发生生器器T1 1A累累加加器器(门门)RxDTxD去申请中断去申请中断引脚引脚引脚引脚CPU内内部部87输入输出中断定时与串行通信课件发发送送时时,只只需需将将发发送送数数据据输输入入SBUFSBUF,CPUCPU将将自自动动启启动动和和完成串行数据的发
117、送;完成串行数据的发送; 接接收收时时,CPUCPU将将自自动动把把接接收收到到的的数数据据存存入入SBUFSBUF,用用户户只只需从需从SBUFSBUF中读出接收数据。中读出接收数据。1.1.串行数据缓冲器串行数据缓冲器SBUFSBUF(99H99H)在在逻辑上只有一个逻辑上只有一个,既表示发送寄存器,又表示接收寄,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址存器,具有同一个单元地址99H99H,用同一寄存器名,用同一寄存器名SBUFSBUF。 在在物理上有两个物理上有两个,一个是发送缓冲寄存器,另一个是接,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。收缓冲寄存器。MOV SBU
118、FMOV SBUF,A A ;启动一次数据发送启动一次数据发送MOV AMOV A,SBUF SBUF ;完成一次数据接收完成一次数据接收88输入输出中断定时与串行通信课件发送发送SBUFSBUF(99H99H)接收接收SUBFSUBF(99H99H)输入移位寄存器输入移位寄存器TITI(发送中断)(发送中断)T TX XD D串行输出串行输出80518051内部总线内部总线R RX XD D串行输入串行输入RIRI(接收输入)(接收输入)移位时钟移位时钟 MCS-51 MCS-51串行口寄存器结构串行口寄存器结构89输入输出中断定时与串行通信课件在接收方式下,串行数据通过引脚在接收方式下,串
119、行数据通过引脚RXD(P3.0)进入。由于在接收寄存器之间还有移位寄存器,)进入。由于在接收寄存器之间还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现据接收过程中出现帧重叠错误帧重叠错误,即在下一帧数据,即在下一帧数据来时,前一帧数据还没有读走。来时,前一帧数据还没有读走。在在发发送送方方式式下下,串串行行数数据据通通过过TXD(P3.1)送送出出。与与接接收收数数据据情情况况不不同同,发发送送数数据据时时,由由于于CPU是是主主动动的的,不不会会发发生生帧帧重重叠叠错错误误,因因此此发发送送电电路路就就不不需需双双重重缓缓冲
120、冲结结构构,这这样样可可以以提提高高数据发送速度。数据发送速度。90输入输出中断定时与串行通信课件2.2.2.2.串行控制寄存器串行控制寄存器串行控制寄存器串行控制寄存器SCONSCONSCONSCON(98H98H98H98H)SCONSCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI位地址位地址9FH9FH9EH9EH9DH9DH9CH9CH9BH9BH9AH9AH99H99H98H98H功能功能工作方式工作方式选择选择多机通信多机通信控制控制接收接收 允许允许发送发送
121、 第第9 9位位接收接收 第第9 9位位发送发送 中断中断接收接收 中断中断 SM0 SM1SM0 SM1 串行口串行口工作方式工作方式选择位。选择位。 SM2SM2 多机通信控制位。多机通信控制位。 RENREN 允许允许接收控制位。接收控制位。REN=1REN=1,允许接收。,允许接收。 TB8TB8 方式方式2 2和方式和方式3 3中要发送的第中要发送的第9 9位数据。位数据。 RB8RB8 方式方式2 2和方式和方式3 3中要接收的第中要接收的第9 9位数据。位数据。 TITI 发送发送中断标志。中断标志。 RIRI 接收接收中断标志。中断标志。 SCON SCON是一个可位寻址的专用
122、寄存器,用来设定串行口的是一个可位寻址的专用寄存器,用来设定串行口的工作方式、控制串行口的接收发送以及状态标志。工作方式、控制串行口的接收发送以及状态标志。91输入输出中断定时与串行通信课件 SM0 SM1SM0 SM1串行口工作方式选择位串行口工作方式选择位。其状态组合所对应。其状态组合所对应的工作方式如下表所示。的工作方式如下表所示。 SM0SM1工作方式工作方式功能说明功能说明000同步移位寄存器输入同步移位寄存器输入/输出输出,波特率波特率固定固定为为fosc/120118位位UART;波特率;波特率可变可变(T1溢出率溢出率/n,n=32或或16)1029位位UART,波特率,波特率
123、固定固定为为fosc/n,(n=64或或32)1139位位UART,波特率,波特率可变可变(T1溢出率溢出率/n,n=32或或16)SM2SM2-多机通信控制位多机通信控制位。 在工作方式在工作方式2 2和方式和方式3 3中:中: 若若SM2SM21 1:当接收到第:当接收到第9 9位数据(位数据(RB8RB8)为)为1 1,才将接收到的前,才将接收到的前8 8位位 数据装入数据装入SBUFSBUF,并置位,并置位RI;RI;否则将接收到的数据丢弃。否则将接收到的数据丢弃。 若若SM2SM20 0:不论第:不论第9 9位数据(位数据(RB8RB8)是否为)是否为1 1,都将接收到的前,都将接收
124、到的前8 8位数位数 据装入据装入SBUFSBUF,并置位,并置位RIRI。 在方式在方式1 1中:若中:若SM2SM21 1,则只有接收到有效的停止位时,才置位,则只有接收到有效的停止位时,才置位RIRI。 在方式在方式0 0中:必须使中:必须使SM2SM20 092输入输出中断定时与串行通信课件RENREN-允许接收控制位允许接收控制位。RENREN位用于对串行数据位用于对串行数据的接收进行控制:的接收进行控制:REN=0REN=0,禁止接收;,禁止接收;REN=1REN=1,允许接,允许接收。该位由软件置位或复位。收。该位由软件置位或复位。TB8TB8-方式方式2 2和方式和方式3 3中
125、要发送的第中要发送的第9 9位数据位数据。在。在方式方式2 2和方式和方式3 3时,时,TB8TB8是发送的第是发送的第9 9位数据。在多机通位数据。在多机通信中,以信中,以TB8TB8位的状态表示主机发送的是地址还是数位的状态表示主机发送的是地址还是数据:据:TB8=0TB8=0表示数据,表示数据,TB8=1TB8=1表示地址。该位由软件置表示地址。该位由软件置位或复位。位或复位。 TB8 TB8还可用于奇偶校验位。还可用于奇偶校验位。RB8RB8-方式方式2 2和方式和方式3 3中要接收的第中要接收的第9 9位数据位数据。在。在方式方式2 2或方式或方式3 3时,时,RB8RB8存放接收到
126、的第存放接收到的第9 9位数据位数据。注:注:多机通信时,多机通信时,SM2SM2必须置必须置1 1。双机通信时,通常使。双机通信时,通常使SM2SM20 0。93输入输出中断定时与串行通信课件TITI-发送中断标志。发送中断标志。当方式当方式0 0时,发送完第时,发送完第8 8位数据后,该位由硬件置位。在其他方式下,遇发位数据后,该位由硬件置位。在其他方式下,遇发送停止位时,该位由硬件置位。因此送停止位时,该位由硬件置位。因此TI=1TI=1,表示帧,表示帧发送结束,可软件查询发送结束,可软件查询TITI位标志,也可以请求中断。位标志,也可以请求中断。TITI位必须由软件清位必须由软件清0
127、0。RIRI-接收中断标志接收中断标志。当方式。当方式0 0时,接收完第时,接收完第8 8位数据后,该位由硬件置位。在其他方式下,当接位数据后,该位由硬件置位。在其他方式下,当接收到停止位时,该位由硬件置位。因此收到停止位时,该位由硬件置位。因此RI=1RI=1,表示,表示帧接收结束,可软件查询帧接收结束,可软件查询RIRI位标志,也可以请求中位标志,也可以请求中断。断。RIRI位也必须由软件清位也必须由软件清0 0。注:注:接收接收/ /发送数据发送数据, ,无论是否采用中断方式工作无论是否采用中断方式工作, ,每接收每接收/ /发发送一个数据都必须用指令对送一个数据都必须用指令对 RI/T
128、I RI/TI 清清0 0,以备下一次收,以备下一次收/ /发。发。 单片机复位时,单片机复位时,SCONSCON中的所有位均为中的所有位均为0 0。94输入输出中断定时与串行通信课件3.3.电源控制寄存器电源控制寄存器PCONPCON(87H87H)PCONPCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称SMODSMODGF1GF1GF0GF0PDPDIDLIDL SMOD SMOD:在串行口工作方式在串行口工作方式 1 1、2 2、3 3 中,是中,是波特率加倍位:波特率加倍位: =1 =1 时,波特率加倍时,波特率加倍 =0 =0 时,波特率不加倍。时
129、,波特率不加倍。 ( (复位时,复位时,SMODSMOD0 0。 ) ) PCONPCON寄存器不能进行位寻址。只有最高位寄存器不能进行位寻址。只有最高位SMODSMOD与串与串行口工作有关。行口工作有关。 ESES=0 =0 禁止串行中断禁止串行中断 ESES=1 =1 允许串行中断允许串行中断4.4.中断允许寄存器中断允许寄存器IEIE 95输入输出中断定时与串行通信课件MCS51MCS51单单片片机机的的串串行行口口可可编编程程选选择择四四种种工工作作方方式式,其其中中方方式式0 0主主要要用用于于扩扩展展并并行行输输入入/ /输输出出口口,串串行行通通信信时时一一般般使使用用方式方式1
130、 1、2 2或或3 3。 1.1.方式方式0 0 工工作作在在方方式式0 0时时,串串行行口口是是作作为为同同步步移移位位寄寄存存器器使使用用的的,其其数数据据传传输输波波特特率率固固定定为为foc/12foc/12。串串行行数数据据由由RXDRXD(P3.0)(P3.0)端端输输入入输输出出,同同步步移移位位脉脉冲冲由由TXDTXD(P3.1)(P3.1)端端输输出出。数数据据的的发发送送接接收收以以8 8位位为为一一帧帧,低低位位在在前前,无无起起始始位位、奇奇偶偶位位及及停停止止位位。其帧格式为:其帧格式为:二、二、 MCS51 MCS51串行通信接口的工作方式串行通信接口的工作方式96
131、输入输出中断定时与串行通信课件 DATACD4094CLKSTB并行输出并行输出80C51RXDTXDP1.0Q8CD4014CLKP/S并行输入并行输入80C51RXDTXDP1.0串行口与串行口与CD4094CD4094配合配合 串行口与串行口与CD4014CD4014配合配合 使用方式使用方式0 0实现数据的移位输入实现数据的移位输入/ /输出时,实际上是输出时,实际上是把串把串行口变成为并行口使用行口变成为并行口使用。串行口作为并行口。串行口作为并行口输出输出使用时,要使用时,要有有“串入并出串入并出”的移位寄存器的移位寄存器(例如(例如CD4094CD4094或或74LS16474L
132、S164、74HC16474HC164等)等)配合配合;串行口作为并行口;串行口作为并行口输入输入使用时,要有使用时,要有“并并入串出入串出”的移位寄存器(例如的移位寄存器(例如CD4014CD4014等)等)配合。配合。其电路连接其电路连接如上图所示。如上图所示。 故故在方式在方式在方式在方式0 0 0 0下,常用于扩展下,常用于扩展下,常用于扩展下,常用于扩展I/OI/OI/OI/O口。口。口。口。97输入输出中断定时与串行通信课件 数据发送数据发送在在移位时钟脉冲(移位时钟脉冲(TXDTXD)的控制下,数据从串行口的控制下,数据从串行口RXDRXD端逐位移入端逐位移入74HC164 SA
133、74HC164 SA、SBSB端。端。当当8 8位数据全部移出后,位数据全部移出后,SCONSCON寄存器的寄存器的TITI位被自动置位被自动置1 1。其后其后74HC16474HC164的内容即可并的内容即可并行输出。行输出。74HC164 CLR74HC164 CLR为清为清0 0端,输出时端,输出时CLRCLR必须为必须为1 1,否则,否则74HC164 Q074HC164 Q0Q7Q7输出为输出为0 0。 串串行行口口作作为为并并行行输输出出口口使使用用时时,要要有有“串串入入并并 出出 ”的的 移移 位位 寄寄 存存 器器 配配 合合 。 ( (例例 如如 CD4094CD4094或
134、或74HCl64)74HCl64)98输入输出中断定时与串行通信课件(2) (2) 数据接收数据接收 串串行行口口作作为为并并行行输输入入口口使使用用时时,要要有有“并并入入串串出出”的移位寄存器配合。的移位寄存器配合。( (例如例如CD4014CD4014或或74HCl65)74HCl65) 74HC16574HC165的的S/LS/L端端为为移移位位/ /置置入入端端,当当S/L=0S/L=0时时,从从Q0Q0Q7Q7并并行行置置入入数数据据,当当S/L=1S/L=1时时,允允许许从从QHQH端端移移出出数数据据。在在80C5180C51串串行行控控制制寄寄存存器器SCONSCON中中的的
135、REN=1REN=1时时,TXDTXD端端发发出出移移位位时时钟钟脉脉冲冲,从从RXDRXD端端串串行行输输入入8 8位位数数据据。当当接接收收到到第第8 8位位数数据据D7D7后,置位中断标志后,置位中断标志RIRI,表示一帧数据接收完成。,表示一帧数据接收完成。99输入输出中断定时与串行通信课件(4)应用举例应用举例DATACD4094CLKSTB80C51RXDTXDP1.0串行移位输出电路串行移位输出电路例例1:使用使用CD4094的输出端接的输出端接8只发光二极管,只发光二极管,利用它的串入并出功能,把发光二极管从左向右利用它的串入并出功能,把发光二极管从左向右依次点亮,并反复循环之
136、。按此要求所做的电路依次点亮,并反复循环之。按此要求所做的电路连接如图所示。连接如图所示。 波特率波特率波特率波特率: : : : 方式方式方式方式0 0 0 0 波特率固定,为单片机晶振频波特率固定,为单片机晶振频波特率固定,为单片机晶振频波特率固定,为单片机晶振频率的十二分之一。即率的十二分之一。即率的十二分之一。即率的十二分之一。即一个机器周期进行一次移位。一个机器周期进行一次移位。一个机器周期进行一次移位。一个机器周期进行一次移位。100输入输出中断定时与串行通信课件解:解:采用采用查询方式查询方式发送数据发送数据可编程序如下:可编程序如下:MOVSCON,#00H;串行口方式;串行口
137、方式0工作工作CLRES;禁止串行中断;禁止串行中断MOVA,#80H;发光管从左边亮起;发光管从左边亮起DELR:CLRP1.0;关闭并行输出;关闭并行输出MOVSBUF,A;串行输出;串行输出WAIT:JNBTI,WAIT;状态查询;状态查询SETBP1.0;开启并行输出;开启并行输出ACALLDELAY;状态维持时间;状态维持时间CLRTI;清发送中断标志;清发送中断标志RRA;发光组合循环右移;发光组合循环右移AJMPDELR ;继续;继续101输入输出中断定时与串行通信课件例例2.2.电路如图所示,电路如图所示,试编制程序输入试编制程序输入K1K1K8K8状态数据,状态数据,并存入片
138、内并存入片内RAM RAM 40H40H。 解:解:编程如下:编程如下: KIN:KIN: MOV SCON,#00HMOV SCON,#00H; ;串行口方式串行口方式0 0 CLR ES CLR ES ; ;禁止串行中断禁止串行中断 CLR P1.0 CLR P1.0 ; ;锁存并行输入数据锁存并行输入数据 SETB P1.0 SETB P1.0 ; ;允许串行移位操作允许串行移位操作 SETB REN SETB REN ; ;允许并启动接收(允许并启动接收(TXDTXD发送移位脉冲)发送移位脉冲)WAIT:JNB RI,WAIT WAIT:JNB RI,WAIT ; ;等待接收完毕等待接
139、收完毕 MOV 40H,SBUF MOV 40H,SBUF ; ;存入存入K1K1K8K8状态数据状态数据 102输入输出中断定时与串行通信课件例例3.3.电路如图所示,试编制程序按下列顺序要求每隔电路如图所示,试编制程序按下列顺序要求每隔0.50.5秒秒循环操作。循环操作。 从右向左依次点亮,每次亮一个;从右向左依次点亮,每次亮一个; 从左向右依次点亮,每次增加一个,直至全部点亮;从左向右依次点亮,每次增加一个,直至全部点亮; 返回从返回从不断循环。不断循环。 8 8个发光二极管全部点亮;个发光二极管全部点亮; 从左向右依次暗灭,每次减少一个,直至全灭;从左向右依次暗灭,每次减少一个,直至全
140、灭; 从左向右依次点亮,每次亮一个;从左向右依次点亮,每次亮一个;解:解:编程如下:编程如下:103输入输出中断定时与串行通信课件LIGHT:MOV SCON,#00H ;LIGHT:MOV SCON,#00H ;串行口方式串行口方式0 0 CLR ES ; CLR ES ;禁止串行中断禁止串行中断 MOV DPTR,#TAB ; MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址置发光二极管亮暗控制字表首址LP1: MOV R7,#0 ;LP1: MOV R7,#0 ;置顺序编号置顺序编号0 0LP2: MOV A,R7 ;LP2: MOV A,R7 ;读顺序编号读顺序编号 MOV
141、MOVC C A,A+DPTR ; A,A+DPTR ;读控制字读控制字 CLR P1.0 ; CLR P1.0 ;关闭并行输出关闭并行输出,STR=O,STR=O时,关闭并行输出;时,关闭并行输出; MOV SBUF,A ; MOV SBUF,A ;启动串行发送启动串行发送 JNB TI,$JNB TI,$ ; ;等待发送完毕等待发送完毕 CLR TI ; CLR TI ;清发送中断标志清发送中断标志 SETB P1.0 ; SETB P1.0 ;开启并行输出开启并行输出,STR=1,STR=1时,开启并行输出;时,开启并行输出; LCALL DLY500ms ; LCALL DLY500m
142、s ;调用延时调用延时0.50.5秒子程序秒子程序( (参阅以前的例子参阅以前的例子) ) INC R7 ; INC R7 ;指向下一控制字指向下一控制字 CJNE R7,#30,LP2 ; CJNE R7,#30,LP2 ;判循环操作完否判循环操作完否? ?未完继续未完继续 SJMP LP1 ; SJMP LP1 ;顺序编号顺序编号0 02929依次操作完毕依次操作完毕, ,从从0 0开始重新循环开始重新循环TAB:TAB: DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;从左向右
143、依次暗灭从左向右依次暗灭, , 每次减少一个每次减少一个, ,直至全灭直至全灭; ; DB 80H,40H,20H,10H,08H,04H,02H,01H; DB 80H,40H,20H,10H,08H,04H,02H,01H;从左向右依次点亮从左向右依次点亮, ,每次亮一个每次亮一个 DB 02H,04H,08H,10H,20H,40H,80H; DB 02H,04H,08H,10H,20H,40H,80H;从右向左依次点亮从右向左依次点亮, ,每次亮一个每次亮一个 DB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;DB 0C0H,0E0H,0F0H,0F8H,0FCH,0F
144、EH;从左向右依次点亮从左向右依次点亮, , 每次增加一个每次增加一个, ,直至全部点亮直至全部点亮; ;104输入输出中断定时与串行通信课件2.2.方式方式1 1串串行行口口工工作作在在方方式式1 1时时,是是作作为为1010位位异异步步通通信信接接口口,由由TXDTXD端端发发送送数数据据,RXTRXT端端接接收收数数据据。发发送送接接收收的的一一帧帧数数据据包包括括1010位位:1 1位位起起始始位位,用用0 0来来标标识识,8 8位位数数据据位位( (低低位位在在前前) ),1 1位位停停止止位位,用用1 1来标识。来标识。其帧格式为:其帧格式为:(1)(1)发送过程发送过程 当当CP
145、UCPU执执行行任任何何一一条条写写入入SBUFSBUF的的指指今今后后,便便启启动动串串行行口口发发送送,发发送送的的数数据据由由TXDTXD端端输输出出。串串行行接接口口能能自自动动地地在在数数据据的的前前后后插插入入一一位位起起始始位位和和一一位位停停止止位位,在在发发送送移移位位脉脉冲冲的的作作用用下下依依次次从从TXDTXD端端发发送送,发发送送完完一一帧帧信信息息时时,使使TXDTXD输输出出线线维维持持在在“1”“1”状状态态下下,将将SCONSCON中中的的TITI置置1 1。通通知知CPUCPU可可以以接接着着发发送送下下一一个字符。个字符。105输入输出中断定时与串行通信课
146、件(2)(2)接收过程接收过程 接收时,在接收时,在REN=1REN=1前提下,前提下,CPUCPU便以便以所选波特率所选波特率的的1616倍速率采样倍速率采样RXDRXD端电平。在没有信号到来之前,端电平。在没有信号到来之前,RXDRXD端的状态为端的状态为1 1。当在。当在RXDRXD端检测到从端检测到从1 1到到0 0的负跳的负跳变时,就认定为已接收到起始位,开始接收过程。变时,就认定为已接收到起始位,开始接收过程。1616分频计数器的分频计数器的1616个状态把接收每位信息的时间分个状态把接收每位信息的时间分成成1616份,在每个位时间的第份,在每个位时间的第7 7、8 8、9 9个计
147、数状态。个计数状态。从从RXDRXD端端采样三次采样三次,至少两次相同至少两次相同的值才被确认,的值才被确认,以确保输入的数据准确无误。以确保输入的数据准确无误。106输入输出中断定时与串行通信课件 接收数据的确认接收数据的确认: : CPUCPU通通过过对对RXDRXD线线的的采采样样来来完完成成接接收收数数据据的的确确认认。对对RXDRXD的的采采样样由由接接收收时时钟钟RXCRXC完完成成,CPU,CPU按按RXCRXC脉脉冲冲上上升升沿沿采采样样R RX XD D线线。每每当当连连续续采采样样到到RXDRXD线线上上8 8个个低低电电平平(起起始始位位之之半半)后后,CPUCPU便便确
148、确认认对对方方在在发发送送数数据据(不不是是干干扰扰信信号号)。此此后后,CPUCPU便便每每隔隔1616个个RXCRXC脉脉冲冲采采样样R RX XD D线线一一次次,并并把把采采样样到到的的数数据据作作为为输输入入数数据据,以以移移位位方方式式存存入入接接收收移移位位寄寄存存器器。RXCRXC对对R RX XD D线的采样关系如下图所示。线的采样关系如下图所示。 107输入输出中断定时与串行通信课件1234567891161234567816Tc起始位起始位RXDDATARXC启动检测启动检测确认启动位确认启动位采样数据采样数据CPUCPU对数据的采样对数据的采样 108输入输出中断定时与
149、串行通信课件 当一帧数据接收完毕,以下两个条件同时满足:当一帧数据接收完毕,以下两个条件同时满足: (1 1)RIRI0 0,即上一帧数据接收完成时,即上一帧数据接收完成时,RIRI1 1的中断请求的中断请求已被响应,已被响应,SBUFSBUF中的数据已被取走;中的数据已被取走; (2 2)SM2SM20 0或或接收到停止位为接收到停止位为1 1(方式方式1 1时停止位进入时停止位进入RB8RB8)。)。 则这次接收才有效,将则这次接收才有效,将8 8位数据装入接收缓冲器位数据装入接收缓冲器SBUFSBUF,停止停止位装入位装入RB8RB8,将,将SCONSCON中的中的RIRI置置1 1,通
150、知通知CPUCPU从从SBUFSBUF取走接收到的一取走接收到的一个字符。个字符。否则数据将丢失。否则数据将丢失。109输入输出中断定时与串行通信课件 波特率波特率 方式方式1 1波特率可变,由定时波特率可变,由定时/ /计数器计数器T1T1的计的计数溢出率来决定。数溢出率来决定。波特率波特率 = 2 = 2SMODSMOD(T1T1溢出率)溢出率)/ 32/ 32其中其中SMODSMOD为为PCONPCON寄存器中最高位的值,寄存器中最高位的值,SMOD=1SMOD=1表示表示波特率倍增。波特率倍增。溢出率溢出率:定时定时/ /计数器计数器溢出的频繁程度。溢出的频繁程度。 T1T1溢出率溢出
151、率即:即:T1T1溢出一次所需时间的倒数溢出一次所需时间的倒数(也(也即即T1T1在在1s1s内发生溢出的次数)。内发生溢出的次数)。 当定时计数器当定时计数器T1T1用作波特率发生器时,通常选用定用作波特率发生器时,通常选用定时初值自动重装的工作方式时初值自动重装的工作方式2(2(注意:不要把定时计数器注意:不要把定时计数器的工作方式与串行口的工作方式搞混淆了的工作方式与串行口的工作方式搞混淆了) )。之所以选择工。之所以选择工作方式作方式2 2,是因为方式,是因为方式2 2具有具有自动加载功能自动加载功能,可以避免通过,可以避免通过程序反复装入初值所引起的程序反复装入初值所引起的定时误差定
152、时误差,使波特率更加稳定。,使波特率更加稳定。 110输入输出中断定时与串行通信课件假定计数初值为假定计数初值为X X,则定时器,则定时器1 1溢出周期为:溢出周期为:12fosc(256-X)溢出率为溢出周期的倒数溢出率为溢出周期的倒数。故波特率计算公式为:故波特率计算公式为:实实际际使使用用时时,总总是是先先确确定定波波特特率率,再再计计算算定定时时器器1的的计计数数初初值值,然然后后进进行行定定时时器器的的初初始始化化。根根据据上上述述波波特特率率计计算算公公式式,得得出出计计数数初初值值的的计计算公式为:算公式为:波特率波特率=2SMOD32fosc12(256-X)X=2SMODfo
153、sc3212波特率波特率256-111输入输出中断定时与串行通信课件 3. 3. 方式方式2 2方式方式2是是11位为一帧的串行通信方式。位为一帧的串行通信方式。起起始始D0D1D2D3D4D5D6D7D8停停止止在方式在方式2下,字符还是下,字符还是8个数据位,只不过个数据位,只不过增增加了一个第加了一个第9数据位(数据位(D8),而且其而且其功能由用户确功能由用户确定定,是一个可编程位。,是一个可编程位。112输入输出中断定时与串行通信课件在在发发送送数数据据时时,应应预预先先在在SCON的的TB8位位中中把把第第9数据位的内容准备好数据位的内容准备好。这可使用如下指令完成:。这可使用如下
154、指令完成:SETBTB8;TB8位置位置“1”CLRTB8;TB8位置位置“0”发送数据(发送数据(D0D7)由)由MOV指令向指令向SBUF写入,写入,而而D8位的内容则由硬件电路从位的内容则由硬件电路从TB8中直接送到发送中直接送到发送移位寄存器的第移位寄存器的第9位,位,并以此来启动串行发送。一并以此来启动串行发送。一个字符帧发送完毕后,将个字符帧发送完毕后,将TI位置位置“1”,其它过程,其它过程与方式与方式1相同。相同。方式方式2的接收过程也与方式的接收过程也与方式1基本相似,所不基本相似,所不同的只在第同的只在第9数据位上。数据位上。113输入输出中断定时与串行通信课件方式方式2中
155、,串行口把中,串行口把接收接收到的前到的前8个数据位送个数据位送入入SBUF,把,把第第9数据位送入数据位送入RB8。方式方式2的波特率是固定的的波特率是固定的,且有两种:一种是,且有两种:一种是晶振频率的三十二分之一;另一种是晶振频率的六晶振频率的三十二分之一;另一种是晶振频率的六十四分之一十四分之一。取决于。取决于SMOD位。位。波特率波特率=2SMOD64fOSC114输入输出中断定时与串行通信课件 方方式式3 3同同样样是是一一帧帧1111位位的的串串行行通通信信方方式式,其其通通信信过过程程与与方方式式2 2完完全全相相同同,所所不不同同的的仅仅在在于于波波特特率率。方方式式2 2的
156、的波波特特率率只只有有固固定定的的两两种种,而而方方式式3 3的的波波特特率率则则与与方方式式1 1相相同同,即即通通过过设设置置T1T1的的初初值值来设定波特率来设定波特率。 4.4.方式方式3 3115输入输出中断定时与串行通信课件5.5.5.5.串行口四种工作方式的比较串行口四种工作方式的比较串行口四种工作方式的比较串行口四种工作方式的比较 四四种种工工作作方方式式的的区区别别主主要要表表现现在在帧帧格格式式及及波特率两个方面。波特率两个方面。 四种工作方式比较四种工作方式比较工作方式工作方式帧帧 格格 式式波波 特特 率率方式方式0 08 8位位全全是是数数据据位位, ,没没有有起起始
157、始位位、停停止止位位固固定定, ,即即每每个个机机器器周周期期传传送送一位数据一位数据方式方式1 11010位位, ,其其中中1 1位位起起始始位位,8,8位位数数据据位位,1,1位停止位位停止位不不固固定定, ,取取决决于于T1T1溢溢出出率率和和SMODSMOD方式方式2 21111位位, ,其其中中1 1位位起起始始位位,9,9位位数数据据位位,1,1位停止位位停止位固定固定, ,即即2 2SMODSMODfosc /64fosc /64方式方式3 3同方式同方式2 2同方式同方式1 1116输入输出中断定时与串行通信课件 解解决决的的方方法法只只有有调调整整单单片片机机的的时时钟钟频频
158、率率foscfosc,通常采用,通常采用11.0592MHz11.0592MHz晶振。晶振。6.6.常用波特率及其产生条件常用波特率及其产生条件常用波特率通常按规范取常用波特率通常按规范取12001200、24002400、48004800、96009600、,若采用晶振,若采用晶振12MHz12MHz和和6MHz6MHz,则计算得出,则计算得出的的T1T1定时初值将不是一个整数,产生波特率误差定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。而影响串行通信的同步性能。117输入输出中断定时与串行通信课件串口工作方式串口工作方式波波特特率率bit/sfosc(MHz)SMODTl
159、方方式式2定定时时初初值值方式方式1或方式或方式3120011.0592 0E8H方式方式1或方式或方式3240011.0592 0F4H方式方式1或方式或方式3480011.0592 0FAH方式方式l或方式或方式3960011.0592 0FDH方式方式1或方式或方式31920011.0592 1FDH 下表给出了串行方式下表给出了串行方式1 1或方式或方式3 3时常用波特率及时常用波特率及其产生条件。其产生条件。 118输入输出中断定时与串行通信课件串行口需初始化后,才能完成数据的输入、输出串行口需初始化后,才能完成数据的输入、输出。三、串行口的应用三、串行口的应用1.1.串行口的编程:
160、串行口的编程:其初始化过程如下:其初始化过程如下:(1 1)按选定串行口的方式设定)按选定串行口的方式设定SCONSCON的的SM0SM0、SM1SM1两位值。两位值。(2 2)对于方式)对于方式2 2或方式或方式3 3,应根据需要在,应根据需要在TB8TB8中写入待发送中写入待发送(3 3)若选定的方式不是方式)若选定的方式不是方式0 0,则还需设定发送的波特,则还需设定发送的波特 率;设定率;设定SMODSMOD的状态,以控制波特率是否加倍。若选定方式的状态,以控制波特率是否加倍。若选定方式1 1或方式或方式3 3,则应对定时器,则应对定时器T1T1进行初始化以设定其溢出率。进行初始化以设
161、定其溢出率。的第的第9 9位数据。位数据。119输入输出中断定时与串行通信课件2.2.2.2.串行口的应用举例串行口的应用举例串行口的应用举例串行口的应用举例 单片机间的串行通信通常可分为单片机间的串行通信通常可分为双机通信双机通信和多机通信和多机通信两类。而两类。而串行口串行口工作方式工作方式1 1只能用只能用于于双机通信,不能双机通信,不能用于用于多机通信多机通信;MCSMCS 5151应应用于用于多机通信多机通信时必须在时必须在方式方式2 2或或方式方式3 3下工作。下工作。 120输入输出中断定时与串行通信课件例例 1.1.设设 甲甲 乙乙 机机 以以 串串 行行 方方 式式 1 1进
162、进 行行 数数 据据 传传 送送 ,fosc=11.0592MHzfosc=11.0592MHz,波波特特率率为为1200b/s1200b/s。甲甲机机发发送送的的1616个个数数据据存存在在内内RAM RAM 40H40H4FH4FH单单元元中中,乙乙机机接接收收后后存在内存在内RAM 50HRAM 50H为首地址的区域中。为首地址的区域中。 T1T1初值初值 = 256 - = 232 = E8H= 256 - = 232 = E8H3232121200121200解:解: 串行方式串行方式1 1波特率取决于波特率取决于T1T1溢出率溢出率( (设设SMOD=0),SMOD=0),计算计算
163、T1T1定时初值:定时初值:2 20 0121输入输出中断定时与串行通信课件甲机发送子程序:甲机发送子程序: MOV TMOD,#20HMOV TMOD,#20H; ;置置T1T1定时器工作方式定时器工作方式2 2MOV TL1,#0E8HMOV TL1,#0E8H; ;置置T1T1计数初值计数初值MOV TH1,#0E8HMOV TH1,#0E8H; ;置置T1T1计数重装值计数重装值CLR ET1CLR ET1; ;禁止禁止T1T1中断中断SETB TR1SETB TR1;T1;T1启动启动MOV SCON,#40HMOV SCON,#40H; ;置串行方式置串行方式1,1,禁止接收禁止接
164、收MOV PCON,#00HMOV PCON,#00H; ;置置SMOD=0(SMODSMOD=0(SMOD不能位操作不能位操作) ) CLR ESCLR ES; ;禁止串行中断禁止串行中断MOV R0,#40HMOV R0,#40H; ;置发送数据区首地址置发送数据区首地址MOV R2,#16MOV R2,#16; ;置发送数据长度置发送数据长度MOVMOVA,R0A,R0; ;读一个数据读一个数据MOVMOVSBUF,ASBUF,A; ;发送发送WAIT:JNBWAIT:JNBTI,WAITTI,WAIT; ;等待一帧数据发送完毕等待一帧数据发送完毕CLRCLRTITI; ;清发送中断标志
165、清发送中断标志INCINCR0R0; ;指向下一字节单元指向下一字节单元DJNZDJNZR2,TRSAR2,TRSA; ;判判1616个数据发完否个数据发完否? ?未完继续未完继续RET RET ; ;TXDA:TXDA:TRSA:TRSA:122输入输出中断定时与串行通信课件MOV TMOD,#20HMOV TMOD,#20H; ;置置T1T1定时器工作方式定时器工作方式2 2MOV TL1,#0E8HMOV TL1,#0E8H; ;置置T1T1计数初值计数初值MOV TH1,#0E8HMOV TH1,#0E8H; ;置置T1T1计数重装值计数重装值CLR ET1CLR ET1; ;禁止禁止
166、T1T1中断中断SETB TR1SETB TR1;T1;T1启动启动MOV SCON,#40HMOV SCON,#40H; ;置串行方式置串行方式1,1,禁止接收禁止接收MOV PCON,#00HMOV PCON,#00H; ;置置SMOD=0(SMODSMOD=0(SMOD不能位操作不能位操作) )CLR ESCLR ES; ;禁止串行中断禁止串行中断MOV R0,#50HMOV R0,#50H; ;置接收数据区首地址置接收数据区首地址MOV R2,#16MOV R2,#16; ;置接收数据长度置接收数据长度SETB RENSETB REN; ;启动接收启动接收JNB RI,RDSB JNB
167、 RI,RDSB ; ;等待一帧数据接收完毕等待一帧数据接收完毕CLRCLR RI RI; ;清接收中断标志清接收中断标志MOVMOV A,SBUF A,SBUF; ;读接收数据读接收数据MOVMOV R0,A R0,A; ;存接收数据存接收数据INCINC R0 R0; ;指向下一数据存储单元指向下一数据存储单元DJNZDJNZ R2,RDSB R2,RDSB; ;判判1616个数据接收完否个数据接收完否? ?未完继续未完继续RET RET ; ;乙机接收子程序:乙机接收子程序:RXDB:RXDB:RDSB:RDSB:123输入输出中断定时与串行通信课件例例2.2. 设计一个串行方式设计一个
168、串行方式2 2发送子程序(发送子程序(SMOD=1SMOD=1),),将片内将片内RAM 50HRAM 50H5FH5FH中的数据串行发送,第中的数据串行发送,第9 9数据数据位作为奇偶校验位。接到接收方核对正确的回复位作为奇偶校验位。接到接收方核对正确的回复信号(用信号(用FFHFFH表示)后,再发送下一字节数据,否表示)后,再发送下一字节数据,否则再重发一遍。则再重发一遍。解:解:程序如下:程序如下:124输入输出中断定时与串行通信课件125输入输出中断定时与串行通信课件MOV A,R0 MOV A,R0 ; ;读数据读数据MOV C,PSW.0 MOV C,PSW.0 ; ;奇偶标志送奇
169、偶标志送TB8TB8MOV TB8,C MOV TB8,C ; ;MOV SBUF,A MOV SBUF,A ; ;启动发送启动发送JNB TI,WAIT1 JNB TI,WAIT1 ; ;等待一帧数据发送完毕等待一帧数据发送完毕CLR TI CLR TI ; ;清发送中断标志清发送中断标志SETB REN SETB REN ; ;允许接收允许接收CLR RI CLR RI ; ;清接收中断标志清接收中断标志JNB RI,WAIT2 JNB RI,WAIT2 ; ;等待接收回复信号等待接收回复信号MOV A,SBUF MOV A,SBUF ; ;读回复信号读回复信号CPL A CPL A ;
170、;回复信号取反回复信号取反JNZ TRLP JNZ TRLP ; ;非全非全0(0(回复信号回复信号FFH,FFH,错误错误),),转重发转重发INC R0 INC R0 ; ;全全0(0(回复信号回复信号=FFH,=FFH,正确正确),), 指向下一数据存储单元指向下一数据存储单元CJNE R0,#60H,TRLP CJNE R0,#60H,TRLP ; ;判判1616个数据发送完否个数据发送完否? ?未完继续未完继续RET RET ; ;TRLP:TRLP:MOV SCON,#80H MOV SCON,#80H ; ;置串行方式置串行方式2,2,禁止接收禁止接收MOV PCON,#80H
171、MOV PCON,#80H ; ;置置SMOD=1SMOD=1MOV R0,#50HMOV R0,#50H; ;置发送数据区首址置发送数据区首址TRS2:TRS2:WAIT1WAIT1: :WAIT2:WAIT2:126输入输出中断定时与串行通信课件例例3.3.编编制制一一个个串串行行方方式式2 2接接收收子子程程序序,接接收收上上例例发发送送的的1616个个数数据据,存存首首址址为为40H40H的的内内RAMRAM中中,并并核核对对奇奇偶偶校校验验位位,接接收收核核对对正正确确,发发出出回回复复信信号号FFHFFH;发发现现错错误误,发发出出回回复复信信号号00H00H,并并等等待待重新接收
172、。重新接收。解:解:程序如下:程序如下:127输入输出中断定时与串行通信课件RXD2: MOV SCON,#80H RXD2: MOV SCON,#80H ; ;置串行方式置串行方式2,2,禁止接收禁止接收 MOV PCON,#80H MOV PCON,#80H ; ;置置SMOD=1SMOD=1 MOV R0,#40H MOV R0,#40H ; ;置接收数据区首址置接收数据区首址 SETB REN SETB REN ; ;启动接收启动接收RWAP: JNB RI,$ RWAP: JNB RI,$ ; ;等待一帧数据接收完毕等待一帧数据接收完毕 CLR RI CLR RI ; ;清接收中断标
173、志清接收中断标志 MOV A,SBUF MOV A,SBUF ; ;读接收数据读接收数据, ,并在并在PSWPSW中产生接收数据的奇偶值中产生接收数据的奇偶值 JB PSW.0,ONE JB PSW.0,ONE ;P=1,;P=1,转另判转另判 JB RB8,ERR JB RB8,ERR ;P=0,RB8=1,;P=0,RB8=1,接收有错接收有错; ; ;P=0,RB8=0,;P=0,RB8=0,接收正确接收正确, ,继续接收继续接收RLOP: RLOP: MOV R0,AMOV R0,A ; ;存接收数据存接收数据 INC R0INC R0 ; ;指向下一数据存储单元指向下一数据存储单元R
174、IT: MOV A,#0FFH RIT: MOV A,#0FFH ; ;置回复信号正确置回复信号正确FDBK: MOV SBUF,A FDBK: MOV SBUF,A ; ;发送回复信号发送回复信号 CJNE R0,#50H,RWAP CJNE R0,#50H,RWAP ; ;判判1616个数据接收完否个数据接收完否? ?未完继续未完继续 CLR REN CLR REN ;16;16个数据正确接收完毕个数据正确接收完毕, ,禁止接收禁止接收 RET RET ; ;ONE: JNB RB8,ERR ONE: JNB RB8,ERR ;P=1,RB8=0,;P=1,RB8=0,接收有错接收有错 S
175、JMP RLOP SJMP RLOP ;P=1,RB8=1,;P=1,RB8=1,接收正确接收正确, ,继续接收继续接收ERR: CLR A ERR: CLR A ; ;接收有错接收有错, ,置回复信号错误标志置回复信号错误标志 SJMP FDBKSJMP FDBK ; ;转发送回复信号转发送回复信号128输入输出中断定时与串行通信课件因串行通信的程序设计,一般因串行通信的程序设计,一般可采用查询方式可采用查询方式或中断方式两种或中断方式两种,这里仅以查询方式为例加以说明,这里仅以查询方式为例加以说明。为了确保通信成功、有效,现规定双机异步通为了确保通信成功、有效,现规定双机异步通信程序信程序
176、“协议协议”如下:如下:通通信信双双方方均均采采用用系系统统时时钟钟频频率率fosc=12MHz,甲甲机机发发送送数数据据,乙乙机机接接收收数数据据,波波特特率率为为2400bps。例例4.4.双机通信程序举例双机通信程序举例129输入输出中断定时与串行通信课件通通信信开开始始时时,甲甲机机发发送送呼呼叫叫信信号号“06”,询询问问乙乙机机是是否否可可以以接接收收数数据据;乙乙机机收收到到呼呼叫叫信信号号后后,若若同同意意接接收收数数据据则则发发回回“00”作作为为应应答答,否否则则发发“15”表表示示暂暂不不能能接接收收数数据据;甲甲机机只只有有收收到到乙乙机机的的应应答答信信号号“00”后
177、后才才可可把把存存放放在在外外部部数数据据存存储储器器的的内内容容发发送送给给乙乙机机,否否则则继继续续向向乙乙机机呼呼叫叫,直到乙机同意接收。其数据格式为:直到乙机同意接收。其数据格式为:字节数字节数n数据数据1数据数据n累加校验和累加校验和累加校验和累加校验和是指字节数是指字节数n、数据、数据1、数据、数据n这(这(n+1)个字节内容的算术累加和。)个字节内容的算术累加和。乙机根据接收到的乙机根据接收到的“校验和校验和”判断已接收到判断已接收到的数据是否正确。的数据是否正确。130输入输出中断定时与串行通信课件若若接接收收正正确确,向向甲甲机机发发回回“0FH”信信号号,否否则则发发回回“
178、F0H”信信号号给给甲甲机机。甲甲机机只只有有接接收收到到“0FH”信信号号才才算算完完成成发发送送任任务务,返返回回调调用用的的程程序序,否否则则继继续呼叫,重发数据。续呼叫,重发数据。甲机发送程序甲机发送程序发送程序约定:发送程序约定:定时器定时器T1初始化为模式初始化为模式2,SMOD=1,计数初值,计数初值X=211061232122400256-=230=0E6H串行口初始化为串行口初始化为方式方式1,允许接收;内部允许接收;内部RAM31H和和30H单元存放单元存放发送的数据块首地址发送的数据块首地址;数据块长度存放在数据块长度存放在2FH2FH单单元元,R7存放发送的数据块长度;
179、存放发送的数据块长度;R6为累加和寄存器。为累加和寄存器。131输入输出中断定时与串行通信课件 Y YN N等待乙机回答等待乙机回答N N发送呼叫信号发送呼叫信号06H06H 是是00H00H?开始开始定时器、串行口初始化定时器、串行口初始化置置DPTRDPTR、长度计数器、长度计数器R7R7初值初值置校验寄存器置校验寄存器R6R6初值初值发送字节长度数发送字节长度数发送数据发送数据发送校验和发送校验和 发送完?发送完? 等待乙机回答等待乙机回答 传送正确吗?传送正确吗?返回返回N N 双机通信甲机查询发送程序框图双机通信甲机查询发送程序框图Y YY Y132输入输出中断定时与串行通信课件发送
180、程序清单:发送程序清单:MOVTMOD,#20H;T1初始化模式初始化模式2MOVTL1,#0E6H;置计数初值;置计数初值MOVTH1,#0E6HSETBTR1;启动;启动T1MOVSCON,#50H;串行口初始化为方式;串行口初始化为方式1, ;允许接收;允许接收MOVPCON,#80H;置;置SMOD=1FMT-RAM:MOVDPH,31H;置;置DPTR指针指针MOVDPL,30H MOVR7,2FH ;送字节数至;送字节数至R7MOVR6,#00H ;清累加和寄存器;清累加和寄存器133输入输出中断定时与串行通信课件TX-ACK:MOVA,#06H;发呼叫信号;发呼叫信号 MOVSB
181、UF,AWAIT1:JBCTI,RX-YES;等待发送完;等待发送完 SJMPWAIT1RX-YES:JBCRI,NEXT1;接收乙机回答;接收乙机回答 SJMPRX-YESNEXT1:MOVA,SBUF;判乙机是否同意接收判乙机是否同意接收CJNEA,#00H,TX-ACK;不同继续呼叫;不同继续呼叫TX-BYTES:MOVA,R7;发送传送的字节个数;发送传送的字节个数MOVSBUF,A ADDA,R6;加字节个数;加字节个数 MOVR6,A;存累加和;存累加和134输入输出中断定时与串行通信课件WAIT2:JBCTI,TX-NEWS;字节个数发送完?;字节个数发送完?SJMPWAIT2;
182、没完则等待;没完则等待TX-NEWS:MOVXA,DPTR;发送数据;发送数据MOVSBUF,A ADDA,R6;形成累加和送形成累加和送R6 MOVR6,A INCDPTR;数据指针加;数据指针加1WAIT3:JBCTI,NEXT2;数据发送完?;数据发送完? SJMPWAIT3;没完则等待没完则等待NEXT2:DJNZR7,TX-NEWS;判数据发送完否?;判数据发送完否?TX-SUM:MOVA,R6;数据发送完,发送累加和;数据发送完,发送累加和 MOVSBUF,A135输入输出中断定时与串行通信课件WAIT4:JBCTI,RX-0FH;累加和发送完否?;累加和发送完否? SJMPWAI
183、T4RX-0FH:JBCRI,IF-0FH;等待乙机回答;等待乙机回答 SJMPRX-0FHIF-0FH:MOVA,SBUFCJNEA,#0FH,FMT-RAM;判传送正确否?;判传送正确否? RET;正确返回;正确返回乙机接收程序乙机接收程序接收程序的约定:接收程序的约定:波特率设置初始化,串行口初始化波特率设置初始化,串行口初始化同发送程序。同发送程序。寄寄存存器器设设置置:31H和和30H存存放放接接收收数数据据缓缓冲冲区区首首址址;R7为数据块长度寄存器:为数据块长度寄存器:R6为累加和寄存器。为累加和寄存器。136输入输出中断定时与串行通信课件向甲机回答信息:向甲机回答信息:0FH为
184、接收正常,为接收正常,F0H为传送出错,为传送出错,00H为同意接收数据。为同意接收数据。是是06H?开始开始定时器、串行口初始化定时器、串行口初始化置置DPTR、校验和、校验和R6初值初值等待接收呼叫信号等待接收呼叫信号向甲机回送向甲机回送15H向甲机回送向甲机回送00H接收数据块长度接收数据块长度N接收数据存外部接收数据存外部RAM地址指针地址指针DPTR加加1数据接收完?数据接收完?接收校验和接收校验和传送正确吗?传送正确吗?向甲机回送向甲机回送F0H向甲机回送向甲机回送0FH返回返回NY双机通信乙机接收程序框图双机通信乙机接收程序框图YNY137输入输出中断定时与串行通信课件接收程序清
185、单:接收程序清单:FMT-TS:MOVTMOD,#20H ;T1初始化模式初始化模式2MOVTL1,#0E6H;置计数初值;置计数初值MOVTH1,#0E6HSETBTR1;启动;启动T1MOVSCON,#50H ;串行方式;串行方式1,允许接收,允许接收 MOVPCON,#80H ;SMOD=1,波特率加倍波特率加倍FMT-RAM:MOVDPH,31H ;置;置DPTR地址指针地址指针 MOVDPL,30H MOVR6,#00H;校验和寄存器清零;校验和寄存器清零RX-ACK:JBCRI,IF-06H ;等待接收呼叫信号;等待接收呼叫信号 SJMPRX-ACK138输入输出中断定时与串行通信
186、课件IF-06H:MOVA,SBUF;判呼叫信号有误?;判呼叫信号有误? CJNEA,#06H,TX-15HTX-00H:MOVA,#00H ;向甲机回送同意接收信号;向甲机回送同意接收信号MOVSBUF,AWAIT1:JBCTI,RX-BYTES;等待回送信号发送完;等待回送信号发送完 SJMPWAIT1TX-15H:MOVA,#15H;向甲机回送接收信号不正确;向甲机回送接收信号不正确 MOVSBUF,AWAIT2:JBCTI,HAVE1;等待不正确信号发送完;等待不正确信号发送完 SJMPWAIT2HAVE1:LJMPRX-ACK ;返回接收呼叫信号状态;返回接收呼叫信号状态RX-BYT
187、ES:JBCRI,HAVE2;接收数据块长度;接收数据块长度SJMPRX-BYTES139输入输出中断定时与串行通信课件HAVE2:MOVA,SBUF ;给长度寄存器赋值给长度寄存器赋值MOVR7,A MOVR6,A;形成累加和;形成累加和RX-NEWS:JBCRI,HAVE3;接收数据;接收数据 SJMPRX-NEWSHAVE3:MOVA,SBUF;接收数据;接收数据并存入外部并存入外部RAM中中 MOVXDPTR,A INCDPTR;修改地址指针;修改地址指针 ADDA,R6;形成累加和;形成累加和 MOVR6,ADJNZR7,RX-NEWS;判数据接收完否?;判数据接收完否?RX-SUM
188、:JBCRI,HAVE4;接收校验和;接收校验和140输入输出中断定时与串行通信课件 SJMPRX-SUMHAVE4:MOVA,SUBF;判传送是否正确;判传送是否正确CJNEA,R6,TX-ERRTX-RIGHT:MOVA,#0FH;向甲机应答传送正确;向甲机应答传送正确MOVSBUF,AWAIT3:JBCTI,GOOD;正确返回;正确返回 SJMPWAIT3TX-ERR:MOVA,#0F0H;向甲机应答传送错误;向甲机应答传送错误 MOVSBUF,AWAIT4:JBCTI,AGAINSJMPWAIT4AGAIN:LJMPFMT-RAM;返回重新接收数据状态;返回重新接收数据状态GOOD:R
189、ET;返回被调用主程序;返回被调用主程序141输入输出中断定时与串行通信课件例例5.单片机多机通信原理单片机多机通信原理主从式多机通信主从式多机通信在主从式多机通信中,只有一台主机,但从机在主从式多机通信中,只有一台主机,但从机可以有多台。主机发送的信息可以传送到各个从机可以有多台。主机发送的信息可以传送到各个从机或指定的从机,从机发送的信息只能为主机接收,或指定的从机,从机发送的信息只能为主机接收,各从机之间不能直接通信。各从机之间不能直接通信。TXDRXD8031主机主机TXDRXD80310#从机从机TXDRXD80311#从机从机TXDRXD8031n#从机从机主从式多机通信连接方式主
190、从式多机通信连接方式142输入输出中断定时与串行通信课件MCS 51应用于多机通信时必须在方式应用于多机通信时必须在方式2或方式或方式3下工作。下工作。 主主机机的的SMSM2 2 = = 0 0,所所有有从从机机的的SMSM2 2 =1=1,以以便便接接收收主主机机发发来来的的地址。地址。 主主机机给给从从机机发发送送地地址址时时,第第9 9数数据据位位上上发发送送1 1,表表示示发发送送的的是地址。指示从机接收这个地址。是地址。指示从机接收这个地址。 所所有有从从机机在在SMSM2 2 =1=1、RBRB8 8 = = 1 1时时,只只接接收收地地址址帧帧。并并和和本本机机地地址址比比较较
191、以以确确认认是是否否为为被被寻寻址址从从机机。当当接接收收主主机机发发来来的的从从机机地地址址与与自自己己的的地地址址不不同同时时,未未被被寻寻址址的的从从机机保保持持SM2 SM2 = = 1 1,继继续续接接收收地地址址帧帧;地地址址相相同同时时,被被寻寻址址从从机机通通过过指指令令清清除除SM2SM2,以以正常接收数据,并向主机发回接收到的从机地址,供主机核对。正常接收数据,并向主机发回接收到的从机地址,供主机核对。主主机机发发送送数数据据,其其中中SBUFSBUF中中的的信信息息为为数数据据,TB8=0TB8=0表表示示发发送送的是数据。且只有的是数据。且只有SM2=0SM2=0的从机
192、才可接收数据。的从机才可接收数据。 完完成成主主机机和和被被寻寻址址从从机机之之间间的的数数据据通通信信后后,被被寻寻址址从从机机重重新使新使SMSM2 2 =1=1,回到步骤,回到步骤 ,等待下次通信。,等待下次通信。143输入输出中断定时与串行通信课件和和双双机机通通信信一一样样,主主从从式式多多机机通通信信亦亦存存在在通通信信协协议议问问题题。一一般般通通信信协协议议都都有有通通用用标标准准,协协议议较较完完善,但很复杂。这里仅规定几条很不完善的协议:善,但很复杂。这里仅规定几条很不完善的协议:MCS 51单单片片机机构构成成的的多多机机通通信信系系统统最最多多允许允许255台从机,其地
193、址分别为台从机,其地址分别为00HFEH。“地址地址”FFH是对所有从机都起作用的一条控制命令,是对所有从机都起作用的一条控制命令,命令使被寻址从机命令使被寻址从机恢复恢复SM2=1的状态的状态。主主机机首首先先发发送送地地址址帧帧,被被寻寻址址的的从从机机返返回回本本机机地地址址给给主主机机,再再判判断断地地址址相相符符后后主主机机给给被被寻寻址址从从机机发发送送控控制制命命令令,被被寻寻址址从从机机根根据据其其命命令令向向主主机机回回送送自自己己的的状状态态,若若主主机机判判断断状状态态正正常常,主主机机开开始始发发送送或接收的第一个字节是数据块的长度。或接收的第一个字节是数据块的长度。1
194、44输入输出中断定时与串行通信课件假定主机发送的控制命令代码为:假定主机发送的控制命令代码为:00H主机发送从机接收命令;主机发送从机接收命令;01H从机发送主机接收命令;从机发送主机接收命令;其它为非法命令。其它为非法命令。从机状态字格式为:从机状态字格式为: ERR 0 0 0 0 0 TRDY RRDY其中:其中:ERR=1,从机接收到非法命令;,从机接收到非法命令;TRDY=1,从机发送准备就绪;,从机发送准备就绪;RRDY=1,从机接收准备就绪,从机接收准备就绪。通信程序包括主机程序和从机程序两部分。通信程序包括主机程序和从机程序两部分。145输入输出中断定时与串行通信课件主机程序主
195、机程序 主机程序流程图主机程序流程图N N接收数据块接收数据块N NY YY Y主机子程序主机子程序命令从机复位命令从机复位从机应答从机应答发送命令字发送命令字从机应答从机应答N N命令正确?命令正确?命令分类命令分类00H00H(发)(发)01H01H(收)(收)从机接收就绪?从机接收就绪?发送数据块发送数据块返回返回N N从机发送就绪?从机发送就绪?发送从机地址发送从机地址地址相符?地址相符?Y Y N N给给R0R0、R1R1、R2R2、R3R3、R4R4和和R5R5赋初值赋初值开始开始定时器定时器T1T1方式方式2 2波特率为波特率为1200bps1200bps 启动启动T1T1工作工
196、作串行口方式串行口方式3 3,允许接收,允许接收SM2=0SM2=0, TB8=1 TB8=1调用主机通信子程序调用主机通信子程序等待等待(a a)主机主程序流程)主机主程序流程 (b b)主机通信子程序流程)主机通信子程序流程Y YY YYN146输入输出中断定时与串行通信课件主机主程序用于定时器主机主程序用于定时器T1初始化,串行口初始初始化,串行口初始化和传递主机通信子程序所需入口参数。化和传递主机通信子程序所需入口参数。主机通信子程序用于主机和从机间一个数据块主机通信子程序用于主机和从机间一个数据块的传送。的传送。程序中所用寄存器分配如下:程序中所用寄存器分配如下:R0存放主机发送数据
197、块始址;存放主机发送数据块始址;R1存放主机接收数据块始址;存放主机接收数据块始址;R2存放被寻址从机地址;存放被寻址从机地址;R3存放主机发出命令;存放主机发出命令;R4存放发送数据块长度存放发送数据块长度R5存放接收数据块长度。存放接收数据块长度。147输入输出中断定时与串行通信课件主机主程序:主机主程序:STARTSTART:MOV TMODMOV TMOD,#20H #20H ;定时器;定时器T1T1方式方式2 2 MOV TH1 MOV TH1,#0F4H #0F4H ;定时器;定时器T1T1初值初值 MOV TL1MOV TL1,#0F4H #0F4H ;波特率为;波特率为1200
198、bps1200bps SETB TR1 SETB TR1 ;启动;启动T1T1工作工作 MOV SCON MOV SCON,#0D8H #0D8H ;串行口方式;串行口方式3 3,允许接收,允许接收 MOV PCON MOV PCON,#00H #00H MOV RMOV R0 0,#40H #40H ;发送数据块首址送;发送数据块首址送R0R0 MOV R MOV R1 1,#20H#20H ;接收数据块首址送;接收数据块首址送R1R1 MOV R MOV R2 2,#SLAVE #SLAVE ;被寻址从机地址送;被寻址从机地址送R2R2 MOV R MOV R3 3,#00H/01H #0
199、0H/01H ; 00H 00H,则主机发从机收命令,则主机发从机收命令 ;01H01H,则从机发主机收命令,则从机发主机收命令148输入输出中断定时与串行通信课件MOVR4,#20;发送数据块长度送;发送数据块长度送R4MOVR5,#20;接收数据块长度送;接收数据块长度送R5ACALLMCOMMU ;调用主机通信子程序;调用主机通信子程序 SJMP;等待;等待主机通信子程序:主机通信子程序: ORG8100HMCOMMU:MOVA,R2;从机地址送;从机地址送A MOVSBUF,A;发送从机地址;发送从机地址 JNBRI,;等待接收从机应答地址;等待接收从机应答地址 CLRRI;从机应答后
200、清;从机应答后清RI149输入输出中断定时与串行通信课件MOVA,SBUF;从机应答地址送;从机应答地址送A XRLA,R2;核对两个地址;核对两个地址 JZMTXD2;相符,则转;相符,则转MTXD2MTXD1:MOVSBUF,#0FFH;发送从机复位信号;发送从机复位信号 SETBTB8;地址帧标志送;地址帧标志送TB8 SJMPMCOMMU;重发从机地址;重发从机地址MTXD2:CLRTB8;准备发送命令;准备发送命令 MOVSBUF,R3;送出命令;送出命令 JNBRI,;等待从机应答;等待从机应答 CLRRI;从机应答后清;从机应答后清RI MOVA,SBUF;从机应答命令送;从机应
201、答命令送AJNBACC.7,MTXD3;核对命令后无错,命令分类;核对命令后无错,命令分类150输入输出中断定时与串行通信课件SJMPMTXD1;若命令收错,则重新联络若命令收错,则重新联络MTXD3:CJNER3,#00H,MRXD;若为从机发送主机接收若为从机发送主机接收;转转MRXDJNBACC.0,MTXD1;若从机接收未就绪,则重新联络若从机接收未就绪,则重新联络MTXD4:MOVSBUF,R0;从机接收就绪,开始发送从机接收就绪,开始发送 JNBTI,;等待发送结束;等待发送结束 CLRTI;发送结束后清;发送结束后清TI INCR0;R0指向下一发送数据指向下一发送数据 DJNZ
202、R4,MTXD4;若数据块未发完,则继续;若数据块未发完,则继续RET151输入输出中断定时与串行通信课件MRXD:JNBACC.1,MTXD1;从机发送未就绪,重新联络;从机发送未就绪,重新联络MRXD1:JNBRI, ;等待接收完毕;等待接收完毕 CLRRI;接收到一帧后清;接收到一帧后清RI MOVA,SBUF;收到的数据送;收到的数据送A MOVR1,A;存入内存;存入内存 INCR1;接收数据区指针加;接收数据区指针加1 DJNZR5,MRXD1;若未接收完,则继续;若未接收完,则继续 RET END152输入输出中断定时与串行通信课件 从机程序从机程序串行口方式串行口方式3,允许接
203、收,允许接收SM2=1,TB8=1发送数据块始址送发送数据块始址送R0接收数据块始址送接收数据块始址送R1发送数据块长度送发送数据块长度送R2接收数据块长度送接收数据块长度送R3开始开始停机停机定时器定时器T1方式方式2波特率为波特率为1200bps启动启动T1工作工作开开CPU中断中断开串行口中断开串行口中断(a)从机主程序)从机主程序发发RRDY=1状态字状态字接收数据接收数据发送完?发送完?本机接收就绪?本机接收就绪?NNYNN保护现场保护现场命令分类命令分类01(发)(发)返回返回本机发送就绪?本机发送就绪?接受地址符合本机地址接受地址符合本机地址回送本机地址回送本机地址接收下一字符接
204、收下一字符是命令字吗?是命令字吗?恢复现场恢复现场发发TDRY=1状态字状态字发送数据发送数据送送TRDY=0状态字状态字Y发发RRDRRDY=0Y=0状状态态字字N非法命令非法命令接收完?接收完?N(b)从机中断服务程序)从机中断服务程序YYYY153输入输出中断定时与串行通信课件从机主程序用于定时器从机主程序用于定时器T1初始化、串行口初始化和初始化、串行口初始化和中断初始化。从机中断服务程序用于对主机的通信。中断初始化。从机中断服务程序用于对主机的通信。ORG1000HSTART:MOVTMOD,#20H;定时器;定时器T1为方式为方式2 MOVTH1,#0F4H;波特率为;波特率为12
205、00bps MOVTL1,#0F4H SETBTR1;启动;启动T1工作工作 MOVSCON,#0F8H;串行口为方式;串行口为方式3,;允许接收;允许接收SM2=1,TB8=1 MOVPCON,#00HMOVR0,#20H;R0指向发送数据块始址指向发送数据块始址 MOVR1,#40H;R1指向接收数据块始址指向接收数据块始址154输入输出中断定时与串行通信课件MOVR2,#20;发送数块长度送;发送数块长度送R2 MOVR3,#20;接收数块长度送;接收数块长度送R3 SETBEA;开;开CPU中断中断 SETBES;允许串行口中断;允许串行口中断 CLRRI;清;清RI SJMP;等待;
206、等待应应当当注注意意:主主机机程程序序中中的的发发送送数数据据块块及及接接收收数数据据块块长长度度要要同同从从机机程程序序中中的的保保持持一一致致(程程序序中中假假设设皆皆为为20H20H), ,即即主主机机的的发发送送数数据据块块长长度度应应等等于于被被寻寻址址从从机机的的接接受受数数据据块块长长度度,主主机机的的接接收收数数据据块块长长度度应应等等于于从从机机的的发发送送数数据据块块长长度度; ;否否则则,就就应应当当把把发发送送数数据据块块长长度度字字节节传传送送给给接接收收端端,以以便便接接收收端端根根据据发发送送数数据据块块长度来确定接收数据区的长度。长度来确定接收数据区的长度。15
207、5输入输出中断定时与串行通信课件从机中断服务程序:从机中断服务程序:由于从机串行口设定为由于从机串行口设定为方式方式3、SM2=1和和RI=0,且,且串行口中断已经开放串行口中断已经开放,因此,因此从机的接收中断总从机的接收中断总能被响应能被响应(主机发送地址时)。在中断服务程序中,(主机发送地址时)。在中断服务程序中,SLAVE是从机的是从机的本机地址本机地址,F0H(即(即PSW.5)为本)为本机机发送就绪发送就绪位地址(即:位地址(即:F0H中为中为1表示从机发送准表示从机发送准备就绪),备就绪),PSW.1为本机为本机接收接收就绪状态位(即:就绪状态位(即:PSW.1=1为本机已准备好
208、接收)。为本机已准备好接收)。寄存器分配为:寄存器分配为:R0:存放发送数据块始址:存放发送数据块始址R1:存放接收数据块始址:存放接收数据块始址R2:存放发送数据块长度:存放发送数据块长度R3:存放接收数据块长度:存放接收数据块长度156输入输出中断定时与串行通信课件ORG0023HSJMPSINTSBV;转入从机中断服务程序;转入从机中断服务程序ORG0100HSINTSBV:CLRRI;接收到地址后清;接收到地址后清RIPUSHACC ;保护;保护A于堆栈于堆栈PUSHPSW ;保护;保护PSW于堆栈于堆栈 MOVA,SBUF;接收的从机地址送;接收的从机地址送AXRLA,#SLAVE;
209、和本机地址核对;和本机地址核对 JZSRXD1;若是呼叫本机,则继续;若是呼叫本机,则继续RETURN:POPPSW;不是呼叫本机,则恢复;不是呼叫本机,则恢复PSWPOPACC;恢复;恢复ACCRETI;中断返回;中断返回SRXD1:CLRSM2;准备接收数据;准备接收数据/命令命令157输入输出中断定时与串行通信课件MOVSBUF,#SLAVE;发回本机地址,供核对;发回本机地址,供核对JNBRI,;等待接收主机发来的数据;等待接收主机发来的数据/命令命令CLRRI;接收到后清;接收到后清RIJNBRB8,SRXD2;若是数据;若是数据/命令,则继续命令,则继续SETBSM2;若是复位信号
210、,则令;若是复位信号,则令SM2=1SJMPRETURN ;返主程序;返主程序SRXD2:MOVA,SBUF;接收命令送;接收命令送ACJNEA,#02H,NEXT;命令合法?;命令合法?NEXT:JCSRXD3;若命令合法,则继续;若命令合法,则继续CLRTI;若命令不合法,则清;若命令不合法,则清TIMOVSBUF,#80H;发送;发送ERR=1的状态字的状态字SETBSM2;令;令SM2=1SJMPRETURN ;返主程序;返主程序158输入输出中断定时与串行通信课件SRXD3:JZSCHRX;若为接收命令,则转;若为接收命令,则转SCHRXJBF0H,STXD ;若本机发送就绪,则转;
211、若本机发送就绪,则转STXDMOVSBUF,#00H;本机发送未就绪,发;本机发送未就绪,发;TRDY=0SETBSM2SJMPRETURN;返主程序;返主程序STXD:MOVSBUF,#02H;发送;发送TRDY=1的状态字的状态字JNBTI,;等待发送完毕;等待发送完毕CLRTI;接收到后清;接收到后清TILOOP1:MOVSBUF,R0;发送一个字符数据;发送一个字符数据JNBTI,;等待发送完毕;等待发送完毕CLRTI;发送完毕后清;发送完毕后清TIINCR0;发送数据块始址加;发送数据块始址加1DJNZR2,LOOP1;字符未发完,则继续;字符未发完,则继续159输入输出中断定时与串
212、行通信课件SETBSM2;令;令SM2=1SJMPRETURN;返回;返回SCHRX:JBPSW.1,SRXD;本机接收就绪则;本机接收就绪则STXDMOVSBUF,#00H;本机接收未就绪,发;本机接收未就绪,发RRDY=0SETBSM2;令;令SM2=1SJMPRETURN;返回主程序;返回主程序SRXD:MOVSBUF,#01H;发出;发出RRDY=1状态字状态字LOOP2:JNBRI,;接收一个字符;接收一个字符CLRRI;接收一帧字符后后清;接收一帧字符后后清RIMOVR1,SBUF;存入内存;存入内存INCR1;接收数据块指针加;接收数据块指针加1DJNZR3,LOOP2;若未接收
213、完,则继续;若未接收完,则继续160输入输出中断定时与串行通信课件SETBSM2;令;令SM2=1SJMPRETURN;返回主程序;返回主程序END161输入输出中断定时与串行通信课件在许多应用场合,需要由在许多应用场合,需要由PCPC机与单片机组成分机与单片机组成分布式计算机系统,单片机完成数据的采集与过程控布式计算机系统,单片机完成数据的采集与过程控制,制,PCPC机完成数据的显示、管理,以及控制模型的机完成数据的显示、管理,以及控制模型的优化等。本节讨论优化等。本节讨论PCPC机与单片机的串行通信问题。机与单片机的串行通信问题。PCPC系列微机利用异步通信接口可实现串行通信。异系列微机利
214、用异步通信接口可实现串行通信。异步通信接口的核心是通用异步接收步通信接口的核心是通用异步接收/ /发送器发送器UART(Universal Asynchronous Receiver UART(Universal Asynchronous Receiver Transmitter)Transmitter),配以电平转换电路和控制逻辑电路。,配以电平转换电路和控制逻辑电路。 异步通信接口可以与调制解调器配合进行远异步通信接口可以与调制解调器配合进行远距离通信。距离通信。4.5 PC4.5 PC机与单片机的通信机与单片机的通信162输入输出中断定时与串行通信课件利利用用PCPC机机的的异异步步通通
215、信信适适配配器器,可可以以很很方方便便地地完完成成与与单单片片机机的的连连接接。最最简简单单的的连连接接方方式式如如图图4.254.25(P99P99页页)所所示示。由由于于单单片片机机输输入入输输出出电电平平为为TTLTTL电电平平,而而PCPC机机是是EIA-232-DEIA-232-D标标准准接接口口,因因此此需需要要完完成成两两种种不不同同电电平平之之间间的的转转换换,才才能能实实现现PCPC机机与与单单片片机机之之间间的的通通信信。图图4.254.25中中的的MC1488MC1488芯芯片片将将TTLTTL电电平平转转换换为为EIA-232-DEIA-232-D电电平平,MC1489MC1489芯芯片片则则将将EIA-232-DEIA-232-D电平转换为电平转换为TTLTTL电平。电平。163输入输出中断定时与串行通信课件本章小结(本章小结(P101P101)164输入输出中断定时与串行通信课件 作业:作业:作业:作业:P102P102P102P102二、简答题:二、简答题:1 1,2 2,3 3,5 5,6 6,7 7。 165输入输出中断定时与串行通信课件