No.7中断、定时系统及其应用.ppt_第1页
No.7中断、定时系统及其应用.ppt_第2页
No.7中断、定时系统及其应用.ppt_第3页
No.7中断、定时系统及其应用.ppt_第4页
No.7中断、定时系统及其应用.ppt_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

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

文档简介

1、第七讲,中断、定时系统及其应用,中断系统,1中断的概念,2中断系统应具有的功能: 1) 实现中断与返回 2) 能实现优先权排队 3) 高级中断能中断低级中断,3中断嵌套,4中断的优点 分时操作 实时处理 故障处理,单片机有两级中断嵌套,5中断源 51单片机共有5个中断源:外部中断0、外部中断1、定时/计数器中断0、定时/计数器中断1、串行口中断 5个中断源的中断服务有各自的入口地址: 5个中断源有系统默认的优先级顺序:,入口地址,优先级,中断号 0 1 2 3 4,6. 中断的控制与实现 中断的控制与实现是通过4个与中断相关的特殊功能寄存器配置来完成的,它们分别是: 定时/计数器控制寄存器TC

2、ON 串行口控制寄存器SCON 中断允许控制寄存器IE 中断优先级控制寄存器IP,定时/计数器控制寄存器TCON(88H) 它锁存2个定时/计数器的溢出中断标志及外部中断/INT0和/INT1的中断标志 当单片机复位后,TCON被清0,则CPU关中断,所有中断请求被禁止。,1)IT0/IT1:外部中断0/1触发方式控制位。 IT0/1=0,为电平触发方式,(低电平有效) 要求电平至少保持一个机器周期; 中断服务结束前必须撤销低电平。 IT0/1=1,为边沿触发方式(下降沿有效) 中断请求信号的高、低电平都应至少维持一个机器周期,确保电平变化能被采样; 适合以负脉冲形式输入的外部中断请求。,2)

3、IE0/1:外部中断0/1中断请求标志位。 当IE0/1=1时,表示/INT0/1向CPU请求中断。,3)TF0/1:定时/计数器T0/1溢出中断请求标志位。 启动T0/1后,定时/计数器T0/1从初值开始加1计数,当最高位产生溢出时,由硬件将TF0/1置1,向CPU申请中断,CPU响应TF0/1中断时,TF0/1由硬件清0,也可由软件清0。,TR1、TR0与中断无关,仅与定时/计数器T1和T0有关,中断允许控制寄存器IE(A8H) 在51系列单片机中,开中断与关中断是由中断允许控制寄存器IE控制的。,1)EA:中断允许总控制位 EA=0,CPU关总中断,屏蔽所有中断请求。 EA=1,CPU开

4、总中断,这时只要各中断源中断允许未被屏蔽,当中断到来时,就有可能得到响应。 2)ES:串行口中断允许控制位。 ES=0,禁止串行口中断; ES=1,允许串行口中断。,3)ET1/0:定时器1/0中断允许控制位。 ET1/0=0,禁止定时/计数器T1或T0中断; ET1/0=1,允许定时/计数器T1或T0中断。 4)EX1/0:外部中断1/0的中断允许控制位。 EX1/0=0,禁止/INT0(/INT1)外部中断; EX1/0=1,允许/INT0(INT1)外部中断。,中断优先级控制寄存器IP(B8H) 8051单片机有两个中断优先级.对于每一个中断请求源可设置为高优先级或低优先级中断。中断优先

5、级控制寄存器IP就是用来设置中断源中断优先级的。,1)PS:串行口中断优先级控制位。 PS=0,设置串行口中断为低优先级; PS=1,设置串行口中断为高优先级。 2)PT1(PT0):定时/计数器T1(T0)中断优先级控制位。 PT1(PT0)=0,设置定时/计数器T1(T0)为低优先级; PT1(PT0)=1,设置定时/计数器T1(T0)为高优先级。 3)PX1(PX0):/INT0(/INT1)中断优先级控制位。 PX1(PX0)=0,设置外部中断1(外部中断0)为低优先级; PX1(PX0)=1,设置外部中断1(外部中断0)为高优先级。,7.中断优先级的3条原则: CPU同时接受到几个中

6、断时,首先响应优先级别最高的中断请求; 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断; 正在进行的低优先级中断服务,能被高优先级中断请求所中断。,8.中断的处理过程 1).中断响应的条件 CPU中断响应的条件是: 中断源有中断请求 该中断被允许响应该中断的中断允许位为1 CPU开总中断 同时满足这3个条件时,CPU才有可能响应中断。 2).外部中断响应时间 外部中断/INT0和/INT1电平在每一个机器周期的S5P2被采样并锁存到IE0、IE1中,这个新置入的IE0、IE1的状态等到下一个机器周期才被查询电路查询到,如果中断被激活,并且满足响应条件,CPU接着执行一条由硬件生成的

