第五章 MCS-51中断与定时系统.

Slides:



Advertisements
Similar presentations
第六章 中 断 本章学习目标 掌握单片机中断系统 掌握单片机中断处理过程 掌握中断程序设计 理解中断使用过程中需要注意的问题.
Advertisements

单片机技术及应用 河南信息工程学校 电子工程系.
5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
第5章 中断系统 5.1 中断的概述  5.2 AT89C51中断系统 5.3 中断系统的应用.
主讲人:刘利 交通大学网络控制课程系列 上海交通大学机电控制研究所 交通大学网络控制课程系列 考试课、专业基础课、必修课
第7章 AT89S51单片机的 串行口 1.
6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。
项目二 中断应用系统设计 本项目学习目标: (1)制作一个单片机控制的彩灯电路。 (2) 理解中断的基本概念;
第4章 中断系统和定时/计数器 本章学习目标 : 理解中断概念,能正确描绘单片机中断响应过程
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
单片机应用技术 项目二 电子打铃装置 第4讲 单片机的定时器/ 计数器 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
8051 指令.
單晶片MCS-51 C語言入門實習 第1章 微電腦與單晶片MCS-51架構 作者:董勝源.
单片机原理与应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
6.3 定时器/计数器的应用 初始化 初始化的内容如下:
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第二部分 微机原理 第8章 单片机的 定时/计数器 主讲教师:喻红.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
第5章 定时计数技术 单片机控制系统中常常用到的定时与计数问题。 5.1 定时计数概述 5.2 MCS-51单片机的定时计数器.
6.1 中断系统和外中断 6.2 定时器/计数器 6.3 串行通信 本章小结.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
本章分为三节,主要介绍: 6.1 计算机串行通信基础 C51的串行口 6.3 单片机串行口应用举例.
第6章 定时器/计数器 (课时:8学时).
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
第2章 单片机的结构原理与 简单应用 (课时:10学时).
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
第七章 定时/计数器.
第八章 数据通信.
CPU结构和功能.
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
第2章 单片机系统组成原理 2.1 MCS-51单片机组成原理 2.2 单片机复位电路设计 2.3 MCS-51存储器配置
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
第5章 中断系统及其应用 ● 教学目标: 介绍中断、中断源、中断系统的概念 介绍MCS-51中断系统及中断控制
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
数码管数字时钟电路的设计 1. 系统硬件电路的设计
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第五章 MCS-51中断系统 一、中断请求源 MCS-51提供5个中断请求源,即INT0、INT1、TF0、 TF1和串行口发送与接收中断请求源TI或RI。这些 中断请求源分别由TCON与SCON的相应位锁存。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
5.2.3 中断请求的响应、撤除及返回 1.中断的响应 从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。 在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
5. 1 中 断 概 述 单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
第7章 定时/计数器 教学目的:了解80C51系列单片机内部定时器/计数器的结构与工作原理;能够采用查询方式对定时器/计数器的4种工作模式编程、应用。 教学重点:1. 定时/计数器的工作原理; 2. 定时器方式1、2的编程、应用。 教学难点:1.定时/计数器控制寄存器的设置 2.定时初值的设置.
第4章 定时器与计数器 本章内容 定时器/计数器工作原理 定时器/计数器的工作方式 定时器/计数器的应用.
单片机应用技术 (C语言版) 第7章 定时器/计数器
微算機(二) 's UART mode1 communication
定时中断与LED MCU起航 QQ:
6.1 定时器/计数器的结构及工作原理 定时器/计数器的结构 定时器/计数器T0、T1的逻辑结构如图6-1所示。
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
单片机应用技术 (C语言版) 第8章 串行通信接口
得技通电子 问题 三 判断题:.
单片机应用技术 (C语言版) 第6章 中断系统.
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第5章 80C51单片机的中断与定时 教学基本要求: (1)、了解单片机系统有关中断的概念; (2)、了解单片机定时器/计数器的功能;
第1章 微型计算机基础.
Presentation transcript:

