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();

}

}

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

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

相关文章

LeetCode——第 404 场周赛

周赛 三角形的最大高度 给你两个整数 red 和 blue&#xff0c;分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形&#xff0c;满足第 1 行有 1 个球&#xff0c;第 2 行有 2 个球&#xff0c;第 3 行有 3 个球&#xff0c;依此类推。 每一行的球必须是 相同 …

Go语言--自定义函数

定义格式 函数构成代码执行的逻辑结构。在 Go语言中&#xff0c;兩数的基本组成为:关键字 func、函数名、参数列表、返回值、所数体和返回语句。 函数定义说明: func:函数由关键字func开始声明FuncName:函数名称&#xff0c;根据约定&#xff0c;数名首字母小写即为private…

浅谈 Linux 中的 core dump 分析方法

文章目录 一、什么是 core dump二、发生 core dump 的原因1. 空指针或非法指针引起 core dump2. 数组越界或指针越界引起的 core dump3. 数据竞争导致 core dump4. 代码不规范 三、core dump 分析方法1. 启用 core dump2. 触发 core dump2-1. 因空指针解引用而崩溃2-2. 通过 SI…

图形编辑器基于Paper.js教程06:鼠标画圆与椭圆

绘制椭圆与圆形&#xff1a;利用Paper.js进行交互式图形设计 在Web应用中实现交互式图形绘制功能&#xff0c;对于提高用户体验至关重要&#xff0c;尤其是在设计和艺术相关的应用中。Paper.js是一款强大的JavaScript库&#xff0c;专门用于处理矢量图形&#xff0c;它提供了一…

智能语音门锁:置入NV170D语音芯片ic 打造便捷生活新体验

一、智能门锁语音芯片开发背景 随着科技的飞速发展&#xff0c;传统门锁的局限性日益凸显&#xff0c;无法满足现代人对高效、安全生活的需求。在这样的时代背景下&#xff0c;智能门锁应运而生&#xff0c;它不仅继承了传统门锁的基本功能&#xff0c;更通过融入先进的科技元素…

商标的近似分辩,商标起名称时注意!

曾有过网友发来商标名称&#xff0c;普推知商标老杨说有近似&#xff0c;然后网友起过新名称还是存有近似&#xff0c;或者加字&#xff0c;后面加的通用词&#xff0c;与先有商标名称也是近似。 “良信健康”这个名称健康是行业通用词&#xff0c;加成健康后变成四个字&#x…

出现 images and labels...0 found, xx missing, 0 empty, 0 corrupt 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 训练VOC的数据的时候出现如下问题: val: Scanning /home/l228/huoyanhao/yolov5/datasets/VOC/images/VOCdevkit/VOC2007/2007_val images and labels...0 found, 2510 missing, 0 empty, 0 corrupt: 100%|███████…

HTTP协议深入

1.了解web和网络基础 有客户端和服务端双方参与交互 客户端发送请求:request 服务端根据请求给出响应:response 请求通过URL来指定要获取都得资源 响应内容可以是HTML网页&#xff0c;或者用json表示的数据或者其他二进制文件内容 Web使用一种名为HTTP的协议作为规范&…

jEasyUI 添加分页组件

jEasyUI 添加分页组件 jEasyUI(jQuery EasyUI)是一个基于jQuery的用户界面插件集合,它为用户提供了一系列的UI组件,如菜单、窗口、数据网格等,以简化Web页面的开发。分页组件是jEasyUI中的一个重要部分,它允许用户在处理大量数据时,将数据分页显示,提高用户体验和数据…

AI与大模型工程师证书研修班报名啦!

人工智能大模型是指拥有超大规模参数&#xff08;通常在十亿个以上&#xff09;、超强计算资源的机器学习模型&#xff0c;能够处理海量数据&#xff0c;完成各种复杂任务&#xff0c;如自然语言处理、图像识别等。计算机硬件性能不断提升&#xff0c;深度学习算法快速优化&…

ESP32CAM物联网教学03

