单片机原理及应用:定时器与计数器中断

时间概念

中断结构

引脚 

TCON

TMOD

IE

IP


时间概念

在一般单片机中,有2个16位可编程的硬件计数模块T0和T1,我们称其为计数器或定时器,顾名思义,该模块可以实现定时和计数两种功能,其功能由软件控制和切换。实质这个定时器/计数器就是一个累加计数器,定时器的累加信号是由单片机内部振荡器的12分频信号产生,每过一个机器周期,定时器就加1,直至计满溢出结束;计数器就是对来自单片机外部的事件进行计数,外部计数事件由脉冲引入,单片机的P3.4(T0)和P3.5(T1)为外部计数脉冲输入端了,外部计数脉冲的频率不能高于晶振频率的1/24。

在上文中出现了几个时间概念,如时钟周期、晶振频率等,下面是这些概念的解释:

  • 晶振具有压电效应,即在晶片两极外加电压后晶体会产生变形,反过来如外力使晶片变形,则两极上金属片又会产生电压。如果给晶片加上适当的交变电压,晶片就会产生谐振,利用该特性,晶振可以提供较稳定的脉冲,我们将这个脉冲的频率称为晶振频率。
  • 时钟周期是由晶振电路决定的时钟控制信号的基本时间单位,它和晶振频率互为倒数。在一个时钟周期内,CPU仅完成一个最基本的动作。
  • 每12个时钟周期为1个机器周期,在1个机器周期内,CPU可以完成一个基本操作。每一条代码指令都可以分为几个机器周期,在每个机器周期完成取指令、读或写数据等基本操作。
  • 1个机器周期包括12个时钟周期,分6个状态:S1~S6,每个状态又分两拍:P1和P2。因此,一个机器周期中的12个时钟周期可以表示为S1P1、S1P2、S2P1、S2P2、……S6P2。
  • 以6MHz晶振频率为例,它的时钟周期为166.7ns,机器周期为2μs。

在使用定时器计数器时,通常需要先初始化定时器的各个参数,如预分频系数、计数模式等。然后,通过启动定时器,它会开始计时并不断递增计数器的值。当计数器的值达到设定的目标值时,可以触发相应的中断或执行一些其他操作。作为一类中断源,我们需要理解它的中断请求结构和设置方式。

中断结构

引脚 

由电路图可得,P3.4引脚与定时/计数器0相连,P3.5引脚与定时/计数器1相连,但是定时器依靠单片机内部晶振信号工作,所以这两个引脚实际上只用于计数工作。

TCON

位地址和名称与外部中断的控制寄存器相同,只是从低四位换成了高四位,这里对低四位的外部中断控制就不进行赘述了,感兴趣的朋友可以参照笔者先前的文章单片机原理及应用:中断系统结构与控制寄存器

地址88H8FH8EH8DH8CH8BH8AH89H88H
名称TCONTF1TR1TF0TR0IE1IT1IE0IT0

TF1和TF0位分别表示定时器1和定时器0的溢出标志位。当定时器溢出时,对应的溢出标志位会被置1,之后会向CPU发送执行命令请求,在接收请求后,由硬件或软件清零。

TR1和TR0位用于控制定时器1和定时器0的开始/停止操作。当TR1或TR0位被置1时,对应的定时器开始计数;当TR1或TR0位被清零时,对应的定时器停止计数。

TMOD

全称为工作方式控制寄存器,为定时器/计数器独有的控制方式。

地址D0HD7HD6HD5HD4HD3HD2HD1HD0H
名称TMODGATEC/TM1M0GATEC/TM1M0

高四位控制T1,低四位控制T0。

M1

M0

工作模式

描述

0

0

0

兼容8048单片机的13位定时器,THn8位和TLn5位组成一个13位定时器。

0

1

1

THnTLn组成一个16位的定时器。

1

0

2

8位自动重装模式,定时器溢出后THn重装到TLn中。

1

1

3

禁用定时器1,定时器0变成28位定时器。

下面对四种工作模式进行说明: 

工作方式0称为13位定时/计数器方式。它由16位定时器储存寄存器中的TL(0/1)的低5位和TH(0/1)的8位构成了13位的计数器,此时TL(0/1)的高3位未用。 当门控位GATE=0时,或门输出始终为1,与门被打开,由TR0控制定时/计数器的启动和停止。

工作方式1是一个由TH0中的8位和TL0中的8位组成的16位加1计数器。 方式1与方式0基本相似,最大的区别是方式1的加1计数器位数是16位。 

