STC定时器频率占空比程序
//==========================================================
// 一、宏定义区
//==========================================================
#include <STC15.H> //头文件
#include <intrins.h> //库函数文件
#define FOSC 12000000L //IRC频率
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
//==========================================================
// 二、函数声明区
//==========================================================
void UartInit(void); //9600bps@24MHz
void Timer0_Init(void); //25微秒@24MHz
void Timer2_Init(void); //100微秒@24MHz
void Init_IO(void); //IO初始化
void key_san(void); //按键扫描程序
void sedusart(u8 x); //串口发送测试void sedusart(10)
void delayms(u16 c); //1ms误差 0us
//==========================================================
// 三、IO定义区
//==========================================================
sbit S1 = P5^4; //按键频率加
sbit S2 = P1^6; //按键频率减
sbit S3 = P5^5; //按键占空比加
sbit S4 = P1^7; //按键占空比减
sbit PWM1 = P3^6; //输出1
sbit OUT= P3^2; //
sbit Led = P3^3; //LED
//===========================================================
// 四、变量声明区
//===========================================================
u8 data recive[10]; //声明数组,接收到的数据缓存
u8 data recive_1[10]; //声明数组,接收到的数据缓存
u8 data time; //软件计时,延时读取通讯数据
u8 data num; //通讯字节计数专用
u8 UART_FIG; //串口接收标志位
u16 Time_1US,F_Hz,CT,Step; //F_HZ=100倍(20000对应200HZ) CT=50(占空比50%) Step(步进数)
//===========================================================
// 五、主函数区
//===========================================================
main()
{
Init_IO(); //IO初始化
UartInit(); //串口初始化
F_Hz = 55; //初始值频率
CT = 50; //初始值占空比10%
Step = 5; //步进数
Timer2_Init(); //定时器2初始化
while(1)
{
key_san();
//静态数码管显示
// Pout1 = !Pout1;
}
}
//==========================================================
// 六、子函数区
//==========================================================
// 描述:控制函数
void key_san(void)
{
if(S1 == 0) //频率加
{
if(++Time_1US>20000) //
if(S1 == 0)
{
Time_1US = 0;
F_Hz = F_Hz/100; //缩小100倍
F_Hz = F_Hz + Step; //
if(F_Hz>=200) //
{
F_Hz=0; //
}
Timer2_Init();
Led = 0;
}
}
if(S2 == 0) //频率减
{
if(++Time_1US>20000) //
if(S2 == 0)
{
Time_1US = 0;
F_Hz = F_Hz/100; //缩小100倍
F_Hz = F_Hz - Step; //
if(F_Hz==0)
{
F_Hz=200;
}
Timer2_Init(); //
Led = 0;
}
}
if(S3 == 0) //占空比加
{
if(++Time_1US>20000) //
if(S3 == 0) //
{
Time_1US = 0; //
CT = CT + Step; //
if(CT>=100){CT=0;} //
// Timer2_Init();
Led = 0;
}
}
if(S4 == 0) //占空比减
{
if(++Time_1US>20000) //频率
if(S4 == 0)
{
Time_1US = 0; //F_HZ
CT = CT - Step; //占空比-步进数
if(CT==0){CT=100;} //占空比
// Timer2_Init();
Led = 0;
}
}
}
//=========================================================
// 七、所有初始化函数
//=========================================================
void UartInit(void) //9600bps@12.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TL1 = 0xC7; //设置定时初始值
TH1 = 0xFE; //设置定时初始值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
ES = 1; //打开串口中断
EA = 1; //打开总中断
}
//=========================================================
// 定时器2初始化
//=========================================================
void Timer2_Init(void) //1000微秒@12.000MHz
{
AUXR |= 0x04; //定时器2为1T模式
F_Hz = F_Hz*100; //*100 总分频20000HZ
T2L = (65536-FOSC/2/F_Hz); //初始化计时值
T2H = (65536-FOSC/2/F_Hz) >> 8;
AUXR |= 0x10; //定时器2开始计时
// INT_CLKO = 0x04; //使能定时器2的时钟输出功能
IE2 |= 0x04; //开定时器2中断
EA = 1; //打开总中断
if(F_Hz == 0||F_Hz == 20000) //当频率值为0或200Hz关闭输出
{
IE2 &= ~0x04; //关闭中断
AUXR &= ~0x10; //定时器2停止计时
PWM1 = 0;
}
}
//=========================================================
// 初始化IO口函数
//=========================================================
void Init_IO(void) //IO初始化
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x01;
P3M1 = 0x00;
S1 = S2 = S3 = S4 = 1;
PWM1 = 0;
Led = 1;
}
//=========================================================
// 八、所有中断函数
//=========================================================
// 描述:定时器0中断函数,1毫秒进入一次中断
void time0() interrupt 1 //定时器0中断程序
{
}
//=========================================================
// 定时器2中断程序
//=========================================================
void t2int() interrupt 12 //定时器2中断程序,
{
u16 CT1,CT2; // CT=占空比
u8 ss;
CT2++; //
if(CT2>=2) //CT2为占空比计数器0-100
{
CT2 = 0;
CT1++;
if(CT1>=CT)
{
PWM1 = 0; //
}
else
{
PWM1=1;
}
if(CT1>=100)
{
CT1 = 0;
}
}
ss++;
if(ss>50)
{
ss=0;
OUT=~OUT;
}
}
//=========================================================
// 串口中断通信
//=========================================================
void exter0() interrupt 4 //串口中断通信
{
if(RI==1)
{
recive[num++]=SBUF;//接收一个字节
if(num>=2)
{
F_Hz = recive[0];
CT = recive[1];
// F_Hz = F_Hz*100;
// T2L = (65536-FOSC/2/F_Hz); //初始化计时值
// T2H = (65536-FOSC/2/F_Hz) >> 8;
Timer2_Init();
Led = 0;
num=0;
} //防止缓存数据超限
RI=0;
}
time=10; //数据延时读取时间
if(num>=2)
{
num=0;
}
}
相关文章:
STC定时器频率占空比程序
// // 一、宏定义区 // #include <STC15.H> //头文件 #include <intrins.h> //库函数文件 #define FOSC 12000000L //IRC频率 typedef …...
观察者 ➜ 事件总线:一路走来的碎碎念
写给未来的自己:每次手敲事件模型都要 Google,干脆把思路和踩坑一次性记清楚。文章很长,都是唠叨,目的是让自己看两眼就能把设计理由找回来。 目录 为什么我要折腾事件模型?V0 ─ 单一事件的观察者模式V1 ─ 多事件同步总线(类型拆分)V2 ─ 订阅者优先级(链式调用可控)…...
AOP基本概念
上述语句解释感觉太过玄妙不似常人能够听懂,所以结合自己理解,给自己留点备注: 首先 目标对象: 就是这要对哪个对象进行代理,因为AOP是面向切面编程,在OOP的基础上再次解耦合,这个过程需要提…...
不确定与非单调推理的概率方法
前文我们学习了“不确定与非单调推理的基本概念”,了解了不确定性推理是人工智能领域中处理不完整、不精确或模糊信息的推理方法,其核心是在前提条件或推理规则存在不确定性时,通过某种数学或逻辑机制推导出合理结论,并对结论的可靠性进行量化。不确定与非单调推理的基本概…...
device_fingerprint、device_id、hmac生成
文章目录 1. 写在前面2. 设备信息3. 数美指纹 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...
centos下openjdk报:getVersion(FontConfiguration.java)异常,安装fontconfig无效问题的处理
TOC centos下openjdk报:getVersion(FontConfiguration.java)异常,安装fontconfig无效问题的处理 官网jdk包:Releases dragonwell-project/dragonwell8 背景: 为了适应国产化,使用东方通和国产jdk,从tomcat改为tongweb&#x…...
Banana Pi BPI-RV2 RISC-V 路由器开发板发售, 全球首款RISC-V路由器
Banana Pi BPI-RV2 开源路由器是矽昌通信和⾹蕉派开源社区(Banana Pi )合作设计, 联合打造全球首款RISC-V架构路由器开发板。 这是香蕉派开源社区与矽昌通信继BPI-Wifi5 低成本Wifi5 路由器合作之后的又一力作,为全球开发者与商业客户提供基于…...
自学新标日第十九课复习版本
第十九课 基本–》否定 うー>わ 单词 单词假名声调词义品物しなもの0物品,商品お皿おさら0盘子ごみごみ2垃圾初心者しょしんしゃ2初学者上級者じょうきゅうしゃ3熟练者高級こうきゅう0高级上級クラス5高级版英会話えいかいわ3英语会话コース1路线&a…...
网安加·百家讲坛 | 刘志诚:AI安全风险与未来展望
作者简介:刘志诚,乐信集团信息安全中心总监、OWASP广东区域负责人、网安加社区特聘专家。专注于企业数字化过程中网络空间安全风险治理,对大数据、人工智能、区块链等新技术在金融风险治理领域的应用,以及新技术带来的技术风险治理…...
2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(二级)真题
青少年软件编程(Python)等级考试试卷(二级) 分数:100 题数:37 答案解析:https://blog.csdn.net/qq_33897084/article/details/147340870 一、单选题(共25题,共50分) 1. 老师要求大…...
@JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
JsonView 单一 DTO:如何实现多场景 JSON 字段动态渲染 JsonView 单一 DTO:如何实现多场景 JSON 字段动态渲染1、JsonView 注解产生的背景2、为了满足不同场景下返回对应的属性的做法有哪些?2.1 最快速的实现则是针对不同场景新建不同的 DTO…...
《深入探秘JavaScript原型链与继承机制:解锁前端编程的核心密码》
在JavaScript的奇妙世界里,原型链与继承机制犹如隐藏的宝藏,掌握它们,就如同拿到了开启高效编程大门的钥匙。对于前端开发者来说,这不仅是写出简洁、可维护代码的关键,更是深入理解JavaScript面向对象编程的基石。今天…...
Cursor 生成java测试用例
1. 安装cursor 站点:https://www.cursor.com/cn 安装后登录 2. 使用cursor 2.1 安装扩展: 组合键 CtrlShiftX,进入扩展程序页面,安装如下: Chinese:中文支持, 安装后 CtrlShiftP࿰…...
常见免杀框架的使用(3款)---【AniYaGUI1.2.0、AV_Evasion_Tool掩日、FoxBypass_V1.0】
一、AniYaGUI1.2.0免杀框架 环境:虚拟机Win10 、云服务器 工具:Xshell、CobaltStrike 项目下载地址: https://github.com/piiperxyz/AniYa 1. 安装Go语言环境 确保Win10虚拟机安装 Golang 且环境变量中包含 go 否则⽆法编译(注…...
PHP腾讯云人脸核身生成 SDK 接口调用步骤使用签名
参考腾讯云官方文档: 人脸核身 生成 SDK 接口调用步骤使用签名_腾讯云 前提条件:成功获取NonceTicket。 获取参考文档: PHP腾讯云人脸核身获取NONCE ticket-CSDN博客 function getTxFaceSign(){$appId ;$userId ;$version 1.0.0;$tic…...
LINUX418 加载YUM源 wireshark ping程序 解析
未找到挂载点 未连接 怪不得找不到 计划重启 sr0文件有了 挂载 删除 新建、修改配置文件 清空yum缓存 创建yum缓存 1.检查相关设置:虚拟机两个打钩 2.df -h查看光盘文件 3.挂载在/mnt mount -o ro /dev/sr0 /mnt 4.删除/etc/yum.repos.d 下的文件 5.新建local…...
解决Windows安全中心显示空白页面
1、电脑重装系统后,发现原本一些软件打不开了,电脑莫名认为有病毒,自动删除插件。附图。 2、第一反应是电脑防火墙的原因,默认威胁防护识别到了病毒软件,自动删除。在开始屏幕搜Windows安全中心,打开之后发…...
2.1 SQL server的安装以及一个数据表的创建
Microsoft SQL Server 2014 Express 是一个免费的、功能强大的可靠数据管理系统,为轻型网站和桌面应用程序提供丰富可靠的数据存储. 1. 下载软件并安装 https://www.microsoft.com/zh-cn/download/details.aspx?id42299 勾选SQLEXPRADV_X64_CHS.exe就够了。 可以更…...
楼梯上下检测数据集VOC+YOLO格式5462张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5462 标注数量(xml文件个数):5462 标注数量(txt文件个数):5462 …...
Excel提取图片并自动上传到文件服务器(OOS),获取文件链接
Excel提取图片并自动上传到接口 在实际项目中,我们可能经常会遇到需要批量从Excel文件(.xlsx)中提取图片并上传到特定接口的场景。今天,我就详细介绍一下如何使用Python实现这一功能,本文会手把手教你搭建一个完整的解…...
python有序列表
您的代码整体结构良好,但存在一些关键错误和优化点。以下是对代码的详细评价及改进建议:---### 主要问题1. **add方法中的链表断裂问题**- **问题描述**:当向链表中间插入节点时,未正确设置新节点的next,导致后续节点丢…...
Python(23)Python异常处理完全指南:从防御到调试的工程实践
目录 一、异常处理的核心价值与行业现状二、Python异常体系深度解析2.1 内置异常分类树2.2 七大高频异常处理方案2.2.1 文件操作异常链2.2.2 类型校验防御策略 三、企业级异常处理架构3.1 分布式系统异常封装3.2 上下文管理器资源保护 四、五大核心处理原则1. 精准捕获原则2.…...
LangChain4j-第一篇 |几分钟完成deepseek 在线集成
引言:AI 集成的Hello world 在AI迅猛增长的势头下,作为Java 程序员,也想学习开发AI 的应用产品。好在Java AI 生态也在逐步的完善,我们也可以使用java 语言开发属于自己的应用产品。LangChain4j通过声明式编程模型,将…...
C语言==》字符串断行
示例代码 #include <stdio.h>int main(void) {printf("Heres one way to print a ");printf("long string.\n");printf("Heres another way to print a \ long string.\n");printf("Heres the newest way to print a ""lo…...
springboot全局异常捕获处理
一、需求 实际项目中,经常抛出各种异常,不能直接抛出异常给前端,这样用户体验相当不好,用户看不懂你的Exception,对于一些sql异常,直接抛到页面上也不安全。所以有没有好的办法解决这些问题呢,当然有了&am…...
使用Jasypt对配置文件内容加密
使用Jasypt 配置文件内容加密 一、背景 在软件开发过程中,配置文件扮演着至关重要的角色,它存储着应用程序运行所需的各种参数和设置,例如数据库连接信息、API 密钥、第三方服务的认证信息等。然而,这些配置文件中的信息往往包含…...
opencv函数展示3
一、图像平滑(模糊) 线性滤波(速度快): 1.cv2.blur() 2.cv2.boxFilter() 3.cv2.GaussianBlur() 非线性滤波(速度慢但效果好): 4.cv2.medianBlur() 5.cv2.bilateralFilter() 二、锐…...
linux 4.14内核jffs2文件系统不自动释放空间的bug
前段时间在做spi-nor flash项目的时候,使用jffs2文件系统,发现在4.14内核下存在无法释放空间的bug,后来进行了修复,修复后功能正常,现将修复patch公开,供后来者学习: diff --git a/fs/jffs2/ac…...
华为仓颉智能体开发框架 Cangjie Magic深度解析
华为仓颉智能体开发框架 Cangjie Magic 深度解析 华为仓颉社区推出的 Cangjie Magic 是全球首个基于自研仓颉编程语言原生构建的 LLM Agent(大语言模型智能体) 开发框架,通过三大核心技术突破重构了智能体开发范式,为全场景智能化应用开发提供了全新工具链。以下从核心技术…...
Harmony5.0 设置应用全屏模式,隐藏导航栏和状态栏
Harmony5.0 设置应用全屏模式,隐藏导航栏和状态栏 在应用入口EntryAbility里添加 完整代码如下: import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from @kit.AbilityKit; import { hilog } from @kit.PerformanceAnalysisKit; import { window } fro…...
6. 实战(二):用Spring AI+OpenAI构建企业级智能客服
1、引言 前面几篇已经加深了我们对Spring Ai的体系结构,核心概念,以及也有初步集成实现了一个简单demo。今天,我们通过使用Spring AI框架与OpenAI API集成,构建一个功能完善的智能对话系统,加深我们对Spring AI从概念…...
线上健身预约小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的一款线上健身预约小程序源码,其主要功能包括搜索教练、课程、门店,以及轻松预约健身项目。 用户只需通过指尖轻点,即可快速查找并预约心仪的健身课程,无需繁琐的线下操作步骤。此外,…...
掌握MySQL:基本查询指令与技巧
🍑个人主页:Jupiter. 🚀 所属专栏:MySQL初阶学习笔记 欢迎大家点赞收藏评论😊 目录 表的增删查改1 CreateInsert1.1 单行数据 全列插入指定列插入1.2 多行数据插入 指定列插入1.3 插入否则更新 1.4 替换 2 Retrieve …...
本地生活服务信息分类信息系统
最近在找分类信息系统,看了很多市面上常见的分类信息系统: 1,私集分类信息系统 2,火鸟分类信息系统 3,觅分类信息系统 4,框分类信息系统 5,蚂蚁分类信息系统 发现很多分类信息系统,…...
视频编解码种类/技术/区别/优缺点汇总
视频编解码种类/技术/区别/优缺点汇总 按国家/机构划分的全球主要视频编码标准 (含优缺点)视频编解码涉及到的主要技术及通俗解释主流视频编码标准的实现方式 按国家/机构划分的全球主要视频编码标准 (含优缺点) 组织/国家分类标准名称 (常用名/别名)推出年份 (约)主要制定组织…...
【专题刷题】双指针(四):最接近的三数之和,接雨水
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
星露谷物语 7000+ 大型MOD整合包
衣服美化、家具美化、地图美化、人物肖像美化 全地图装修存档、人物美化、扩展包、环境美化、家具、动植物、通用前置包、新增NPC、功能、服装发饰妆 帽子发型农场小镇美化大型玩法拓展实用功能mod 动漫人物形象MOD 地点/动物/地图/功能/机械/家具/建筑/界面美化/扩展/农场/食谱…...
Vue自定义指令-防抖节流
Vue2版本 // 防抖 // <el-button v-debounce"[reset,click,300]" ></el-button> // <el-button v-debounce"[reset]" ></el-button> Vue.directive(debounce, { inserted: function (el, binding) { let [fn, event "cl…...
几款开源C#插件框架
有几个优秀的开源C#插件框架可供选择,它们提供了更完善的功能和更好的扩展性。以下是几个主流的开源C#插件框架: 1. MEF (Managed Extensibility Framework) 官方库:System.ComponentModel.Composition 特点: .NET官方提供的插件系统 基于特性(Attribute)的声明式组件注册…...
PHP使用pandoc把markdown文件转为word
文章目录 首先安装pandocPHP处理 服务器操作系统是Linux,centos 首先安装pandoc yum install -y pandoc安装完成后输入如下代码,检查安装是否成功 pandoc --versionPHP处理 我把markdown内容存到了数据库里,所以要从数据库读取内容。对内容…...
Vmware esxi 查看硬盘健康状况
起因 硬盘掉盘 - - 使用自带的命令esxcli 列出所有硬盘 esxcli storage core device list[rootlocalhost:~] esxcli storage core device list t10.NVMe____INTEL_MEMPEK1W016GAL____________________PHBT83660BYP016D____00000001Display Name: Local NVMe Disk (t10.NVMe…...
vue3中ref创建的变量使用`.value`(可以使用volar插件自动添加`.value)
1.安装volar插件 2.打开>设置 >扩展...
Docker中镜像、容器、仓库三者之间的关系
镜像: 定义: 镜像只是一个静态的、只读的模板,包括了创建容器所需的文件系统、依赖库、和配置。类似于操作系统之中的安装光盘或虚拟机的磁盘镜像。 特点和作用 特点: 分层存储:镜像由多个只读层(Layer)叠加而成,每一层代表一…...
【刷题Day19】HTTP的各个版本(浅)
HTTP 1.0 和 2.0 有什么区别? HTTP/1.0 版本主要增加以下几点: 增加了HEAD、POST等新方法。增加了响应状态码。引入了头部,即请求头和响应头在请求中加入了HTTP版本号引入了Content-Type,使得传输的数据不再限于文本。 HTTP/1.…...
浅析StringBuilder和StringBuffer的区别和联系?
区别 1. 线程安全性 StringBuilder:是非线程安全的。这意味着在多线程环境下,如果多个线程同时访问并修改同一个 StringBuilder 对象,可能会导致数据不一致或其他并发问题。不过,由于不需要考虑线程安全的额外开销,它…...
【数据融合实战手册·实战篇】二维赋能三维的5种高阶玩法:手把手教你用Mapmost打造智慧城市标杆案例
在当今数字化时代,二三维数据融合技术的重要性不言而喻。二三维数据融合通过整合二维数据的结构化优势与三维数据的直观性,打破了传统数据在表达和分析上的局限,为各行业提供了更全面、精准的数据分析手段。从智慧城市建设到工业智能制造&…...
Linux 系统编程 day5 进程管道
进程间通信(IPC) Linux环境下,进程地址空间相互独立,任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能互相访问,要交换数据必须通过内核,在内核中开辟一块缓冲区…...
【项目管理】第19章 配置与变更管理-- 知识点整理
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...
C语言---FILE结构体
一、FILE 结构体的本质与定义 基本概念 FILE 是 C 语言标准库中用于封装文件操作的结构体类型,定义于 <stdio.h> 中。它代表一个“文件流”,可以是磁盘文件、标准输入输出(stdin/stdout/stderr)或其他输入输出设备。 实现特…...
C# 高级编程:Lambda 表达式
在 C# 的高级编程中,Lambda 表达式是一个强大而灵活的工具,广泛应用于 LINQ 查询、委托、事件处理以及函数式编程等多个领域。它不仅使代码更简洁、表达更直接,而且在某些场景中能极大提高代码的可读性与可维护性。本文将从 Lambda 表达式的基本语法入手,深入探讨其原理、常…...