ESP32CAM物联网教学03 物联网小车 小智突发奇想&#xff1a;要是我在点灯物联APP中多增加几个按钮&#xff0c;控制小车的行驶方向&#xff0c;不就可以做成遥控小车了吗&#xff1f; 点灯物联控制小车的行驶方向 我们可以重新编辑点灯物联APP中的设备控件界面&#xff0c;如…

自定义控件之动画篇(六)——联合动画的代码及xml实现

在Android中&#xff0c;联合动画&#xff08;即组合多种类型的动画&#xff09;可以通过编写Java/Kotlin代码或XML资源文件来实现。这里我们将分别展示如何通过这两种方式来实现一个简单的自定义控件动画&#xff0c;该动画将包含平移和缩放效果。 1. XML 资源文件实现 首先…

AI学习指南机器学习篇-梯度提升树模型应用与Python实践

AI学习指南机器学习篇-梯度提升树模型应用与Python实践 机器学习领域中的梯度提升树&#xff08;Gradient Boosting Tree&#xff09;模型是一种非常强大且广泛应用的模型&#xff0c;它在各种数据类型和问题类型上都表现出色。在本篇博客中&#xff0c;我们将介绍如何使用Pyt…

开关电源中强制连续FCCM模式与轻载高效PSM,PFM模式优缺点对比笔记

文章目录 前言一、连续FCCM模式优点&#xff1a;缺点&#xff1a; 二,轻载高效PSM&#xff0c;PFM优点&#xff1a;缺点: 总结 前言 今天我们来学习下开关电源中&#xff0c;强制连续FCCM模式与轻载高效PSM&#xff0c;PFM模式优缺点对比 一、连续FCCM模式 优点&#xff1a; …

mac中如何恢复因为破解脚本导致的IDEA无法启动的问题

问题 为了在mac中安装免费的2024版idea&#xff0c;导致下载了一个脚本&#xff0c;使用这个脚本后&#xff0c;但是发现idea还没有破解&#xff0c;相反导致idea无法启动&#xff0c;每次点击&#xff0c;都会弹出“cannot start IDE…” 问题排查 在访达中点击mac的应用程…

docker -run hello-world超时

主要原因就是尝试拉取库的时候没有从阿里云镜像里拉&#xff0c;所以设置一下就好了 这里使用的是ubuntu系统&#xff08;命令行下逐行敲就行了&#xff09; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": [&quo…

什么是生成式人工智能

什么是生成式人工智能 生成式人工智能生成式人工智能的特点生成式人工智能的工作原理生成式人工智能的类型生成式人工智能面临的挑战数据要求训练复杂性控制输出道德问题监管障碍 生成式人工智能 生成式人工智能是指旨在生成书面文本、音频、图像或视频形式的新内容的人工智能…

Adobe Acrobat添加时间戳服务器

文章目录 前言一、Adobe Acrobat添加时间戳服务器1.打开Adobe Acrobat软件2.点击【菜单】→ 【首选项】3.点击【安全性】→【更多】4.点击【新建】5.输入【名称】→【服务器URL】 前言 一、Adobe Acrobat添加时间戳服务器 1.打开Adobe Acrobat软件 2.点击【菜单】→ 【首选项…

模拟退火算法1——简介

模拟退火算法来源于固体退火原理&#xff0c;将固体加温至充分高&#xff0c;再让其徐徐冷却&#xff0c;加温时&#xff0c;固体内部粒子随温升变为无序状&#xff0c;内能增大&#xff0c;而徐徐冷却时粒子渐趋有序&#xff0c;在每个温度都达到平衡态&#xff0c;最后在常温…

[C++][设计模式][访问器]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一2.代码二 1.动机 在软件构件过程中&#xff0c;由于需求的变化&#xff0c;某些类层次结构中常常需要增加新的行为(方法)&#xff0c;如果直接在基类中做这样的更改&#xff0c; 将会给子类带来很繁重的变更负担&#xff0c…