分享

单片机_第5章 单片机的中断系统_单片机中断系统

 和生k7zm98l2kv 2023-06-08 发布于广东

目录

5.1 中断的概念(六个概念、与一般函数、功能、一般格式)

中断的一般概念

调用一般函数过程与中断过程

中断实现的功能:

5.2 中断控制系统

5.2.1 中断系统的结构(名称、中断向量、中断号)

1、中断源(哪些信号可以作为51单片机中断源?)

2、中断请求标志(单片机如何得知中断信号出现?)

5.2.2 中断控制

1、TCON寄存器

2、SCON寄存器

3、IE寄存器

4、IP 寄存器

汇总

5.3 中断处理过程

1.中断响应(基本条件、中断受阻、响应后操作)

【相应的基本条件】CPU响应中断的基本条件为:

【中断受阻的几种情况】

【相应后操作】CPU响应中断后,由硬件自动执行如下功能操作:

2.响应时间

3.中断撤销

4.中断函数

5.4 中断的编程及应用举例

5.4.1 中断的编程和应用举例

5.4.2 扩展外部中断源

本章小结


  • 5.1 中断的概念(六个概念、与一般函数、功能、一般格式)

    • 日常生活的中断现象举例

    • 中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。

    • 中断的一般概念

      • 中断响应过程:由中断管理系统处理突发事件的过程;
      • 中断源:中断管理系统能够处理的突发事件;
      • 中断请求:中断源向CPU提出的处理请求;
      • 中断函数:针对中断源和中断请求提供的服务函数;
      • 中断嵌套:在中断服务过程中执行更高级别的中断服务。
      • 二级中断系统

    • 调用一般函数过程与中断过程

      • 相似性:
        • 两者都需要保护断点,都可实现多级嵌套等。
      • 差异性:
        • 1、前者是程序设计者事先安排的(断点位置是明确的),而后者却是系统根据工作环境随机决定的(断点位置是随机的)。
        • 2、主函数与一般函数之间具有主从关系,而主函数与中断函数之间则是平行关系(中断函数只能被系统调用);
        • 3、一般函数调用是纯粹软件处理过程,而中断函数调用却是需要软、硬件配合才能完成的过程。
    • 中断实现的功能:

      • 1、分时操作:CPU可以使多个外设同时工作,并分时为各外设提供服务,从而大大提高了CPU的利用率和输入/输出的速度。
      • 2、实时处理:当计算机用于实时控制时,请求CPU提供服务是随机发生的。有了中断系统,CPU就可以立即响应并加以处理。
      • 3、故障处理:当计算机运行中出现如电源断电、存储器校验出错、运算溢出等错误时,CPU可及时转去执行故障处理程序,减小或消除故障产生的影响。
  • 5.2 中断控制系统

    • 5.2.1 中断系统的结构(名称、中断向量、中断号)

      • 1、中断源(哪些信号可以作为51单片机中断源?)

        • 中断源数量和种类越多,MCU处理突发事件的能力就越强。
        • 80C51单片机共有5种中断源。

        • 中断事件出现后,系统将调用与该中断源相对应的中断函数进行中断处理。
        • 汇编语言中规定了5个特殊的ROM单元用于引导中断程序的调用,这些单元的地址称为中断向量。
        • 汇编编程时,需要在此单元处放置一条指向中断程序入口地址的跳转语句,以便引导中断程序的执行。
        • 对于C51语言,调用中断函数时不用中断向量,而要用到与中断源相应的中断号。
        • 80C51的中断源、中断向量及中断号的对应关系如下表所示。

      • 2、中断请求标志(单片机如何得知中断信号出现?)

        • 当中断信号出现时,单片机中某些寄存器位(中断请求标志位,TCON中)可被硬件置1。(注意这里的IEx、TFx与之后的ITx、TRx)
        • CPU通过定期查看中断请求标志位是否为1,便可知道有无中断请求。
        • 中断请求标志的置1原理3.中断撤销
          • 1、外部中断源

          • 2、内部中断源(T0和T1)

          • 3、内部中断源(TX和RX)

    • 5.2.2 中断控制

      • 中断系统的组成(影响中断的因素?)

      • 1、TCON寄存器

        • 定时/计数器的控制寄存器(Timer/Counter Control Register),字节地址为88H,可位寻址。
        • 该字节寄存器有6个位寄存器与中断有关,2个位寄存器与定时/计数器有关。
        • 位寻址
          • 介绍1

          • 介绍2

          • 区分

      • 2、SCON寄存器

        • 串口控制寄存器(Serial control register),字节地址为98H,可位寻址。
        • 位寻址
          • 介绍1

          • 介绍2

        • 【注意】TI和RI虽然是2个中断请求标志位,但在SCON之后经或门电路合成为1个信息,统一接受中断管理。

      • 3、IE寄存器

        • 中断允许寄存器(Interrupt Enable Register),字节地址为A8H,可位寻址。
        • 中断请求标志(在TCON中)硬件置1后,能否得到CPU的响应取决于CPU是否允许中断(在IE中)。
        • 位寻址
          • 介绍1

          • 介绍2

        • 【注意】单片机复位后IE初值为0——默认为禁止所有中断。
      • 4、IP 寄存器

        • 中断优先级寄存器(Interrupt Priority Registers),字节地址为B8H,可位寻址。
        • 位寻址
          • 介绍1

          • 介绍2

        • 【注意】每个中断源的优先级都有两种选择,可被选入两个队列之一。

        • 优先级原则:
          • 1)高级中断请求可以打断正在执行的低级中断;

          • 2)同级或低级中断请求不能打断正在执行的中断;
          • 3)同级中断源同时提出请求时按自然优先级响应:/INT0→ T0 → /INT1→T1→TI/RI

          • 4)单片机复位时,IP初值为0——默认所有中断源均为低级中断。
    • 汇总

      • 中断标志汇总

      • 中断管理寄存器汇总

      • 中断系统汇总

  • 5.3 中断处理过程

    • 中断处理包括中断请求、中断响应、中断服务、中断返回等环节。
    • 1.中断响应(基本条件、中断受阻、响应后操作)

      • 中断响应是指CPU从发现中断请求,到开始执行中断函数的过程。
      • 【相应的基本条件】CPU响应中断的基本条件为:

        • ① 有中断源发出中断请求;
        • ② 中断总允许位EA=1,即CPU开中断;
        • ③ 申请中断的中断源的中断允许位为1,即没有被屏蔽。
        • 满足以上条件后,CPU一般都会响应中断。
      • 【中断受阻的几种情况】

        • (1)CPU正在处理同级或者更高级中断;
        • (2)不是当前指令执行的最后一个机器周期;
        • (3)正在执行的指令是RETI指令或者访问IE或IP指令,执行完这些指令后,需要再执行一条指令再响应中断。
      • 【相应后操作】CPU响应中断后,由硬件自动执行如下功能操作:

        • ① 中断优先级查询,对后来的同级或低级中断请求不予响应;
        • ② 保护断点,即把程序计数器PC的内容压入堆栈保存;
        • ③ 清除可清除的中断请求标志位(见中断撤销);
        • ④ 调用中断函数并开始运行;
        • ⑤ 返回断点继续运行。
        • 可见,除中断函数运行(和部分中断请求标志位的清除)是软件方式外,其余中断处理过程都是由单片机硬件自动完成的。
    • 2.响应时间

      • 从查询中断请求标志到执行中断函数第一条语句所经历的时间,称为中断响应时间。
      • 不同中断情况,中断响应时间是不一样的,以外部中断为例,最短的响应时间为3个机器周期。
      • 这是因为,CPU在每个机器周期的S6期间查询每个中断请求的标志位。如果该中断请求满足所有中断条件,则CPU从下一个机器周期开始调用中断函数,而完成调用中断函数的时间需要2个机器周期。这样中断响应共经历了1个查询机器周期加2个调用中断函数周期,总计3个机器周期,这也是对中断请求作出响应所需的最短时间。
      • 如果中断响应受阻,则需要更长的响应时间,最长响应时间为8个机器周期(即RETI(2个,同时进行查询)+指令(1~4个)+LCALL调用(2个))。一般情况下,在一个单中断系统里,外部中断的响应时间在3~8个机器周期之间。如果是多中断系统,且出现了同级或高级中断正在响应或正在服务中,则需要等待响应,那么响应时间就无法计算了。
      • 这表明,即使采用中断处理突发事件,CPU也存在一定的滞后时间。在可能的范围内提高单片机的时钟频率(缩短机器周期),可减少中断响应时间。
    • 3.中断撤销

      • 中断响应后,TCON和SCON中的中断请求标志应及时清0,否则中断请求将仍然存在,并可能引起中断误响应。不同中断请求的撤销方法是不同的。
      • 对于定时/计数器中断,中断响应后,由硬件自动对中断标志位TF0和TF1清0,中断请求可自动撤销,无须采取其他措施。
      • 对于脉冲触发的外部中断请求,在中断响应后,也由硬件自动对中断请求标志位IE0和IE1清0,即中断请求的撤销也是自动的。
      • 对于电平触发的外部中断请求,情况则不同。中断响应后,硬件不能自动对中断请求标志位IE0和IE1清0。中断的撤销,要依靠撤除引脚上的低电平,并用软件使中断请求标志位清0才能有效。由于撤除低电平需要有外加硬件电路配合,比较烦琐,因而采用脉冲触发方式便成为常用的做法。
      • 对于串口中断,其中断标志位TI和RI不能自动清0。因为在中断响应后,还要测试这两个标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串口中断请求的撤销是通过软件方法实现的。
    • 4.中断函数

      • 中断服务是针对中断源的具体要求进行设计的,需要用户自己编写。C51中断函数采用如下定义格式:
        • void 函数名 (void) interrupt n〔using m〕
        • { 函数体语句 }
      • 函数解析
        • 这里interrupt和using都是C51扩展的关键词,其中:
        • 整数n是与中断源相对应的中断号,使用interrupt n可以让编译器知道相应中断向量地址(=8n+3),并在这个地址上自动安排一个指向该中断函数首地址的无条件跳转指令。由于无须人工处理跳转,编写C51中断函数要比编写汇编语言中断服务程序更加简明快捷。
        • 整数m是工作寄存器组的组号,C51组号m与80C51工作寄存器组的关系如表5.4所示。使用using m可以切换工作寄存器组,省去中断响应时为保护断点进行的压栈操作,从而提高中断处理的实时性。using m省略时默认采用第0工作寄存器组(由特殊功能寄存器PSW的RS1和RS0位设定)。

      • 本书3.7.2节中曾介绍过C51一般函数的定义格式:
        • 〔返回值类型〕函数名(〔形式参数〕)〔编译模式〕〔reentrant〕〔interrupt x〕〔using y〕
        • 比较这两个函数的定义格式可见,C51中断函数是C51一般函数的一个特例:
          • ① 中断函数是没有返回值的void型函数;
          • ② 中断函数是没有形参的无参函数;
          • ③ 中断函数采用系统默认编译模式;
          • ④ 中断函数不是可重入的函数;
      • 使用C51中断函数还需要注意以下几点:
        • ① 允许在中断函数中使用return语句(表示结束中断),但不能使用带有表达式的return语句,如return(z)。
        • ② 可以通过使用全局变量,将变量值传入或传出中断函数,以此弥补无参和无返回值的使用限制(中断服务函数既没有返回值,也没有调用参数);
        • ③ 中断函数只能被系统调用,不能被其他任意函数调用。
        • ④ 为提高中断响应的实时性,中断函数应尽量简短,并尽量使用简单变量类型及简单算术运算。一种常用的编程做法是,在中断函数中仅更新全局性标志变量值,而在主函数或其他函数中根据该标志变量值再做相应处理,这样就能较好地发挥中断对突发事件的应急处理能力。
  • 5.4 中断的编程及应用举例

    • 5.4.1 中断的编程和应用举例

      • 中断扫描法行列式键盘
        • 查询法键盘扫描电路

        • 中断法键盘扫描电路

        • 软硬件更改

      • 中断方式的键控流水灯
      • 观察两级中断嵌套效果
    • 5.4.2 扩展外部中断源

      • MCS-51系列单片机设置了两个外部中断源输入端。当所设计的应用系统需要两个以上外部中断源时,就要进行外部中断源的扩展。
      • 扩展方式主要有利用定时器扩展外部中断源和利用查询法扩展外部中断源。其中,利用定时器扩展外部中断源的方法参见第6章的实例3。
        • 利用查询法扩展外部中断源的基本思路是,每根中断输入线可以通过“线或”的关系连接多个外部中断源,同时利用输入端口线作为各个中断源的识别线。
        • 由图可见,无论哪个外部中断源发出的高电平信号,都会使引脚/INT0的电平变低产生中断请求,然后再通过程序查询P1.0~P1.3的逻辑电平,即可知道是哪个中断源的中断请求。

      • 也可采用优先权解码芯片74LS148进行中断源的扩展。
        • 由图可见,当任意中断分支有中断信号出现时,引脚/INT0都将产生中断请求。中断函数只需保存解码芯片形成的中断分支码,并置位自定义中断标志位即可返回。

        • 在主函数中,则可根据中断标志位判断有无中断发生,根据中断分支码判断中断请求分支号,据此可实现8路外部中断。
  • 本章小结

    • 1. 80C51单片机共有5个中断源,包括两个外部中断源(INTO、INTi)和3个内部中断源(TO、T1、TX/RX)。中断触发方式分别为:外部引脚上出现低电平或负跳变脉冲( INTo和INTi),计数器中接收的脉冲数达到溢出程度(TO和T1)、完成一帧串行数据的发送或接收(TX/RX)。
    • 2.中断优先级原则为:
      • ①高级中断请求可以打断执行中的低级中断,同级中断请求不能打断执行中的同级或高级中断;
      • ②多个同级中断源同时提出中断请求时,CPU将依据自然优先级查询中断请求;
      • ③INT0、TO、INT1、T1、TXRX的自然优先级依次降低;
      • ④单片机复位时,所有中断源都默认为低优先级中断。
    • 3.中断系统具有4个控制寄存器:TCON(定时控制寄存器)、SCON(串口控制寄存器)、IP(中断优先级控制寄存器)及IE(中断允许控制寄存器)。
    • 4.CPU响应中断的基本条件为:
      • ①有中断源发出中断请求;
      • ②中断总允许位EA=1(开中断);
      • ③中断源的中断允许位为1(非屏蔽)。
    • 5.中断函数既没有返回值,也没有调用参数;中断函数只能由系统调用,不能被其他函数调用;中断函数的定义格式为:
      • void 函数名(void) interrupt n (using m){函数体语句}
      • 其中,n是中断号(n=0~4),m是工作寄存器组号(m =0~3)。
    • 6.外部中断应用的要点是;
      • ①硬件上保证INTO和INT1所需的中断触发信号;
      • ②主函数中的中断初始化;
      • ③中断函数中的中断请求标志撤销。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多