好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[信息与通信]第七章 AT89S52单片机中断系统.ppt

67页
  • 卖家[上传人]:工****
  • 文档编号:586429412
  • 上传时间:2024-09-04
  • 文档格式:PPT
  • 文档大小:1.17MB
  • / 67 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第八章第八章   AT89S52单单片机中断系片机中断系统统学习目标:学习目标:Ø了了解解中中断断的的基基本本概概念念、、中中断断的的作作用用及及中中断断请请求求方式方式Ø掌掌握握AT89S52单单片片机机中中断断结结构构,,6个个中中断断源源的的中中断断请请求求、、中中断断屏屏蔽蔽、、优优先先级级设设置置等等初初始始化化编程方法编程方法Ø掌掌握握定定时时/计计数数器器4种种工工作作方方式式的的初初始始化化编编程程方方法法Ø学学会会使使用用定定时时器器/计计数数器器编编写写计计数数、、定定时时应应用用程序的方法程序的方法 技能目标:技能目标:Ø会编写中断和定时会编写中断和定时/计数器初始化程序计数器初始化程序 Ø会计算定时会计算定时/计数器初值计数器初值Ø根根据据项项目目要要求求,,能能够够灵灵活活应应用用中中断断和和定定时时/计计数器的资源数器的资源 项目一项目一 中断控制的流水灯中断控制的流水灯第一部分第一部分   项目要求项目要求     采采用用中中断断方方法法控控制制灯灯的的亮亮灭灭,,由由中中断断服服务务程程序序控控制制I/OI/O口置高,置低,即可控制灯的全亮和全灭。

      口置高,置低,即可控制灯的全亮和全灭     外部中断外部中断INT1INT1接按键(接按键(KEYKEY),作为中断申请信号,),作为中断申请信号,开机后开机后8 8个发光二极管从左到右流水,产生中断后,个发光二极管从左到右流水,产生中断后,8 8个发光管全亮、全灭,延时一定时间后,再循环个发光管全亮、全灭,延时一定时间后,再循环 第二第二部分部分 相关相关知识知识一、一、 中断概述中断概述中断的定义中断的定义: 当中央处理器当中央处理器CPU正在处理某事正在处理某事件时外界发生了更为紧急的请求,要件时外界发生了更为紧急的请求,要求求CPU暂停当前的工作,转而去处理暂停当前的工作,转而去处理这个紧急事件,处理完毕后,再回到这个紧急事件,处理完毕后,再回到原来被中断的地方,继续原来的工作,原来被中断的地方,继续原来的工作,这样的过程称为中断这样的过程称为中断 从中断的定义我们可以从中断的定义我们可以看到中断应具备中断源、中看到中断应具备中断源、中断响应、中断返回三个要素断响应、中断返回三个要素 中断源发出中断请求,中断源发出中断请求,单片机对中断请求进行响应,单片机对中断请求进行响应,当中断响应完成后应进行中当中断响应完成后应进行中断返回,返回被中断的地方断返回,返回被中断的地方继续执行原来被中断的程序。

      继续执行原来被中断的程序 二、AT89S52中断源与中断向量地址 中断源就是向中断源就是向CPU发出中断请求的来发出中断请求的来源AT89S52共共有六个中断源:有六个中断源:2个外部中断个外部中断((INT0和和INT1)、)、3个定时器中断个定时器中断(定时器(定时器0、、1和和2)和)和1个串行中断个串行中断如图所示如图所示 (一)(一) 外部中断外部中断外部中断外部中断0 ←→ P3.20 ←→ P3.2外部中断外部中断1 ←→ P3.31 ←→ P3.3外部中断请求有两种信号方式:电平方式和脉冲方外部中断请求有两种信号方式:电平方式和脉冲方式电平方式的中断请求信号是低电平有效电平方式的中断请求信号是低电平有效脉冲方式的中断请求信号则是脉冲的负跳变有效脉冲方式的中断请求信号则是脉冲的负跳变有效 (二)内部定时和外部计数中断(二)内部定时和外部计数中断v定时:对内部振荡器输出的脉冲计数计数脉冲定时:对内部振荡器输出的脉冲计数计数脉冲的个数反映了时间的长短的个数反映了时间的长短 v计数:对外部脉冲计数计数脉冲的个数仅仅反计数:对外部脉冲计数计数脉冲的个数仅仅反映外部脉冲输入的多少。

      映外部脉冲输入的多少 外部脉冲由外部脉冲由T0T0引入引入 ←→ ←→ P3.4P3.4外部脉冲由外部脉冲由T1T1引入引入 ←→ ←→ P3.5P3.5外部脉冲由外部脉冲由T2T2引入引入 ←→ ←→ P1.0P1.0当定时器当定时器/ /计数器发生溢出,便激活中断计数器发生溢出,便激活中断外部计数中断请求信号是脉冲的负跳变引起外部计数中断请求信号是脉冲的负跳变引起 (三)串行中断(三)串行中断 串行中断是为串行通信的而需要设置的串行中断是为串行通信的而需要设置的当串行口发送完或接收完一帧信息时,单片机当串行口发送完或接收完一帧信息时,单片机内部硬件便自动串行发送或接收中断标志位置内部硬件便自动串行发送或接收中断标志位置1 1当CPUCPU查询到这些标志位为查询到这些标志位为1 1时,便激活时,便激活串行中断串行中断是由单片机内部自动发生串行中断串行中断是由单片机内部自动发生的,不需要在芯片外设置引入脚的,不需要在芯片外设置引入脚 (四)中断矢量地址(四)中断矢量地址中断源中断源中断中断标标志位志位中断矢量地址中断矢量地址外部中断外部中断0(( ))IE00003H定定时时器器0((T0)中断)中断TF0000BH外部中断外部中断1(( ))IE10013H定定时时器器1((T1)中断)中断TF1001BH串行口中断串行口中断发发送中断送中断TI0023H接收中断接收中断RI定定时时器器2((T2)中断)中断T2溢出中断溢出中断TF2002BHT2EX中断中断EXF2 三、中断标志与控制三、中断标志与控制 要实现中断,首先中断源要提出要实现中断,首先中断源要提出中断申请,而中断请求的过程是单片中断申请,而中断请求的过程是单片机内部特殊功能寄存器机内部特殊功能寄存器TCON和和SCON相关状态位相关状态位—中断请求标志位中断请求标志位置置1的过程,当的过程,当CPU响应中断时,中响应中断时,中断请求标志位才由硬件或软件清断请求标志位才由硬件或软件清0。

      (一)定时器/计数器控制寄存器(一)定时器/计数器控制寄存器TCON TCON为定时器为定时器/计数器的控制器,它也计数器的控制器,它也锁存外部中断请求标志,其格式如下:锁存外部中断请求标志,其格式如下:TF1 TR1 TF0 TR0IE1IT1IE0IT0TCON((88H))       D7     D6     D5      D4      D3     D2       D1       D0位地址位地址     8FH  8EH   8DH   8CH   8BH    8AH     89H     88H与中断有关的控制位共与中断有关的控制位共6位位 IE0和和IE1::外部中断请求标志外部中断请求标志当当CPU采样到采样到 (或(或 ))端出现有效中断请求(低电平或端出现有效中断请求(低电平或脉冲下降沿)时,脉冲下降沿)时,IE0(或(或IE1)位由片内硬件自动置)位由片内硬件自动置1;当中;当中断响应完成转向中断服务程序时,由片内硬件自动清断响应完成转向中断服务程序时,由片内硬件自动清0IT0和和ITl::外部中断请求信号触发方式控制标志。

      外部中断请求信号触发方式控制标志IT0(或(或IT1))=1,, (或(或 )信号为脉冲触发方式,脉冲)信号为脉冲触发方式,脉冲负跳沿有效;负跳沿有效;IT0(或(或IT1))=0,, (或(或 )信号电平触发方式,低电平)信号电平触发方式,低电平有效IT0(或(或IT1)位可由用户软件置)位可由用户软件置1或清或清0 TF0和和TFl::定时器定时器/计数器溢出中断请求标志当定时器计数器溢出中断请求标志当定时器0(或(或定时器定时器1)产生计数溢出时,)产生计数溢出时,TF0(或(或TF1)由片内硬件自动置)由片内硬件自动置1;当中断响应完成转向中断服务程序时,由片内硬件自动清;当中断响应完成转向中断服务程序时,由片内硬件自动清0 计数溢出标志位的使用有两种情况:采用中断方式时,作中计数溢出标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用断请求标志位来使用;采用查询方式时,作查询状态位来使用 (二)串行口控制寄存器(二)串行口控制寄存器SCONSM0 SM1 SM2 REN TB8 RB8 TIRISCON((98H))       D7     D6     D5      D4      D3     D2      D1     D0位地址位地址    9FH   9EH   9DH   9CH   9BH    9AH   99H   98H与中断有关的控制位共与中断有关的控制位共2位位TI:串行口发送中断请求标志。

      串行口发送中断请求标志当串行口发送完一帧信号后,由片内硬件当串行口发送完一帧信号后,由片内硬件自动置自动置1但CPU响应中断时,并不清除响应中断时,并不清除TI,必须在中断服务程序中由软件对,必须在中断服务程序中由软件对TI清清0 RI::串行口接收中断请求标志当串行口接串行口接收中断请求标志当串行口接收完一帧信号后,由片内硬件自动置收完一帧信号后,由片内硬件自动置1 1但CPUCPU响应中断时,并不清除响应中断时,并不清除RIRI,必须在中断服,必须在中断服务程序中由软件对其清务程序中由软件对其清0 0 应当指出,应当指出,AT89S52AT89S52系统复位后,系统复位后,TCONTCON和和SCONSCON中各位被复位成中各位被复位成““0 0””状态,应用状态,应用时要注意各位的初始状态时要注意各位的初始状态 (三)中断允许控制寄存器(三)中断允许控制寄存器IEEA——ET2ESET1EX1 ET0 EX0IE((A8H))       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时时,,中中断断总总允允许许,,而而每每个个中中断断源源允允许许与禁止,分别由各自的允许位确定与禁止,分别由各自的允许位确定 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,禁止定时器,禁止定时器2((TF2或或EXF2)中断;)中断;ET2=1,允许定时器,允许定时器2((TF2或或EXF2)中断;)中断; 在单片机复位后,在单片机复位后,IE各位被复位成各位被复位成“0”状状态,态,CPU处于关闭所有中断的状态。

      处于关闭所有中断的状态 例如:例如:可以采用如下字节传送指令来开放定可以采用如下字节传送指令来开放定时器时器T0的溢出中断:的溢出中断: MOV IE,,#82H 也可以用位寻址指令,则需采用如下两条也可以用位寻址指令,则需采用如下两条指令实现同样功能:指令实现同样功能: SETB EA SETB ET0 在在89S52复位后,复位后,IE各位被复位成各位被复位成“0”状态,状态,CPU处于关闭所有中断的状态处于关闭所有中断的状态所以,在所以,在89S52复位以后,用户必须通过程序复位以后,用户必须通过程序中的指令来开放所需中断中的指令来开放所需中断 (四)中断优先级控制寄存器(四)中断优先级控制寄存器IPIP 89S52单片机具有高、低单片机具有高、低2个中断优先级高优先级用个中断优先级高优先级用“1”表示,低优先级用表示,低优先级用“0”表示对于所有的中断源,均表示对于所有的中断源,均可由软件设置为高优先级中断或低优先级中断,并可实现两可由软件设置为高优先级中断或低优先级中断,并可实现两级中断嵌套级中断嵌套。

      IP寄存器可以位寻址寄存器可以位寻址PSPT2PT1PX1PT0PX0 IP((B8H))      D7      D6     D5     D4       D3     D2       D1       D0                       BDH  BCH   BBH     BAH    B9H    B8H 与中断有关的控制位共与中断有关的控制位共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 又如设置外部中断源又如设置外部中断源 为高优先级,外部中断源为高优先级,外部中断源 为低优先级,可由下面指令来实现:为低优先级,可由下面指令来实现: SETB 0B8H ;;PX0置置1 CLR 0BAH ;;PXl清清0 或或 MOV IP,,#000××0×1B;;PX0置置1,,PXl清清0 四、优先级结构四、优先级结构 中断优先级只有高低两级。

      所以在工作过程中必然会有两中断优先级只有高低两级所以在工作过程中必然会有两个或两个以上中断源处于同一中断优先级若出现这种情况,个或两个以上中断源处于同一中断优先级若出现这种情况,内部中断系统对各中断源的处理遵循以下两条基本原则:内部中断系统对各中断源的处理遵循以下两条基本原则:① ① 低优先级中断可以被高优先级中断所中断,反之不能低优先级中断可以被高优先级中断所中断,反之不能② ② 一种中断一种中断( (不管是什么优先级不管是什么优先级) )一旦得到响应,与它同级的一旦得到响应,与它同级的中断不能再中断它中断不能再中断它 中断源中断源 同级自然优先级同级自然优先级 外部中断外部中断0 0 最高级最高级 定时器定时器0 0中断中断 ↓ ↓ 外部中断外部中断1 ┆1 ┆ 定时器定时器1 1中断中断 ↓ ↓ 串行口中断串行口中断 最低级最低级 定时器定时器2 2中断中断 最低级最低级 例:设例:设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                         ;开;开         中断中断                     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 ┇ SETB 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)是为了允许有更高级中断打断此中断服务程序,恢是为了允许有更高级中断打断此中断服务程序,恢复现场和保护现场之前的关中断复现场和保护现场之前的关中断(CLR EA)是为了保证在恢复和是为了保证在恢复和保护现场时,保护现场时,CPU不响应新的中断请求,从而使现场数据不受不响应新的中断请求,从而使现场数据不受到破坏或者造成混乱;到破坏或者造成混乱;(5) 当把程序中保护现场之后的当把程序中保护现场之后的"SETB EA"和恢复现场之前和恢复现场之前的的"CLR EA"删除,就是一个单级中断服务程序。

      删除,就是一个单级中断服务程序 (三)中断程序举例(三)中断程序举例 【【例例7.3】】使用一个按键控制图使用一个按键控制图3.4所示的所示的流水灯,每按一次按键流水灯的流动方向改变流水灯,每按一次按键流水灯的流动方向改变一次,要求使用中断技术处理按键一次,要求使用中断技术处理按键 解:如图解:如图7.4所示,按键接在所示,按键接在P3.3,因,因此采用外部中断此采用外部中断1,中断申请从,中断申请从 输入每按一次按键,产生一次中断,流水灯流动方向按一次按键,产生一次中断,流水灯流动方向便改变一次当开关便改变一次当开关SA17闭合时,发出中断闭合时,发出中断请求中断服务程序的矢量地址为请求中断服务程序的矢量地址为0013H 图图7.4  方向可控流水灯方向可控流水灯  ORG 0000H ;定义下一条指令的地址定义下一条指令的地址 SJMP START ;转向主程序转向主程序 ORG 0013H;安排外部中断安排外部中断1处理程序的第一条指令处理程序的第一条指令 SJMP:: KEYS ;直接转移到中断处理程序直接转移到中断处理程序 START: ;主程序起点主程序起点 MOV SP, #40H ;设置堆栈栈底指针设置堆栈栈底指针 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 FX, L4 ;FX=0时转移到时转移到L4((FX是流水灯流动方向标志)是流水灯流动方向标志) RL A ;累加器累加器A中内容左移一位中内容左移一位 SJMP L5 ;转移至转移至L5 L4: RR A ;累加器累加器A中内容右移一位中内容右移一位 L5: SJMP L1 ;转移至转移至L1 ;按键中断程序按键中断程序 ;入口入口:外部中断外部中断1 ;功能功能:确认按键后改变方向标志确认按键后改变方向标志FX的状态的状态 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 00H ;定义位变量定义位变量,用于判断方向用于判断方向 END ;结束结束 第三部分第三部分 项目实施项目实施一、项目实施分析一、项目实施分析(一)硬件电路(一)硬件电路 P1P1口连接口连接8 8个发光二极管,外部中断个发光二极管,外部中断INT1INT1接接KEYKEY((P2.7P2.7接按键接按键SW8SW8,,P3.3P3.3接接KEYKEY),作为中断申请信号,开机),作为中断申请信号,开机8 8个发个发光二极管从左到右流水,产生中断后,光二极管从左到右流水,产生中断后,8 8个发光管全亮、全灭,延时后,再循环。

      个发光管全亮、全灭,延时后,再循环如如图图7.57.5所示 参考程序:参考程序: ORG 0000h ;伪指令伪指令 LJMP START ;跳转到单片机的主程序跳转到单片机的主程序 ORG 0013H ;外部中断外部中断1的入口地址的入口地址 LJMP EXT1 ;跳转到中断服务程序跳转到中断服务程序 ORG 0100H ;伪指令,单片机主程序伪指令,单片机主程序的开始的开始START::MOV IE , #10000100b MOV IP , #00000100b 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 POP ACC RETI DELAY: MOV R5, #20 ;延时程序;延时程序D1: MOV R6, #20D2: MOV R7, #248 DJNZ R7, $ DJNZ R6, D2 DJNZ R5, D1 RET END 第三部分第三部分 项目实施项目实施一、硬件电路一、硬件电路 二、软件二、软件1.计数器初值计算计数器初值计算 在系统初始化时需要将计数器的初值写入在系统初始化时需要将计数器的初值写入TL0和和TH0中,如果使用模式中,如果使用模式0或模式或模式1,当计数器发生,当计数器发生溢出后,还要重新将初值写入溢出后,还要重新将初值写入TL0和和TH0中。

      中 改变重装入时的改变重装入时的TH0和和TL0的值就可以改变定的值就可以改变定时器的定时时间,也就改变了流水灯的流动速度时器的定时时间,也就改变了流水灯的流动速度 设定设定TH0、、TL0初值为初值为1000H,每按一次按,每按一次按键增加键增加4000(十进制数),速度加快一挡最快(十进制数),速度加快一挡最快时为时为1000H+4000×10=44096 2.2.系统程序系统程序((1 1)流水灯控制)流水灯控制 在此之前的各模块中,为了定时都采用了空循在此之前的各模块中,为了定时都采用了空循环的方法,这种方法浪费了大量的环的方法,这种方法浪费了大量的CPUCPU工作时间在工作时间在单片机中一般采用定时计数器组成一个定时器来完单片机中一般采用定时计数器组成一个定时器来完成这种定时工作使用定时器后系统的程序框图如成这种定时工作使用定时器后系统的程序框图如图图1 1所示 由于每当定时时间到产生中断后显示控制工作由于每当定时时间到产生中断后显示控制工作进行一次,所以可以将显示控制工作放在定时中断进行一次,所以可以将显示控制工作放在定时中断里完成。

      这样主程序只需要完成定时计数器和中断里完成这样主程序只需要完成定时计数器和中断的初始化工作即可结束的初始化工作即可结束 图图1 1 使用定时器后系统的程序框图使用定时器后系统的程序框图 ORG 0000H SJMP START ORG 000BH SJMP CTCSSTART::MOV SP,, #40H ;设置堆栈指针;设置堆栈指针 MOV TMOD,, #01H ;设置定时计数器;设置定时计数器0工作模式工作模式 MOV TL0,, #00H ;设置定时计数器;设置定时计数器0的初值的初值 MOV TH0,, #10H SETB TR0 ;启动定时计数器;启动定时计数器 SETB ET0 ;允许定时计数器;允许定时计数器0中断中断 SETB EA ;允许总中断;允许总中断 MOV A,, #01H ;设置显示控制字初值;设置显示控制字初值 SJMP $ ;主程序停止在本指令;主程序停止在本指令 ;;……………………………………………………………;定时计数器;定时计数器0中断处理程序中断处理程序 CTCS:: PUSH PSW ;保护现场;保护现场 MOV TL0,, #00H ;恢复定时计数器初值;恢复定时计数器初值 MOV TH0,, #10H RL A ;调整显示控制字;调整显示控制字 MOV P2,, A ;输出显示控制字;输出显示控制字 POP PSW ;恢复现场;恢复现场 RETI ;中断返回;中断返回 上述程序仅实现了使用定时计数器延时,流水灯的速度上述程序仅实现了使用定时计数器延时,流水灯的速度是一个固定值。

      为了实现调速的目的,还需进行以下修改是一个固定值为了实现调速的目的,还需进行以下修改 ((2)调速控制)调速控制 为了改变流水灯的流动速度,可以改变定时计数为了改变流水灯的流动速度,可以改变定时计数器器0的初值,因此需要使用两个变量保存初值(的初值,因此需要使用两个变量保存初值(CTH保存保存TH0的初值,的初值,CTL保存保存TL0的初值)在按键中的初值)在按键中断中改变这两个变量的数值,在定时计数器中使用这断中改变这两个变量的数值,在定时计数器中使用这两个变量为定时计数器恢复初值就可达到调速的目的两个变量为定时计数器恢复初值就可达到调速的目的 根据要求,每按一次按键时需要改变速度在按根据要求,每按一次按键时需要改变速度在按键的中断处理中需要对定时器的初值进行调整,根据键的中断处理中需要对定时器的初值进行调整,根据前面的分析,提高速度时每次将初值增加前面的分析,提高速度时每次将初值增加4000,而,而降低速度时每次将初值减小降低速度时每次将初值减小4000 将初值增加将初值增加4000和减小和减小4000需要进行需要进行2字节字节的加减法运算,对于这种通用的功能程序可以直接的加减法运算,对于这种通用的功能程序可以直接调用。

      如多字节运算子程序如下:调用如多字节运算子程序如下:;;…………………………………………..;多字节加减法运算;多字节加减法运算;入口:;入口:R0指向加数或被减数的低字节(多字节数指向加数或被减数的低字节(多字节数低位在低地址,高位在高地址)低位在低地址,高位在高地址);; R1指向加数或减数的低字节指向加数或减数的低字节;; R7需要运算的字节数需要运算的字节数 ;; AS运算标志位:运算标志位:AS=0时进行加法运算,时进行加法运算,AS=1时进行减法运算时进行减法运算;出口:运算结果存放在;出口:运算结果存放在R0指向的连续单元中指向的连续单元中MADDSUB:: CLR C LOOP:: MOV A,, @R0 JB AS,,SBB ADDC A,, @R1 SJMP NEXT SBB:: SUBB A,, @R1 NEXT:: MOV @R0,, A INC R0 INC R1 DJNZ R7,, LOOP RET 这是一个标准子程序,只需要看懂入口和出口这是一个标准子程序,只需要看懂入口和出口的条件即可直接调用。

      从调用说明中可以看到,调的条件即可直接调用从调用说明中可以看到,调用此程序前需要做以下的准备工作用此程序前需要做以下的准备工作① 安排定时计数器初值安排定时计数器初值CTH和和CTL时,两个变量时,两个变量需连续安排且需连续安排且CTL在低地址位在低地址位 CTL EQU 22H CTH EQU 23H ② 将将4000也安排在两个连续的地址中,也安排在两个连续的地址中,4000=0FA0H C4000L EQU 24H C4000H EQU 25H③ 将将R0指向指向CTL所在地址(所在地址(CTL),),R1指向指向4000所在地址的低电位(所在地址的低电位(C4000L)) MOV R0,, #CTL MOC R1,, #C4000L④ R7送立即数送立即数#2,需要做加法运算时设置标志位,需要做加法运算时设置标志位AS=0,需要做减法运算时设置标志位,需要做减法运算时设置标志位AS=1 设置完成后调用设置完成后调用MADDSUB子程序,就可以完成运算,运子程序,就可以完成运算,运算结果在算结果在R0所指向的地址中,即所指向的地址中,即CTL和和CTH变成了运算后的变成了运算后的新数据。

      新数据3)主程序)主程序① 安排变量根据以上分析,本程序中需要安排以下变量安排变量根据以上分析,本程序中需要安排以下变量CTL、、CTH:字节变量,用于保存当前计数器的初值字节变量,用于保存当前计数器的初值C4000L、、C4000H:字节变量,保存每次调整速度用的运算:字节变量,保存每次调整速度用的运算数据数据4000JSQ:字节变量,设置一个计数器,计数值从:字节变量,设置一个计数器,计数值从0~9每按键1次,次,JSQ加加1当JSQ=10时表示本次加速或减速已达最大或时表示本次加速或减速已达最大或最小值,程序将其回零,同时改变加减法运算标志最小值,程序将其回零,同时改变加减法运算标志 XS:字节变量,前几个模块直接将显示控制字放:字节变量,前几个模块直接将显示控制字放置在累加器置在累加器A中,这样操作简单但是累加器中,这样操作简单但是累加器A是是一个使用非常频繁的寄存器,用它做显示控制时,一个使用非常频繁的寄存器,用它做显示控制时,其他地方就不便再使用累加器其他地方就不便再使用累加器A了本技能训练应了本技能训练应用一个内存变量保存显示控制字用一个内存变量保存显示控制字AS:位变量,加减法运算标志。

      位变量,加减法运算标志② 主程序主程序 ORG0000HSJMPSTARTORG 000BHSJMPCTCS START: MOV SP,#40H;设置堆栈指针设置堆栈指针MOV TL,#00H;设置定时计数器设置定时计数器0初值初值MOV TH, #10HMOV 4000L, #0A0H ; 4000=0FA0HMOV 4000H, #0FH CLR AS;先做加法(加速)先做加法(加速)MOV JSQ,#0;计数器清计数器清0MOV TMOD,#01H ;设置定时计数器设置定时计数器0工工 作模式作模式MOV TL0, CTL MOV TH0, CTHSETB TR0 ;启动定时计数器启动定时计数器SETB ET0 ;允许定时计数器允许定时计数器0中断中断SETB EA ;允许总中断允许总中断MOV XS, #01H;设置显示控制字初值设置显示控制字初值SJMP $ ;主程序停止在本指令主程序停止在本指令JSQ DATA 21H ;定义加减速级数计数器变量定义加减速级数计数器变量CTL DATA22H ;定义定时计数器;定义定时计数器0的初值的初值CTH DATA23HC4000L DATA 24H ;定义每级改变量;定义每级改变量 C4000H DATA 25H XS DATA 26H ;定义显示控制字;定义显示控制字 AS BIT 00H ;定义运算用标志位;定义运算用标志位((4)定时计数器中断处理程序)定时计数器中断处理程序 由于需要进行调速,定时计数器中断处理程序由于需要进行调速,定时计数器中断处理程序也需要进行修改,程序清单如下:也需要进行修改,程序清单如下:;;………………………………………..;定时计数器;定时计数器0中断处理程序中断处理程序 CTCS:: PUSH PSW ;保护现场;保护现场 MOV TL0,, CTL ;恢复定时计数器初;恢复定时计数器初值值 MOV TH0,, CTH MOV A,, XS RL A ;调整显示控制字;调整显示控制字 MOV XS,, A MOV P2,, A ;输出显示控制字;输出显示控制字 POP PSW ;恢复现场;恢复现场 RETI ;中断返回;中断返回((5)按键中断处理程序(见图)按键中断处理程序(见图2)) 图图 2 2 中断处理程序框图与程序清单中断处理程序框图与程序清单 KEYS:: PUSH PSW PUSH ACC MOV PSW,, #08H MOV R7,, #20 K1:: MOV R6,, #0FFH DJNZ R6,, $ DJNZ R7,, K1 JB KEY, K2 INC JSQ MOV A,, JSQ CJNE A, #10, K3 CPL AS MOV JSQ,, #0K3:: MOV R0, #CTL MOV R1,, #C4000L MOV R7,, #2 ACALL MADDSUB K2::POP ACC POP PSW RETI 4、程序清单、程序清单根据以上分析,本系统程序共有以下几部分。

      根据以上分析,本系统程序共有以下几部分① 主程序② 定时计数器中断处理子程序定时计数器中断处理子程序③ 按键中断处理子程序按键中断处理子程序④ 多字节加减法运算子程序多字节加减法运算子程序完整的程序清单如下:完整的程序清单如下:;速度可控制的流水灯;速度可控制的流水灯ORG0000H SJMPSTARTORG000BHSJMPCTCS ORG0013HSJMPKEYSSTART: MOVSP,#40H;设置堆栈指针设置堆栈指针MOVCTL,#00H ;设置定时计数器设置定时计数器0初值初值MOVCTH,#10HMOVC4000L,#0A0H;4000=0FA0HMOVC4000H,#0FHMOVXS,#01H MOV JSQ,#0 ;计数器清计数器清0CLR AS ;先做加法(加速)先做加法(加速)MOV TMOD,#01H;设置定时计数器设置定时计数器0工作工作 模式模式MOV TL0,CTLMOV TH0,CTHSETB TR0;启动定时计数器启动定时计数器SETB ET0;允许定时计数器允许定时计数器0中断中断SETB EX1;允许外部中断允许外部中断1SETB IT1;设置外部中断设置外部中断1为下降沿中断为下降沿中断SETB EA;允许总中断允许总中断 MOV XS,#01H;设置显示控制字初值设置显示控制字初值S1: SJMP S1 ;主程序停止在本指令主程序停止在本指令 JSQ DATA 21H CTL DATA 22H CTH DATA 23H C4000LDATA 24H C4000H DATA 25H XS DATA 26H KEY EQU P3.3 AS BIT 00H ;=====================================;定时计数器定时计数器0中断处理程序中断处理程序;入口:定时计数器入口:定时计数器0中断中断CTCS:PUSH PSW ;保护现场保护现场PUSHACCMOVTL0,CTL;恢复定时计数器初值恢复定时计数器初值MOVTH0,CTHMOVA,XSRLA;调整显示控制字调整显示控制字MOVXS,AMOVP2,A ;输出显示控制字输出显示控制字POPACC POP PSW;恢复现场恢复现场 RETI ;中断返回中断返回;=====================================;外部中断外部中断0处理程序处理程序;入口:外部中断入口:外部中断0连接的按键按下连接的按键按下KEYS: PUSH PSW PUSH ACC MOVPSW,#08H MOVR7,#20 K1: MOVR6,#0FFH DJNZ R6,$DJNZR7,K1JBKEY,K2INCJSQMOVA,JSQCJNEA,#10,K3CPLASMOVJSQ, #0K3:MOVR0,#CTLMOVR1,#C4000LMOVR7,#2ACALLMADDSUB K2:POP ACCPOP PSWRETI;=======================================;多字节加减法运算多字节加减法运算;入口:入口:R0指向加数或被减数的低字节(多字节数地位在低指向加数或被减数的低字节(多字节数地位在低地址,高位在高地址)地址,高位在高地址);R1指向加数或减数的低字节指向加数或减数的低字节;R7 需要运算的字节数需要运算的字节数;运算标志位运算标志位AS :AS=0时进行加法运算,时进行加法运算,AS=1时进行减法时进行减法运算运算;出口:运算结果存放在出口:运算结果存放在R0指向的连续单元中指向的连续单元中 MADDSUB:CLRCLOOP:MOVA, @R0JBAS, SBBADDCA, @R1SJMPNEXTSBB:SUBBA, @R1NEXT:MOV@R0,AINCR0INCR1DJNZR7, LOOPRETEND 。

      点击阅读更多内容
      相关文档
      2025国开山东开大《土质学与土力学》形成性考核123答案+终结性考核答案.docx 中学综合素质知识点梳理【中学教师资格证】.docx 2025国开山东开大《特许经营概论》形成性考核123答案+终结性考核答案.doc 2025年高考英语全国一卷真题(含答案).docx 2025国开山东《农民专业合作社创建与管理》形成性考核123答案+终结性考核答案.docx 2025国开山东开大《自然现象探秘》形成性考核123答案+终结性考核答案.docx 2025国开山东《消费心理学》形成性考核123答案+终结性考核答案.doc 2025国开山东《小微企业管理》形成性考核123答案+终结性考核答案.doc 2025国开山东开大《资本经营》形成性考核123答案+终结性考试答案.docx 2025国开山东《小学生心理健康教育》形考123答案+终结性考试答案.docx 2025国开《视频策划与制作》形考任务1-4答案.docx 2025国开《亲子关系与亲子沟通》形考任务234答案+期末大作业答案.docx 2025国开电大《煤矿地质》形成性考核123答案.docx 2025国开电大《冶金原理》形考任务1234答案.docx 2025国开《在线学习项目运营与管理》形考任务1234答案.doc 2025国开电大《在线教育的理论与实践》阶段测验1-4答案.docx 2024 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 环保工程师---2023 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 2025国开《液压与气压传动》形考任务一参考答案.docx 2025年春江苏开放大学教育研究方法060616计分:形成性作业2、3答案.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.