《单片机原理及应用》第7章:单片机的中断系统_第1页
《单片机原理及应用》第7章:单片机的中断系统_第2页
《单片机原理及应用》第7章:单片机的中断系统_第3页
《单片机原理及应用》第7章:单片机的中断系统_第4页
《单片机原理及应用》第7章:单片机的中断系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第7章单片机的中断系统日常生活的中断现象举例某人正在看报电话铃响了去接电话继续接电话继续看报跑向厨房关煤气、灌开水水开了第7章单片机的中断系统中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。第5章单片机的中断系统中断响应过程:由中断管理系统处理突发事件的过程;中断源:中断管理系统能够处理的突发事件;中断请求:中断源向CPU提出的处理请求;中断函数:针对中断源和中断请求提供的服务函数;中断嵌套:在中断服务过程中执行更高级别的中断服务。中断的一般概念第5章单片机的中断系统中断过程与调用一般函数过程的相似性:两者都需要保护断点,都可实现多级嵌套等。中断过程与调用一般函数过程的差异性:1、子函数是程序设计者事先安排的(断点是明确的),而中断却是系统根据工作环境随机决定的(断点则是随机的)。2、主函数与调用函数之间具有主从关系,而主函数与中断函数之间则是平行关系;3、一般函数调用是纯粹软件处理过程,而中断函数调用却是需要软、硬件配合才能完成的过程。第5章单片机的中断系统1、分时操作:CPU可以使多个外设同时工作,并分时为各外设提供服务,从而大大提高了CPU的利用率和输入/输出的速度。2、实时处理:当计算机用于实时控制时,请求CPU提供服务是随机发生的。有了中断系统,CPU就可以立即响应并加以处理。3、故障处理:当计算机运行中出现如电源断电、存储器校验出错、运算溢出等错误时,CPU可及时转去执行故障处理程序,而不会死机。中断实现的功能:1、中断源(哪些信号可以引起单片机中断?)中断源数量和种类越多,MCU处理突发事件的能力就越强。80C51单片机共有5种中断源。第5章单片机的中断系统外部中断内部中断中断向量——位于ROM内的中断程序入口地址——汇编程序第5章单片机的中断系统……

跳转指令

跳转指令

跳转指令

跳转指令

跳转指令0000H0003H000BH0013H001BH0030H主程序首指令第5章单片机的中断系统中断号——与中断向量对应的编号——C51程序第5章单片机的中断系统80C51的中断源一览表2、中断请求标志(单片机如何知道中断信号出现了?)第5章单片机的中断系统当中断信号出现时,单片机中的某些位寄存器(中断请求标志位)可被硬件置1。CPU通过定期查看中断请求标志位是否为1,便可知道有无中断请求。中断系统的组成(影响中断的因素?)第5章单片机的中断系统中断信号的传送是分别沿着5条水平路径由左向右进行的其中,TCON、SCON、IE、IP是相关SFR。P3.3P3.21、TCON寄存器第5章单片机的中断系统定时/计数器的控制寄存器(Timer/CounterControlRegister),字节地址为88H,可位寻址。T1的中断请求标志T0的中断请求标志INT1的中断请求标志INT0的中断请求标志INT1的中断触发信号选择INT0的中断触发信号选择与中断无关第6章介绍与中断无关第6章介绍51单片机复位后,TCON初值为0,即默认为无上述4个中断请求、电平触发外部中断方式。=1,有中断请求=0,无中断请求=1,脉冲触发=0,电平触发第5章单片机的中断系统2、SCON寄存器

串口控制寄存器(Serialcontrolregister),字节地址为98H,可位寻址。TX的中断请求标志RX的中断请求标志TI和RI虽然是2个中断请求标志位,但在SCON之后经或门电路合成为1个信息,统一接受中断管理。=1,有中断请求=0,无中断请求第5章单片机的中断系统中断允许寄存器(InterruptEnableRegister),字节地址为A8H,可位寻址。单片机复位后,IE的初值为0,即默认为整体禁止中断。3、IE寄存器

T0的中断允许标志INT0的中断允许标志INT1的中断允许标志T1的中断允许标志TX/RX的中断允许标志总中断允许标志=1,允许中断=0,禁止中断第5章单片机的中断系统51单片机复位后,IP初值为0,即默认为全部低优先级中断。4、IP寄存器中断优先级寄存器(InterruptPriorityRegisters),字节地址为B8H,可位寻址。T0的中断优先级标志INT0的中断优先级标志INT1的中断优先级标志T1的中断优先级标志TX/RX的中断优先级标志=1,高优先级=0,低优先级第5章单片机的中断系统当多个同级中断源同时提出中断请求时,CPU将优先响应自然优先级高的中断请求。优先级原则小结:1)高级中断请求可以打断正在执行的低级中断;2)同级或低级中断请求不能打断正在执行的中断;3)同级中断源同时提出请求时按自然优先级响应:

INT0→T0→INT1→T1→TI/RI4)单片机复位时,IP各位都被置0,所有中断源为低级中断第5章单片机的中断系统中断标志汇总中断源名称中断请求标志中断允许标志中断优先标志中断触发方式标志中断号