第五章 MCS-51中断与定时系统

5.1 中断系统概述 一、中断概念 主任务 主程序 洗衣服 水开报警 继续 灌开水 执行主程序 中断请求 继续 执行中断 服务程序 中断响应 中断返回

中断是指CPU在处理某一事件A时,发生另一事件B,请求CPU处理;——中断请求 CPU暂时停止当前的工作,转去处理事件B;——中断响应,并执行中断服务程序 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A;——中断返回

中断嵌套 若单片机正在处理一个中断程序,此时,又有另一个中断现象发生,单片机将会停止当前的中断程序,而转去执行新的中断程序,新中断程序处理完毕后再回到刚才停止的中断程序处继续执行,执行完这个中断后再返回主程序继续执行。

中断嵌套 主程序 执行主程序 中断请求 继续 中断响应 中断返回 中断服 务程序 中断优先级

二、中断源 引起CPU中断的根源,称为中断源,中断源向CPU提出中断请求。 外部中断0( INT0)—— 中断请求信号由P3.2提供; 外部中断1 (INT1)—— 中断请求信号由P3.3提供; 定时器中断(T0)—— 由片内定时/计数器T0提供; 定时器中断(T1)—— 由片内定时/计数器T1提供; 串行口中断(RI、TI)—— 由片内串行口提供。

三、中断控制 与中断控制有关的控制寄存器有四个: 1、定时控制寄存器 (TCON) 功能: ① 定时器/计数器控制功能; ② 中断控制功能。 TCON D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 (88H)

IT0(IT1) —— 外中断触发方式控制位 触发方式有两种: IT0(IT1)=0:电平方式,低电平有效; IT0(IT1)=1:脉冲方式,脉冲负跳变有效。 IE0 (IE1) —— 外中断请求标志位 当CPU采样到INT0(INT1)出现有效中断请求时,IE0由硬件自动置位,向CPU发出中断请求。当CPU响应中断请求,进入中断服务程序时自动复位。 TF0(TF1) —— 定时器溢出标志 当定时器T0(或T1)溢出时, TF0(TF1)由硬件置位,向CPU发送中断请求。当CPU响应中断请求,进入中断服务程序时,自动复位。

2、串行口控制寄存器 (SCON) SCON D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI (98H) TI ——串行口发送中断请求标志位。 当串行口发送完一帧数据后,硬件置位; 在转向中断服务程序后,用软件清零。 RI ——串行口接收中断请求标志位。 当串行口接收完一帧数据后,硬件置位;

3、中断允许控制寄存器 (IE) IE D7 D6 D5 D4 D3 D2 D1 D0 EA / ES ET1 EX1 ET0 EX0 (A8H) EA ——中断允许总控制位 EA=0,中断总禁止; EA=1,中断总允许。 EX0(EX1) ——外部中断允许控制位 EX0(EX1)=0,禁止外中断; EX0(EX1)=1,允许外中断。

IE D7 D6 D5 D4 D3 D2 D1 D0 EA / ES ET1 EX1 ET0 EX0 (A8H) ET0(ET1) ——定时器中断允许控制位 ET0(ET1) =0,禁止定时器中断; ET0(ET1) =1,允许定时器中断。 ES —— 串行中断允许控制位 ES=0,禁止串行中断; ES=1 ,允许串行中断。

4、中断优先级控制寄存器 (IP) IP D7 D6 D5 D4 D3 D2 D1 D0 / PS PT1 PX1 PT0 PX0 (B8H)

四、中断响应过程 1、中断请求

T0溢出 T1溢出 MOV SBUF,A MOV A, SBUF

2、中断查询 中断标志位: IE1、IE0、 TF1、TF0、 RI 、TI

MCS-51中断系统的逻辑结构

