stc89c52单片机定时器T2输入捕获

时间: 2023-09-24 18:14:30 浏览: 136
STC89C52单片机的定时器T2可以用来实现输入捕获功能。输入捕获是指在外部信号的上升沿或下降沿触发定时器,记录定时器的值,以实现对外部信号的精确计时。 输入捕获的实现步骤如下: 1. 设置T2为捕获模式,可以选择上升沿或下降沿触发捕获。 2. 在T2中断服务程序中,读取捕获寄存器的值,即可得到输入信号的高电平或低电平时间。 3. 根据需要,可以将输入信号的时间转换为需要的单位,例如秒、毫秒等。 下面给出一个输入捕获的示例代码: ```c #include <STC89C5xRC.H> unsigned int high_time; // 高电平时间 unsigned int low_time; // 低电平时间 unsigned int input_freq; // 输入信号频率 // T2中断服务程序 void T2_ISR() interrupt 5 { static unsigned char capture_flag = 0; // 捕获标记 static unsigned int capture_value = 0; // 捕获值 if (capture_flag == 0) // 第一次捕获到上升沿 { capture_value = TH2 * 256 + TL2; // 记录捕获值 capture_flag = 1; // 设置捕获标记为1 TR2 = 0; // 停止T2计数 TH2 = 0; // 清零定时器高字节 TL2 = 0; // 清零定时器低字节 TF2 = 0; // 清除T2中断标志位 TR2 = 1; // 重新启动T2计数 } else // 第二次捕获到下降沿 { high_time = capture_value; // 记录高电平时间 low_time = TH2 * 256 + TL2; // 记录低电平时间 input_freq = 1000000 / (high_time + low_time); // 计算输入信号频率 capture_flag = 0; // 捕获标记清零 TR2 = 0; // 停止T2计数 TH2 = 0; // 清零定时器高字节 TL2 = 0; // 清零定时器低字节 TF2 = 0; // 清除T2中断标志位 TR2 = 1; // 重新启动T2计数 } } void main() { TMOD = 0x10; // T1为16位定时器,T2为捕获模式 TH1 = 0xFC; // 定时1ms TL1 = 0x18; TH2 = 0; // 清零定时器高字节 TL2 = 0; // 清零定时器低字节 TR1 = 1; // 启动T1计数 ET2 = 1; // T2中断使能 EA = 1; // 总中断使能 while(1); } ``` 在上述代码中,我们使用了定时器T1来产生一个1ms的中断,在T2中断服务程序中实现输入捕获的功能。当T2捕获到上升沿时,记录捕获值,并设置捕获标记为1;当T2捕获到下降沿时,计算高电平时间、低电平时间和输入信号频率,并清零捕获标记。在主函数中,启动T1计数、使能T2中断和总中断。

相关推荐

最新推荐

recommend-type

基于stc89c52单片机的温控风扇.docx

实现4位数码管上显示温度,ds18b20温度传感器实时采集温度,由单片机最小系统开发板控制L289n驱动5v顺源风扇实现转动。挡为3档,一档:25℃下风扇停止转动,25~30℃之间风扇轻微转动,30℃以上风扇快速转动。
recommend-type

基于STC89C52单片机的智能红外遥控系统

基于STC89C52单片机的智能红外遥控系统 毕业设计论文 包含了 LCD12864 DS1302 DS18B20 HS0038 继电器
recommend-type

基于STC89C52的智能全自动洗衣机控制系统设计

为了降低全自动洗衣机的运行功耗、提高运行的稳定性、降低制造成本以及更方便的操作,设计了一种基于STC89C52单片机的全自动洗衣机控制系统。该控制系统由蓝牙部分、红外热释部分、LCD1602液晶部分和直流电机等组成...
recommend-type

STC89C52RC单片机芯片资料

描述了关于芯片STC89C52RC的资料,包括引脚说明和管脚等,希望能帮到大家。
recommend-type

STC89C52单片机简介

STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。