当前位置:首页 > 单片机 > 单片机
[导读]   方式2是一个可以自动重新装载初值的8位计数器/定时器。这种工作方式可以省去用户程序中重新装入初值的指令。    当AT89S51的某个定时器/计数器不使用时,可为AT89S51扩展一个负跳沿触发的外部

  方式2是一个可以自动重新装载初值的8位计数器定时器。这种工作方式可以省去用户程序中重新装入初值的指令。
  
  当AT89S51的某个定时器/计数器不使用时,可为AT89S51扩展一个负跳沿触发的外部中断源。
  
  例1:扩展一个负跳沿触发的外部中断源,把定时器/计数器T0引脚作为外部中断请求输入端,溢出标志TF0作为外部中断请求标志。
  
  基本思想:当某一定时器/计数器被设置为方式2(自动装入常数方式)计数工作模式,计数器TH0、TL0初值均为0FFH,并允许T0中断,总中断开放。当T0引脚电平发生负跳变时,T0计数器溢出,TF0置1,从而向单片机发出中断请求。
  
  初始化程序如下:
  
  程序说明:当连接在P3.4(T0引脚)的外部中断请求输入线上的电平发生负跳变时,TL0加1,产生溢出,TF0置1,向单片机发出中断请求,同时TH0的内容0FFH送TL0,即TL0恢复初值0FFH,这样,P3.4脚相当于一个跳沿触发的外部中断请求源输入端。对P3.5也可做类似处理。
  
  例2:当T0 (P3.4)引脚上发生负跳变时,作为Pl.0引脚产生方波的启动信号。则开始从P1.0引脚上输出一个周期为1 ms的方波,如下图所示(假设系统时钟为6MHz)。
  
  基本思想:T0设置为方式1计数器模式,初值设为FFFFH。当外部计数输入端T0(P3.4)发生一次负跳变时,计数器T0加1且溢出,溢出标志TF0置1,向CPU发出中断请求,此时T0相当于一个负跳沿触发的外部中断源。进入T0中断程序后,把F0标志置1,说明T0引脚上已接收过负跳变信号。T1定义为方式2定时器模式。在T0引脚产生一次负跳变后,启动Tl每500 μs产生一次中断,在中断服务子程序中对P1.0求反,使P1.0产生周期l ms的方波。由于方式2省去了用户程序中重新装入初值的指令,所以可产生精确的定时时间。
  
  (1)计算Tl的初值。设T1的初值为X,则
  
  (2)程序设计。参考程序如下:
  
  程序说明:当单片机复位时,从0000H跳向主程序MAIN处执行程序。其中调用了对T0、T1初始化子程序PT0M2。子程序返回后执行标号LOOP处指令,循环等待T0引脚上负脉冲的到来。由于负脉冲到来的标志位F0的复位初始值为0,所以程序就在标号LOOP处循环等待。当T0(P3.4)引脚上发生负跳变时,由于T0计数溢出,则跳向T0中断服务子程序。此时停止T0计数,并把T0引脚接收过负脉冲的标志F0置1。当中断返回时,由于F0已被置1,则程序跳出LOOP处的循环等待。此时执行指令来允许Tl中断,并启动Tl定时,然后执行“AJMPHERE”指令,循环等待,等待Tl的500 μs定时中断到来。当Tl的500 μs定时中断产生时,则进入Tl的中断服务子程序ITIP,把P1.0脚上的电平取反。由于方式2是初值可以自动重新装载,从而省去对Tl重新装入初值06H的指令。中断返回后,到“AJMP HERE”指令处继续等待Tl的500μs定时中断。如此重复,即可得到上图所示的波形。
  
  例3:利用定时器Tl的方式2对外部信号计数,要求每计满100个数,将P1.0取反。
  
  本例是方式2计数模式的应用举例。
  
  (1)选择工作方式。外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器便加1,每输入100个脉冲,计数器将产生溢出中断,在中断服务程序中将P1.0取反一次。
  
  Tl工作在方式2的方式控制字为TMOD=60H。不使用T0时,TMOD的低4位可任取,但不能使T0进入方式3,这里取全0。
  
  (2)计算T1的初值

因此,TL1的初值为9CH,重装初值寄存器TH1=9CH。
  
  (3)程序设计。参考程序如下:
  
  程序说明:由于Tl的中断服务子程序只有两条指令,不超过8个字节,所以进入Tl中断服务程序入口后,直接就执行这两条指令,而没有选择再跳转。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek推出新一代无刷直流电机 (BLDC) 控制专用单片机 HT32F65233。采用 Arm® Cortex®-M0+ 低功耗内核, 具备 2.5 V~5.5 V 宽电压操作。系统电压为 5 V 时,可获得更高的...

关键字: BLDC单片机 电机驱动 计数器

单片机定时器通过晶振频率来产生精准的计数脉冲,从而实现微秒级别的时间控制。 单片机定时器依托于一个稳定的计数器,该计数器与单片机上的晶振部件相连。晶振经过12分频后,为单片机提供稳定且精准的1MHZ脉冲。由于晶振的频率极...

关键字: 单片机 定时器

编码器‌是一种传感器,主要用于测量旋转运动的角度、角速度和位移等参数。常见的编码器类型包括增量式编码器和绝对值编码器,前者通过检测脉冲的增加或减少来测量旋转方向和距离,后者则直接输出当前的绝对位置信息‌。

关键字: 编码器‌ 定时器

一款语音控制的番茄时间定时器,内置Seeed Studio XIAO ESP32S3感测和圆形显示。用免提时间管理保持高效!

关键字: 定时器 ESP32S3 语音控制

你可能会想象他们使用先进的人工智能相机来计算访客人数,但实际上,一个简单的基于传感器的系统就能有效地完成这项工作!通过在入口和出口点放置红外传感器,这些系统检测移动方向并保持准确计数。不需要花哨的技术。

关键字: Arduino IR传感器 计数器

【2025年3月20日, 德国慕尼黑讯】全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码: IFNNY)近日宣布,其旗下ModusToolboxTM开发平台中的AIROC™...

关键字: MCU 物联网 定时器

该项目利用OLED显示器和两个输入开关,允许用户增加屏幕上显示的两个数字(10和单位)。代码由设置和循环函数组成,用于管理显示和开关输入。

关键字: OLED 显示器 计数器

众所周知,说到延时,很多人都会想到用软件件来实现,比如定时器之类的。今天就来说说用硬件来实现定时的方式,虽说没有那么准,但是有些场合还是用得到的。

关键字: CD4060 定时器

如果定时器的重装值和分频设置不正确,会导致PWM输出的频率和占空比不准确,从而产生误差‌1。

关键字: 定时器 分频

在数字电路设计中,计数器是一种基础的数字电路组件,用于记录并显示脉冲信号的数量或频率。4进制计数器,即模4计数器,是一种特殊的计数器,其计数范围从0到3,共4个状态。本文将深入探讨如何结合D触发器与寄存器来实现一个4进制...

关键字: D触发器 寄存器 计数器
关闭