定时器的基本原理和应用

news2024/11/25 15:20:31

题目背景

利用51单片机的定时/计数器T0的模式1实现间隔定时,每隔1秒L1指示灯闪烁一下,也就是亮0.5秒,熄灭0.5秒;每隔10秒L8指示灯闪烁一下,也就是也就是亮5秒,熄灭5秒。

分析

计数初值。

定时/计数器,本质上就是计数器,计数到溢出时产生中断。作为计数器时,计数信号来源是周期性的内部时钟脉冲。作为定时器时,计数信号来源是非周期性的外部输入信号

51单片机一共有两个定时/计数器,T0和T1,均为16位的加法计数器。
高8位,THx,低8位,TLx。

1s = 1000ms
1ms = 1000us
1us = 1ns
51单片机内部采用12分频,如果采用12MHz的晶振,时钟脉冲是1us,最大定时时间为65535us ~ 65.5ms。
如果要定时10ms,需要给一个计数初值65535 - 10000 = 55535 = 0xd8ef,TH设置为0xd8,TL设置为0xef。也就是从55535开始计数,计数到溢出时产生中断信号,此时为10ms。

相关寄存器

除了TH和TL之外,还有TMOD寄存器和TCON寄存器。

TMOD

注意TMOD只能字节寻址

这里只需设置TMOD为0x01即可。

TCON

这里用到了TR0,来启动T0。

此外,还需要设置IE寄存器,因为和中断相关。

IE

代码

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char

// 用到的两个LED灯
sbit L1 = P0 ^ 0;
sbit L8 = P0 ^ 7;

// 控制HC138译码器选通信道
void HC138(uchar channel)
{
	switch(channel)
	{
		case 4:
			P2 = (P2 & 0x1f) | 0x80;
		break;
		case 5:
			P2 = (P2 & 0x1f) | 0xa0;
		break;
		case 6:
			P2 = (P2 & 0x1f) | 0xc0;
		break;
		case 7:
			P2 = (P2 & 0x1f) | 0xe0;
		break;
	}
}

void InitTimer0()
{
	TMOD = 0x01;
	TH0 = (65535 - 50000) / 256;
	TL0 = (65535 - 50000) % 256;
	
	ET0 = 1;
	EA = 1;
	// 由TR0来启动
	TR0 = 1;
}

uchar count = 0;
void ServiceTImer0() interrupt 1
{
	// 没有自动重装功能,需要重新写入计数初值
	TH0 = (65535 - 50000) / 256;
	TL0 = (65535 - 50000) % 256;
	
	count ++ ;
	if (count % 10 == 0)
	{
		L1 = ~L1;
	}
	
	if (count == 100)
	{
		L8 = ~L8;
		count = 0;
	}
}

void main()
{
	HC138(4);
	InitTimer0();
	while(1)
	{
		
	}
}

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

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

相关文章

《C++ Primer》第5章 语句

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 5.1 简单语句&#xff08;P154&#xff09; 在一个表达式的末尾加上 ; 就构成了表达式语句&#xff0c;其作用是执行表达式并丢弃结果。 空语句 由单独的 ; 构成的语句为空语句。空语句常用于语法上需要一…

Nuget 镜像源地址过期,腾旭镜像源地址替换

Nuget过期 国内镜像源地址ssl认证过期了。Nuget无法搜索&#xff0c;一直还原报错 解决方法&#xff0c;替换腾旭镜像源地址 tencent_mirrors https://mirrors.cloud.tencent.com/nuget/

婴幼儿腹泻的原因与应对

引言&#xff1a; 腹泻是婴幼儿常见的健康问题之一&#xff0c;尤其在早期生活阶段&#xff0c;由于他们的消化系统尚未完全发育&#xff0c;容易受到各种因素的影响。腹泻不仅给婴幼儿带来不适&#xff0c;还可能导致脱水和营养不良。因此&#xff0c;了解婴幼儿腹泻的原因是…

【LeetCode刷题笔记】排序

905. 按奇偶排序数组 解题思路&#xff1a; 1&#xff09;额外数组 两次遍历&#xff0c;第一遍将所有的 偶数 放到结果数组 res 的前面&#xff0c;第二遍将所有的 奇数 接着放到结果数组 res 的后面。也可以使用 对撞指针 往结果数组里存&#xff0c;在 一次遍历 内搞定。 2…

Ubuntu20.04 配置 yolov5_ros 功能包记录

文章目录 本文参考自博主源801,结合自己踩坑后修改 项目地址:https://github.com/mats-robotics/yolov5_ros 1.新建工作空间 新建一个工作空间 yolo_ros(名字可自定义),在 yolo_ros 下新建文件夹 src 并catkin_make进行编译 2. 安装相机驱动,可以选用较为主流的 usb_cam 或…

2024年杭州电子科技大学工商管理硕士/工程管理硕士联考网报指南

2024年MBA/MEM考试网上报名流程网报时间根据《2024年全国硕士研究生招生工作管理规定》要求&#xff0c;研招统考网上正式报名时间为2023年10月8日至10月25日&#xff0c;每天9:00—22:00。网上预报名时间为2023年9月24日至9月27日&#xff0c;每天9:00—22:00&#xff08;报名…

S5PV210裸机(四):按键中断

