mcs51系列单片机的中断系统及定时器计数器.docx

上传人:scccc 文档编号:14425265 上传时间:2022-02-05 格式:DOCX 页数:18 大小:204.37KB
返回 下载 相关 举报
mcs51系列单片机的中断系统及定时器计数器.docx_第1页
第1页 / 共18页
mcs51系列单片机的中断系统及定时器计数器.docx_第2页
第2页 / 共18页
mcs51系列单片机的中断系统及定时器计数器.docx_第3页
第3页 / 共18页
mcs51系列单片机的中断系统及定时器计数器.docx_第4页
第4页 / 共18页
mcs51系列单片机的中断系统及定时器计数器.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《mcs51系列单片机的中断系统及定时器计数器.docx》由会员分享,可在线阅读,更多相关《mcs51系列单片机的中断系统及定时器计数器.docx(18页珍藏版)》请在三一文库上搜索。

1、第三章 MCS-51系列单片机的中断系统及定时器/计数器中航项相关的半本梃金 MCS-5I京丹立片札中断系it MCS5I单月机外咨中断及应田 MCS5I单片机的之吟35/计费黑的骷树及工作原配 MCS-5I单片机之时号/计就暮的工作方氏或国.用3. 1中断的概念众所周知,CPU的I:作速度愈来愈快.CPU启动外部设备输入/输出一个字节数据只需要微秒级胫至更短的时间.而 低速的外设I:作速度一般在意秒级,若CPU和外部设番是小行工作的,则CPU就浪费了很多时间去等待外设.其效率 大大降低。若没有中断技术,CPU雄于为多个设备服务,对故障的处理能力也极差。为r解决这些问巡.在计扎机中引 入了中断

2、技术,目前所有的计算机都有中断处理的能力。3. 1. 1中断的基本概念及相关术语中断是CPU在执行现行程序的过程中.发生随机事件和特殊请求时,使CPU中止现行程序的执行,而转去执行随机 事件或特殊请求的处理程序,待处理完毕后.再返回被中止的程序继续执行的过程。实现中断的馁件逻辑和实现中惭功 能的指令统称为中断系统,引起中断的事件称为中断源,实现中断功能的处理程序称为中断服务程序。中断的响应过程 如图3 1所示,(a)为单级中断,(b)为两级中断嵌套。对于中断系统来说,引起中断的事件称为中断源:由中断源向CPU所发出的请求中断的信号称为中断请求信号:CPU 中止现行程序执行的位置称为中断断点.:

3、中断断点处的程序位置称为中断现场:由中断服务程序返回到原来程序的过程 称为中断返回:CPU接受中断请求而中止现行程疔,传去为中断源服务称为中断响应。在中断系统中,对中惭断点的保护是CPU在响应中断时白动完成的,中断服务完成时执行中断返回指令而得到恢笈: 对于中断断点处其他数据的保护与恢复是通过在中断服务程序中采用堆枝操作指令PUSH来实现的这种操作通常称为 保护现场与恢复现场;POP及3. 1. 2中断的作用中断系统在计算机系统中有很重要的作用,利用中断可以实现以下功能:(1)分时操作:利用中断系统可以实现CPU和多台外设并行I:作.能对多道程序分时操作,以及实现多机系统中各机间 的联系,提高

4、计算机系统的工作效率,(2)实时处理。利用中断系统可以对生产过程的随机信息及时采集和处理,实现实时捽制,提高计算机控制系统的灵活 性。(3)故障处理。利用中断系统可以监视现行程序的程序性错误(如运算溢出、地址错等)和系统故障(如电源掠电、I/O总 线奇偶错误等),实现故障诊惭和故障的自行处理,提高计算机系统的故障处理能力。3. 1. 3中断源通常,计算机的中断源有下列几种:(1)一般输入/输出设备:当外设准备就绪时可以向CPU发出中断请求,从而实现外设与CPU的通信。如键盘、打印 机等。(2)实时时钟或计数信号,如定时时间或计数次数一到,则向CPU发出中断请求.要求CPU予以处理0(3)故障源

5、:当采样或运算结果出现超出范闱或系统停电时,可以通过报警、掠电等信号向CPU发出中断请求.要求 CPU加以处理。(4)为调试程序而设置的中断源.为了使于捽制程序的调试,及时检查中间结果可以在程序中设置一些断点或单步执行 等.3. 1. 4中断系统的基本功能为满足系统中各种中断请求的要求,中断系统应该具备如下的基本功能:(1)识别中断源:在中断系统中必须能够正确识别各个中断源,以便区分各个中断请求,从而为不同的中断请求服务: (2)能实现中断晌应及中断返回。当CPU收到中断请求申请后,能根据具体情况决定是否响应中断,如果没有更高级别 的中断请求,则在执行完当前指令后响应这一请求。响应过程应包括:

