教学课件课件第5章-带中断的交通灯控制系统.pptx

上传人:春哥&#****71; 文档编号:71827931 上传时间:2023-02-06 格式:PPTX 页数:81 大小:639.70KB
返回 下载 相关 举报
教学课件课件第5章-带中断的交通灯控制系统.pptx_第1页
第1页 / 共81页
教学课件课件第5章-带中断的交通灯控制系统.pptx_第2页
第2页 / 共81页
点击查看更多>>
资源描述

《教学课件课件第5章-带中断的交通灯控制系统.pptx》由会员分享,可在线阅读,更多相关《教学课件课件第5章-带中断的交通灯控制系统.pptx(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/字体下载:/ziti/课件第5章-带中断的交通灯控制系统观察与思考观察与思考n n1、实际交通灯控制是怎样的?n n2、此程序会出现问题吗?n n3、是什

2、么原因出现问题的?n n4、如何改正?n n答案见KEIL程序中的注释,可单步执行,观察现象,再解释。第五章单片机的中断系统n n知识目标:理解单片机中断系统的结构,掌握其控制寄存器,掌握中断嵌套的概念,理解单片机中断的执行过程。n n技能目标:能运用中断的方法编写交通灯控制程序,能利用中断的方法设计中等难度的单片机控制系统。n n素质目标:养成不断提升知识水平及技能水平的学习习惯。养成将学习内容与日常生活类比的学习习惯。交通灯控制系统交通灯控制系统n n前面存在的主要问题:无法在任意时间通过S1及S2强制使交通灯到所需的状态.n n怎么办?通过中断的方式:强制执行所需的工作(暂停现在的工作)

3、项目二任务项目二任务2改进的交通灯控制器改进的交通灯控制器n n要求:用中断的方法控制交通灯控制器中的S1、S2.n n任务分析:交通灯控制系统存在的主要问题:无法在任意时间通过S1及S2强制使交通灯到所需的状态.n n分析就可知道,必需等交通灯的一个转换循环结束,S1及S2的强制作用才能生效,通过仿真也可观察到这一现象,但这在现实中是不允许的,如有地方发生火灾或有重病病人要紧急送往医院,这类事情是耽误不得的。硬件电路及控制方法硬件电路及控制方法流程图流程图开始东西向通行60秒黄灯亮3秒南北向通行120秒黄灯亮3秒中断的初始化:开中断;电平触发方式;外中断0为低优先级,外中断1为高优先级东西向

4、通行3S中断返回中断入口南北向通行3S中断返回中断入口S1按下,产生外部中断0S2按下,产生外部中断1要求要求n n掌握中断的概念;n n掌握中断的控制方法:开关中断;外部中断的中断触发方式;优先级;n n掌握中断处理函数的编制方法;n n能应用中断的方法处理交通灯控制及其它中断问题;中断要做哪些工作中断要做哪些工作 n n中断处位置的记录。因为中断后还要回来,回到何处,只有记录了位置,才能回到正确的位置。n n中断前的重要信息存储。因为去处理中断事务,可能更改原来的记录信息,故必需将原来的重要信息保存起来,回到原来处理的事情时,才能利用原有的信息,而不是被中断程序更改过的信息。n n正在执行

5、显示程序键盘按下处理键盘扫描继续处正在执行显示程序键盘按下处理键盘扫描继续处正在执行显示程序键盘按下处理键盘扫描继续处正在执行显示程序键盘按下处理键盘扫描继续处理键盘扫描继续执行显示程序处理定时器动作定理键盘扫描继续执行显示程序处理定时器动作定理键盘扫描继续执行显示程序处理定时器动作定理键盘扫描继续执行显示程序处理定时器动作定时时间到图时时间到图时时间到图时时间到图 7.3 7.3 显示及键盘中断流程图显示及键盘中断流程图显示及键盘中断流程图显示及键盘中断流程图n n中断处理的去向。要处理中断的事情,必需知道中断处理的去向。要处理中断的事情,必需知道到哪里去处理。到哪里去处理。n n中断允许。

6、因为,如果现在处理的问题很重要,中断允许。因为,如果现在处理的问题很重要,现在的进程就不能被打断。只有在重要的事情处现在的进程就不能被打断。只有在重要的事情处理完之后,才去响应中断的请求。理完之后,才去响应中断的请求。n n中断的优先级。如果同时出现几个中断事由要求中断的优先级。如果同时出现几个中断事由要求处理,必需按照轻重缓急处理,因此,必需对它处理,必需按照轻重缓急处理,因此,必需对它们编制一个优先等级。们编制一个优先等级。单片机的中断系统的结构单片机的中断系统的结构 n n中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续

7、进行随后的工作。MCS-51单片机的中断系统结构执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回n n引起突发事件的来源称为中断源n n中断源要求服务的请求称为中断请求n n对中断请求提供的服务称为中断服务n n中断管理系统处理事件的过程称为中断响应过程引起引起引起引起CPUCPU中断的根源,称为中断的根源,称为中断的根源,称为中断的根源,称为中断源中断源中断源中断源。中断源向。中断源向。中断源向。中断源向CPUCPU提出提出提出提出的中断请求。的中断请求。的中断请求。的中断请求。CPUCPU暂时中断原来的事务暂时中断原来的事务暂时中断原来的事务暂时中断原来的事务A

8、A,转去处理事件,转去处理事件,转去处理事件,转去处理事件B B。对事件对事件对事件对事件B B处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即处理完毕后,再回到原来被中断的地方(即断点断点断点断点),),),),称为中断返回。实现上述中断功能的部件称为称为中断返回。实现上述中断功能的部件称为称为中断返回。实现上述中断功能的部件称为称为中断返回。实现上述中断功能的部件称为中断系统中断系统中断系统中断系统(中断机构)。(中断机构)。(中断机构)。(中断机构)。8051的中断源 n n一、一、(P3.2P3.2)。可由)。可由IT0

