《微控制器原理及应用技术》课件第5章_第1页
《微控制器原理及应用技术》课件第5章_第2页
《微控制器原理及应用技术》课件第5章_第3页
《微控制器原理及应用技术》课件第5章_第4页
《微控制器原理及应用技术》课件第5章_第5页
已阅读5页,还剩223页未读 继续免费阅读

下载本文档

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

文档简介

第5章中断、定时/计数器与串行口5.1中断

5.2定时/计数器

5.3串行接口教学提示:本章主要介绍MCS51系列单片机的内部标准功能单元中断系统、定时/计数器和串行通信口。以这些片内标准功能模块为基础,通过简化功能部件或新增其它功能部件,即可形成8051系列单片机中的高档机型和低档机型。所以,掌握本章内容对了解MCS51系列单片机的原理和应用是至关重要的。

教学要求:MCS51系列单片机片内部标准功能单元主要包括中断系统、定时/计数器和串行通信口等。通过本章的学习,使学生掌握各功能模块特有的逻辑结构和基本功能,从而进一步了解各功能模块在实际领域中的应用,为后面章节的学习奠定重要的基础。

中断技术是计算机的重要技术之一。计算机引入中断技术,一方面可以实时处理控制现场瞬时发生的事件,提高计算机处理故障的能力;另一方面,可以解决CPU和外设之间的速度匹配问题,提高CPU的效率。计算机的中断技术,使计算机的工作更加灵活、效率更高。在某种条件下,可以说中断系统功能的强弱是衡量计算机性能的重要技术指标之一。5.1中断5.1.1中断系统概述

计算机与外设交换信息时,存在高速的CPU和低速的外设之间的矛盾。若采用查询方式,不但占用CPU的操作时间,还降低了响应速度。另外,一般还要求CPU能够对外部随机或定时出现的紧急事件做到及时响应处理。为解决此类突发性问题,引入了“中断”概念。

1.中断的概念

在日常生活中经常会出现类似中断的现象,比如在课堂教学中,当老师正在按备课教案给同学们讲课时,课堂中任何一个同学都可能突然提出问题,老师如果认为有必要马上回答这个问题,他会暂停正在讲授的课程内容,解答同学的问题,问题解决后,老师接着刚才的内容继续讲授课程。这样一个过程实质上就是一个中断过程。可以这样来理解:老师按教案讲课的是“主程序”;提问的同学是“中断源”;提问打断老师正常授课的过程可称为“中断请求”;老师认为有必要马上回答这个问题,可称为“中断允许”;暂停正在讲授的课程内容解答同学的疑问,可称为“中断响应”;解答疑问的过程可称为“中断处理”;解答完疑问继续讲授课程内容可称为“中断返回”。

相应地,单片机的“中断”是指单片机在运行某一段程序过程中,由于单片机系统内、外的某种原因,有必要中止原程序的执行,而去执行相应的处理程序,待处理结束后,再返回来继续执行被中断程序的过程。一个完整的中断处理的基本过程应包括:中断请求、中断响应、中断处理和中断返回。单片机中实现中断功能的部件称为中断系统,也就是中断管理系统。产生中断的请求源称为中断源,中断源向CPU发出的请求称为中断申请,CPU暂停当前的工作转去处理中断源事件称为中断响应,中断的地方称为断点,对中断源事件的处理过程称为中断服务,事件处理完毕CPU返回到被中断的地方称为中断返回。

在上面课堂教学的例子中,如果把教学、答疑和了解教学效果都定义成课堂教学的任务,显然,按照一般的纯授课模式是没有办法完成的,逐个去问学生了解教学的效果或存在什么疑问虽然可行,但效率太低。通过引入课堂提问机制,可以实时地了解学生存在的疑问和教学的效果,完成教学、答疑和了解教学效果的任务。对于单片机也一样,有了中断机制,单片机在实际应用中将可以同时面对多项任务,快速响应并及时处理突发事件,使单片机具备实时处理的能力。尤其是当外部设备速度较慢时,如果不采用中断技术,CPU将处于不断等待状态,效率极低;采用中断方式,CPU将只在外部设备提出请求时才中断正在执行的任务,来执行外部设备请求任务,这样极大地提升了CPU的使用效率。

2.中断的任务

单片机可以接受的中断申请一般不止一个,对于这些不止一个的中断源进行管理,就是中断系统的任务。这些任务一般包括以下几方面。

1)开中断或关中断

中断的开放或关闭可以通过指令对相关特殊功能寄存器的操作来实现,这是CPU能否接收中断申请的关键,只有在开中断的情况下,才有可能接收中断源申请。

2)中断排队

一般单片机系统都允许有多个中断源,当几个中断源同时向CPU请求中断服务时,就出现了CPU优先响应哪一个中断请求的问题。为此系统必须根据中断源的轻重缓急进行排队,具体实现方法为将各个中断源分成若干个优先级,再按如下原则处理:

①不同级的中断源同时申请中断时,先响应高级,后响应低级。

②同级的中断源同时申请中断时,按事先规定,即默认的优先顺序。③处理低级中断又收到高级中断请求时,停止低级转去先执行高级。

④处理高级中断又收到低级中断请求时,不响应它,等待做完高级处理后再处理低级中断。

因此,面对系统中多个中断源,同时申请中断,CPU首先响应优先级别高的中断申请,服务结束后再响应级别低的中断源。当CPU响应某一中断请求并正在运行该中断服务程序时,若有优先级高的中断源发出中断申请,CPU就中断正在处理的低级中断服务程序,保留断点,去响应高级别的中断申请,待完成了高级中断服务程序后,再继续从断点处执行被打断的低级中断服务程序,这就是中断嵌套。

注意:当发生中断嵌套时,在中断服务子程序编写中,必须注意采用堆栈或其它方式对用户数据进行保护。

3)中断响应

当某一个中断源发出中断申请时,CPU能决定是否响应这个中断请求(当CPU在执行更急、更重要的工作时,可以暂不响应中断)。若允许响应这个中断请求,CPU必须在现行的指令执行完后,把断点处的PC值(即下一条应执行的指令地址)压入堆栈保存起来,称为保护断点,这是由硬件自动完成的。同时,用户在编程时要注意把有关的寄存器内容和状态标志位压入堆栈保存起来,这称为保护现场。保护断点和现场之后即可执行中断服务程序,执行完毕,需恢复原保留的寄存器的内容和标志位的状态,称为恢复现场,并执行中断返回指令,中断返回指令的功能为恢复断点处的PC值(称为恢复断点),使CPU返回断点,继续执行主程序。完整的中断过程如图5.1所示。

图5.1中断的过程

4)中断请求的撤除