6、保护断点、保护现场、执行相应的中惭服务程序、 恢笈现场、恢笈断点等,当中断服务程序执行完毕后返回被中断的程序继续执行。(3)能实现中断优先权排队;如果在系统中有多个中断源,可能会出现两个或多个中断源I可时向CPU提出中断请求的情 况,这样就必须要求设计者事先根据轻重缓急,给每个中断源确定一个中断级别.即优先权。当多个中断源WJ时发出中 断请求时,CPU能找到优先权级别最高的中断源,并优先响应它的中断请求:在优先权级别最高的中断处理完了以后. 再响应级别较低的中断源。(4)能实现中断嵌套.当CPU响应某一中断的请求.在进行中断处理时,若有优先权级别更高的中断源发出中断请求. CPU要能中断正在进

7、行的中断服务程序,保留这个程序的断点和现场.而晌应高优先权的中断,在高优先权处理完以后, 再继续执行被中断的中断服务程序,即形成中断嵌套,如图3,1(b)所示。而当发出新的中断请求的中断源的优先权与 正在处理的中断源WJ级或更低时,则CPU就可以不响应这个中断请求.直至正在处理的中断服务程疗:执行完以后才去 处理新的中断申请,3. 2MCS-51系列单片机的中断系统MCS-51系列单片机中不同型号芯片的中断源数量是不同的,最基本的8051单片机有5个中断源,分别是INTO、INT1、 TO、TL中断源分为两个中断优先权级别,可以实现两级中断服务程序嵌套,每一个中惭源可以编程为高优先权级别或 低

8、优先权级别中断,允许或禁止向CPU请求中断。MCS-51列单片机基本的中断系统结构图如图3,2所示;自然优先收图3.2MCS 51系列单片机8051的中断系统内部结构图由图3.2可知,所有的中惭源都要产生相应的中断请求标志,这些标志分别放在特殊功能寄存器TCON和SCON的 相关位每一个中断源的请求信号需经过中断允许正和中断优先权选择IP的控制才能够得到单片机的响应,3. 2. 1中断源与中断请求由图3.2可以看出,MCS51系列单片机有5个中断瀛它们是工外部中断INTO(P3.2)、NTRP3. 3):定时器腓 数器TO、T1溢出中断;申行口的发送QXD)和接收(RXD)中断源(只占1个中断

9、源)。外部中断的中断请求标志位和TO、 T1的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在由行口控 制寄存器SCON中:1 .定时器/计数器控制寄存器TCONTCON为定时器/计数器控制寄存器,其字节映像地址为88H,可位寻址,它除控制定时器/计数器TO、T1的溢 出中断外,还控制着两个外部中断源的触发方式和镇存两个外部中惭源的中惭请求标志e其格式如下: TF1 ITOIEOIT1 IE1TROTF0TR1寄存器各位的含义如下:TCON的中断触发方式选择位。IT0:外部中断INTO在每一个机器周期的时,外部中惭INTO为电平触发方式。在这种触发