9、(TCON.0)IT0(TCON.0)选择其为选择其为低电平有效还是下降沿有效。当低电平有效还是下降沿有效。当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

10、(TCON.3)IE1(TCON.3)置置1,1,向向CPUCPU申请中断。申请中断。n n以上两个中断源称作外部中断源,因为它们都是以上两个中断源称作外部中断源,因为它们都是由外部输入的。由外部输入的。n n三、定时器三、定时器T0T0。TF0TF0(TCON.5TCON.5),片内定时),片内定时/计计数器数器T0T0溢出中断请求标志。当定时溢出中断请求标志。当定时/计数器计数器T0T0发生发生溢出时,置位溢出时,置位TF0TF0,并向,并向CPUCPU申请中断。申请中断。n n四、定时器四、定时器T1T1。TF1TF1(TCON.7TCON.7),片内定时),片内定时/计计数器数器T1T

11、1溢出中断请求标志。当定时溢出中断请求标志。当定时/计数器计数器T1T1发生发生溢出时,置位溢出时,置位TF1TF1,并向,并向CPUCPU申请中断。申请中断。n n五、串行通信。五、串行通信。RIRI(SCON.0SCON.0)或)或TITI(SCON.1SCON.1),),串行口中断请求标志。当串行口接收完一帧串行串行口中断请求标志。当串行口接收完一帧串行数据时置位数据时置位RIRI或当串行口发送完一帧串行数据时或当串行口发送完一帧串行数据时置位置位TITI,向,向CPUCPU申请中断。申请中断。二、中断请求标志二、中断请求标志1 1、TCONTCON的中断标志的中断标志的中断标志的中断标

12、志IT0IT0(TCON.0TCON.0),外部中断),外部中断),外部中断),外部中断0 0触发方式控制位。触发方式控制位。触发方式控制位。触发方式控制位。当当当当IT0=0IT0=0时,为电平触发方式。时,为电平触发方式。时,为电平触发方式。时,为电平触发方式。当当当当IT0=1IT0=1时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。IE0IE0(TCON.1TCON.1),外部中断),外部中断),外部中断),外部中断0 0中断请求标志位。中断请求标志位。中断请求标志位。中断请求标志位。IT1IT1(

13、TCON.2TCON.2),外部中断),外部中断),外部中断),外部中断1 1触发方式控制位。触发方式控制位。触发方式控制位。触发方式控制位。IE1IE1(TCON.3TCON.3),外部中断),外部中断),外部中断),外部中断1 1中断请求标志位。中断请求标志位。中断请求标志位。中断请求标志位。TF0TF0(TCON.5TCON.5),定时),定时),定时),定时/计数器计数器计数器计数器T0T0溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。TF1TF1(TCON.7TCON.7),定时),定时),定时),定时/计数器计数器计数器计数器T1T1溢出中断请求标

