《(11)--5 IAP15W4K58S4单片机中断系统.ppt》由会员分享,可在线阅读,更多相关《(11)--5 IAP15W4K58S4单片机中断系统.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章单片机的中断系统5.1中断系统概述2 所谓中断是指程序执行过程中,外部或内部事件通过硬件打断程序的执行,使其转向处理突发的中断服务程序,完成后,CPU再返回到原先被中止的位置,继续执行主程序。什么是中断?中断系统的几个概念断点(中断源)突发事件当前程序当前程序中断服务函数中断请求中断返回断点:当前程序被中止的位置。中断源:引起CPU中断的根源或原因。中断请求:中断源向CPU提出的处理请求。中断响应:CPU作出判断响应中断请求的过程。中断服务:CPU在作出决定响应中断之后,对突发事件的处理过程。中断服务函数:针对中断源提出的中断请求提供服务的函数。中断返回:中断服务结束后,返回断点位置的过
2、程。二级中断主函数相应中断请求断点1断点2相应中断请求中断返回中断返回主函数中断服务函数1中断服务函数1中断服务函数2 当有几个中断源同时申请中断时,那么就存在CPU先响应哪个中断请求的问题,为此,CPU要对各中断源确定一个优先等级,称为中断优先级。中断优先级高的中断请求优先被响应。中断优先级解决了快速cpu和慢速外设之间的矛盾,使CPU和外设并行工作。可及时处理控制系统中许多随机参数和信息具备了处理故障的能力,提高了单片机的可靠性。实现人机联系中断的技术优势5.2 IAP15W4K58S4单片机中断系统的结构与控制10IAP15W4K58S4单片机的中断系统IAP15W4K5854单片机的中
3、断系统有21个中断源,2个优先级,可实现二级中断服务嵌套。由IE、IE2、INT-CLKO等特殊功能寄存器控制CPU是否响应中断请求;由中断优先级寄存器IP,IP2安排各中断源的优先级;同一优先级内2个以上中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。中断相关寄存器组 对CPU是否允许和禁止响应所有中断源,以及是否允许每一个中断源进行控制,包括IE、IE2和INT_CLKO。中断允许寄存器IE寄存器nSFR地址为0 xA8,可位寻址,复位值为0 x00比特B7B6B5B4B3B2B1B0名字EAELVDEADCESET1EX1ET0EX0全局中断使能控制位低电压检测中断允许位ADC转
4、换中断允许位串行接口1中断允许位T1溢出中断允许位INT1中断允许位T0溢出中断允许位INT0中断允许位=1,开启中断=0,禁止中断IE2寄存器nSFR地址为0 xAF,复位值为0 x00比特B7B6B5B4B3B2B1B0名字-ET4ET3ES4ES3ET2ESP1ES2定时器4中断允许位定时器3中断允许位串口4中断允许位串口3中断允许位定时器2中断允许位SPI接口中断允许位串口2中断允许位=1,开启中断=0,禁止中断INT_CLKO寄存器nSFR地址为0 x8F,复位值为0 x00比特B7B6B5B4B3B2B1B0名字-EX4EX3EX2MCKO_S2T2CLKOT1CLKOT0CLKO
5、外部中断4中断允许位外部中断3中断允许位外部中断2中断允许位中断优先级寄存器设置中断源的优先级,包括IP和IP2。IP:SFR地址为0 xB8,可位寻址,复位值为0 x00。比特B7B6B5B4B3B2B1B0名字PPCAPLVDPADCPSPT1PX1PT0PX0PCA中断优先级控制位低电压检测中断优先级控制位ADC断优先级控制位串口断优先级控制位定时器1断优先级控制位INT1断优先级控制位T0断优先级控制位INT0断优先级控制位=0,低低优先先级=1,高高优先先级中断优先级寄存器IP2SFR地址为0 xB5,复位值为0 x00。比特B7B6B5B4B3B2B1B0名字-PX4PPWMFDP
6、PWMPSPIPS2外部中断4优先级控制位PWM异常检测中断优先级控制位PWM中断优先级控制位SPI中断优先级控制位串口2中断优先级控制位=0,低低优先先级=1,高高优先先级 当中断发生时,相应的中断标志位被硬件自动置1,这个中断标志位在CPU响应中断后需要清0。有些中断还有触发方式的选择,比如外部中断0和外部中断1。TCON寄存器定时器/计数器控制寄存器,SFR地址为0 x88,复位值为00H比特B7B6B5B4B3B2B1B0名字TFITR1TF0TR0IE1IT1IE0IT0T1的中断请求标志与中断无关,后续章节会有介绍T0的中断请求标志与中断无关,后续章节会有介绍外部中断1中断请求标志
7、外部中断1中断源类型选择位外部中断0中断请求标志外部中断0中断源类型选择位=1,有中断请求=0,无中断请求=0,下降沿或上升沿触发=1,下降沿触发定时器控制位外部中断控制位5.3中断处理过程中断响应中断请求中断服务中断返回中断请求中断请求标志位在达到相应请求要求下即会被硬件置1中断响应lCPU响应中断的基本条件:有中断源发出中断请求;中断总允许位EA=1;申请中断的中断源的中断允位为1。l中断响应后的操作过程:复位中断请求标志位;l两种中断标志的不同复位(清0)方式:硬件自动清0,如外部中断标志位;软件方法清0,如串行口中断标志位中断服务中断响应后执行中断服务函数的过程。中断服务主要包括三部分
8、工作:一是保护现场二是为中断源服务三是恢复现场void 函数名(void)interrupt nusing mvoid INT0_ISR(void)interrupt 0注意:1、中断服务函数既没有返回值,也没有调用参数;2、中断服务函数只能由系统调用,不能被其他函数调用。3、为提高中断响应的实时性,中断函数应尽量简短。中断返回中断返回是指中断服务完成后,CPU返回原来断开的位置,继续执行原来的程序。在c语言中无需特别关注中断返回,由系统完成;在汇编语言中通过中断返回指令RETI来实现。l高级中断请求可以打断正在执行的低级中断;l同级或低级中断请求不能打断正在执行的中断;l同级中断源同时提出请
9、求时按自然优先级响应,即按照中断向量表中的索引值也叫中断号从小到大的顺序来响应。中断优先级原则 在单片机程序存储器中,有一块特定的存储空间,用于保存处理不同中断类型事件的程序代码起始地址,这片存储空间称为中断向量表。中断向量表程序Flash存储器空间地址0 x0000地址0 x0003地址高8位地址低8位外部中断0的中断向量。其内容为指向外部中断0的中断服务程序入口地址的跳转指令LJMP指令地址高8位地址低8位地址0 x000B定时器0的中断向量。其内容为指向定时器0中断服务程序入口地址的跳转指令LJMP指令地址高8位地址低8位地址0 x0013外部中断1的中断向量。其内容为指向外部中断1中断
10、服务程序入口地址的跳转指令LJMP指令地址高8位地址低8位地址0 x001B定时器1的中断向量。其内容为指向定时器1中断服务程序入口地址的跳转指令LJMP指令中断源入口地址(中断向量)中断号同级自然优先顺序外部中断00003H0最高定时/计数器T0中断000BH1外部中断10013H2定时/计数器T1中断001BH3串行口中断0023H4AD转换中断002BH5LVD中断0033H6PCA中断003BH7串行口2中断0043H8SPI中断004BH9外部中断20053H10外部中断3005BH11定时器T2中断0063H12预留中断006BH、0073H、007BH13、14、15外部中断40
11、083H16串行口3中断008BH17串行口4中断0093H18定时器T3中断009BH19定时器T4中断00A3H20比较器中断00ABH21PWM中断00B3H22PWM异常中断00BBH23最低5.4中断编程与应用对IE、IP、TCON进行初始化编程,对应如下操作:CPU开中断与关中断外部中断请求的允许与禁止中断源优先级别的设定外部中断请求的触发方式设定外部中断的编程方法1、外部中断的初始化:2、外部中断的服务函数:在单片机相应的外部中断引脚出现满足要求的脉冲信号时,系统会自动调用外部中断服务函数,实现一些具体功能。例1:利用外部中断0、外部中断1控制LED灯,外部中断0改变P1.7控制
12、的LED灯,外部中断1改变P4.7控制的LED灯。其中外部中断0和外部中断1采用下降沿触发方式。外部中断的应用原理图原理图n提供了SW17和SW18两个按键。当:p按下SW17时,P3.2引脚接地,也就是产生一个INT0下降沿低脉冲信号。p按下SW18时,P3.3引脚接地,也就是产生一个INT1下降沿低脉冲信号。LED8LED73003003.3k3.3kP1.6P1.7LED连接的端口初始化获取按键值按键=SW17?YNN开始按键=SW18?LED1反转YLED2反转中断和端口初始化开始while(1)INT0中断函数LED1反转中断返回INT1中断函数LED2反转中断返回查询法外部中断法#
13、include STC15.h#include intrins.hsbit LED1=P16;sbit LED2=P17;void main(void)LED1=1;LED2=1;P1M1=0;P1M0=0;/P1设置为准双向口 while(1)if(P3=0 xFB)while(P3=0 xFB);/等待按键弹起 LED1=LED1;if(P3=0 xF7)while(P3=0 xF7);/等待按键弹起 LED2=LED2;查询法38#include STC15.hsbit LED1=P16;sbit LED2=P17;void INT0_Init(void);void INT1_Init(
14、void);void main(void)LED1=1;LED2=1;P1M1=0;P1M0=0;/P1设置为准双向口 INT0_Init();/外部中断0初始化 INT1_Init();/外部中断1初始化 while(1);外部中断法void INT0_Init()IE0 =0;/外中断0标志位 EX0=1;/INT0 Enable IT0=1;/INT0 下降沿中断 EA=1;/允许总中断void INT1_Init()IE1 =0;/外中断1标志位 EX1=1;/INT1 Enable IT1=1;/INT1 下降沿中断 EA=1;/允许总中断void INT_0(void)interr
15、upt 0 LED1=LED1;void INT_1(void)interrupt 2 LED2=LED2;例2:IAP15W4K58S4单片机外部中断的拓展P1.0P1.1P1.2P1.3P2.0P2.1P2.2INT0 P3.2GNDVCC故障信号故障信号0K1K2R6R7R83*1KVCCR2R3R4R54*300IAP15W4K58S4故障信号故障信号1故障信号故障信号2K0LED0LED1LED2LED3如图所示为一3台机器故障检测与指示系统。当无故障时,LED3灯亮,有故障时,LED3灯灭。0号故障时,LED0灯亮;1号故障时,LED1灯亮;2号故障时,LED2灯亮。IAP15W4
16、K58S4单片机外部中断的拓展#include STC15.hsbit LED0=P10;sbit LED1=P11;sbit LED2=P12;sbit LED3=P13;void main(void)LED0=1;LED1=1;LED2=1;LED3=0;P1M1=0;P1M0=0;/P1设置为准双向口 P2M1=0;P2M0=0;/P2设置为准双向口/*外部中断0初始化*/EX0=1;/INT0 Enable IT0=1;/INT0 下降沿中断 EA=1;/允许总中断/*外部中断0中断函数*/void INT_0(void)interrupt 0 LED0=P20;LED1=P21;LED2=P22;while(1)if(P20=0&P21=0&P22=0)/故障解除 LED0=1;LED1=1;LED2=1;LED3=0;else LED3=1;