在响应中断申请以后,返回主程序之前,中断请求应该撤除。否则,就等于中断申请依然存在,这将影响对其它中断申请的响应。中断请求的撤除与中断返回指令并不是同一个过程,不同的中断系统中断请求的撤除方法不同。5.1.2MCS51单片机的中断系统

为了保证系统安全可靠、使用灵活,51系列单片机的中断系统采用了多级管理的机制。为了解决多级嵌套问题,51系列单片机还设置了两级中断优先级。51系列单片机的中断系统由中断源、中断标志位寄存器、中断允许寄存器(IE)、中断优先级寄存器(IP)及其它辅助电路组成,如图5.2所示。

图5.2MCS51的中断系统由图5.2可知,一个中断的产生受到中断标志位寄存器、中断允许寄存器(IE)、中断优先级寄存器(IP)的控制。中断标志位寄存器中有6个标志位,对应6个中断请求信号,若收到有效的请求信号,则对应标志位将硬件置“1”。中断允许寄存器(IE)中的每一位对应不同的中断源,而且每一位均可由用户软件设定为“允许(1)”或“禁止(0)”中断。值得注意的是,欲使某中断源允许中断,设置IE对应位的同时还必须设置IE中的最高位EA,使EA=1,即CPU开放中断,EA相当于中断允许的“总开关”。至于中断优先级寄存器(IP),该寄存器的每一位也同样对应不同的中断源,其复位清“0”将会把对应中断源设置为低优先级中断;置“1”将把对应中断源设置为高优先级。例如,对于外部中断请求0和定时器T0中断来说,若要使T0中断的优先级高于外部中断请求0中断,则可将PX0清“0”,使之处于低优先级,而将PT0置“1”,使之处于高优先级。注意:单片机复位后,IE和IP均被清0。设计程序时,在程序初始化中用户应根据需要将上述寄存器中的相应位置“1”或清“0”,来实现允许或禁止优先级设置等内容,中断程序才能正常执行。

1.中断源与中断请求信号

向单片机发出中断请求的来源称为中断源。80C51单片机的中断源共有5个中断源,分别是2个外部中断源、2个定时中断源和1个串行中断源。

1)外部中断源

外部中断是由外部原因(如打印机、键盘、控制开关、外部故障等)引起的,可以通过INT0(P3.2引脚)和INT1(P3.3引脚)两个固定引脚输入到单片机,分别称为外部中断0(INT0)和外部中断1(INT1)。

外部中断请求有两种信号触发方式,即电平触发方式和脉冲触发方式(边沿触发方式),可通过设置有关控制位进行定义。电平触发方式的中断请求是低电平有效,只要单片机在中断请求输入端上采样到有效的低电平时,就触发外部中断。脉冲触发方式的中断请求是脉冲的下降沿有效,单片机在相邻两个机器周期中对中断请求信号进行采样,如果第一个机器周期采样到高电平,第二个机器周期采样为低电平,即得到有效的中断请求,则触发外部中断

2)定时中断源

定时中断是由定时/计数器溢出引起的中断,51单片机有两个定时/计数器,所以有两个定时中断源。当定时器对单片机内部的定时脉冲进行计数而发生溢出时,表明定时时间到,由硬件自动触发中断。当定时器对单片机外部的计数脉冲进行计数而发生溢出时,表明计数次数到,由硬件自动触发中断。外部计数脉冲是通过T0和T1引脚输入到单片机内的,T0输入端是P3.4的第二功能,T1输入端是P3.5的第二功能。

3)串行中断源

串行中断是为串行数据传送的需要而设置的。每当串口接收或发送完一帧串行数据时,就产生一个中断请求,通知CPU从串口取走数据或发送下一帧数据。因为串行中断请求是在单片机芯片内部自动发生的,所以不需要在芯片上设置引入端。

2.中断系统的控制与实现

MCS51单片机提供了5个中断源,而这5个中断源的控制与实现是通过MCS51单片机片内的4个特殊功能寄存器(SFR)来实现的。这4个控制寄存器分别为:中断标志位(定时/计数器控制)寄存器(TCON)、中断标志位(串行口控制)寄存器(SCON)、中断允许寄存器(IE)和中断优先级寄存器(IP)。下面分别介绍和中断相关的特殊功能寄存器。

1)中断标志位(定时/计数器控制)寄存器(TCON)

TCON既称为中断标志位寄存器,又称为定时/计数器控制寄存器,其在RAM区的地址为88H。它主要用来控制2个定时/计数器溢出中断标志及2个外部中断INT0和INT1请求标志。与中断相关对应位如表5.1所示。表5.1TCON控制寄存器对应位定义①IT0:外部中断INT0触发方式控制位。当IT0=0时,外部中断0选择电平触发方式(低电平有效);当IT0=1时,外部中断0选择边沿触发方式(下降沿有效)。

②IE0:外部中断0中断请求标志位。

当IT0=0时,外部中断0选择电平触发方式(低电平有效)。CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,将IE0置1,向CPU请求中断。当采样到高电平时,将IE0清“0”。值得一提的是,在电平触发方式下,CPU响应中断时,不能自动清除IE0标志,IE0的状态完全由INT0的状态决定。因此,中断返回前必须撤除INT0引脚的低电平。当IT0=1时,外部中断0选择边沿触发方式(下降沿有效)。CPU在每个机器周期的S5P2采样INT0引脚电平,若在连续两个机器周期内,第一次采到INT0引脚为高电平,第二个机器周期采样到INT0为低电平时,则由硬件置位IE0=1,并向CPU请求中断。当CPU响应中断并转向中断服务程序时,IE0标志将由硬件自动清0。注意:INT0高低电平应至少保持一个机器周期。

对于外部中断1的IT1、IE1,其触发方式的控制和标志位管理完全与上述外部中断0类同,此处不再赘述。

③TF0(或TFl):片内定时/计数器T0(或T1)溢出中断请求标志位。在启动T0(或T1)计数后,T0(或T1)即从初值开始加1计数。当计数值计满后从最高位产生溢出时,由硬件置位TF0(或TFl),向CPU申请中断。CPU响应中断时,自动复位该标志位。

④TCON.4和TCON.6:即TR0和TR1,是定时/计数器启动控制位,将在定时器一节详述,此处不再赘述。

2)中断标志位(串行口控制)寄存器(SCON)

SCON既称为中断标志位寄存器,又称为串行口控制寄存器,其在RAM区的地址为98H。与中断相关是SCON的低2位,用来锁存串行口的接收中断和发送中断标志,其定义如表5.2所示。表5.2SCON控制寄存器对应位定义

