单片机-定时器中断

1、相关知识

振荡周期=1/12us;     //振荡周期又称 S周期或时钟周期(晶振周期或外加振荡周期)。

状态周期=1/6us;

机器周期=1us;

指令周期=1~4us;

①51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器/计数器。

②定时器/计数器和单片机的CPU 是相互独立的。定时器/计数器工作的过程是自动完成的,不需要CPU 的参与。

③单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加 1

2、单片机定时/计数器结构    T0—P3.4    T1—P3.5

定时/计数器的实质是加 1 计数器(16 位),由高 8 位和低 8 位两个寄存器 THx 和TLx组成。它随着计数器的输入脉冲进行自加 1,也就是每来一 个脉冲,计数器就自动加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求(定时 /计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到; 如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。

51 单片机定时器/计数器内部结构如下所示 

2.1、工作方式寄存器 TMOD

工作方式寄存器 TMOD 用于设置定时/计数器的工作方式,低四位用于 T0,高四位用于 T1。其格式如下:

GATE = 0 时:只需要用软件使 TCON 中的 TR0 或 TR1 为 1,就可以启动定时/计数器工作;

GATE=1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚 INT0/1 也为高电平 时,才能启动定时/计数器工作。

C/T =0 为定时模式;     C/T =1 为计数模式

定时器——方式1       串口通信——方式2

2.2、控制寄存器 TCON

TCON 的低 4 位用于控制外部中断。TCON 的高 4 位用于控制定 时/计数器的启动和中断申请。

TF0,TF1:定时/计数器中断请求控制位,当计数溢出时设为1,响应中断后设为0

TR0,TR1:定时/计数器中断允许标志

3、单片机定时/计数器的工作方式

3.1 方式0        计数初值与计数个数的关系为:X=2 (13次方)-N

方式 0 为 13 位计数,由 TL0 的低 5 位(高 3 位未用)和 TH0 的 8 位组成。 TL0 的低 5 位溢出时向 TH0 进位,TH0 溢出时,置位 TCON 中的 TF0 标志,向 CPU 发出中断请求。

 GATE=0 时,仅由TR0 控制与门的开启;GATE=1时,由外中断引脚信号INT0 和 TR0 共同控制与门的开启

3.2 方式1(定时器使用)       计数初值与计数个数的关系为:X=2 (16次方)-N。

方式 1 的计数位数是 16 位,由 TL0 作为低 8 位,TH0 作为高 8 位

3.3 方式2 (串口通信使用)     计数初值与计数个数的关系为:X=2 (8次方)-N。

方式 2 为自动重装初值的 8 位计数方式。工作方式 2 特别适合于用作较精确的脉冲信号发生器。

3.4 方式3

方式 3 只适用于定时/计数器 T0,定时器 T1 处于方式 3 时相当于 TR1=0, 停止计数。工作方式 3 将 T0 分成为两个独立的 8 位计数器 TL0 和 TH0。

4、定时器配置

①对 TMOD 赋值,以确定 T0 和 T1 的工作方式,如果使用定时器 0 即对 T0 配 置,如果使用定时器 1 即对 T1 配置。

②根据所要定时的时间计算初值,并将其写入 TH0、TL0 或 TH1、TL1。

③如果使用中断,则对 EA 赋值,打开总定时器中断。

④使 TR0 或 TR1 置位,启动定时/计数器定时或计数

如果我们想定时 1ms 的初值是多少呢?1ms/1us=1000。也就是要计数 1000 个,初值=65535-1000+1 (因为实际上计数器计数到 65536(2 的 16 次方)才溢出,所以后面要加 1) =64536=FC18H,所以初值即为 THx=0XFC,TLx=0X18

以定时器 0 为例介绍配置定时器工作方式 1、设定 1ms 初值,开启定时器计数功能以及总中断,

void time0_init(void)

{

        TMOD|=0X01;//选择为定时器 0 模式,工作方式 1     0X01方式1    0X10——方式2

        TH0=0XFC; //给定时器赋初值,定时 1ms

        TL0=0X18;

        ET0=1;//选择使用定时器 0 中断允许

        EA=1;//打开总中断

        TR0=1;//打开定时器

}

定时器中断实验:通过定时器 0 中断控制 D1 指示灯间隔 1 秒闪烁

#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 ten_us){
    while(ten_us--);
}