10、方式中.CPU当ITO位清为0,采样到高电平 1INT0的中请求标志位为2)S5P2采样INTO(P3.引脚的输入电平,当采样到低电平时.置上的必须保持低电平有引甥.清 正0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P32响应.同时在该中断服务程方执行结束之前. 外部中断源的有效信号必须被清除,效,直到该中断被CPU有效的低电平信号至能正确采样电平状态,耍求外部中断 源INTO否则将产生另一次中断。为保证CPU少要维持一个机器周期以上。55P2在每个机器周期的U0当位笆为1 时,外部中新INT0为边沿触发方式。在这种触发方式中.CPU为高电平,而INTO采样NTO(P3.2)

11、引脚上的输入电 平,如果在相继的两个机器周期,一个周期采样到时,我示外部中接着的下一个周期采样到低电平,则世INTO的中断 请求标志位正0为L即当正0位为1在正在向CPU位清为0。因为CPU请求中断,直到该中断被CPU响应时,才由 硬件白动将正0断INTO每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中 断源输入的检测到此信号由高到低的负跳CPU高电平信号和低电平信号时间必须保持在一个机器周期以上.才能保证 变,清求没有向CPU位为。时,表示外部中断源NT0正0正0:外部中断:INTO的中断请求标志位。当晌应该中断时由馒 件自动对正在向INTOCPU请求中断,

12、且当CPU中断;当正0位为1时,表示外部中断正0进行清0。nb的中断触发 方式选择位.功能与相同.1T1:外部中断INTO司。的中断请求标志位.功能与 正1:外部中断INTO正。相1时, T0的启动标志位。当TR0位为0时.不允许1计数1:作:当TRO位为T0TR0 :定时器/计数器定时或计数1:作。 允许T0被允许计数后,从初被开始的溢出中断请求标志位。在定时器/计数器TO TF0:定时器/计数器T0CPU申请 中断,一直保持到位向1计数,加1当产生计数溢出时由硬件自动将TF0位置为,通过TF0CPUT00响应该中断后才由 硬件自动将TF0位清为。当TF0位为未计数或计数未产生溢出。当0时,

13、表示TO TF0标志可供程序查询,工作在不允 许中断时,司。相的启动标志位。功能与:定时器/计数器TR1T1TR01司。I相TF0的溢出中断请求标志位。功能与 T1:定时器/计数器TF12 .串行口控制寄存器SC.ONSCON为巾口控制寄存器.其字节映像地址为9sH,也可以进行位寻址:事口的接收和发送数据中惭请求标志位(R1、 TI)被镣存在中口控制寄存器SCON中.其格式如下: SM0 SMSM2 RENTB8RBSTIRI:寄存器各位的含义如下SCONRh巾口接收中断请求标志位。当中行以一定方式接收数据时,每接收完一帧数据.由硬件白动将R1位的清。必须 由用户用指令来完成.位置为1。而R1

14、发送中断请求标志位.当申口以一定方式发送数据时,每发送完一帧数据,由硬 件自动将T1:申130也必须由用户用指令来完成 T1位置为L而T1位的清经逻辑或运豫后作为内部的一个中断源,和发送中惭T1注意:在中断系统中,将小行口的接收中断R1并不清楚是由 接收中断产生的中断请求还是由发送中断产生的中惭请CPU当CPU响应出口的中断请求时,产生的中断请求,从而执 行T1求.所以用户在编写中口的中断服务程序时,在程序中必须识别是RI还是相应的中断服务程序。SCON其他位的功能和作用与串行通信有关.将在第6章中介绍一 在上述的特殊功能寄存器中的所有中断请求标 志位,都可以由软件加以捽制,即用软件置位或清0

15、当某位置位时,就相当于该位对应的中断源向CPU发出中断请求, 如果清。就撤销中断请求.3 . 2. 2中断允许控制在计算机中惭系统中有两种不同类型的中断:一类为非静蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能 用软件方法加以禁止,一旦有中惭请求.CPU就必须予以响应。而对可屏蔽中断,用户则可以通过软件方法来控制它 们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求 称为中断屏蔽(或中断禁止).MCS 51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制 是通过中断允许控制寄存器正来

16、实现的。正的字节映像地址为0ASH,既可以按字节寻址.也可以按位寻址。当单片机 狂位时,正被清为0。通过对正的各位的置1或清0操作.实现开放或疥蔽某个中断,也可以通过对EA位的清0来解蔽所有的中断源:正 的格式如下.EAEX0ETOEX1ET1ES正 寄存器各位的含义为:时.开放所有的中断。1位为EA时,屏蔽所有的中断;当。位为EA:总中断允许控制位。 当EAES:中口中断允许控制位.当ES位为。时,屏蔽申口中断,当ES位为1且EA位也为1时,开放申口中断。ET1:定时器/计数器T1的中断允许控制位。当ET1位为0时,屏蔽T1的溢出中断:当ET1位为1且EA位也为1时. 开放T1的溢出中断.E

17、XI: INT1的中断允许控制位。当EX1位为。时,解蔽INT1:当EX1位为1且EA位也为1时,开放丽。ET0:定时器/计数器T0的中断允许控制位,功能与ET1相同。EXO: INTO的中断允许控制位。功能与EX1相和 比如要开放INT1和T1的溢出中断.屏蔽其他中断,则对应的中断 允许控制字为:100011008,即8cH只要将这个结果送人正中,中断系统就按所设置的结果来管理这些中断源。形成这个捽制结果的方法可以对正按字节操作,也可以按位操作。按字节操作形式按位操作形式SETB EX1MOVIE. #8CH SETBET1SETB EA思考题3,1:如果要开放外部中断0和申的中断,而解蔽其

18、他中断的控制字是什么?如何来实现这个控制结果呢?3. 2. 3中断优先权管理在中断系统中,要使某一个中断被优先晌应的话,就要依靠中断优先权控制。MCS-51系列第片机对所有中断设置r 两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对 中断优先权的管理,在MCS 51内部提供了一个中断优先级寄存器IP.其字节地址为088H,既可以按字节形式访问,又可以按位的形式访问,其格式如下:MlM2 工作 方式 功能 说明 1 0 3位 定时 器/ 计数 器工 作方 式 方式 0 0PSPT1PX1PT0PXO寄存器各位的含义如下:IP0PSPX1PX

19、0 、PTO、PT1和分别为INTO、Tk和小口中断优先级控制位。当相应的位 为TO、INTI时,所对应的中断源定义为低优先级.相反则定义为高优先级。优先响应其中断,其他中断均定义为低优 先级,对应的优先坡比如要将CPUT0定义为高优先级,使产生的溢出中断.并将。只要将这个控制字送人,即00000010S02HIP中,CPU就优先响应TO控制字为其他中断按低 优先级中断处理,具体操作形式如下:按位操作形式按字节操作形式SETB PTO MOVIP,#02H在问一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也 确定了一个自然优先级,其从高到低的优

20、先级排列如下:INTOTOINTl-TMm(RL TI)按中断优先权设置后,响应中断的基本原则是:.若多个中断请求同时有效,CPU优先响应优先权最高的中断请求。.同级的中断或更低级的中断不能中断CPU正在响应的中断过程。.低优先权的中惭响应过程可以被高优先权的中惭请求所中断,CPU会暂时中止当前低优先权的中断过程,而优先响 应高优先权中断,等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套。为r实现上述功 能和基本原则,在MCS. 51系列单片机中断系统的内部设置r两个不可寻址的优先级触发器,一个是指出CPU是否正 在响应高优先权中断的高优先级触发器,另一个是指出CPU是

21、否正在响应低优先权中断的低优先级触发器。当高优先 级触发器状态为1时,屏蔽所有的中断请求:当低优先级触发器状态为1时,扉蔽所有同级的中断请求而允许高优先权 中断的中断请求,MCS - 51系列单片机史位后.特殊功能寄存器正、IP的内容均为0,由用户的初始化程序刻正、IP进行初始化.开 放或醉蔽某些中断并设置它们的优先权。3.2. 4中断响应单片机一日.工作,并由用户对各中断源进行使能和优先权初始化编程后.MCS-51系列单片机的CPU在每个机器周期 顺序检查每一个中断源:那么,在什么情况下CPU可以及时响应某一个中惭请求呢?若CPU响应某一个中断请求,它又 是如何工作的呢?L中断响应条件单片机

22、的CPU在每个机器冏期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求. 一个中断源的请求要得到响应,必须满足一定的条件。(1)CPU正在处理相同的或更高优先权的中断请求。这种情况下只有当前中断响应结 束后才可能晌应另一个中断请求,(2)现行的机器周期不是当前所执行指令的最后一个机器周期,此时只有在当前指令执行结束周期的下一个机器周期 才可能响应中断请求(3)正在执行的指令是中断返回指令(RETD或者是对正、IP的写操作指令。在这种情况下,只有在这些指令执行结束 并至少再执行一条其他指令后才可能响应中断请求;如果上述条件中有一个存在,CPU将自动丢弃对中断查询的结果:

23、心一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。2 ,中断晌应过程如果某一个中断被开放,且中断请求符合响应条件,CPU会及时响应该中断请求.并按下列过程进行处理:(1)较相应的优先级触发器状态为1,指明1 CPU正在响,应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中 断请求,允许更高级的中断请求:(2)执行一条硬件子程序调用,清相应的中断请求标志位为O(R1、H和电平触发的外部中断除外)(3)保护断点 “即将被中断程序的断点位置(Pc的值)乐人堆栈保存起来.(4)将被响应的中断源的中断服务程序入口地址送程序计数器PC。各中断源的中断眼务程序入口地

24、址的所示。41分 配情况如表.(5)执行相应的中断服务程序,当CPU执行完中断服务程4中的中断返回指令后,清相应的优先级触发器为0,然后恢 发断点,即将保存在堆枝中的程序计数器PC的值再弹给PC.使CPU再继续执行原来被中断的程序。3 ,中断响应的时间在MCS. 51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脓冲被采样并锁存 到相应的中断请求标志中,这个状态等到下一个机器周期才被查询,如果中断被开放,并符G响应条件,CPU接着执行 一个硬件子程序调用指令以转到相应的中惭服务程序入口,该调用指令需要2个机器周期.所以从外部产生中惭请求到 CPU开始执行中断服务程序

25、的第1条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时 间,如果已经在处理同级或更高.级中断.额外的等待取决于中断服务程序的处理过程。如果正处理的指令没有执行到最 后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期:如果是CPU正 在执行中惭返回指令RET1或对正、IP的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机 器周期,所以在单一中断系统中,外部中断晌应时间总是在38个机器周期,3. 2. 5外部中断应用举例.如图3,3所示,P1 口输出捽制S只发光二极管,实现8位二进制计数器,对INTO上出现的脉冲数

26、进行计数.在图3.3中,由与非门构成去抖动电路,S开关每动作一次,就输出一个脉冲去单片机的INTO引脚上,让INTO I: 作于边沿触发方式,每按一次开关S,就产生一次中断,在中断服务程序中计一次数.并把计数结果从P1 口输出,显示 在发光二极管上.程序清单如下:ORGOOOOHSTART: AJMP MAINORG0003HAJMPEXINT0SETB MAIN:在上例中,由于主程序和中断服务程序都很简单,所以在中断服务程序中没有安排现场保护和恢史,如果在中断服务 程序中使用的寄存器和存储单元与主程序有冲突时,必须进行现场保护和恢笈,思考题32: MCS -51单片机只有两个外部中断.如果需

27、要单片机处理两个以上的外部中断,该怎样进行呢?4. 3 MGS-51系列单片机的定时器/计数器各种型号的单片机,不管其功能强弱都提供有定时器/计数器.因为定时器/计数器而向控制领域的单片机系统是一 项极为重要的功能,定时器/计数器可以实现以下功能:(1)定时操作:产生定时中断,实现定时采样输入信号,定时扫描键盘、技示器等操作,(2)测量外部脉冲信号:对脉冲信号计数统计或测量脉冲信号的周期等.(3)定时输出:定时触发输入引脚的电平,使输出脉冲的宽度、占空比、周期达到预定值,其精度不受程序状态的影响:(4)监视系统正常I:作:一旦系统工作异常时自动产生复位,重新启动系统正常工作。MCS-51系列单

28、片机的51子系列有两个16位定时器/计数器TO、T1,而52子系列有3个16位定时器/计数器TO、TL T21本书只学习TO. T1的应用3. 3. 1定时器/计数器仰、T1的结构8051单片机内部有两个16位定时器/计数器:定时器/计数器T0和定时器/计数器TL它们都具有定时和计数功能. 可用于定时或延时控制、对外部事件检测、计数等,其内部结构框图如图3,4所示,1 .定时器/计数器TO、T1的资源由图3.4知,定时器/计数器TO、T1主要由存放计数初值和经过值的两对8位寄存器CTHO、TLO和THE TL1),方 式寄存器TMOD和控制寄存器TCON组成:其中THO, TLO专门用了存放定

29、时器/计数器T0的计数初值和经过值; THL TL1用于存放定时器/计数器T1的计数初值和经过值:TMOD用于设置TO、T1的工作方式:TCON中的TR0、 IR1用于控制TO、T1的运行:P3. 4、P3. 5引脚用于输入在计数器方式下的外部计数脉冲信号。定时器/计数器TO、T1用做定时器时对机器周期进行计数每经过一个机器周期计数器加1,直到计数器计满溢 出,由于一个机器周期由12个时钟周期组成,所以计数领率为时钟频率的1/12。所以定时器的定时时间不仅与计数 器的初值即计数长度有关,而且还与系统的时钟频率大小有图3.4定时器/计数器结构框图定时器/计数器TO、T1用做计数时.计数器对来自输

30、入引脚To(P3.4)和T1(P3.5)的外部信号计数。计数器对外部脉 冲信号的占空比没有特别的要求,但必须保证输入的高电平和低电平信号至少应维持一个完整的机器周期;2 .定时器/计数器TO. T1的方式寄存器TMOD特殊功能寄存器TMOD为TO、T1的工作方式寄存器.其格式如下:.TMOD的低4位为T0的方式字段.高4位为T1的方式字段.它们的含义是完全相同的。Ml MO: TO T1的工作方式选择位,其对应关系如表3.1所示。表3.ITO, T1 I:作方式选择位的意义.16 01位定时器/计数器工作方式 方式1自动再装入的8位定时器/计数器工作方式方式21 0:停止计数T1位定时器肘数器

31、.8:分为两个I I T0方式3时,选择定时器方式。在定时器方式中.以时钟位为/:定时器或计数器方式选择位,当/ CTCTO.当系统的时钟信 号频率确定后,定1分频信号作为计数信号,也就是每一个机器周期定时器加12信号的到定时器溢出所需要的时间 是固定的,所以称为定时器方式。时器从初值开始加1上的CTO时,选择计数器方式。在计数器方式中,对外部引脚1T/C当位置为为为TU.P3, P35)输入脉冲信号进行 计数GATE: TO/T1的门控位;当GATE位为0时,定时器阴数器TO、T1的运行仅受TRO、TR1的控制.不受外部引脚电 平的状态的影响,当GATE位置为1时,定时器/计数器TO、T1的