本文主要探讨轮询按键和中断安按键的相关知识。 按键 无按下&#xff0c;GPIO引脚处高电平&#xff0c;电路断开 按下&#xff0c;GPIO引脚接低电平&#xff0c;电路导通 SoC内部通过检测GPIO电平高低判断按键作为SoC的输入信号 按键响应 轮询…

IPETRONIK数据采集设备携手Softing Q-Vision软件致力于ADAS测试方案

一 背景 汽车ADAS技术是当下国内外的重点研究方向&#xff0c;且ADAS的发展水平和市场竞争力紧密相关&#xff0c;因此一套完善的ADAS测试方案对各整车厂而言非常重要。然而&#xff0c;国内ADAS测试却面临着很多阻碍&#xff0c;主要原因在于&#xff1a;相关测试设备昂贵&am…

关于LinkedBlockingQueue的offer的正确用法,如何保证阻塞

我们在做一些并发操作时&#xff0c;常常会使用到LinkedBlockingQueue 也会使用offer方法来往队列中插入数据 我们一直觉得使用offer后&#xff0c;当队列满了&#xff0c;新增加的元素会阻塞插入线程&#xff0c;然后一直等待到队列有空间后再插入。然而测试后发现并不是这样。…

7. Java本项目知识基础---上篇

Java本项目知识快速入门 1. idea项目打开、关闭、复制 正常关闭&#xff1a; 正常打开&#xff1a; 正常复制&#xff1a; 2. idea快捷键 保存&#xff1a;ctrls 撤销&#xff1a;ctrlz 还原&#xff1a;ctrlshiftz 复制:ctrlc 粘贴:ctrlv 快速复制粘贴:ctrld 删除行:c…

MySQL MVCC多版本并发控制机制原理详解

目录 一、前言二、MVCC解决了什么问题三、MVCC核心 Undo Log 和 Read View 介绍3.1、Undo Log&#xff08;日志版本链&#xff09;3.2、Read View&#xff08;一致性视图&#xff09;3.2.1、设计思路3.2.2、ReadView判断规则 四、数据准备五、举例探究MVCC机制5.1、例子执行流程…

直流负载箱的维护和保养方法有哪些?

直流负载箱的维护和保养方法主要包括以下几个方面&#xff1a; 日常要定期清洁负载箱的外壳和散热器&#xff0c;确保散热良好&#xff0c;避免灰尘积累影响散热效果。还要定期检查负载箱的连接器&#xff0c;确保连接良好&#xff0c;避免接触不良或松动导致故障。根据使用要求…

信创之国产浪潮电脑+统信UOS操作系统体验3:使用 visual studio code搭建Python开发环境

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 老猿原来在windows下开发python程序&#xff0c;要么使用python自带的IDLE&#xff0c;要么使用pycharm&#xff0c;IDLE用来开发很不方便&#xff0c;而pycharm对开发支持比较好&#xff0c;换成…

我做了一个简易P图(参数图)分析软件

P图(即参数图&#xff0c;Parameter Diagram)&#xff0c;是一个结构化的工具&#xff0c;帮助大家对产品更好地进行分析。 典型P图格式 P图最好是和FMEA软件联动起来&#xff0c;如国可工软的FMEA软件有P图分析这个功能。 单纯的P图分析软件很少&#xff0c;为了方便做P图分…

vue-1

一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 构建用户界面 的 渐进式 框架 …

检验样品数量

声明 本文是学习GB-T 586-2015 船用法兰铸钢止回阀. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 4 要求 4.1 材料 止回阀的主要零件材料见表4。 表4 止回阀的主要零件材料 零 件 名 称 材 料 名 称 牌 号 标 准 编 号 阀体 阀体 铸钢 ZG275-485…

使用docker-compose部署Redis(单机部署)

目录 一、查看Redis镜像版本二、拉取自己需要的镜像版本三、创建挂载目录四、添加配置文件五、编写 docker-compose.yml 文件六、启动容器七、连接测试 一、查看Redis镜像版本 先去Docker Hub查看Redis镜像有那些版本&#xff0c;我部署的时候Redis最新已经到7.x的版本了&…

23.4 Bootstrap 框架5

1. 背景颜色 1.1 背景颜色样式 在Bootstrap 5中, 可以使用以下类来设置背景颜色: * 1. .bg-primary: 设置为主要的背景颜色(#007bff, 深蓝色). * 2. .bg-secondary: 设置为次要的背景颜色(#6c757d, 灰色). * 3. .bg-success: 设置为成功的背景颜色(#28a745, 绿色). * 4. …

[yolo系列:yolov7添加可变形卷积Deformable Conv V2]

yolo系列文章目录 文章目录 yolo系列文章目录一、可变形卷积是什么&#xff1f;二、使用步骤1.在models/common.py文件添加2.然后再yolo.py里面添加DCNv23.修改yolov7的yaml 总结参考文章 一、可变形卷积是什么&#xff1f; 可变形卷积即DCN&#xff08;缩写取自Deformable Con…

uniapp:swiper-demo效果

单元格轮播 <swiper class"swiper1" :circular"true" :autoplay"true" interval"3000" previous-margin"195rpx" next-margin"195rpx"><swiper-item v-for"(item,index) in 5" :key"inde…