单片机定时器讲解和实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、计数器是什么?
  • 二、单片机定时器结构
    • 2.1***两个8位如何合成16位,16位如何分成两个8位***
    • 2.2 计数器的位数组合?
    • 2.3 定时功能和计数功能?
      • 2.3.1定时功能
      • 2.3.2 计数功能
  • 三、使用步骤
    • 3.1 定时10us
    • 3.2 定时1s怎么办?
  • 四、参考程序
    • 1.定时1s
    • 2.读入数据
  • 五、思考
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

日常生活中,哪里用到时间?
定时是如何实现的?
单片机如何实现定时?


提示:以下是本篇文章正文内容,下面案例可供参考

一、计数器是什么?

推荐观看基础视频

及其巧妙的设计!让几个简单的元器件实现计数!CPU是如何实现计数的!计数器的工作原理!

https://www.bilibili.com/video/BV1D3411v7jP/?spm_id_from=333.337.search-card.all.click

二进制计数器

https://www.bilibili.com/video/BV18K4y177Xx/?spm_id_from=333.337.search-card.all.click

入坑单片机 – [12_1]定时器工作原理

https://www.bilibili.com/video/BV1MY4y1u7eY/?spm_id_from=333.337.search-card.all.click

二、单片机定时器结构

在这里插入图片描述

2.1两个8位如何合成16位,16位如何分成两个8位

unsigned char h0 ,l0  //两个8位
unsigned int t16;    //16位
t16=h0*256+l0;
h0=t16/256;   // 高八位   1000/256  =3
l0=t16%256;   //低八位    1000%256  =232 =0xe8    

在这里插入图片描述

2.2 计数器的位数组合?

在这里插入图片描述

2.3 定时功能和计数功能?

2.3.1定时功能

在这里插入图片描述

2.3.2 计数功能

在这里插入图片描述

三、使用步骤

3.1 定时10us

  • 1.定时功能
  • 2.确定计数器位数,16位,装初值 65526

在这里插入图片描述

TMOD=0X01;  //不能位寻址  M1=0 不对的

假设装0, 0 1 2 3 4 5 6 7 8 9
方法1: 有可能会错过

while(1)
{
	t16=TH0*256+TL0
	if(t16==9)
	{
		
	}
}

方法2:
中断

65536-10=65526;
TH0=65526/256;
TL0=65526%256;

t就是设定的定时us 数,注意目前是12MHz
t的范围 0 - 65535 1-65536us 够1s吗?
TH0=(65536-t)/256;
TL0=(65536-t)%256;

  • 3.开启定时器
    在这里插入图片描述
TR0=1;
  • 4.配置中断
ET0=1;
EA=1;
PT0=0;

  • 5.中断服务函数
void timer0() interrupt 1
{

   TH0=65526/256;
   TL0=65526%256;
   LED=!LED;
}

3.2 定时1s怎么办?

t的范围 0 - 65535 1-65536us 够1s吗?
TH0=(65536-t)/256;
TL0=(65536-t)%256;

解决方法:50ms溢出一次,进一次中断

放一个变量num

num=20
20*50=1000ms=1s

修改代码

...
unsigned char num
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;


void timer0() interrupt 1
{
	
	TH0=(65536-50000)/256;//
    TL0=(65536-50000)%256;// 必须要重新装,否则从0计
	num++;
	if(num==19)
	{
		num=0;
		LED=!LED;
    }
  
}
...







四、参考程序

1.定时1s

代码如下(示例):

#include "reg51.h"

sbit LED=P2^0;
unsigned char num;
void main()
{

	TMOD=0X01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	
	ET0=1;
	EA=1;
	PT0=0;
	
	TR0=1;
	
	
	while(1)
	{
	
	
	
	}
}

void timer0() interrupt 1
{
	
	TH0=(65536-50000)/256;//
    TL0=(65536-50000)%256;// 必须要重新装,否则从0计
	num++;
	if(num==19)
	{
		num=0;
		LED=!LED;
    }
  
}


2.读入数据

代码如下(示例):



五、思考

    1. 使用按键改变定时时间 按键1 +0.5s
    1. 按键2 -0.5s
    1. 时间范围 0.5-5s

总结

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

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

相关文章

C# OpenCvSharp 基于直线检测的文本图像倾斜校正

效果 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenCvSharp_基于直线检测的文本图像…

基于若依的ruoyi-nbcio流程管理系统增加读取节点扩展属性的方法

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 我们的在流程设计器里会根据需要再不同的节点增加扩展属性,如何动态读取这些扩展属性&#xff…

一文了解芯片测试项目和检测方法 -纳米软件

芯片检测是芯片设计、生产、制造成过程中的关键环节,检测芯片的质量、性能、功能等,以满足设计要求和市场需求,确保芯片可以长期稳定运行。芯片测试内容众多,检测方法多样,今天纳米软件将为您介绍芯片的检测项目都有哪…

下载并安装DevEco Studio 3.1,初尝鸿蒙编程

摘自华为官网 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发,提供了代码智能编辑、低代码开发、双向预览等功能,以及轻量构建工具DevEco Hvigor 、本地模拟器,持续提升应用及服务开发效率。 下载 官网下载地址 HUAWEI…

取暖器/暖风机上架 亚马逊美国站UL1278测试标准要求

