此例子可以测试sleep时候的功耗,测试的时候 要注意sleep退出时间,不能让其反复立马进去,要不然,不好测试。

参考miniC编程助手测试例子,方便自己测试验证

//===========================================//
//                  休眠
//主要介绍了省电模式和掉电模式
//省电模式介绍了用计数器唤醒和IO唤醒,
//  例中介绍了T16唤醒后且num自加超过100后退出休眠,即针对不是IO脚电平变化的唤醒条件的唤醒
//  IO唤醒的唤醒条件可参考掉电模式,其他不变
//掉电模式介绍了IO唤醒
//  例中介绍了IO脚电平变化后唤醒,即针对IO脚电平变化的唤醒条件的唤醒
//===========================================//
#include    "extern.h"byte    CLKMD_BK;//=======省电模式=========
byte    num;
word    reload_T16;BIT     KEY      :   PA.4;
bit     LED     :   PA.3        //定义LED灯的引脚void Save_power(void)
{//======User can add code=====//进入省电模式前动作,如关灯、关计数器等//============================CLKMD_BK = CLKMD;                  //保存休眠前的时钟num = 0;while(1){$ CLKMD ILRC/1,En_IHRC,En_ILRC; //系统时钟选择,是否启用IHRC,是否启用ILRC,(En_IHRC和En_ILRC不写为停用,写为启用)//系统时钟可选择IHRC/4, IHRC/16, IHRC/2, IHRC/8, ILRC/16, EOSC/4, IHRC/32, EOSC/2, IHRC/64, EOSC/1, EOSC/8, ILRC/4, ILRC/1//选择系统时钟为ILRC/1,启用IHLC和IHRC;(注:两个RC振荡器至少有一个开启,否则会出现宕机)CLKMD.En_IHRC = 0;              //关闭高频IHRCnop;//========设置T16定时,详情请参考T16=========$ T16M ILRC,/1,bit8;reload_T16 = 0;stt16 reload_T16;stopexe;                      //进入省电模式,T16计时溢出时唤醒$ CLKMD IHRC/64,EN_IHRC,EN_ILRC;//选择系统时钟为IHRC/64,启用IHLC和IHRC;CLKMD.En_ILRC = 0;                //关闭低频ILRCnop;//=======编写唤醒条件=========//例如num自加超过100后唤醒,该方法针对不是IO脚电平变化的唤醒条件num++;if(num > 100)                  //假如发生唤醒而且满足唤醒条件,就返回正常工作{                                //否则停留在省电模式,继续休眠break;}}CLKMD = CLKMD_BK;                   //恢复休眠前的时钟//======User can add code=====//唤醒后打开需要的动作,比如开灯、定时器等//============================
}
//=======掉电模式=========
void    Power_down(void)
{//======User can add code=====//进入省电模式前动作,如关灯、关计数器等//============================CLKMD_BK = CLKMD;                  //保存休眠前的时钟//PAC.0 = 0;PAPH.0 = 1;             //将PA0设置为输入上拉//PADIER = 0b0001_0001;               //将PA0设置为数字模式//休眠前需要切换低频ILRC用来防止唤醒失败$ CLKMD ILRC/1,En_IHRC,En_ILRC;     //系统时钟选择,是否启用IHRC,是否启用ILRC,(En_IHRC和En_ILRC不写为停用,写为启用)//系统时钟可选择IHRC/4, IHRC/16, IHRC/2, IHRC/8, ILRC/16, EOSC/4, IHRC/32, EOSC/2, IHRC/64, EOSC/1, EOSC/8, ILRC/4, ILRC/1//选择系统时钟为ILRC/1,启用IHLC和IHRC;(注:两个RC振荡器至少有一个开启,否则会出现宕机)CLKMD.En_IHRC = 0;                  //关闭高频nop;while(1){stopsys;                     //进入断电模式//=======编写唤醒条件=========//例如PA0由高变低唤醒,该方法针对IO脚电平变化的唤醒条件if(!PA.0)                     //假如发生唤醒而且检查OK,就返回正常工作{                              //否则停留在断电模式break;}}$ CLKMD IHRC/64,EN_IHRC,EN_ILRC; //选择系统时钟为IHRC/64,启用IHLC和IHRC;nop;CLKMD = CLKMD_BK;                   //恢复休眠前的时钟//======User can add code=====//唤醒后打开需要的动作,比如开灯、定时器等//============================
}void   IO_Init(void)
{//----------------------------PA       =  0b0001_1000;PAC     =  0b0000_1000;    //1:输出   0:输入PAPH   =  0b0001_1001;    //1:加上拉 0:不加上拉PB        =  0b0000_0000;PBC     =  0b0000_0000;PBPH    =  0b0000_0000;PADIER  =  0b0001_0001;    //将PA4 PA0设置为数字模式PBDIER =  0b0000_0000;    //1: 设置为数字模式  //单个IO设置//$ PA.0 out,high;    //PA0输出高//$ PA.3 out,low;       //PA3输出低
}
void    FPPA0 (void)
{.ADJUST_IC SYSCLK=IHRC/16, IHRC=16MHz, VDD=5V;.delay 40000;IO_Init();$ KEY in,pull;     //PA4输入上拉$ LED out,high;                //初始把灯点亮(高电平点灯)while (1){//Save_power();                  //省电模式休眠if(!KEY)  //KEY PA3 拉低进入Sleep模式,PA0拉低退出睡眠模式,方便测试Sleep功耗{.delay 10000;   //.delay 1000000;  1000ms = 1sif(!KEY) {Power_down();                    //掉电模式休眠//Save_power();                 //省电模式休眠//$ LED toggle;}}}
}void   Interrupt (void)
{pushaf;if (Intrq.T16){ //  T16 Trig//  User can add codeIntrq.T16  =  0;//...}popaf;
}

最小系统板子 测试电流,可惜我自己的万用表精度太差,无法体现出来ua级别 就不上图了

应广单片机 PMS150G 161 171 基础例子【sleep】相关推荐

  1. 应广单片机 PMS150G、FPC161 基础例子【GPIO设置】

    应广单片机 PMS150G.FPC161 基础例子[GPIO设置] 调试方式:仿真器5S-I-S02B 编译软件:FPPA IDE 编译语言:mini C 电脑系统:win10 软件功能:设置GPIO ...

  2. 手机c语言mini,一、应广单片机的Mini-C语言基础

    一.概述 项目需要性价比高一点的芯片,在澄海这边,台湾的芯片占了很大的市场.台湾芯片的特点是便宜,没办法,玩具出口生产量太大,1分钱的差价都有可能累积出大价钱.选型时选了应广单片机.对于用惯了C开发的 ...

  3. 应广单片机 PMS150G,PWM例程

    前言 基于PMS150G操控PWM调节占空比做到呼吸灯,调节灯光亮度的作用 直接看代码吧,都有注释 代码1 呼吸灯 #include "extern.h"void TM2_Init ...

  4. 二、应广单片机点亮一个灯

    上一节介绍基础,由于时间仓促,写得十分模糊.这一节开始从一个个实际例子,向大家展示应广单片机的各项功能.由于看本文的读者层次不相同,这里全部按照初学者视之. 废话少说,上例程: //========= ...

  5. 应广单片机PMS152

    今天我们来讲讲应广单片机PMS152.PMS152系列是一款IO类型,完全静态以OTP为程序基础的CMOS  8bit 微处理器.它运用RISC的架构并且所有的指令架构的执行周期都是一个指令周期,只有 ...

  6. 应广单片机红外发射例程

    应广单片机红外发射例程,采用PMS150G,其他的MCU型号直接修改就好 //--------------PMS150G---------- // _@ // |1vdd gnd8| // |2pa7 ...

  7. 应广单片机开发案例应广单片机11bitPWM配置

    应广单片机有两种硬件pwm,一种是8bit,另外一种是11bit,8bit的配置稍微简单一些.现在以pms133/psm134为例子,贴一个11bit pwm配置的例子.修改一下可以应用于应广其他系列 ...

  8. 应广单片机PMC150/PMS150

    前面我们讲了应广单片机PMS152,那么我们今天来讲一下应广单片机另外一个型号PMC150/PMS150. PMC150/PMS150是一个IO类型.完全静态,以OTP为程序存储基础的单片机.它运用R ...

  9. 应广单片机11bitPWM配置

    应广单片机有两种硬件pwm,一种是8bit,另外一种是11bit,8bit的配置稍微简单一些.现在以pms133/psm134为例子,贴一个11bit pwm配置的例子.修改一下可以应用于应广其他系列 ...

最新文章

  1. ASP.NET的WebFrom组件LinkButton编程
  2. 48. C# -- 事件
  3. python中pow_python – 为什么pow(x,y)的时间复杂度为O(1),而x ** y为O(n)?
  4. SQL Server 存储引擎-剖析Forwarded Records
  5. 2019年度最受欢迎中国开源软件评选, 请给JeecgBoot 投票,谢谢支持
  6. matlab的annotation,科学网—annotation in matlab Graph - 夏靖的博文
  7. 为什么构造函数不能声明为虚函数?
  8. 自己手动复现一个熊猫烧香病毒
  9. 【密码学原理与实践】(五)希尔密码
  10. 001.UG_NX概述
  11. C语言程序设计笔记(浙大翁恺版) 第七章:函数
  12. 四小时学python爬虫爬取信息系列(第一天)
  13. [ASP.NET]web实现用FTP上传、下载文件(附源码)
  14. Could not start on port 1099 3837
  15. 会议签到web_基于Web的网络签到系统设计与实现
  16. Java 秒数分钟转小时分钟
  17. 离散数学复习重点(1)
  18. 计算机仿真技术-基于matlab的电子信息类课程课后答案,计算机仿真技术——基于MATLAB的电子信息类课程(第3版)...
  19. 汇编中的la_汇编语言中,SP,BP ,SI,DI作用?
  20. 百度天工AIoT打造农业种植方案,用数字经济助力建设农业新模式

热门文章

  1. word文档转html在线预览Demo
  2. cdma2000解析_CDMA2000 1x EV-DO 分层协议解析
  3. 苹果官方付费升级内存_vivo超大福利惠及老用户,内存升级覆盖全国官方服务中心...
  4. 计算机对人类发展进步的意义,量子力学对人类发展的意义
  5. Linux快速学习-进程号端口查询
  6. php中克隆对象,复制与克隆对象《 PHP 面向对象 》
  7. 软硬件视频会议互通方案
  8. H5 IOS webview设置背景透明
  9. python攻击某个wifi设备使断网_Python实现WiFi断线自动重连的方法详解
  10. AR/VR中使用Overlay提升清晰度