①TI:串行口发送中断标志。在串行口以方式0发送时,每当发送完8位数据后,由硬件置位TI;若以方式1、2、3发送时,在发送停止位的开始时置位TI。TI=1表示串行口发送器正在向CPU申请中断。值得注意的是,当CPU响应该中断后,转向中断服务程序时并不复位TI,TI必须由用户在中断服务程序中用软件清“0”。

②RI:串行口接收中断标志。若串行口接收器允许接收并以方式0工作,则每当接收到第8位数据时置位RI;若以方式1、2、3工作,且SM2=0时,则每当接收器接收到停止位的中间时置位RI;当串行口以方式2或方式3工作,且SM2=1时,仅当接收到的第9位数据RB8为1后,同时还要接收到停止位的中间时置位RI。RI为1表示串行口接收器正向CPU申请中断,同样RI必须由用户在中断服务程序中清“0”。

单片机复位后,TCON和SCON寄存器各位被清“0”。

3)中断允许寄存器(IE)

IE是中断允许寄存器,其在RAM区的地址为A8H。CPU对中断系统所有中断以及某个中断源的“允许”和“禁止”都是由它来控制的。IE的状态可通过程序由软件设定,某位设定为“1”表示相应的中断源被允许开放。相反,设定为“0”表示相应的中断源被禁止使用。单片机复位后,IE寄存器各位被清“0”,禁止所有中断。IE寄存器的各位定义如表5.3所示。表5.3中断允许控制寄存器的位定义

4)中断优先级寄存器(IP)

IP是中断优先级寄存器,其在RAM区的地址为B8H。MCS51单片机中有两个中断优先级,可实现二级中断服务嵌套。每个中断源的中断优先等级均是由中断优先级寄存器(IP)来决定的。IP中各个位的状态可以由软件设定,当置为“1”时,则相应的中断源被置为高优先级。相反,当清为“0”时,则相应的中断源被设为低优先级。IP寄存器的各位定义如表5.4所示。表5.4中断优先级寄存器的位定义①PX0:外部中断0优先级控制位。

②PT0:定时器0中断优先级控制位。

③PXl:外部中断1优先级控制位。

④PTl:定时器1中断优先级控制位。

⑤PS:串行口中断优先级控制位。

MCS51单片机中规定上述对应位,当设置为“1”时为高优先级,为“0”时为低优先级。然而在多个中断源并存的情况下,面对同一优先级中的中断源,单片机中规定了其中断优先的排队问题。同一优先级的中断优先排队,由中断系统硬件确定,其排列顺序如表5.5所示。

3.中断初始化程序

中断初始化程序实质上就是对TCON、SCON、IE和IP寄存器的管理和控制。只要这些寄存器的相应位按照要求进行了状态预置,CPU就会按照人们的意图对中断源进行管理和控制。中断服务程序一般不独立编写,而是包含在主程序中,通过编写指令对以下5个内容进行设置:

(1)中断服务程序入口地址的设定。

(2)某一中断源中断请求的允许与禁止。

(3)对于外部中断请求,还需进行触发方式的设定。

(4)各中断源优先级别的设定。

(5)CPU开中断与关中断。

例5.1编写指令设置外部中断0为电平触发方式,高优先级。

分析:可用两种方法完成,即用位操作指令和字节操作指令。

①方法1:用位操作指令完成。

SETBEA;开中断允许总控制位

SETBEX0;外中断0开中断

SETBPX0;外中断0高优先级

CLRIT0;电平触发

②方法2:用其它指令也可完成同样功能。

MOVIE,#81H;同时置位EA和EX0

ORLIP,#01H;置位PX0

ANLTCON,#0FEH;使IT0为0

这两种方法都可以完成题目规定的要求。一般情况下,用方法1比较简单。因为在编制中断初始化程序时,只需知道控制位的名称就可以了,而不必记住它们在寄存器中的确切位置。例5.2试编写设置外部中断INT0和串行接口中断为高优先级,外部中断INT1为低优先级,并屏蔽T0和T1中断请求的初始化程序段。

分析:根据题目要求,只要能将中断请求优先级寄存器IP的第0、4位置“1”,其余位置“0”,将中断请求允许寄存器的第0、2、4、7位置“l”,其余位置“0”就可以了。

编程如下:

ORG0000H

SJMPMAIN

ORG0003H;外部中断0的入口地址

LJMPINT0INT;跳转到外部中断0的中断服务程序

ORG0013H;外部中断1的入口地址

LJMPINT1INT;跳转到外部中断1的中断服务程序

ORG0023H;串口中断的入口地址

LJMPSIOINT;跳转到串口中断的中断服务程序

ORG0030H

MAIN:…;编写主程序

MOVIP,#00010001B;设外部中断INT0和串行口中断为高优先级

MOVIE,#10010101B;允许INT0、INT1串行口中断,开CPU中断5.1.3中断处理过程

不同的计算机,在具体的中断处理过程上存在一些细小的差别,但是,基本处理过程是相同的。一个完整的中断处理的基本过程应该包括:中断请求、中断响应、中断处理以及中断返回。中断处理过程如图5.3所示。

图5.3中断处理不同的计算机由于中断系统的硬件结构不完全相同,因而中断响应的方式有所不同。在此,仅以MCS51单片机为例来介绍中断处理的过程。

1.中断请求

中断请求是中断源(或者通过接口电路)向CPU发出请求中断的信号,要求CPU中断原来执行的程序,转去为它服务。一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线向CPU发出信号,请求CPU中断。中断请求信号可以是电平信号,也可以是脉冲信号。中断请求信号应该一直保持到CPU做出反应为止。

2.中断响应

中断响应是在满足CPU的中断响应条件之后,CPU对中断源中断请求的回答。在这一阶段,CPU要完成中断服务以前的所有准备工作,包括保护断点和把程序转向中断服务程序的入口地址(通常称为矢量地址)。

单片机在运行时,并不是任何时刻都会响应中断请求,而是在满足中断响应条件之后才会响应。

1)CPU的中断响应条件

①有中断源发出中断申请。

②中断总允许位EA=1,即CPU允许所有中断源申请中断。

③申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。

以上是CPU响应中断的基本条件,若满足,CPU一般会响应中断。但如果有下列任何一种情况存在,中断响应都会受到阻断。①CPU正在执行一个同级或高一级的中断服务程序。

②当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令完成前,任何中断请求都得不到响应。

③正在执行的指令是返回(RETI)指令或者对专用寄存器IE、IP进行读/写的指令,此时,在执行RETI或者读写IE或IP之后,不会马上响应中断请求。

若存在上述任何一种情况,则CPU不会马上响应中断,而把该中断请求锁存在各自的中断标志位中,在下一个机器周期再按顺序查询。由于存在中断阻断的情况而未被及时响应,待上述阻断中断响应的条件被撤消之后,由于中断标志还存在,仍会响应。