14、志位。溢出中断请求标志位。溢出中断请求标志位。溢出中断请求标志位。2、SCON的中断标志的中断标志n nRIRI(SCON.0SCON.0),串行口接收中断标志位。当允),串行口接收中断标志位。当允),串行口接收中断标志位。当允),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由许串行口接收数据时,每接收完一个串行帧,由硬件置位硬件置位硬件置位硬件置位RIRI。同样,。同样,。同样,。同样,RIRI必须由软件清除。必须由软件清除。必须由软件清除。必须由软件清除。n nTITI(SCON.1S

15、CON.1),串行口发送中断标志位。当),串行口发送中断标志位。当),串行口发送中断标志位。当),串行口发送中断标志位。当CPUCPU将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬就启动了发送过程。每发送完一个串行帧,由硬件置位件置位件置位件置位TITI。CPUCPU响应中断时,不能自动清除响应中断时,不能自动清除响应中断时,不能自动清除响应中断时,不能自动清除TI

16、TI,TITI必须由软件清除。必须由软件清除。必须由软件清除。必须由软件清除。一、中断允许控制一、中断允许控制一、中断允许控制一、中断允许控制 CPUCPU对中断系统所有中断以及某个中断源的开放和对中断系统所有中断以及某个中断源的开放和对中断系统所有中断以及某个中断源的开放和对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器屏蔽是由中断允许寄存器屏蔽是由中断允许寄存器屏蔽是由中断允许寄存器IEIE控制的。控制的。控制的。控制的。80C5180C51中断的控制中断的控制 n nEX0EX0(IE.0)(IE.0),外部中断,外部中断,外部中断,外部中断0 0允许位;允许位;允许位;允

17、许位;n nET0ET0(IE.1)(IE.1),定时,定时,定时,定时/计数器计数器计数器计数器T0T0中断允许位;中断允许位;中断允许位;中断允许位;n nEX1EX1(IE.2)(IE.2),外部中断,外部中断,外部中断,外部中断0 0允许位;允许位;允许位;允许位;n nET1ET1(IE.3)(IE.3),定时,定时,定时,定时/计数器计数器计数器计数器T1T1中断允许位;中断允许位;中断允许位;中断允许位;n nESES(IE.4)IE.4),串行口中断允许位;,串行口中断允许位;,串行口中断允许位;,串行口中断允许位;n nEAEA(IE.7)(IE.7),CPUCPU中断允许(

18、总允许)位。中断允许(总允许)位。中断允许(总允许)位。中断允许(总允许)位。n n以上各位为时,允许相应的中断,为时禁止相应的中断,其中,EA为中断的总开关。二、中断优先级控制二、中断优先级控制 80C5180C51单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器优先级寄存器优先级寄存器优先级寄存器IPI

19、P中的相应位的状态来规定的中的相应位的状态来规定的中的相应位的状态来规定的中的相应位的状态来规定的 。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),定时),

20、定时),定时),定时/计数器计数器计数器计数器T1T1优先级设定位;优先级设定位;优先级设定位;优先级设定位;n nPSPS (IP.4IP.4),串行口优先级设定位;),串行口优先级设定位;),串行口优先级设定位;),串行口优先级设定位;n nPT2 PT2(IP.5)(IP.5),定时,定时,定时,定时/计数器计数器计数器计数器T2T2优先级设定位。优先级设定位。优先级设定位。优先级设定位。n n上面各位为时,是高优先级,为时为低优先级。同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:80C51单片机的

21、中断优先级有三条原则:单片机的中断优先级有三条原则:n nCPUCPU同时接收到几个中断时,同时接收到几个中断时,同时接收到几个中断时,同时接收到几个中断时,首先响应优先级别最首先响应优先级别最首先响应优先级别最首先响应优先级别最高的中断请求高的中断请求高的中断请求高的中断请求。n n正在进行的中断过程正在进行的中断过程正在进行的中断过程正在进行的中断过程不能被新的同级或低优先级的不能被新的同级或低优先级的不能被新的同级或低优先级的不能被新的同级或低优先级的中断请求所中断中断请求所中断中断请求所中断中断请求所中断。n n正在进行的低优先级中断服务,正在进行的低优先级中断服务,正在进行的低优先级

