KEIL C单片机设计与项目实践 课程主讲: 孙福成 张小义 王晓静 杨至辉 课件制作: 亢娟娜 王 淏
课程内容
项目五 中断系统及应用 5. 1 项目说明 项目任务: 为51单片机控制系统设计“加1键”、“减1键”。要求外部中断0每中断一次显示器的数值加1,外部中断1每中断一次显示器的数值减1;数值在“0-5000”之间变化;中断触发方式为下降沿触发;并且能够消除按键抖动。
项目五 中断系统及应用 项目目标: 知识培养目标: 能力培养目标: 掌握中断的概念、正确解释中断过程 能利用所学知识正确地理解中断概念 项目五 中断系统及应用 5. 1 项目说明 项目目标: 知识培养目标: 掌握中断的概念、正确解释中断过程 掌握51单片机的5个中断源、中断入口地址、中断初始化 掌握中断服务函数的定义 掌握该项目的控制实例,并能灵活应用 了解单片机中断源的扩展方法 能力培养目标: 能利用所学知识正确地理解中断概念 能利用所学知识编写中断应用程序 能利用所学知识解决实际工程问题
项目五 中断系统及应用 5.2.1 中断概述 5.2.2 MCS-51单片机中断系统 5.2.3 中断初始化 5.2.4 中断服务函数的定义 项目五 中断系统及应用 5. 1 项目说明 主要内容: 5.2 基础知识 5.2.1 中断概述 5.2.2 MCS-51单片机中断系统 5.2.3 中断初始化 5.2.4 中断服务函数的定义 5.2.5 中断应用举例
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 在项目四键盘原理及应用中,由于按键的闭合是随机的,为了实时获得键盘的信息,CPU需要主动不断地检测键盘,没有充足的时间完成其它任务,从而降低了CPU的利用率,无法实现复杂的控制要求,采用中断技术可解决这个问题。 中断技术使单片机具有了实时处理外部或内部随机事件的能力,它通过硬件来改变程序运行方向,既和硬件有关,也与软件有关,处理中断的硬、软件共同构成中断控制系统。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 1 中断的概念 什么是中断呢?中断的过程与生活事例非常相似。你正在家里洗衣服,突然听到电话响了,这时,你停止洗衣服,去接电话,与来电话的人交谈,接完电话后,回去继续洗衣服,这个过程就相当于发生了一次中断,如图5-1(a)所示。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 1. 中断的概念 图5-1 中断过程
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 1. 中断的概念 中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断请求);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断,即CPU正在执行的程序被打断,如图5-1(b)所示。 由图5-1(b)可知,中断包含四个过程:中断请求、中断响应、中断服务、中断返回。四个过程中,中断服务需要由用户编写相应的程序完成,该程序称为中断服务函数(与来电话的人交谈);CPU被打断之前运行的程序称为主函数(洗衣服);而中断请求、中断响应及中断返回三个过程则由硬件自动完成。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 1. 中断的概念 中断的过程与函数的调用类似,但又有其特殊之处。函数的调用是在主调函数中事先由用户安排好的,主调函数与其它函数通过调用语句相联系,如调用延时函数的语句“delay( );”;但是中断的发生是随机的,何时执行中断服务函数事先无从知晓,主函数中不能事先安排调用中断服务函数的语句,也就是说,只有中断源申请中断且被CPU响应时,中断服务函数才能被执行,而且中断服务函数的执行是由硬件自动完成的,表面上主函数与中断服务函数没有任何联系。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 2.中断源 引起中断的事件称为中断源,例如,电话、敲门等。中断请求:中断源要求CPU为之服务的请求称为中断请求,如电话响了,敲门声等。 51单片机共有5个中断源,52单片机有6个中断源,分别是外部中断、定时/计数器中断、串行口中断。它们的名称、标识及中断触发方式分述如下: 外部中断0: ,由P3.2端输入中断请求信号。中断请求信号有两种输入方式:低电平有效或下降沿有效。当引脚 P3.2出现有效的低电平或下降沿时,表示外部中断0向CPU中请中断。 外部中断1: ,由P3.3端输入中断请求信号。中断触发方式同上。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 2.中断源 定时/计数器0:T0,由P3.4端输入计数脉冲。当定时/计数器T0溢出回零时,向CPU发出中断请求,该中断请求是由单片机内部引起的,与芯片外部引脚无关。 定时/计数器1:Tl,由P3.5端输入计数脉冲。中断触发方式同上。 定时/计数器2:T2,中断触发方式同上。T2是52单片机独有的。 串行口中断:RXD/TXD,由P3.0端接收串行数据,由P3.1端发送串行数据。每当串行口完成一帧串行数据的发送/接收时向CPU发出中断请求。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 3. 中断优先级 存在多个中断源时,单片机一般根据中断源的轻重缓急为其设置不同的优先级,中断优先级是单片机对中断申请响应次序的约定,一般先响应优先级高的中断请求,后响应优先级低的中断请求。 假如你正在洗衣服,电话响了,同时你烧的水也开了,只能去处理一件事,那你该处理哪件事呢?如果你认为电话重要,就可以先去接电话,既电话的优先级高于烧开水;反之,如果你非常节约,可以先去关火,那么水开的优先级高于电话。不管如何,总要确定一个处理的先后次序。单片机在执行程序时也会遇到类似的状况,即同一时刻有多个中断源向CPU发出中断请求,那么单片机应如何响应呢?
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 3. 中断优先级 表5-1 51单片机自然优先级与入口地址 中断源 默认 级别 中断号 (C语言) 入口地址 (汇编语言) 外部中断0: 最高 0003H 定时/计数器T0 第2 1 000BH 外部中断1: 第3 2 0013H 定时/计数器T1 第4 3 001BH 串行口中断 第5 4 0023H 定时/计数器T2 最低 5 002BH(52单片机) 51单片机中,采用“二级”优先级控制,5个中断源可分别设置为高优先级或低优先级,由特殊功能寄存器IP进行管理。用户不设置优先级时,采用由硬件电路确定的自然优先级,自然优先级如表5-1所示。
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 4. 中断的嵌套 CPU在中断服务还未结束时,可以响应优先级更高的中断请求,这种情况称为中断嵌套。只有高优先级中断源可以中断正在执行的低优先级中断服务函数,引起中断嵌套;同级或低优先级的中断源不能中断正在执行的中断服务函数。 例如,你正在接电话的时候,烧的水开了,如果放下电话,去关火,然后接着去讲电话,就发生了一次中断嵌套。嵌套过程如图5-2所示。 图5-2 中断嵌套示意图
项目五 中断系统及应用 5. 2 基础知识 5.2.1 中断概述 5. 入口地址 单片机响应中断源的请求时,要执行相应的中断服务函数,存放中断服务函数的起始单元的地址就是该中断源的入口地址,每个中断源的入口地址是固定的,各中断源的入口地址是不同的,这也就是主函数和中断服务函数表面上虽无任何联系,但在中断服务时却可以被正确执行的原因。 例如,接电话时要到放电话的地方去,关火要去厨房,响应不同中断源发出的请求时,要到不同的地点去处理,这个地点通常是固定的,它就相当于中断服务函数的入口地址。 51单片机中5个中断源的入口地址如表5-1所示,中断服务函数定义时应体现出中断源的入口地址。
项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 用户在应用单片机的中断技术时,可弱化中断的硬件电路和发生过程,重点学习如何通过软件管理和应用中断技术。因此,应先掌握与中断管理和控制有关的三类特殊功能寄存器:中断请求标志寄存器TCON和SCON、中断允许寄存器IE、中断优先级寄存器IP。它们之间的关系如图5-3所示。
项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 图5-3 51单片机中断系统结构
项目五 中断系统及应用 1. 中断请求标志寄存器 5.2.2 MCS-51单片机中断系统 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 中断请求标志寄存器中的各位用于存放中断源的中断请求,当CPU检测到有中断源发出中断请求时,由硬件将相应的中断标志置1。在中断请求未被CPU响应之前,中断标志一直保持高电平;只有在响应之后,才能够由硬件或用户清除中断标志。与中断标志相关的寄存器是TCON、SCON。 (1)定时/计数器控制寄存器TCON 定时/计数器控制寄存器TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)分别是88H~8FH,该寄存器可以位寻址。它主要用于控制定时/计数器的运行、停止,存放外部中断、定时器的中断标志及设置外部中断的触发方式。单片机复位后,TCON=0。TCON中与中断有关的各位如表5-2所示。
项目五 中断系统及应用 1. 中断请求标志寄存器 5.2.2 MCS-51单片机中断系统 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 表5-2 定时/计数器控制寄存器TCON(88H) 位序号 D7 D6 D5 D4 D3 D2 D0 位名称 TF1 — TF0 IE1 IT1 IE0 IT0 位地址 8FH 8EH 8CH 8BH 8AH 89H 88H TFl——定时/计数器T1溢出中断标志,详述见项目六。 TF0——定时/计数器T0溢出中断标志,详述见项目六。 IEl——外部中断1 中断标志,由件自动设置。 当IE1=1时,表示外部中断1向CPU申请中断;当IE1=0时,表示外部中断1未向CPU申请中断。 IT1——外部中断1 触发方式选择位,由用户初始化编程设置。
项目五 中断系统及应用 1. 中断请求标志寄存器 5.2.2 MCS-51单片机中断系统 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 当IT1=0时,为低电平触发。CPU定时采样引脚P3.3,若采样为低电平,则认为有中断请求,随即使IE1置1;若采样为高电平,则认为无中断请求或中断申请已撤消。 当IT1=1时,为下降沿触发。CPU先在引脚P3.3采样到高电平,后采样到低电平时,认为有中断请求,使IE1置1。 为了保证CPU对中断源的一次中断请求只响应一次,响应中断,转向中断服务函数后,一定要清除中断标志。不同的是采用低电平触发方式时,硬件和软件均不能清除外部中断标志,只能在中断返回前,撤消引脚P3.3上的低电平,否则将会导致一次请求多次响应;而在下降沿触发方式中,则是在CPU响应中断后,由硬件自动清除,与用户无关。因此在使用外部中断时,尽可能优先选用下降沿触发方式。
项目五 中断系统及应用 1. 中断请求标志寄存器 IT0——外部中断0 触发方式选择位,同IT1。 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 IT0——外部中断0 触发方式选择位,同IT1。 IE0——外部中断0 中断标志,同IE1。 TCON中的中断标志由硬件自动设置,外部中断的触发方式则由用户初始化编程设置,因此多用位寻址。例如,设置外部中断0为下降沿触发时,可用语句“IT0=1;”。
项目五 中断系统及应用 1. 中断请求标志寄存器 (2)中断允许寄存器IE 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (2)中断允许寄存器IE 中断源虽然发出了中断请求,置位中断标志,但是单片机是否响应中断申请以及响应哪一个中断源的申请,还要由中断允许寄存器IE来控制。IE采用“二级控制”,即CPU总允许与源允许。IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器可以位寻址。单片机复位后,IE=0,禁止中断。IE格式如表5-3。
项目五 中断系统及应用 1. 中断请求标志寄存器 (2)中断允许寄存器IE 5.2.2 MCS-51单片机中断系统 5. 2 基础知识 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (2)中断允许寄存器IE 表5-3 中断允许寄存器IE 位序号 D7 D6 D5 D4 D3 D2 D0 位名称 EA -- ET2 ES ET1 EX1 ET0 EX0 位地址 AFH ADH ACH ABH AAH A9H A8H
项目五 中断系统及应用 1. 中断请求标志寄存器 (2)中断允许寄存器IE 5.2.2 MCS-51单片机中断系统 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (2)中断允许寄存器IE EA——中断允许总控制位。 当EA=1时,CPU开中断,即CPU允许中断源申请中断。各中断源是否开中断还要由各中断源允许位决定。注意:此处的“开”是允许的意思。 当EA=0时,CPU关中断,即CPU禁止中断源申请中断。注意:此处的“关”是禁止的意思。 ET2——定时/计数器T2中断允许位(仅52单片机) 当ET2=1时,T2开中断; 当ET2=0时,T2关中断。
项目五 中断系统及应用 1. 中断请求标志寄存器 (2)中断允许寄存器IE 5.2.2 MCS-51单片机中断系统 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (2)中断允许寄存器IE ET0——定时/计数器T0中断允许位 当ET0=1时,T0开中断。 当ET0=0时,T0关中断。 EX0——外部中断0中断允许位 当EX0=1时,外部中断0开中断。 当EX0=0时,外部中断0关中断。 IE由用户初始化编程设置,寻址方式灵活。例如,要求串行口与定时/计数器T0同时开中断时,方法如下:字节寻址:IE=0x92; 位寻址:ES=1; ET0=1;EA=1; ES——串行口中断允许位 当ES=1时,串行口开中断。 当ES=0时,串行口关中断。 ETl——定时/计数器T1中断允许位 当ETl=l时,Tl开中断。 当ETI=0时,T1关中断。 EXl——外部中断l中断允许位 当EXl=l时,外部中断1开中断。 当EXl=0时,外部中断1关中断。
项目五 中断系统及应用 1. 中断请求标志寄存器 (3)中断优先级寄存器IP 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (3)中断优先级寄存器IP 中断优先级寄存器IP用于管理各中断源的中断优先级,采用2级优先级:高优先级和低优先级。在特殊功能寄存器中,IP的字节地址为B8H,位地址(由低位到高位)分别是B8H~BFH,该寄存器可以位寻址。单片机复位后,IP=0,各中断源均为低优先级。格式如表5-4所示。
项目五 中断系统及应用 1. 中断请求标志寄存器 (3)中断优先级寄存器IP 5.2.2 MCS-51单片机中断系统 5. 2 基础知识 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (3)中断优先级寄存器IP 表5-4 中断优先级寄存器IP 位序号 D7 D6 D5 D4 D3 D2 D0 位名称 -- PT2 PS PT1 PX1 PT0 PX0 位地址 BDH BCH BBH BAH B9H B8H
项目五 中断系统及应用 1. 中断请求标志寄存器 (3)中断优先级寄存器IP PT2——定时/计数器T2中断优先级控制位(仅52单片机) 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (3)中断优先级寄存器IP PT2——定时/计数器T2中断优先级控制位(仅52单片机) 当PT2=l时,T2定义为高优先级中断。 当PT2 =0时,T2定义为低优先级中断。 PS——串行口中断优先级控制位 当PS=l时,串行口定义为高优先级中断。 当PS=0时,串行口定义为低优先级中断。
项目五 中断系统及应用 1. 中断请求标志寄存器 (3)中断优先级寄存器IP PTl——定时/计数器T1中断优先级控制位 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (3)中断优先级寄存器IP PTl——定时/计数器T1中断优先级控制位 当PTI=1时,T1定义为高优先级中断。 当PTl=0时,T1定义为低优先级中断。 PXl——外部中断l中断优先级控制位 当PXl=1时,外部中断1定义为高优先级中断。 当PXI=0时,外部中断1定义为低优先级中断。
项目五 中断系统及应用 1. 中断请求标志寄存器 (3)中断优先级寄存器IP PT0——定时/计数器T0中断优先级控制位 项目五 中断系统及应用 5. 2 基础知识 5.2.2 MCS-51单片机中断系统 1. 中断请求标志寄存器 (3)中断优先级寄存器IP PT0——定时/计数器T0中断优先级控制位 当PT0=1时,T0定义为高优先级中断。 当PT0=0时,T0定义为低优先级中断。 PX0——外部中断0中断优先级控制位 当PX0=1时,外部中断0定义为高优先级中断。 当PX0=0时,外部中断0定义为低优先级中断。
项目五 中断系统及应用 5. 2 基础知识 5.2.3 中断初始化 单片机复位后,中断允许寄存器IE为0,处于关中断状态。采用中断方式时,必须进行中断初始化设置,设置后CPU就会按照要求对中断源进行管理和控制。 中断的初始化设置主要包含两部分,首先是根据控制要求将所需数据写入与中断有关的寄存器TCON、SCON、IE、IP,从而控制单片机的中断类型、中断开/关及中断源的优先级;其次是对相关中断源进行初始化,初始化一般安排在主函数中。
项目五 中断系统及应用 在51单片机中,外部中断初始化步骤为: (1)设置外部中断源的触发方式,由TCON寄存器中的IT0或IT1进行设置; 项目五 中断系统及应用 5. 2 基础知识 5.2.3 中断初始化 在51单片机中,外部中断初始化步骤为: (1)设置外部中断源的触发方式,由TCON寄存器中的IT0或IT1进行设置; (2)设置中断源优先级,数据写入IP;不设置时按照自然优先级进行响应; (3)开中断,设置IE。
项目五 中断系统及应用 5.2.4 中断服务函数的定义 中断服务函数是C51特有的,定义的一般形式为: 项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断服务函数的定义 中断服务函数是C51特有的,定义的一般形式为: void 函数名( ) interrupt 中断号 [using 工作组] { 中断服务函数内容 } 关键字interrupt是定义中断服务函数特有的,interrupt后面的中断号是编译器识别不同中断源的唯一依据,在C51中,当函数定义时出现关键字interrupt,系统编译时把对应的函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。中断号与中断源的对应关系如表5-1所示。
项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断服务函数的定义 关键字using用于选择该中断服务函数使用哪一组工作寄存器,它是一个可选项,没有时C51编译器在编译时会自动分配工作组,通常省略不写。 定义中断服务函数时应注意: (1)中断服务函数没有返回值,如果试图定义一个返回值,将得不到正确的结果,在定义中断服务函数时将其定义为void类型,以明确说明没有返回值。 (2)中断服务函数不能进行参数传递,如果中断服务函数中包含任何形参声明,都将导致编译出错,解决的方法是定义全局变量在中断服务函数与其它函数之间传递信息。
项目五 中断系统及应用 5.2.4 中断服务函数的定义 定义中断服务函数时应注意: 项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断服务函数的定义 定义中断服务函数时应注意: (3)在任何情况下都不能直接调用中断服务函数,否则会产生编译错误。中断服务函数的执行只能由中断源的中断请求引起。 (4)如果在中断服务函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断服务函数相同,否则不能输出正确的结果。 (5)中断服务函数最好写在源程序文件的尾部,并且禁止使用extern存储类型说明,以防止其他程序调用。
项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断应用举例 1. 断技术的软件编程 应用中断技术解决问题时,软件最少要包含主函数和中断服务函数。因此在软件设计时最重要的问题就是分析设计要求,确定该设计中哪些环节安排在主函数中,哪些安排在中断服务函数中,然后画出流程图,分别编写主函数和中断服务函数。
项目五 中断系统及应用 2.中断技术应用举例 5.2.4 中断应用举例 项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断应用举例 2.中断技术应用举例 例1 采用中断方式设置加1功能键。要求按键每按下一次,共阳型数码管上的数值增加1,数值变化范围为0-9;具有消除按键抖动的功能。 (1)硬件设计 分析题目要求后可知,硬件主要由单片机的最小系统、一个按键、一个共阳型数码管构成。与项目四中不同的是要求按键采用中断方式,因此按键只能与P3.2(外部中断0)或P3.3(外部中断1)相连;数码管的字段口与P2相连,电路如图5-4所示。
项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断应用举例 2.中断技术应用举例 图5-4 中断应用例1电路图
项目五 中断系统及应用 5. 2 基础知识 5.2.4 中断应用举例 2.中断技术应用举例 (2)软件设计 图5-5 中断应用例1流程图
Thank You!