LCALL addr16 (指向相应的中断入口地址) 3、中断响应 LCALL addr16 (指向相应的中断入口地址) 保存断点地址,将当前PC值压栈; 中断程序的入口地址 → PC 中断源 INT T 1 串行口 中断入口地址 0003H 000BH 0013H 001BH 0023H

. 51单片机复位后PC=0000H, 0000H LJMP MAIN 每个中断程序只有8个字节单元,不够存放实际的中断服务程序,故各中断程序的入口地址处通常也安排一条跳转指令,指向实际的中断服务程序处。 0003H INT0 LJMP EXINT0 000AH 000BH T0 LJMP TIMER0 0012H 0013H LJMP EXINT1 INT1 001AH 001BH T1 LJMP TIMER1 0022H 0023H 串行口 LJMP SERIES 002AH .

中断系统程序结构 中断初始化 ORG 0000H START: LJMP MAIN ;跳转到主程序 ORG 0003H ;外中断0入口地址 LJMP EXINTO ;转中断服务程序 MAIN: CLR IT0 ;设为电平触发方式 SETB EA ;开总中断 SETB EX0 ;开外中断0 … ; 开始编写主程序 EXINT0: PUSH PSW ;保护现场 PUSH ACC … ; 开始编写中断服务程序 POP ACC POP PSW RETI ;中断返回 中断初始化

存在下列情况之一,中断响应无法进行: CPU正在处于一个同级或高级的中断服务程序中; 查询中断请求的机器周期不是当前执行指令的最后一个机器周期,即需将当前指令执行完才能响应中断; 当前指令是返回指令(RET、RETI)或访问IE、IP指令, 即只有在这些指令后面至少再执行一条指令时才能接受中断请求。

中断响应时间: 正常中断时间为3 ~ 8个机器周期,如有同级或高级中断服务,则延长响应时间。 3T: 中断请求标志查询: 1T 产生、执行LCALL: 2T 8T: 执行RET/RETI(访问IP/IE):2T 主程序中MUL/DIV指令: 4T 执行LCALL指令: 2T

五、中断请求的撤销 中断响应后,TCON或SCON中的中断请求标志应及时清除。否则就意味着中断请求仍然存在。 1、定时器中断硬件撤除 中断响应后硬件自动清 TF0(TF1) 标志位。 2、外部中断自动与强制撤除 中断响应后硬件自动清 IE0(IE1) 标志位。 脉冲请求方式,自动撤除; 电平请求方式,强制撤除。

3、串行中断软件撤除 标志位 TI、RI 不能通过硬件清零。只能在中断响应后用软件清除。

例1:外中断源扩展 外中断源多于二个时,采用硬件申请,软件查询方法。 XI0 XI1 + XI2 XI3 XI4

SETB EX0 SETB EX1 ORG 0000H LJMP MAIN ORG 0003H LJMP EXINT0 ;转外部中断0服务程序入口 ORG 0013H LJMP EXINT1 ;转外部中断1服务程序入口 MAIN: SETB IT0 ;中断初始化 SETB IT1 SETB EX0 SETB EX1 SETB EA … … SJIMP $ ;等待中断 EXINT0 : PUSH PSW ;XI0中断服务程序 PUSH ACC POP ACC POP PSW RETI

EXINT1:PUSH PSW ;中断服务程序 PUSH ACC JB 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中断服务程序 XI3 : … … ;XI3中断服务程序 XI4 :… … ;XI4中断服务程序

5.2 定时器中断 5.2.1 定时方法概述

5.2.2 MCS-51单片机的定时器功能 51单片机 内部有两个可编程的定时器/计数器,即定时器 T0 和 定时器T1。 注意:全称是定时器/计数器,简写为定时器。 T0、T1均既有定时功能又有计数功能。 T0、T1是16位特殊功能寄存器,由高8位和低8位两个寄存器组成,地址为: T0 (TH0、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)操作,发生在两个机器周期,因此需要2个机器周期才能识别一个从1到0的跳变,故计数脉冲的周期必须大于2个机器周期。

