单片机定时器讲解和实现

news2024/9/21 16:30:59

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

文章目录

  • 前言
  • 一、计数器是什么?
  • 二、单片机定时器结构
    • 2.1***两个8位如何合成16位,16位如何分成两个8位***
    • 2.2 计数器的位数组合?
    • 2.3 定时功能和计数功能?
      • 2.3.1定时功能
      • 2.3.2 计数功能
  • 三、使用步骤
    • 3.1 定时10us
    • 3.2 定时1s怎么办?
  • 四、参考程序
    • 1.引入库
    • 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.引入库

代码如下(示例):


2.读入数据

代码如下(示例):



总结

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

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

相关文章

用python将csv表格数据做成热力图

python的开发者为处理表格和画图提供了库的支持,使用pandas库可以轻松完成对csv文件的读写操作,使用matplotlib库提供了画热力图的各种方法。实现这个功能首先需要读出csv数,然后设置自定义色条的各种属性如颜色,位置,…

[Android]新建项目使用AppCompatActivity后运行闪退

报错 日志: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. FATAL EXCEPTION: main Process: com.example.gatestdemol, PID: 26071 java.lang.RuntimeException: Unable to start a…

Maya v2024(3D动画制作软件)

Maya 2024是一款三维计算机图形动画制作软件。它被广泛应用于电影、电视、游戏、动画等领域中,用于创建各种三维模型、场景、特效和动画。 以下是Maya的主要特点: 强大的建模工具:Maya提供了各种建模工具,如多边形建模、NURBS建模…

VsCode 安装 GitHub Copilot插件 (最新)

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

Linux系统编程——其他类型数据写到文件并读取

函数原型解读 由前面章节可知,对文件的操作都是基于字符串,但对文件的操作并不仅限于此,这个时候需要重新审视几个文件操作的函数原型,函数原型如下: ssize_t write(int fd, const void *buf, size_t count); ssize_…

月入8.3k,新传文科生转行5G网络优化工程师,张雪峰:这专业,报考就打晕…

新闻传播专业的就业是什么样子的? 考研名师张雪峰说:如果我是家长的话,孩子非要报新闻学,我一定会干一个事,就是把他打晕,然后给他报个别的。 新闻传播专业似乎已经成了一个备受争议的话题,就业…

测试用例之翻页功能

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

《Linux从练气到飞升》No.26 Linux中的线程控制

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…

目标检测问题总结

目标检测问题总结 目标检测二阶段和一阶段的核心区别目标检测二阶段比一阶段的算法精度高的原因1. 正负样本不平衡2.样本的不一致性 如何解决目标检测中遮挡问题如何解决动态目标检测FPN的作用如何解决训练数据样本过少的问题IOU代码实现NMS代码实现NMS的改进思路 目标检测二阶…

DBC文件解析成C语言

1. 安装python环境 例如Windows安装python3.10版本 下载地址https://cdn.npmmirror.com/binaries/python/3.10.9/python-3.10.9-amd64.exe 2. 安装cantools函数库 打开CMD窗口后,输入pip install cantools 3. 执行dbc文件转为C语言 注意:c文件和…

时间序列预测(2) — 时间序列预测数据集

目录 数据集1:GEFCom2014负荷数据 数据集2:爱奇艺用户留存预测挑战赛数据集 数据集1:GEFCom2014负荷数据 数据集下载: 百度网盘:链接:https://pan.baidu.com/s/1PgCWHx8vYUfGB9UGtCmaVA?pwdktn0 提取码…

儿童HPV感染有哪些症状?皮肤性病科谭巍主任讲述五大要点

HPV,人乳头瘤病毒,是一种常见的感染性强的病毒,相比成人儿童也会感染HPV。家长及时了解儿童感染HPV的症状对于早期发现和治疗至关重要。为了帮助家长们更好预防儿童HPV感染,今日特邀劲松中西医医院皮肤性病科主任谭巍详细介绍儿童…

MoveIt 机械臂运动 学习 01-MoveIt 初次见面

ROS中有针对机器人进行移动操作的一套工具——MoveIt!。在主页http://moveit.ros.org 上 包含使用MoveIt!的文档、教程、安装说明以及多种机械臂(或机器人)的示例演示,如一些 移动操作任务,包括抓握、拾取和…

前端框架图谱

以上图谱基于个人经验总结,比如小程序、第三方平台等未在其中有所体现

Web安全之PHP的伪协议漏洞利用,以及伪协议漏洞防护方法

一、背景 今天介绍一个比较冷门的知识,只有在PHP环境中存在的伪协议漏洞,那么什么是PHP伪协议呢?PHP伪协议事实上就是支持的协议与封装协议。可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议…

sqlmap requires ‘python-pymysql‘ third-party library

使用sqlmap进行udf提权报错: [14:06:04] [CRITICAL] sqlmap requires python-pymysql third-party library in order to directly connect to the DBMS MySQL. You can download it from https://github.com/PyMySQL/PyMySQL. Alternative is to use a package pyt…

[WSL] 安装MySQL8

安装版本 mysql --version mysql Ver 8.0.35-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))安装步骤 sudo apt-get update sudo apt-get upgradesudo apt-get install mysql-server apt install mysql-client apt install libmysqlclient-devsudo usermod -d /var/lib/m…

excel中通过ROW函数返回引用的行号

例如,想引用B3的行号(行号应该是3): 鼠标点在想输入函数的单元格: 插入-》函数: 选择ROW函数: 点击“继续”,然后点击红框圈出来的按钮: 鼠标点击B3单元格&…

亚马逊鲲鹏系统能注册哪些国家的买家号

亚马逊鲲鹏系统全面支持12个站点:美国站点、加拿大站点、德国站点、英国站点、法国站点、意大利站点、西班牙站点、日本站点、印度站点、新加坡站点、澳大利亚站点、荷兰站点。 对于注册可以用手机号或者用邮箱进行注册,注册时自动模拟真人点击输入账号、…