《单片机原理与应用-KFIL C项目教程(西电版)项目五 中断系统及其应用》由会员分享,可在线阅读,更多相关《单片机原理与应用-KFIL C项目教程(西电版)项目五 中断系统及其应用(83页珍藏版)》请在金锄头文库上搜索。
1、项目五 中断系统及其应用,5.1 项目说明 5.2 基础知识 5.3 项目实施 5.4 项目评价 5.5 拓展与提高,5.1 项 目 说 明 项目任务 为51单片机控制系统设计“加1键”和“减1键”。要求:外部中断0每中断一次显示器的数值加1,外部中断1每中断一次显示器的数值减1;数值在“05000”之间变化;中断触发方式为下降沿触发;并且能够消除按键抖动。 知识培养目标 (1) 掌握中断的概念,正确解释中断过程。 (2) 掌握51单片机的5个中断源、中断入口地址、中断初始化。,(3) 掌握中断服务函数的定义。 (4) 掌握该项目的控制实例,并能灵活应用。 (5) 了解单片机中断源的扩展方法。
2、 能力培养目标 (1) 能利用所学知识正确地理解中断概念。 (2) 能利用所学知识编写中断应用程序。 (3) 能利用所学知识解决实际工程问题。,5.2 基 础 知 识 5.2.1 中断概述 在项目四中,由于按键的闭合是随机的,为了实时获得键盘的信息,CPU需要主动不断地检测键盘,因此没有充足的时间去完成其他任务,从而降低了CPU的利用率,无法实现复杂的控制要求,不过采用中断技术可解决这个问题。 中断技术使单片机具有了实时处理外部或内部随机事件的能力,它通过硬件来改变程序的运行方向,既和硬件有关,也与软件有关,处理中断的硬、软件共同构成中断控制系统。,1. 中断的概念 什么是中断呢?中断的过程与
3、生活实例非常相似。你正在家里洗衣服,突然听到电话铃响了,这时,你停止洗衣服,去接电话,与来电话的人交谈,接完电话后,回去继续洗衣服,这个过程就相当于发生了一次中断,如图5-1(a)所示。,图5-1 中断过程,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断请求);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断,即CPU正在执行的程序被打断,如图5-1(b)所示。 由图5-1(b)可知,中断包含中断请求、中断响应、中断服务、中断返回4个过程。4个过
4、程中,中断服务需要由用户编写相应的程序完成,该程序称为中断服务函数(与来电话的人交谈)。CPU被打断之前运行的程序称为主函数(洗衣服),而中断请求、中断响应及中断返回三个过程则由硬件来自动完成。,中断的过程与函数的调用类似,但又有其特殊之处。函数的调用是在主调函数中事先由用户安排好的,主调函数与其他函数通过调用语句相联系,如调用延时函数的语句“delay();”;但是中断的发生是随机的,何时执行中断服务函数事先无从知晓,主函数中不能事先安排调用中断服务函数的语句,也就是说,只有中断源申请中断且被CPU响应时,中断服务函数才能被执行,而且中断服务函数的执行是由硬件自动完成的,表面上主函数与中断服
5、务函数没有任何联系。,2. 中断源 引起中断的事件称为中断源,如电话、敲门等。中断源要求CPU为之服务的请求称为中断请求,如电话铃响、敲门声等。 51单片机共有5个中断源,52单片机有6个中断源,分别是外部中断、定时/计数器中断、串行口中断。它们的名称、标识及中断触发方式分述如下: 外部中断0: ,由P3.2端输入中断请求信号。中断请求信号有低电平有效或下降沿有效两种输入方式。当引脚P3.2出现有效的低电平或下降沿时,表示外部中断0向CPU申请中断。,外部中断1: ,由P3.3端输入中断请求信号。中断触发方式同上。 定时/计数器0:T0,由P3.4端输入计数脉冲。当定时/计数器T0溢出回零时,
6、向CPU发出中断请求,该中断请求是由单片机内部引起的,与芯片外部引脚无关。 定时/计数器1:Tl,由P3.5端输入计数脉冲。中断触发方式同上。 定时/计数器2:T2,中断触发方式同上。T2是52单片机独有的。 串行口中断:RXD/TXD,由P3.0端接收串行数据,由P3.1端发送串行数据。每当串行口完成一帧串行数据的发送/接收时向CPU发出中断请求。,3. 中断优先级 存在多个中断源时,单片机一般根据中断源的轻重缓急为其设置不同的优先级,中断优先级是单片机对中断申请响应次序的约定,一般先响应优先级高的中断请求,后响应优先级低的中断请求。 假如你正在洗衣服,电话铃响了,同时你烧的水也开了,只能去
7、处理一件事,那你该处理哪件事呢?如果你认为电话重要,就可以先去接电话,即电话的优先级高于水开;反之,如果你非常节约,可以先去关火,那么水开的优先级高于电话。无论如何,总要确定一个处理的先后次序。单片机在执行程序时也会遇到类似的状况,即同一时刻有多个中断源向CPU发出中断请求,那么单片机应如何响应呢?,51单片机中,采用“二级”优先级控制,5个中断源可分别设置为高优先级或低优先级,由特殊功能寄存器IP进行管理。当用户不设置优先级时,可采用由硬件电路确定的自然优先级,自然优先级如表5-1所示。,表5-1 51单片机自然优先级与入口地址,4. 中断嵌套 CPU在中断服务还未结束时,可以响应优先级更高
8、的中断请求,这种情况称为中断嵌套。只有高优先级中断源可以中断正在执行的低优先级中断服务函数,引起中断嵌套;同级或低优先级的中断源不能中断正在执行的中断服务函数。 例如,当你正在接电话时,烧的水开了,如果放下电话,去关火,然后接着去讲电话,就发生了一次中断嵌套。中断嵌套过程如图5-2所示。,图5-2 中断嵌套示意图,5. 入口地址 当单片机响应中断源的请求时,要执行相应的中断服务函数,存放中断服务函数的起始单元的地址就是该中断源的入口地址,每个中断源的入口地址是固定的,各中断源的入口地址是不同的,这也就是主函数和中断服务函数表面上虽无任何联系,但在中断服务时却可以被正确执行的原因。 例如,接电话
9、时要到放电话的地方去,关火要去厨房,响应不同中断源发出的请求时,要到不同的地点去处理,这个地点通常是固定的,它就相当于中断服务函数的入口地址。 51单片机中5个中断源的入口地址如表5-1所示,中断服务函数定义时应体现出中断源的入口地址。,5.2.2 51单片机中断系统 用户在应用单片机的中断技术时,可弱化中断的硬件电路和发生过程,重点学习如何通过软件管理和应用中断技术。因此,应先掌握与中断管理和控制有关的三类特殊功能寄存器:中断请求标志寄存器TCON和SCON、中断允许寄存器IE、中断优先级寄存器IP。它们之间的关系如图5-3所示。,图5-3 51单片机中断系统结构,1. 中断请求标志寄存器
10、中断请求标志寄存器中的各位用于存放中断源的中断请求,当CPU检测到有中断源发出中断请求时,由硬件将相应的中断标志置1。在中断请求未被CPU响应之前,中断标志一直保持高电平;只有在响应之后,才能够由硬件或用户清除中断标志。与中断标志相关的寄存器是TCON、SCON。,1) 定时/计数器控制寄存器TCON 定时/计数器控制寄存器TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)分别是88H8FH,该寄存器可以位寻址。它主要用于控制定时/计数器的运行、停止,存放外部中断、定时器的中断标志及设置外部中断的触发方式。单片机复位后,TCON=0。TCON中与中断有关的各位如表5-2所示。
11、,表5-2 定时/计数器控制寄存器TCON(88H),TF1定时/计数器T1溢出中断标志,详述见项目六。 TF0定时/计数器T0溢出中断标志,详述见项目六。 IE1外部中断1 中断标志,由硬件自动设置。当IE1=1时,表示外部中断1向CPU申请中断;当IE1=0时,表示外部中断1未向CPU申请中断。 IT1外部中断1 触发方式选择位,由用户初始化编程设置。 当IT1=0时,为低电平触发。CPU定时采样引脚P3.3,若采样为低电平,则认为有中断请求,随即使IE1置1;若采样为高电平,则认为无中断请求或中断申请已撤销。,当IT1=1时,为下降沿触发。CPU先在引脚P3.3采样到高电平,后采样到低电
12、平时,认为有中断请求,使IE1置1。 为了保证CPU对中断源的一次中断请求只响应一次,在CPU响应中断,转向中断服务函数后,一定要清除中断标志。不同的是采用低电平触发方式时,硬件和软件均不能清除外部中断标志,只能在中断返回前,撤销引脚P3.3上的低电平,否则将会导致一次请求多次响应;而在下降沿触发方式中,则是在CPU响应中断后,由硬件自动清除,与用户无关。因此在使用外部中断时,尽可能优先选用下降沿触发方式。,IT0外部中断0 触发方式选择位,同IT1。 IE0外部中断0 中断标志,同IE1。 TCON中的中断标志由硬件自动设置,外部中断的触发方式则由用户初始化编程设置,因此多用位寻址。例如,设
13、置外部中断0为下降沿触发时,可用语句“IT0=1;”。 2) 定时/计数器控制寄存器SCON 定时/计数器控制寄存器SCON的内容详见项目八。,2. 中断允许寄存器IE 中断源虽然发出了中断请求,置位中断标志,但是单片机是否响应中断申请以及响应哪一个中断源的申请,还要由中断允许寄存器IE来控制。IE采用二级控制,即CPU总允许与源允许。IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8HAFH,该寄存器可以位寻址。单片机复位后,IE=0,禁止中断。IE中与中断有关的各位如表5-3所示。,表5-3 中断允许寄存器IE(A8H),EA中断允许总控制位。当EA=1时,CPU开
14、中断,即CPU允许中断源申请中断。各中断源是否开中断还要由各中断源允许位决定。注意:此处的“开”是允许的意思。 当EA=0时,CPU关中断,即CPU禁止中断源申请中断。注意:此处的“关”是禁止的意思。 ET2定时/计数器T2中断允许位(仅52单片机)。当ET2=1时,T2开中断;当ET2=0时,T2关中断。 ES串行口中断允许位。当ES=1时,串行口开中断;当ES=0时,串行口关中断。 ET1定时/计数器T1中断允许位。当ET1=1时,T1开中断;当ET1=0时,T1关中断。,EX1外部中断1中断允许位。当EX1=1时,外部中断1开中断;当EX1=0时,外部中断1关中断。 ET0定时/计数器T
15、0中断允许位。当ET0=1时,T0开中断;当ET0=0时,T0关中断。 EX0外部中断0中断允许位。当EX0=1时,外部中断0开中断;当EX0=0时,外部中断0关中断。 IE由用户初始化编程设置,寻址方式灵活。例如,要求串行口与定时/计数器T0同时开中断时,方法如下: 字节寻址:IE=0x92; 位寻址:ES=1; ET0=1; EA=1;,3. 中断优先级寄存器IP 中断优先级寄存器IP用于管理各中断源的中断优先级,采用2级优先级:高优先级和低优先级。在特殊功能寄存器中,IP的字节地址为B8H,位地址(由低位到高位)分别是B8HBFH,该寄存器可以位寻址。单片机复位后,IP=0,各中断源均为
16、低优先级。IP中与中断有关的各位如表5-4所示。,表5-4 中断优先级寄存器IP(B8H),PT2定时/计数器T2中断优先级控制位(仅52单片机)。当PT2=1时,T2定义为高优先级中断;当PT2 =0时,T2定义为低优先级中断。 PS串行口中断优先级控制位。当PS=1时,串行口定义为高优先级中断;当PS=0时,串行口定义为低优先级中断。 PT1定时/计数器T1中断优先级控制位。当PT1=1时,T1定义为高优先级中断;当PTl=0时,T1定义为低优先级中断。 PX1外部中断1中断优先级控制位。当PX1=1时,外部中断1定义为高优先级中断;当PX1=0时,外部中断1定义为低优先级中断。,PT0定时/计数器T0中断优先级控制位。当PT0=1时,T0定义为高优先级中断;当PT0=0时,T0定义为低优先级中断。 PX0外部中断0中断优先级控制位。当PX0=1时,外部中断0定义为高优先级中断;当PX0=0时,外部中断0定义为低优先级中断。 P由用户初始化编程设置,寻址方式灵活。例如,同时设置外部中断0与串行口为高优先级可采用如下方法: 字节寻址:IP=0x11; 位寻址:PX0=1; PS=1; 这样设置后,如果串行口与外部中断0同时向CPU申请中断,则根据自然优先级先响应外部中断0,后响应串行口。,