INT0IE0EX0PX0IT00T0TF0ET0PT01INT1IE1EX1PX1IT12T1TF1ET1PT13TI/RITI/RIESPS4第5章单片机的中断系统中断管理寄存器汇总TCON88HIEA8HIPB8HSCON98H第5章单片机的中断系统中断系统汇总第5章单片机的中断系统中断处理包括中断请求、中断响应、中断服务等环节。第5章单片机的中断系统1、中断响应CPU响应中断的基本条件为:(1)有中断源发出中断请求;(2)中断总允许位EA=1,即CPU开中断;(3)申请中断的中断源的中断允许位为1。第5章单片机的中断系统CPU响应中断后的操作过程:中断优先级查询,阻止后来的同级或低级中断请求。保护断点,即把程序计数器PC的内容压入堆栈保存。清除中断请求标志位。调用中断函数并开始运行。返回断点继续运行。除中断函数运行是软件方式外,其余中断处理过程都是由单片机硬件自动完成的。第5章单片机的中断系统2、响应时间从查询中断请求标志到执行中断函数第一条语句所经历的时间,称为中断响应时间。CPU在每个机器周期的S6期间查询每个中断请求的标志位。中断响应过程包括1个查询机器周期加2个调用中断函数周期,总计3个机器周期,这也是对中断请求做出响应所需的最短时间。C51中断函数的声明格式:void函数名

(void)interruptn

[usingm]interruptn,表示是关于中断源n的中断服务函数;usingm,表示该中断函数将使用第m组工作寄存器。缺省为当前工作寄存器组。第5章单片机的中断系统【注意】1、中断服务函数既没有返回值,也没有调用参数;2、中断服务函数只能由系统调用,不能被其他函数调用。3、中断服务函数第5章单片机的中断系统重新认识实例1的程序中断允许设置也可采用字节变量实现,即IE=0x81;实例1单片机开关状态检测要求:若有按键压下→D1状态反转。第5章单片机的中断系统常规办法中断办法例5-2:电路连接如图5-4所示。每按一次键,触发一次中断,点亮一个发光二极管,实现流水灯功能。若规定外部中断0为边沿触发方式,低优先级,试编写主程序与中断服务程序。

C51程序如下:#include<AT89X51.h>#include<intrins.h>unsignedchara=0x7f;voidDelay();voidint0();voidmain()

{EA=1; //总中断允许EX0=1; //外部中断0中断允许IT0=1; //选择外部中断0为跳沿触

发方式while(1) //循环 {;} //P2口的8只LED全灭}voidint0()interrupt0using0//外中断0的中断服务函数{ EX0=0; //禁止外部中断0中断 a=_crcl_(a,1); //左移一位 P2=a; Delay(300); //延时300ms EX0=1;//中断返回前,打开外部中断0中断}voidDelay(unsignedinti)//定义延时函数Delay(){ unsignedintj; for(;i>0;i--) for(j=0;j<333;j++) //晶振为12MHz*,1ms {;} //空函数}例5-4:如图5-5所示,利用外部中断0和1,要求按动按键K1,使8个发光二极管从VL1到VL8流水,按动按键K2,使8个发光二极管从VL8到VL1流水。编写程序C51程序如下:#include<AT89X51.h>#include<intrins.h>unsignedchara,i;voidDelay(unsignedinti)//定义延时函数Delay(),i是形式参数,不能赋初值图5-5例5-4连线图{ unsignedintj; for(;i>0;i--) for(j=0;j<333;j++) //晶振为12MHz {;} //空函数}voidmain() //主函数{ EX0=1;EX1=1; IT0=1; IT1=1;EA=1;while(1){P1=0xff;}//P1口的8只发光二极管全灭}voidint1()interrupt2using0 { EX0=0; a=0xfe; for(i=0;i<8;i++){

P2=a;a=_crol_(a,1); delay(50); } EX0=1; }8路抢答器设计要求主持人按下REST按钮时,8路有键按下,对应指示灯亮,数码管显示对应号码,此时其他按键不再有效。REST端为低电平“0”,此时与非门74LS00输出为高电平“1”,锁存器74LS373的锁存允许端LE为高电平“1”,允许选手开始抢答,然后主持人释放REST按钮后,REST端为高电平“1”。假设选手3先按下抢答按钮,则IN3为低电平“0”,由于74LS373的三态允许控制端OE接地为低电平0”,Q2也为低电平“0”,与非门74LS30的输出为高电平“1”,反相器74LS04输出为低电平“0”,向单片机申请中断;同时,74LS00的输出LE为低电平“0”,74LS373的锁存允许端LE为低电平“0”,选手3被锁存器74LS373锁存,即Q2为低电平“0”,指示灯发光二极管D3也被点亮,而此时若有其他选手即使按下抢答按钮,由于LE为低电平“0”,锁存器74LS373也不能接收新的数据,禁止了其他选手抢答。单片机相应中断请求后,查询P1口的状态,然后将选手的编号显示在数码管上,直到主持人再次按下复位按钮REST,进入新的一轮抢答。8路抢答器电路的工作原理:74LS373功能74LS373是三态输出的八D锁存器,共有54S373和74LS373两种线路。373的输出端Q0~Q7可直接与总线相连。当锁存允许端LE为高电平时,Q随数据D而变。当LE为低电平时,D被锁存在已建立的数据电平。当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改400mV。

33OELE功能01输出Qi=输入Di00输出保持(Qi不变)1X高阻343.程序设计

主程序的主要任务是中断初始化和显示选手编号,中断初始化包括CPU中断允许、允许外部中断0中断、设置外部中断0为电平触发方式;显示选手编号是将抢答选手的编号送LED数码管显示。当选手按下抢答按钮时,产生外部中断请求,中断函数采用查询的方式得到抢答选手的编号。358路抢答器程序#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharucharnum=0x0a;//选手号初值为0a,断码为0xff, 数码管不显示ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};////*******************主函数*********************//voidmain(){ E

温馨提示

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

评论

0/150

提交评论