32、运行不仅受TRO、TR1的控制.而且还受到外部引脚 电平状态的捽制(INTO控制TO. INTI控制Tl);即只有当INTO(INT1)引脚为高电平且TRO(TR1)位为1时才启动TO(T1) 计数,当INTO(Nn)引脚为低电平或TROfTRl)位为0时均使TO(T1)停止计数。TMOD的字节映像地址为g9H,只能按字节形式操作,不能进行位寻址,发位时TMOD所有位均清为0比如,要使TO以方式2实现定时,II以方式1进行计数,且均与外部引脚电平无关的方式控制字为010100108,即 52H:若与外部弘脚电平状态有关时的方式控制字为IKM1010B.即0DAH,3 .定时器/计数器TO、T1

33、的控制寄存器TCON特殊功能寄存器TCON的高4位存放定时器/计数器TO、T1的运行控制位和计数溢出标志位,低4位存放外部中断 的触发方式控制位和镇存外部中断的请求标志位其格式如下:.TRTR1TFOTR0正1IT1正0IT0.1节中介绍了,在此不再重贪各位的功能和作用已在3. 2T1的工作方式23. 3.定时器/计数器T0、种工作方式,不同的工作方式其内3只有 定时器/计数器TO有4种1:作方式,而定时器/计数器T1部的结构有所 不同,功能上也有差别.0 .方式1:0的内部结构如图3.5所示.为 方式013位定时器/计数器1:作方式,,TH0的低5位产生溢出进位时向TL1 /TL0/TL1的

