《第五分MCS51中断与定时系统教学课件》由会员分享,可在线阅读,更多相关《第五分MCS51中断与定时系统教学课件(63页珍藏版)》请在金锄头文库上搜索。
1、 第五章第五章 MCS-51中断与定时系统中断与定时系统 5.1 中断系统概述 一、中断概念中断概念 主任务主任务 洗衣服洗衣服 水开报警水开报警 继续继续 洗衣服洗衣服 灌开水灌开水主程序主程序 执行主程序执行主程序 中断请求中断请求 继续继续 执行主程序执行主程序 执行中断执行中断服务程序服务程序中断响应中断响应 中断返回中断返回 中断是指中断是指CPU在处理某一事件在处理某一事件A时,发生另一事件时,发生另一事件B,请求,请求CPU处理;处理;中断请求中断请求 CPU暂时停止当前的工作,转去处理事件暂时停止当前的工作,转去处理事件B;中断响应,中断响应,并执行中断服务程序并执行中断服务程
2、序 待待CPU将事件将事件B处理完毕后,再回到原来事件处理完毕后,再回到原来事件A被中断的地方被中断的地方继续处理事件继续处理事件A;中断返回中断返回中断嵌套中断嵌套 若单片机正在处理一个中断程序,此时,又有另一个中若单片机正在处理一个中断程序,此时,又有另一个中断现象发生,单片机将会停止当前的中断程序,而转去断现象发生,单片机将会停止当前的中断程序,而转去执行新的中断程序,新中断程序处理完毕后再回到刚才执行新的中断程序,新中断程序处理完毕后再回到刚才停止的中断程序处继续执行,执行完这个中断后再返回停止的中断程序处继续执行,执行完这个中断后再返回主程序继续执行。主程序继续执行。 主程序主程序
3、执行主程序执行主程序 中断请求中断请求 继续继续 执行主程序执行主程序 中断响应中断响应 中断返回中断返回 中断服中断服务程序务程序中断服中断服务程序务程序中断嵌套中断嵌套 中断优先级中断优先级 二、中断源中断源 引起引起CPUCPU中断的根源,称为中断的根源,称为中断源中断源,中断源向,中断源向CPUCPU提提出中断请求。出中断请求。 外部中断外部中断0 0( INT0INT0) 中断请求信号由中断请求信号由P3.2P3.2提供;提供; 外部中断外部中断1 1 (INT1INT1) 中断请求信号由中断请求信号由P3.3P3.3提供;提供; 定时器中断(定时器中断(T0T0) 由片内定时由片内
4、定时/ /计数器计数器T0T0提供;提供; 定时器中断(定时器中断(T1T1) 由片内定时由片内定时/ /计数器计数器T1T1提供;提供; 串行口中断串行口中断(RI(RI、TI)TI) 由片内串行口提供。由片内串行口提供。三、三、中断控制中断控制 与中断控制有关的控制寄存器有四个:与中断控制有关的控制寄存器有四个:1、定时控制寄存器、定时控制寄存器 (TCON)n 功能:功能: 定时器定时器/ /计数器控制功能;计数器控制功能; 中断控制功能。中断控制功能。D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0IE1IT1IE0IT0TCON(88H) IT0(IT1) 外中断触发方
5、式控制位外中断触发方式控制位 触发方式有两种:触发方式有两种: IT0(IT1)=0:电平方式,低电平有效;:电平方式,低电平有效; IT0(IT1)=1:脉冲方式,脉冲负跳变有效。:脉冲方式,脉冲负跳变有效。 IE0 (IE1) 外中断请求标志位外中断请求标志位 当当CPU采样到采样到INT0(INT1)出现有效中断请求时,出现有效中断请求时,IE0由由硬件自动置位硬件自动置位,向,向CPU发出中断请求。当发出中断请求。当CPU响应响应中断请求,进入中断服务程序时中断请求,进入中断服务程序时自动复位自动复位。 TF0(TF1) 定时器溢出标志定时器溢出标志 当定时器当定时器T0( (或或T1
6、) )溢出时,溢出时, TF0(TF1)由由硬件置硬件置位位,向向CPU发送中断请求。当发送中断请求。当CPU响应中断请求,进入中响应中断请求,进入中断服务程序时,断服务程序时,自动复位。自动复位。2、串行口控制寄存器、串行口控制寄存器 (SCON)D7D6D5D4D3D2D1D0SM0 SM1 SM2 REN TB8 RB8TIRISCON(98H) TI 串行口发送中断请求标志位。串行口发送中断请求标志位。 当串行口发送完一帧数据后,硬件置位;当串行口发送完一帧数据后,硬件置位; 在转向中断服务程序后,用在转向中断服务程序后,用软件清零软件清零。 RI 串行口接收中断请求标志位。串行口接收
7、中断请求标志位。 当串行口接收完一帧数据后,硬件置位;当串行口接收完一帧数据后,硬件置位; 在转向中断服务程序后,用在转向中断服务程序后,用软件清零软件清零。3、中断允许控制寄存器、中断允许控制寄存器 (IE) D7D6D5D4D3D2D1D0EA/ESET1 EX1 ET0 EX0IE (A8H) EA 中断允许总控制位中断允许总控制位 EA=0,中断总禁止;,中断总禁止; EA=1,中断总允许。,中断总允许。 EX0(EX1) 外部中断允许控制位外部中断允许控制位 EX0(EX1)=0,禁止外中断;,禁止外中断; EX0(EX1)=1,允许外中断。,允许外中断。 ET0(ET1) 定时器中
8、断允许控制位定时器中断允许控制位 ET0(ET1) =0,禁止定时器中断;,禁止定时器中断; ET0(ET1) =1,允许定时器中断。,允许定时器中断。 ES 串行中断允许控制位串行中断允许控制位 ES=0,禁止串行中断;,禁止串行中断; ES=1 ,允许串行中断。,允许串行中断。D7D6D5D4D3D2D1D0EA/ESET1 EX1 ET0 EX0IE (A8H) 4、中断优先级控制寄存器、中断优先级控制寄存器 (IP) D7D6D5D4D3D2D1D0/PSPT1 PX1 PT0 PX0IP (B8H) 四、四、中断响应过程中断响应过程 1、中断请求中断请求 T0溢出溢出 T1溢出溢出
9、MOV SBUF,A MOV A, SBUF 2、中断查询中断查询 中断标志位中断标志位: IE1、IE0、 TF1、TF0、 RI 、TI MCS-51MCS-51中断系统的逻辑结构中断系统的逻辑结构 3、中断响应中断响应 LCALL addr16 (指向相应的中断入口地址指向相应的中断入口地址) 中断源中断源INTINT0 0T T0 0INTINT1 1T T1 1串行口串行口 中断入口地址中断入口地址0003H0003H000BH000BH0013H0013H001BH001BH0023H0023H 保存断点地址,将当前保存断点地址,将当前PC值压栈;值压栈; 中断程序的入口地址中断程
10、序的入口地址 PC 0000H0000H000AH000AH000BH000BH0013H0013H001AH001AH001BH001BH0022H0022H0023H0023H002AH002AHINT0 INT0 T0 T0 INT1 INT1 T1T1串行口串行口0003H0003H0012H0012H 51单片机复位后单片机复位后PC=0000H, 系统从系统从0000H地址开始执行程地址开始执行程序。通常在此单元处安排一条序。通常在此单元处安排一条跳转指令,避开系统分配的中跳转指令,避开系统分配的中断服务程序地址段。断服务程序地址段。每个中断程序只有每个中断程序只有8个字节单个字节
11、单元,不够存放实际的中断服务元,不够存放实际的中断服务程序,故各中断程序的入口地程序,故各中断程序的入口地址处通常也安排一条跳转指令,址处通常也安排一条跳转指令,指向实际的中断服务程序处。指向实际的中断服务程序处。LJMP MAINLJMP EXINT0 LJMP TIMER0 LJMP TIMER1 LJMP EXINT1 LJMP SERIES . . ORG 0000HORG 0000HSTARTSTART: LJMP MAIN LJMP MAIN ;跳转到主程序 ORG 0003HORG 0003H ;外中断0入口地址 LJMP EXINTO LJMP EXINTO ;转中断服务程序M
12、AINMAIN: CLR IT0 CLR IT0 ;设为电平触发方式 SETB EA SETB EA ;开总中断 SETB EX0 SETB EX0 ;开外中断0 ; ; 开始编写主程序 EXINT0: PUSH PSW EXINT0: PUSH PSW ;保护现场 PUSH ACCPUSH ACC ; ; 开始编写中断服务程序 POP ACCPOP ACC POP PSW POP PSW RETIRETI ;中断返回 中断初始化中断初始化 中断系统程序结构中断系统程序结构 CPU正在处于一个同级或高级的中断服务程序中;正在处于一个同级或高级的中断服务程序中; 查询中断请求的机器周期不是当前执
13、行指令的最后查询中断请求的机器周期不是当前执行指令的最后一个机器周期,即需将当前指令执行完才能响应中断;一个机器周期,即需将当前指令执行完才能响应中断; 当前指令是返回指令当前指令是返回指令( (RET、RETI) )或访问或访问IE、IP指令,指令, 即只有在这些指令后面至少再执行一条指令时才能接即只有在这些指令后面至少再执行一条指令时才能接受中断请求受中断请求。存在下列情况之一,中断响应无法进行:存在下列情况之一,中断响应无法进行: 正常中断时间为正常中断时间为3 83 8个机器周期个机器周期,如有同级或,如有同级或高级中断服务,则延长响应时间。高级中断服务,则延长响应时间。 中断响应时间
14、中断响应时间: : 3T: 中断请求标志查询:中断请求标志查询: 1T 产产生生、执执行行LCALL: 2T8T: 执行执行RET/RETI(访问访问IP/IE):2T 主主程程序序中中MUL/DIV指指令令: 4T 执执行行LCALL指指令令: 2T五、五、中断请求的撤销中断请求的撤销 中断响应后,中断响应后,TCON或或SCON中的中断请求标志应及中的中断请求标志应及时清除。否则就意味着中断请求仍然存在。时清除。否则就意味着中断请求仍然存在。1 1、定时器中断硬件撤除、定时器中断硬件撤除 中断响应后硬件自动清中断响应后硬件自动清 TF0(TF1) 标志位。标志位。 2 2、外部中断自动与强
15、制撤除、外部中断自动与强制撤除 中断响应后硬件自动清中断响应后硬件自动清 IE0(IE1) 标志位。标志位。 脉冲请求方式,自动撤除;脉冲请求方式,自动撤除; 电平请求方式,强制撤除。电平请求方式,强制撤除。 3 3、串行中断软件撤除、串行中断软件撤除 标志位标志位 TI、RI 不能通过硬件清零。只能在中断不能通过硬件清零。只能在中断响应后用软件清除。响应后用软件清除。例例1 1:外中断源扩展:外中断源扩展外中断源多于二个时,采用硬件申请,软件查询方法。外中断源多于二个时,采用硬件申请,软件查询方法。+XI1 XI2 XI3XI4XI0 ORG 0000H LJMP MAIN ORG 0003
16、H LJMP EXINT0 ;转外部中断;转外部中断0服务程序入口服务程序入口 ORG 0013H LJMP EXINT1 ;转外部中断;转外部中断1服务程序入口服务程序入口MAIN: SETB IT0 ;中断初始化;中断初始化 SETB IT1 SETB EX0SETB EX0 SETB EX1SETB EX1 SETB EA SETB EA SJIMP $ ;等待中断;等待中断EXINT0 : PUSH PSW ;XI0中断服务程序中断服务程序 PUSH ACC POP ACC POP PSW RETI EXINT1:PUSH PSW ;中断服务程序;中断服务程序 PUSH ACC JB
17、P1.0,XI1 ;P1.0为为1,转,转XI1中断服务程序中断服务程序 JB P1.1, XI2 ;P1.1为为1,转,转XI2中断服务程序中断服务程序 JB P1.2, XI3 ;P1.2为为1,转,转XI3中断服务程序中断服务程序 JB P1.3, XI4 ;P1.3为为1,转,转XI4中断服务程序中断服务程序EXRET:POP ACC POP PSW RETI XI1 : ;XI1中断服务程序中断服务程序 AJMP EXRET XI2 : ;XI2中断服务程序中断服务程序 AJMP EXRET XI3 : ;XI3中断服务程序中断服务程序 AJMP EXRET XI4 : ;XI4中断
18、服务程序中断服务程序 AJMP EXRET5.2 定时器中断 5.2.1 定时方法概述定时方法概述 5.2.2 MCS-51单片机的定时器功能单片机的定时器功能 51单片机单片机 内部有两个可编程的定时器内部有两个可编程的定时器/计数器,即计数器,即定时器定时器 T0 和和 定时器定时器T1。 注意:注意:全称是全称是定时器定时器/计数器计数器,简写为定时器。,简写为定时器。 T0、T1均既有定时功能又有计数功能。均既有定时功能又有计数功能。 T0、T1是是16位特殊功能寄存器,由高位特殊功能寄存器,由高8 8位和低位和低8 8位两位两个寄存器组成,地址为:个寄存器组成,地址为: T0 (TH
19、0、TL0):8CH、8AH T1 (TH1、TL1):8DH、8BH 定时器的实质是加定时器的实质是加1计数器计数器(16位位),计数脉冲有两个来,计数脉冲有两个来源:源: 1、内部时钟脉冲、内部时钟脉冲。计数规律是每隔一个机器周期定时。计数规律是每隔一个机器周期定时器器T0 (T1) 寄存器加寄存器加1。计数频率是振荡频率的。计数频率是振荡频率的1/12 ; 2、外部计数脉冲、外部计数脉冲。从。从T0(P3.4) 或或 T1(P3.5) 引脚输入引脚输入脉冲。当检测到输入电平由高跳变到低时,计数器加脉冲。当检测到输入电平由高跳变到低时,计数器加1。 采样采样(S5P2)、加、加1(S3P1
20、)操作,发生在两个机器周期,操作,发生在两个机器周期,因此需要因此需要2个机器周期才能识别一个从个机器周期才能识别一个从1到到0的跳变,故计的跳变,故计数脉冲的周期必须大于数脉冲的周期必须大于2个机器周期。个机器周期。 当加到全当加到全1时,再来一个脉冲就使计数器回零时,再来一个脉冲就使计数器回零(溢出溢出): 若定时器工作于定时模式,表示定时时间已到;若定时器工作于定时模式,表示定时时间已到; 若定时器工作于计数模式,表示计数值已满。若定时器工作于计数模式,表示计数值已满。 此时,均可向此时,均可向CPU发出中断请求。发出中断请求。5.2.3 MCS-51单片机定时器控制与状态寄存器单片机定
21、时器控制与状态寄存器 1、工作方式寄存器、工作方式寄存器 (TMOD) 字节地址为字节地址为89H,不可以位寻址。,不可以位寻址。T1 T0 M1、M2:工作方式选择位工作方式选择位 C/ T:定时或计数模式选择定时或计数模式选择 GATE :门控位门控位 GATE=0,仅通过,仅通过TRx位启动定时器。位启动定时器。 GATE=1,INTx端口高电平,再通过端口高电平,再通过TRx启动定时器。启动定时器。2、控制寄存器、控制寄存器 (TCON) D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0IE1IT1IE0IT0TCON(88H)n启停与中断控制寄存器启停与中断控制寄存器
22、由软件置位或清零。由软件置位或清零。当当TR0=1时启动,时启动, TR0=0时停止。时停止。 TR1:与与TR0类似,控制类似,控制T1 的启停。的启停。 TF1:与与TF0类似,类似,T1 中断请求标志位。中断请求标志位。3、中断允许控制寄存器、中断允许控制寄存器 (IE) D7D6D5D4D3D2D1D0EA/ESET1 EX1 ET0 EX0IE (A8H) 5.2.4 定时定时/计数器的工作方式计数器的工作方式 一、方式一、方式0 0 n13 13 位的定时位的定时/ /计数方式。计数方式。n 以以T0为例:为例: 由由TL0的低的低5位和位和TH0的的8 8位组成。位组成。n当当T
23、L0低低5 5位位溢溢出出(全全1 1到到全全0 0)时时,向向TH0进进位位,而而TH0溢出时由硬件自动置标志位溢出时由硬件自动置标志位TF0=1,并请求中断。,并请求中断。T0 方式方式 0 逻辑逻辑结构图结构图nM1M0=00n 当当C/T=0,定定时时方方式式,开开关关接接通通机机器器周周期期,对对单单片片机内部的机器周期脉冲进行计数;机内部的机器周期脉冲进行计数; 当当C/T=1,计计数数方方式式,开开关关接接通通T0(P3.4) ),当当计计数脉冲发生负跳变计数器加数脉冲发生负跳变计数器加1 1。n 当当GATE=0,或或门门输输出出1,只只要要TR0=1,开开关关接接通通,计数开
24、始,即启动定时器加计数开始,即启动定时器加1; 当当 GATE=1, 或或 门门 输输 出出 0, 要要 通通 过过 TR0=1、INT0=1来共同启动定时器加来共同启动定时器加1;n当当TH0溢溢出出时时,置置位位TCON中中的的TF0标标志志,向向CPU发发出中断请求。出中断请求。 方式方式0 0只用到只用到1313位,最大计数脉冲数为位,最大计数脉冲数为 Nmax=213=8192 若为定时模式,使用若为定时模式,使用6MHz晶振,晶振, 则最大定时时间为则最大定时时间为Tmax= 2132us=16.384ms。 单片机复位后单片机复位后TH0、TL0都是都是0,故默认情况下每一,故默
25、认情况下每一次溢出后计数脉冲数都固定为次溢出后计数脉冲数都固定为8192,定时时间也是固,定时时间也是固定的。定的。 用户如何指定计数脉冲数或定时时间呢?用户如何指定计数脉冲数或定时时间呢? 用户指定的计数脉冲数用户指定的计数脉冲数:N = 213 计数初值计数初值C ; 用户指定的定时时间:用户指定的定时时间: t = ( 213 计数初值计数初值C)机器周期机器周期 计数初值计数初值C 必须事先写入必须事先写入TH0、TL0中。中。例如,定时例如,定时/计数器计数器T0的计数值为的计数值为1000,则初值为,则初值为7192,转换成二进制数为,转换成二进制数为1110000011000B,
26、则,则TH0=11100000B=E0H,TL0=00011000B=18H。例:设定时器例:设定时器T0选择工作模式选择工作模式0,定时时间为,定时时间为1ms,系统晶振的频率为系统晶振的频率为focs6MHz,确定,确定T0的初值并送的初值并送到到TH0和和TL0中。中。解:解:1103(213C)12/6M 则则C76921111000001100B 将低将低5位送位送TL0,即,即TL00CH; 将高将高8位送位送TH0,即,即TH00F0H二、方式二、方式1 1 n逻辑结构与方式逻辑结构与方式0 0类似,变成类似,变成16 16 位计数。位计数。n 以以T0为例:为例: 由由TL0作
27、低作低8位和位和TH0作高作高8 8位。位。n最大计数脉冲数为最大计数脉冲数为 Nmax=216=65536 n最大最大定时时间为定时时间为Tmax= 2162us=131.072ms。 用户指定的计数脉冲数用户指定的计数脉冲数:N = 216 计数初值计数初值C ; 用户指定的定时时间:用户指定的定时时间: t = ( 216计数初值计数初值C)机器周期机器周期 计数初值计数初值C 必须事先写入必须事先写入TH0、TL0中。中。T0 方式方式 1 逻辑逻辑结构图结构图三、方式三、方式2 2 n自动再装入自动再装入8 8位计数器;位计数器;n THx、TLx相互独立相互独立( (x=0,1)
28、);n TLx作为作为8位计数器,位计数器, THx是初值寄存器;是初值寄存器;n TLx溢出后,置位溢出后,置位TFx,申请中断;,申请中断;n THx初初值值自自动动重重新新装装入入TLx,使使TLx自自动动进进行行下下一一次次计数;计数;n最大计数脉冲数为最大计数脉冲数为 Nmax=28=256 n最大最大定时时间为定时时间为Tmax= 282us=0.512ms。n 用户定时时间:用户定时时间:t = ( 28计数初值计数初值C)机器周期机器周期T0 方式方式 2 逻辑逻辑结构图结构图四、方式四、方式3 3n只适用于只适用于T0。 T1无效,停止计数。无效,停止计数。n 将将T0分成两
29、个独立的分成两个独立的8 8位计数器。位计数器。nTL0组组成成组组成成完完整整的的8 8位位定定时时/ /计计数数器器。既既能能定定时时,又又能计数。能计数。 TL0占用占用T0全部控制信号及中断请求标志位:全部控制信号及中断请求标志位: GATE、C/T、TR0、TF0。nTH0只只能能组组成成8 8位位定定时时器器,对对内内部部机机器器周周期期进进行行计计数数。只能定时。只能定时。 TH0占用占用T1的的TR1、TF1及中断资源及中断资源。 P3.5(T1P3.5(T1外部计数脉冲输入口外部计数脉冲输入口) )不能再用。不能再用。T0方式方式 3 逻辑逻辑结构图结构图5.2.5 定时定时
30、/计数器应用计数器应用 MCS-51单片机定时单片机定时/ /计数器初始化过程如下:计数器初始化过程如下: n 设置工作方式寄存器设置工作方式寄存器TMOD;n 计算计算计数初值计数初值,并装入,并装入THx、TLx;n 开中断,置位开中断,置位EA、ETx;n 启动定时启动定时/计数器,置位计数器,置位TRx。n 定时定时/ /计数器应用有计数器应用有查询查询、中断中断两种方式两种方式 解:解:1 1、计算计数初值、计算计数初值C C: 晶振为晶振为6 MHz,所以机器周期,所以机器周期Tc为为2 s。定时时间:定时时间: t = ( 213计数初值计数初值C)机器周期机器周期故计数初值故计
31、数初值C= 213 t /机器周期机器周期 = 213 250/2=8067使用使用T1以方式以方式1工作,采用中断方式编程实现上题。工作,采用中断方式编程实现上题。 TMOD 确定确定控制字控制字10H T1控制控制T0控制控制XXXX1000M0M1C/TGATEM0M1C/TGATE定时时间:定时时间: t = ( 216计数初值计数初值C)机器周期机器周期故计数初值故计数初值C= 216 t /机器周期机器周期 = 216250/2=65411高高8位:位:FFH,TH1=FFH低低8位:位:83H,TL1=83H 计算计数初值;计算计数初值; 开中断;开中断; EA=1,ET1=1
32、启动启动T1。 TR=1 ORG 0000H LJMP MAIN ;跳转到主程序;跳转到主程序 ORG 001BH ;T1的中断入口地址的中断入口地址 LJMP INTT1 ;转向中断服务程序;转向中断服务程序MAIN:MOV TMOD,#10H ;置;置T1工作于方式工作于方式1 MOV TH1,#0FFH ;装入计数初值;装入计数初值 MOV TL1,#83H SETB EA ;CPU开中断开中断 SETB ET1 ;T1开中断开中断 SETB TR1 ;启动;启动T1 SJMP $ ;等待中断;等待中断 INTT1 :MOV TH1,#0FFH ;重装入计数初值;重装入计数初值 MOV
33、TL1,#83H CPL P1.0 ;P1.0取反输出取反输出 RETI ;中断返回;中断返回 END中断方式中断方式 例题:例题:设系统时钟频率为设系统时钟频率为6MHz,编程实现,编程实现P1.0P1.0口上的口上的发光二极管每隔发光二极管每隔1s1s亮灭一次。亮灭一次。 n思路:思路: 采采用用T0,工工作作于于方方式式1,定定时时50ms,每每溢溢出出20次次即即1s,P1.0的状态发生改变。的状态发生改变。 TOMD控制字控制字01H T1控制控制T0控制控制1000XXXXM0M1C/TGATEM0M1C/TGATE定时时间:定时时间: t = ( 216计数初值计数初值C)机器周
34、期机器周期故计数初值故计数初值C= 216 t /机器周期机器周期 = 21650m/2u=40536高高8位:位:9EH,TH1=9EH低低8位:位:58H,TL1=58H 计算计数初值计算计数初值 ORG 0000H MOV TMOD,#01H MOV TH0,#9EH MOV TL0,#58H SETB TR0LOOP: MOV R3,#20DEL1: JBC TF0,DEL2 SJMP DEL1DEL2: MOV TH0,#9EH MOV TL0,#58H DJNZ R3,DEL1 CPL P1.0 SJMP LOOP ENDn查询方式查询方式 例题:例题:测量脉冲宽度。测量脉冲宽度。
35、当当GATE=1、TR1=1时,只有时,只有INT1引脚上出现高电平引脚上出现高电平时,时,T1才开始计数,利用这一特点可以测量加在才开始计数,利用这一特点可以测量加在P3.3上上的正脉冲宽度。的正脉冲宽度。测量时,先将测量时,先将T1设置为定时方式,设置为定时方式,GATE设为设为1,并在,并在INT1引脚为引脚为0时将时将TR1置置1,则当,则当INT1引脚变为引脚变为1时将启时将启动动T1,直到,直到INT1引脚再次变为引脚再次变为0时将停止时将停止T1,此时通过,此时通过T1的计数值就可以测得脉冲宽度。的计数值就可以测得脉冲宽度。若将定时初值设为若将定时初值设为0 0,当单片机工作频率
36、为,当单片机工作频率为12MHz12MHz时,时,能测量的最大脉冲宽度为能测量的最大脉冲宽度为655361u=65.536ms。 ORG 0000H ;复位地址复位地址 AJMP MAIN ;跳到主程序跳到主程序 ORG 0030H ;主程序入口地址主程序入口地址MAIN: MOV TMOD,#90H ;T1工作于定时方式工作于定时方式1,GATE=1 MOV TL1,#00H ;计数初值设为计数初值设为0 MOV TH1,#00H ;最大测量脉冲宽度为最大测量脉冲宽度为65.535msRL1: JB P3.3,RL1 ; 等待等待P3.3变低变低 SETB TR1 ;启动启动T1RL2: JNB P3.3,RL2 ; 等待等待P3.3变低变低RL3: JB P3.3,RL3 ; 等待等待P3.3再次变低再次变低 CLR TR1 ;启动启动T1 MOV 30H,TH1 ;读取脉冲宽度读取脉冲宽度 MOV 31H,TL1 SJMP $ END