第7章 定时器计数器
单片机原理及接口技术(C51编程)第7章 定时器计数器

图7-14 由外部计数输入信号控制LED的闪烁
(3)设置IE寄存器 本例由于采用T1中断,因此需将IE寄存器的EA、ET1位置1。
(4)启动和停止定时器T1 将寄存器TCON中TR1=1,则启动T1计数;TR1=0,则停止T1计数。
参考程序如下:
#include <reg51.h> void Delay(unsigned int i)
7.4 定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,只是计数位数不同。方
式0为13位,方式1为16位。由于方式0是为兼容MCS-48而设,计数初 值计算复杂,所以在实际应用中,一般不用方式0,常采用方式1。
7.4.1 P1口控制8只LED每0.5s闪亮一次 【例7-1】在AT89S51的P1口上接有8只LED,原理电路见图7-
当TMOD的低2位为11时,T0被选为方式3,各引脚与T0的逻辑关系 见图7-8。
T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的状态控制位 C/T* 、GATE、TR0 ,而TH0被固定为一个8位定时器(不能作为外部 计数模式),并使用定时器T1的状态控制位TR1,同时占用定时器T1的 中断请求源TF1。
13。采用T0方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮 一次。
23
图7-13 方式1定时中断控制LED闪亮
24
(1)设置TMOD寄存器 T0工作在方式1,应使TMOD寄存器的M1、M0=01;应设置C/T*=0,为定
时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时 器T1不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x01。 (2)计算定时器T0的计数初值
认识单片机的定时器计数器

void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。
定时计数器

T1端 TR1 GATE l
≥l
TF1
中断
C/T=1 &
控制
INT1端
2.工作方式1 ( M1M0=01 ,16位定时器/计数器) 由TH1和TL1构成16位加1计数器,其他特性与工作 方式0相同。
振荡器 ÷12 C/T=0 TL1 (8位) T1端 TR1 GATE INT1端 l ≥l TH1 (8位)
第6章
定时/计数器
P132
定时/计数器的结构及工作原理 定时/计数器的工作方式 定时/计数器方式和控制寄存器 定时/计数器的编程举例
6.1 概述
在测量控制系统中,常需要有实时时钟和计数器,以实现 定时(或延时)控制以及对外界事件进行计数。 一、常用的定时(或延时)方法: 软件延时:利用执行一个循环程序进行时间延迟。其特点是 定时时间精确,不需外加硬件电路,但占用CPU时间。因此软 件定时的时间不宜过长。 硬件定时:利用硬件电路实现定时。其特点是不占用CPU时 间,通过改变电路元器件参数来调节定时,但使用不够灵活方 便。对于时间较长的定时,常用硬件电路来实现。 可编程定时器/计数器(硬件+软件):通过专用的定时器/ 计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实 现定时,定时时间可通过程序设定的方法改变,使用灵活方 便。也可实现对外部脉冲的计数功能。
TL0,#83H P1.0 TH0,#06H P1.1
;送方式字 ;送时间常数 ;送时间常数 ;送控制宇 ;送中断控制字
;等待中断
;重装时间常数 ;控制方波倒相 ;重装时间常数 ;控制方波倒相
RETI DONE2: MOV CPL RETI
【*例3】试用T1方式2编制程序,在P1.0引脚输出周 期为400S的脉冲方波,已知fosc=12MHZ。
定时器与计数器

第7章定时器/计数器MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1(8052提供3个,这第三个称定时器T2)。
它们既可用作定时器方式,又可用作计数器方式。
7 . 1定时器/计数器结构定时器/计数器的基本部件是两个8位的计数器(其中TH1,TL1是T1的计数器,TH0,TL0是T0的计数器)拼装而成。
在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对计算机机器周期的计数器(因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号)。
故其频率为晶振频率的1/12。
如果晶振频率为12MH Z,则定时器每接收一个输入脉冲的时间为1us。
当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。
在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1(它在每个机器周期的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加1)。
加1操作发生在检测到这种跳变后的一个机器周期中的S3P1,因此需要两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的1/24。
这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采样一次。
定时器/计数器有四种工作方式,其工作方式的选择及控制都由两个特殊功能寄存器(TMOD和TCON)的内容来决定。
用指令改变TMOD或TCON的内容后,则在下一条指令的第一个机器周期的S1P1时起作用。
1、定时器的方式寄存器TMOD图7-1 TMOD寄存器各位定义特殊功能寄存器TMOD为定时器的方式控制寄存器,寄存器中每位的定义如图7-1所示。
高4位用于定时器1,低4位用于定时器0。
其中M1,M0用来确定所选的工作方式,如表7-1所示。
①M1 M0 定时器/计数器四种工作方式选择,见表7-1所示。
微机原理与接口技术_第7章8253