2)中断响应过程

如果中断响应条件满足,且不存在中断阻断的情况,则CPU响应中断。CPU一旦响应中断,首先对相应的优先级有效触发器置位。然后,执行1条由硬件产生的长调用指令“LCALL”,自动地把断点地址压入堆栈保护(但不保护状态寄存器PSW和其它寄存器内容),再把与各中断源对应的中断服务程序的入口地址送入程序计数器PC,同时清除中断请求标志(串行口中断和外部电平触发中断除外),从而程序便转移到中断服务程序。以上过程均由中断系统自动完成。

MCS51中断入口地址和中断输入引脚是一一对应的,从哪个中断输入引脚进入的中断请求,它的中断服务程序入口地址一定是某个固定值。如,从INT0(P3.2)引脚进入的中断请求,转向的中断入口地址是0003H单元。

3.中断处理

中断处理又称中断服务程序,从中断入口地址开始执行,直到返回指令“RETI”为止,这个过程(或程序)称为中断处理。此过程一般包括保护现场、处理中断源的请求及恢复现场三部分内容。因为一般主程序和中断服务程序都可能会用到累加器、PSW寄存器和一些其它寄存器。CPU在进入中断服务程序后,用到上述寄存器时就会破坏它原来存在寄存器中的内容,一旦中断返回,将会造成主程序的混乱。因此,在进入中断服务程序后,一般要先保护现场(即相关寄存器内容被压栈保存),然后再执行处理中断源的请求的服务程序。执行完毕后,在返回主程序以前,要恢复现场(即相关寄存器内容被恢复)。

保护现场和恢复现场一般采用PUSH和POP指令来实现。PUSH和POP指令一般成对出现,以保证寄存器的内容不会改变。要注意堆栈操作的“先进后出,后进先出”原则。

下面的例5.3是一个在中断服务程序中经常用到的保护现场和恢复现场的实例。例5.3设在主程序中用到了寄存器PSW、ACC、B、DPTR,而在执行中断服务程序时需要用到这些寄存器。因此,在中断服务程序里要保护PSW、ACC、B、DPTR的内容,以免破坏主程序中相应用到的寄存器PSW、ACC、B、DPTR内容。

程序如下:

ORG0003H

AJMPSERVICE;跳转到中断处理程序

SERVICE:PUSHPSW;保护程序状态字

PUSHACC;保护累加器A

PUSHB;保护寄存器B

PUSHDPL;保护数据指针低字节

PUSHDPH;保护数据指针高字节

;中断处理具体内容

POPDPH;恢复现场,即恢复各寄存器内容

POPDPL

POPB

POPACC

POPPSW

RETI

4.中断返回

中断返回是指执行完中断服务程序后,程序返回到断点(即原来程序执行时被断开的位置),继续执行原来的程序。中断返回由专门的中断返回指令RETI实现,该指令的功能是把断点地址取出,送回到程序计数器PC中。另外,它还通知中断系统已完成中断处理,将清除优先级状态触发器。特别要注意,不能用子程序返回指令“RET”代替中断返回指令“RETI”。因为用RET指令虽然也能控制PC返回到原来中断的地方,但RET指令没有清零中断优先级状态触发器的功能,中断控制系统会认为中断仍在进行,其后果是与此同级的中断请求将不被相应。所以,中断服务程序结束时必须使用RETI指令。

5.中断响应时间

所谓中断响应时间是指从查询中断请求标志位到转入中断服务程序入口地址所需的机器周期数(对单一中断源而言)。响应中断最短需要3个机器周期。若CPU查询中断请求标志的周期正好是执行1条指令的最后1个机器周期,则不需等待就可以响应。而响应中断执行1条长调用指令需要2个机器周期,加上查询的1个机器周期,一共需要3个机器周期才开始执行中断服务程序。

中断响应的最长时间由下列情况决定:若中断查询时正在执行RETI或者访问IE或IP指令的第1个机器周期,这样连查询在内需要2个机器周期(以上3条指令均需2个机器周期)。若紧接着要执行的指令正好是MUL或DIV指令(两者均为4周期指令),则需等该指令执行完后才能进入中断响应周期,再用2个机器周期执行1条长调用指令转入中断服务程序。这样,总共需要8个机器周期。其它情况下的中断响应时间一般在3~8个机器周期之间。5.1.4中断请求的撤除

CPU响应中断请求后,在中断返回前,必须撤除请求,否则会错误地再一次引起中断过程。51单片机的5个中断源请求的撤除方法分别如下:

1.定时器与串口中断请求的撤除

对于定时器0或1溢出中断,CPU在响应中断后,中断请求将会硬件自动撤除。即当定时器0或1溢出时,中断请求标志TF0或TF1置1,通知CPU响应中断,在响应条件满足且不受阻的情况下CPU响应中断,同时用硬件自动清除了中断请求标志位TF0或TF1,无须采取其它措施。

对于串行口中断,CPU响应中断后没有用硬件清除中断标志位,必须由用户编制的中断服务程序来清除相应的中断标志,即用指令CLRTI或CLRRI来清除串行发送或串行接收中断标志。

2.外部中断请求的撤除

MCS51单片机的中断系统的两个外部中断源有两种触发(申请)方式,即电平触发和边沿触发。可通过对TCON寄存器中的IT0位和ITl位清除为“0”使其工作在电平触发方式,或设置为“1”使其工作在边沿触发方式。

在边沿触发方式中,单片机在采样中断输入信号时,如果连续采样到1个周期的高电平和紧接着1个周期的低电平,则中断请求标志位就被置位,并请求中断。这种方式下,CPU响应中断进入中断服务程序时,请求标志位会被CPU自动清除。所以,该方式适合于以负脉冲形式输入的外部中断请求。由于外部中断源在每个机器周期被采样1次,所以输入的高电平或低电平至少必须保持12个振荡周期,以保证能被采样到。

在电平触发方式中,单片机在每个机器周期的S5P2期间采样中断输入信号,若为低电平,则可直接触发外部中断。在这一触发方式中,中断源必须持续请求,直至中断产生为止,且要求在中断服务程序返回之前,必须撤除中断请求信号,否则机器将认为又发生了另一次中断请求。因此,电平触发方式适合于外部中断输入为低电平,且在中断服务程序中能清除该中断源的申请信号的情况。

对于电平触发的外部中断,由于CPU对外部中断0和1引脚没有控制作用,因此需要外接电路来撤除中断请求信号。

图5.4外部中断请求(电平触发方式)的撤除图图5.4描述了一种外部中断撤除的可行性方案。该外部中断请求信号通过D触发器加到单片机外部中断0或1引脚。当外部中断信号使D触发器的CLK端发生正跳变时,由于D端接地,Q端输出为0,因此向单片机发出中断请求。CPU响应中断后,利用1根口线(如P1.0)作应答线。