sbit LED1=P2^0;

//初始化定时器0中断的函数
void time0_init(){
    TMOD|=0X01;//选择定时器 0 模式,工作方式 1  为了不干扰定时器1
    TH0=0XFC;//低8位  给定时器赋初值,定时1ms,相当于1000次脉冲
    TL0=0X18;//高8位
    ET0=1;//打开定时器 0 中断允许
    EA=1;//打开总开关
    TR0=1;//打开定时器   
}

/*

//初始化定时器1中断的函数
void time1_init(){
TMOD|=0X10;//选择为定时器 0 模式,工作方式 2
TH0=0XFC; //给定时器赋初值,定时 1ms
TL0=0X18;
ET0=1;//打开定时器 0 中断允许
EA=1;//打开总中断
TR0=1;//打开定时器,手动设置
}

*/

void main(){
    time0_init();
    while(1){  
    }
}

//定义定时器中断服务函数
void time0() interrupt 1{
    static u16 i=0;//静态变量,只初始化1次
    TH0=0XFC;
    TL0=0X18;
    i++;
    if(i==1000){

        //计时1s
        i=0;
        LED1=!LED1;        
    } 
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 如何传参xml调用接口获取数据

传参和返参的效果图如下: 传参: 返参: 代码实现: 1、最外层类 /*** 外层DATA类*/ XmlRootElement(name "DATA") public class PointsXmlData {private int rltFlag;private int failType;private String failMemo;p…

【C】编译与链接

在本文章里面,我们讲会讲解C语言程序是如何从我们写的代码一步步变成计算机可以执行的二进制指令,并最终执行的。C语言程序运行主要包括两大步骤 -- 编译和链接,接下来我们就来一一讲解。 目录 1 翻译环境和运行环境 2 翻译环境 1&#…

如何设计一个注册中心?以Zookeeper为例

这是小卷对分布式系统架构学习的第8篇文章,在写第2篇文章已经讲过服务发现了,现在就从组件工作原理入手,讲讲注册中心 以下是面试题: 某团面试官:你来说说怎么设计一个注册中心? 我:注册中心嘛&…

Vision Transformer模型详解(附pytorch实现)

写在前面 最近,我在学习Transformer模型在图像领域的应用。图像处理任务一直以来都是深度学习领域的重要研究方向,而传统的卷积神经网络已在许多任务中取得了显著的成绩。然而,近年来,Transformer模型由于其在自然语言处理中的成…

vue实现虚拟列表滚动

<template> <div class"cont"> //box 视图区域Y轴滚动 滚动的是box盒子 滚动条显示的也是因为box<div class"box">//itemBox。 一个空白的盒子 计算高度为所有数据的高度 固定每一条数据高度为50px<div class"itemBox" :st…

Vue指令(下)

Vue指令(下) 参考文献&#xff1a; Vue的快速上手 Vue指令上 文章目录 Vue指令(下)v-bindv-bind小案例v-forv-for小案例v-for中的keyv-model 结语 博客主页: He guolin-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们…

初学者关于对机器学习的理解

一、机器学习&#xff1a; 1、概念&#xff1a;是指从有限的观测数据中学习(或“猜 测”)出具有一般性的规律&#xff0c;并利用这些规律对未知数据进行预测的方法.机器学 习是人工智能的一个重要分支&#xff0c;并逐渐成为推动人工智能发展的关键因素。 2、使用机器学习模型…

Vue篇-05

5 vuex 5.1 vuex是什么 概念:专门在 Vue 中实现集中式状态(数据)管理的一个Vue 插件&#xff0c;对 vue 应用中多个组件的共享状态进行集中式的管理(读/写)&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任意组件间通信。Github 地址: https://github.com/vuejs/…

Vue3(elementPlus) el-table替换/隐藏行箭头,点击整行展开

element文档链接&#xff1a; https://element-plus.org/zh-CN/component/form.html 一、el-table表格行展开关闭箭头替换成加减号 注&#xff1a;Vue3在样式中修改箭头图标无效&#xff0c;可能我设置不对&#xff0c;欢迎各位来交流指导 转变思路&#xff1a;隐藏箭头&…

opencv的NLM去噪算法

NLM&#xff08;Non-Local Means&#xff09;去噪算法是一种基于图像块&#xff08;patch&#xff09;相似性的去噪方法。其基本原理是&#xff1a; 图像块相似性&#xff1a;算法首先定义了一个搜索窗口&#xff08;search window&#xff09;&#xff0c;然后在该窗口内寻找…

NineData云原生智能数据管理平台新功能发布|2024年12月版

本月发布 7 项更新&#xff0c;其中重点发布 2 项、功能优化 5 项。 重点发布 数据库 Devops - Oracle 非表对象支持可视化创建与管理 Oracle 非表对象&#xff0c;包括视图&#xff08;View&#xff09;、包&#xff08;Package&#xff09;、存储过程&#xff08;Procedur…

计算机网络 —— 网络编程(TCP)

计算机网络 —— 网络编程&#xff08;TCP&#xff09; TCP和UDP的区别TCP (Transmission Control Protocol)UDP (User Datagram Protocol) 前期准备listen &#xff08;服务端&#xff09;函数原型返回值使用示例注意事项 accpect &#xff08;服务端&#xff09;函数原型返回…

eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)

ACL实验&#xff08;Access Control List访问控制列表&#xff09;是一种基于包过滤的访问控制技术&#xff0c;它可以根据设定的条件对接口上的数据包进行过滤&#xff0c;允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…

PySide6基于QSlider实现QDoubleSlider

我在写小工具的时候&#xff0c;需要一个支持小数的滑动条。 我QSpinBox都找到了QDoubleSpinBox&#xff0c;QSlider愣是没找到对应的东西。 网上有好多对QSlider封装实现QDoubleSlider的文章。 似乎Qt真的没有这个东西&#xff0c;需要我们自行实现。 于是我也封装了一个&…

即插即用,无缝集成各种模型,港科大蚂蚁等发布Edicho:图像编辑一致性最新成果!

文章链接&#xff1a;https://arxiv.org/pdf/2412.21079 项目链接&#xff1a;https://ezioby.github.io/edicho/ 亮点直击 显式对应性引导一致性编辑&#xff1a;通过将显式图像对应性融入扩散模型的去噪过程&#xff0c;改进自注意力机制与分类器自由引导&#xff08;CFG&…

福建双色荷花提取颜色

提取指定颜色 HSV双色荷花代码验证 参照《OpenCV图像处理技术》 HSV 要用HSV的色调、饱和度和亮度来提取指定颜色。 双色荷花 农林大学金山校区观音湖 代码 import cv2 import numpy as npimgcv2.imread("./sucai6/hua.jpg") cv2.imshow("SRC",img) h…

关于重构一点简单想法

关于重构一点简单想法 当前工作的组内&#xff0c;由于业务开启的时间正好处于集团php-》go技术栈全面迁移的时间点&#xff0c;组内语言技术栈存在&#xff1a;php、go两套。 因此需求开发过程中通常要考虑两套技术栈的逻辑&#xff0c;一些基础的逻辑也没有办法复用。 在这…

【操作系统】课程 7设备管理 同步测练 章节测验

7.1知识点导图 它详细地展示了I/O系统的层次结构、I/O硬件和软件的组成以及它们的功能。下面是对图中内容的文字整理&#xff1a; I/O设备分类 按使用特性分类 输入设备&#xff1a;键盘、鼠标等输出设备&#xff1a;打印机、绘图仪等交互式设备&#xff1a;显示器等 按传输速率…

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫&#xff0c;也被称为“幸运猫”&#xff0c;是一种象征财富和好运的吉祥物&#xff0c;经常…

【Vue.js 组件化】高效组件管理与自动化实践指南

文章目录 摘要引言组件命名规范与组织结构命名规范目录组织 依赖管理工具自动化组件文档生成构建自动引入和文档生成的组件化体系代码结构自动引入组件配置使用 Storybook 展示组件文档自动生成 代码详解QA 环节总结参考资料 摘要 在现代前端开发中&#xff0c;组件化管理是 V…