工作方式2是一个能自动装入初值的8位加1计数器,TH0中的8位用于存放定时初值或计数初值,TL0中的8位用于加1计数器。 加1计数器溢出后,硬件使TF0自动置1,同时自动将TH0中存放的定时初值或计数初值再装入TL0,继续计数。 

工作方式3分为两个独立的8位加1计数器TH0和TL0。TL0既可用于定时,也能用于计数;TH0只能用于定时。

需要注意定时器0有四种工作方式,而定时器1只有三种工作方式。这是因为在工作方式3下,T1的控制位TR1、TF1和中断源被T0占用,而T1无法反过来占用T0的资源。

在了解了工作方式后,我们需要对不同的工作方式赋予对应的初值。由于人的反应速度要远小于单片机的运行速度,即使是最大的定时器容量也只有不到0.1s,所以在程序中我们常用for循环多次重置初值来进行定时或计数,下面是一个举例,具体应用会发布在后续文章当中。

比如我们选用了一款晶振频率为12MHz的单片机,它的机器周期为1μs,要求每隔一秒执行一次程序,那我们可以先把1s分为10份或20份,每份就是100ms或50ms。之后我们选择合适的工作方式,在这里选用工作方式1,从零开始计数的话,工作方式1最大定时为65536μs,也就是六十多ms。根据就近原则,我们采取20次for循环,然后让定时器每50ms将溢出标志位置1。定时初值计算公式就是65536-50000=15536,再将15536/256=60……176,60转为二进制计入TH0为0011 1100,十六进制即0x3c;TL0为1011 0000,十六进制即0xb0。

IE

IE的设置与外部中断相同,将相应的使能位赋1即可开启定时器,要注意无论是外部中断还是定时器,都需要先将总开关EA赋1再进行设置。

地址A8HAFHACHABHAAHA8HA9H
名称IEEA/ESET1EX1ET0EX0

IP

IP的用法与IE类似,正确地赋值即可。

地址B8HBCHBBHBAHB9HB8H
名称IP///PSPT1PX1PT0PX0

以上就是51单片机中定时器/计数器的设置方法,如有遗漏之处,欢迎大家讨论纠正。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信道编码理论【信息论安全】

目录 一. 信道编码模型 二. 信道编码速率与错误译码率 2.1 信道编码速率 2.2 平均错误率 三. 信道容量 四. 小结 一. 信道编码模型 (1)消息 假定消息集合为M,如下: (2)编码 将消息m映射成码字&…

[VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充]

场景 在使用VSCode配置C的开发环境时《VisualStudioCode_C/C开发环境配置[1]》,编译时会发现找不到标准库的std::mutex和std::thread的声明,而这两个的头文件已经引入,什么情况? 无论如何MinGW都是Windows上验证开发C特性比较新的…

11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)

注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 注解开发的优点:提高开发效率 注解开发的缺点:在一定程度上违背了OCP原则,使用注解的开发的前提是需求比较固定,变动较小。 1 注解的注解称为元注解 自定义一个注解: package com.sunspl…

计算机毕业设计---SSH协会志愿者服务管理系统

项目介绍 该项目分为前后台,分为管理员与普通用户两种角色,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,志愿者管理,活动管理,捐赠管理,关于我们管理,友情链接管理,新闻类…

微服务-Gateway

案例搭建 官网地址 父Pom <com.alibaba.cloud.version>2.2.8.RELEASE</com.alibaba.cloud.version> <com.cloud.version>Hoxton.SR12</com.cloud.version> <com.dubbo.version>2.2.7.RELEASE</com.dubbo.version> <dependencyManagem…

阿里云独享型通用算力u1云服务器怎么样?通用算力型u1实例有什么优势?

在阿里云2024年的活动中&#xff0c;独享型通用算力u1云服务器是用户比较关注的云服务器&#xff0c;因为它的性能要比活动内的经济型e实例好&#xff0c;但是价格又比计算型c7、通用型g7等其他企业级实例的价格要便宜。那么&#xff0c;独享型通用算力u1云服务器到底怎么样呢&…

AirServer2024免费手机电脑高清投屏软件

AirServer 是适用于 Mac 和 PC 的先进的屏幕镜像接收器。 它允许您接收 AirPlay 和 Google Cast 流&#xff0c;类似于 Apple TV 或 Chromecast 设备。AirServer 可以将一个简单的大屏幕或投影仪变成一个通用的屏幕镜像接收器 &#xff0c;是一款十分强大的投屏软件。 它能够通…

哪种小型洗衣机好用?高性价比的小型洗衣机推荐

大型洗衣机作为家居必备小家电&#xff0c;对生活品质的提升十分显著&#xff0c;在很多人的认知中&#xff0c;这种大型洗衣机主要是用来清洁大件的衣服和外套的&#xff0c;不方便将内衣裤都放入到里面&#xff0c;内衣裤的材质和尺寸都是比较特殊&#xff0c;若是直接将其放…