在中断服务程序中,用以下两条指令来撤除中断请求:

ANLP1,#0FEH;P1.0=0,则置位端S有效,D触发器置位,Q=1

ORLP1,#01H;P1.0=0,则置位端S无效,D触发器接收信号

第1条指令使P1.0为0,而P1口的其它各位的状态不变。由于P1.0接至D触发器的置“1”端(S),故D触发器的Q为1,从而撤除了中断请求信号。第2条指令又使P1.0为1,即S为1,使以后产生新的外部中断请求信号又能向单片机申请中断。5.1.5中断程序应用举例

MCS51共有5个中断源,由4个特殊功能寄存器TCON、SCON、IE和IP进行管理和控制。中断程序一般包含中断初始化程序和中断服务程序两部分。

中断服务程序是一种为中断源的特定情况要求服务的独立程序段,以中断返回指令RETI结束,中断服务完后返回到原来被中断的地方(即断点),继续执行原来的程序。中断服务程序的固定入口:

0003H单元——外部中断INT0的中断服务程序入口;

000BH单元——内部定时器/计数器T0的中断服务程序入口;

0013H单元——外部中断INT1的中断服务程序入口;

001BH单元——内部定时器/计数器T1的中断服务程序入口;

0023H单元——串行口的中断服务程序入口。在编写中断服务程序时,应注意以下4点:

(1)各中断源入口地址之间只相隔8个字节。中断服务程序放在此处,一般容量是不够的。常用的方法是在中断入口地址单元处,存放—条无条件转移指令,如“LJMPAddress”,使程序跳转到用户安排的中断服务程序起始地址处。

(2)在执行当前中断程序时,为了禁止更高优先级中断源的中断请求,可先用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放被关闭或被屏蔽的中断。

(3)在多级中断情况下,应在保护现场之前关掉中断,在恢复现场之后打开中断。如果在中断处理时允许有更高级的中断打断它,则在保护现场之后开中断,恢复现场之前关中断。

图5.5故障显示电路

(4)中断时,现场保护由中断服务程序来完成。因此,在编写中断服务程序时必须考虑保护现场的问题。在MCS51单片机中,现场一般包括累加器A、工作寄存器R0~R7及程序状态字PSW等。

例5.4图5.5为多个故障显示电路,当系统无故障时,4个故障源输入端X1~X4全为低电平,显示灯全灭;当某部分出现故障,其对应的输入由低电平变为高电平,从而引起MCS51单片机中断,中断服务程序的任务是判定故障源,并用对应的发光二极管LED1~LED4进行显示。编程如下:ORG0000H;程序开始

AJMPMAIN;转主程序

ORG0003H;外部中断INT0入口地址

AJMPSERVICE;转中断服务程序

MAIN:ORLP1,#0FFH;灯全灭,准备读入

SETBIT0;选择边沿方式

SETBEX0;允许INT0中断

SETBEA;CPU开中断

AJMP$;等待中断

SERVICE:JNBP1.3,N1;若X1无故障,转

CLRP1.4;若X1有故障,LED1亮

N1:JNBP1.2,N2;若X2无故障,转

CLRP1.5;若X2有故障,LED2亮

N2:JNBP1.1,N3;若X3无故障,转

CLRP1.6;若X3有故障,LED3亮

N3:JNBP1.0,N4;若X4无故障,转

CLRP1.7;若X4有故障,LED4亮

N4:RETI

这个程序主要分为主程序和中断服务程序两部分。主程序主要完成初始化的工作,中断服务程序主要检测故障源是否发生,如果某故障源发生,则将相应的指示灯点亮。在此主程序和中断服务程序中,不存在使用寄存器之间的干涉问题,因此,在中断服务程序中不用保护现场和恢复现场。

例5.5利用单片机的定时器计数来产生中断。假定单片机晶振选择12MHz,选择使用T0每1ms产生一次中断请求,用于调用动态显示程序DISP,即显示程序在此属于中断服务程序。

分析:先安排好不同程序的入口地址,在主程序中完成定时器和中断的初始化,然后打开对应中断允许位和总中断允许位。在中断服务程序中要注意保护和恢复现场。

主程序如下:ORG0000H

LJMPMAIN;跳转到主程序入口

ORG000BH

LJMPDISP;跳转到定时器T0中断入口地址处

ORG0030H

MAIN:…

;进行定时器初始化

MOVTMOD,#00000001B;设置T0工作在模式1

MOVTH0,#0FCH;

MOVTL0,#18H;设置计数初值FC18H=64536=65536-1000

SETBTR0;TR0=1,启动定时器T0开始计数

SETBET0;开放定时器T0中断允许位

SETBEA;开放总中断允许位,等待T0计数满出…

中断服务程序代码:DISP:PUSHACC

PUSHPSW;保护现场

CLRTR0;因为已经响应中断请求,故停止定时器T0

MOVTH0,#0FCH

MOVTL0,#18H;重新赋计数初值

SETBTR0;重新启动定时器T0

…(显示程序代码略)…

POPPSW

POPACC;按先入后出次序恢复现场

RETI;中断服务程序结束,返回断点,必须用RETI指令

在测量控制系统中,常常要求有实时时钟来实现定时测控或延时动作,也会要求有计数器实现对外部事件计数,如测电机转速、频率、脉冲个数等。

实现定时/计数功能,有软件定时、硬件定时和可编程定时/计数器3种主要方法:5.2定时/计数器

1)软件定时

软件定时也称软件延时,是让机器执行一个程序段。这个程序段本身没有具体的执行目的,通过正确的挑选指令和安排循环次数实现软件延时。由于执行每条指令都需要时间,执行这一段程序所需要的时间就是延时时间。这种软件定时的特点是时间精确,且不需要外加硬件电路,但要加CPU的执行时间,降低了CPU的工作效率。因此软件定时的时间不宜过长。此外,软件定时方法在某些情况下无法使用。

2)硬件定时

对于时间较长的定时,常采用硬件电路完成。硬件定时的特点是定时功能完全由硬件电路来完成,不占用CPU时间,但需要通过改变电路的原件参数来调节定时时间,在使用上不够灵活方便。例如,采用如小规模集成电路器件555,外接必要的元器件(电阻和电容),即可构成硬件定时。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,这种定时电路在硬件连接好后,修改不方便。

3)可编程定时/计数器

可编程定时/计数器是为方便微机系统的设计和应用而研制的,它是硬件定时,又可以通过软件编程来确定定时时间。这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,所以本身就具有计数功能,可以对外来脉冲计数。