当加到全1时,再来一个脉冲就使计数器回零(溢出): ◆ 若定时器工作于定时模式,表示定时时间已到; ◆ 若定时器工作于计数模式,表示计数值已满。 此时,均可向CPU发出中断请求。

5.2.3 MCS-51单片机定时器控制与状态寄存器 1、工作方式寄存器 (TMOD) 字节地址为89H,不可以位寻址。 T0 T1

M1、M2:工作方式选择位 C/ T:定时或计数模式选择 GATE :门控位 GATE=0,仅通过TRx位启动定时器。 GATE=1,INTx端口高电平,再通过TRx启动定时器。

2、控制寄存器 (TCON) 启停与中断控制寄存器 TCON D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 (88H) 由软件置位或清零。 当TR0=1时启动, TR0=0时停止。 TR1:与TR0类似,控制T1 的启停。

TF1:与TF0类似,T1 中断请求标志位。

3、中断允许控制寄存器 (IE) IE D7 D6 D5 D4 D3 D2 D1 D0 EA / ES ET1 EX1 ET0 EX0 (A8H)

5.2.4 定时/计数器的工作方式

一、方式0 13 位的定时/计数方式。 以T0为例: 由TL0的低5位和TH0的8位组成。 当TL0低5位溢出(全1到全0)时,向TH0进位,而TH0溢出时由硬件自动置标志位TF0=1,并请求中断。

T0 方式 0 逻辑结构图

M1M0=00 ● 当C/T=0,定时方式,开关接通机器周期,对单片机内部的机器周期脉冲进行计数; ● 当C/T=1,计数方式,开关接通T0(P3.4),当计数脉冲发生负跳变计数器加1。 ● 当GATE=0,或门输出1,只要TR0=1,开关接通,计数开始,即启动定时器加1; ● 当GATE=1,或门输出0,要通过TR0=1、INT0=1来共同启动定时器加1; 当TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

方式0只用到13位,最大计数脉冲数为 Nmax=213=8192 若为定时模式,使用6MHz晶振, 则最大定时时间为Tmax= 213×2us=16.384ms。 单片机复位后TH0、TL0都是0,故默认情况下每一次溢出后计数脉冲数都固定为8192,定时时间也是固定的。 用户如何指定计数脉冲数或定时时间呢?

用户指定的计数脉冲数:N = 213 -计数初值C ; 用户指定的定时时间: t = ( 213 -计数初值C)×机器周期 计数初值C 必须事先写入TH0、TL0中。 例如,定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000B=E0H,TL0=00011000B=18H。

例:设定时器T0选择工作模式0,定时时间为1ms, 系统晶振的频率为focs=6MHz,确定T0的初值并送到TH0和TL0中。 解:1×10-3=(213-C)×12/6M 则C=7692=1111000001100B 将低5位送TL0,即TL0=0CH; 将高8位送TH0,即TH0=0F0H

二、方式1 逻辑结构与方式0类似,变成16 位计数。 以T0为例: 由TL0作低8位和TH0作高8位。 最大计数脉冲数为 Nmax=216=65536 最大定时时间为Tmax= 216×2us=131.072ms。 用户指定的计数脉冲数:N = 216 -计数初值C ; 用户指定的定时时间: t = ( 216-计数初值C)×机器周期 计数初值C 必须事先写入TH0、TL0中。

T0 方式 1 逻辑结构图

三、方式2 自动再装入8位计数器; THx、TLx相互独立(x=0,1); TLx作为8位计数器, THx是初值寄存器; TLx溢出后,置位TFx,申请中断; THx初值自动重新装入TLx,使TLx自动进行下一次计数; 最大计数脉冲数为 Nmax=28=256 最大定时时间为Tmax= 28×2us=0.512ms。 用户定时时间:t = ( 28-计数初值C)×机器周期

T0 方式 2 逻辑结构图