当心这46个重要漏洞!微软发布1月补丁日安全通告

近日&#xff0c;亚信安全CERT监测到微软1月补丁日发布了针对48个漏洞的修复补丁&#xff0c;其中&#xff0c;2个漏洞被评为紧急&#xff0c;46个漏洞被评为重要&#xff0c;共包含10个权限提升漏洞&#xff0c;11个远程代码执行漏洞&#xff0c;3个欺骗漏洞&#xff0c;11个信…

vue 登陆禁止弹出保存密码框及禁止默认填充密码

οnfοcus“this.removeAttribute(‘readonly’);” readonly 初始化为只读&#xff0c;当聚焦时去掉只读属性&#xff0c;只读可以防止浏览器自动填充。 -webkit-text-security&#xff1a;指定要使用的形状来代替文字的显示 none 无。 circle 圆圈。 disc 圆形。 square 正方…

【数据库原理】(21)查询处理过程

关系型数据库系统的查询处理流程是数据库性能的关键&#xff0c;该流程涉及到将用户的查询请求转化成有效的数据检索操作。通常可以分为四个阶段:查询分析、查询处理、查询优化和查询执行&#xff0c;如图所示。 第一步&#xff1a;查询分析 这个阶段是整个查询处理的起点。数…

RT-DETR 更换主干网络之 ShuffleNetv2 | 《ShuffleNet v2:高效卷积神经网络架构设计的实用指南》

目前,神经网络架构设计多以计算复杂度的间接度量——FLOPs为指导。然而,直接的度量,如速度,也取决于其他因素,如内存访问成本和平台特性。因此,这项工作建议评估目标平台上的直接度量,而不仅仅是考虑失败。在一系列控制实验的基础上,本文得出了一些有效设计网络的实用指…

Axure rp 是什么软件?大厂设计师为你解答

Axure rp 是一个快速的原型设计工具&#xff0c;可以制作高度互动的 HTML 原型。设计者不仅可以使用 Axure 绘制线框图和原型&#xff0c;还可以在 Axure rp 中完成一系列的用户体验设计。本文将根据用户体验设计者的真实经验&#xff0c;从用户体验设计者的实际工作中触发 Axu…

C语言用函数指针实现计算器

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现目录函数&#xff1b; void menum() {//打印目录&#xff1b;printf("***********************************************\n");printf("***…

当使用WSL下载运行Docker可视化界面的镜像,使用报错

Traceback (most recent call last): File “app.py”, line 345, in root tk.Tk() File “/usr/lib/python3.8/tkinter/init.py”, line 2270, in init self.tk _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.T…

Python - 深夜数据结构与算法之 Heuristic Search

目录 一.引言 二.启发式搜索简介 1.BFS 广度优先 2.A* Search 3.估价函数 三.经典算法实战 1.Binary-Shortest-Path [1091] 2.Sliding-Puzzle [773] 四.总结 一.引言 Heuristic Search 启发式搜索&#xff0c;又名 A* 搜索&#xff0c;其不基于广度、也不基于深度而是…

Retrieval-Augmented Generation for Large Language Models: A Survey

PS: 梳理该 Survey 的整体框架&#xff0c;后续补充相关参考文献的解析整理。本文的会从两个角度来分析总结&#xff0c;因此对于同一种技术可能在不同章节下都会有提及。第一个角度是从整体框架的迭代来看&#xff08;对应RAG框架章节&#xff09;&#xff0c;第二个是从RAG中…

Tensorflow Lite从入门到精通

TensorFlow Lite 是 TensorFlow 在移动和 IoT 等边缘设备端的解决方案&#xff0c;提供了 Java、Python 和 C API 库&#xff0c;可以运行在 Android、iOS 和 Raspberry Pi 等设备上。目前 TFLite 只提供了推理功能&#xff0c;在服务器端进行训练后&#xff0c;经过如下简单处…

【开源】基于JAVA+Vue+SpringBoot的超市账单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统设计3.1 总体设计3.2 前端设计3.3 后端设计在这里插入图片描述 四、系统展示五、核心代码5.1 查询供应商5.2 查询商品5.3 新增超市账单5.4 编辑超市账单5.5 查询超市账单 六、免责说明 一、摘要 1.1 项目介绍 基于…

使用pygame.draw绘制基本图形

import pygame# 初始化pygame pygame.init()# 创建显示窗口 screen pygame.display.set_mode((640, 480)) pygame.display.set_caption("绘制基本图形")# 定义颜色 BLACK (0, 0, 0) WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)…