22、中断服务,正在进行的低优先级中断服务,能被高优先级中断能被高优先级中断能被高优先级中断能被高优先级中断请求所中断请求所中断请求所中断请求所中断。中断的入口中断的入口n n单片机响应中断时,系统会自动跳到相应的地址,即中断入口地址执行中断程序。这一过程是由中断系统自动安排的,不需要人为干预。中断入口地址表如上表所示,它们位于程序最开始的一段区间(0003H-0023H)。80C51单片机中断处理过程 一、中断响应条件一、中断响应条件n n 中断源有中断请求;中断源有中断请求;n n 此中断源的中断允许位为此中断源的中断允许位为1;n n CPU开中断(即开中断(即EA=1)。)。同时满足时,同时

23、满足时,CPU才有可能响应中断才有可能响应中断。中断响应条件和时间中断响应条件和时间 n n二、中断服务的进入与返回n n进入中断服务是单片机自动安排的,如进入前会保存中断处地址及重要信息。进入中断服务程序后则执行相应的服务程序,执行完后还要恢复原来的地址及重要信息,然后返回到原来被中断处断续执行原来的程序。三、三、中断响应时间中断响应时间n n即从发出中断请求到响应中断之间的时间,这一时间不长,一般为-个机器周期。中断服务程序的编制中断服务程序的编制 n n一、中断服务程序编制的格式n n中断响应过程就是自动调用并执行中断函数的过程。n nC51编译器支持在C源程序中直接以函数形式编写中断服

24、务程序。常用的中断函数定义语法如下:中断处理函数void 函数名()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、电路图n n电路与原来的不同是将两个控制开关S1及S2移到了外部中断输入端口 处。当开关合上时,输

25、入低电平产生中断,断开时不产生中断。、控制程序流程图、控制程序流程图n n控制程序流程图如图7.1所示。中断的产生是随机的,并没有固定的时刻。只有S1或S2按下则产生中断,还可对它们设置中断优先级,从而避免以前同时按下时,不好确定响应哪个中断的情况。、控制程序、控制程序n n#include reg52.hn n#define ON 0n n#define OFF 1n n#define S_N_GO_time 120n n#define E_W_GO_time 60n n#define E_W_to_S_N_GO_time 30n n#define S_N_to_E_W_GO_time 30

26、sbit D_X_R=P13;sbit D_X_Y=P14;sbit D_X_G=P15;sbit N_B_R=P10;sbit N_B_Y=P11;sbit N_B_G=P12;/sbit force_east_west_run=P16;/删除原来的S1、S2连接/sbit force_south_north_run=P17;delay(int x)int i,j;for(j=0;jx;j+)for(i=0;i5000;i+);east_west_run()D_X_G=ON;N_B_R=ON;D_X_R=OFF;D_X_Y=OFF;N_B_Y=OFF;N_B_G=OFF;delay(E_W_

27、GO_time);east_west_to_south_north_run()D_X_R=OFF;D_X_G=OFF;N_B_R=ON;N_B_Y=OFF;N_B_G=OFF;D_X_Y=ON;delay(E_W_to_S_N_GO_time/4);/黄灯亮灭交替,产生闪烁效果 D_X_Y=OFF;delay(E_W_to_S_N_GO_time/4);D_X_Y=ON;delay(E_W_to_S_N_GO_time/4);D_X_Y=OFF;delay(E_W_to_S_N_GO_time/4);south_north_to_east_west_run()D_X_R=ON;D_X_Y=OF

28、F;D_X_G=OFF;N_B_R=OFF;N_B_G=OFF;N_B_Y=ON;delay(S_N_to_E_W_GO_time/4);N_B_Y=OFF;delay(S_N_to_E_W_GO_time/4);N_B_Y=ON;delay(S_N_to_E_W_GO_time/4);N_B_Y=OFF;delay(S_N_to_E_W_GO_time/4);south_north_run()D_X_R=ON;D_X_Y=OFF;D_X_G=OFF;N_B_R=OFF;N_B_Y=OFF;N_B_G=ON;delay(S_N_GO_time);initial()/中断初始子程序 EA=1;/

