当前位置: 首页 > news >正文

单片机C语言实例:6、定时器的应用

一、定时器0控制LED闪烁

实例程序1:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED = P1^2;    //定义LED端口/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     TH0=0x00;	      //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL0=0x00;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}/*------------------------------------------------主程序
------------------------------------------------*/
main()
{Init_Timer0();while(1);
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{TH0=0x00;		  //重新赋值TL0=0x00;LED=~LED;        //指示灯反相,可以看到闪烁
}

二、定时器1控制LED闪烁

程序实例2:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED = P1^3;    //定义LED端口/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{TMOD |= 0x10;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH1=0x00;	      //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL1=0x00;EA=1;            //总中断打开ET1=1;           //定时器中断打开TR1=1;           //定时器开关打开
}/*------------------------------------------------主程序
------------------------------------------------*/
main()
{Init_Timer1();while(1);
}
/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3 using 1
{TH1=0x00;		 //重新赋值TL1=0x00;LED=~LED;       //LED闪烁
}

三、定时器2控制LED闪烁

程序实例3:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit LED = P1^0;    //定义LED端口/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void TIM2Inital(void)
{RCAP2H = (65536-60000)/256;//晶振12M 60ms 16bit 自动重载RCAP2L = (65536-60000)%256;ET2=1;                     //打开定时器中断EA=1;                      //打开总中断TR2=1;                     //打开定时器开关
}/*------------------------------------------------主程序
------------------------------------------------*/
main()
{TIM2Inital();while(1);
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void TIM2(void) interrupt 5 using 1//定时器2中断
{TF2=0;LED=~LED;               //指示灯反相  
}

四、定时器0产生1ms方波

程序实例4:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit OUT = P1^2;    //定义OUT输出端口/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     //TH0=0x00;	      //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出//TL0=0x00;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}
/*------------------------------------------------主程序
------------------------------------------------*/
main()
{Init_Timer0();while(1);
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{TH0=(65536-500)/256;		  //重新赋值 12M晶振计算,指令周期1uS,TL0=(65536-500)*256;         //1mS方波半个周期500uS,即定时500次//溢出然后输出端取反OUT=~OUT;        //用示波器可看到方波输出 
}

五、定时器0产生200ms方波

程序实例5:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit OUT = P1^2;    //定义OUT输出端口/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     //TH0=0x00;	      //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出//TL0=0x00;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}
/*------------------------------------------------主程序
------------------------------------------------*/
main()
{Init_Timer0();while(1);
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{static unsigned char i;TH0=(65536-10000)/256;	//重新赋值 12M晶振计算,指令周期1uS,//200mS方波半个周期100mS,由于定时器//最大值65536 即65.536ms 所以TL0=(65536-10000)*256;  //直接定时器不够用,需要用循环处理,//定时10ms,然后循环10次后输出 10x10=100msi++;if(i==11){i=0;OUT=~OUT;        //用示波器可看到方波输出 }}

六、产生多路不同频率方波

程序实例6:

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     //TH0=0x00;	      //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出//TL0=0x00;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}
/*------------------------------------------------主程序
------------------------------------------------*/
main()
{Init_Timer0();while(1);
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{static unsigned char i;//重新赋值 12M晶振计算,指令周期1uS,500x2=1mS方波TH0=(65536-500)/256;		  TL0=(65536-500)*256;        i++;P1=i; 	//P1口8路输出不同频率,相当于一个分频器,高频用示波//器测量,低频可以直接用led观测//P1.0输出1ms方波,P1.1输出2ms,p1.2输出4ms,以此类推}

相关文章:

单片机C语言实例:6、定时器的应用

一、定时器0控制LED闪烁 实例程序1&#xff1a; #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c;头文件包含特殊功能寄存器的定义sbit LED P1^2; //定义LED端口/*------------------------------------------------定时器初始化子程序 …...

ChatGPT Prompting开发实战(五)

一、如何编写有效的prompt 对于大语言模型来说&#xff0c;编写出有效的prompt能够帮助模型更好地理解用户的意图(intents)&#xff0c;生成针对用户提问来说是有效的答案&#xff0c;避免用户与模型之间来来回回对话多次但是用户不能从LLM那里得到有意义的反馈。本文通过具体…...

MySQL——DQL union合并、limit限制与DDL建表和删表

一、Union 合并 union:是实现两个查询结果的合并。 例如&#xff1a;当我们查询员工名字为manager 和 salesman的员工名字和 工作&#xff1f; select e.ename,e.job from emp e where e.jobmanager or e.job salesman; select e.ename,e.job from emp e where e.job in(man…...

Java“牵手”唯品会商品列表数据,关键词搜索唯品会商品数据接口,唯品会API申请指南

唯品会商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取唯品会商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问唯品会商城的网页来获取商品详情信息。以下是两种常用方法的介…...

Springboot整合JWT完成验证登录

目录 一、引入依赖二、JwtUtil 代码解读三、LoginController 代码解读四、整体代码五、结果展示 一、引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></depende…...

centos7 下使用docker安装常见的软件:Redis

关于docker的基础知识&#xff0c;请见《别在说自己不知道docker了&#xff0c;全文通俗易懂的给你说明白docker的基础与底层原理》 在自己学习的过程中经常会需要动手安装一下常见的工具&#xff0c;本篇就手把手带你用docker安装一遍。 jdk安装 如果先要更换之前的jdk从第…...

sql:SQL优化知识点记录(十五)

&#xff08;1&#xff09;MySQL主从复制 我们这里配置一Windows上的MySql做主机&#xff0c;Linux上的MySql做从机&#xff0c;搭建一主一从 测试以下是否能够拼通&#xff1a;从Linux上&#xff1a;167&#xff0c;连接Windows的165 从Windows的165 连接Linux上&#xff1a;…...

vue3+ts 分享海报

安装依赖1. npm install html2canvas --save<div class"flex-box"><div><div v-for"(item,index ) in from.list" :key"index" click"actvieFuntion(index)"><div>{{item}}</div><div :class"…...

Ubuntu23.10将推出全磁盘加密功能,提高系统安全性

Canonical 宣布其即将推出的 Ubuntu 23.10&#xff08;Mantic Minotaur&#xff09;将引入基于 TPM 的全磁盘加密的初步支持。这个特性将利用系统可信平台模块&#xff08;TPM&#xff09;&#xff0c;在系统级别上进行全磁盘加密&#xff0c;从而提高系统的安全性。 但需要注…...

防火墙的设置主要是为了防范什么

防火墙的设置主要是为了防范网络攻击和数据泄露。随着互联网的普及和信息化的加速&#xff0c;网络安全问题越来越受到人们的关注。其中&#xff0c;防火墙是一种常见的网络安全设备&#xff0c;其设置的重要性也日益凸显。 防火墙的设置主要是为了防范什么 防火墙的设置主要目…...

Vim9和其他软件的文本复制、粘贴

大家都知道&#xff1a;在Vim9中使用y和p命令来进行文本的复制和粘贴&#xff0c;今天我来说一说Vim和其他软件之间的文本复制、粘贴操作。 Vim9和其他软件进行复制、粘贴&#xff0c;其原理就是通过系统剪贴板作为中介来执行操作。 一、从Vim9复制文本内容 按住鼠标左键滑出…...

MySQL学习5:事务、存储引擎

事务 简介 事务是一组数据库操作的执行单元&#xff0c;它要么完全执行&#xff0c;要么完全不执行。事务是确保数据库中的数据一致性和完整性的重要机制之一。 事务具有以下四个特性&#xff08;称为ACID特性&#xff09;&#xff1a; 原子性&#xff08;Atomicity&#xf…...

redis如何保证接口的幂等性

背景 如何防止接口中同样的数据提交&#xff0c;以及如何保证消息不被重复消费&#xff0c;这些都是shigen在学习的过程中遇到的问题。今天&#xff0c;趁着在学习redis的间隙&#xff0c;我写了一篇文章进行简单的实现。 注意&#xff1a;仅使用于单机的场景&#xff0c;对于…...

避坑之路 —— 前后端 json 的注意问题

当我们在进行开发项目的时候&#xff0c;在前后端需要进行数据之间的传输&#xff0c;那么就会需要到json。而json算是字符串中的一种 1.先说一下前端的, 其实这两种都是表示前端希望能收到后端json这样的数据格式&#xff0c;那么我们在后端就需要注意将数据进行转换为json进…...

[构建 Vue 组件库] 小尾巴 UI 组件库 —— 横向商品卡片(仿淘宝)

文章归档于&#xff1a;https://www.yuque.com/u27599042/row3c6 组件库地址 npm&#xff1a;https://www.npmjs.com/package/xwb-ui?activeTabreadmegitee&#xff1a;https://gitee.com/tongchaowei/xwb-ui 下载 npm i xwb-ui配置 按需导入 import {组件名 } from xwb-…...

【Python】Python实现五子棋游戏(带可视化界面)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…...

用Maloja创建音乐收听统计数据

什么是 Maloja &#xff1f; Maloja 是简单的自托管音乐记录数据库&#xff0c;用于创建个人收听统计数据。没有推荐&#xff0c;没有社交网络&#xff0c;没有废话。Maloja 是一个跟踪您一段时间内的收听习惯的工具。 官方演示站点&#xff1a;https://maloja.krateng.ch/ 导出…...

GRU门控循环单元

GRU 视频链接 https://www.bilibili.com/video/BV1Pk4y177Xg?p23&spm_id_frompageDriver&vd_source3b42b36e44d271f58e90f86679d77db7Zt—更新门 Rt—重置门 控制保存之前一层信息多&#xff0c;还是保留当前神经元得到的隐藏层的信息多。 Bi-GRU GRU比LSTM参数少 …...

使用Puppeteer构建博客内容的自动标签生成器

导语 标签是一种用于描述和分类博客内容的元数据&#xff0c;它可以帮助读者快速找到感兴趣的主题&#xff0c;也可以提高博客的搜索引擎优化&#xff08;SEO&#xff09;。然而&#xff0c;手动为每篇博客文章添加合适的标签是一件费时费力的工作&#xff0c;有时候也容易遗漏…...

大数据分析案例-基于随机森林算法构建二手房价格预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

BetaClaw:开源AI代理运行时,统一多模型调用与智能成本控制

1. 项目概述&#xff1a;一个为开发者打造的“瑞士军刀”级AI代理运行时如果你和我一样&#xff0c;每天都在和不同的AI模型打交道&#xff0c;那你一定也经历过这种痛苦&#xff1a;想用Claude写点创意文案&#xff0c;得去Anthropic的API&#xff1b;想用GPT-4o分析代码&…...

Windows运行Android应用终极指南:APK Installer让你的电脑秒变安卓手机

Windows运行Android应用终极指南&#xff1a;APK Installer让你的电脑秒变安卓手机 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在移动应用生态日益丰富的今天&…...

LaMa图像修复:基于傅里叶卷积的大掩码鲁棒修复方法

1. 项目概述&#xff1a;这不是又一个“修图工具”&#xff0c;而是一次对图像修复底层逻辑的重新定义LaMa——全称Large Mask Inpainting&#xff0c;直译是“大区域掩码图像修复”&#xff0c;但它的实际能力远超字面。我第一次在CVPR 2022论文里看到它时&#xff0c;第一反应…...

从布朗运动到伊藤公式:金融随机世界的建模基石

1. 从花粉运动到股票价格&#xff1a;布朗运动的金融启示 1827年&#xff0c;英国植物学家罗伯特布朗在显微镜下观察到花粉颗粒在水中的不规则舞动&#xff0c;这个看似简单的物理现象却在80年后被爱因斯坦用数学语言精确描述。有趣的是&#xff0c;当我们将显微镜换成股票行情…...

3步精通MOOTDX:量化投资数据接口实战指南

3步精通MOOTDX&#xff1a;量化投资数据接口实战指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX是一个专为量化投资和数据分析设计的Python库&#xff0c;它提供了高效、便捷的通达信数…...

Java——Character

Character1、Unicode基础2、检查code point和char3、code point与char的转换4、按code point处理char数组或序列5、字符属性6、字符转换1、Unicode基础 Unicode给世界上每个字符分配了一个编号&#xff0c;编号范围为0x000000&#xff5e;0x10FFFF。编号范围在0x0000&#xff…...

企业如何通过API Key管理与审计日志保障大模型调用安全

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业如何通过API Key管理与审计日志保障大模型调用安全 对于将大模型能力集成到业务流程中的企业而言&#xff0c;安全与合规是首要…...

OpenClaw与Cursor双向集成:打造AI驱动的自动化工作流

1. 项目概述&#xff1a;当OpenClaw遇上Cursor&#xff0c;一个双向赋能的AI大脑诞生如果你正在寻找一种方法&#xff0c;让你在Slack、飞书等协作工具里聊天的同时&#xff0c;能无缝调用一个强大的AI来帮你写代码、查文档、甚至操作GitHub&#xff0c;那么openclaw-cursor-br…...

一次搞清楚:Agent、Skill、Prompt、MCP

文章深入探讨了AI Agent在落地过程中面临的三大核心痛点&#xff1a;Prompt的临时性与不可复用性、Agent专业能力的难以沉淀与迁移、以及AI能力无法融入现有工程化流程。文章提出Agent Skills作为AI Agent的专业能力说明书&#xff0c;通过标准化能力描述与执行框架&#xff0c…...

MathType 快捷键实战指南——数学建模效率飙升的秘诀(从入门到精通)

1. 为什么你需要掌握MathType快捷键&#xff1f; 如果你经常需要处理数学公式&#xff0c;肯定遇到过这样的场景&#xff1a;为了输入一个简单的积分符号&#xff0c;不得不从工具栏里翻找半天&#xff1b;调整公式对齐时反复用鼠标拖动&#xff1b;修改矩阵维度时逐个单元格调…...