您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第7章 单片机C51中断
中断Interrupt中断的事例日常生活中有很多计划任务要完成或突发事件要处理,常用的是查询法,但更好的是中断法处理。如烧开水时,水烧开后应及时切断加热源。1.查询法:不断地检查水是否烧开2.中断法:在烧水的壶上装哨子,利用水烧开后的蒸汽吹响哨子2020年1月27日2单片机C语言程序设计中断的概念计算机处理的任务按实时性要求分为两类:1.非实时性任务:显示刷新、声音鸣响2.实时性任务:系统错误处理、实时监控对于实时性要求高的任务,出现后要求立即处理,采用轮询的方式容易实现,但实时性不高,不停的查询浪费CPU时间,采用中断的方式较为适宜。2020年1月27日3单片机C语言程序设计中断的处理过程中断是通过硬件改变程序运行的方向来处理任务:1.CPU在进行任务A时发生事件B(中断源)要求实时处理(中断请求)2.CPU暂时中断任务A(中断响应),转去处理事件B(中断服务)3.CPU处理完毕事件B,回到任务A中断处继续进行任务A(中断返回)中断的处理过程2020年1月27日5单片机C语言程序设计执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回中断系统的概念中断装置和中断处理程序统称为中断系统。计算机的中断系统应能实现:1.中断及返回2.中断优先级排队3.多个中断嵌套2020年1月27日6单片机C语言程序设计中断系统的优点计算机使用中断系统,具有以下优点:1.分时处理,利用率高2.响应及时,实时性强3.故障处理,可靠性好中断源的分类计算机系统的中断源主要分为两类:1.内部中断:除0错误、单步中断、溢出中断、断点中断、指令中断2.外部中断:硬件错误、外部设备请求单片机中断系统的结构8051系列单片机有5个中断源:1.外部中断0,INT0,P3.2引脚,中断标志位IE0=12.外部中断1,INT1,P3.3引脚,中断标志位IE1=13.定时器0溢出中断,中断标志位TF0=14.定时器1溢出中断,中断标志位TF1=15.串行口发送/接收中断,中断标志位RI/TI=1单片机中断系统的结构中断服务程序入口地址和中断号2020年1月27日10单片机C语言程序设计中断源中断标志中断服务程序入口地址优先级顺序外部中断(INT0)IE00003H高定时/计数器0(T0)TF0000BH↓外部中断(INT1)IE10013H↓定时/计数器1(T1)TF1001BH↓串行口RI和TI0023H↓定时/计数器2(T2)TF2002BH低单片机中断系统的结构2020年1月27日11单片机C语言程序设计EX0EAPX001ET0PT001EX1PX101ET1PT101ESPS01≥1RITISCONTCONIE0TF0IE1TF110101IT0IT1INT0INT1T0T1RXTXIEIP111111110硬件查询自然优先级自然优先级中断入口中断入口高级低级中断源中断源中断请求定时/计数控制寄存器TCON,地址88H中断触发方式设置及中断标志位1.IE0(IE1):外部中断0、1请求标志位2.TF0(TF1):定时/计数器T0、T1溢出中断请求标志位76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0中断请求3.IT0(IT1):外部中断触发方式控制位IT0(IT1)=0为电平触发方式,中断响应后不自动清IE标志IT0(IT1)=1为边沿触发方式(下降沿有效),中断响应后硬件自动清IE标志2020年1月27日13单片机C语言程序设计中断的触发方式外部中断有两种触发方式:1.电平触发:CPU在每个机器周期采样INT0(INT1)引脚输入电平,如为低,则置IE0(IE1)=1请求中断2.边沿触发:CPU在每个机器周期采样INT0(INT1)引脚输入电平,如在一个周期采样到高电平,而下个周期采样到低电平,则置IE0(IE1)=1请求中断2020年1月27日14单片机C语言程序设计中断的触发方式两种触发方式的比较:1.电平方式:INTx的低电平必须保持到中断响应,否则会被漏掉;中断服务结束前,INTx低电平必须撤除,否则中断返回之后将再次产生中断2.边沿方式:CPU采样到有效下降沿后,在IEx中将锁存一个1;若暂时不能响应,申请标志也不会丢失,直到响应后才自动清零2020年1月27日15单片机C语言程序设计中断控制串行口控制寄存器SCON,地址98H1.RI:串行口接收中断标志位,响应中断时RI必须由软件清零2.TI:串行口发送中断标志位,响应中断时TI必须由软件清零2020年1月27日16单片机C语言程序设计76543210SCONTIRI中断控制中断允许寄存器IE,地址A8H1.EA:CPU中断允许(总控制)位2.EX0(EX1):外部中断0(1)允许位3.ET0(ET1):定时器T0(T1)中断允许位4.ES:串行口中断允许位5.ET2:定时器T2中断允许位76543210IEEAET2ESET1EX1ET0EX0中断控制中断优先级寄存器IP,地址B8H1.PX0(PX1):外部中断0(1)优先级设定2.PT0(PT1):定时器T0(1)优先级设定3.PS:串行口优先级设定位4.PT2:定时/计数器T2优先级设定位2020年1月27日18单片机C语言程序设计76543210IPPT2PSPT1PX1PT0PX0中断的优先原则8051单片机中断优先级遵循以下原则:1.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求2.正在进行的中断过程不能被同级或低优先级的新中断请求所中断3.正在进行的低优先级中断服务,能被高优先级的新中断请求所中断2020年1月27日19单片机C语言程序设计中断标志的识别CPU在每个机器周期的S5P2期间各个中断源进行采样,采样值在下一个机器周期内按优先级和内部顺序被依次查询中断响应的条件CPU响应中断必须同时满足以下三个条件:1.有中断请求(IEx、TFx、TI、RI=1)2.中断允许位为1(ES、ETx、EXx=1)3.系统总中断开(EA=1)2020年1月27日21单片机C语言程序设计中断响应的阻碍下列情况中断响应将受到阻断:1.正在处理同级或更高级的中断2.正在执行的指令尚未执行完最后一个机器周期3.正在执行RETI、或访问IE、IP,必须执行完该指令,并执行下一条指令后才能响应中断中断的响应时间若中断受到阻碍未及时响应,则该中断请求将被丢失。响应时间:从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。对于没有嵌套的单级中断,响应时间为3~8个机器周期。2020年1月27日23单片机C语言程序设计中断的响应过程中断的响应过程如下:1.将相应的优先级状态寄存器置“1”,阻断后续同级或低级的中断请求2.执行硬件LCALL指令,程序计数器PC的内容压入堆栈保存,相应的中断服务程序入口地址送入PC3.执行中断服务程序前两步由中断系统自动完成,中断服务程序由用户编写2020年1月27日24单片机C语言程序设计中断的返回中断返回:中断服务程序执行完毕后,CPU回到断点处继续执行原程序。1.将断点地址出栈送回PC,CPU从原断点继续执行程序2.将相应中断优先级状态寄存器清0,通知中断系统中断服务程序已执行完毕2020年1月27日25单片机C语言程序设计中断服务程序中断服务程序:1.汇编语言:使用ORG在中断服务程序入口地址写上跳转指令,中断响应时跳转到中断服务程序入口2.C51语言:主函数负责中断服务函数的调用,中断服务函数格式void函数名()interruptm[usingn]中断服务程序不能被主动调用,没有返回值,编写程序时不知道系统在何时何处会调用。中断服务程序的编写中断服务程序的编写有以下步骤:1.设定中断允许控制IE2.设定中断优先级控制IP3.设定外部中断触发方式4.编写中断处理程序中断实例定时器中断:使用定时器计时2020年1月27日28单片机C语言程序设计中断实例计数器中断:使用计数器测信号频率2020年1月27日29单片机C语言程序设计中断实例外部请求中断:按键中断低电平触发下降沿触发2020年1月27日30单片机C语言程序设计
本文标题:第7章 单片机C51中断
链接地址:https://www.777doc.com/doc-3340185 .html