四、方式3 只适用于T0。 T1无效,停止计数。 将T0分成两个独立的8位计数器。 TL0组成组成完整的8位定时/计数器。既能定时,又能计数。 TL0占用T0全部控制信号及中断请求标志位: GATE、C/T、TR0、TF0。 TH0只能组成8位定时器,对内部机器周期进行计数。只能定时。 TH0占用T1的TR1、TF1及中断资源。 P3.5(T1外部计数脉冲输入口)不能再用。

T0方式 3 逻辑结构图

5.2.5 定时/计数器应用 MCS-51单片机定时/计数器初始化过程如下: 设置工作方式寄存器TMOD; 5.2.5 定时/计数器应用 MCS-51单片机定时/计数器初始化过程如下: 设置工作方式寄存器TMOD; 计算计数初值,并装入THx、TLx; 开中断,置位EA、ETx; 启动定时/计数器,置位TRx。 定时/计数器应用有查询、中断两种方式

解:1、计算计数初值C: 晶振为6 MHz,所以机器周期Tc为2 s。 定时时间: t = ( 213-计数初值C)×机器周期 故计数初值C= 213 - t /机器周期 = 213 -250/2=8067

使用T1以方式1工作,采用中断方式编程实现上题。 ① TMOD 确定 T1控制 T0控制 X 1 M0 M1 C/T GATE 控制字10H

② 计算计数初值; 定时时间: t = ( 216-计数初值C)×机器周期 故计数初值C= 216 - t /机器周期 = 216-250/2=65411 高8位:FFH,TH1=FFH 低8位:83H,TL1=83H ③ 开中断; EA=1,ET1=1 ④ 启动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 ;重装入计数初值 CPL P1.0 ;P1.0取反输出 RETI ;中断返回 END

例题:设系统时钟频率为6MHz,编程实现P1.0口上的发光二极管每隔1s亮灭一次。 思路: 采用T0,工作于方式1,定时50ms,每溢出20次即1s,P1.0的状态发生改变。 ① TOMD T1控制 T0控制 1 X M0 M1 C/T GATE 控制字01H

② 计算计数初值 定时时间: t = ( 216-计数初值C)×机器周期 故计数初值C= 216 - t /机器周期 = 216-50m/2u=40536 高8位:9EH,TH1=9EH 低8位:58H,TL1=58H

查询方式 ORG 0000H MOV TMOD,#01H MOV TH0,#9EH MOV TL0,#58H SETB TR0 LOOP: MOV R3,#20 DEL1: JBC TF0,DEL2 SJMP DEL1 DEL2: MOV TH0,#9EH DJNZ R3,DEL1 CPL P1.0 SJMP LOOP END

例题:测量脉冲宽度。 当GATE=1、TR1=1时,只有INT1引脚上出现高电平时,T1才开始计数,利用这一特点可以测量加在P3.3上的正脉冲宽度。 测量时,先将T1设置为定时方式,GATE设为1,并在INT1引脚为0时将TR1置1,则当INT1引脚变为1时将启动T1,直到INT1引脚再次变为0时将停止T1,此时通过T1的计数值就可以测得脉冲宽度。 若将定时初值设为0,当单片机工作频率为12MHz时,能测量的最大脉冲宽度为65536×1u=65.536ms。

ORG 0000H ;复位地址 AJMP MAIN ;跳到主程序 ORG 0030H ;主程序入口地址 MAIN: MOV TMOD,#90H ;T1工作于定时方式1,GATE=1 MOV TL1,#00H ;计数初值设为0 MOV TH1,#00H ;最大测量脉冲宽度为65.535ms RL1: JB P3.3,RL1 ; 等待P3.3变低 SETB TR1 ;启动T1 RL2: JNB P3.3,RL2 ; 等待P3.3变低 RL3: JB P3.3,RL3 ; 等待P3.3再次变低 CLR TR1 ;启动T1 MOV 30H,TH1 ;读取脉冲宽度 MOV 31H,TL1 SJMP $ END