§7-1 8253的工作原理 ——8253的内部结构和引脚信号
然后,开始递减计数。即每输入一个时钟脉冲,计数
器的值减1,当计数器的值减为0时,便从OUT引脚输出 一个信号。输出信号的波形主要由工作方式决定,同 时还受到从外部加到GATE引脚上的门控信号控制,它 决定是否允许计数。 当用8253作外部事件计数器时,在CLK脚上所加的计 数脉冲是由外部事件产生的,这些脉冲的间隔可以是 不相等的。 如果要用它作定时器,则CLK引脚上应输入精确的时 钟脉冲。这时,8253所能实现的定时时间,决定于计 数脉冲的频率和计数器的初值,即 定时时间=时钟脉冲周期tc×预臵的计数初值n
16
§7-1 8253的工作原理 ——8253的内部结构和引脚信号 ③引脚 8253的3个计数器都各有3个引脚,它们是:
CLK0~CLK2:计数器0~2的输入时钟脉冲从这里输
入。频率不能大于2MHz。
OUT0~OUT2:计数器0~2的输出端。
GATE0~GATE2:计数器0~2的门控脉冲输入端。
4
第七章 可编程计数器/定时器8253及其应用 ——概述 2. 不可编程的硬件定时 555芯片是一种常用的不可编程器件,加上外接电阻和电 容就能构成定时电路。这种定时电路结构简单,价格 便宜,通过改变电阻或电容值,可以在一定的定时范 围内改变定时时间。但这种电路在硬件已连接好的情 况下,定时时间和范围就不能由程序来控制和改变, 而且定时精度也不高。 3. 可编程的硬件定时 ①可编程定时器/计数器电路利用硬件电路和中断 方法控制定时,定时时间和范围完全由软件来确 定和改变,并由微处理器的时钟信号提供时间基 准,这种时钟信号由晶体振荡器产生,故计时精
12
§7-1 8253的工作原理 ——8253的内部结构和引脚信号 8253输入信号组合的功能表
定时器 计数器的工作原理

定时器计数器的工作原理
定时器和计数器是电子设备中常见的两种功能模块。
它们可以分别完成精确计时和计数的任务。
定时器的工作原理是基于一个稳定的时钟源,通常是晶体振荡器。
时钟源会产生一个固定频率的周期性信号,这个信号频率可以根据系统需求进行调节。
定时器的主要组成部分是一个计数器和一些辅助逻辑电路。
计数器用于记录时钟脉冲的数量,根据计数值和时钟频率可以确定经过的时间。
辅助逻辑电路用于控制计数器的工作方式,例如开始计数、计数暂停、计数清零等。
当定时器启动后,时钟信号会连续地输入计数器。
每个时钟脉冲都会使计数器的计数值加1。
当计数器的计数值达到某个预先设置的目标值时,辅助逻辑电路会触发一个中断信号,以通知系统达到了设定的时间。
计数器的工作原理与定时器相似,但它主要用于计数任务,而不是计时。
计数器通常用于记录输入信号的脉冲数量,可以用来测量运动物体的速度、计算输入信号的频率等。
计数器也是由一个计数器和辅助逻辑电路组成。
计数器记录输入脉冲的数量,辅助逻辑电路用于控制计数器的工作方式,例如开始计数、计数暂停、计数清零等。
当计数器启动后,每个输入脉冲都会使计数器的计数值加1。
当计数器的计数值达到预先设置的目标值时,辅助逻辑电路会触发一个中断信号,通知系统完成了预定的计数任务。
总结起来,定时器和计数器都是基于时钟脉冲的工作,通过计数器记录时钟脉冲的数量来实现计时或计数的功能。
它们在很多电子设备中都有广泛的应用。
定时器计数器常用编程方法