7、子程序调用指令以转到相应的中断服务子程序入口,该硬件调用指令本身需要两个机器周期,这样,从产生外部中断请求到开始执行中断服务子程序的第一条指令之间至少需要3个完整的机器周期。,3)中断响应过程 将相应的优先级状态触发器置1(以阻断后来的同级或低级的中断请求); 执行一条硬件LCALL指令,即把程序计数器PC的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入PC; 执行中断服务程序。 4)中断返回 中断服务程序的最后一条指令必须是中断返回指令RETI,用来恢复断点地址。 5)外部中断的触发方式 外部中断请求有2种触发方式:电平触发和边沿脉冲触发。,9.中断服务程序的设计步骤 1)中断的初始

8、化 1)将中断允许控制寄存器IE的相应位置1,允许相应的中断源中断; 2)当有多个中断源共存时,根据要求设置中断优先级控制寄存器的相应位,确定并分配所使用的中断源的优先级。 3)对外部中断源,要设置中断请求的触发方式IT1和IT0,以确定采用的是电平触发方式还是边沿触发方式。 2)编写中断服务程序,处理中断请求 1)关中断 2)现场保护 3)开中断 4)中断处理 5)关中断 6)现场恢复 7)开中断 8)中断返回,1)关中断 2)现场保护 3)中断处理 4)现场恢复 5)开中断 6)中断返回,多个中断源,一个中断源,10.外部中断的应用举例 外部中断源扩展设计 中断和查询结合的方法,外部中断的

9、一般应用 如图所示,按键K接至外部中断INT1,试编写程序使得按一次键LED点亮,再按一次,LED熄灭,循环往复。,#include #defineucharunsigned char sbitLED=P00; bitflag;/*定义按键切换标志*/ /*中断服务程序*/ void int1_int ()interrupt 2 flag=!flag;/*改变中断按键标志 */ LED=flag;/*控制LED输出*/ /*主程序*/ void main() flag=1;/*初始化按键切换标志*/ LED=flag;/*初始化LED灭*/ EA=1;/*开总中断*/ EX1=1;/*允许外部

10、中断1中断*/ IT1=1;/*设置为边沿触发方式*/ while(1);/*等待中断*/ ,中断扩展方法总结,1.定时器计数器扩展 2.中断与查询相结合的扩展 3.使用优先编码器的扩展(74LS148) 4.使用可编程中断控制器芯片8259A,外部中断请求,P1口线,中断优先级由接线确定,定时器/计数器,51系列单片机内部有两个16位可编程定时器/计数器,即定时器T0和定时器T1。52子系列中除这两个定时器外,还有一个定时器/计数器T2,后者的功能比前者强。它们都具有定时和计数的功能,并有4种工作方式可供选择。,1定时/计数器的工作原理 定时/计数器T0和T1的实质是加1计数器,即每输入一个

11、脉冲,计数器加1,当加到计数器全为1时,再输入一个脉冲,就使计数器归零,且计数器的溢出使TCON中的标志位TF0或TF1置1,向CPU发出中断请求。 根据输入的计数脉冲来源不同,把它们分成定时与计数两种功能 计数脉冲来源于片外计数功能 计数脉冲来源于片内时钟振荡定时功能 共有4中不同的工作方式,用于不同定时时间长度的选择,2.定时/计数器的控制与实现 51单片机定时/计数器的控制和实现由两个特殊功能寄存器TMOD和TCON完成。 TMOD用于设置定时/计数器的工作方式; TCON用于控制定时/计数器的启动和中断申请。,1)GATE:门控位。 GATE=0时,只要软件使TR0或TR1置1就可启动

12、定时器,与/INT0或/INT1引脚的电平状态没关系。 GATE=1时,只有/INT0或/INT1引脚为高电平且TR0或TR1由软件置1后,才能启动定时器。,工作方式寄存器TMOD TMOD是一个特殊的专用寄存器,用于设定T0和T1的工作方式。,控制寄存器TCON TCON既参与中断控制,又参与定时控制。 其低4位用于控制外部中断,高4位用于控制定时/计数器的启动和中断申请。,TR1和TR0:定时/计数器运行控制位。 TR1(TR0)=0时,定时/计数器停止工作; TR1(TR0)=1时,启动定时/计数器工作; TR1和TR0根据需要,由用户通过软件将其清0或置1。,3.定时/计数器的工作方式

13、 T0有4种工作方式(方式0、1、2、3) T1有3种工作方式(方式0、1、2),方式0 当TMOD的M1M0=00时,定时/计数器工作于方式0。 方式0是一个13位的计时器/计数器,16位的寄存器只用了高8位(TH0/1)和TL0/1的低5位,高3位未用。 计数时,TL0/1溢出时向TH0/1进位,TH0/1溢出时,置位TF0/1,向CPU发出中断申请。,方式0,计数范围或定时范围比较小,而且计数初值容易装错,实际应用中都用方式1代替,方式1 当M1M0=01时,定时/计数器工作于方式1。 该方式为16位定时/计数器,TH0/1作为高8位,TL0/1作为低8位,计数范围0000HFFFFH。

