51单片机第27步_单片机工作在睡眠模式
重点学习51单片机工作在睡眠模式。
1、进入“睡眠模式”的方法
通过将PCON寄存器中的PDWN置1,则CPU会进入“睡眠模式”。在“睡眠模式”中,晶振将停止工作,因此,定时器和串口都将停止工作,只有外部中断继续工作。如果单片机电源引脚VCC有2.0伏以上,则RAM 中的数据仍将保存。
退出“睡眠模式”(低功耗模式),有两种方法:
1)、外部中断会让CPU退出“睡眠模式”。
2)、CPU复位引脚出现高电平,引起CPU复位,也会让CPU退出“睡眠模式”。
2、外部中断会让CPU退出“睡眠模式”
程序如下:
#define Enter_PDWN_Mode() PCON=PCON|0x02 //进入“睡眠模式”
#define Exit_PDWN_Mode() PCON &= ~0x02; //CPU退出“睡眠模式”
sbit LED = P1^0; //低电平点亮LED
//函数功能:设置int0和int1为下降沿中断方式;
void EXT_int0_and_int1_initialization()
{ IT0=1; //设置int0为下降沿触发方式;
IT1=1; //设置int1为下降沿触发方式;
//IT0=0; //设置int0为低电平触发方式;
//IT1=0; //设置int1为低电平触发方式;
EX0=1; //允许int0中断;
EX1=1; //允许int1中断;
EA=1; //开总中断允许位;
}
#define OSC_FREQ 12000000L //定义晶振频率为12MHz;
#define T0_Load_Value (65536-50000) //配置T0为50000us中断一次;
//函数功能: Timer0初始化;
void timer0_initializtion(void)
{ TMOD&= 0xF4; //设置GATE0=0,即不允许外部INT0脚控制Timer0;
TMOD|= 0x01; //配置Timer0为方式1(16位定时器);
TL0=T0_Load_Value; //手动装载初值;
TH0=T0_Load_Value>>8;
TR0=1; //当GATE0=0时,TR0=1,表示启动T0开始工作;
ET0=1; //允许Timer0中断;
EA=1; //开总中断允许位;
}
//函数功能:int0中断服务函数,在双击P3.2脚时会进入int0中断服务函数;
void int0_interrupt_service_function() interrupt 0
{
LED=0;//点灯
Exit_PDWN_Mode();//CPU退出“睡眠模式”
}
//函数功能:int1中断服务函数,在双击P3.3脚时会进入int1中断服务函数;
void int1_interrupt_service_function() interrupt 2
{
LED=0;//点灯
Exit_PDWN_Mode();//CPU退出“睡眠模式”
}
//函数功能: Timer0的中断服务函数,每50000us中断一次;
void timer0_interrupt_program() interrupt 1 using 1
{ TL0=T0_Load_Value; //手动装载初值;
TH0=T0_Load_Value>>8;
LED=~LED;
}
}
//函数功能:11.0592MHz延时100us
void Delay100us(void)
{
unsigned char i;
i = 50;
while (i>0){i--;}
}
void Delay_ms(unsigned char x)
{
unsigned char i;
while (x)
{
for(i=0;i<10;i++)Delay100us();
x--;
}
}
void main(void)
{
EXT_int0_and_int1_initialization();
timer0_initializtion(); //Timer0初始化;
LED=1;//关灯
Delay_ms(1000);Delay_ms(1000);Delay_ms(1000);
Enter_PDWN_Mode();
//进入“睡眠模式”
//等待外部中断
while(1)
{
Delay100us();
}
}
相关文章:
51单片机第27步_单片机工作在睡眠模式
重点学习51单片机工作在睡眠模式。 1、进入“睡眠模式”的方法 通过将PCON寄存器中的PDWN置1,则CPU会进入“睡眠模式”。在“睡眠模式”中,晶振将停止工作,因此,定时器和串口都将停止工作,只有外部中断继续工作。如果单片机电源…...
互联网应用主流框架整合之SpringCloud微服务治理
微服务架构理念 关于微服务的概念、理念及设计相关内容,并没有特别严格的边界和定义,某种意义上说,适合的就是最好的,在之前的文章中有过详细的阐述,微服务[v1.0.0][Spring生态概述]、微服务[设计与运行]、微服务[v1.…...
超快的 Python 包管理工具「GitHub 热点速览」
天下武功,无坚不破,唯快不破! 要想赢得程序员的欢心,工具的速度至关重要。仅需这一优势,即可使其在众多竞争对手中脱颖而出,迅速赢得开发者的偏爱。以这款号称下一代极速 Python 包管理工具——uv 为例&…...
网络基础:OSPF 协议
OSPF(Open Shortest Path First)是一种广泛使用的链路状态路由协议,用于IP网络中的内部网关协议(IGP)。OSPF通过在网络中的所有路由器之间交换路由信息,选择从源到目的地的最优路径。OSPF工作在OSI模型的第…...
1456.定长子串中元音的最大数目
思路: 首次是滑动窗口, 然后遍历子字符串,这样复杂度太高,没过测试 改进,滑动窗口先求出第一个窗口中元音数量, 然后利用滑动式,一进一出方式判断首尾是否是原因即可 给你字符串 s 和整数 k 。 …...
基于xilinx FPGA的GTX/GTH/GTY位置信息查看方式(如X0Y0在bank几)
目录 1 概述2 参考文档3 查看方式4查询总结: 1 概述 本文用于介绍如何查看xilinx fpga GTX得位置信息(如X0Y0在哪个BANK/Quad)。 2 参考文档 《ug476_7Series_Transceivers》 《pg156-ultrascale-pcie-gen3-en-us-4.4》 3 查看方式 通过…...
JAVA小知识30:JAVA多线程篇1,认识多线程与线程安全问题以及解决方案。(万字解析)
来 多线程,一个学起来挺难但是实际应用不难的一个知识点,甚至在很多情况下都不需要考虑,最多就是写测试类的时候模拟一下并发,现在我们就来讲讲基础的多线程知识。 一、线程和进程、并发与并行 1.1、线程和进程 线程&am…...
Python数据分析案例47——笔记本电脑价格影响因素分析
案例背景 博主对电脑的价格和配置一直略有研究,正好最近也有笔记本电脑相关的数据,想着来做点分析吧,写成一个案例。基本上描述性统计,画图,分组聚合,机器学习,交叉验证,搜索超参数…...
【加密与解密】【09】GPG Client签名流程
什么是GPG客户端 GPG客户端是实现PGP加密协议的一套客户端程序,可用于加密或签名 下载GPG客户端 建议安装命令行工具,图形工具一般不具备完整功能 https://gnupg.org/download/index.html生成私钥 此时会要求你输入名称,邮箱,…...
“2024软博会” 为软件企业提供集展示、交流、合作一站式平台
随着全球科技浪潮的涌动,软件行业正迎来前所未有的发展机遇,成为了全球新一轮竞争的“制高点”,以及未来经济发展的“增长点”。在当前互联网、大数据、云计算、人工智能、区块链等技术加速创新的背景下,数字经济已经渗透到经济社…...
【Zoom安全解析】深入Zoom的端到端加密机制
标题:【Zoom安全解析】深入Zoom的端到端加密机制 在远程工作和在线会议变得越来越普及的今天,视频会议平台的安全性成为了用户关注的焦点。Zoom作为全球领先的视频会议软件,其端到端加密(E2EE)功能保证了通话的安全性…...
7 动态规划
下面的例子不错: 对于动态规划,能学到不少东西; 你要清楚每一步都在做什么,划分细致就能够拆解清楚! xk. - 力扣(LeetCode) labuladong的算法笔记-动态规划-CSDN博客 动态规划是…...
.net 快速开发框架开源
DF.OpenAPI开源系统 前后端分离,开箱即用,java经典功能.net也具备 系统介绍 DF.OpenAPI是基于Admin.NET二开的,是一个开源的多租户后台管理系统。采用前后端分离技术(前端使用vue.js,后端使用.net 3~.net6ÿ…...
《昇思25天学习打卡营第06天|网络构建》
网络构建 神经网络模型由神经网络层和Tensor操作构成 #实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.…...
【链表】- 两两交换链表中的节点
1. 对应力扣题目连接 两两交换链表中的节点 2. 实现案例代码 public class ExchangeLinkedListsPairwise {public static void main(String[] args) {// 示例链表:[1, 2, 3, 4]ListNode head new ListNode(1);head.next new ListNode(2);head.next.next new L…...
java设计模式(四)——抽象工厂模式
一、模式介绍 改善在工厂方法模式中,扩展时新增产品类、工厂类,导致项目中类巨多的场面,减少系统的维护成本,且一个工厂可以生成多种产品,而不是同一种的产品,比如一个工厂既可以生产鞋子又可以衣服,而不是只能生产鞋子。 二、工厂方法模式 1、实现步骤 第一步: 定义…...
动物检测yolo格式数据集(水牛 、大象 、犀牛 、斑马四类)
动物检测数据集 1、下载地址: https://download.csdn.net/download/qq_15060477/89512588?spm1001.2101.3001.9500 2、数据集介绍 本数据集含有四种动物可以检测,分别是水牛 、大象 、犀牛 、斑马四类,数据集格式为yolo格式,…...
昇思25天学习打卡营第05天 | 数据变换 Transforms
昇思25天学习打卡营第05天 | 数据变换 Transforms 文章目录 昇思25天学习打卡营第05天 | 数据变换 TransformsCommon TransformsCompose Vision TransformsText TransformPythonTokenizerLookup Lambda Transforms数据处理模式Pipeline模式Eager模式 总结打卡 通常情况下的原始…...
Springboot+MySQL 公寓报修管理系统源码
功能结构图 效果图:...
jenkins 发布服务到linux服务器
1.环境准备 1.1 需要一台已经部署了jenkins的服务器,上面已经集成好了,jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器,安装好jdk 2.流程描述 2.1 配置jenkins,包括p…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
