学习情境2交通灯的设计.ppt
《学习情境2交通灯的设计.ppt》由会员分享,可在线阅读,更多相关《学习情境2交通灯的设计.ppt(128页珍藏版)》请在三一办公上搜索。
1、交通信号灯的设计,学习情景二,学习目标:了解中断的基本概念、中断的作用及中断请求方式掌握AT89S52单片机中断结构,6个中断源的中断请求、中断屏蔽、优先级设置等初始化编程方法掌握定时/计数器4种工作方式的初始化编程方法学会使用定时器/计数器编写计数、定时应用程序的方法,技能目标:会编写中断和定时/计数器初始化程序 会计算定时/计数器初值根据项目要求,能够灵活应用中断和定时/计数器的资源,任务一 中断控制的流水灯第一部分 项目要求 采用中断方法控制灯的亮灭,由中断服务程序控制I/O口置高,置低,即可控制灯的全亮和全灭。外部中断INT1接按键(KEY),作为中断申请信号,开机后8个发光二极管从左
2、到右流水,产生中断后,8个发光管全亮、全灭,延时一定时间后,再循环。,第二部分 相关知识一、中断的概念,中断的定义:当中央处理器CPU正在处理某事件时外界发生了更为紧急的请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完毕后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。,从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回三个要素。中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。,图2-1 中断流程,二、AT89S52中断源与中断向量地址,中断源就是向CPU发出中断请求的来源。AT89S
3、52共有六个中断源:2个外部中断(INT0和INT1)、3个定时器中断(定时器0、1和2)和1个串行中断。如图所示。,(一)外部中断外部中断0 P3.2外部中断1 P3.3外部中断请求有两种信号方式:电平方式和脉冲方式。电平方式的中断请求信号是低电平有效。脉冲方式的中断请求信号则是脉冲的负跳变有效。,(二)内部定时和外部计数中断定时:对内部振荡器输出的脉冲计数。计数脉冲的个数反映了时间的长短。计数:对外部脉冲计数。计数脉冲的个数仅仅反映外部脉冲输入的多少。外部脉冲由T0引入 P3.4外部脉冲由T1引入 P3.5外部脉冲由T2引入 P1.0当定时器/计数器发生溢出,便激活中断。外部计数中断请求信
4、号是脉冲的负跳变引起。,(三)串行中断 串行中断是为串行通信的而需要设置的。当串行口发送完或接收完一帧信息时,单片机内部硬件便自动串行发送或接收中断标志位置1。当CPU查询到这些标志位为1时,便激活串行中断。串行中断是由单片机内部自动发生的,不需要在芯片外设置引入脚。,(四)中断矢量地址,三、中断标志与控制,要实现中断,首先中断源要提出中断申请,而中断请求的过程是单片机内部特殊功能寄存器TCON和SCON相关状态位中断请求标志位置1的过程,当CPU响应中断时,中断请求标志位才由硬件或软件清0。,(一)定时器计数器控制寄存器TCON TCON为定时器/计数器的控制器,它也锁存外部中断请求标志,其
5、格式如下:,与中断有关的控制位共6位,IE0和IE1:外部中断请求标志。当CPU采样到(或)端出现有效中断请求(低电平或脉冲下降沿)时,IE0(或IE1)位由片内硬件自动置1;当中断响应完成转向中断服务程序时,由片内硬件自动清0。IT0和ITl:外部中断请求信号触发方式控制标志。IT0(或IT1)=1,(或)信号为脉冲触发方式,脉冲负跳沿有效;IT0(或IT1)=0,(或)信号电平触发方式,低电平有效。IT0(或IT1)位可由用户软件置1或清0 TF0和TFl:定时器/计数器溢出中断请求标志。当定时器0(或定时器1)产生计数溢出时,TF0(或TF1)由片内硬件自动置1;当中断响应完成转向中断服
6、务程序时,由片内硬件自动清0。计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。,(二)串行口控制寄存器SCON,与中断有关的控制位共2位TI:串行口发送中断请求标志。当串行口发送完一帧信号后,由片内硬件自动置1。但CPU响应中断时,并不清除TI,必须在中断服务程序中由软件对TI清0。,RI:串行口接收中断请求标志。当串行口接收完一帧信号后,由片内硬件自动置1。但CPU响应中断时,并不清除RI,必须在中断服务程序中由软件对其清0。应当指出,AT89S52系统复位后,TCON和SCON中各位被复位成“0”状态,应用时要注意各位的初始状态。
7、,(三)中断允许控制寄存器IE,与中断有关的控制位共7位EA:中断允许总控制位。EA=0时,中断总禁止,禁止一切中断;EA=1时,中断总允许,而每个中断源允许与禁止,分别由各自的允许位确定。,EX0和EX1:外部中断允许控制位。EX0(或EX1)=0,禁止外部中断;EX0(或EX1)=1,允许外部中断。ET0和ET1:定时器中断允许控制位。ET0(ET1)=0,禁止定时器0(或定时器1)中断;ET0(ET1)=1,允许定时器0(或定时器1)中断。,ES:串行中断允许控制位。ES=0,禁止串行(TI或RI)中断;ES=1,允许串行(TI或RI)中断。ET2:定时器2中断允许控制位。ET2=0,禁
8、止定时器2(TF2或EXF2)中断;ET2=1,允许定时器2(TF2或EXF2)中断;在单片机复位后,IE各位被复位成“0”状态,CPU处于关闭所有中断的状态。,例如:可以采用如下字节传送指令来开放定时器T0的溢出中断:MOV IE,#82H 也可以用位寻址指令,则需采用如下两条指令实现同样功能:SETB EA SETB ET0 在89S52复位后,IE各位被复位成“0”状态,CPU处于关闭所有中断的状态。所以,在89S52复位以后,用户必须通过程序中的指令来开放所需中断。,(四)中断优先级控制寄存器IP 89S52单片机具有高、低2个中断优先级。高优先级用“1”表示,低优先级用“0”表示。对
9、于所有的中断源,均可由软件设置为高优先级中断或低优先级中断,并可实现两级中断嵌套。IP寄存器可以位寻址。,与中断有关的控制位共6位 PX0:外部中断0优先级设定位。PT0:定时器0(T0)优先级设定位。PXl:外部中断1优先级设定位。PTl:定时器1(T1)优先级设定位。PS:为串行口优先级设定位。PT2:为定时器2优先级设定位。可用软件对IP的各位置1或清0,例如CPU开中断可由以下两条指令来实现:SETB 0AFH;EA置1 或 0RL IE,#80H;按位“或”,EA置1 CPU关中断可由以下两条指令来实现:CLR 0AFH;EA清0 或 ANL IE,#7FH;按位“与”,EA清0 又
10、如设置外部中断源 为高优先级,外部中断源 为低优先级,可由下面指令来实现:SETB 0B8H;PX0置1 CLR 0BAH;PXl清0 或 MOV IP,#00001B;PX0置1,PXl清0,四、优先级结构 中断优先级只有高低两级。所以在工作过程中必然会有两个或两个以上中断源处于同一中断优先级。若出现这种情况,内部中断系统对各中断源的处理遵循以下两条基本原则:低优先级中断可以被高优先级中断所中断,反之不能。一种中断(不管是什么优先级)一旦得到响应,与它同级的中断不能再中断它。中断源 同级自然优先级 外部中断0 最高级 定时器0中断 外部中断1 定时器1中断 串行口中断 最低级 定时器2中断
11、最低级,例:设89S52的片外中断为高优先级,片内中断为低优先级。试设置IP相应值。解:(a)用字节操作指令 MOV IP,#05H 或 MOV 0B8H,#05H(b)用位操作指令 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT1,五、中断系统的初始化及应用(一)中断系统的初始化(1)CPU开中断或关中断;(2)某中断源中断请求的允许或禁止(屏蔽);(3)设定所用中断的中断优先级;(4)若为外部中断,则应规定低电平还是负边沿的中断触发方式。例 请写出 为低电平触发的中断系统初始化程序。解:(1)采用位操作指令 SETB EA;CPU开中断 SETB EXl;开
12、 中断 SETB PXl;令 为高优先级 CLR ITl;令 为电平触发(2)采用字节型指令 MOV IE,#84H;开 中断 ORL IP,#04H;令 为高优先级 ANL TCON,#0FBH;令 为电平触发,(二)中断系统的应用 中断管理与控制程序一般包含在主程序中,根据需要通过几条指令来实现,例如CPU开中断,可用指令“SETB EA”或“ORL IE,#80H”来实现,关中断可用指令“CLR EA”,或“ANL IE,#7FH”来实现。,中断服务程序的一般格式:ORG ADDRESS AJMP INTVS INTVS:CLR EA;关中断 PUSH PSW;保护现场 PUSH A S
13、ETB EA;开中断,允许CPU响应高级中断 中断服务 CLR EA;关中断 POP A;恢复现场 POP PSW SETB EA;开中断 RETI;中断返回,编写此程序应注意以下几点:(1)为了要跳到用户设计的中断服务程序,在相应入口地址安排一条跳转指令;(2)在中断服务程序的末尾,安排一条返回指令RETI;(3)由于在响应中断时,CPU只自动保护断点,所以CPU的其他现场(如寄存器A、B状态,状态字PSW,通用寄存器R0、R1等)的保护和恢复也必须由用户在中断服务程序中安排;(4)在此多级中断的中断服务程序中,保护现场之后的开中断(SETB EA)是为了允许有更高级中断打断此中断服务程序,
14、恢复现场和保护现场之前的关中断(CLR EA)是为了保证在恢复和保护现场时,CPU不响应新的中断请求,从而使现场数据不受到破坏或者造成混乱;(5)当把程序中保护现场之后的SETB EA和恢复现场之前的CLR EA删除,就是一个单级中断服务程序。,(三)中断程序举例【例2.1】使用一个按键控制图2.3所示的流水灯,每按一次按键流水灯的流动方向改变一次,要求使用中断技术处理按键。解:如图2.3所示,按键接在P3.3,因此采用外部中断1,中断申请从 输入。每按一次按键,产生一次中断,流水灯流动方向便改变一次。当开关SA17闭合时,发出中断请求。中断服务程序的矢量地址为0013H。,图2.3 方向可控
15、流水灯,ORG 0000H;定义下一条指令的地址 LJMP START;转向主程序 ORG 0013H;安排外部中断1处理程序的第一条指令 LJMP KEYS;直接转移到中断处理程序 ORG 0100H;主程序起点 START:MOV SP,#70H;设置堆栈栈底指针 SETB IT1;设置外部中断1的中断方式为下降沿中断 SETB EX1;开放外部中断1 SETB EA;开放总中断 MOV A,#01H;#01H送累加器A L1:MOV P2,A;累加器A中内容送P2口 MOV R7,#0FFH;延时 L3:MOV R6,#0FFH L2:DJNZ R6,L2 DJNZ R7,L3 JNB
16、FX,L4;FX=0时转移到L4(FX是流水灯流动方向标志)RL A;累加器A中内容左移一位 SJMP L5;转移至L5 L4:RR A;累加器A中内容右移一位 L5:SJMP L1;转移至L1,;按键中断程序;入口:外部中断1;功能:确认按键后改变方向标志FX的状态 ORG 0300H;中断处理程序入口 KEYS:MOV R7,#20H;首先延时去抖 K1:MOVR6,#0FFH DJNZ R6,$DJNZ R7,K1 JB KEY,K2;延时完成后再检测按键 CPL FX;确认按键按下,改变方向标志位状态 K2:RETI;中断结束返回 KEY BIT P3.3;定义按键变量 FX BIT
17、00H;定义位变量,用于判断方向 END;结束,第三部分 项目实施一、项目实施分析(一)硬件电路 P1口连接8个发光二极管,外部中断INT1接KEY(P2.7接按键SW8,P3.3接KEY),作为中断申请信号,开机8个发光二极管从左到右流水,产生中断后,8个发光管全亮、全灭,延时后,再循环。如图2.4所示。,参考程序:ORG 0000h;伪指令 LJMP START;跳转到单片机的主程序 ORG 0013H;外部中断1的入口地址 LJMP EXT1;跳转到中断服务程序 ORG 0100H;伪指令,单片机主程序的开始START:MOV IE,#10000100b MOV IP,#00000100
18、b MOV TCON,#00000000b;定时器初始化 MOV SP,#40H,MOV P1,#0FFH MOV P2,#00H MOV P3,#0FFH;设置P1、P2、P3口状态LOOP:MOV A,#0FFH CLR C MOV R2,#08H LOOP1:RLC A MOV P1,A LCALL DELAY DJNZ R2,LOOP1 JMP LOOP;小灯循环点亮EXT1:PUSH ACC;中断服务程序 PUSH PSW,MOV A,#00H;小灯全亮 MOV R3,#0AHLOOP2:MOV P1,A LCALL DELAY CPL A DJNZ R3,LOOP2 POP PSW
19、 POP ACC RETI,DELAY:MOV R5,#20;延时程序D1:MOV R6,#20D2:MOV R7,#248 DJNZ R7,$DJNZ R6,D2 DJNZ R5,D1 RET END,任务二 速度可控流水灯第一部分 项目要求将8个发光二极管从左到右流水灯循环显示,通过按键改变循环的速率,最小为0.2秒,最大为2秒,即流水灯的流动速度分为10级,使用按键控制流动速度。每按一次按键流水灯的流动速度改变1级。按一次按键,速度增加一级,逐步增加,增加到最高速度后,再循环。采用定时器T0,方式1,定时器定时时基是0.05秒。,第二部分 相关知识,AT89S52单片机内部有三个16位可
20、编程的定时器/计数器,T0、T1和T2。它们既可用作定时器方式,又可用作计数器方式,且都有4种工作方式可供选择。但T0、T1与T2的4种工作方式不同。一、定时器/计数器结构与功能 定时器0,定时器1是16位加法计数器,分别由两个8位专用寄存器组成:定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。见图。,图2.5 定时器/计数器结构框图,1.计数功能 计数方式时,T的功能是计来自T0(P3.4)、T1(P3.5)的外部脉冲信号的个数。输入脉冲由1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。脉冲的计数长度与计数器预先装入的初值有关。初值越大,计数长度越小
21、;初值越小,计数长度越大。最大计数长度为65536(216)个脉冲(初值为0)。,2.定时方式 定时方式时,T记录89S52内部振荡器输出的脉冲(机器周期信号)个数。每一个机器周期使T0或T1的计数器增加1,直至计满回零自动产生溢出中断请求。定时器的定时时间不仅与计数器的初值即计数器的长度有关,而且还与系统的时钟频率有关。在机器周期一定的情况下,初值越大,定时时间越短;初值越小,定时时间越长。最长的定时时间为65536(216)个机器周期(初值为0)。,定时器/计数器是一种可编程的部件,在其工作之前必须将控制字写入工作方式和控制寄存器,用以确定工作方式,这个过程称为定时器/计数器的初始化。对定
22、时器/计数器进行控制的寄存器共有2个:TCON、TMOD,二、定时器/计数器控制寄存器,1.定时控制寄存器TCON(88H)工作方式寄存器TCON:控制定时器的启动、停止,标志定时器的溢出和中断情况。TCON的高4位:定时器的运行控制位和溢出标志位;低4位:外部中断触发方式控制位和锁存外部中断请求源。,TF0和TF1:定时器/计数器溢出标志位。当定时器/计数器0(或定时器/计数器1)溢出时,由硬件自动使TF0(或TF1)置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。TR0和TR1:定时器/计数器运行控制位。TR0(或TR1)=0,停止定时器/计数器0(或
23、定时器/计数器1)工作。TR0(或TR1)=1,启动定时器/计数器0(或定时器/计数器1)工作。用指令SETB TR1(或CLR TR1)使TR1置1(或清零)。,GATE,C/T,M1,M0,GATE,C/T,M1,M0,定时器1,定时器0,其中,低4位用于T0,高4位用于T1。,2.工作方式寄存器TMOD(89H),M1、M0:工作方式控制位,C/T:计数器/定时器方式选择位C/T=0,为定时方式。C/T=1,为计数方式。GATE:门控位GATE0时,只要用软件使TR0(或TRl)置1就可以启动定时器T0(或T1);GATE=1时,只有/INT0(或/INT1)引脚为高电平且由软件使TR0
24、(或TRl)置1时,才能启动定时器工作。TMOD不能位寻址,只能用字节指令设置高4位定义定时器1,低4位定义定时器0定时器工作方式。复位时,TMOD所有位均置0。,例:设置定时器1工作于方式1,定时工作方式与外部中断无关,则M1=0,M0=1,GATE=0,因此,高4位应为0001;定时器0未用,低4位可随意置数,但低两位不可为11(因方式3时,定时器1停止计数),一般将其设为0000。因此,指令形式为:MOV TMOD,#10H,三、定时器/计数器工作方式与程序设计(一)工作方式0,图2.6 定时器/计数器0方式0的逻辑结构,工作方式寄存器TMOD中的M1M0为:00 方式0为13位的计数器
25、,由TL0的低5位和TH0的8位组成,TL0低5位计数溢出时向TH0进位,TH0计数溢出时,向中断标志位TF0进位(硬件置位TF0),并申请中断。T0是否溢出可查询TF0是否被置位,以产生T0中断。工作在定时方式 C/T0。定时器T0工作在定时方式。定时器T0对机器周期计数。,定时器T0在工作前,应先对13位的计数器赋值,开始计数时,在初值的基础上进行减1计数。定时时间的计算公式为:定时时间(213 计数初值)晶振周期12或 定时时间(213 计数初值)机器周期若晶振频率为12MHz,则最短定时时间为 213(2131)(1/12)10-6121 s最长定时时间为(2130)(1/12)10-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 情境 交通灯 设计
链接地址:https://www.31ppt.com/p-6413000.html