17:定时器编程实战

news2024/9/24 19:17:59

1、实验目的

(1)使用定时器来完成LED闪烁
(2)原来实现闪烁时中间的延迟是用delay函数实现的,在delay的过程中CPU要一直耗在这里不能去做别的事情。这是之前的缺点
(3)本节用定时器来定一个时间(譬如0.3s),在这个定时器定时时间内CPU还可以去做主任务,定时时间到产生中断,在中断处理程序isr中让LED闪烁即可。

如何编程:
(1)定时(timer初始化)
(2)主程序该干嘛干嘛
(3)中断处理程序

我们开发板的定时器最多能订多长时间?
内部时钟频率是1MHz,时钟周期是1us。最多能定65535(16位定时器),也就是说最大定时时间为65535*1us=65535us=65.535ms。
如果要定比较长的时间(譬如2s),定时器直接是不能满足的,解决办法是多次定时后加起来构成一个长时间。

我们使用定时器T0工作时
计算TL0和TH0:
(1)确定自己定时时间,定为50ms
(2)确定内部时钟周期,因为12T模式,外部晶振12MHz,所以为:1us
(3)定时个数就是:50ms/1us = 50000
(4)TL0 = 50000 % 256, TH0 = 50000 / 256

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#include <REGX51.H>
#define  SMG P0
sbit LED = P1^0;

unsigned char count;

/****定时到时执行的中断程序****/
void DingShi() interrupt 1
{
	/*每一次定时到后都要重置脉冲个数,以便进行第二次定时*/
	TL0 = 0X50;                //低8位为0101 0000
	TH0 = 0XC3;                //高8位为1100 0011
	if(count-- == 0)           //这里相当于50ms*20=1000ms(1s)
	{
		count = 20;
		LED = !LED;
	}
}

void delay(void)//延迟函数
{
	unsigned char a,b;
	for(a=200 ;a>0 ;a--)
	   for(b=200 ;b>0 ;b--)
	         ;
}

void main(void)
{
	unsigned char i;
	TMOD = 0X01;            //0000 0001 使用的是T0定时器,工作模式是16位定时器
	/****设置脉冲个数位50000个,既为50ms****/
	TL0 = 0X50;             //低8位为0101 0000
	TH0 = 0XC3;             //高8位为1100 0011
	TR0 = 1;                //计数器,开始计数
	ET0 = 1;			    //开启T0中断
	EA = 1;                 //开启中断总开关
	count = 20;
	

	while(1)//执行主任务
	{
		unsigned char val[16] = {0xc0, 0xf9, 0xa4, 0xb0,
	0x99, 0x92, 0x82, 0xf8, 
	0x80, 0x90, 0x88, 0x83, 
	0xc6, 0xa1, 0x86, 0x8e};//0到F的数码表	
		
			for(i=0 ;i<=15 ;i++)
		{
			SMG = val[i];
			delay();
		}
	}
}

上面程序结果是静态数码管不断的重复显示0到F,而LED1每隔1秒亮灭一次。

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

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

相关文章

相机图像质量研究(8)常见问题总结:光学结构对成像的影响--工厂调焦

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

【DIY】断电报警电路,电源监控装置

这个微小的断电报警电路是一种电源监控装置&#xff0c;将掀起的压电扬声器当交流电网电源切断。这表明一些功率的关键仪器如安装在医院照料装置供电损失很有帮助。报警激活在正确的时间是有用信号有停电&#xff0c;应采取紧急行动提供了另一种供电恢复的情况。 这是一个9V电…

【开源】基于JAVA+Vue+SpringBoot的停车场收费系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求

文章目录 一、Origin 含义二、跨源资源共享&#xff1a;**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests&#xff1a;预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…

上海泗博HART转ModbusTCP网关HME-635应用案例之组态王和超声波液位计通信

如今工业现场的应用也逐渐把现场的不同应用协议转换成以太网&#xff0c;以此来提升现场的通信速度和质量。Modbus TCP是工业以太网协议的一种&#xff0c;也是现场应用中最常使用的。本应用案例是基于Modbus TCP的组态王和基于HART的超声波液位计之间数据通讯的具体应用。 应用…

ruoyi-nbcio中xxl-job的安装与使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a; http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbach…

u8 bit0 :1; “:”位字段的声明(也称为位段)