34、低5位和TH0TH1的8位组成当TLO/由 方式0请求中断。1TH0TH1进位,/TH1计数溢出时置滋 出中断请求标志位TF0/TF1为.向CPU/计数脉冲控制电路中,有一个方式电子开关和允许计数控制电子3由图.5 可知,在方式0的T0/T1的计数信明TU2分频信号作为T0/时,方式电子开关与上面接通,以时钟频率的/开关.当CT位为0/5)4)lC当/T 位为时,方式电子开关与下面接通.此时以T0(P3. /T1(P3.引脚上的输入脉冲作为T0TR0位为当TR1TR0时,位为 当T1的计数脉冲。GATE0由/控制定时器工作,GATE1定时器不仅受时,引脚上的电平控制,NT0 INT1的控制,而

35、且还受TRI /T0/T1以方式0工作时定时/计数初值的计算方法如下:当TO/T1以方式0定时时.假设时钟频率以fosc表示,定时初值以a表示,定时时间以t表示,那么三者关系为:12t=(213-a)fosc若给定定时时间的要求.定时初值a的大小为:12x213-txfosca=-12比如fbsc=12MHz. TO的定时时间t=5ms,则定时初值a为:12X213-5X10-3X12X106a=8192-5000=3192=110001111000812因此.TLO的初值为1SH. TH0的初值为63H.对TO的初始化的子程序为:INTTO: MOVTHO, #63HMOVTLO. #18H

36、SETB EASETB ETOSETB TRO当TO/T1以方式。计数时,假设系统所需计取脉冲的个数以x表示,计数初值以a表示.则二者的关系为:a=213-x2 .方式1方式1为16位定时器/计数器1:作方式,方式1的内部结构如图3.6所示。方式1由TL0/TL1IKJ8位和TH0 / TH1的8位组成。当TLO / TL1的8位产生溢出进位时向TH0 , TH1进 请求中断。 CPU,向1为TF1 / TFO计数溢出时置溢出中断请求标志位TH1 / TH0位,.图3.6方式1的内部结构图由图3.6可知,方式1的TO/T1计数脉冲控制电路与它们方式0的情况相似.仅仅是计数器的位数不同而已.T0

37、/T1以方式1工作时,定时/计数初值的计算方法如下:当TO/T1以方式1定时时,假设时钟频率以/. 8表示,定时初值以。表示,定时时间以t表示,那么三者关系为:t=(216-a)fbsc并给定定时时间的要求,定时初值a的大小为:12x216-txfb$ca=12比如fbsc=12MHz. T1的定时时间t=20ms,则定时初值a为: 12X216-20X10-3X12X106a=65536-20000=45536=BlE0H12因此TL1的初值为OEOH. TH1的初值为0B1H,时T1的初始化的子程序为:INTT1: MOVTH1. #OB1HMOVTLL #OEOHSETB EASETB

38、ET1SETB TRI当TO /T1以方式1计数时,假设系统所需计取脉冲的个数以戈表示,计数初值以x表 示,则二者的关系为:a=216-x3 .方式2方式2为自动恢复计数初值的8位定时器/计数器匚作方式,T0/T1 I:作于方式0或方式1时,若需要重或计数,就 需要用户用指令重新填充初值;而方式2在计数器溢出时会自动地装入新的计数初值,开始新一轮的计数:由于方式0 或方式1是通过指令装入计数初值的,而执行指令需要时问.因此,在方式2的定时时间比较准确。方式2的内部结构 如图3.7所示。fNTXVfKfi图3.7方式2的内部结构图在方式2时,TL0/TL1作为8位计数器,TH0/TH1为自动恢比

39、初值的8位计数器。当TLO / TLI计数发生溢出时. 一方面置溢出中断请求标志TF0/TF1为1,向CPU请求中断.同时又将T0/TH1的内容送入TLO/TLL-T0/T1从 初值开始重新加1计数。因此TOII工作于方式2时,定时精度高,但定时时间范围小。由图3.7可知,方式2的TOT1计数控制与方式0和方式1完全相同,不同之处在于当CPU响应TO / T1的溢出中断 后会自动将TH0 / TH1的内容填充到ILO/ TLLTO/T1以方式2工作时,定时/计数初值的计算方法如下:当TO /T1以方式2定时时,假设时钟频率以fosc表示,定时初值以a表示,那么三者关系为:12t=(28-a)f

40、osc若给定定时时间的要求,定时初值a的大小为:12x28-txfo$ca=比如fosc=12MHz. T1的定时时间t=200x u s,则定时初值a为:12X28-20X10-3X12X106a=256-200=56因此.TL0的初值为56. TH0的初值为56.对T0的初始化的子程序为:INTT0: MOVTH0. #56MOVTL0. #56SETB EASETB ET0SETBTR0当TO /T1以方式0计数时,假设系统所需计取脉冲的个数以制表示,计数初值以。表示.则二者的关系为:a=28-x4 .方式3方式3为两个8位定时器肘数器【作方式,它只适用于定时器/计数器10.若将T1设置

41、为方式3,则T1将停止计数。方式3内部逻辑结构如图3.S所示.,由图3.S可知,方式3是将T0拆分为两个8位定时器/计数器。其中8位计数器TL0,使用是来T0的控制位(C/ T、GATE. TRO、IN TO)形成一个S位的定时器/计数器,它既可以定时(对时钟频率的12分频信号进行计数).也可以 实现计数:而S位计数器TH0,占用原来T1的控制位(TRI、TF1),它只能对内部计数脉冲进行计数,其运行仅受TR1 位的控制,而与外部引脚INT1的电平状态无关。定时器/计数器TO I:作丁方式3时.定时器/计数器T1仍可设置为方式0、方式1、方式2。但由FTR1、TH已被定时器TH0占用,此时定时

42、器/计数器仅由控制位C/T设置其定时或计数方式.当计数器计满发生溢出时.只能将输 出送往中行口.在这种情况下,。一般用做出行口波特率发生器,或不需要中断的场合。方式3的两个8位定时器/计数器的定时或计数初值的计算方法与方式2完全相|可,不再重复。3. 3. 3定时器/计数器应用举例MCS-51系列单片机的定时器/计数器均是可编程的.在利用定时器/计数器进行定时或计数之前必须要通过软件 对它们进行初始化,初始化包括的内容如下: 根据实际需耍确定工作方式.对方式寄存器TMOD初始化。即根据实际的需要选择工作方式,形成相应的方式控 制字,在程序中将方式控制字填充给TMOD。 根据实际定时/计数的需要

43、确定初值,进行定时/计数初值的填充。 根据需要开放相应的中断,即对中断允许控制寄存器正进行初始化。 启动定时器/计数器I:作,即根据需要对ICON进行初始化。例3.1利用T0产生1ms的定时.使PL 0引脚输入一个周期为2 ms,占空比为1: 1的方波信号(假定时钟频率f; 8=12MHz)”引脚状态取反即0Pl将1ms产生定时,每隔T0的方波信号,只要利用2ms解:分析要形成周期为 可.(1)确定工作方式:T0要实现1ms的定时,方式0和方式1均可.在此选择方式0:而在此例中没有对T1提出任何委 求.所以TMOD的高4位任意。因此方式控制字为:OOOOOOOOB=OOH,(2)确定定时初值:

44、.图3,9例3.1的控制程序流程图例3.2采用定时器控制PL 0引脚输出一个周期为2分钟.占空比为1: 1的方波信号(时钟频率为12MHz).解:要形成周期为2分钟的方波信号,只要每隔1分钟将PL。引脚的状态取反即可。而TO/T1无论是采用方式0、 方式1或方式2.都不可能直接实现1分钟的定时时间。对于这种长时间的定时,一般可以采用两种方法:一种方法是 采用定时器定时加软件计数方法来实现长定时,这种方法省硬件资源。另一种方法是将两个定时器/计数器合用实现长 定时方法.这种方法占用两个定时器/计数器,其中一个作为定时器,另一个作为计数器.所以硬件资源占用多,而且要进行外部连线。下面采用定时器定时

45、加软件计数的方法来实现长定时功能:假设用T1定时50ms,软件计数1200次.实现1分钟定时。为此用20H单元作50ms计数单元,计满20次为Is: 21H 单元为秒计数单元,计满60次为1分钟。方式控制字:要实现50ms的定时只有Tl 1:作方式1.所以方式控制字为:00010000B=10H.TRI_Q)定时初值tr- 二H雁)图3 10例3 2的捽制程序流程图(3)程序潦程图如图3,10所示,程序清单如下:ORG0000HUMPMAINORG 001BHUMP INTT1MAIN: MOV SP, #70H :设置堆栈区MOV TMOD. #10H :送方式控制字MOV TH1. #3C