29、开总中断,外部中断0、1中断 EX0=1;EX1=1;IT0=0;IT1=0;/外部中断0、1设置成为电平触发方式 PX0=1;PX1=0;/外部中断0为高级中断,外部中断1为低级中断 main()initial();/中断初始化 while(1)east_west_run();east_west_to_south_north_run();south_north_run();south_north_to_east_west_run();void gyE_W_go()interrupt 0/外部中断0中断服务程序(强制东西通行)east_west_run();void gyS_N_go()int

30、errupt 2/外部中断1中断服务程序(强制南北通行)south_north_run();程序说明:程序说明:n n这里对各引脚的定义等宏定义及各子函数参考前面程序。主程序中在两个方向死循环之前,在最前面加入了中断初始化子程序。其作用,一是将总中断及两外部中断打开;二是将外部中断方式设置为电平触发方式,即只要S1、S2闭合,一直会产生中断,强制一个方向通行,直到断开为止;三是设置了中断的优先级,外部中断0为高级,外部中断1为低级,即在S1、S2同时按下时,先响应S1。在两个方向的转换时,还添加了黄灯闪烁的功能。三、关于中断触发方式及程序编制三、关于中断触发方式及程序编制的讨论的讨论n n1、

31、关于边沿触发与电平触发的讨论n n1)电平触发中断n n电平触发方式比较好理解电平触发方式比较好理解.处理器每个指令周期查处理器每个指令周期查询中断引脚询中断引脚,当发现引脚电平为低时当发现引脚电平为低时,触发中断触发中断.如果如果信号从信号从1 1变为变为0,0,一个周期后又变为一个周期后又变为1,1,中断并不会被中断并不会被清除清除,直到中断执行完毕并用直到中断执行完毕并用RETIRETI指令返回之后指令返回之后.但是如果输入信号一直为低但是如果输入信号一直为低,那么将一直触发中断那么将一直触发中断,当要求中断服务的器件在中断服务结束一段时间当要求中断服务的器件在中断服务结束一段时间之后才

32、释放信号线时就会发生这种情况之后才释放信号线时就会发生这种情况.这时你会这时你会发现中断被执行了多次发现中断被执行了多次,所消耗的时间比预期的要所消耗的时间比预期的要长很多长很多,这时应使用边沿触发方式这时应使用边沿触发方式 2)边沿触发方式)边沿触发方式n n当外部中断引脚电平由高向低变化时,将触发中断处理器.每个指令周期查询中断引脚,当前一个指令周期是引脚电平为高,紧接着下一个指令周期检测到引脚电平为低时,将触发中断.像前面所提到的那样,这种方法适用于请求中断服务的器件在中断服务结束一段时间之后才释放信号线时的情况.因为这时只有下降沿才会触发中断,如果你还想触发下一个中断就必须把电平先置高

33、.n n当设计中断结构时,你要记住边沿触发适用于那些器件发出的中断请求信号不需要软件清除的场合.最为普遍的例子是系统的时标.这种信号一般由实时时钟电路产生,这些器件一般提供一个占空比为50%的信号(即信号的一半是高电平,另一半为低电平).如果使用电平触发,将将产生很多中断,这样即使不扰乱程序的运行也将浪费系统的资源.关于程序文档的规范化问题讨论关于程序文档的规范化问题讨论n n尽量用易于理解的文字、符号替换专业符号。如交通灯程序中的“east_west_run()”表示东西运行子函数就较好理解记忆,“Dongxi_G”表示东西向绿灯也便于理解和记忆,用“ON”、“OFF”代替生硬的“0”、“1

34、”,理解起来更方便。n n为使程序简化,可定义简单的符号代替常用的冗长的符号或关键字。如经常将“unsigned char”,通过“#define uchar unsigned char”后用“uchar”表示,使程序大大得到简化。n n只要是独立功能的功能段,不论程序长短最好都编写成子程序,如延时程序单独作为一个子程序。交通灯程序中有很多功能程序都用子程序表示。n n主程序要尽量简单化,让读者明了程序的骨干、主旨。最好能在电脑的一个界面或纸质文稿的一个页面展示。n n这里的技巧就是将编写了头文件“traffic.h”及“traffic.c”。“traffic.c”里面包含了所有的子程序及。n

