版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章单片机的中断与定时系统5.1MCS-51单片机的中断系统
5.2MCS-51单片机的定时器/计数器
5.3MCS-51单片机外部中断源的扩展
5.4
其他类型单片机的对照描述
本章小结
练习与思考题
5.1MCS-51单片机的中断系统
5.1.1计算机中断技术的概念
1.中断
中断是一项重要的计算机技术。现代的计算机之所以具有实时处理功能,即能对外界发生的事件做出及时处理的功能,就是依靠它们的中断系统。
所谓中断就是指计算机在执行某一程序的过程中(A程序),由于计算机系统内、外的某种原因,而必须中止原程序的执行,转去执行相应的处理程序(B程序),待处理结束之后,再回来继续执行被中止的原程序的过程(A程序)。
其中,A程序我们称为主程序,B程序称为中断服务程序,某种原因称为中断请求,执行B程序的过程称为中断响应。如图5-1所示。图5-1中断响应示意图采用了中断技术后的计算机,可以解决CPU与外设之间速度匹配的问题,使计算机可以及时处理系统中许多随机的参数和信息,同时,它也提高了计算机处理故障与应变的能力。而且还具有以下优点:
(1)使用中断方式,可允许多个外围设备与CPU同时工作,实现分时操作,大大提高计算机的利用率。
(2)利用中断技术,CPU能够及时处理测试、控制系统中许多随机的参数和信息,实现实时处理,大大提高计算机处理问题的实时性和灵活性。
(3)中断技术是CPU具有处理设备故障、掉电等突发事件的能力,提高计算机系统本身的可靠性。
2.中断的响应过程
中断响应过程如图5-1所示。
(1)中断查询。在每条指令结束后,系统都自动检测中断请求信号,如果有中断请求,且CPU处于开中断状态下,则响应中断。
(2)保护现场。在保护现场前,一般要关中断,以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器压入堆栈。
(3)中断服务。即为相应的中断源服务。
(4)恢复现场。用堆栈指令将保护在堆栈中的数据弹出来,在恢复现场前要关中断,以防止现场被破坏。在恢复现场后应及时开中断。
(5)返回。此时CPU将压入到堆栈的断点地址弹回到程序计数器,从而使CPU继续执行刚才被中断的程序。
3.MCS-51中断系统的结构
MCS-51单片机具有功能较强的中断系统。其中,共有5个中断源,可实现二级中断服务嵌套,由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;中断优先级寄存器IP安排5个中断源的优先级。同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。MCS-51单片机的中断系统的结构如图5-2所示,它由中断请求标志位、中断允许寄存器IE、中断优先级寄存器IP硬件查询电路组成。图5-2MCS-51单片机的中断系统5.1.2中断源及中断的控制
1.MCS-51的中断源
中断源是指在计算机系统中向CPU发出中断请求的来源。中断源可以人为设定,也可以将突发性随机事件设置为中断源。
MCS-51单片机共有5个中断源:外部中断源2(
和);2个片内定时器/计数器T0和T1的溢出中断TF0和TF1;1个片内串行口的发送中断TI和接收中断RI。
这5个中断源的优先级分为两级:高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套。这5个中断源的优先级分为两级:高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套。
(1) :外部中断0请求,由P3.2引脚输入。它有两种触发方式,通过IT0(TCON.0)来决定是电平触发方式还是边沿触发方式。一旦输入信号有效,则将中断标志IE0置1,并且向CPU发出中断请求。
(2) :外部中断1请求,由P3.3引脚输入。通过IT1(TCON.2)来决定是电平触发方式还是边沿触发方式。一旦输入信号有效,则将中断标志IE1置1,并且向CPU发出中断请求。
(3) TF0:片内定时器/计数器T0溢出中断请求。当定时器/计数器T0产生溢出时,TF0置1,并向CPU发出中断请求。
(4) TF1:片内定时器/计数器T1溢出中断请求。当定时器T1产生溢出时,TF1置l,并向CPU发出中断请求。
(5) RI/TI:片内串行口发送/接收中断请求。当通过串行口发送或接收完一帧串行数据时,串行口中断请求标志TI或RI置1,并向CPU发出中断请求。
2.中断源请求标志
MCS-51单片机的中断系统中,使用何种中断,采用何种触发方式,可通过定时器/计数器控制寄存器TCON和串行控制寄存器SCON的有关位来规定。只要根据这些位的状态就能确定有无中断请求及中断的来源。
1)定时器/计数器控制寄存器(TCON)
TCON是定时器/计数器控制寄存器,字节地址为88H,位地址88H~8FH。它用于保存外部中断请求以及定时器的计数溢出,寄存器的内容及位地址表示如下(与中断有关的位有6位):
(1) IE0和IE1——外部中断请求标志。
当CPU采样到(或)端出现中断请求时,IE0(或IE1)位由硬件置“1”。在中断响应完成后转向中断服务时,再由硬件自动清0。
(2) IT0和IT1——选择外部中断源触发方式控制位。
当IT0=0时,为电平触发方式。在这种方式下,CPU在每个机器周期的S5P2期间采样(P3.2)引脚输入电平。若采样为低电平,认为有中断申请,则置IE0标志为1;若采样为高电平,认为无中断申请或中断申请已撤除,则将IE0标志清0。注意,在电平触发方式下,CPU响应中断后不会自动清除IE0标志,也不能由软件清除IE0标志,所以在中断返回前,一定要撤消引脚上的低电平,使IE0置0,否则将再次引起中断。
当IT0=1时,为边沿触发方式。CPU在每个机器周期的S5P2期间采样引脚输入电平。如果连续两次采样,一个机器周期中采样为高电平,接着下个机器周期中采样为低电平,则置IE0标志为1,表示外部中断0正在向CPU申请中断。当CPU响应该中断时,IE0由硬件自动清0。由于每个机器周期采样一次外部中断输入电平,在边沿触发方式中,为保证CPU在两个机器周期内检测到由高到低的负跳变,必须保证外部中断源输入的高电平和低电平的持续时间在12个时钟周期以上。
IT1是选择外部中断1(
)触发方式的控制位。其操作功能与IT0类同。
(3)TF0和TF1——片内定时器/计数器计数溢出标志。
定时器/计数器被启动后,从初始值开始进行加1计数,当最高位产生溢出时置该标志位为1(TF0/TF1),向CPU申请中断,直到CPU响应该中断时,才由硬件自动将该标志位清0。
定时器/计数器的计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。
2)串行口控制寄存器(SCON)
SCON是串行口控制寄存器,寄存器地址98H,位地址98H~9FH。寄存器的内容及位地址(与中断有关的只有它的低两位TI和RI)如下:
(1) TI(SCON.1)——串行口发送中断请求标志位。
当CPU将一个要发送的数据写入串行口发送缓冲器时,就启动发送。每发送完一个串行帧,由硬件置位TI。
注意:当CPU响应中断时,TI不能由硬件清0,必须由软件清0。
(2) RI(SCON.0)——串行口接收中断请求标志位。
当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清0。
串行中断请求由TI和RI的逻辑或得到,即无论是发送标志TI还是接收标志RI,都会产生串行中断请求。
注意:CPU复位后,TCON和SCON各位清0。5.1.3中断响应的控制
在MCS-51单片机的中断系统中,由中断源向CPU发出中断请求,但CPU是否响应,怎样响应,就得由中断允许控制寄存器以及中断优先级控制寄存器来决定。
1.中断允许控制寄存器(IE)
中断允许控制寄存器IE的字节地址为A8H,位地址为0A8H~0AFH。通过对IE的编程写入,控制CPU对中断源的开放或禁止,以及对每一中断源是否允许中断。寄存器的内容及地址表示(与中断有关的控制位共有6位)如下:
(1) EA——CPU中断允许总控制位。
EA=1,CPU开放中断,这时每个中断源的中断请求被允许或禁止,取决于各自中断允许位的置1或清0。
EA=0,CPU屏蔽所有的中断请求,即关中断。
(2) ES——串行口中断允许控制位。
ES=1,允许串行口中断。
ES=0,禁止串行口中断。
(3) ET1和ET0——定时器/计数器中断允许控制位。
ETl(ET0)=1,允许T1(T0)中断。
ET1(ET0)=0,禁止T1(T0)中断。
(4) EX1和EX0——外部中断允许控制位。
EX1(EX0)=1,允许外部中断1(0)中断。
EX1(EX0)=0,禁止外部中断1(0)中断。
在MCS-51单片机系统复位后,IE中各位均被清0,即处于禁止所有中断源的状态,可在系统初始化程序中对IE寄存器编程。
注意:以上所说“禁止”并不能禁止中断源的中断请求,它只是禁止CPU去响应中断请求。例如:要以中断方式使用T0,可以用下面的字节操作指令:
MOVIE,#82H ;10000010B
也可以用下面的位操作指令实现:
SETBEA
SETBET0
2.中断优先级控制寄存器(IP)
MCS-51单片机中断系统具有两级中断优先级管理。每一个中断源均可通过对中断优先级寄存器IP的设置,选择高优先级中断或低优先级中断,并可实现二级中断嵌套。
中断优先级寄存器IP的字节地址为0B8H,位地址为0B8H~0BFH。通过对IP的编程,可实现将l个中断源分别设置为高优先级中断或低优先级中断。其格式如下:(1) PS——串行口中断优先级设定位。
PS=1,高优先级;PS=0,低优先级。
(2) PT1——片内定时器T1中断优先级设定位。
PTl=1,高优先级;PT1=0,低优先级。
(3) PX1——外部中断1中断优先级设定位。
PX1=1,高优先级;PX1=0,低优先级。
(4) PT0——片内定时器T0中断优先级设定位。
PT0=1,高优先级;PT0=0,低优先级。
(5) PX0——外部中断0中断优先级设定位。
PX0=1,高优先级;PX0=0,低优先级。
MCS-51单片机中断优先级管理遵循的基本原则是:高优先级中断源可中断正在执行的低优先级中断服务程序,除非在执行低优先级服务程序时,设置了CPU关中断或禁止某些高优先级中断源的中断;同级或低优先级中断源不能中断正在执行的中断服务程序。
为了符合上述原则,在中断系统内部设置了两个用户不可访问的优先级状态触发器。其中一个是高优先级状态触发器,置1时表示当前服务的中断是高优先级的,以阻止其他中断申请;另一个是低优先级状态触发器,置1时表示当前服务的中断是低优先级的,它允许被高优先级的中断申请所中断。当系统复位时,IP寄存器被清0,将5个中断源均设置为低优先级中断。
如果同一级的几个中断源同时向CPU申请中断,CPU便通过内部硬件查询逻辑按自然优先级决定响应顺序。各中断源按自然优先级由高到低的排列顺序如表5-1所示。表5-1同级中断源内部自然优先级顺序5.1.4中断服务的流程
1.响应中断的条件及过程
中断处理过程一般分为3个阶段,即中断响应、中断处理和中断返回。
1)中断响应
中断响应是指在满足CPU的中断响应条件之后,CPU对中断源中断请求的回答。在这个阶段,CPU要完成中断服务以前的所有准备工作,包括保护断点及把程序转向中断程序的入口地址。
(1) CPU响应中断的基本条件如下:
①有中断源发出中断申请;
②中断总允许位EA=1,即CPU开放中断;
③请求中断的中断源的中断允许位置1,即该中断源可以向CPU发中断申请。
CPU在每个机器周期的S5P2期间,采样中断源,而在下一个机器周期的S6期间按优先级顺序查询各中断标志,如查询到某个中断标志为1,将在再下一个机器周期S1期间按优先级顺序进行中断处理。但在下列任何一种情况存在时,中断响应会被阻止。
CPU正在执行同级或高一级的中断服务程序;
现行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前不响应任何中断请求;
当前正在执行的是中断返回指令RETI或访问特殊功能寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行—条其他指令,才会响应中断请求。
中断查询在每个机器周期都要重复执行。如果CPU响应中断的基本条件已满足,但由于上述3个封锁条件之一而未被及时响应,待封锁中断的条件撤消后,若中断标志也已消失,则本次被拖延的这个中断请求就不会被响应。
(2)中断响应过程。如果中断响应的条件满足,且不存在中断封锁的情况,则CPU将响应中断源的中断请求,进入中断响应周期。CPU在中断响应周期要完成下列操作:
①将相应的优先级状态触发器置1;
②由硬件清除相应的中断请求标志;
③执行一条由硬件生成的长调用指令LCALL。该指令将自动把断点地址(PC值)压入堆栈保护起来。然后将对应的中断入口地址送入程序计数器PC,使程序转向该中断入口地址(见表5-2)去执行中断服务程序。表5-2中断源入口地址表
(3)中断服务与返回。中断服务程序从入口地址开始执行,一直到返回指令“RETI”为止,这个过程称为中断服务。在编写中断服务程序时应注意以下几点:
①因各入口地址之间只相隔8个字节,一般的中断服务程序是存放不下的。所以通常在中断入口地址单元处存放一条无条件转移指令,这样就可使中断服务程序灵活地安排在64KB程序存储器的任何空间。
②若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断。③在保护现场和恢复现场时。为了不使现场数据受到破坏或造成混乱,通常规定CPU不响应新的中断请求。因此在编写中断服务程序时,应注意在保护现场之前要关中断,在保护现场之后根据需要开中断,以便允许更高级的中断请求中断它。在恢复现场之前也应关中断,恢复现场后再开
中断。
中断服务程序的最后一条是返回指令RETI。RETI指令的执行标志着中断服务程序的结束,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处,继续向下执行。
2)中断请求的撤除
CPU响应中断请求后,在中断返回(RETI)前,该中断请求信号必须撤除,否则会引起另外一次中断。但以上几种中断被响应时,中断请求标志并非都能被清除,这一点应引起注意。采用边沿触发的外部中断标志IE0或IE1和定时器中断标志TF0或TF1,CPU响应中断后,能用硬件自动清除,无需采取其他措施。但在电平触发时,IE0或IE1受外部引脚中断信号(或)的直接控制,CPU无法控制IE0或IE1,需要另外考虑撤除中断请求信号的措施。如通过外加硬件电路,并配合软件来解决;串行口中断请求标志TI和RI也不能由硬件自动清除,需要在中断服务程序中用软件来清除相应的中断请求标志。
2.中断程序举例
例5-11个外部中断源系统。
如图5-3所示的外部中断源为单片机控制的数据传输系统。P1口设置为数据输入口,外围设备每准备好一个数据时,发出一个选通信号,向CPU发出中断请求(
)。图5-3数据采集系统示意图采用电平触发方式时,外部中断请求标志IE0/IE1在CPU响应中断时不能由硬件自动清除,本系统采用的是硬件清除的方法。
程序清单:
ORG 0000H
START: LJMP MAIN ;跳转到主程序
ORG 0003H
LJMP INT0 ;转向中断服务程序
ORG 0030H ;主程序MAIN:CLR IT0 ;设为电平触发方式
SET
EA;CPU开放中断
SET
EX0;允许中断
MOVR0,#30H;设置数据区地址指针
…… ;主程序的其他工作
ORG 0100H ;中断服务程序INT0:PUSH
PSW;保护现场
PUSH
A
CLR
P3.0;P3.0输出“0”
NOP
NOP
SETB
P3.0 ;P3.0输出“1”
MOV
A,P1;输入外部数据
MOV
@R0, A;存入数据存储器
INC
R0 ;修改数据指针,指向下一个单元
…… ;可以加入其他工作
POP
A;恢复现场
POP
PSW
RETI;中断返回
5.2MCS-51单片机的定时器/计数器
将计算机应用于测控系统时,常常需要有实时时钟以实现定时或延时控制,或需要对外部事件进行计数。虽然定时的实现可由CPU利用软件编程来完成,但这样就会降低CPU的效率,这时可使用硬件定时计数器。
MCS-51系列单片机内有两个可编程的定时器/计数器T0和T1;MCS-52系列中除这两个定时器外,还有一个定时器/计数器T2。本章主要介绍MCS-51的两个定时器的结构、原理、工作方式及其应用。5.2.1计算机定时方法概述
在单片机的控制应用中,定时是必不可少的,可供选择的定时方法有:
1)软件定时
软件定时靠执行一个循环程序进行时间延迟。软件定时的特点是时间精确,且不需要外加硬件电路。但软件定时要占用CPU,增加CPU开销,因此软件定时的时间不宜太长。此外,软件定时方法在某些情况下无法使用。
2)硬件定时
对于时间较长的定时,常使用硬件电路完成。硬件定时方法的特点是定时功能全部由硬件电路完成,不占用CPU时间。但需通过改变电路中的元件参数来调节定时时间,在使用上不够方便。
3)可编程定时器定时
这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用既灵活又方便。此外,也有采用计数方法实现定时,因此可编程定时器都兼有计数功能,可对外来脉冲进行计数。
5.2.2MCS-51单片机定时器/计数器的结构5.2.2MCS-51单片机定时器/计数器的结构
1.定时器/计数器的基本结构
MCS-51单片机共有2个定时器/计数器,分别为定时器/计数器0(T0)和定时器/计数器1(T1)。它们都有16位加法计数结构。16位的定时器/计数器分别由两个8位特殊功能寄存器组成:定时器/计数器T0由TH0和TL0构成;定时器/计数器T1由TH1和TL1构成。这4个计数器均属特殊功能寄存器。
此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON。其中TMOD是定时器的工作方式寄存器,TCON是控制寄存器,主要用于定时器/计数器管理与控制。
2.定时器/计数器的工作原理
16位的定时器/计数器的核心是一个加1计数器,如图5-4所示。当设置为定时工作方式时,对机器周期TM计数。这时计数器的计数脉冲由振荡器的12分频信号产生,即每经过一个机器周期,计数值加1,直至计满溢出。若中断是开放的,这时可向CPU申请中断。当晶振频率fOSC=12MHz时,计数频率=1MHz,或计数周期=1µs。从开始计数到溢出的这段时间就是所谓的定时时间。在机器周期固定的情况下,定时时间的长短与计数器事先装入的初值有关,装入的初值越大,定时越短。当设置为计数工作方式时,通过引脚T0(P3.4)或T1(P3.5)对外部脉冲信号计数。当T0或T1脚上输入的脉冲信号出现由1到0的负跳变时,计数器值加1。CPU在每个机器周期的S5P2期间采样T0和T1引脚的输入电平,若前一个机器周期采样值为1,后一个机器周期采样值为0,则在紧跟着的再下一个周期的S3P1期间,计数器的计数值加1。因此,检测一个从1到0的负跳变需要2个机器周期,即24个振荡周期,故最高计数频率为晶振频率fOSC的24分频。虽然对外部输入信号的占空比没有特殊要求,但为了确保某个给定电平在变化前至少被采样一次,要求高电平(或低电平)保持时间至少为1个完整的机器周期。图5-4MCS-51定时器/计数器工作原理图当通过CPU用软件设定了定时器T0或T1的工作模式后,定时器就会按设定的工作方式与CPU并行运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU的当前工作。
除了可以选择定时模式或计数模式外,定时器还有4种工作方式可供选择,即定时器可构成4种电路结构模式(T1只有3种)。5.2.3MCS-51单片机定时器/计数器工作方式
MCS-51单片机内部的定时器/计数器可设置为4种工作方式,由两个8位特殊功能寄存器TMOD和TCON进行管理与控制。在使用前必须由CPU将一些命令(或称控制字)和初始值写入特殊功能寄存器TMOD和TCON,并给对应的定时器/计数器(TH、TL)赋初值,以定义定时器/计数器的工作模式、工作方式和实现的控制功能。
1.定时器/计数器的管理与控制
1)工作方式寄存器TMOD
TMOD用于定义T0和T1的工作模式,选择定时器/计数器工作方式以及启动方式等。格式如下:其中低4位用于定义定时器T0,高4位用于定义定时器T1。各位的作用分述如下:
(1) M1和M0:工作方式选择位。由M1M0的4种组合状态确定4种工作方式,见
表5-3。表5-3定时器/计数器的工作模式
(2) C/:定时器/计数器功能选择位。当C/
=0时,作为定时器使用;当C/
=1时,作为计数器使用。
(3) GATE:门控位。用于选择定时器T0或T1的启动方式。即启动是否受外部引脚或的电平影响。当GATE=0时,只要用软件使TR0或TR1置1就可启动定时器工作;当GATE=1时,只有在或为高电平,且将TR0或TR1置1时,才能启动定时器T0或T1工作。
TMOD是工作方式寄存器,在片内RAM中的地址为89H,它不能位寻址,只能用字节传送指令设置定时器的工作方式。复位时,TMOD所有位均清0。
2)控制寄存器TCON
TCON是定时器/计数器的控制寄存器,主要用于定时器/计数器T0或T1的启、停控制,标志定时器的溢出和中断情况。TCON各位的格式如下:
(1) TF1(TCONN.7):定时器T1溢出标志。当T1溢出时,由硬件自动使TF1置1,并可向CPU申请中断。当进入中断服务程序时,由硬件自动将TF1清0。TF1也可以由用户软件查询和软件清0。
(2)TR1(TCONN.6):定时器T1运行控制位。由软件来置1或清0。当TR1=1时,T1启动工作;当TR1=0时,T1停止工作。
(3) TF0(TCONN.5):定时器T0溢出标志。其功能和操作情况同TF1。
(4) TR0(TCONN.4):定时器T0运行控制位。其功能和操作情况同TR1。
(5) IE1(TCONN.3):外部中断1(
)请求标志。
(6) IT1(TCONN.2):外部中断1触发方式选择位。
(7) IE0(TCONN.1):外部中断0(
)请求标志。
(8) IT0(TCONN.0):外部中断0触发方式选择位。
TCON中的低4位(IE1、IT1、IE0、IT0)与中断有关,其详细功能已在5.1节中断系统中详细讨论。
TCON在片内RAM中的字节地址为88H。它是可以位寻址的。当系统复位时,TCON的所有位均被清0。
2.定时器/计数器的工作方式
定时器/计数器T0和T1有4种工作方式,即方式0、方式1、方式2和方式3,它是通过软件对TMOD中M1、M0位的设置选择的。这4种工作方式的区别在于对T0(或T1)的两个8位计数器TH0、TL0(或TH1、TL1)的计数操作方式不同。在方式0、1、2中,T0和T1的用法基本一致,而方式3只有T0才有。现以T0为例介绍。
1)方式0
方式0是一个13位的定时器/计数器。图5-5为定时器T0在方式0下的逻辑结构图图5-5定时器/计数器0的工作方式0结构图在方式0下,由TL0的低5位(高3位未用)和TH0的8位组成13位计数器。当TL0的低5位溢出时向TH0进位,而当TH0溢出时则向中断标志位TF0置位,并在中断允许时申请中断。
由图可见,选择定时还是计数模式受逻辑软开关C/
(TMOD中的C/位)控制。当C/
= 0时,工作于定时器工作方式,计数脉冲是由振荡器经12分频产生的。加1计数器对机器周期计数。其定时时间按下式计算:
定时时间=(213-计数初值TC) × 机器周期
当C/
=1时,定时器工作于计数器工作方式,对外部输入端T0或T1的输入脉冲计数。当外部信号电平发生1到0跳变时,计数器加1。
13位的加1计数器的启、停受一些逻辑门控制,当GATE=0时,或门输出为1(与无关)。只要TR0=1,则与门输出为1,控制开关接通计数器,允许T0在原有值上做加法计数,直至溢出。溢出时,13位计数器复0,TF0置1,并申请中断,还可从0开始计数。若TR0=0,则断开控制开关,停止计数。
当GATE=1,并且TR0=1时,则或门、与门输出仅受
控制。这时外部信号电平通过引脚直接开启或关断计数通道。即当从0变为1则开始计数;若从1变为0,停止计数。应用这种控制方法可以测量在输入端出现的外部信号的脉冲宽度。
例5-2
设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500
s的等宽的方波连续脉冲,并由P1.0输出。用查询方式编写程序。
第1步,计算计数初值。
对周期500
s的等宽方波,定时时间应为250
s。若使用6MHz晶振,一个机器周期为2
s。方式0为13位计数结构,设待求的计数初值为X,则:
定时时间=(213-计数初值TC) × 机器周期
250 × 26=(213-X) × 2 × 26
X=8067;二进制数表示为1111110000011B;十六进制数高8位表示为0FCH(TH1),低5位表示为03H(TL1)。第2步,TMOD寄存器初始化。
(1)把定时器/计数器1设定为方式0,则M1M0=00;
(2)为实现定时功能,应使C/=0;
(3)为实现定时器/计数器1的运行控制,则GATE=0;
(4)定时器/计数器0不用,有关设定为0。
因此,TMOD寄存器应初始化为00H。
第3步,由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。
TR1=1启动,TR1=0停止。第4步,程序设计。
MOV
TMOD,#00H;设置T1为工作方式0
MOV
TH1,#0FCH ;设置计数初值
MOV
TL1,#03H;
MOV
IE,#00H;禁止中断
LOOP:SETB
TR1 ;启动定时
JBCTF1,LOOP1;查询计数溢出
AJMP LOOP
LOOP1:MOVTH1,#0FCH ;重新设置计数初值
MOVTL1,#03H
CLR TF1 ;计数溢出标志位清0
CPL P1.0;输出取反
AJMPLOOP ;重复循环
2)方式1
定时器/计数器工作于方式1时为一个16位的计数器。其逻辑结构、操作及运行控制几乎与方式0的完全一样,差别仅在于计数器的位数不同,如图5-6所示。在方式1中TL和TH均为8位,TL和TH一起构成了16位计数器。用于定时工作方式1时,定时时间为
定时时间=(216-计数初值TC) × 机器周期
用于计数器工作方式时,最大计数值为216=65536。图5-6定时器/计数器T0工作方式1的结构图
例5-3
题目同例5-2,但要求以中断方式完成。单片机晶振频率为6MHz,使用定时器1以工作方式1产生周期为500
s的等宽连续正方波脉冲,并在P1.0端输出。
第1步,计算计数初值。
TH1=0FFH TL1=83H
第2步,TMOD寄存器初始化。
TMOD=10H第3步,程序设计。
主程序:
MOVTMOD,#10H;定时器1工作方式1
MOVTH1,#0FFH ;设置计数初值
MOVTL1,#83H
SETBEA ;开中断
SETBET1 ;允许定时器1中断
LOOP:SETBTR1 ;定时开始
HERE:SJMP$ ;等待中断中断服务程序:
MOVTH1,#0FFH ;重新设置计数初值
MOVTL1,#83H
CPLP1.0 ;输出取反
RETI ;中断返回
3)方式2
定时器/计数器工作于方式2时,将两个8位计数器TH、TL分成独立的两部分,组成一个可自动重装载的8位定时器/计数器。其逻辑结构如图5-7所示图5-7定时器/计数器T0工作方式2的结构图
在方式0和方式1中,当计满溢出时,计数器TH和TL的初值全部为0,若要进行重复定时或计数,还需用软件向TH和TL重新装入计数初值。而工作在方式2时,16位计数器被拆成两个,TL用作8位计数器,TH用以存放8位的计数初值。在程序初始化时,TL和TH由软件赋予相同的初值。计数过程中,若TL计数溢出,一方面将TF置1,请求中断;另一方面自动将TH中的初值重新装入TL中,使TL从初值开始重新计数。这可以多次循环重装入,直到TR=0才停止计数。
用于定时工作方式时,定时时间t为
t =(28-计数初值TC) × 机器周期
方式2用于计数工作方式时,最大计数值(初值=0时)是28。方式2特别适合于用作较精确的定时和脉冲信号发生器,还常用作串行口波特率发生器(详见第6章有关内容)。例5-4
使用定时器0以工作方式2产生100
s定时,在P1.0输出周期为200
s的连续正方波脉冲。已知晶振频率为6MHz。
第一步,计算计数初值。
6MHz晶振下,一个机器周期为2
s,以TH0作重装载的预置寄存器,TL0作8位计数器,假设计数初值为X,则:
t =(28-计数初值TC) × 机器周期
100 × 26=(28-X) × 2 × 26
X=206D=11001110B=0CEH
TH0=TL0=0CEH第二步,TMOD寄存器初始化。
(1)定时器/计数器0为工作方式2,M1M0=10;
(2)为实现定时功能C/=0;
(3)为实现定时器/计数器0的运行,GATE=0;
(4)定时器/计数器1不用,有关位设定为0。
TMOD=02H
第三步,程序设计。
(1)用查询方式设计程序。
MOVIE,#00H ;禁止中断
MOVTMOD,#02H;设置定时器0为工作
方式2
MOVTH0,#0CEH ;保存计数初值
MOVTL0,#0CEH ;设置计数初值
SETBTR0 ;启动定时
LOOP:JBCTF0,LOOP1;查询计数溢出
AJMPLOOP
LOOP1:CPL P1.0 ;输出方波
AMP LOOP ;重复循环
由于方式2具有自动重装载功能,因此计数初值只需要设置一次,以后不再需要软件重置。
(2)用中断方式设计程序。
主程序:
MOVTMOD,#02H;设置定时器0为工作方式2
MOVTH0,#0CEH;保存计数初值
MOVTL0,#0CEH;设置计数初值
SETB EA;开中断
ETB ET0 ;允许定时器0中断
LOOP:SETBTR0;等待中断
HERE: SJMP $
中断服务程序:
CPL P1.0
RETI
4)方式3
方式3只适用于定时器T0。在方式3下,T0被分成两个相互独立的8位计数器TL0和TH0,如图5-8所示。
当定时器T0工作于方式3时,TL0使用T0本身的控制位、引脚和中断源,即C/、GATE、TR0、TF0和T0(P3.4)引脚、
(P3.2)引脚,并可工作于定时器模式或计数器模式。除仅用8位寄存器TL0外,其功能和操作情况与方式0和方式1的一样。图5-8定时器/计数器T0工作方式3的结构图由图5-8可见,TH0只能工作在定时器状态,对机器周期进行计数,并且占用了定时器T1的控制位TR1和TF1,同时占用了T1的中断源。TH0的启动和关闭仅受TR1的控制。方式3为定时器T0增加了一个额外的8位定时器。
定时器T1没有方式3状态,若设置为方式3,其效果与TR1=0一样,定时器T1停止工作。
在定时器T0工作于方式3时,T1仍可设置为方式0~方式2。由于TR1、TF1和T1的中断源均被定时器T0占用,此时只能通过T1控制位C/来切换定时或计数。在T0设置为方式3工作时,一般是将定时器T1作为串行口波特率发生器,或用于不需要中断的场合。
5.3MCS-51单片机外部中断源的扩展
MCS-51单片机仅提供两个外部中断源输入端(、
),而实际应用系统中可能有两个以上的外部中断源,这时必须对外部中断源进行扩展。
扩展外部中断源的方法有:通过线或逻辑实现的扩展法,利用定时器/计数器扩展法,以及硬件电路扩展法。下面介绍通过线或逻辑实现外部中断源扩展法和定时器/计数器扩展法。5.3.1通过线或逻辑实现扩展
例5-5
多个外部中断源系统。
假设有5个外部中断源,中断优先级排队顺序为:X0、X1、X2、X3、X4。试设计它们与80C51单片机的接口。
系统有多个外部中断源时,可按它们的轻重缓急进行中断优先级排队,将最高优先级的中断源接在端,其余中断源用线或电路接到端,同时分别将它们引入一个I/O口,以便在的中断服务程序中由软件按预先设定的优先级顺序查询中断的来源。使用此方法原则上可以处理任意多个中断源本例中将X0经非门接到,其余的X1、X2、X3、X4经集电极开路的非门构成或非电路接到端,并分别与P1.0、P1.1、P1.2、P1.3相连,如图5-9所示。当X0~X4中有一个或几个有效时,都会通过引脚向CPU发出中断请求。在的中断服务程序中依次查询P1.0~P1.3,就可以确定究竟是哪个中断提出请求。图5-9多个外部中断源系统系统的中断应用程序段:
ORG0003H
LJMPINTE0 ;转外部中断0服务程序入口
ORG0013H
LJMPINTE1 ;转外部中断1服务程序入口
INTE0: PUSHPSW ;X0中断服务程序
PUSHA
POPA
POPPSW
RETINTE1:PUSH PSW;中断服务程序
PUSH A
JB P1.0,DV1;P1.0为1,转X1中断服务程序
JB P1.1,DV2;P1.1为1,转X2中断服务程序
JB P1.2,DV3;P1.2为1,转X3中断服务程序
JB P1.3,DV4;P1.3为1,转X4中断服务程序
INTRET:POPA
POPPSW
RETIDV1: ;X1中断服务程序
AJMPINTRET
DV2: ;X2中断服务程序
AJMPINTRET
DV3: ;X3中断服务程序
AJMPINTRET
DV4: ;X4中断服务程序
AJMPINTRET当所要处理的外部中断源的数目较多而其速度又要求较快时,采用软件查询的方法进行中断优先级排队常常不能满足时间上的要求,采用硬件对外部中断源进行优先级排队就可避免这个问题。
常用的硬件排队电路是74LS148优先权编码器,它具有8个中断输入端,3个编码输出端。在使能端控制下,只要8个输入端中任意一个输入为低电平,就有一组相应的编码输出,如果8个输入端同时有多个输入为低电平,则输出编号最大的输入所对应的编码。5.3.2通过定时器/计数器实现扩展
当实际应用系统中有两个以上的外部中断源,而片内定时器/计数器未使用时,可以利用定时器/计数器来扩展外部中断源。
扩展的方法是:将定时器/计数器设置成计数器方式,计数初值设定为满程,将带扩展的外部中断源接到定时器/计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数加1后便产生定时器/计数器的溢出中断。因此可以把定时器/计数器的外部计数引脚作为扩展中断源的中断输入端。扩展中断源的步骤为:
(1)设置定时器/计数器为工作方式2,即自动装载式8位计数,以便在一次中断响应后,自动为下一次中断请求做好准备。
(2)高低8位计数器(TH和TL)均预置为(0FFH)。
(3)扩展的外部中断请求信号接计数输入端(T0或T1)。
(4)把扩展外部中断服务程序按所用的定时器/计数器中断入口地址存放。例如,以定时器/计数器0扩展一个外部中断,其初始化程序段为:
MOVTMOD,#06H;设置计数器0为工作方式2
MOVTH0,#0FFH ;置计数初值
MOVTL0,#0FFH
SETEA ;开中断
SETET0 ;计数器0允许中断
SETTR0 ;计数启动
5.4其他类型单片机的对照描述
与MCS-51系列单片机相比,PIC系列单片机在结构上有较大不同,其定时器/计数器本身是一个寄存器,结构比较简单,但与之配合的控制部分比较复杂。本节以基本型号PIC16C5X为例简述其结构及工作原理。5.4.1PIC16C5X定时器/计数器的控制结构
PIC16C5X单片机片内设有1个定时器/计数器,称为RTCC。RTCC是一个8位计数寄存器,可以对内部指令周期(fOSC/4)计数或对加在RTCC引脚上的外部脉冲计数。为了扩大定时器/计数器的范围,PIC16C5X单片机为RTCC配备了1个预分频器(PRESCALER),通过预分频值的选择可以将定时器/计数器范围扩大256倍。另外,通过多路开关切换,还可以将预分频器分配给看门狗定时器(WDT),对WDT的最大分频比为128倍。图5-10给出了预分频器的结构以及与RTCC和WDT之间的连接关系。图5-10预分频器的结构以及与RTCC和WDT之间的连接关系分频比的设定及分频对象的选择可以通过对预分频/选择寄存器(OPTION)参数写入实现,OPTION共有6位,格式及内容如表5-4所示。表5-4OPTION的格式及内容注:单片机复位后OPTION的内容全为“1”,写入OPTION的内容要通过两步完成,即先将写入内容放入工作寄存器W中,然后再用OPTION指令完成OPTION内容写入。
由图5-10可以看出,预分频电路的核心部分是1个8位计数器和1个8选1多路开关。预分频电路的输入脉冲来源有3种,参见表5-5。表5-5输入脉冲来源及控制逻辑5.4.2相关部分及使用说明
1.RTCC的相关部分
PIC16C5X单片机片内设有1个看门狗定时器(WDT),其核心是1个片内RC振荡/计数器(与芯片时钟电路无关),由配置EPROM设定,在WDT使能允许(WDTENABLE)下,可以在计满后产生溢出并复位。WDT溢出时间周期约18ms(RC振荡器的振荡频率与温度、工作电压有关)。预分频器分配给WDT的最大溢出周期为2.58s(即1︰128)。WDT在溢出前执行CLRWDT指令,该指令清“0”WDT(如果预分频器分配给WDT,则同时被清除)。使用WDT的目的是如果干扰程序进入死循环,可以通过WDT溢出复位重新开始正常程序运行。
2.RTCC的使用说明
PIC16C5X单片机片内的RTCC是一个8位计数寄存器,输入信号来源于内部时钟(fOSC/4)或外部RTCC引脚。计满后的内容为FFH,并在下一脉冲清0。RTCC对所有计数脉冲都延时2个指令周期,对RTCC引脚的采样需要2个振荡周期,对外部脉冲的最高计数频率为N × fOSC/4(N为分频比),外部最高计数频率不得超过50MHz。
与MCS-51系列相比,PIC16C5X的RTCC的不便之处主要有2项。其一是大于8位的定时器/计数器需要靠预分频器分频,初值设置不够灵活;其二是RTCC无溢出中断,需要在程序执行中检测“飞读”。目前这类问题已在新型的PIC系列单片机中有所改进
本章小结
中断是计算机应用中的一种重要技术手段,在自动检测、实时控制、应急处理等方面都要用到。中断处理一般包括中断请求、中断响应、中断服务、中断返回4个环节。
MCS-51单片机中断系统提供5个中断源,即为外部中断0和外部中断1,定时器/计数器T0和T1的溢出中断,串行口的接收和发送中断。这5个中断源可分为2个优先级,由中断优先级IP设置它们的优先级。同一优先级别的中断优先权,由系统硬件确定的自然优先级排队。
MCS-51单片机内部有两个可编程定时器/计数器。定时器/计数器T0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源电池维修及更换服务合同4篇
- 2024某城市地标建筑设计与施工合同
- 2025年度消防水源及消防水池建设与维护合同4篇
- 2025年度环保技术研发采购追加合同3篇
- 2025年度新型农业科技场咨询服务合同范本4篇
- 2025年度住宅窗户安全性能提升改造合同4篇
- 2024渣土运输车加盟合同规范样本3篇
- 2025年度智能汽车生产线厂房租赁合同3篇
- 2025年度市政绿化带除草承包服务协议4篇
- 2025年度智能安防产品全国代理权授权合同范本4篇
- 医疗纠纷预防和处理条例通用课件
- 厨邦酱油推广方案
- 乳腺癌诊疗指南(2024年版)
- 高三数学寒假作业1
- 保险产品创新与市场定位培训课件
- (完整文本版)体检报告单模版
- 1例左舌鳞癌手术患者的围手术期护理体会
- (完整)100道两位数加减两位数口算题(难)
- 钢结构牛腿计算
- 2023-2024学年重庆市两江新区四上数学期末质量检测试题含答案
- 体外诊断试剂工作校准品产品校准品互换性(基质效应)Excel计算模板
评论
0/150
提交评论