46、H ; 送定时初值MOV TL1. #080HSETBEA开放T1中断SETBET1ETB TRI启动T1开始定时秒单元赋初值;#20 . 20HMOVMOV21H. #60 : 分单元赋初值SJMPS : 等待INTT1: MOV TH1. #3CH :重装初值MOVTL1.#OBOHDJNZ20H.NO: k 未到.转 NOMOV20H.#20DJNZ 21H. NO :1分钟未到.转NOMOV21H.#60CPLPl. 0NO: RETIEND在上述两个例子中,中断服务程序都要进行计数器初值重装等操作。这样在定时器溢出发出中断请求到重装完初值并 在此基础上重新开始计数定时,总有一定的时间

47、间隔.造成定时时间多增加r若干微秒的时间。如果采用工作方式2.可避免重装初值所造成的误差,使定时器定时比较精确.但方式2的计数长度只有8位,定时时间较短,前而两个例子是定时器方式的应用,比较起来,方式0没有可取之处,如果要求定时时间长时,直接就使用方式1.而不会去考虑使用方式0;通过两个例子,基本掌握定时中断该如何应用,实际上定时器肿数器的中断请求标志也可 以供查询使用,请看例3,3;例3.3将T0对外部脉冲进行计数,每计满100次后从PL。输出宽度为1ms的注电平,如此循环下去(时钟频率为6MHz) .解:上述问题是TO交替1:作于计数器方式和定时器方式,光计数,计满100次后改为定时器方式,1ms后又回到计 数器方式:设计数器为方式2.定时器为方式1,则:(DTO的方式控制字:计数时为000001 10BR6H,定时时为00000001B=01H,(2)T0的定时初值:计数初值为9cH:定时初值为FEOCH程序流程图如图3,11所示。稗序清单如下:ORG 0030HCNT: CLR TROMOV TMOD. #06H : T

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1