在C语言中&#xff0c;冒号&#xff08;:&#xff09;用于声明bit字段&#xff0c;也称为位域(Bit-field)。位域允许我们在结构体中对结构成员进行位级的精确操作&#xff0c;主要用于对寄存器和硬件操作进行描述和访问。冒号后面的数字表示该位域的位宽度。 在通信中&#xff…

浅谈垃圾回收、内存泄漏与闭包

什么是垃圾&#xff1f; 在js中&#xff0c;垃圾通常指的是不再被程序使用的内存或对象。也就是说&#xff0c;垃圾是指程序中分配的内存空间或对象&#xff0c;但不再被程序使用或无法被访问到的内容 function createIncrease() {const doms new Array(100000).fill(0).map((…

Excel——合并计算

1.表格的合并计算&#xff08;单张表格/多个表格&#xff09; Q&#xff1a;请统计两个表格中各商品的总销量和总销售额&#xff0c;将结果放置在下方任意位置。 A&#xff1a;选择一个需要将合并计算数据放置区域的空白单元格 选择【数据】——【合并计算】&#xff0c;【函…

C语言的循环结构

目录 前言 1.三种循环语句 1.while循环 2.for循环 2.1缺少表达式的情况 3.do while循环 2.break语句和continue语句 2.1在while循环中 2.2在for循环中 2.3在do while 循环中 3.循环的嵌套 4.go to语句 前言 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是…

【51单片机】实现一个动静态数码管显示项目(前置知识铺垫,代码&图演示)(5)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY…

数据库管理-第147期 最强Oracle监控EMCC深入使用-04(20240207)

数据库管理147期 2024-02-07 数据库管理-第147期 最强Oracle监控EMCC深入使用-04&#xff08;20240207&#xff09;1 发现Exadata2 Exadata监控计算节点&#xff1a;存储节点RoCE交换机管理交换机PDU 总结 数据库管理-第147期 最强Oracle监控EMCC深入使用-04&#xff08;202402…

图数据库 之 Neo4j - Browser 介绍(3)

Neo4j Browser 介绍 Neo4j Browser 中有 3 个模块&#xff0c;侧边栏&#xff0c;Cypher 编辑器与结果栏&#xff0c;在进入 Neo4j Browser 时结果栏会展示欢迎界面。 Cypher 编辑器 Cypher 是一种图形查询语言&#xff0c;用于查询和操作图形数据库。它是 Neo4j 图形数据库的…

【C++第二阶段】友元

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 全局函数做友元类对象做友元成员函数做友元 全局函数做友元 What 在全局函数中&#xff0c;可以访问类中private权限下的成员属性。 How 在类对象中&#…

微软.NET6开发的C#特性——接口和属性

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展&#xff0c; 进行了多次重大创新&#xf…

Java面向对象 继承

目录 继承继承的好处继承具有传递性实例创建Person类Student继承Person类测试 继承 Java中的继承是面向对象编程的一个核心特性&#xff0c;它允许一个类&#xff08;子类或派生类&#xff09;继承另一个类&#xff08;父类或基类&#xff09;的属性和方法。通过继承&#xff0…

mysql 对于null字段排序处理

最近遇到一个需求 &#xff0c;需要对一个报表的多个字段进行多字段复杂条件排序 排序字段为NULL时 Mysql对于排序字段为NULL时&#xff0c;有自身默认的排序规则&#xff0c;默认是认为null 值 是无穷小 ELECT id,script_id,last_modified,live_count,next_show FROM virtua…

PKI - 05 证书申请步骤

文章目录 Pre概述第一步:时间同步第二步: 部署证书服务器第三步: 客户端产生密钥第四步: 验证证书服务器第五步: 申请个人证书第六步&#xff1a; 审核并签名证书第七步: 颁发数字证书第八步: 交换公钥 Pre PKI - 02 对称与非对称密钥算法 PKI - 03 密钥管理&#xff08;如何…

Docker Compose实例

目录 一、前提说明 二、简单的Docker容器部署案例 1. Dockerfile 配置 2. docker-compose.yml 配置 3. application.properties 配置 4. pom.xml 配置 5. 上传文件 6. 创建基础Docker镜像 7. docker-compose.yml编排 8. 停止并删除容器编排 一、前提说明 在配置好Do…

路由器如何映射端口映射?

在现代互联网中&#xff0c;随着网络应用的不断发展&#xff0c;很多用户需要进行远程访问或搭建服务器来满足自己的需求。由于网络安全的原因&#xff0c;直接将内网设备暴露在公网中是非常危险的。为了解决这个问题&#xff0c;路由器映射端口映射技术应运而生。本文将介绍什…