《课件第7章-带中断的交通灯控制系统复习进程.ppt》由会员分享,可在线阅读,更多相关《课件第7章-带中断的交通灯控制系统复习进程.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课件第7章-带中断的交通灯控制系统第七章单片机的中断系统n n知识目标:理解单片机中断系统的结构,掌握其控制寄存器,掌握中断嵌套的概念,理解单片机中断的执行过程。n n技能目标:能运用中断的方法编写交通灯控制程序,能利用中断的方法设计中等难度的单片机控制系统。n n素质目标:养成不断提升知识水平及技能水平的学习习惯。养成将学习内容与日常生活类比的学习习惯。交通灯控制系统交通灯控制系统n n前面存在的主要问题:无法在任意时间通过S1及S2强制使交通灯到所需的状态.n n怎么办?通过中断的方式:强制执行所需的工作(暂停现在的工作)项目二任务项目二任务2改进的交通灯控制器改进的交通灯控制器n n要求
2、:用中断的方法控制交通灯控制器中的S1、S2.n n任务分析:交通灯控制系统存在的主要问题:无法在任意时间通过S1及S2强制使交通灯到所需的状态.n n分析就可知道,必需等交通灯的一个转换循环结束,S1及S2的强制作用才能生效,通过仿真也可观察到这一现象,但这在现实中是不允许的,如有地方发生火灾或有重病病人要紧急送往医院,这类事情是耽误不得的。硬件电路及控制方法硬件电路及控制方法流程图流程图开始东西向通行60秒黄灯亮3秒南北向通行120秒黄灯亮3秒中断的初始化:开中断;电平触发方式;外中断0为低优先级,外中断1为高优先级东西向通行3S中断返回中断入口南北向通行3S中断返回中断入口S1按下,产生
3、外部中断0S2按下,产生外部中断1要求要求n n掌握中断的概念;n n掌握中断的控制方法:开关中断;外部中断的中断触发方式;优先级;n n掌握中断处理函数的编制方法;n n能应用中断的方法处理交通灯控制及其它中断问题;中断要做哪些工作中断要做哪些工作 n n中断处位置的记录。因为中断后还要回来,回到何处,只有记录了位置,才能回到正确的位置。n n中断前的重要信息存储。因为去处理中断事务,可能更改原来的记录信息,故必需将原来的重要信息保存起来,回到原来处理的事情时,才能利用原有的信息,而不是被中断程序更改过的信息。n n正在执行显示程序键盘按下处理键盘扫描继续处正在执行显示程序键盘按下处理键盘扫
4、描继续处正在执行显示程序键盘按下处理键盘扫描继续处正在执行显示程序键盘按下处理键盘扫描继续处理键盘扫描继续执行显示程序处理定时器动作定理键盘扫描继续执行显示程序处理定时器动作定理键盘扫描继续执行显示程序处理定时器动作定理键盘扫描继续执行显示程序处理定时器动作定时时间到图时时间到图时时间到图时时间到图 7.3 7.3 显示及键盘中断流程图显示及键盘中断流程图显示及键盘中断流程图显示及键盘中断流程图n n中断处理的去向。要处理中断的事情,必需知道中断处理的去向。要处理中断的事情,必需知道到哪里去处理。到哪里去处理。n n中断允许。因为,如果现在处理的问题很重要,中断允许。因为,如果现在处理的问题很
5、重要,现在的进程就不能被打断。只有在重要的事情处现在的进程就不能被打断。只有在重要的事情处理完之后,才去响应中断的请求。理完之后,才去响应中断的请求。n n中断的优先级。如果同时出现几个中断事由要求中断的优先级。如果同时出现几个中断事由要求处理,必需按照轻重缓急处理,因此,必需对它处理,必需按照轻重缓急处理,因此,必需对它们编制一个优先等级。们编制一个优先等级。单片机的中断系统的结构单片机的中断系统的结构 n n中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。MCS-51单片机的中断系统结构执行主程序主程序继续
6、执行主程序断点中断请求中断响应执行中断处理程序中断返回n n引起突发事件的来源称为中断源n n中断源要求服务的请求称为中断请求n n对中断请求提供的服务称为中断服务n n中断管理系统处理事件的过程称为中断响应过程引起引起引起引起CPUCPU中断的根源,称为中断的根源,称为中断的根源,称为中断的根源,称为中断源中断源中断源中断源。中断源向。中断源向。中断源向。中断源向CPUCPU提出提出提出提出的中断请求。的中断请求。的中断请求。的中断请求。CPUCPU暂时中断原来的事务暂时中断原来的事务暂时中断原来的事务暂时中断原来的事务A A,转去处理事件,转去处理事件,转去处理事件,转去处理事件B B。对
7、事件对事件对事件对事件B B处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即断点断点断点断点),),),),称为中断返回。实现上述中断功能的部件称为称为中断返回。实现上述中断功能的部件称为称为中断返回。实现上述中断功能的部件称为称为中断返回。实现上述中断功能的部件称为中断系统中断系统中断系统中断系统(中断机构)。(中断机构)。(中断机构)。(中断机构)。8051的中断源 n n一、一、(P3.2P3.2)。可由)。可由IT0(TCON.0)IT0(TCON.0)选择其为选择其为低电平有效还是
8、下降沿有效。当低电平有效还是下降沿有效。当CPUCPU检测到检测到P3.2P3.2引引脚上出现有效的中断信号时,中断标志脚上出现有效的中断信号时,中断标志IE0(TCON.1)IE0(TCON.1)置置1 1,向,向CPUCPU申请中断。申请中断。n n二、二、(P3.3(P3.3)。可由)。可由IT1(TCON.2)IT1(TCON.2)选择其为低选择其为低电平有效还是下降沿有效。当电平有效还是下降沿有效。当CPUCPU检测到检测到P3.3P3.3引脚引脚上出现有效的中断信号时,中断标志上出现有效的中断信号时,中断标志IE1(TCON.3)IE1(TCON.3)置置1,1,向向CPUCPU申
9、请中断。申请中断。n n以上两个中断源称作外部中断源,因为它们都是以上两个中断源称作外部中断源,因为它们都是由外部输入的。由外部输入的。n n三、定时器三、定时器T0T0。TF0TF0(TCON.5TCON.5),片内定时),片内定时/计计数器数器T0T0溢出中断请求标志。当定时溢出中断请求标志。当定时/计数器计数器T0T0发生发生溢出时,置位溢出时,置位TF0TF0,并向,并向CPUCPU申请中断。申请中断。n n四、定时器四、定时器T1T1。TF1TF1(TCON.7TCON.7),片内定时),片内定时/计计数器数器T1T1溢出中断请求标志。当定时溢出中断请求标志。当定时/计数器计数器T1
10、T1发生发生溢出时,置位溢出时,置位TF1TF1,并向,并向CPUCPU申请中断。申请中断。n n五、串行通信。五、串行通信。RIRI(SCON.0SCON.0)或)或TITI(SCON.1SCON.1),),串行口中断请求标志。当串行口接收完一帧串行串行口中断请求标志。当串行口接收完一帧串行数据时置位数据时置位RIRI或当串行口发送完一帧串行数据时或当串行口发送完一帧串行数据时置位置位TITI,向,向CPUCPU申请中断。申请中断。二、中断请求标志二、中断请求标志1 1、TCONTCON的中断标志的中断标志的中断标志的中断标志IT0IT0(TCON.0TCON.0),外部中断),外部中断),
11、外部中断),外部中断0 0触发方式控制位。触发方式控制位。触发方式控制位。触发方式控制位。当当当当IT0=0IT0=0时,为电平触发方式。时,为电平触发方式。时,为电平触发方式。时,为电平触发方式。当当当当IT0=1IT0=1时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。IE0IE0(TCON.1TCON.1),外部中断),外部中断),外部中断),外部中断0 0中断请求标志位。中断请求标志位。中断请求标志位。中断请求标志位。IT1IT1(TCON.2TCON.2),外部中断),外部中断),外部中断),外部
12、中断1 1触发方式控制位。触发方式控制位。触发方式控制位。触发方式控制位。IE1IE1(TCON.3TCON.3),外部中断),外部中断),外部中断),外部中断1 1中断请求标志位。中断请求标志位。中断请求标志位。中断请求标志位。TF0TF0(TCON.5TCON.5),定时),定时),定时),定时/计数器计数器计数器计数器T0T0溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。TF1TF1(TCON.7TCON.7),定时),定时),定时),定时/计数器计数器计数器计数器T1T1溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。2
13、、SCON的中断标志的中断标志n nRIRI(SCON.0SCON.0),串行口接收中断标志位。当允),串行口接收中断标志位。当允),串行口接收中断标志位。当允),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由硬件置位硬件置位硬件置位硬件置位RIRI。同样,。同样,。同样,。同样,RIRI必须由软件清除。必须由软件清除。必须由软件清除。必须由软件清除。n nTITI(SCON.1SCON.1),串行口发送中断标志位。当),串行口发送中断标志位。当)
14、,串行口发送中断标志位。当),串行口发送中断标志位。当CPUCPU将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬件置位件置位件置位件置位TITI。CPUCPU响应中断时,不能自动清除响应中断时,不能自动清除响应中断时,不能自动清除响应中断时,不能自动清除TITI,TITI必须由软件清除。必须由软件清除。必须由软件清除。必须由
15、软件清除。一、中断允许控制一、中断允许控制一、中断允许控制一、中断允许控制 CPUCPU对中断系统所有中断以及某个中断源的开放和对中断系统所有中断以及某个中断源的开放和对中断系统所有中断以及某个中断源的开放和对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器屏蔽是由中断允许寄存器屏蔽是由中断允许寄存器屏蔽是由中断允许寄存器IEIE控制的。控制的。控制的。控制的。80C5180C51中断的控制中断的控制 n nEX0EX0(IE.0)(IE.0),外部中断,外部中断,外部中断,外部中断0 0允许位;允许位;允许位;允许位;n nET0ET0(IE.1)(IE.1),定时,定时,定时,
16、定时/计数器计数器计数器计数器T0T0中断允许位;中断允许位;中断允许位;中断允许位;n nEX1EX1(IE.2)(IE.2),外部中断,外部中断,外部中断,外部中断1 1允许位;允许位;允许位;允许位;n nET1ET1(IE.3)(IE.3),定时,定时,定时,定时/计数器计数器计数器计数器T1T1中断允许位;中断允许位;中断允许位;中断允许位;n nESES(IE.4)IE.4),串行口中断允许位;,串行口中断允许位;,串行口中断允许位;,串行口中断允许位;n nEAEA(IE.7)(IE.7),CPUCPU中断允许(总允许)位。中断允许(总允许)位。中断允许(总允许)位。中断允许(总
17、允许)位。n n以上各位为时,允许相应的中断,为时禁止相应的中断,其中,EA为中断的总开关。二、中断优先级控制二、中断优先级控制 80C5180C51单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器优先级寄存器优先级寄存器优先级寄存器IPIP中的相应位的状态来规定的中的相应位的状态来规定的中的相应位的状态来
18、规定的中的相应位的状态来规定的 。n nPX0PX0(IP.0IP.0),外部中断),外部中断),外部中断),外部中断0 0优先级设定位;优先级设定位;优先级设定位;优先级设定位;n nPT0PT0(IP.1IP.1),定时),定时),定时),定时/计数器计数器计数器计数器T0T0优先级设定位;优先级设定位;优先级设定位;优先级设定位;n nPX1PX1(IP.2IP.2),外部中断),外部中断),外部中断),外部中断0 0优先级设定位;优先级设定位;优先级设定位;优先级设定位;n nPT1PT1(IP.3IP.3),定时),定时),定时),定时/计数器计数器计数器计数器T1T1优先级设定位;
19、优先级设定位;优先级设定位;优先级设定位;n nPSPS (IP.4IP.4),串行口优先级设定位;),串行口优先级设定位;),串行口优先级设定位;),串行口优先级设定位;n nPT2 PT2(IP.5)(IP.5),定时,定时,定时,定时/计数器计数器计数器计数器T2T2优先级设定位。优先级设定位。优先级设定位。优先级设定位。n n上面各位为时,是高优先级,为时为低优先级。同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:80C51单片机的中断优先级有三条原则:单片机的中断优先级有三条原则:n nCPUCP
20、U同时接收到几个中断时,同时接收到几个中断时,同时接收到几个中断时,同时接收到几个中断时,首先响应优先级别最首先响应优先级别最首先响应优先级别最首先响应优先级别最高的中断请求高的中断请求高的中断请求高的中断请求。n n正在进行的中断过程正在进行的中断过程正在进行的中断过程正在进行的中断过程不能被新的同级或低优先级的不能被新的同级或低优先级的不能被新的同级或低优先级的不能被新的同级或低优先级的中断请求所中断中断请求所中断中断请求所中断中断请求所中断。n n正在进行的低优先级中断服务,正在进行的低优先级中断服务,正在进行的低优先级中断服务,正在进行的低优先级中断服务,能被高优先级中断能被高优先级中
21、断能被高优先级中断能被高优先级中断请求所中断请求所中断请求所中断请求所中断。中断的入口中断的入口n n单片机响应中断时,系统会自动跳到相应的地址,即中断入口地址执行中断程序。这一过程是由中断系统自动安排的,不需要人为干预。中断入口地址表如上表所示,它们位于程序最开始的一段区间(0003H-0023H)。80C51单片机中断处理过程 一、中断响应条件一、中断响应条件n n 中断源有中断请求;中断源有中断请求;n n 此中断源的中断允许位为此中断源的中断允许位为1;n n CPU开中断(即开中断(即EA=1)。)。同时满足时,同时满足时,CPU才有可能响应中断才有可能响应中断。中断响应条件和时间中
22、断响应条件和时间 n n二、中断服务的进入与返回n n进入中断服务是单片机自动安排的,如进入前会保存中断处地址及重要信息。进入中断服务程序后则执行相应的服务程序,执行完后还要恢复原来的地址及重要信息,然后返回到原来被中断处断续执行原来的程序。三、三、中断响应时间中断响应时间n n即从发出中断请求到响应中断之间的时间,这一时间不长,一般为-个机器周期。中断服务程序的编制中断服务程序的编制 n n一、中断服务程序编制的格式n n中断响应过程就是自动调用并执行中断函数的过程。n nC51编译器支持在C源程序中直接以函数形式编写中断服务程序。常用的中断函数定义语法如下:中断处理函数void 函数名()
23、interrupt n 中断源中断源 n 入口地址入口地址外部中断0 0 0003H 定时/计数器0 1 000BH外部中断1 2 0013H定时/计数器1 3 001BH串行口 4 0023H中断要做哪些工作呢?中断要做哪些工作呢?n n中断处位置的记录。n n中断前的重要信息存储。n n中断处理的去向。n n中断允许。n n中断的优先级。二、项目二任务二、项目二任务2解答:交通灯中断解答:交通灯中断控制器设计控制器设计n n、电路图图 7.11 交通灯电路图2n n电路与原来的不同是将两个控制开关S1及S2移到了外部中断输入端口 处。当开关合上时,输入低电平产生中断,断开时不产生中断。、控
24、制程序流程图、控制程序流程图n n控制程序流程图如图7.1所示。中断的产生是随机的,并没有固定的时刻。只有S1或S2按下则产生中断,还可对它们设置中断优先级,从而避免以前同时按下时,不好确定响应哪个中断的情况。#include void delay(unsigned int);main()IE=0 x85;/开中断TCON=0 x00;/电平触发方式IP=0 x04;/外中断0为低优先级,外中断1为高优先级、控制程序、控制程序while(1)P1=0 x21;delay(200);P1=0 x12;delay(20);P1=0 x0c;delay(400);P1=0 x12;delay(20)
25、;void int0()interrupt 0 /外中断0 P1=0 x21;delay(100);void int1()interrupt 2 /外中断1 P1=0 x0c;delay(100);void delay(unsigned int j)unsigned int i,k;for(k=0;kj;k+)for(i=0;i500;i+);三、关于中断触发方式及程序编制三、关于中断触发方式及程序编制的讨论的讨论n n1、关于边沿触发与电平触发的讨论n n1)电平触发中断n n电平触发方式比较好理解电平触发方式比较好理解.处理器每个指令周期查处理器每个指令周期查询中断引脚询中断引脚,当发现引
26、脚电平为低时当发现引脚电平为低时,触发中断触发中断.如果如果信号从信号从1 1变为变为0,0,一个周期后又变为一个周期后又变为1,1,中断并不会被中断并不会被清除清除,直到中断执行完毕并用直到中断执行完毕并用RETIRETI指令返回之后指令返回之后.但是如果输入信号一直为低但是如果输入信号一直为低,那么将一直触发中断那么将一直触发中断,当要求中断服务的器件在中断服务结束一段时间当要求中断服务的器件在中断服务结束一段时间之后才释放信号线时就会发生这种情况之后才释放信号线时就会发生这种情况.这时你会这时你会发现中断被执行了多次发现中断被执行了多次,所消耗的时间比预期的要所消耗的时间比预期的要长很多
27、长很多,这时应使用边沿触发方式这时应使用边沿触发方式 2)边沿触发方式)边沿触发方式n n当外部中断引脚电平由高向低变化时,将触发中断处理器.每个指令周期查询中断引脚,当前一个指令周期是引脚电平为高,紧接着下一个指令周期检测到引脚电平为低时,将触发中断.像前面所提到的那样,这种方法适用于请求中断服务的器件在中断服务结束一段时间之后才释放信号线时的情况.因为这时只有下降沿才会触发中断,如果你还想触发下一个中断就必须把电平先置高.n n当设计中断结构时,你要记住边沿触发适用于那些器件发出的中断请求信号不需要软件清除的场合.最为普遍的例子是系统的时标.这种信号一般由实时时钟电路产生,这些器件一般提供
28、一个占空比为50%的信号(即信号的一半是高电平,另一半为低电平).如果使用电平触发,将将产生很多中断,这样即使不扰乱程序的运行也将浪费系统的资源.关于程序文档的规范化问题讨论关于程序文档的规范化问题讨论n n尽量用易于理解的文字、符号替换专业等号n n为使程序简化,可定义简单的符号代替常用的沉长的符号或关键字n n延时程序单独作为一个子程序n n主程序要尽量简单化,让读者明了程序的骨干、主旨n n每一功能,无论简单或复杂,最好编为一子程序n n下面是交通灯控制的另一种程序写法,请注意它的规范性。中断控制的交通灯中断控制的交通灯#include/宏定义#define uchar unsigned
29、 char#define uint unsigned int/位变量定义sbit EAST_REDLIGHT=P10;sbit EAST_YELLOWLIGHT=P11;sbit EAST_GREENLIGHT=P12;sbit SOUTH_REDLIGNT=P13;sbit SOUTH_YELLOWLIGHT=P14;sbit SOUTH_GREENLIGHT=P15;/延时子程序void delay(uint k)uint i,j;for(i=0;i1000;i+)for(j=0;jk;j+);/外部中断0响应程序 void int0()interrupt 0 EAST_REDLIGHT=
30、1;/东西路口红灯开启 EAST_YELLOWLIGHT=0;/黄绿灯关闭 EAST_GREENLIGHT=0;SOUTH_REDLIGHT=1;/南北路口红灯开启SOUTH_YELLOWLIGHT=0;/黄绿灯关闭SOUTH_GREENLIGHT=0;delay(850);/东西路口通行的子程序 void east()EAST_REDLIGHT=0;EAST_YELLOWLIGHT=0;EAST_GREENLIGHT=1;SOUTH_REDLIGHT=1;SOUTH_YELLOWLIGHT=0;SOUTH_GREENLIGHT=0;delay(850);EAST_REDLIGHT=0;EAS
31、T_YELLOWLIGHT=1;EAST_GREENLIGHT=0;delay(85);/南北路口通行子程序 void south()EAST_REDLIGHT=1;EAST_YELLOWLIGHT=0;EAST_GREENLIGHT=0;SOUTH_REDLIGHT=0;SOUTH_YELLOWLIGHT=0;SOUTH_GREENLIGHT=1;delay(850);SOUTH_REDLIGHT=0;SOUTH_YELLOWLIGHT=1;SOUTH_GREENLIGHT=0;delay(85);/主程序 main()IE=0 x81;/开中断 TCON=0 x00;/触发方式为电平方式
32、IP=0 x00;/while(1)east();/东西路口通行 south();/南北路口通行中断嵌套中断嵌套n n上面列举的几个例子中都有中断嵌套的问题。中断嵌套,即中断被中断。n n千万是注意,多次中断并不是中断嵌套!要求要求n n掌握中断嵌套的概念;n n能运用中断嵌套处理简单的嵌套问题;n n能仿真中断嵌套实验;中断嵌套中断嵌套n n具有个响应优先级,可以实现中断的具有个响应优先级,可以实现中断的嵌套,即高优先级的中断请求可以打断低优先级嵌套,即高优先级的中断请求可以打断低优先级的中断程序程序。的中断程序程序。n n等高优先级的中断程序执行完后再转到低优先级等高优先级的中断程序执行完
33、后再转到低优先级的中断服务程序继续执行。的中断服务程序继续执行。n n中断嵌套即中断被中断嵌套即中断被 中断;中断;n n日常生活中中断嵌套的例子日常生活中中断嵌套的例子n n如科代表交作业中断了老师的备课,在老师处理如科代表交作业中断了老师的备课,在老师处理科代表交作业时,老师又补系领导叫去有其它事科代表交作业时,老师又补系领导叫去有其它事情,老师回来后继续与科代表交谈,了解班级学情,老师回来后继续与科代表交谈,了解班级学习情况,科代表离开后老师继续备课。习情况,科代表离开后老师继续备课。项目二任务项目二任务3中断嵌套仿真中断嵌套仿真仿真实验仿真实验n n如图所示,正常时与中相接的数码管显示
34、-;如果低优先级的开关按下,则中的数码管停止不动,与口相接的数码管显示-;如果这时高优先级的开关按下,则与口相接的数码管显示-;断开高优先级的开关后,等-一次循环显示完后,转到低优先级的数码管继续显示;低优先级的开关断开后,转到正常的与口相连的数码管继续循环显示-.任务分析:任务分析:n n这里有三个显示程序,即P0、P1、P2口的数码管都循环显示0-9。正常是P0口的显示,如果发生开关按下的情况,则要运程其它两个口的显示程序,既然有中断的情况有两个,就要对它们排队,这就是中断嵌套的问题。程序程序/中断嵌套实验中断嵌套实验中断嵌套实验中断嵌套实验/头文件引用头文件引用头文件引用头文件引用n n
35、#include reg51.h#include reg51.h /宏定义宏定义宏定义宏定义n n#define uchar unsigned char#define uchar unsigned charn n#define uint unsigned int#define uint unsigned int/延时子程序延时子程序延时子程序延时子程序n nvoid delay(uint k)void delay(uint k)uint i,j;uint i,j;for(i=0;i0;i+)for(i=0;i0;i+)for(j=0;jk;j+);for(j=0;jk;j+);/外部中断响应程
36、序外部中断响应程序n nvoid int0()interrupt 0void int0()interrupt 0n n n n uchar i;uchar i;n n for(i=0 x00;i0 x0a;i+)for(i=0 x00;i0 x0a;i+)n n n n P1=i;P1=i;n n delay(850);delay(850);n n n n P1=0;P1=0;n n n n/外部中断响应程序外部中断响应程序n nvoid int1()interrupt 2void int1()interrupt 2n n n nuchar i;uchar i;n nfor(i=0 xf0;i
37、0 xfa;i+)for(i=0 xf0;i0 xfa;i+)n n n n P2=i;P2=i;n n delay(850);delay(850);n n n n P2=0;P2=0;n n n n/主程序主程序n nmain()main()n n n nuchar i;uchar i;n nIE=0 x85;/IE=0 x85;/开中断总开关及开外部中断与开中断总开关及开外部中断与n n/EA=1;EX0=1;EX1=1;/EA=1;EX0=1;EX1=1;n nTCON=0 x00;/TCON=0 x00;/外部中断为电平触发外部中断为电平触发n n/IT0=0;IT1=0;/IT0=0
38、;IT1=0;n nIP=0 x04;/IP=0 x04;/外部中断为低级中断,外部中断为外部中断为低级中断,外部中断为高级中断高级中断n n/PX0=0;PX1=1;/PX0=0;PX1=1;n nwhile(1)n nn nfor(i=0;i10;i+)n n n n P0=i;n n delay(850);/延时秒n n n nn nn n注意:如果口不接上拉电阻,则口的数码管显示不正常;n n这说明口的高阻状态;n n即口没有输出高电平的能力;n n因为口是集电极(漏极)开路的;n n三个数码管分别通过BCD码-七段码译码器CD4511与P0、P1、P2的低四位的四根引脚相连,故送入三
39、个端口的数据直接为十进制数,无需送七段码。两个开关接到外部中断输入端,按下开关就可产生中断。程序更改与思考程序更改与思考n n改变IE的值,如为0 x81/84,看看再按下中断开关,情况是怎样的?为什么?n n改变IP的值,如为0 x00/01/11,看看在按下开关时,情况是怎样的?为什么?n n改变TCON的值,如为0 x05,即为边沿触发,看看按下开关时,情况是怎样的,分析为什么。启示启示n n按下中断开关,马上停止主程序中的口的显示,转到中断的显示;反应出中断响应的实时性;n n高级中断中断低级中断服务程序时,也是实时性的;即马上停止低级显示,转到高级显示。n n高级中断撤消时,一次轮回
40、显示-必需进行完后才回到低级中断控制的显示;反应出高级中断程序必需进行完才去执行低级的中断,即高级中断服务程序执行的完整性;n n低级中断撤消,回到主程序时,也是如此。n n注意ls47(cd4511)为译码驱动器;n nLS是输出低电平有效的;n nCD4511是输出高电平有效的;n n故用时接共阳的数码管,而用时,应接共阴的数码管;思考思考n n如果不用译码器,直接将数码管接到三个端口,要达到同样的效果,程序该如何编写?n n画出电路图;n n画出主程序及中断程序流程图;n n编写相应的程序;作业:作业:如图所示,如果开关断开,运行如图所示,如果开关断开,运行流水灯程序(即从上到下依次点亮
41、一个流水灯程序(即从上到下依次点亮一个LED);如果开关闭合,产生中断:);如果开关闭合,产生中断:LED全亮。用中断的方式实现。全亮。用中断的方式实现。作业:作业:如图所示,如果开关断开,运行流水如图所示,如果开关断开,运行流水灯程序(即从上到下依次点亮一个灯程序(即从上到下依次点亮一个LED););如果开关闭合,产生中断:从下到上依次点如果开关闭合,产生中断:从下到上依次点 亮亮LED一次。用中断的方式实现。一次。用中断的方式实现。作业:如图所示,如果开关断开,运行流水灯程序(即从作业:如图所示,如果开关断开,运行流水灯程序(即从作业:如图所示,如果开关断开,运行流水灯程序(即从作业:如图
42、所示,如果开关断开,运行流水灯程序(即从上到下依次点亮一个上到下依次点亮一个上到下依次点亮一个上到下依次点亮一个LEDLED);如果开关);如果开关);如果开关);如果开关(P3.2(P3.2处处处处)闭合,产闭合,产闭合,产闭合,产生中断:从下到上依次点亮生中断:从下到上依次点亮生中断:从下到上依次点亮生中断:从下到上依次点亮LEDLED一次;这时如果开关一次;这时如果开关一次;这时如果开关一次;这时如果开关(P3.3P3.3处)闭合,中断原来的中断:处)闭合,中断原来的中断:处)闭合,中断原来的中断:处)闭合,中断原来的中断:LEDLED闪烁。用中断的闪烁。用中断的闪烁。用中断的闪烁。用中
43、断的方式实现。方式实现。方式实现。方式实现。解答解答n n上面三个问题,一个一个推进,难度增加,但都是中断及中断嵌套问题。n n下面是最后一个的解答:#include#includeunsigned char a;main()unsigned int t;unsigned char i;EA=1;EX0=1;IT0=0;PX0=0;EX1=1;IT1=0;PX1=1;for(;)a=0 x7f;for(i=0;i=7;i+)P1=a;for(t=0;t=10000;t+);a=_crol_(a,1);void int0()interrupt 0 unsigned char i;unsigned int t;a=0 x7f;for(i=0;i8;i+)P1=a;for(t=0;t=10000;t+);a=_cror_(a,1);void int1()interrupt 2 unsigned int t;P1=0 x00;for(t=0;t=10000;t+);P1=0 xff;for(t=0;t=10000;t+);n n仿真可用文件夹“中断LED灯”此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢
限制150内