1、项目3中断控制的花样彩灯设计 模块模块3 3中断控制的花样彩灯设计中断控制的花样彩灯设计3.1 项目描述项目描述3.2 项目目的与要求项目目的与要求3.3 项目支撑知识链接项目支撑知识链接3.4 项目实施项目实施 项目小结项目小结项目拓展技能与练习项目拓展技能与练习 项目3中断控制的花样彩灯设计【项目导入】早期的单片机系统中并没有引入中断机制,随着工业技术的发展,要求在工业控制系统中能实时、快速、准确地处理一些突发事件,由此促使了中断技术的出现。如今中断技术在单片机中的应用越来越广泛。在此,我们通过设计一个项目中断控制的花样彩灯,让同学们掌握中断技术在单片机中的使用。项目3中断控制的花样彩灯设
2、计【项目目标】1.知识目标(1)理解中断的概念;(2)熟悉单片机的中断结构和控制;(3)理解中断控制寄存器的各位含义;(4)掌握中断的处理过程。(5)掌握C51中断函数的定义。项目3中断控制的花样彩灯设计 2.能力目标(1)编程中会使用中断各寄存器;(2)掌握中断的入口地址的安排;(3)能运用C51语言编写中断应用程序。项目3中断控制的花样彩灯设计 3.1 项项 目目 描描 述述单片机的中断技术在工业控制与测量领域有着广泛的应用。本项目通过用一个按键产生的中断信号来控制花样彩灯的闪亮方式。通过该项目的学习,学生可掌握单片机中断的基本概念、中断的处理过程以及中断服务程序的编写,为以后单片机系统的
3、开发奠定扎实的基础。项目3中断控制的花样彩灯设计 3.2 项目目的与要求项目目的与要求本项目采用外部中断方式控制彩灯的运行,通过按动按键产生中断,使得彩灯以三种方式闪亮。项目在实施过程中需要解决以下关键问题:(1)各中断控制寄存器的每一位的值如何确定?(2)采用何种中断信号?如何处理该中断过程?(3)按键按下后,中断如何响应?(4)中断服务程序如何编写?项目3中断控制的花样彩灯设计 3.3 项目支撑知识链接项目支撑知识链接3.3.1 中断系统概述中断系统概述1中断的概念在现实生活中,往往会遇到这样的事情:你在看书电话响了接电话通话完毕从刚才停止的地方继续看书。这是一个典型的中断现象,为什么会出
4、现此现象呢?就是因为当你正做一件事情(看书)时,突然出现了一个重要的事情要处理(接电话),而一个人又不能同时完成两项任务,这时就必须采取穿插着去做的方法来实现。项目3中断控制的花样彩灯设计 与生活中的中断现象相似,在单片机执行程序的过程中,由于内部或者外部发生某一突发事件去请求CPU处理(中断发生);CPU暂时中断当前程序的执行,转去处理所发生的事件(中断响应和中断服务);待处理完毕后,再返回来执行原来被中断的程序(中断返回)。这一处理过程称为中断。项目3中断控制的花样彩灯设计 在中断系统中,常用到以下几个概念:CPU正常情况下运行的程序称为主程序;向CPU提出中断申请的设备称为中断源;中断源
5、向CPU所发出的请求中断的信号称为中断请求;CPU在满足条件的情况下,接受中断申请,终止现行的执行转而为申请中断的对象服务称为中断响应;为服务对象服务的程序称为中断服务程序;现行程序被中断的地址称为断点;中断服务程序结束后,返回到原来的程序称为中断返回。单片机中断过程示意图如图3-1所示。项目3中断控制的花样彩灯设计 图3-1 单片机中断过程示意图 项目3中断控制的花样彩灯设计 此处需要注意两点,分别是:保护断点和保护现场。保护断点指的是当CPU响应外设提出的中断请求时,在转入中断服务程序之前,把主程序断点(程序计数器PC的当前值)保存起来,以便中断服务程序执行结束返回到主程序后,从断点处又开
6、始继续执行主程序。项目3中断控制的花样彩灯设计 保护现场指的是CPU执行中断处理程序时,可能要使用主程序中使用过的累加器、寄存器或标志位,为了使这些单元的值在中断服务程序中不被冲掉,在进入中断服务程序前,要将有关寄存器保护起来。中断服务程序执行完时,还必须恢复原寄存器的内容及原程序中断处的地址,即恢复现场和恢复断点。项目3中断控制的花样彩灯设计 289C51中断系统的结构89C51系列单片机的中断系统有5个中断源,分别是、T0、T1和串行端口。4个中断控制寄存器TCON、SCON、IE、IP用于控制中断类型、锁存中断标志以及控制中断的开/关和中断源的优先级别。5个中断源有两个优先级,可实现二级
7、中断服务嵌套,由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求,由中断优先级寄存器IP安排各中断源的优先级,同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。项目3中断控制的花样彩灯设计 89C51单片机的中断系统包括中断请求标志位(在相关的特殊功能寄存器中)、中断允许寄存器IE、中断优先级寄存器IP及内部硬件查询电路,如图3-2所示,图中反映出了89C51单片机中断系统的功能和控制情况。项目3中断控制的花样彩灯设计 图3-2 89C51中断系统内部结构图项目3中断控制的花样彩灯设计 3中断的功能随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与
8、慢速I/O设备的数据传送问题,而且还具有如下功能:(1)提高CPU的工作效率。中断请求发生于时间不确定的事件(如定时时间到的处理)中,在中断请求发生时需要CPU暂停当前的工作。因此采用中断技术使CPU避免了不必要的等待和查询,大大提高了CPU的工作效率,实现了CPU与外围部件或外部设备的并行工作。项目3中断控制的花样彩灯设计(2)处理故障。把那些可以预知的故障(如除数为0、掉电等)作为中断源,编制相应的故障处理中断服务程序,这样当故障发生时,CPU就能及时发现并自动进行处理。(3)实现实时控制。在实时测控系统中,要求单片机能对现场的许多随机参数、信息进行快速分析、运算并及时处理,而中断机制正好
9、满足了这种在任何时刻提出处理请求的实时控制。(4)实现人机交互。用户需要对单片机的工作进行干预时,可以通过按键请求使单片机按照用户的意图进行工作。项目3中断控制的花样彩灯设计 3.3.2 中断的处理过程中断的处理过程1中断源89C51系列单片机有5个中断源:(P3.2),(P3.3),定时器/计数器T0、T1的溢出中断,串行端口的发送(TXD)和接收(RXD)中断(只占一个中断源)。下面分别作一介绍。项目3中断控制的花样彩灯设计(1)(P3.2):外部中断0请求信号输入引脚。可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志I
10、E0(TCON.1)置1,开始向CPU申请中断。INT0项目3中断控制的花样彩灯设计(2)(P3.3):外部中断1请求信号输入引脚。可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,开始向CPU申请中断。INT1项目3中断控制的花样彩灯设计(3)T0(P3.4):内部中断,片内定时器/计数器T0溢出时发出中断请求。当定时器/计数器T0发生溢出时,置位TF0,向CPU申请中断。(4)T1(P3.5):内部中断,片内定时器/计数器T1溢出时发出中断请求。当定时器/计数器T1发生溢出时,置位TF1,向CP
11、U申请中断。(5)串行端口:内部中断,包括串行接收中断RI和串行发送中断TI。当接口接收完一帧串行数据时置位RI,或当串行接口发送完一帧串行数据时置位TI,向CPU申请中断。项目3中断控制的花样彩灯设计 2中断申请标志(TCON和SCON)在中断系统中,应用何种中断,采用何种触发方式,是由定时器/计数器控制寄存器TCON和串行端口控制寄存器SCON的相应位规定的。TCON和SCON均属于特殊功能寄存器,字节地址分别为88H和98H,两者都可以进行位寻址。项目3中断控制的花样彩灯设计 1)定时器/计数器控制寄存器TCONTCON是定时器/计数器控制寄存器,其字节地址为88H,可进行位寻址。这个寄
12、存器有两个作用,即除了控制定时器/计数器T0、T1的溢出中断和锁存T0、T1的溢出中断标志位外,还控制外部中断的触发方式和锁存外部中断请求标志。其格式如下:项目3中断控制的花样彩灯设计 TCON寄存器各控制位的含义如下:IT0(TCON.0):选择外部中断的中断触发方式。当IT0=0时,为电平触发方式,低电平有效;当IT0=1时,为边沿触发方式,下降沿有效(即P3.2引脚信号出现负跳变有效)。IT1(TCON.2):选择外部中断的中断触发方式。当IT1=0时外部中断的中断触发方式为电平触发方式,低电平有效;当IT1=1时,外部中断的中断触发方式为边沿触发方式,负跳变有效(10)。INT0INT
13、1INT1INT1项目3中断控制的花样彩灯设计 IE0(TCON.1):外部中断的中断请求标志。当IE0=1时,表示外部中断向CPU请求中断。IE1(TCON.3):外部中断的中断请求标志。当IE1=1时,表示外部中断向CPU请求中断。TF0(TCON.5):片内定时器/计数器T0溢出中断请求标志。定时器/计数器的核心为加法器,当定时器/计数器T0发生定时或计数溢出时,由硬件置位TF0,向CPU申请中断,CPU响应中断后,会自动对TF0清零。INT0INT0INT1INT1项目3中断控制的花样彩灯设计 TF0(TCON.5):片内定时器/计数器T0溢出中断请求标志。定时器/计数器的核心为加法器
14、,当定时器/计数器T0发生定时或计数溢出时,由硬件置位TF0,向CPU申请中断,CPU响应中断后,会自动对TF0清零。TF1(TCON.7):片内定时器/计数器T1溢出中断请求标志。其操作功能与TF0类同。项目3中断控制的花样彩灯设计 TR0(TCON.4):定时器/计数器T0的启动/停止控制位,由软件进行设定。TR0=0,停止T0定时(或者计数);TR0=1,启动T0定时(或者计数)。TR1(TCON.6):定时器/计数器T1的启动/停止控制位,由软件进行设定。TR1=0,停止T1定时(或者计数);TR1=1,启动T1定时(或者计数)。项目3中断控制的花样彩灯设计 2)串行端口控制寄存器SC
15、ONSCON为串行端口控制寄存器,其字节地址为98H,也可以进行位寻址。串行端口的接收和发送数据中断请求标志位(RI、TI)被锁存在端口控制寄存器SCON中,其格式如下:项目3中断控制的花样彩灯设计 SCON寄存器各位的含义如下:RI(SCON.0):串行端口接收中断请求标志位。在串行端口允许接收时,每接收完一帧数据,由硬件自动将RI位置1。同样,CPU响应中断时不会清除RI,RI位的清0必须由用户用指令来完成。TI(SCON.1):串行端口发送中断请求标志位。CPU将一个数据写入发送缓冲器SBUF时,就启动发送,每发送完一帧串行数据后,硬件置位TI。但CPU响应中断时,并不清除TI,必须在中
16、断服务程序中由软件对TI清0。项目3中断控制的花样彩灯设计 在中断系统中,将串行端口的接收中断RI和发送中断TI经逻辑或运算后作为内部的一个中断源。当CPU响应串行端口中断请求时,CPU并不清楚是接收中断请求还是发送中断请求,所以用户在编写串行端口中断服务程序时,在程序中必须识别是RI还是TI产生的中断请求,从而执行相应的中断服务程序。另外,SCON其他各位的功能和作用与串行通信有关,将在项目5中介绍。项目3中断控制的花样彩灯设计 3中断允许控制89C51对中断源的开放或屏蔽是由中断允许寄存器IE控制的,IE的字节地址为A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时IE被清为0。通过
17、对IE各位的置1或清0操作,可实现打开或屏蔽某个中断。IE的格式如下:项目3中断控制的花样彩灯设计 IE寄存器各位的含义如下:EA(IE.7):中断允许总控制位,其状态由用户通过程序进行控制。EA=0,中断禁止,即关中断;EA=1,中断总允许,即开中断。对各中断源的中断请求是否允许还取决于各中断源的中断允许控制位的状态。EX0(IE.0):外中断0(即)的中断允许控制位。EX0=0,禁止中断;EX0=1,允许中断。INT0INT0项目3中断控制的花样彩灯设计 ET0(IE.1):定时器T0的中断允许控制位。ET0=0,禁止T0中断;ET0=1,允许T0中断。EX1(IE.2):外中断1(即)的
18、中断允许控制位。EX1=0,禁止中断;EX1=1,允许中断。ET1(IE.3):定时器T1的中断允许控制位。中断总允许时,ET1=0,禁止T1中断;ET1=1,允许T1中断。INT1INT1INT1项目3中断控制的花样彩灯设计 ES(IE.4):串行口中断允许控制位。中断总允许时,ES=0,禁止串行口中断;ES=1,允许串行口中断。89C51系统复位后,IE寄存器中各位均被清0,禁止所有的中断。在应用时,由软件进行设定,既可以使用位操作,也可以使用字节操作来实现对IE的设置。项目3中断控制的花样彩灯设计 4中断优先级控制及中断嵌套1)中断优先级89C51单片机有两个中断优先级,即可实现二级中断
19、服务程序嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来控制的。IP的状态也由软件设定,某位设定为1时,相应的中断源为高优先级中断;某位设定为0时,相应的中断源为低优先级中断。IP寄存器的字节地址为B8H,既可以按字节访问,又可以按位访问。其格式如下:项目3中断控制的花样彩灯设计 IP寄存器的各位的含义如下:PX0(IP.0):外中断0的中断优先级控制位。PX0=0时,外中断0为低中断优先级;PX0=1时,外中断0为高中断优先级。项目3中断控制的花样彩灯设计 PT0(IP.1):定时器T0的中断优先级控制位。PT0=0时,T0为低中断优先级;PT0=1时,T0为高中断优
20、先级。PX1(IP.2):外中断1的中断优先级控制位。PX1=0时,外中断1为低中断优先级;PX1=1时,外中断1为高中断优先级。PT1(IP.3):定时器T1的中断优先级控制位。PT1=0时,T1为低中断优先级;PT1=1时,T1为高中断优先级。项目3中断控制的花样彩灯设计 PS(IP.4):串行中断源的中断优先级控制位。PS=0时,串行中断为低中断优先级;PS=1时,串行中断为高中断优先级。若某几个控制位为1,则相应的中断源就规定为高级中断;反之,若某几个控制位为0,则相应的中断源就规定为低级中断。对同时到来的优先级中断请求,将按照自然优先级来确定中断响应次序,如表3-1所示。项目3中断控
21、制的花样彩灯设计 项目3中断控制的花样彩灯设计 2)中断嵌套当CPU正在执行中断服务程序时,如果出现了另一个优先级比它高的中断请求,则CPU就暂时中止执行原来优先级较低的中断源的服务程序,保护当前的断点,转去响应优先级更高的中断请求并为其服务。待服务结束后,再去执行优先级别较低的原中断服务程序。该过程被称为中断嵌套(类似于子程序的嵌套),该中断系统称为多级中断系统。中断嵌套的过程如图3-3所示。项目3中断控制的花样彩灯设计 图3-3 中断嵌套示意图项目3中断控制的花样彩灯设计 5中断处理过程 89C51单片机的中断处理过程可分为三个阶段,即中断响应、中断处理和中断返回,如图3-4所示。单片机工
22、作时,在每个机器周期中都去查询各个中断标记位,如果是“1”,就说明有中断请求;接下来判断中断请求是否满足响应条件,若满足响应条件,就进入中断处理;中断处理完毕,进行中断返回,继续执行指令。项目3中断控制的花样彩灯设计 图3-4 中断处理过程的三个阶段项目3中断控制的花样彩灯设计 1)中断响应中断响应的条件是:中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。同时满足这三个条件时,CPU才有可能响应中断。图3-5所示为某中断的响应时序。从中断源提出中断申请,到CPU响应中断(如果满足了响应中断响应条件),需要经历一定的时间。项目3中断控制的花样彩灯设计 图3-5 中断的响应
23、时序项目3中断控制的花样彩灯设计 89C51的中断响应时间(从标志置1到进入相应的中断服务)至少有3个完整的机器周期。中断控制系统对各中断标志进行查询需要1个机器周期,如果响应条件具备,则CPU执行中断系统提供的相应向量地址的硬件长调用指令要占用2个机器周期。此外,如果中断响应过程受阻,则要增加等待时间。若同级或高级中断正在进行,则所需要的附加等待时间取决于正在执行的中断服务程序的长短,等待的时间不确定。若没有同级或高级中断正在进行,则所需要的附加时间在35个机器周期之间。项目3中断控制的花样彩灯设计 2)中断处理如果一个中断被响应,则按下列过程进行处理:(1)给相应的优先级触发器状态置1,指
24、明CPU正在响应的中断优先级的级别,同时屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。(2)执行一个硬件生成子程序调用指令,使控制转到相应的中断入口向量地址,并清除中断源的中断请求标志(TI和RI除外)。项目3中断控制的花样彩灯设计(3)在执行中断服务程序之前,CPU只保护一个地址(PC的值),如果主程序和中断服务子程序都用到一些公共存储空间(如A、PSW、DPTR等),那么执行中断服务子程序前将这些数据保存起来,以免返回主程序时出现错误。(4)转入相应的中断服务程序入口,即将被响应的中断入口向量地址送入PC中,执行中断服务程序。51单片机的五个中断源都有各自的入口地址,见表3-1。项
25、目3中断控制的花样彩灯设计 6中断的应用1)具体的中断服务程序CPU响应中断结束后即转至中断服务程序的入口,从中断服务程序的第一条指令开始到返回指令为止。不同的中断服务的内容及要求各不相同,其处理过程也有所区别。一般情况下,中断处理包括两部分内容:一是保护现场,二是为中断源服务。项目3中断控制的花样彩灯设计 C51编译器支持在C源程序中直接开发中断过程,在中断服务程序中,必须指定对应的中断号,用中断号确定该中断服务程序是哪个中断所对应的中断服务程序。中断服务程序格式:Void 函数名(参数)interrupt n using m 函数体语句;其中,interrupt后面的n是中断号;关键字us
26、ing后面的m是所选择的寄存器组,取值范围为03,定义中断时using是个选项,可以省略不用。项目3中断控制的花样彩灯设计 2)中断服务程序举例【例3-1】利用单片机的外部中断0响应按键开关信号,当有按键按下时会触发中断,中断发生时将LED状态取反,产生LED的亮灭由按键(中断)控制,电路图如图3-6所示。项目3中断控制的花样彩灯设计 图3-6 中断控制的单个LED灯XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1
27、.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51中断源C122pFC222pFC310FX112MHzR110kD1R2220项目3中断控制的花样彩灯设计 C51程序如下:#include#define uchar unsigned char
28、#define uint unsigned intsbit LED=P00;/*主程序*/void main()LED=1;EA=1;/允许中断项目3中断控制的花样彩灯设计 EX0=1;/使用外部中断0T0=1;/选择外部的中断的中断触发方式 while(1);/*INT0中断函数*/void EX_INT0()interrupt 0 LED=LED;/控制LED亮灭 项目3中断控制的花样彩灯设计【例3-2】设计中断计数,要求每次按下按键时触发中断,中断程序累加计数,计数值显示在3只数码管上,按下清零键时数码管清零,硬件电路如图3-7所示。INT0INT0项目3中断控制的花样彩灯设计 图3-7
29、 中断控制的计数电路p0.0p0.1p0.2p0.3p0.4p0.5p0.6p0.0p0.1p0.2p0.3p0.4p0.5p0.6p0.0p0.1p0.2p0.3p0.4p0.5p0.6p1.0p1.1p1.2p1.3p1.4p1.5p1.6p1.0p1.1p1.2p1.3p1.4p1.5p1.6XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1
30、.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5123456781RP1RESPACK-7计数清零C122pFC222pFC310FX112MHzR110k项目3中断控制的花样彩灯设计 C51程序如下:#include#define uchar unsigned char#define uint unsigned
31、 int/09的段码uchar code DSY_CODE=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00;/计数值分解后各个待显示的数位uchar DSY_Buffer=0,0,0;uchar Count=0;sbit Clear_Key=P36;/数码管上显示计数值项目3中断控制的花样彩灯设计 void Show_Count_ON_DSY()DSY_Buffer2=Count/100;/获取3个数DSY_Buffer1=Count%100/10;DSY_Buffer0=Count%10;if(DSY_Buf
32、fer2=0)/高位为0时不显示DSY_Buffer2=0 x0a;if(DSY_Buffer1=0)/高位为0,若第二位为0同样不显示DSY_Buffer1=0 x0a;项目3中断控制的花样彩灯设计 P0=DSY_CODEDSY_Buffer0;P1=DSY_CODEDSY_Buffer1;P2=DSY_CODEDSY_Buffer2;/主程序void main()项目3中断控制的花样彩灯设计 P0=0 x00;P1=0 x00;P2=0 x00;IE=0 x81;/允许INT0中断IT0=1;/下降沿触发while(1)项目3中断控制的花样彩灯设计 if(Clear_Key=0)Count
33、=0;/清0Show_Count_ON_DSY();/INT0中断函数 void EX_INT0()interrupt 0Count+;/计数值递增项目3中断控制的花样彩灯设计 3.4 项项 目目 实实 施施3.4.1 项目硬件设计项目硬件设计中断控制的花样彩灯系统的结构比较简单,其硬件电路模块包括电源电路、时钟电路、按键复位电路和LED灯接口电路,具体硬件电路如图3-8所示。项目3中断控制的花样彩灯设计 图3-8 中断控制的彩灯电路图项目3中断控制的花样彩灯设计 3.4.2 项目软件设计项目软件设计设计中采用单片机的外部中断方式来实现对按键输入进行处理。一般中断函数和主函数之间的运行相当于两
34、个程序并行运行,在本项目中,用中断函数控制彩灯的显示。在本程序设计中,采用的主函数和中断函数流程图如图3-9所示。项目3中断控制的花样彩灯设计 图3-9 彩灯设计的主函数和中断函数流程图项目3中断控制的花样彩灯设计 另外,设计中我们采用了一个判断变量f,当不发生中断时,f的值不变,程序保持运行,使彩灯按照其中的一种花样闪亮,当按下S键时,单片机终止原来的程序运行,调用中断子函数,则f的值发生一次改变,在中断返回后,主程序再次执行到判断变量f的值,由于f的值已改变,所以将执行一个彩灯控制的子程序,彩灯将按照另一种花样变化显示。在按键时会有一定的延时,采用延时程序消除按键产生的抖动。项目3中断控制
35、的花样彩灯设计 根据程序流程图,写出单片机C51语言程序:#include#define uchar unsigned char uchar light,f,b;/*延时0.5 s的子函数*/void delay05s()uchar i,j,k;for(i=5;i0;i-)for(j=200;j0;j-)for(k=250;k0;k-);项目3中断控制的花样彩灯设计/*延时10 ms的子函数*/void delay10ms()uchar i,k;for(i=20;i0;i-)for(k=250;k0;k-);/*左移点亮彩灯*/void left()项目3中断控制的花样彩灯设计 light=l
36、ight1;if(light=0)light=0 x01;P2=light;项目3中断控制的花样彩灯设计/*用户自定义点亮彩灯*/void assum()uchar code dispcode8=0 xff,0 x7e,0 xbd,0 xdb,0 xe7,0 xdb,0 xbd,0 x7e;if(b=7)b=0;else b+;P2=dispcodeb;/*主函数*/void main()项目3中断控制的花样彩灯设计 IT0=1;/设置外部中断0下降沿触发 EX0=1;/开外部中断0 EA=1;/开总中断 f=1;light=0 x01;b=0;while(1)switch(f)项目3中断控制
37、的花样彩灯设计 case 1:left();break;case 2:right();break;case 3:assum();break;delay05s();项目3中断控制的花样彩灯设计 /*外部中断0子函数*/void int_0()interrupt 0 delay10ms();if(INT0=0)f+;if(f3)f=1;项目3中断控制的花样彩灯设计 3.4.3 项目综合仿真与调试项目综合仿真与调试1使用Keil C51编译源程序Keil C51是51系列兼容单片机的开发系统,利用它可以编辑、编译、汇编、连接C程序和汇编程序,从而可以生成在单片机中进行烧录的.hex文件,项目1中对此
38、已作详细介绍。本项目编译成功后生成的文件见图3-10。项目3中断控制的花样彩灯设计 图3-10 使用Keil C51编译源程序成功后生成的文件项目3中断控制的花样彩灯设计 2使用Proteus系统仿真软件调试并验证系统运行的结果Proteus是一款优秀的EDA软件,使用它可以绘制电路原理图、PCB图,进行交互式电路仿真。在单片机开发中可以使用此软件检查系统仿真运行的结果。其仿真的详细步骤见项目1。本项目在Proteus下的仿真结果如图3-11所示。项目3中断控制的花样彩灯设计 图3-11 中断控制的彩灯Proteus仿真结果XTAL218XTAL119ALE30EA31PSEN29RST9P0
39、.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pFC222pFX1C31
40、0FR91kR8330R7330R6330R4330R3330R2330R1330R5330D8D7D6D5D4D3D2D1项目3中断控制的花样彩灯设计 3动手做在完成系统仿真后,可以按照本系统硬件设计部分给出的原理图,在万能板上进行电子元器件的连接。本项目所需的元件清单如表3-2所示。项目3中断控制的花样彩灯设计 项目3中断控制的花样彩灯设计 项项 目目 小小 结结本项目利用AT89C51单片机的外部中断0来控制花样彩灯的运行,通过按下S键,使得彩灯以不同的花样闪烁。在本项目中介绍了单片机中断的一些概念和中断过程的处理以及中断子函数的编写,其目的就是让大家掌握单片机的中断系统的处理过程,学会对中断子函数的编程。项目3中断控制的花样彩灯设计 项目拓展技能与练习项目拓展技能与练习【拓展技能训练】试用2个按键设计中断控制流水灯,当按下S1时灯闪烁变慢,按下S2时灯闪烁加快。项目3中断控制的花样彩灯设计【项目练习】(1)什么是中断?51单片机有几个中断源?(2)叙述中断的执行过程。(3)51单片机中断矢量地址分别是多少?(4)写出C51中断函数的定义形式。(5)叙述IE和IP各位的含义。(6)简述中断的嵌套过程。(7)写出C51中断子函数的定义。