定时器计数器常用编程方法定时器计数器是编程中常用的工具,它们可以用于控制程序的执行时间、测量时间间隔、产生脉冲信号等。
以下是一些常用的编程方法来使用定时器计数器:1. 硬件定时器/计数器:许多微控制器和处理器都内置了硬件定时器/计数器。
这些定时器/计数器可以用于产生精确的时间延迟或测量时间间隔。
在编程时,通常需要配置定时器/计数器的参数,如计数频率、计数值等,然后启动定时器/计数器,让它自动计数或计时。
2. 软件定时器/计数器:如果硬件没有提供定时器/计数器,或者需要更灵活的控制,可以使用软件定时器/计数器。
软件定时器/计数器是通过程序代码实现的,通常使用循环和延时函数来模拟定时或计数。
这种方法不如硬件定时器/计数器精确,但可以实现简单的定时和计数功能。
3. 操作系统提供的定时器/计数器:许多操作系统都提供了定时器和计数器的API或功能。
例如,在Windows系统中,可以使用CreateTimerQueueTimer函数创建一个定时器,用于在指定的时间间隔后触发回调函数。
在Linux系统中,可以使用alarm或setitimer函数设置定时器。
这些方法通常需要结合操作系统提供的API进行编程。
4. 第三方库或框架:许多编程语言和框架提供了对定时器和计数器的支持。
例如,Python中的time模块提供了sleep函数用于暂停程序执行一段时间,而Tkinter库提供了Timer类用于在GUI应用程序中创建定时器。
这些库或框架通常提供更高级的功能和更灵活的控制,但需要学习和使用特定的API或语法。
总之,使用定时器计数器的编程方法有很多种,具体选择哪种方法取决于应用程序的需求和使用的编程语言或框架。
单片机定时器计数器工作原理