MCS51单片机在设计中也充分考虑了方便用户应用的问题,它的内部提供了两个16位可编程的定时/计数器:T0和T1,并且这两个定时/计数器可以通过软件的方式进行设置使其工作在不同的方式,给设计者带来极大的方便,下面将对其做详细介绍。5.2.1定时/计数器的结构及工作原理

1.定时/计数器的结构

MCS51单片机片内集成有两个16位可编程的定时/计数器:T0和T1,其结构如图5.6所示。

它的基本部件是两个16位寄存器T0和T1,每个16位寄存器分成两个8位寄存器(T0由高8位TH0和低8位TL0组成,T1由高8位TH1和低8位TL1组成)。图5.6定时/计数器T0、T1的内部结构框图TMOD是定时/计数器的工作方式寄存器,由它确定定时/计数器的工作方式和功能;TCON是定时/计数器的控制寄存器,用于控制T0、T1的启动和停止以及设置溢出标志。通过对这些特殊功能寄存器(SFR)的编程,可以使其工作在不同的方式和状态。

2.定时/计数器的工作原理

图5.7给出了定时器/计数器T0或T1的工作(结构)原理图。由图可看出,MCS51单片机的定时/计数器由振荡器分频输入电路、外部计数脉冲输入电路、计数脉冲选择电路、计数启停控制电路、加1计数器和溢出标志位组成。图中X=0或1,代表定时/计数器T0或T1相应的信号或寄存器的相应位。由图5.7可见,定时/计数器的核心是一个加1计数器,每输入一个脉冲,计数值加1,当计数到计数器全为1时,再输入一个脉冲就使计数值回零,同时从最高位溢出一个脉冲使控制寄存器TCON的TFX(X=0或1)位置1,作为计数器的溢出标志。加1计数器由两个8位特殊功能寄存器THX和TLX(X=0或1)组成,它们可以被编程设置为不同的组合状态(13位、16位、两个分开的8位等),从而形成定时/计数器的4种工作方式。

图5.7定时/计数器T0或T1的结构原理图加1计数器计数工作的启动和停止由相应的电路控制。方式寄存器TMOD的GATE位为0时,由寄存器TCON的TRX(X=0或1)位启动(即TRX=1)或停止(即TRX=0);GATE位为1,且TRX为1时,中断引脚INT0(或INT1)为高电平时,启动;为低电平时,停止。

通过方式寄存器TMOD的C/位来选择加1计数器计数脉冲的来源:当C/=0时,计数脉冲来自系统的时钟振荡器的12分频,由于这时的计数脉冲为一时间基准,脉冲数乘以脉冲间隔时间就是定时时间,这时定时/计数器工作于定时器状态;当C/=1时,计数脉冲来自系统外部的脉冲源,这时定时/计数器成为外部事件计数器,工作于计数器状态。

1)定时器状态

作定时器使用时,加1计数器的计数脉冲来自于内部时钟振荡器。此时输入脉冲是由内部时钟振荡器的输出经12分频后送来的,这就是机器周期。如果晶振频率为12MHz,则一个机器周期是1μs,定时器每接收一个输入脉冲的时间为1μs。要定一段时间,只需计算脉冲个数即可。定时时间t的计算公式为:t=脉冲个数×机器周期。

2)计数器状态

作计数器使用时,加1计数器的计数脉冲来自于外部引脚。此时输入脉冲是由外部引脚P3.4(T0)或P3.5(T1)输入到计数器的。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加“1”。由于检测一个从“1”到“0”的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期,否则会出现漏计数现象,所以最高计数频率为晶振频率的1/24。当晶振频率为12MHz时,最高计数频率不超500kHz,即计数脉冲的周期要大于2μs。5.2.2定时/计数器的控制与实现

MCS51单片机中的定时/计数功能(状态)都是通过软件设定来控制实现的。与控制实现相关的寄存器主要有两个,分别为工作方式寄存器(TMOD)和控制寄存器(TCON)。另外,定时/计数器除了可用作定时器或计数器之外,还可用作串行接口的波特率发生器。

1.工作方式寄存器(TMOD)

工作方式寄存器(TMOD)用于设置定时/计数器的工作方式,其格式定义如图5.8所示。

图5.8TMOD的格式定义

TMOD的高4位用于管理定时器T1,低4位用于管理定时器T0。图5.8中各位含义如下:

GATE:门控位。当GATE=1,只有INT0(或INT1)引脚为高电平,且由软件使TR0(或TR1)置1时,才能启动定时器工作,即以外部中断启动定时器;当GATE=0时,只要用软件使TR0(或TR1)置位就可以启动定时器工作,不需要参考INT0或INT1的引脚状态。

C/T:定时/计数器方式选择位。当C/T=1时,选择计数器;当C/T=0时,选择定时器。

M1M0:工作模式定义位,如表5.6所示。表5.6工作模式选择

2.控制寄存器(TCON)

控制寄存器(TCON)的作用是控制定时器的启动、停止以及溢出标志位的管理,外部中断触发方式控制情况。TCON支持位寻址操作,其定义格式如表5.7所示。表5.7TCON格式定义

TF1:定时/计数器T1的溢出标志。T1计数满产生溢出时,由硬件使该位置1,并申请中断。若中断开放,进入中断服务程序后,由硬件自动清0。若中断被禁止,可以采取查询方式,用软件完成清0。

TR1:T1的运行控制位。用软件控制,置1时,启动T1;清0时,停止T1。

TF0:T0的溢出标志。T0计数溢出时,该位由内部硬件置位。若中断开放,即响应中断,进入中断服务程序后,由硬件自动清0;若中断禁止,在查询方式下用软件清0。

TR0:T0的运行控制位。用软件控制,置1时,启动T0;清0时,停止T0。

IE1:外部中断1下降沿触发标志位。

IE0:外部中断0下降沿触发标志位。

IT1:外部中断1触发类型选择位。

IT0:外部中断0触发类型选择位。

TCON的低4位与中断有关,请参见本章“中断系统”章节。注意:复位后TCON的所有位均清0,T0和T1均处于停止状态。5.2.3定时/计数器的工作方式

MCS51单片机的定时/计数器(以下简写为T/C),可以通过设置工作方式寄存器(TMOD)使其工作在4种不同的模式。T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。此外,T1还可以作为串行通信接口的波特率发生器。下面以定时器T0为例,分别对其4种工作模式进行介绍。

1.方式0

当M1M0=00时,T/C设定为工作方式0,构成13位的T/C。其逻辑结构如图5.9所示。在此工作方式下,T/C为13位计数器,由THX的8位和TLX的低5位组成(高3位未用),满计数值为213。T/C启动后立即加1计数,当TLX的低5位计数溢出时,向THX进位,THX计数溢出则对相应的溢出标志位TFX置位,以此作为定时器溢出中断标志。当单片机进入中断服务程序时,由内部硬件自动清除该标志。