美国是一个对安全要求非常严格的国家,美国本土的所有电子产品生产企业早在很多年前就要求有相关检测。而随着亚马逊在全球商业的战略地位不断提高,境外的电子设备通过亚马逊不断涌入美国市场。“为保证消费者得安全,亚马逊始终强调带电得产品…

CSRF 漏洞验证

CSRF 漏洞验证 环境准备: dvwa csrf 为例 burpsuite 工具 dvwa靶场(CSRF) 方法一: 1.修改密码抓包 这里是为了理解先抓包查看修改密码时的数据 GET /dvwa_2.0.1/vulnerabilities/csrf/?password_newpassword&password_con…

粉够荣获淘宝联盟区域理事会常务理事,携手共铸淘客新生态

淘宝联盟区域理事会于2021年成立,首届成立成都、广州、武汉,服务近2000个领军淘宝客企业,作为区域生态与官方交流重要枢纽,理事会举办近百场交流分享会,带动淘客跨域跨业态交流成长。 2023年9月7日第二届淘宝联盟理事…

将ChatGPT集成在AR中,Snap玩出了新花样!

著名社交媒体平台Snap在官网宣布,在最新的AR开发平台Lens Studio 5.0版本中,集成ChatGPT功能。 在ChatGPT的帮助下,开发人员可以创建更多有趣、科普、对话、创意的Snapchat镜头,例如,通过ChatGPT创建无限测验和随机生…

双十一电视盒子哪个牌子好?测评工作室整理口碑电视盒子排名

在挑选电视盒子的时候,新手朋友们不知道从何下手,最近很多粉丝评论想要我们分享双11电视盒子推荐,于是我们根据用户的评价整理了目前口碑最好的电视盒子排名,给不懂电视盒子哪个牌子好的朋友们做个参考。 TOP 1、泰捷WEBOX WE40S电…

SpringBoot项目中ModelMapper配置以及使用

这里总结一下ModelMapper的使用方式,供大家参考 前言 项目中对象与对象赋值转换使用的频率非常的高,比如数据库表实体对象(Entity)与业务类对象(Model)之间的赋值传递,或者模型对象(Model)与视图对象(View…

2023数字科技生态大会-数字安全论坛 学习笔记

监管合规->价值创造的方向,在安全领域的发展方向-安全运营服务型 ICT->数字->数据 数字安全:网络安全数据安全 传统信息化以计算为核心,数字化以数据为核心 数字安全技术发展十大趋势: 一、 数字安全技术政策环境将不…

问题 C: Oil Deposits(DFS+类并查集)

核心部分: (发现时继续深度搜索,同时将该->改为 *(即田改为空)) (使所有相连的的改为空) 相当于统计了一个集合 统计进行DFS的次数(即为集合个数)&…

一站式解决文件上传与管理难题,JVS低代码平台助力企业数字化升级

在数字化时代,文件上传与管理功能已成为各类应用程序的标配。为了满足用户在不同场景下的多样化需求,JVS低代码表单引擎中配置了灵活的文件上传组件。通过该组件,用户可以轻松实现文件的上传、管理和查看,同时还能够根据具体需求进…

常用网络命令ping、arp、tracert、route的详细用法,弄懂立马成大神

你们好,我的网工朋友。 做网工,你遇到最多的问题是啥?大部分人的回答都是网络故障吧。 所以有很多朋友多次问到,如何检测网络故障和对网络进行基础的操作。比如:网络经常掉线、网络时好时坏,ip地址冲突、…

芯片设计工程师必备基本功——《设计与验证:Verilog HDL》

Verilog HDL 作为两大硬件描述语言之一,拥有很大的用户群。据调查,目前美国有 90%左右的 IC 设计人员使用 Verilog. 在中国,大概再 50% 左右的人在使用 Verilog 。 大量高校毕业生和部分软件设计人员正在不断涌入这个领域。要想尽快在 IC设计…

VsCode 安装 GitHub Copilot插件 (最新)

##在线安装: 打开Vscode扩展商店,输入 "GitHub Copilot " ,选择下载人数最多的那个。(这个是你写一部分代码或者注释,Ai自动帮你提示/补全代码),建议选择这个 注意下面有个和他类似的 "GitHub Copilo…

工业网关贴牌厂家有哪些?工业网关OEM厂家怎么选?

随着物联网技术的不断发展,市面上不断涌现出各种工业物联网厂商。中小型物联网企业苦于有技术,但是生产能力受限,需要寻找OEM代工厂家。但是在如何选择OEM代工厂家时又犯了难。工业网关类产品属于技术密集型产品,对厂家的生产能力…

微信开发者工具如何使用

首先是下载微信开发者工具 链接: https://pan.baidu.com/s/1ri-fRCUQsz9vLxbTqtdPUQ 提取码: 8rhn 复制这段内容后打开百度网盘手机App,操作更方便哦 安装完打开就是以下界面 接下来进入正题 第一步新建或导入 新建 获取AppID 第一步:通过微信公众平…

线性回归,核技巧和线性核

在这篇文章中,我想展示一个有趣的结果:线性回归与无正则化的线性核ridge回归是等 价的。 这里实际上涉及到很多概念和技术,所以我们将逐一介绍,最后用它们来解释这个说法。 首先我们回顾经典的线性回归。然后我将解释什么是核函…