单片机定时器计数器工作原理单片机定时器计数器是单片机中非常重要的一个模块,它通常用于实现各种定时和计数功能。
通过定时器计数器,单片机能够精准地进行定时操作,实现定时中断、计数、脉冲生成等功能。
本文将详细介绍单片机定时器计数器的工作原理。
1. 定时器计数器的功能单片机定时器计数器通常由若干寄存器和控制逻辑组成,可以实现以下几种功能:- 定时功能:通过设置计数器的初始值和工作模式,可以实现一定时间的定时功能,单片机能够在计时结束时触发中断或产生输出信号。
- 计数功能:可以实现对外部信号的计数功能,用于测量脉冲个数、频率等。
也可以用于实现脉冲输出、PWM等功能。
- 脉冲发生功能:可以在一定条件下控制定时器输出脉冲,用于控制外部器件的工作。
2. 定时器计数器的工作原理定时器计数器的工作原理可以分为初始化、计数及中断处理几个基本环节。
(1)初始化:在使用定时器前,需要对定时器计数器进行初始化设置。
主要包括选择工作模式、设置计数器的初始值、开启中断等。
不同的单片机厂商提供了不同的定时器初始化方式和寄存器设置方式,通常需要查阅相关的单片机手册来进行设置。
(2)计数:初始化完成后,定时器开始进行计数工作。
根据不同的工作模式,定时器可以以不同的频率进行计数。
通常采用的计数源是内部时钟频率,也可以选择外部时钟源。
通过对计数器的频率设置和初始值的设定,可以实现不同的定时功能。
(3)中断处理:在定时器计数完成后,可以触发中断来通知单片机进行相应的处理。
通过中断服务程序,可以定时执行一些任务,或者控制一些外部设备。
中断服务程序的编写需要根据具体的单片机和编程语言来进行相应的设置。
3. 定时器计数器的应用定时器计数器广泛应用于各种嵌入式系统中,最常见的应用包括定时中断、PWM输出、脉冲计数、定时控制等。
可以利用定时器计数器实现LED呼吸灯效果、马达控制、红外遥控编码等功能。
在工业自动化、通信设备、电子仪器等领域也有着广泛的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
也可以用中断方式编程,具体程序如下: ORG 0000H ;MCS-51复位入口 AJMP MAIN ;转入主程序 ORG 000BH ;T0中断入口地址 AJMP INT_T0 ;转入中断服务程序 ORG 0100H ;主程序入口 MAIN: MOV SP,#40H ;设置堆栈 MOV TMOD,#01H ;T0设为方式1,软件启动定时 MOV TL0,#18H ;初值写入T0 MOV TH0,#0FCH SETB ET0 ;允许T0中断 SETB EA ;开放总中断 SETB TR0 ;启动T0定时工作 HERE: SJMP HERE ;原地踏步(处理其它事务)等待中断到来 ORG 0200H ;中断服务程序 INT_T0: CPL P1.0 MOV TL0,#18H ;初值写入T0 MOV TH0,#0FCH RETI ;中断返回 END
定时器与计数器在本质上是一样的,都是记录信号(通常为脉冲信号) 的个数。当计数脉冲是稳频信号时,计数器可以记录时间间隔,即用 作定时器,因此定时器实际上是一种特殊的计数器。
计数器通常按二进制计数,计数范围由二进制数的位数确定。 MCS-51计数器的初始值由软件来设置,加法计数,计数超过计数范围 的情况,称为溢出。此时相应的溢出标志置1,可供查询或向CPU产生 中断请求。
小结
1. 定时器/计数器在各种工作方式下的最大计数和最长定时时间 (1)最大计数值 模式0:213=8192 模式1:216=65536 模式2、3:28=256 (2)最长定时 设晶振频率fosc=6MHz,则一个机器周期 t=12/6MHz=2μs 模式0:Tmax=2பைடு நூலகம்3×t=16.384ms 模式1:Tmax=216×t=131.072ms 模式2、3:Tmax=28×t=0.512ms 2. 初值计算 (1)作计数器时 初值=最大计数值-计数个数 (2)作定时器时 初值=最大计数值-(定时时间/机器周期)
7.5 定时器/计数器应用举例
【例7-1】对定时器1编程,产生一个50Hz的方波,由P1.1输出。使用程 序查询方式,设fosc=12MHz。 解:方波周期T=1/50Hz=0.02s=20ms ,则定时时间为10ms, 因为fosc=12MHz,所以,机器周期为1 μs 计数初值=216 - 10×1000/1=65536-10000=55536=D8F0H 源程序如下: MOV TMOD,#10H ;计数器1工作在模式1,定时方式 SETB TR1 ;启动计数器1 LOOP: MOV TH1,#0D8H ;装入计数初值 MOV TL1,#0F0H JNB TF1,$ ;计数器1没有溢出,等待 CLR TF1 ; 产生溢出,清标志位 CPL P1.1 ; P1.1取反,输出 SJMP LOOP ; 循环
中断允许控制寄存器(IE)
0AFH EA 0AEH / 0ADH / 0ACH ES 0ABH ET1 0AAH EX1 0A9H ET0 0A8H EX0
ET1,ET0是定时器中断允许位。
7.4 定时器/计数器的工作方式
MCS-51的定时器/计数器共有四种工作方式。工作在方式0、方式1和方式2 时,定时器/计数器0和定时器/计数器1的工作原理完全一样,现以定 时器/计数器0为例介绍前三种工作方式。 M1 0 0 M0 0 1 工作模式 模式0 模式1 功能描述 13位计数器 16位计数器
1
1
0
1
模式2
模式3
可自动重置初值的8位计数器
定时器0: 分成两个8位计数器 定时器1: 停止计数
模式0(M1M0=00):13位计数方式,其计数器由TH0全部8 位和TL0的低5位构成。定时器0模式0结构如图所示。
C/ T =0时,控制开关接通振荡器12分频输出端,对机器周期计数。 这就是定时工作方式。定时时间为 t=(213 –T0初值)×振荡周期×12 用于计数工作方式时,计数长度为 213 =8192(个外部脉冲)。
D3 GATE
D2
C /T
D1 D0 M1 M0
其中,高4位用于计数器1。低4位用于计数器0。 TMOD(89H)不能位寻址,只能字节寻址。
GATE
C/T
M1
M0 00 01 10 11 — — — — 模式0 模式1 模式2 模式3
工作模式
方式选择
1—计数方式,计数片外脉冲(即对 来自P3.4/P3.5的计数信号计数,周 期不定) 0 —定时方式,计数片内脉冲(即对 机器周期计数,周期确定)
选通控制
1—受/INT0//INT1控制,只有INT0/INT1 输入信号为高电平,软件使TR0/TR1置1, 才可启动定时器 0—不受/INT0//INT1控制,软件使 TR0/TR1置1,即可启动定时器
控制寄存器—TCON(88H)
TCON各位的作用如下: TF1(TCON.7)——计数器1溢出标志位。溢出1,未溢出0 TF0(TCON.5)——计数器0溢出标志位。供查询或产生中断请求 TR1(TCON.6)——计数器1运行控制位。1启动计数,0禁止计数 TR0(TCON.4)——计数器0运行控制位。 IE1,IT1,IE0和IT0——外部中断INT1,INT0请求及其触发方式控制位。
【例7-3】记录T0(P3.4)引脚上的脉冲数,记满100个脉冲,从P1.0输出一个
正脉冲脉冲。用中断方式编程实现该功能。 解:源程序如下: ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ORG 0030H START: MOV TMOD, #06H ;设置计数器0为模式2。外部计数方式 MOV TH0, #9CH ; 计数器0初值 MOV TL0, #9CH CLR P1.0 ;初始化P1.0 SETB ET0 ;中断允许 SETB EA SETB TR0 ;启动计数器0 SJMP $ ; 等待 INT_T0: CPL P1.0 ;利用取反指令,输出脉冲前沿 NOP CPL P1.0 ;利用取反指令,输出脉冲后沿 RETI END
作模式3,若定时器1设置为模式3,就会立即停止计数。
在定时器 0用作模式3时,定时器1仍可设置为模式 0~2,由于TR1和TF1被 定时器0占用,计数器控制开关已被接通,此时,仅用计数器1控制位C/T 切换其定时器或计数器工作方式就可使计数器 1运行。计数器1(8位、13 位或 16 位)溢出时,只能将输出送入串行口或用于不需要中断的场合。 一般情况下,当定时器 1 用作串行口波特率发生器时,定时器 0 才设置为 工作模式3。此时,常把定时器1设置为模式2,用作波特率发生器。
【例7-2】 设单片机的晶振频率fosc=12MHz时,用定时器T0定时1ms,从 P1.0引脚输出周期为2ms的方波脉冲。
通过查询T0的溢出标志位TF0,判断定时时间到与否,具体程序如下: ORG 0100H ;主程序入口 MAIN: MOV TMOD,#00H ;T0设为方式0,软件启动定时 MOV TL0,#18H ;初值写入T0 MOV TH0,#0E0H SETB TR0 ;软件启动T0定时工作 LOOP: JBC TF0,PV ;查询溢出标志,若TF=1,则TF清0并转移 SJMP LOOP ;1ms定时时间未到,等待 PV: CPL P1.0 ;1ms定时时间到,P1.0输出信号取反,形成方波 MOV TL0,#18H ; 重新装入初值 MOV TH0,#0E0H SJMP LOOP
本章结束
当作为定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12
分频后得到的,即每个机器周期使计数器的数值加1 。 当用作对外部事件计数时,计数脉冲来自输入引脚T0(P3.4)或T1
(P3.5),最高 计数频率为晶振频率的1/24。
定时器/计数器结构图
P3.5(T1)
P3.4 (T0 )
T0
T1
TH1
模式2 (M1M0=10) :可以自动重置初值的8位定时器/计数器。TL0计
数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新 装载到TL0中。这里,16位计数器被拆成二个,TL0用作8位计数器,TH0用 以保护初值。
•用于定时工作模式时,其定时时间为 t=(28-初值)×振荡周期×12 •用于计数工作方式时,最大计数长度(TH0初值=0)为28=256(个外部脉冲) •这种工作模式可省去用户软件中重装常数的语句,并可产生相当精确的定 时时间,特别适于串行口波特率发生器。
第7章 定时器/计数器
本章主要内容
7.1 7.2 7.3 7.4 7.5 概述 MCS-51定时器/计数器结构 计数器方式寄存器和控制寄存器 定时器/计数器的工作方式 定时器/计数器的应用
7.1 概述
MCS-51单片机内部共有两个16位可编程的定时器/计数器,定时器0和 定时器1,它们既有定时功能又有计数功能。
TL1
TH 0
TL 0
8051
TCON
TMOD
7.3 与计数器有关的特殊功能寄存器
与计数器有关的特殊功能寄存器有3个:TMOD,TCON,IE 工作模式寄存器—TMOD(89H) TMOD用于控制计数器0和计数器1的工作模式,其各 位的定义: D7 GATE D6
C /T
D5 D4 M1 M0
定时器/计数器的工作方式由程序来设置,当它工作在定时方式时,计 数脉冲来自单片机内部;当它工作在计数方式时,计数脉冲来自外部。
7.2 MCS-51定时器结构
8051有2个16位的计数器(其中计数器1由 TH1和TL1组成,计数器0
由 TH0和TL0组成)。计数器的工作都由特殊功能寄存器TMOD和 TCON所控制。
【例7-3】记录T0(P3.4)引脚上的脉冲数,记满100个脉冲,从P1.0
输出一个正脉冲脉冲。请编程实现该功能。 解:首先选计数器0为模式2,外部事件计数方式。 计数初值为 256-100=156=9CH 源程序如下: START: MOV TMOD, #06H ;设置计数器0为模式2。外部计数方式 MOV TH0, #9CH ; 计数器0初值 MOV TL0, #9CH CLR P1.0 ;初始化P1.0=0 SETB TR0 ;启动计数器0 LOOP: JBC TF0, L1 ;查询溢出标志,TF0=1时转移 SJMP LOOP ; TF0=0时,等待 L1: CPL P1.0 ;利用取反指令,输出脉冲前沿 NOP CPL P1.0 ;利用取反指令,输出脉冲后沿 LJMP START