35、 n而在“traffic.h”中包含了宏定义、包含语句及对各子函数的申明等。n n这里有两个功能模块,一个是“main.c”,它用来表示主函数;另一个是“traffic.c”,它用来表达各功能子程序。n n它们之间通过“traffic.h”联系起来。“traffic.h”的写法如下,可参考头文件“reg51.h”。n n/*-n n TRAFFIC.Hn n 包含了全部位的定义,以及常量的替换,还有对各子函数的申明。n n-*/n n#ifndef _TRAFFIC_H_n n#define _TRAFFIC_H_n n#includen n/*常量的替换 */n n#define ON 0n

36、 n#define OFF 1n n#define east_west_run_time 60n n#define east_west_to_south_north_run_time 30n n#define south_north_run_time 60n n#define south_north_to_east_west_run_time 30n n/*位常量替换 */n nsbit Dongxi_R=P10;n nsbit Dongxi_Y=P11;n nsbit Dongxi_G=P12;n nsbit Nanbei_R=P13;n nsbit Nanbei_Y=P14;n nsbit

37、 Nanbei_G=P15;n nsbit force_east_west_run=P16;n nsbit force_south_north_run=P17;n n/*对函数的申明 */n ninitial();n ndelay(unsigned int);n neast_west_run();n neast_west_to_south_north_run();n nsouth_north_run();n nsouth_north_to_east_west_run();n n#endif中断嵌套中断嵌套n n上面列举的几个例子中都有中断嵌套的问题。中断嵌套,即中断被中断。n n千万是注意,多

38、次中断并不是中断嵌套!要求要求n n掌握中断嵌套的概念;n n能运用中断嵌套处理简单的嵌套问题;n n能仿真中断嵌套实验;中断嵌套中断嵌套n n具有个响应优先级,可以实现中断的具有个响应优先级,可以实现中断的嵌套,即高优先级的中断请求可以打断低优先级嵌套,即高优先级的中断请求可以打断低优先级的中断程序程序。的中断程序程序。n n等高优先级的中断程序执行完后再转到低优先级等高优先级的中断程序执行完后再转到低优先级的中断服务程序继续执行。的中断服务程序继续执行。n n中断嵌套即中断被中断嵌套即中断被 中断;中断;n n日常生活中中断嵌套的例子日常生活中中断嵌套的例子n n如科代表交作业中断了老师的

39、备课,在老师处理如科代表交作业中断了老师的备课,在老师处理科代表交作业时,老师又补系领导叫去有其它事科代表交作业时,老师又补系领导叫去有其它事情,老师回来后继续与科代表交谈,了解班级学情,老师回来后继续与科代表交谈,了解班级学习情况,科代表离开后老师继续备课。习情况,科代表离开后老师继续备课。项目二任务项目二任务3中断嵌套仿真中断嵌套仿真仿真实验仿真实验n n如图所示,正常时与中相接的数码管显示-;如果低优先级的开关按下,则中的数码管停止不动,与口相接的数码管显示-;如果这时高优先级的开关按下,则与口相接的数码管显示-;断开高优先级的开关后,等-一次循环显示完后,转到低优先级的数码管继续显示;

40、低优先级的开关断开后,转到正常的与口相连的数码管继续循环显示-.任务分析:任务分析:n n这里有三个显示程序,即P0、P1、P2口的数码管都循环显示0-9。正常是P0口的显示,如果发生开关按下的情况,则要运程其它两个口的显示程序,既然有中断的情况有两个,就要对它们排队,这就是中断嵌套的问题。程序程序n n/中断嵌套实验中断嵌套实验n n/头文件引用头文件引用n n#include reg51.h#include reg51.hn n/宏定义宏定义n n#define uchar unsigned char#define uchar unsigned charn n#define uint un

41、signed int#define uint unsigned intn n/延时子程序延时子程序n nvoid delay(uint k)void delay(uint k)n n n n uint i,j;uint i,j;n n for(i=0;i100;i+)for(i=0;i100;i+)n n for(j=0;jk;j+);for(j=0;jk;j+);n n n n/外部中断响应程序外部中断响应程序n nvoid int0()interrupt 0void int0()interrupt 0n n n n uchar i;uchar i;n n for(i=0 xf0;i0 xf

42、a;i+)for(i=0 xf0;i0 xfa;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;i0 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/

43、主程序主程序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;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因为口是集电极(漏极)开路的;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