2014 5 中断系统与定时器计数器_第1页
2014 5 中断系统与定时器计数器_第2页
2014 5 中断系统与定时器计数器_第3页
2014 5 中断系统与定时器计数器_第4页
2014 5 中断系统与定时器计数器_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

中断系统与定时器/计数器,在程序的执行过程中,由于某种外界的原因,必须终止当前执行的程序,而去执行相应的处理程序,待处理结束后,再回来继续执行被终止的程序。这个过程叫中断。,中断的概念,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,5个中断源,具有二个中断优先级,可实现二级中断服务程序的嵌套。每个中断源均可软件编程为高优先级或低优先级中断,允许或禁止向CPU请求中断。有关的特殊功能寄存器(SFR)有:中断允许寄存器IE中断优先级控制寄存器IP中断源寄存器(TCON、SCON中的有关位)注:均可位寻址。,中断系统结构,中断请求标志,1,高级,低级,内部查询,内部查询,入口地址,入口地址,中断允许控制,中断优先级,EA,中断源,中断系统结构图,8051单片机共有5个中断源,分别是2个外部中断、2个定时中断和1个串行中断。外部中断是:外部中断0-INT0,由P3.2提供,外部中断1INT1,由P3.3提供,,外部中断有两种触发方式,即低电平方式和负边沿方式。,定时器和串行口中断分别是:T0溢出中断;由片内定时/计数器0提供T1溢出中断;由片内定时/计数器1提供串行口中断RI/TI;由片内串行口提供,中断源,中断方式,单片机的中断为向量中断,即一响应中断就转入固定入口地址执行中断服务程序。具体如下:中断源入口地址INT00003T0000BHINT10013HT1001BHRI/TI0023H在这些单元中往往放一条跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。,设系统中五个中断源均采用,程序的一般格式如下:,ORG0000HAJMPMAINORG0003HLJMPINT0PORG000BHLJMPIT0PORG0013HLJMPINT1PORG001BHLJMPIT1PORG0023HLJMPISPORG0030HMAIN:,ORGXXXXINT0P:.RETIORGXXXXIT0P:RETIORGXXXXINT1P:RETI,ORGXXXXIT1P:RETIORGXXXXISP:RETIEND,C51中的中断函数中断函数声明如下:返回值函数名interruptnusingninterruptn中的n对应中断源的编号,n的取值04。中断编号告诉编译器中断程序的入口地址。usingn的n对应四组通用寄存器中的一组。n的取值03。,中断函数,函数名()interruptnusingm函数内部实现.,中断函数举例:voidtimer0()interrupt1using2,与中断有关的特殊功能寄存器,与中断有关的特殊功能寄存器有四个:,TCON-定时控制寄存器,IE-中断允许控制寄存器,IP-中断优先级控制寄存器,SCON-串行口控制寄存器。,(1)定时控制寄存器TCON,中断请求标志,触发方式选择,0低电平1下降沿,注意:电平触发时,在中断返回前应撤除中断源。,(2)串行口控制寄存器SCON,串行中断请求标志,(3)中断允许控制寄存器IE,(4)中断优先级控制寄存器(IP),0禁止1允许,0低级别1高级别,实现两级控制注意:复位时,禁止所有中断,每一中断源可编程为高优先级或低优先级中断,以实现二级嵌套。默认的优先次序为:INT0、C/T0、INT1、C/T1、串行口中断(依次从高到低),注意:响应中断后,CPU并不清零中断标志位,必须软件清零。,中断响应,响应条件-CPU要响应中断需满足下列条件:无同级或高级中断正在服务;当前指令周期结束,如果查询中断请求的机器周期不是当前指令的最后一个周期,则不行;若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。,响应过程-单片机响应中断后,自动执行下列操作:置位中断优先级有效触发器,即关闭同级和低级中断:断点入栈,也就是当前程序计数器PC中内容压入堆栈,以便执行完中断服务程序后返回原程序继续执行;根据中断源入口地址转入相应中断服务程序执行(即自动执行一条长转移指令)。,响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。,中断系统初始化,开相应中断源的中断;(IE)设定中断优先级;(IP)若为外部中断,设定外部中断的触发方式。,中断处理,中断处理包括两个部分:保护现场和中断处理。保护现场:就是将需要在中断服务程序中使用而又不希望破坏其中原来内容的工作寄存器压入堆栈保护起来,等中断服务完成后再从堆栈中弹出以恢复原来的内容。通常需要保存的寄存器有PSW、A以及其他工作寄存器。,中断处理,中断服务程序编写时需要注意的几点:1、8051各中断源入口地址之间仅相隔8个单元,如果中断程序的长度超过8个地址单元,应在中断入口地址处安排一条转移指令,转到其他有足够空余存储单元的地址空间。2、若在执行当前中断服务程序时需要禁止更高级中断源,则要用软件指令关闭中断,在中断返回之前再开放中断。3、在保护和恢复现场时,为了不使现场信息受到破坏或造成混乱,保护现场之前应关中断,若需要允许高级中断,则应在保护现场之后再开中断。同样在恢复现场之前也应先关中断,恢复现场之后再开中断。4、及时清除那些不能被硬件自动清“0”的中断请求标志,以免产生错误的中断。,中断应用举例8051单片机只有2个外部中断源,当实际应用中需要多个外部中断源时,可采用硬件请求和软件查询相结合的办法进行扩展,把多个中断源通过“或非”门接到外部中断输入端,同时又连到某个I/O端口,这样每个中断源都能引起中断,然后在中断服务程序中通过查询I/O端口的状态来区分是哪个中断源引起的中断。若有多个中断源同时发出中断请求,则查询的次序就决定了同一优先级中断中的优先级。,C语言源程序清单,定时器/计数器的工作方式与控制,8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。,一、定时器/计数器的功能,在特殊功能寄存器TMOD中,有一个控制位(CT),分别用于控制定时/计数器工作在定时器方式还是计数器方式。,1.定时功能-计数输入信号是内部时钟脉冲,每个机器周期使技数器的值加1。,2.计数功能-计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。,定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。,二、定时器计数器的特殊功能寄存器,与定时器计数器有关的特殊功能寄存器有:,(1)工作方式控制寄存器TMOD,T1控制,T0控制,GATE门控位,M1M0工作方式选择,(2)定时器控制寄存器TCON,中断请求标志,触发方式选择,启动定时/计数器,0低电平1下降沿,0停止1启动,计数脉冲输入,三、定时器计数器的工作方式,定时器计数器共有四种工作方式,(1)方式013位方式,13位计数器,定时器,计数器,(2)方式116位方式,(3)方式28位自动装入时间常数方式,(4)方式3双8位方式,在前三种工作方式下,T0和T1功能是完全相同的,但在方式3下T0和T1功能就不相同了。仅T0可以工作在方式3此时T0分成2个独立的计数器TL0和TH0,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。,(4)方式3双8位方式若将T0设置为方式3,TL0和TH0被分成为两个互相独立的8位计数器,如下图所示。,定时器T1无操作方式3状态,若将T1设置为方式3,就会使T1立即停止计数,也就是保持原有的计数值,其作用相当于使TR1=0,封锁与门,断开计数开关K。,在定时器T0用作方式3时,T1仍可设置为方式02。由于TR1和TF1被定时器T0(TH0)占用,计数器开关K已被接通,此时仅用T1控制位C/切换其定时器或计数器工作方式就可使T1运行。寄存器(8位、13位或16位)溢出时,只能将输出送入串行口或用于不需要中断的场合。,在一般情况下,当定时器T1用作串行口波特率发生器时,定时器T0才设置为工作方式3。此时,常把定时器T1设置为方式2,用作波特率发生器,见下图所示。,(1)计数器初值的计算设计数器的最大计数值为M(根据不同工作方式,M可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值,四、定时/计数器常数的计算,(2)定时器初值的计算,当C/=0时,定时器计数器T0或T1被选为定时器。此时必须给定时器送定时初值,这个初值也是送到TH和TL中的。T0或T1在该定时初值的基础上进行加法计数,并当计数器从全“1”变为全“0”时自动产生定时溢出中断请求。,在定时器方式下,计数器对机器周期进行计数。因此,定时器定时时间T的计算公式为:T=(MX)T机器式中,M为模值,和定时器的工作方式有关(同上);X为定时初值;T机器是机器周期。,(2)定时器初值的计算定时器定时初值计算公式也可以写成:X=M-(要求的定时值)/(12/fosc)式中,M为定时器模值(根据不同工作方式,M可以是213、216或28),设fosc=12MHz,则最大定时时间为:,方式0时:Tmax=2131s=8192s=8192ms,方式1时:Tmax=2161s=65536s=65536ms,方式2时:Tmax=281s=256s=0256ms,方式3时:Tmax=281s=256s=0256ms,定时器在不同方式下的最大定时时间:,五、定时器/计数器的应用,定时器/计数器在应用前需要进行初始化:,确定TMOD控制字:编程时将控制字送TMOD;,计算定时器/计数器的计数初值:编程时将计数初值送TH、TL;,开中断(如果使用中断方式):,TR位置位控制定时器的启动和停止。,例1:假设单片机的振荡频率fosc=6MHz,现要求产生1ms的定时,试分别计算定时器T1在方式0、方式1和方式2时的初值。,方式0:最大计数值为M=213,因此定时器的初值应为X=213-(110-3)/(12/(610-6)=7692D=1111000001100B其中高8位为TH1的初值,即F0H,低5位为TL1的初值注意,这里TL1的初值应为00001100B即0CH,而不是60H,因为在方式时,TL1的高3位是不用的,应都设为0。,方式1:最大计数值为M=216,因此定时器的初值应为X=216-(110-3)/(210-6)=65036D=1111111000001100B=FE0CH此时高8位TH1的初值为FEH,低8位TL1的初值为0CH。,方式2:最大计数值为M=28fosc=6MHz,T机器=2s方式2的最大定时时间=256T机器=2562s=512s1ms计算得到的初值为负值,说明当fosc=6MHz时,采用方式2不能直接产生1ms的定时。,例2:若单片机时钟频率fosc=12MHz,编程在P1.0引脚输出周期为100ms的方波(用T0)。,1初值计算fosc=12MHz,T机器=1s又P1.0引脚输出100ms的方波,T0应定时50ms,T0选为定时器、方式1。设定时初值为X,则X=216(50ms1s)=15536=3CB0H,TL0=0B0HTH0=3CH,2TMOD寄存器初始化值的确定TMOD=00000001B=01H,3程序清单i用查询方式编程ii用中断方式编程,i用查询方式编程(C51),ii用中断方式编程(C51),例3:用T1对T1引脚输入的脉冲信号计数,每计1024个数,将P1.7引脚取反。(要求用方式0实现),1初值计算设T1计1024个数的初值为X,则X=2131024=7168=1110000000000BTL1=00HTH1=0E0H,2TMOD寄存器初始化值的确定TMOD=01000000B=40H,3程序清单,i用查询方式编程(C51),ii用中断方式编程(C51),例4:若单片机时钟频率fosc=6MHz,用T0、方式2,产生100s的定时,使P1.7引脚输出周期为200s的连续正方波。,1初值计算fosc=6MHz,T机器=2s设T0定时100s的初值为X,则X=28(100s2s)=206=0CEHTL0=0CEHTH0=0CEH,2TMOD寄存器初始化值的确定TMOD=00000010B=02H,3程序清单,i用查询方式编程,用中断方式编程:,例5:已知单片机时钟频率fosc=6MHz。若T1作为波特率发生器,系统中又需要两个独立的8位定时器。将T0选为方式3,TL0和TH0分别产生200s和400s的定时中断,使P1.0和P1.1引脚分别产生周期为400s和800s的正方波(注:T1作为波特率发生器时,多工作于定时器方式2)。,1初值计算fosc=6MHz,T机器=2s设TL0定时200s的初值为X1,TH0定时400s的初值为X2则X1=28(200s2s)=

温馨提示

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

评论

0/150

提交评论