图5.9定时/计数器方式0的逻辑结构图当TMOD寄存器中的C/T=0时,为定时方式,将振荡器12分频的信号作为输入脉冲计数;当C/T=1时,为计数方式,对外部脉冲输入端TX输入的脉冲进行计数。计数脉冲能否加到计数器上,由启动信号来控制。当GATE=0时,或门输出为1,与门处于开启状态,只要TRX=1,则与门输出为1,T/C启动。当GATE=1时,启动信号TRX·INTX,此时T/C的启动受到TRX与INTX信号的双重控制。

13位定时/计数器是为了与Intel公司早期的产品MCS48系列单片机(该系列已过时,且计数初值装入易出错)兼容,所以在实际应用中常由16位的方式1取代。

2.方式1

当M1M0=01时,T/C设定为工作方式1,构成16位定时/计数器。其中,THX作为高8位,TLX作为低8位,满计数值为256,其余同方式0类似。其逻辑结构如图5.10所示。

图5.10定时/计数器方式1的逻辑结构图用方式1构成16位加1定时/计数器时,计数个数M与计数初值X的关系如下:

M=216-X

用于定时功能时,定时时间t的计算公式为:t=M×机器周期=(216-X)×机器周期;若晶振频率为12MHz,机器周期则为1μs,初值X=0~65536时,可定时范围为1μs~65536μs。

3.方式2

当M1M0=10时,T/C工作在方式2,构成1个8位的自动重装初值的定时/计数器。其逻辑结构如图5.11所示。

在前述的方式0和方式1中,当计数满后,下一次定时/计数需用软件向THX和TLX重新预置计数初值。而在方式2中THX和TLX被当做两个8位计数器,计数过程中,THX寄存8位初值并保持不变,由TLX进行8位计数。图5.11定时/计数器方式2的逻辑结构图计数溢出时,由硬件使TF0置“1”产生溢出中断标志,并向CPU请求中断,此时还自动将THX中的初值重新装到TLX中去,即重装初值。计数个数M与计数初值X的关系如下:

M=28-X

用于定时功能时,定时时间t的计算公式为:t=M×机器周期=(28-X)×机器周期;若晶振频率为12MHz,机器周期则为1μs,初值X=0~255时,可定时范围为1μs~256μs。

除此之外,方式2控制也与方式1类似。

4.方式3

方式3只适用于定时器T0。T0分成为两个独立的8位计数器TL0和TH0,在使用时应注意以下几个特点。

(1)TL0:可作为定时/计数器使用,占用了T0的控制位(C/T、GATE、TR0、TF0和INT0),其功能和操作与方式0或方式1完全相同;TH0:只能作定时器用,仅占据了定时器T1的两个控制信号TR1和TF1。因此,TH0不受外部INT1门控,TH0的启﹑停受TR1控制,TH0的溢出将置位TF1。

(2)TH0:只能作为定时器运行,当T0为方式3时,定时器T1虽仍可用于方式0、1、2,但不能使用中断方式。当作为波特率发生器使用时,只需设置好工作方式,便可自行运行。如要停止工作,只需送入1个把它设置为方式3的方式控制字就可以了。由于定时器T1不能在方式3下使用,如果硬把它设置为方式3,就相当于停止工作。方式3的逻辑结构如图5.12所示。

图5.12定时/计数器方式3的逻辑结构图

5.2.4定时/计数器的应用举例

MCS51单片机中的定时/计数器是可编程的,一般要求在使用之前必须进行初始化。在编程时需要注意两个事项:正确写入控制字;正确计算计数初值。

1.初始化步骤

(1)确定工作方式:对TMOD各位按功能赋值。

(2)预置定时或计数初值:可以直接将初值写入TH0、TH1或TL0、TL1中。

(3)根据需要开放定时/计数器中断:直接对IE中的位进行位操作。

(4)启动定时/计数器,分为两种情况:①采用软件启动时,将对应的TR0或TR1置1;

②采用外部中断启动时,则需要给外部中断引脚(INT0或INT1)加启动电平。

当实现了启动要求后,定时器就按规定的工作方式和初值进行计数或定时。

2.定时/计数器的初值计算

由于定时/计数器有4种工作方式,不同工作方式下,计数器的位数不同,其最大计数模值也不同。设最大计数模值为N,晶振频率为12MHz,则各方式的N表达式为:方式0:13位计数器,N=213=8192,最大定时时间是8.192ms;

方式1:16位计数器,N=216=65536,最大定时时间是65.536ms;

方式2:8位计数器,N=28=256,最大定时时间是0.256ms;

方式3:定时器0分成两个8位计数器,所以两个N都是256;定时器1停止计数。定时器/计数器工作时,是从计数初值开始加1计数的,并在计数到最大值(全“1”)时,溢出产生中断。定时工作时,初值X计算如下:

其中,Ttiming是定时时间,TOSC是单片机的晶振周期,12TOSC是机器周期。

例5.6设单片机工作在12MHz主频下,要产生100μs的定时时间,请问工作于方式2时,计数器初值应该是多少?分析:工作主频是12MHz,则机器周期是1μs,计数次数为

100μs1μs=100次

工作在方式2,则计数初值为

X=N-100=256-100=156=9CH

例5.7若单片机时钟频率是12MHz,计算定时1ms所需的定时器初值。分析:定时器工作在方式3和方式2下时最大定时时间仅为0.256ms,所以该例必须选择工作方式为方式0或方式1。所以剩下的工作主要就是根据定时1ms得知需要加1的次数为1000次,然后计算定时初值。

若采用方式0,定时器初值为X=N-计数值=8192-1000=7192=1C18H=1110000011000B

在二进制表达式中用空格区分传给不同寄存器的值,即

TH0=11100000B=E0H

TL0=11000B=18H(TL0只用低5位,高3位补0)

若采用方式1,定时器初值为X=N-计数值=65536-1000=64536=FC18H即TH0=FCH,TL0=18H

3.定时/计数器应用实例

例5.8方式1应用:利用定时/计数器(T0)的方式1,产生一个50Hz的方波,此方波由P1.0引脚输出,晶振频率为12MHz。图5.1350Hz方波示意图分析:方波频率f=50Hz,则周期T=1/50=0.02s,如果让定时器计满0.01s,P1.0输出“0”,再计满0.01s,P1.0输出“1”,就能满足要求如图5.13所示。所以此题转化为由T0产生0.01s定时的问题。

实现方法有两种:

(1)查询方式:通过查询T0的溢出标志TF0是否为“1”。当TF=1时,定时时间已到,对P1.0取反操作。