14、,方式1时,用于定时工作方式,定时时间由下式确定: t=NTcy=(216-X) Tcy =(65536- X) Tcy X为计数初值,N为计数个数,Tcy是计数脉冲周期 从而可计算出计数初值X: X=216- tTcy=65536-tTcy,计数脉冲周期Tcy:,晶振频率fosc即振荡频率,12分频后计数脉冲频率,故计数脉冲周期为,方式2 当M1M0=10时,定时/计数器工作于方式2 该方式为自动重装初值的8位定时/计数器,寄存器TH0/1为8位初值寄存器,保持不变,TL0/1作为8位定时/计数器。,当TL0/1溢出时,由硬件将TF0/1置1,向CPU发出中断请求,而溢出脉冲打开TH0/1和

15、TL0/1之间的三态门,将TH0/1中的初值自动送入TL0/1。TL0/1从初值重新开始加1计数,直至TR0/1=0才会停止。 方式2用于定时工作方式,定时时间由下式确定: t=NTcy=(28-X) Tcy =(256- X) Tcy X为计数初值,N为计数个数。 从而可计算出计数初值X: X=28- tTcy=256-tTcy,方式3 当M1M0=11时,定时/计数器工作于方式3。 该方式只适用于定时/计数器T0 此时T0分为2个独立的8位计数器:TH0和TL0 TL0使用T0的状态控制位C/T、GATE、TR0、/INT0,既可作定时也可作计数; 而TH0被固定为1个8位定时器,不能对外

16、部脉冲计数,并使用定时器T1的控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。,4.定时/计数器的综合应用 1)确定工作方式,正确设置IP、IE、TCON、TMOD,对定时器/计数器和中断系统初始化 对TMOD赋初值,以确定T0和T1的工作方式; 计算定时/计数器初值,并填充定时/计数器(THX和TLX); 当定时/计数器工作于中断方式时,则进行中断初始化即对中断允许控制寄存器IE、中断优先级控制寄存器IP赋初值; 置位TR0或TR1,启动定时/计数器开始定时或计数。 2)计算计数初值,并将计数初值装入定时器/计数器中 3)启动定时器/计数器,例1:假设某51应用系统的2个外部中断

17、源已被占用,现要求增加1个外部中断源,并当外部中断源有中断请求时控制P1.0引脚输出1个周期为1ms的方波。假设晶振频率为6MHz。,定时器/计数器可以做中断源,产生中断的原因:计数溢出,故,可将计数初值设为FFH,当外部有中断请求时即有计数脉冲输入,定时器/计数器就会发生计数溢出,从而产生中断请求,思路分析:,输出方波的思路:输出状态取反,T0作外部中断源输入,作计数器 T1作定时器,定时时间为0.5ms,T0计数初值为FFH,T1计数初值为06H,T0工作方式1,T1工作方式2,自动重装计数初值,#include sbit pulse_out=P10; unsignedcharflag;/

18、*定义T0产生中断标志位*/ /*定时器初始化程序*/ init_timer() TMOD=0X25;/*T0计数,方式1;T1定时,方式2*/ TH0=0XFF; /*T0置初值*/ TL0=0XFF; TH1=0X06; /*T1置初值*/ TL1=0X06; IE=0X8A; /*开中断*/ TR0=1; /*启动T0*/ ,/*T0中断服务程序*/ void T0_int() interrupt 1 TR0=0;/*T0停止工作*/ flag=1;/*置1中断产生标志位*/ /*T1中断服务程序*/ void T1_int() interrupt 3 pulse_out=!pulse_

19、out;/*脉冲输出位取反*/ ,/*主程序*/ main() init_timer();/*调用定时器初始化程序*/ flag=0;/*T0产生中断标志位清0*/ while(!flag); /*等待T0产生中断*/ TR1=1;/*T0中断后,启动T1*/ while(1);/*等待T中断*/ ,例2.要求:利用定时/计数器T0的方式1,产生一个50Hz的方波,此方波由P1.0引脚输出,假设晶振频率为12MHz。,1)确定定时器初值X: 晶振为12MHz 机器周期Tcy =(121)/(12106)=1s 计数初值X=216- tTcy=65536-0.01s1s=65536-10000=55536=D8F0H 即应将D8H送入TH0中,F0H送入TL0中。 2)根据要求求得T0的方式控制字TMOD: GATE=0, C/T=0,M1M0=01 可得方式控制字TMOD=01H,查询方式: #include sbit pulse_ou

温馨提示

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

评论

0/150

提交评论