学习情境交通灯的设计

上传人:dus****log 文档编号:171540910 上传时间:2022-11-27 格式:PPT 页数:128 大小:2.89MB
返回 下载 相关 举报
学习情境交通灯的设计_第1页
第1页 / 共128页
学习情境交通灯的设计_第2页
第2页 / 共128页
学习情境交通灯的设计_第3页
第3页 / 共128页
点击查看更多>>
资源描述
学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 学习情景二学习情景二 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 学习目标:学习目标:了解中断的基本概念、中断的作用及中断请了解中断的基本概念、中断的作用及中断请求方式求方式掌握掌握AT89S52AT89S52单片机中断结构,单片机中断结构,6 6个中断个中断源的中断请求、中断屏蔽、优先级设置等初始源的中断请求、中断屏蔽、优先级设置等初始化编程方法化编程方法掌握定时掌握定时/计数器计数器4 4种工作方式的初始化编程种工作方式的初始化编程方法方法学会使用定时器学会使用定时器/计数器编写计数、定时应计数器编写计数、定时应用程序的方法用程序的方法学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 技能目标:技能目标:会编写中断和定时会编写中断和定时/计数器初始化程序计数器初始化程序 会计算定时会计算定时/计数器初值计数器初值根据项目要求,能够灵活应用中断和定时根据项目要求,能够灵活应用中断和定时/计数器的资源计数器的资源学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 任务一任务一 中断控制的流水灯中断控制的流水灯第一部分第一部分 项目要求项目要求 采用中断方法控制灯的亮灭,由中断服务程序控采用中断方法控制灯的亮灭,由中断服务程序控制制I/OI/O口置高,置低,即可控制灯的全亮和全灭。口置高,置低,即可控制灯的全亮和全灭。外部中断外部中断INT1INT1接按键(接按键(KEYKEY),作为中断申请信号,),作为中断申请信号,开机后开机后8 8个发光二极管从左到右流水,产生中断后,个发光二极管从左到右流水,产生中断后,8 8个发光管全亮、全灭,延时一定时间后,再循环。个发光管全亮、全灭,延时一定时间后,再循环。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 第二部分第二部分 相关知识相关知识一、中断的概念一、中断的概念中断的定义中断的定义:当中央处理器当中央处理器CPUCPU正在处理某事正在处理某事件时外界发生了更为紧急的请求,要件时外界发生了更为紧急的请求,要求求CPUCPU暂停当前的工作,转而去处理暂停当前的工作,转而去处理这个紧急事件,处理完毕后,再回到这个紧急事件,处理完毕后,再回到原来被中断的地方,继续原来的工作,原来被中断的地方,继续原来的工作,这样的过程称为这样的过程称为中断中断。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 从中断的定义我们可从中断的定义我们可以看到中断应具备以看到中断应具备中断源、中断源、中断响应、中断返回中断响应、中断返回三个三个要素。要素。中断源发出中断请求,中断源发出中断请求,单片机对中断请求进行响单片机对中断请求进行响应,当中断响应完成后应应,当中断响应完成后应进行中断返回,返回被中进行中断返回,返回被中断的地方继续执行原来被断的地方继续执行原来被中断的程序。中断的程序。图2-1 中断流程学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 二、AT89S52中断源与中断向量地址 中断源就是向中断源就是向CPUCPU发出中断请求的来发出中断请求的来源。源。AT89S52AT89S52共共有六个中断源:有六个中断源:2 2个外部中断个外部中断(INT0INT0和和INT1INT1)、)、3 3个定时器中断个定时器中断(定时器(定时器0 0、1 1和和2 2)和和1 1个串行中断。个串行中断。如图所示。如图所示。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (一)(一)外部中断外部中断外部中断外部中断0 0 P3.2P3.2外部中断外部中断1 1 P3.3P3.3外部中断请求有外部中断请求有两种两种信号方式:电平方式和脉冲方信号方式:电平方式和脉冲方式。式。电平方式的中断请求信号是电平方式的中断请求信号是低低电平有效。电平有效。脉冲方式的中断请求信号则是脉冲的脉冲方式的中断请求信号则是脉冲的负跳变负跳变有效。有效。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (二)内部定时和外部计数中断(二)内部定时和外部计数中断定时:对内部振荡器输出的脉冲计数。计数脉冲的定时:对内部振荡器输出的脉冲计数。计数脉冲的个数反映了时间的长短。个数反映了时间的长短。计数:对外部脉冲计数。计数脉冲的个数仅仅反映计数:对外部脉冲计数。计数脉冲的个数仅仅反映外部脉冲输入的多少。外部脉冲输入的多少。外部脉冲由外部脉冲由T0T0引入引入 P3.4P3.4外部脉冲由外部脉冲由T1T1引入引入 P3.5P3.5外部脉冲由外部脉冲由T2T2引入引入 P1.0P1.0当定时器当定时器/计数器发生溢出,便激活中断。计数器发生溢出,便激活中断。外部计数中断请求信号是脉冲的外部计数中断请求信号是脉冲的负跳变负跳变引起。引起。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (三)串行中断(三)串行中断 串行中断是为串行通信的而需要串行中断是为串行通信的而需要设置的。当串行口发送完或接收完一设置的。当串行口发送完或接收完一帧信息时,单片机内部硬件便自动串帧信息时,单片机内部硬件便自动串行发送或接收中断标志位置行发送或接收中断标志位置1 1。当。当CPUCPU查询到这些标志位为查询到这些标志位为1 1时,便激时,便激活串行中断。串行中断是由单片机内活串行中断。串行中断是由单片机内部自动发生的,不需要在芯片外设置部自动发生的,不需要在芯片外设置引入脚。引入脚。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (四)中断矢量地址(四)中断矢量地址0INT1INT中断源中断源中断标志位中断标志位中断矢量地址中断矢量地址外部中断外部中断0 0()IE0IE00003H0003H定时器定时器0 0(T0T0)中断)中断TF0TF0000BH000BH外部中断外部中断1 1()IE1IE10013H0013H定时器定时器1 1(T1T1)中断)中断TF1TF1001BH001BH串行口中断串行口中断发送中断发送中断TITI0023H0023H接收中断接收中断RIRI定时器定时器2 2(T2T2)中断)中断T2T2溢出中断溢出中断TF2TF2002BH002BHT2EXT2EX中断中断EXF2EXF2学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 三、中断标志与控制三、中断标志与控制 要实现中断,首先中断源要提出要实现中断,首先中断源要提出中断申请,而中断请求的过程是单片中断申请,而中断请求的过程是单片机内部特殊功能寄存器机内部特殊功能寄存器TCONTCON和和SCONSCON相关状态位相关状态位中断请求标志位中断请求标志位置置1 1的过程,当的过程,当CPUCPU响应中断时,中响应中断时,中断请求标志位才由硬件或软件清断请求标志位才由硬件或软件清0 0。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 图2-2学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (一)定时器计数器控制寄存器(一)定时器计数器控制寄存器TCONTCON TCON TCON为定时器为定时器/计数器的控制器,它也计数器的控制器,它也锁存外部中断请求标志,其格式如下:锁存外部中断请求标志,其格式如下:TF1TF1 TR1 TF0TF0 TR0IE1IE1IT1IT1IE0IE0IT0IT0TCONTCON(88H88H)D7 D6 D5 D4 D3 D2 D1 D0位地址位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H与中断有关的控制位共与中断有关的控制位共6 6位位学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 IE0IE0和和IE1IE1:外部中断请求标志。外部中断请求标志。当当CPUCPU采样到采样到 (或(或 )端出现有效中断请求(低电平或)端出现有效中断请求(低电平或脉冲下降沿)时,脉冲下降沿)时,IE0IE0(或(或IE1IE1)位由片内硬件自动置)位由片内硬件自动置1 1;当中;当中断响应完成转向中断服务程序时,由片内硬件自动清断响应完成转向中断服务程序时,由片内硬件自动清0 0。IT0IT0和和ITlITl:外部中断请求信号触发方式控制标志。外部中断请求信号触发方式控制标志。IT0IT0(或(或IT1IT1)=1=1,(或(或 )信号为脉冲触发方式,脉冲)信号为脉冲触发方式,脉冲负跳沿有效;负跳沿有效;IT0IT0(或(或IT1IT1)=0=0,(或(或 )信号电平触发方式,低电)信号电平触发方式,低电平有效。平有效。IT0IT0(或(或IT1IT1)位可由用户软件置)位可由用户软件置1 1或清或清0 0 TF0TF0和和TFlTFl:定时器定时器/计数器溢出中断请求标志。当定时器计数器溢出中断请求标志。当定时器0 0(或定时器(或定时器1 1)产生计数溢出时,)产生计数溢出时,TF0TF0(或(或TF1TF1)由片内硬件)由片内硬件自动置自动置1 1;当中断响应完成转向中断服务程序时,由片内硬件;当中断响应完成转向中断服务程序时,由片内硬件自动清自动清0 0。计数溢出标志位的使用有两种情况:采用中断方式时,作计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使中断请求标志位来使用;采用查询方式时,作查询状态位来使用。用。0INT1INT0INT1INT0INT1INT学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (二)串行口控制寄存器(二)串行口控制寄存器SCONSCONSM0SM0 SM1 SM2SM2 REN TB8TB8 RB8RB8 TITIRIRISCONSCON(98H98H)D7 D6 D5 D4 D3 D2 D1 D0位地址位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H与中断有关的控制位共与中断有关的控制位共2 2位位TITI:串行口发送中断请求标志。:串行口发送中断请求标志。当串行口发送完一帧信号后,由片内硬件当串行口发送完一帧信号后,由片内硬件自动置自动置1 1。但。但CPUCPU响应中断时,并不清除响应中断时,并不清除TITI,必须在中断服务程序中由软件对,必须在中断服务程序中由软件对TITI清清0 0。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 RIRI:串行口接收中断请求标志。当串行口接串行口接收中断请求标志。当串行口接收完一帧信号后,由片内硬件自动置收完一帧信号后,由片内硬件自动置1 1。但。但CPUCPU响应中断时,并不清除响应中断时,并不清除RIRI,必须在中断,必须在中断服务程序中由软件对其清服务程序中由软件对其清0 0。应当指出,应当指出,AT89S52AT89S52系统复位后,系统复位后,TCONTCON和和SCONSCON中各位被复位成中各位被复位成“0”0”状态,状态,应用时要注意各位的初始状态。应用时要注意各位的初始状态。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (三)中断允许控制寄存器(三)中断允许控制寄存器IEIEEAEAET2ET2ESET1ET1EX1 EX1 ET0ET0 EX0EX0IEIE(A8HA8H)D7 D6 D5 D4 D3 D2 D1 D0位地址位地址 AFH AEH ADH ACH ABH AAH A9H A8H与中断有关的控制位共与中断有关的控制位共7 7位位EAEA:中断允许总控制位。中断允许总控制位。EA=0EA=0时,中断总禁止,禁止一切中断;时,中断总禁止,禁止一切中断;EA=1EA=1时,中断总允许,而每个中断源允时,中断总允许,而每个中断源允许与禁止,分别由各自的允许位确定。许与禁止,分别由各自的允许位确定。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 EX0EX0和和EX1EX1:外部中断允许控制位。外部中断允许控制位。EX0EX0(或(或EX1EX1)=0=0,禁止外部中断;,禁止外部中断;EX0EX0(或(或EX1EX1)=1=1,允许外部中断。,允许外部中断。ET0ET0和和ET1ET1:定时器中断允许控制位。定时器中断允许控制位。ET0ET0(ET1ET1)=0=0,禁止定时器,禁止定时器0 0(或定时器(或定时器1 1)中断;中断;ET0ET0(ET1ET1)=1=1,允许定时器,允许定时器0 0(或定时器(或定时器1 1)中断中断。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 ESES:串行中断允许控制位。串行中断允许控制位。ES=0ES=0,禁止串行(,禁止串行(TITI或或RIRI)中断;)中断;ES=1ES=1,允许串行(,允许串行(TITI或或RIRI)中断。)中断。ET2ET2:定时器定时器2 2中断允许控制位。中断允许控制位。ET2=0ET2=0,禁止定时器,禁止定时器2 2(TF2TF2或或EXF2EXF2)中断;)中断;ET2=1ET2=1,允许定时器,允许定时器2 2(TF2TF2或或EXF2EXF2)中断;)中断;在单片机复位后,在单片机复位后,IEIE各位被复位成各位被复位成“0”0”状状态,态,CPUCPU处于关闭所有中断的状态。处于关闭所有中断的状态。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 例如:例如:可以采用如下字节传送指令来开放定可以采用如下字节传送指令来开放定时器时器T0T0的溢出中断:的溢出中断:MOV IEMOV IE,#82H#82H 也可以用位寻址指令,则需采用如下两条也可以用位寻址指令,则需采用如下两条指令实现同样功能:指令实现同样功能:SETB EASETB EA SETB ET0 SETB ET0 在在89S5289S52复位后,复位后,IEIE各位被复位成各位被复位成“0”0”状态,状态,CPUCPU处于关闭所有中断的状态。所以,处于关闭所有中断的状态。所以,在在89S5289S52复位以后,用户必须通过程序中的指复位以后,用户必须通过程序中的指令来开放所需中断。令来开放所需中断。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (四)中断优先级控制寄存器(四)中断优先级控制寄存器IPIP 89S52 89S52单片机具有高、低单片机具有高、低2 2个中断优先级。高优先级用个中断优先级。高优先级用“1”1”表示,低优先级用表示,低优先级用“0”0”表示。对于所有的中断源,均可表示。对于所有的中断源,均可由软件设置为高优先级中断或低优先级中断,并可实现两级由软件设置为高优先级中断或低优先级中断,并可实现两级中断嵌套。中断嵌套。IPIP寄存器可以位寻址。寄存器可以位寻址。PSPT2PT1PX1PT0PX0 IP IP(B8HB8H)D7 D6 D5 D4 D3 D2 D1 D0 BDH BCH BBH BAH B9H B8H学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 与中断有关的控制位共与中断有关的控制位共6 6位位 PX0PX0:外部中断:外部中断0 0优先级设定位。优先级设定位。PT0PT0:定时器:定时器0(T0)0(T0)优先级设定位。优先级设定位。PXlPXl:外部中断:外部中断1 1优先级设定位。优先级设定位。PTlPTl:定时器:定时器1(T1)1(T1)优先级设定位。优先级设定位。PSPS:为串行口优先级设定位。:为串行口优先级设定位。PT2PT2:为定时器:为定时器2 2优先级设定位。优先级设定位。可用软件对IP的各位置1或清0 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 例如例如CPUCPU开中断可由以下两条指令来实现:开中断可由以下两条指令来实现:SETB 0AFH SETB 0AFH ;EAEA置置1 1 或或 0RL IE0RL IE,#80H#80H ;按位;按位“或或”,EAEA置置1 1 CPU CPU关中断可由以下两条指令来实现:关中断可由以下两条指令来实现:CLR 0AFH CLR 0AFH ;EAEA清清0 0 或或 ANL IEANL IE,#7FH#7FH ;按位;按位“与与”,EAEA清清0 0 又如设置外部中断源又如设置外部中断源 为高优先级,外部中断源为高优先级,外部中断源 为低优先级,可由下面指令来实现:为低优先级,可由下面指令来实现:SETB 0B8H SETB 0B8H ;PX0PX0置置1 1 CLR 0BAH CLR 0BAH ;PXlPXl清清0 0 或或 MOV IPMOV IP,#000#0000 01B 1B ;PX0PX0置置1 1,PXlPXl清清0 0 0INT1INT学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 四、优先级结构四、优先级结构 中断优先级只有高低两级。所以在工作过程中必然会有两中断优先级只有高低两级。所以在工作过程中必然会有两个或两个以上中断源处于同一中断优先级。若出现这种情况,个或两个以上中断源处于同一中断优先级。若出现这种情况,内部中断系统对各中断源的处理遵循以下两条基本原则:内部中断系统对各中断源的处理遵循以下两条基本原则:低优先级中断可以被高优先级中断所中断,反之不能。低优先级中断可以被高优先级中断所中断,反之不能。一种中断一种中断(不管是什么优先级不管是什么优先级)一旦得到响应,与它同级的一旦得到响应,与它同级的中断不能再中断它。中断不能再中断它。中断源中断源 同级自然优先级同级自然优先级 外部中断外部中断0 0 最高级最高级 定时器定时器0 0中断中断 外部中断外部中断1 1 定时器定时器1 1中断中断 串行口中断串行口中断 最低级最低级 定时器定时器2 2中断中断 最低级最低级学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 例:设例:设89S5289S52的片外中断为高优先级,片内中的片外中断为高优先级,片内中断为低优先级。试设置断为低优先级。试设置IPIP相应值。相应值。解:解:(a)(a)用字节操作指令用字节操作指令 MOV IPMOV IP,#05H#05H 或或 MOV 0B8HMOV 0B8H,#05H#05H (b)(b)用位操作指令用位操作指令 SETB PX0SETB PX0 SETB PX1 SETB PX1 CLR PS CLR PS CLR PT0 CLR PT0 CLR PT1 CLR PT1 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 五、中断系统的初始化及应用五、中断系统的初始化及应用 (一)中断系统的初始化(一)中断系统的初始化 (1)CPU开中断或关中断;开中断或关中断;(2)某中断源中断请求的允许或禁止某中断源中断请求的允许或禁止(屏蔽屏蔽);(3)设定所用中断的中断优先级;设定所用中断的中断优先级;(4)若为外部中断,则应规定低电平还是负边沿的中断触发方式。若为外部中断,则应规定低电平还是负边沿的中断触发方式。例例 请写出请写出 为低电平触发的中断系统初始化程序。为低电平触发的中断系统初始化程序。解:解:(1)采用位操作指令采用位操作指令 SETB EA ;CPU开中断开中断 SETB EXl ;开;开 中断中断 SETB PXl ;令;令 为高优先级为高优先级 CLR ITl ;令;令 为电平触发为电平触发 (2)采用字节型指令采用字节型指令 MOV IE,#84H ;开;开 中断中断 ORL IP,#04H ;令;令 为高优先级为高优先级 ANL TCON,#0FBH ;令;令 为电平触发为电平触发1INT1INT1INT1INT1INT1INT1INT学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (二)中断系统的应用(二)中断系统的应用 中断管理与控制程序一般包含在主程序中,中断管理与控制程序一般包含在主程序中,根据需要通过几条指令来实现,例如根据需要通过几条指令来实现,例如CPUCPU开中开中断,可用指令断,可用指令“SETB EA”SETB EA”或或“ORL IEORL IE,#80H”#80H”来实现,关中断可用指令来实现,关中断可用指令“CLR EA”CLR EA”,或或“ANL IEANL IE,#7FH”#7FH”来实现。来实现。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 中断服务程序的一般格式:中断服务程序的一般格式:ORG ADDRESSORG ADDRESS AJMP INTVS AJMP INTVS INTVS INTVS:CLR EA CLR EA ;关中断;关中断 PUSH PSW PUSH PSW ;保护现场;保护现场 PUSH APUSH A SETB EA SETB EA ;开中断,允许;开中断,允许CPUCPU响应高级中断响应高级中断 中断服务中断服务 CLR EA CLR EA ;关中断;关中断 POP A POP A ;恢复现场;恢复现场 POP PSW POP PSW SETB EA SETB EA ;开中断;开中断 RETI RETI ;中断返回;中断返回 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 编写此程序应注意以下几点:编写此程序应注意以下几点:(1)为了要跳到用户设计的中断服务程序,在相应入口地址安为了要跳到用户设计的中断服务程序,在相应入口地址安排一条跳转指令;排一条跳转指令;(2)在中断服务程序的末尾,安排一条返回指令在中断服务程序的末尾,安排一条返回指令RETI;(3)由于在响应中断时,由于在响应中断时,CPU只自动保护断点,所以只自动保护断点,所以CPU的其的其他现场他现场(如寄存器如寄存器A、B状态,状态字状态,状态字PSW,通用寄存器,通用寄存器R0、R1等等)的保护和恢复也必须由用户在中断服务程序中安排;的保护和恢复也必须由用户在中断服务程序中安排;(4)在此多级中断的中断服务程序中,保护现场之后的开中断在此多级中断的中断服务程序中,保护现场之后的开中断(SETB EA)是为了允许有更高级中断打断此中断服务程序,恢是为了允许有更高级中断打断此中断服务程序,恢复现场和保护现场之前的关中断复现场和保护现场之前的关中断(CLR EA)是为了保证在恢复和是为了保证在恢复和保护现场时,保护现场时,CPU不响应新的中断请求,从而使现场数据不受不响应新的中断请求,从而使现场数据不受到破坏或者造成混乱;到破坏或者造成混乱;(5)当把程序中保护现场之后的当把程序中保护现场之后的SETB EA和恢复现场之前和恢复现场之前的的CLR EA删除,就是一个单级中断服务程序。删除,就是一个单级中断服务程序。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (三)中断程序举例(三)中断程序举例 【例【例2.12.1】使用一个按键控制图】使用一个按键控制图2.32.3所示的所示的流水灯,每按一次按键流水灯的流动方向改变流水灯,每按一次按键流水灯的流动方向改变一次,要求使用中断技术处理按键。一次,要求使用中断技术处理按键。解:如图解:如图2.32.3所示,按键接在所示,按键接在P3.3P3.3,因,因此采用外部中断此采用外部中断1 1,中断申请从,中断申请从 输入。每输入。每按一次按键,产生一次中断,流水灯流动方向按一次按键,产生一次中断,流水灯流动方向便改变一次。当开关便改变一次。当开关SA17SA17闭合时,发出中断闭合时,发出中断请求。中断服务程序的矢量地址为请求。中断服务程序的矢量地址为0013H0013H。1INT学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 图图2.3 方向可控流水灯方向可控流水灯 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 ORG 0000H ORG 0000H ;定义下一条指令的地址定义下一条指令的地址 LJMP START ;LJMP START ;转向主程序转向主程序 ORG 0013HORG 0013H;安排外部中断安排外部中断1 1处理程序的第一条指令处理程序的第一条指令 LJMP KEYS ;LJMP KEYS ;直接转移到中断处理程序直接转移到中断处理程序 ORG 0100H ;ORG 0100H ;主程序起点主程序起点 START:MOV SP,#70H ;START:MOV SP,#70H ;设置堆栈栈底指针设置堆栈栈底指针 SETB IT1SETB IT1 ;设置外部中断设置外部中断1 1的中断方式为下降沿中断的中断方式为下降沿中断 SETB EX1SETB EX1;开放外部中断开放外部中断1 1 SETB EA SETB EA ;开放总中断开放总中断 MOVMOV A,#01H ;#01H A,#01H ;#01H送累加器送累加器A A L1:MOV L1:MOV P2,A P2,A ;累加器累加器A A中内容送中内容送P2P2口口 MOVMOV R7,#0FFH ;R7,#0FFH ;延时延时 L3:MOVL3:MOV R6,#0FFH R6,#0FFH L2:DJNZ R6,L2 L2:DJNZ R6,L2 DJNZ R7,L3 DJNZ R7,L3 JNB FX,L4;FX=0 JNB FX,L4;FX=0时转移到时转移到L4L4(FXFX是流水灯流动方向标志)是流水灯流动方向标志)RL A ;RL A ;累加器累加器A A中内容左移一位中内容左移一位 SJMP L5 ;SJMP L5 ;转移至转移至L5L5 L4:RR A ;L4:RR A ;累加器累加器A A中内容右移一位中内容右移一位 L5:SJMP L1 ;L5:SJMP L1 ;转移至转移至L1L1学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 ;按键中断程序按键中断程序 ;入口入口:外部中断外部中断1 1 ;功能功能:确认按键后改变方向标志确认按键后改变方向标志FXFX的状态的状态 ORG 0300HORG 0300H;中断处理程序入口中断处理程序入口 KEYS:MOV KEYS:MOV R7,#20H R7,#20H ;首先延时去抖首先延时去抖 K1:MOVK1:MOVR6,#0FFHR6,#0FFH DJNZ R6,$DJNZ R6,$DJNZ R7,K1 DJNZ R7,K1 JB KEY,K2 ;JB KEY,K2 ;延时完成后再检测按键延时完成后再检测按键 CPL FX ;CPL FX ;确认按键按下确认按键按下,改变方向标志位状态改变方向标志位状态 K2:RETI ;K2:RETI ;中断结束返回中断结束返回 KEY BIT P3.3KEY BIT P3.3 ;定义按键变量定义按键变量 FXFX BIT 00H ;BIT 00H ;定义位变量定义位变量,用于判断方向用于判断方向 ENDEND ;结束结束学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 第三部分第三部分 项目实施项目实施一、项目实施分析一、项目实施分析(一)硬件电路(一)硬件电路 P1P1口连接口连接8 8个发光二极管,外部中断个发光二极管,外部中断INT1INT1接接KEYKEY(P2.7P2.7接按键接按键SW8SW8,P3.3P3.3接接KEYKEY),作为中断申请信号,开机),作为中断申请信号,开机8 8个发个发光二极管从左到右流水,产生中断后,光二极管从左到右流水,产生中断后,8 8个发光管全亮、全灭,延时后,再循环。个发光管全亮、全灭,延时后,再循环。如图如图2.42.4所示。所示。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 参考程序:参考程序:ORG 0000h ;ORG 0000h ;伪指令伪指令 LJMP START ;LJMP START ;跳转到单片机的主程序跳转到单片机的主程序 ORG 0013H ;ORG 0013H ;外部中断外部中断1 1的入口地址的入口地址 LJMP EXT1 ;LJMP EXT1 ;跳转到中断服务程序跳转到中断服务程序 ORG 0100H ;ORG 0100H ;伪指令,单片机主程伪指令,单片机主程序的开始序的开始STARTSTART:MOV IE,#10000100bMOV IE,#10000100b MOV IP,#00000100b MOV IP,#00000100b MOV TCON,#00000000b MOV TCON,#00000000b ;定;定时器初始化时器初始化 MOV SP,#40H MOV SP,#40H 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 MOV P1,#0FFH MOV P1,#0FFH MOV P2,#00H MOV P2,#00H MOV P3,#0FFH MOV P3,#0FFH ;设置;设置 P1P1、P2P2、P3P3口状态口状态LOOP:MOV A,#0FFHLOOP:MOV A,#0FFH CLR C CLR C MOV R2,#08H MOV R2,#08H LOOP1:RLC A LOOP1:RLC A MOV P1,A MOV P1,A LCALL DELAY LCALL DELAY DJNZ R2,LOOP1 DJNZ R2,LOOP1 JMP LOOP JMP LOOP ;小灯循环点亮;小灯循环点亮EXT1:PUSH ACC EXT1:PUSH ACC ;中断服务程序;中断服务程序 PUSH PSWPUSH PSW学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 MOV A,#00H MOV A,#00H ;小灯全亮;小灯全亮 MOV R3,#0AHMOV R3,#0AHLOOP2:MOV P1,ALOOP2:MOV P1,A LCALL DELAY LCALL DELAY CPL A CPL A DJNZ R3,LOOP2 DJNZ R3,LOOP2 POP PSW POP PSW POP ACC POP ACC RETI RETI学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 DELAY:MOV R5,#20 DELAY:MOV R5,#20 ;延时程序;延时程序D1:MOV R6,#20D1:MOV R6,#20D2:MOV R7,#248D2:MOV R7,#248 DJNZ R7,$DJNZ R7,$DJNZ R6,D2 DJNZ R6,D2 DJNZ R5,D1 DJNZ R5,D1 RET RET END END 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 任务二任务二 速度可控速度可控流水灯流水灯第一部分第一部分 项目要求项目要求将将8个发光二极管从左到右流水灯循环显示,通过按键改变循个发光二极管从左到右流水灯循环显示,通过按键改变循环的速率,最小为环的速率,最小为0.2秒,最大为秒,最大为2秒,即流水灯的流动速度秒,即流水灯的流动速度分为分为10级,使用按键控制流动速度。每按一次按键流水灯的级,使用按键控制流动速度。每按一次按键流水灯的流动速度改变流动速度改变1级。按一次按键,速度增加一级,逐步增加,级。按一次按键,速度增加一级,逐步增加,增加到最高速度后,再循环。采用定时器增加到最高速度后,再循环。采用定时器T0,方式,方式1,定时器,定时器定时时基是定时时基是0.05秒。秒。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 第二部分第二部分 相关知识相关知识 AT89S52 AT89S52单片机内部有单片机内部有三个三个1616位可编程的定位可编程的定时器时器/计数器,计数器,T0T0、T1T1和和T2T2。它们既可用作定时。它们既可用作定时器方式,又可用作计数器方式,且都有器方式,又可用作计数器方式,且都有4 4种工作方种工作方式可供选择。但式可供选择。但T0T0、T1T1与与T2T2的的4 4种工作方式不同。种工作方式不同。一、定时器一、定时器/计数器结构与功能计数器结构与功能 定时器定时器0 0,定时器,定时器1 1是是1616位加法计数器,分别位加法计数器,分别由两个由两个8 8位专用寄存器组成:定时器位专用寄存器组成:定时器0 0由由TH0TH0和和TL0TL0组成,定时器组成,定时器1 1由由TH1TH1和和TL1TL1组成。见图。组成。见图。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 CPUTCON(88H)TH1TL1TH0TL0INT1(P3.3)INT0(P3.2)中断T1(P3.5)定时器1定时器0溢出启动(8DH)(8BH)(8CH)(8AH)启动内部总线溢出 工作方式工作方式70T0(P3.4)70TMOD(89H)7070图图2.5 定时器定时器/计数器结构框图计数器结构框图 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 定时器的定时时间不仅与计数器的初值即计数定时器的定时时间不仅与计数器的初值即计数器的长度有关,而且还与系统的时钟频率有关。在器的长度有关,而且还与系统的时钟频率有关。在机器周期一定的情况下,初值越大,定时时间越短;机器周期一定的情况下,初值越大,定时时间越短;初值越小,定时时间越长。最长的定时时间为初值越小,定时时间越长。最长的定时时间为6553665536(2 21616)个机器周期(初值为)个机器周期(初值为0 0)。)。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 定时器定时器/计数器是一种可编程的部件,在计数器是一种可编程的部件,在其工作之前必须将控制字写入工作方式其工作之前必须将控制字写入工作方式和控制寄存器,用以确定工作方式,这和控制寄存器,用以确定工作方式,这个过程称为定时器个过程称为定时器/计数器的初始化。计数器的初始化。对定时器对定时器/计数器进行控制的寄存器共有计数器进行控制的寄存器共有2 2个:个:TCONTCON 、TMODTMOD二、定时器二、定时器/计数器控制寄存器计数器控制寄存器学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 1.1.定时控制寄存器定时控制寄存器TCONTCON(88H88H)工作方式寄存器工作方式寄存器TCONTCON:控制定时器的启动、控制定时器的启动、停止,标志定时器的溢出和中断情况。停止,标志定时器的溢出和中断情况。TCONTCON的高的高4 4位位:定时器的运行控制位和溢出标定时器的运行控制位和溢出标志位志位;低低4 4位位:外部中断触发方式控制位和锁存外部中外部中断触发方式控制位和锁存外部中断请求源。断请求源。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 TF0TF0和和TF1TF1:定时器定时器/计数器溢出标志位。计数器溢出标志位。当定时器当定时器/计数器计数器0 0(或定时器(或定时器/计数器计数器1 1)溢出时,)溢出时,由硬件自动使由硬件自动使TF0TF0(或(或TF1TF1)置)置1 1,并向,并向CPUCPU申请中申请中断。断。CPUCPU响应中断后,自动对响应中断后,自动对TF1TF1清零。清零。TF1TF1也可以也可以用软件清零。用软件清零。TR0TR0和和TR1TR1:定时器定时器/计数器运行控制位。计数器运行控制位。TR0TR0(或(或TR1TR1)=0=0,停止定时器,停止定时器/计数器计数器0 0(或定时器(或定时器/计数器计数器1 1)工作。)工作。TR0TR0(或(或TR1TR1)=1=1,启动定时器,启动定时器/计数器计数器0 0(或定时器(或定时器/计数器计数器1 1)工作。)工作。用指令用指令SETB TR1SETB TR1(或(或CLR TR1CLR TR1)使)使TR1TR1置置1 1(或清零)。(或清零)。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 GATE C/T M1 M0GATE C/T M1 M0定时器定时器1定时器定时器02.2.工作方式寄存器工作方式寄存器TMOD(89H)TMOD(89H)M1 M1、M0M0:工作方式控制位:工作方式控制位学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 C/C/=0=0,为定时方式。,为定时方式。C/C/=1=1,为计数方式。,为计数方式。GATEGATE0 0时,只要用软件使时,只要用软件使TR0(TR0(或或TRlTRl)置置1 1就可以就可以启动定时器启动定时器T0T0(或(或T1T1););GATE=1GATE=1时,只有时,只有/INT0/INT0(或或/INT1/INT1)引脚为高电平且引脚为高电平且由软件使由软件使TR0TR0(或或TRlTRl)置置1 1时,才能启动定时器工作。时,才能启动定时器工作。TMODTMOD不能位寻址,只能用字节指令设置高不能位寻址,只能用字节指令设置高4 4位位定义定时器定义定时器1 1,低,低4 4位定义定时器位定义定时器0 0定时器工作方式。定时器工作方式。复位时,复位时,TMODTMOD所有位均置所有位均置0 0。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 例:设置定时器例:设置定时器1 1工作于方式工作于方式1 1,定时,定时工作方式与外部中断无关,则工作方式与外部中断无关,则M1=0M1=0,M0=1M0=1,GATE=0GATE=0,因此,高,因此,高4 4位应为位应为00010001;定时器;定时器0 0未用,低未用,低4 4位可随意置数,位可随意置数,但低两位不可为但低两位不可为1111(因方式(因方式3 3时,定时器时,定时器1 1停止计数),一般将其设为停止计数),一般将其设为00000000。因。因此,指令形式为:此,指令形式为:MOV TMODMOV TMOD,#10H#10H学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 三、定时器三、定时器/计数器工作方式与程序设计计数器工作方式与程序设计(一)工作方式(一)工作方式0 0图图2.6 定时器定时器/计数器计数器0方式方式0的逻辑结构的逻辑结构 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 工作方式寄存器工作方式寄存器TMODTMOD中的中的M1M0M1M0为:为:0000 方式方式0 0为为1313位的计数器,位的计数器,由由TL0TL0的低的低5 5位位和和TH0TH0的的8 8位组成,位组成,TL0TL0低低5 5位计数溢出时向位计数溢出时向TH0TH0进位,进位,TH0TH0计数溢出时,向中断标志位计数溢出时,向中断标志位TF0TF0进位(硬件置位进位(硬件置位TF0TF0),并申请中断。),并申请中断。T0T0是否溢出可查询是否溢出可查询TF0TF0是否被置位,以产生是否被置位,以产生T0T0中中断。断。工作在定时方式工作在定时方式 C/TC/T0 0。定时器。定时器T0T0工作在定时方式。定工作在定时方式。定时器时器T0T0对机器周期计数。对机器周期计数。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 定时器定时器T0T0在工作前,应先对在工作前,应先对1313位的计数器赋位的计数器赋值,开始计数时,在初值的基础上进行减值,开始计数时,在初值的基础上进行减1 1计数。计数。定时时间的计算公式为:定时时间的计算公式为:定时时间定时时间(2 21313 计数初值)计数初值)晶振周期晶振周期1212或或 定时时间定时时间(2 213 13 计数初值)计数初值)机器周期机器周期若晶振频率为若晶振频率为12MHz12MHz,则,则最短定时时间为最短定时时间为 221313(2(213131)1)(1/12)(1/12)1010-6-612121 s1 s最长定时时间为最长定时时间为 (2 213130 0)(1/121/12)1010-6-612128 192 s8 192 s学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 工作在计数方式工作在计数方式 C/TC/T1,1,定时器定时器T0T0工作在计数方式。工作在计数方式。1313位计数器位计数器对外部输入信号进行加对外部输入信号进行加1 1计数。计数。当当INT0INT0由由0 0变为变为1 1时,开始计数;当时,开始计数;当INT0INT0由由1 1变为变为0 0时,停止计数。这样可以测量在时,停止计数。这样可以测量在INT0INT0端出现的正脉冲端出现的正脉冲的宽度。的宽度。方式方式0 0计数时,计数时,最大计数值为最大计数值为 2 21313=8 192=8 192(个外部脉冲个外部脉冲)。学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 例例2.22.2:假设:假设89S5289S52单片机晶振频率为单片机晶振频率为12MHz12MHz,要求定时时间,要求定时时间8ms8ms,使用定时器,使用定时器T0T0,工作方式工作方式0 0,计算定时器初值,计算定时器初值X X。解:解:t=t=(2 21313 X X)机器周期机器周期 当单片机晶振频率为当单片机晶振频率为12MHz12MHz时,时,机器周期机器周期=1s=1s 8 810103 3=(2 21313 X X)1 1 X=8192-8000=192 X=8192-8000=192 转换成二进制数为:转换成二进制数为:11000000B 11000000B 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 例例2.3 2.3 利用利用T0T0方式方式0 0产生产生1ms1ms的定时,在的定时,在P1.2P1.2引脚上输出周引脚上输出周期为期为2ms2ms的方波。设单片机晶振频率的方波。设单片机晶振频率foscfosc12MHz12MHz。解:解:(1 1)解题思路)解题思路 要在要在P1.2P1.2引脚输出周期为引脚输出周期为2ms2ms的方波,只要使的方波,只要使P1.2P1.2每隔每隔1ms1ms取反一次即可。执行指令为取反一次即可。执行指令为CPL P1.2CPL P1.2。(2 2)确定工作方式)确定工作方式 :方式方式0 TMOD=00H 0 TMOD=00H D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7定时器定时器 /计数器计数器T1T1定时器定时器 /计数器计数器T0T0TMODTMOD GATEGATEC/TC/TC/TC/TM0M0M1M1M0M0M1M1GATEGATE(89H)(89H)bitbitC/C/0 0:T0T0为定时功能;(为定时功能;(D2D2位)位)GATEGATE0 0,只要用软件使,只要用软件使TR0TR0(或(或TR1TR1)置)置1 1就能启动定就能启动定时器时器T0T0(或(或T1T1););学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 M1M0=00M1M0=00,工作方式,工作方式0 0 TMOD TMOD的值为的值为 =00H=00HTMOD.4TMOD.7TMOD.4TMOD.7可取任意值,因可取任意值,因T1T1不用,这里取不用,这里取0 0值。值。使用使用 MOV TMOD,#00HMOV TMOD,#00H即可设定即可设定T0T0的工作方式。的工作方式。(3 3)计算)计算1 ms1 ms定时时定时时T0T0的初值的初值机器周期机器周期 T=1T=1f foscosc12=1s12=1s计数个数:计数个数:X=1ms/ls=1000X=1ms/ls=1000设设T0T0的计数初值为的计数初值为x x0 0,则,则 x x0 0 (2(21313一一X)X)8192100081921000 7192D7192D转换成二进制数为:转换成二进制数为:11100000 11000B11100000 11000B 高高8 8位位 低低5 5位位 将高将高8 8位位11100000=0E0H11100000=0E0H装入装入TH0TH0 将低将低5 5位位11000=18H11000=18H装入装入TL0 TL0 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (4 4)编程)编程可采用中断和查询两种方式编写程序。可采用中断和查询两种方式编写程序。方法一:中断方式方法一:中断方式 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ;转主程序;转主程序MAIN MAIN ORG 000BH ORG 000BH LJMP IT0P LJMP IT0P ;转;转T0T0中断服务程序中断服务程序IT0P IT0P AFHAFH AEHAEH ADHADH ACHACH ABHABH AAHAAH A9HA9H A8HA8HA8HA8HIEIEbitbitEAEAESESET1ET1 EX1EX1 ET0ET0 EX0EX0 1 11 1EA=1,CPUEA=1,CPU开放中断;开放中断;ET0=1ET0=1,允许,允许T0T0中断;中断;学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 ORG 1000HORG 1000HMAINMAIN:MOV SPMOV SP,#60H#60H ;设堆栈指针;设堆栈指针 MOV TMODMOV TMOD,#00H#00H ;设置;设置T0T0为方式为方式 0 0,定时,定时 MOV TL0,#18H MOV TL0,#18H ;送定时初值;送定时初值 MOV TH0MOV TH0,#0E0H#0E0H SETB EA SETB EA ;CPUCPU开中断开中断 SETB ET0 SETB ET0 ;T0T0允许中断允许中断 SETB TR0 SETB TR0 ;启动;启动T0T0定时定时HEREHERE:SJMP HERE SJMP HERE ;等待中断;等待中断 学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 ORG 1200H ORG 1200H ;T0T0中断入口中断入口 IT0PIT0P:MOV TL0MOV TL0,#18H#18H ;重新装;重新装入入 计数初值计数初值 MOV TH0 MOV TH0,#0E0H#0E0H CPL P1.2 CPL P1.2 ;输出方波;输出方波 RETI RETI ;中断返回;中断返回 END END学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 方法二:查询方式方法二:查询方式 MOV TMODMOV TMOD,#00H#00H ;设置;设置T0T0为方为方 式式0 0,定时,定时 MOV TL0MOV TL0,#18H#18H ;送初值;送初值 MOV TH0MOV TH0,#0E0H#0E0H SETB TR0 SETB TR0 ;启动;启动T0T0定时定时LOOPLOOP:JBC TF0JBC TF0,NEXT NEXT;查询定时时间到否;查询定时时间到否?SJMP LOOP SJMP LOOPNEXTNEXT:MOV TL0MOV TL0,#18H#18H;重新装入计数初值;重新装入计数初值 MOV TH0MOV TH0,#0E0H#0E0H CPL P1.2 CPL P1.2 ;输出方波;输出方波 SJMP LOOP SJMP LOOP ;重复循环;重复循环学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 (二)工作方式(二)工作方式1 1方式方式1 1为为1616位的定时器位的定时器/计数器计数器 图图2.7 2.7 定时器定时器/计数器计数器0 0方式方式1 1的逻辑结构图的逻辑结构图学习情景二学习情景二 交通信号灯的设计交通信号灯的设计 工作方式寄存器工作方式寄存器TMODTMOD中的中的M1M0M1M0为:为:0101定时器定时器T0T0工作方式工作方式1 1与工作方式与工作方式0 0类同,差别在于其类同,差别在于其中的计数器的位数。工作方式中的计数器的位数。工作方式1 1以以1616位计数器参与计数。位计数器参与计数。工作在定时方式工作在定时方式 定时时间定时时间(2 21616 计数初值)计数初值)晶振周期晶振周期1212或或 定时时间定时时间(2 21616 计数初值)计数初值)机器周期机器周期若晶振频率为若晶振频率为12MHz12MHz,则,则最短定时时间为最短定时时间为221616(2(216161)1)(1/12)(1/12)1010-6-612121 s1 s最长定时时间为最长定时时间为(2 216160 0)(1/121/12)1010-6-6121265536 s65536 s 工作在计数方式工作在计数
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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