(2)中断方式:CPU正常执行主程序,一旦定时时间到,TF0=1向CPU申请中断,CPU响应了T0的中断,就执行中断程序,在中断程序里对P1.0取反操作。解题步骤:

①计数初值:由于晶振为12MHz,所以1个机器周期为1μs。设定时0.01s的计数初值为X,则有(216-X)×1×10-6μs=0.01s,X=55536=D8F0H,因此在程序中应给THX、TLX赋值,采用定时器T0,则(TH0)=0D8H,(TL0)=0F0H。

②确定TMOD方式字:GATE=0,C/T=0,M1M0=01,可取方式控制字为TMOD=01H,即T0的方式1。③源程序如下:

查询方式:ORG0000H

LJMPMAIN;跳转到主程序

ORG0100H;主程序

MAIN:MOVTMOD,#01H;置T0工作于方式1

LOOP:MOVTH0,#0D8H;装入计数初值

MOVTL0,#0F0H

SETBTR0;启动定时器T0

JNBTF0,$;TF0=0,定时时间未到,等待

CLRTF0;TF0=1,定时时间到,清TF0

CPLP1.0;P1.0取反输出

SJMPLOOP

END

中断方式:ORG0000H

LJMPMAIN;跳转到主程序

ORG000BH;T0的中断入口地址

LJMPT0_INT;转向中断服务程序

ORG0100H

MAIN:MOVTMOD,#01H;置T0工作于方式1

MOVTH0,#0D8H;装入计数初值

MOVTL0,#0F0H

SETBET0;T0开中断

SETBEA;CPU开中断

SETBTR0;启动T0

…;继续执行主程序其它部分

SJMP$;等待中断

T0_INT:CPLP1.0;P1.0取反输出

MOVTH0,#0D8H;重新装入计数初值

MOVTL0,#0F0H

RETI;中断返回

END例5.9方式2应用:用T1方式2计数,要求每计满100次,将P1.0端取反。

分析:外部计数信号由T1(P3.5)引入,每跳变一次计数器加1,由程序查询TF1。

①计数初值:X=N-计数值=256-100=156=9CH,TH1=TL1=9CH。

②确定TMOD方式字:根据题意,可设置TMOD=60H。

③源程序如下:MOVTMOD,#60H;设置T1为方式2计数器

MOVTH1,#9CH;赋初值

MOVTL1,#9CH;

SETBTR1;启动计数器工作

DEL:JBCTF1,REP;查询是否计数溢出

AJMPDEL;

REP:CPLP1.0;若计数溢出,则输出取反

AJMPDEL

例5.10方式3应用:设晶振频率为6MHz,定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,通过TL0和TH0的中断分别使P1.0和P1.1口产生400μs和800μs的方波。分析:当采用方式3时,对于TH0来说,需要借用定时器T1的控制信号。

①计算计数初值:

X0=28-200×10-62×10-6=156=9CH

X1=28-400×10-62×10-6=56=38H

②确定TMOD方式字:对定时器T0来说,M1M0=11、C/T=0、GATE=0,定时器T1不用,取为全0,则TMOD=00000011B=03H

③程序如下:

ORG1000H;主程序

MAIN:MOVTMOD,#03H;T0工作于方式3

MOVTL0,#9CH;置计数初值

MOVTH0,#38H

SETBTR0;启动TL0

SETBET0;允许T0中断(用于TL0)

SETBTR1;启动TH0

SETBET1;允许T1中断(用于TH0)

SETBEA;CPU开中断

HALT:SJMPHALT;暂停,等待中断

ORG000BH;TL0中断服务程序

CPLP1.0;P1.0取反

MOVTL0,#9CH;重新装入计数初值

RETI;中断返回

ORG001BH;TH0中断服务程序

CPLP1.1;P1.1取反

MOVTH0,#38H;重新装入计数初值

RETI;中断返回

在复杂的控制系统中往往存在多个控制单元,其中控制单元之间的通信无疑是支撑整个控制系统的重要环节。常用的通信方式有:并行通信、串行通信、以太网通信及现场总线通信等。由于串行通信具有结构简单、使用信号线少、成本低廉等优点,所以是控制系统中最简单、使用最广泛的一种通信方式。5.3串行接口5.3.1串行通信的基本概念

1.并行通信与串行通信

计算机的数据交换(传送)方式可分为两种:并行通信和串行通信。

1)并行通信

在数据传输时,如果一个数据编码字符的所有位都同时发送、并排传输,又同时被接收,则将这种传送方式称为并行通信。并行通信要求物理信道为并行内总线或者并行外总线。并行通信的特点是传送速度快、效率高。但由于需要的传送数据线多,因而传输成本高。并行数据传输的距离通常小于30米。在计算机内部的数据传送都是并行传送的。

2)串行通信

在数据传输时,如果一个数据编码字符的所有位都不是同时发送,而是按一定顺序,一位接一位地在信道中被发送和接收,则将这种传送方式称为串行通信。串行通信的物理信道为串行总线。串行通信可借助串行I/O口实现数据传送,数据依次按位发送或接收,排列成队,仅用一条传输线路。因此,串行通信节省传输成本,尤其对大数据量和远距离数据通信,选用该方式最适合。

串行通信的特点是成本低,但速度慢。通常计算机与外界的数据传送大多是采用串行通信,其传送距离可以从几米直到上千公里。

2.串行通信的种类

根据数据传输方式的不同,可将串行通信分为同步通信和异步通信。

1)同步通信

同步通信是一种数据连续传输的串行通信方式,通信时发送方把需要发送的多个字节数据和校验信息连接起来,组成数据块,如图5.14所示。发送时,发送方只需在数据块前插入1~2个特殊的同步字符,然后按特定速率逐位输出(发送)数据块内的各位数据。接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。在这种通信方式中,数据块内的各位数据之间没有间隔,传输效率高,但发送、接收双方必须保持同步(使用同一时钟信号),且数据块长度越大,对同步要求就越高。因此,同步通信的特点是:传输效率高,但设备复杂(发送方能自动插入同步字符,接收方能自动检出同步字符,且发送和接收时钟相同,即除了数据线外,还需要时钟线),成本高,一般只用在高速数字通信系统中。典型的同步通信格式如下:

图5.14同步通信帧格式

2)异步通信

异步通信是以字符帧为单位进行传输。每帧数据由4部分组成:起始位(占1位)、数据位(占5~8位)、奇偶校验位(占1位,也可以没有校验位)、停止位(占1或2位),如图5.15所示。图中给出的是8位数据位、1位奇偶校验位、1位停止位和1位起始位,共11位组成一个传输帧。

图5.15异步通信帧格式对于发送方,传送时先输出起始位“0”作为联络信号,接下来

温馨提示

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

评论

0/150

提交评论