2014 5 中断系统与定时器计数器.ppt

上传人:s****8 文档编号:82764603 上传时间:2023-03-26 格式:PPT 页数:58 大小:2.85MB
返回 下载 相关 举报
2014 5 中断系统与定时器计数器.ppt_第1页
第1页 / 共58页
2014 5 中断系统与定时器计数器.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《2014 5 中断系统与定时器计数器.ppt》由会员分享,可在线阅读,更多相关《2014 5 中断系统与定时器计数器.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、中断系统与定时器中断系统与定时器/计数器计数器 在程序的执行过程中,由于某种外界的在程序的执行过程中,由于某种外界的原因,必须终止当前执行的程序,而去原因,必须终止当前执行的程序,而去执行相应的处理程序,待处理结束后,执行相应的处理程序,待处理结束后,再回来继续执行被终止的程序。这个过再回来继续执行被终止的程序。这个过程叫中断。程叫中断。中断的概念 执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回5 5个个中中断断源源,具具有有二二个个中中断断优优先先级级,可可实实现现二二级级中中断断服服务务程程序序的的嵌嵌套套。每每个个中中断断源源均均可可软软件件编编程程为为高高优

2、优先级或低优先级中断,允许或禁止向先级或低优先级中断,允许或禁止向CPUCPU请求中断。请求中断。有关的特殊功能寄存器(有关的特殊功能寄存器(SFRSFR)有:有:中断允许寄存器中断允许寄存器IEIE中断优先级控制寄存器中断优先级控制寄存器IPIP中断源寄存器(中断源寄存器(TCONTCON、SCONSCON中的有关位)中的有关位)注:均可位寻址。注:均可位寻址。中断系统结构 IE0TF0IE1TF1TIRI中断请求标志EX0ET0EX1ET1ES1PX0PT0PX1PT1PS高级低级内部查询内部查询入口地址入口地址INT0INT1T0T1TIRI中断允许控制中断优先级EA中断源中断系统结构图

3、80518051单片机共有单片机共有5 5个中断源,分别是个中断源,分别是2 2个个外部中断外部中断、2 2个个定时中断定时中断和和1 1个个串行中断。串行中断。外部中断是:外部中断是:外部中断外部中断0-INT00-INT0,由,由P3.2P3.2提供,提供,外部中断外部中断1 1INT1INT1,由,由P3.3P3.3提供,提供,外部中断有两种触发方式,即低电平方式和负边沿外部中断有两种触发方式,即低电平方式和负边沿方式。方式。定时器和串行口中断分别是:定时器和串行口中断分别是:T0T0溢出中断溢出中断;由片内定时由片内定时/计数器计数器0 0提供提供T1T1溢出中断溢出中断;由片内定时由

4、片内定时/计数器计数器1 1提供提供串行口中断串行口中断RI/TIRI/TI;由片内串行口提供由片内串行口提供 中断源中断方式 单片机的中断为单片机的中断为向量中断向量中断,即一响应中断就转入,即一响应中断就转入固固定入口地址定入口地址执行中断服务程序。执行中断服务程序。具体如下:具体如下:中断源中断源 入口地址入口地址 INT0INT0 0003 0003 T0T0 000BH 000BH INT1 INT1 0013H 0013H T1 T1 001BH 001BH RI/TI RI/TI 0023H 0023H在这些单元中往往放一条跳转指令,跳到真正的中在这些单元中往往放一条跳转指令,跳

5、到真正的中断服务程序,这是因为给每个中断源安排的空间只断服务程序,这是因为给每个中断源安排的空间只有有8 8个单元。个单元。设系统中五个中断源均采用,程序的设系统中五个中断源均采用,程序的一般格式如下:一般格式如下:ORG ORG 0000H0000HAJMPAJMPMAINMAINORGORG0003H0003HLJMPLJMPINT0PINT0PORGORG000BH000BHLJMPLJMPIT0PIT0PORGORG0013H0013HLJMPLJMPINT1PINT1PORGORG001BH001BHLJMPLJMPIT1PIT1PORGORG0023H0023HLJMPLJMPIS

6、PISPORGORG0030H0030HMAIN:MAIN:ORGORGXXXXXXXXINT0PINT0P:.RETIRETIORGORGXXXXXXXXIT0P:IT0P:RETIRETIORGORGXXXXXXXXINT1P:INT1P:RETI RETI ORGORGXXXXXXXXIT1PIT1P:RETIRETIORGORGXXXXXXXXISPISP:RETIRETIENDEND C51C51中的中断函数中的中断函数中断函数声明如下:中断函数声明如下:返回值返回值 函数名函数名 interrupt n using ninterrupt n using ninterrupt nin

7、terrupt n中的中的n n对应中断源的编号,对应中断源的编号,n n的取值的取值04。中断编号。中断编号告诉编译器中断程序的入口地址。告诉编译器中断程序的入口地址。using nusing n的的n n对应四组通用寄存器中的一组。对应四组通用寄存器中的一组。n n的取值的取值03。中断编号中断编号n n中断源中断源入口地址入口地址0 0外部中断外部中断0 00003H0003H1 1定时器定时器/计数器计数器0 0000BH000BH2 2外部中断外部中断1 10013H0013H3 3定时器定时器/计数器计数器1 1001BH001BH4 4串行口中断串行口中断0023H0023H中断

8、函数中断函数函数名()函数名()interrupt interrupt n n using using m m 函数内部实现函数内部实现 .中断函数举例中断函数举例:void timer0void timer0()()interrupt 1 using 2interrupt 1 using 2 与中断有关的特殊功能寄存器 与中断有关的特殊功能寄存器有四个:与中断有关的特殊功能寄存器有四个:TCON-TCON-定时控制寄存器定时控制寄存器,IE-IE-中断允许控制寄存器中断允许控制寄存器,IP-IP-中断优先级控制寄存器,中断优先级控制寄存器,SCON-SCON-串行口控制寄存器。串行口控制寄存

9、器。(1)定时控制寄存器TCON D7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0中断请求标志触发方式选择0 低电平1 下降沿l注意:电平触发时,在中断返回前应撤除中断源。注意:电平触发时,在中断返回前应撤除中断源。(2)串行口控制寄存器SCON D7D6D5D4D3D2D1D0TIRI串行中断请求标志(3)中断允许控制寄存器IE D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0(4)中断优先级控制寄存器(IP)D7D6D5D4D3D2D1D0PSPT1PX1PT0PX00 禁止1允许0 低级别1高级别实现两级控制 注意:复位时,禁止所有中断每一中断源可编程

10、为高优先级或低优先级中断,以实现二级嵌套。默认的优先次序为:INT0、C/T0、INT1、C/T1、串行口中断(依次从高到低)注意:响应中断后,CPU并不清零中断标志位,必须软件清零。中断响应 响应条件-CPU要响应中断需满足下列条件:无同级或高级中断正在服务;当前指令周期结束,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行;若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。响应过程-单片机响应中断后,自动执行下列操作:置位中断优先级有效触发器,即关闭同级和低级 中断:断点入栈,也就是当前程序计数器PC中内容压入 堆栈,以便执行完中断服

11、务程序后返回原程序继 续执行;根据中断源入口地址转入相应中断服务程序执行(即自动执行一条长转移指令)。响应时间-从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。(1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL)(2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续

12、执行主程序。中断系统初始化开相应中断源的中断;(IE)设定中断优先级;(IP)若为外部中断,设定外部中断的触发方式。中断处理中断处理包括两个部分:保护现场和中断处理。保护现场:就是将需要在中断服务程序中使用而又不希望破坏其中原来内容的工作寄存器压入堆栈保护起来,等中断服务完成后再从堆栈中弹出以恢复原来的内容。通常需要保存的寄存器有PSW、A以及其他工作寄存器。中断处理 中断服务程序编写时需要注意的几点:1、8051各中断源入口地址之间仅相隔8个单元,如果中断程序的长度超过8个地址单元,应在中断入口地址处安排一条转移指令,转到其他有足够空余存储单元的地址空间。2、若在执行当前中断服务程序时需要禁

13、止更高级中断源,则要用软件指令关闭中断,在中断返回之前再开放中断。3、在保护和恢复现场时,为了不使现场信息受到破坏或造成混乱,保护现场之前应关中断,若需要允许高级中断,则应在保护现场之后再开中断。同样在恢复现场之前也应先关中断,恢复现场之后再开中断。4、及时清除那些不能被硬件自动清“0”的中断请求标志,以免产生错误的中断。中断应用举例8051单片机只有2个外部中断源,当实际应用中需要多个外部中断源时,可采用硬件请求和软件查询相结合的办法进行扩展,把多个中断源通过“或非”门接到外部中断输入端,同时又连到某个I/O端口,这样每个中断源都能引起中断,然后在中断服务程序中通过查询I/O端口的状态来区分

14、是哪个中断源引起的中断。若有多个中断源同时发出中断请求,则查询的次序就决定了同一优先级中断中的优先级。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。一、定时器/计数器的功

15、能 在特殊功能寄存器TMOD中,有一个控制位(CT),分别用于控制定时/计数器工作在定时器方式还是计数器方式。1.1.定时功能定时功能-计数输入信号是内部时钟脉冲,每个机器周期使技数器的值加1。2.2.计数功能计数功能-计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。二、定时器计数器的特殊功能寄存器 与定时器计数器有关的特殊功能寄存器有:(1)(1)工作方式控制寄存器工作方式控制寄存器TMODTMODT1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE门控

16、位C/T计数/定时选择M1 M0工作方式选择(2)(2)定时器控制寄存器定时器控制寄存器TCONTCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中断请求标志触发方式选择启动定时/计数器0 低电平1 下降沿0 停止1 启动计数脉冲输入三、定时器计数器的工作方式 定时器计数器共有四种工作方式(1)方式013位方式 TF0T0TR0GATEINT011&C/T=1振荡器1/12C/T=0TL0 TH08位低5位13位计数器定时器计数器(2)方式116位方式 振荡器1/12TL0 TH0TF011&T0TR0GATEINT0C/T=0C/T=18位8位16位计数

17、器(3)方式28位自动装入时间常数方式 TF0振荡器1/1211&T0TR0GATEINT0C/T=0C/T=1TL0 TH0(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位计数器,如下图所示。位计数器,如下图所示。定时器定时器T1T1无操作方式无

18、操作方式3 3状态,若将状态,若将T1T1设置为方式设置为方式3 3,就,就会使会使T1T1立即停止计数,也就是保持原有的计数值,其作用立即停止计数,也就是保持原有的计数值,其作用相当于使相当于使TR1=0TR1=0,封锁与门,断开计数开关,封锁与门,断开计数开关K K。在在定定时时器器T0T0用用作作方方式式3 3时时,T1T1仍仍可可设设置置为为方方式式0 02 2。由由于于TR1TR1和和TF1TF1被被定定时时器器T0T0(TH0TH0)占占用用,计计数数器器开开关关K K已已被被接接通通,此此时时仅仅用用T1T1控控制制位位C/C/切切换换其其定定时时器器或或计计数数器器工工作作方方

19、式式就就可可使使T1T1运运行行。寄寄存存器器(8 8位位、1313位位或或1616位位)溢溢出出时时,只只能能将将输输出出送送入入串串行口或用于不需要中断的场合。行口或用于不需要中断的场合。在在一一般般情情况况下下,当当定定时时器器T1用用作作串串行行口口波波特特率率发发生生器器时时,定定时时器器T0才才设设置置为为工工作作方方式式3。此此时时,常常把把定定时时器器T1设置为方式设置为方式2,用作波特率发生器,见下图所示。,用作波特率发生器,见下图所示。(1)计数器初值的计算计数器初值的计算 设计数器的最大计数值为M(根据不同工作方式,M可以是213、216或28),则计算初值X的公式如下:

20、X=M-要求的计数值 四、定时/计数器常数的计算(2)(2)定时器初值的计算定时器初值的计算 当当C/=0时,定时器计数器时,定时器计数器T0或或T1被被选为定时器。此时必须给定时器送定时初值,选为定时器。此时必须给定时器送定时初值,这个初值也是送到这个初值也是送到 TH 和和 TL 中的。中的。T0或或T1在在该定时初值的基础上进行加法计数,并当计数该定时初值的基础上进行加法计数,并当计数器从全器从全“1”变为全变为全“0”时自动产生定时溢出时自动产生定时溢出中断请求。中断请求。在定时器方式下,计数器对机器周期进行计数。因此,在定时器方式下,计数器对机器周期进行计数。因此,定时器定时时间定时

21、器定时时间T的计算公式为:的计算公式为:T=(MX)T机器机器式中,式中,M为模值,和定时器的工作方式有关(同上);为模值,和定时器的工作方式有关(同上);X为为定时初值定时初值;T机器机器是机器周期。是机器周期。(2)定时器初值的计算 定时器定时初值计算公式也可以写成:X=M-(要求的定时值)/(12/fosc)式中,M为定时器模值(根据不同工作方式,M可以是213、216或28)设设 fosc=12 MHz,则最大定时时间为:则最大定时时间为:方式方式 0时:时:Tmax=213 1s=8192s =8192 ms方式方式1时:时:Tmax=216 1s=65536s =65536ms方式

22、方式2时:时:Tmax=28 1s=256s =0256ms方式方式3时:时:Tmax=28 1s=256s =0256ms定时器在不同方式下的最大定时时间:五、定时器/计数器的应用定时器/计数器在应用前需要进行初始化:确定TMOD控制字:编程时将控制字送TMOD;计算定时器/计数器的计数初值:编程时将计数初值送TH、TL;开中断(如果使用中断方式):TR位置位控制定时器的启动和停止。例1:假设单片机的振荡频率假设单片机的振荡频率fosc=6MHz,现要,现要求产生求产生1ms的定时,试分别计算定时器的定时,试分别计算定时器T1在方式在方式0、方式、方式1和方式和方式2时的初值。时的初值。方式

23、方式0 0:最大计数值为:最大计数值为M=2M=21313,因此定时器的初值应为,因此定时器的初值应为X=2X=21313-(1-(11010-3-3)/(12/(6)/(12/(61010-6-6)=7692D)=7692D=1111000001100B=1111000001100B其中高其中高8 8位为位为TH1TH1的初值,即的初值,即F0HF0H,低,低5 5位为位为TL1TL1的初值的初值注意注意,这里,这里TL1TL1的初值应为的初值应为00001100B00001100B即即0CH0CH,而不是,而不是60H60H,因为在方式时,因为在方式时,TL1TL1的高的高3 3位是不用的

24、,应都位是不用的,应都设为设为0 0。方式方式1:最大计数值为:最大计数值为M=216,因此定时器的,因此定时器的初值应为初值应为X=216-(110-3)/(210-6)=65036D=1111111000001100B=FE0CH此时高此时高8位位TH1的初值为的初值为FEH,低,低8位位TL1的的初值为初值为0CH。方式方式2 2:最大计数值为:最大计数值为M=2M=28 8 fosc=6 MHz fosc=6 MHz,T T机器机器=2=2 s s方式方式2 2的最大定时时间的最大定时时间=256=256T T机器机器 =256=2562 2 s s =512 =512 s1ms s1

25、ms 计算得到的初值为负值,说明当计算得到的初值为负值,说明当fosc=6MHzfosc=6MHz时,时,采用方式采用方式2 2不能直接产生不能直接产生1ms1ms的定时。的定时。例例2:若单片机时钟频率:若单片机时钟频率fosc=12 MHz,编程在,编程在P1.0引脚输引脚输出周期为出周期为100ms的方波(用的方波(用T0)。)。1 1初值计算初值计算 fosc=12 MHz,T机器=1s 又P1.0引脚输出100ms的方波,T0应定时50ms,T0选 为定时器、方式1。设定时初值为X,则X=216(50ms1s)=15536=3CB0H TL0=0B0H TH0=3CH 2 2TMOD

26、TMOD寄存器初始化值的确定寄存器初始化值的确定 TMOD=00000001B=01H 3 3程序清单程序清单 i 用查询方式编程 ii 用中断方式编程i i 用查询方式编程用查询方式编程(C51)ii ii 用中断方式编程用中断方式编程(C51)(C51)例例3:用用T1对对T1引脚输入的脉冲信号计数,每计引脚输入的脉冲信号计数,每计1024个数,将个数,将 P1.7引脚取反。引脚取反。(要求用方式(要求用方式0 0实现)实现)1 1初值计算初值计算 设设T1T1计计10241024个数的初值为个数的初值为X X,则,则X=2X=213131024=7168=11100000 00000B1

27、024=7168=11100000 00000B TL1=00H TL1=00H TH1=0E0HTH1=0E0H 2 2TMODTMOD寄存器初始化值的确定寄存器初始化值的确定 TMOD=01000000B=40HTMOD=01000000B=40H 3 3程序清单程序清单 i i 用查询方式编程用查询方式编程(C51)ii ii 用中断方式编程用中断方式编程(C51)(C51)例4:若单片机时钟频率若单片机时钟频率fosc=fosc=6 MHz 6 MHz,用,用T0T0、方式、方式2 2,产生,产生100100 s s的定时,使的定时,使P1.7P1.7引脚输出周期为引脚输出周期为200

28、200 s s的连续正方波。的连续正方波。1 1初值计算初值计算 fosc=6 MHzfosc=6 MHz,T T机器机器=2=2 s s 设设T0T0定时定时100100 s s的初值为的初值为X X,则,则X=28X=28(100100 s s2 2 s s)=206=0CEH=206=0CEH TL0=0CEH TH0=0CEH TL0=0CEH TH0=0CEH 2 2TMODTMOD寄存器初始化值的确定寄存器初始化值的确定 TMOD=00000010B=02HTMOD=00000010B=02H 3 3程序清单程序清单 i i 用查询方式编程用查询方式编程 用中断方式编程:用中断方式

29、编程:例例5:已知单片机时钟频率:已知单片机时钟频率fosc=6 MHz。若。若T1作为波特率发生作为波特率发生器,系统中又需要两个独立的器,系统中又需要两个独立的8位定时器。将位定时器。将T0选为方式选为方式3,TL0和和TH0分别产生分别产生200s和和400s的定时中断,使的定时中断,使P1.0和和P1.1引脚分别产生周期为引脚分别产生周期为400s和和800s的正方波的正方波(注:(注:T1作为作为波特率发生器时,多工作于定时器方式波特率发生器时,多工作于定时器方式2)。)。1 1初值计算初值计算 fosc=6 MHzfosc=6 MHz,T T机器机器=2=2 s s 设设 TL0T

30、L0定时定时200200 s s的初值为的初值为X1X1,TH0TH0定时定时400400 s s的初值为的初值为X2X2 则则 X1=28X1=28(200200 s s2 2 s s)=156=9CH=156=9CH X2=28 X2=28(400400 s s2 2 s s)=56=38H=56=38H TL0=9CH TL0=9CH TH0=38HTH0=38H 2 2TMODTMOD寄存器初始化值的确定寄存器初始化值的确定 TMOD=00000011B=03HTMOD=00000011B=03H 3 3程序清单程序清单 例例6:设单片机时钟频率:设单片机时钟频率fosc=6MHz,请

31、用定时器,请用定时器T0,使,使P1.0引引脚输出周期为脚输出周期为400s、占空比为、占空比为1:10的矩形波的矩形波。2 2TMODTMOD寄存器初始化值的确定寄存器初始化值的确定 TMOD=00000010B=02HTMOD=00000010B=02H 3 3程序清单程序清单 例例6:设单片机时钟频率:设单片机时钟频率fosc=6MHz,请用定时器,请用定时器T0,使,使P1.0引引脚输出周期为脚输出周期为400s、占空比为、占空比为1:10的矩形波的矩形波。(另一种解法)(另一种解法)2 2TMODTMOD寄存器初始化值的确定寄存器初始化值的确定 TMOD=00000010B=02HT

32、MOD=00000010B=02H 3 3程序清单程序清单 例7:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500s的方波脉冲,并由P1.0 输出。试以中断方式实现。8051P1.0P1.0500s TMOD确定T1控制T0控制XXXX1000M0M1C/TGATEM0M1C/TGATE控制字10H 要产生500s 的方波脉冲,只需在P1.0端以250s为间隔,交替输出高低电平即可实现。为此,定时间应为250s 。使用6z晶振,则一个机器周期为2s,设待求定时器初值为,则:计算定时器的初值;(216X)210-6=25010-6 即216X=125 X216-125=10000H-7DH 0FF83H所以,初值为:TH1=0FFH,TL1=83H 采用中断方式:编程时将IE控制字设置为 88H,实现开中断。由定时器控制寄存器TCON中的TR1位控制定 时器的启动和停止。TR11,启动;TR10,停止。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com