《《单片机中断系统》PPT课件》由会员分享,可在线阅读,更多相关《《单片机中断系统》PPT课件(34页珍藏版)》请在金锄头文库上搜索。
1、LOGO第四章第四章 单片机单片机 中断系统中断系统 http:/ /计数器溢出中断计数器溢出中断串行发送结束请求中断串行发送结束请求中断串行接收有效请求中断串行接收有效请求中断TLi(8位位)THi(8位位)TFi中断中断控制控制BAC/T=0振荡器振荡器1/12&1TiTRiGATEINTiC/T=107 07http:/ http:/ TF0/TF1:定时/计数溢出标志位。用于定时/计数器控制。http:/ v串行控制寄存器串行控制寄存器SCON的字节地址为的字节地址为98HvTI: 串行口发送中断请求标志位。当发送完一帧串行数据后,串行口发送中断请求标志位。当发送完一帧串行数据后,由硬
2、件置由硬件置“1”;在中断响应,转向中断服务程序后,接口;在中断响应,转向中断服务程序后,接口硬件不能自动将硬件不能自动将TI或或RI清零,需用户用软件清零,来撤消清零,需用户用软件清零,来撤消中断。中断撤消必须在下一个中断到来之前完成。中断。中断撤消必须在下一个中断到来之前完成。 vRI:串行口接收中断请求标志位。当接收完一帧串行数据串行口接收中断请求标志位。当接收完一帧串行数据后,由硬件置后,由硬件置“1”;在中断响应,转向中断服务程序后,;在中断响应,转向中断服务程序后,需用软件清需用软件清“0”。串行中断请求由。串行中断请求由TI和和RI的逻辑或得到。的逻辑或得到。 SM0SM0SM1
3、SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRITCONhttp:/ SETB IT0 SETB EX0 SETB EA SETB PT0v中断中断C程序初始化程序初始化EX0=1;IT0=1; EA=1;PX0=1;http:/ 中断服务回来继续看返回主程序中断返回http:/ v中断请求就是中断源向中断请求就是中断源向CPU申请中断的过程,即建立中断请申请中断的过程,即建立中断请求标志位求标志位IE0、IE1、TF0、TF1、TI/RI的过程的过程v外部中断请求:经由引脚外部中断请求:经由引脚P3.2、P3.3向向CPU申请中断的过申请中断的过程。程。外部中断请求有两
4、种方式:低电平触发和下降沿触发。通过设置触发方式控制位IT0、IT1进行选择。IT0=0,表示为低电平触发方式;IT0=1,表示为下降沿触发方式。IT1的情况类似。 v内部中断请求:内部中断请求: 当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。 T1的情况类似。当串行口发送结束时,使TI=1;当串行口接收结束时,使RI=1。 CPU响应中断后,由软件将TI/RI位清0。http:/ CPU对中断请求进行判断,形成中断矢量,转入相应的对中断请求进行判断,形成中断矢量,转入相应的中断服务程序的过程叫中断响应。中断服务程序的过程叫中断响应。 1)CPU响应中断的基
5、本条件响应中断的基本条件有中断源提出中断请求;中断总允许位EA1,即CPU中断开放;申请中断的中断源的中断允许位为1,即中断源开放;CPU没有响应同级或更高优先级的中断;当前指令执行结束;如果正在执行的指令是RETI或是访问IE、IP指令。http:/ v单片机在每个机器周期的单片机在每个机器周期的S5P2期间,顺序采样期间,顺序采样每个中断源,建立中断请求标志。在下一个机器每个中断源,建立中断请求标志。在下一个机器周期按优先级查询中断标志,如查询到有中断标周期按优先级查询中断标志,如查询到有中断标志为志为1,则按优先级进行中断响应。,则按优先级进行中断响应。v硬件将程序计数器硬件将程序计数器
6、PC的当前内容压入堆栈保护,的当前内容压入堆栈保护,然后将对应的中断矢量装入程序计数器然后将对应的中断矢量装入程序计数器PC,使程,使程序转向相应的中断入口。这相当于执行一条长调序转向相应的中断入口。这相当于执行一条长调用指令。用指令。http:/ CPU响应中断后,根据不同的中断源,形成不同的中断矢量,执行响应中断后,根据不同的中断源,形成不同的中断矢量,执行相应的中断服务应用程序。相应的中断服务应用程序。CPU执行中断服务应用程序的过程,执行中断服务应用程序的过程,就是中断处理过程。中断处理一般包括保护现场、中断服务、恢就是中断处理过程。中断处理一般包括保护现场、中断服务、恢复现场三部分。
7、复现场三部分。关中断关中断保护现场保护现场开中断开中断中断服务中断服务恢复现场恢复现场开中断开中断中断返回中断返回断点地址由堆栈弹出断点地址由堆栈弹出保保护护和和恢恢复复现现场场之之后后开开中中断断,是是为为了了允允许许响响应应更高级别的中断。更高级别的中断。保保护护现现场场和和恢恢复复现现场场的的过过程程中中不不允允许许中中断断,以以免免现现场场遭遭到到破坏。破坏。关中断关中断http:/ 1)中断返回的过程)中断返回的过程 在中断服务程序的最后,遇到在中断服务程序的最后,遇到C语言中断服务程序的语言中断服务程序的“”:将相应的优先级状态触发器清零;将相应的优先级状态触发器清零;恢复断点地址
8、,即从堆栈中弹出栈顶的两个字节到恢复断点地址,即从堆栈中弹出栈顶的两个字节到PC,从,从而返回到断点处;而返回到断点处;http:/ 在中断返回(执行在中断返回(执行RETI)前,必须撤除中断请求,即将中)前,必须撤除中断请求,即将中断标志位清除,否则当断标志位清除,否则当CPU返回到主程序后会错误地再一返回到主程序后会错误地再一次引起中断响应。次引起中断响应。 (1)T0/T1和边沿触发的和边沿触发的INT0/INT1:自动撤销:自动撤销(2)电平触发的电平触发的INT0/INT1:CPU无法直接控制,需要在无法直接控制,需要在引脚处加硬件撤销中断请求。引脚处加硬件撤销中断请求。(3)串行口
9、中断:串行口中断:CPU响应中断后不能用硬件清除中断标志响应中断后不能用硬件清除中断标志位,必须由用户在中断服务程序中用指令来清除相应的中位,必须由用户在中断服务程序中用指令来清除相应的中断标志。断标志。3)中断响应时间中断响应时间 MCS-51单片机响应中断的最短时间为单片机响应中断的最短时间为3个机器周期,最长个机器周期,最长为为8个机器周期。个机器周期。http:/ ORG 0000H LJMP START ORG 0003H LJMP INT0_FUNC ORG 0050HSTART: SETB IT0 MOV A, IPH ORL A, #01H MOV IPH, A ORG 020
10、0HINT0_FUNC: PUSH PSW PUSH Acc SETB RS0 CLR RS1 . POP Acc POP PSW RETI END SETB PX0 SETB EX0 SETB EA LCALL MYFUNC . SJMP $ ORG 0100HMYFUNC: . REThttp:/ void EX_INT0() interrupt 0 using 1LED=LED; /控控制制LED亮灭亮灭void main()LED=1;EA=1;EX0=1;IT0=1;while(1);#include#define uchar unsigned char#define uint un
11、signed intsbit LED=P00;void main()LED=1;EA=1;EX0=1;IT0=1;while(1);void main()LED=1;EA=1;EX0=1;IT0=1;while(1);http:/ 例:例:试编程,外部中断试编程,外部中断0采用下降沿触发,当外部采用下降沿触发,当外部中断中断0到来时,到来时,P1的的8个端口输出为个端口输出为00H;外部中外部中断断1采用低电平沿触发,当外部中断采用低电平沿触发,当外部中断1到来时,到来时,P1的的8个端口输出为个端口输出为0FFH;分析外部中断;分析外部中断0会会否打断外部中断否打断外部中断1?http:/
12、练习:练习:试编程,目前单片机的试编程,目前单片机的P1在数在数55H和和0AAH之间进行跳变,外部中断之间进行跳变,外部中断0采用下降沿触采用下降沿触发,当外部中断发,当外部中断0到来时,到来时,P1的的8个端口均在个端口均在0和和1之间进行跳变,跳变之间进行跳变,跳变10秒后退出中断。秒后退出中断。http:/ 全自动洗衣机工作过程中,当遇到意外事件发生,如衣物缠绕,全自动洗衣机工作过程中,当遇到意外事件发生,如衣物缠绕,或需要干预洗衣进程时,如需要添加消毒液,就需要暂停当前或需要干预洗衣进程时,如需要添加消毒液,就需要暂停当前洗衣进程,处理这些事件。假设全自动洗衣机有洗衣进程,处理这些事
13、件。假设全自动洗衣机有8个流程,用个流程,用8个指示灯表示;用个指示灯表示;用8个按键进行选择控制。当某个流程工作时,个按键进行选择控制。当某个流程工作时,对应的指示灯点亮。当按下按键对应的指示灯点亮。当按下按键K时,中断正在进行的流程,时,中断正在进行的流程,对应的流程指示灯闪烁,洗衣机进入等待状态;再次按下对应的流程指示灯闪烁,洗衣机进入等待状态;再次按下K时,时,指示灯停止闪烁,变成点亮状态,表示洗衣机恢复原来被中断指示灯停止闪烁,变成点亮状态,表示洗衣机恢复原来被中断的洗衣流程。的洗衣流程。http:/ delayMs(unsigned int i)/定义延时程序定义延时程序 unsi
14、gned int j;/定义延时变量定义延时变量 while(i-)/延时外循环延时外循环 for(j = 0; j 125; j+);/延时外循环延时外循环 main()/主程序主程序 P2=0;/关闭关闭LED IT0=1;/设置中断设置中断0边沿触发边沿触发 EX0=1;/打开中断打开中断0允许允许EA=1;/打开打开CPU中断允许中断允许while(1)/设置主循环设置主循环P2=P1;/读取按键状态送读取按键状态送LED显示显示delayMs(20);/延时延时 exint0() interrupt 0/外中断外中断0服务程序服务程序 do/中断循环中断循环EA=0;/关中断关中断P2=0;/关闭关闭LEDdelayMs(20); /延时延时P2=P1;/读取按键状态送读取按键状态送LED显示显示delayMs(20);/延时延时while(P32=1);/循环闪烁循环闪烁EA=1;/开中断开中断