电子发烧友网 > 控制/MCU > 正文

单片机的空闲和掉电模式的应用

2018年11月20日 15:00 次阅读

注意:电源管理寄存器PCON,它的最低两位IDL和PD分别用来设定是否单片机进入空闲模式和掉电模式

因此,单片机进入掉电模式只需要PCON= 0x01;进入空闲模式只需要PCON = 0x02;

空闲模式:

单片机进入空闲模式的时候,除了cpu处于休眠状态外,其余的硬件全部处于活动状态,芯片中未涉及的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值

单片机在空闲模式下可由任何一个中断或者是硬件复位唤醒,值得注意的是,使用中断唤醒单片机,程序将从原来的停止的地方继续运行,当使用硬件复位时,程序将从头开始执行

单片机的空闲和掉电模式的应用

掉电模式:

当单片机进入掉电模式(也叫休眠模式)外部晶振停止震动,cpu,定时器,串口全部停止工作,只有外部中断继续工作,使单片机进入掉电模式的指令将成为休眠前单片机工作的最后一条指令,值得注意的是,使用中断唤醒单片机,程序将从原来的停止的地方继续运行,当使用硬件复位时,程序将从头开始执行

示例代码:(此代码实现,在单片机上开启两个外部中断,设置为低电平触发,用定时器计数并且显示在数码管的前两位,当计数到5时,单片机进入空闲或者是休眠模式,当单片机响应外部中断时,从休眠模式(空闲模式)返回 ,并同时启动定时器

错误代码:

#include

#define uint unsigned int

#define uchar unsigned char

sbit dula = P2^6;

sbit wela = P2^7;

uchar num ,gw,sw,aa;

uchar code table[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void init()//初始化函数

{

TMOD = 0x01;

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

EA = 1;

ET0 = 1;

EX0 = 1;//打开外部中断0

// IT0 = 0;//电平触发方式

EX1 = 1;//打开外部中断1

// IT1 = 0;

TR0 = 1;

}

void delayms(uint x)//延时函数

{

uint i,j;

for(i = x;i》0;i--)

for(j=110;j》0;j--);

}

void display(uchar gw,uchar sw)//显示函数

{

dula = 1;

P0 = table[sw];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xfe;

wela = 0;

delayms(5);

P0 = 0x0;//消影

dula = 1;

P0 = table[gw];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xfd;

wela = 0;

delayms(5);

}

void main()

{

init();

while(1)

{

display(gw,sw);

}

}

void timer0()interrupt 1

{

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

aa ++;

if(aa ==20)

{

aa =0;

num++;

if(num == 99)

num =0;

gw = num%10;

sw = num/10;

if(num == 6)

{

ET0 = 0;//关闭定时器

PCON = 0x01;//单片机进入空闲模式

}

}

}

void ex_int0()interrupt 0

{

// PCON = 0;//可要可不要

ET0 =1;

}

void ex_int1()interrupt 2

{

// PCON = 0;//可要可不要

ET0 = 1;

}

正确代码:

#include

#define uint unsigned int

#define uchar unsigned char

sbit dula = P2^6;

sbit wela = P2^7;

uchar num ,gw,sw,aa;

uchar code table[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void init()//初始化函数

{

TMOD = 0x01;

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

EA = 1;

ET0 = 1;

EX0 = 1;//打开外部中断0

// IT0 = 0;//电平触发方式

EX1 = 1;//打开外部中断1

// IT1 = 0;

TR0 = 1;

}

void delayms(uint x)//延时函数

{

uint i,j;

for(i = x;i》0;i--)

for(j=110;j》0;j--);

}

void display(uchar gw,uchar sw)//显示函数

{

dula = 1;

P0 = table[sw];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xfe;

wela = 0;

delayms(5);

P0 = 0x0;//消影

dula = 1;

P0 = table[gw];

dula = 0;

P0 = 0xff;

wela = 1;

P0 = 0xfd;

wela = 0;

delayms(5);

}

void main()

{

init();

while(1)

{

if(aa ==20)

{

aa =0;

num++;

if(num == 99)

num =0;

gw = num%10;

sw = num/10;

if(num == 6)

{

ET0 = 0;//关闭定时器

PCON = 0x01;//单片机进入空闲模式

}

}

display(gw,sw);

}

}

void TImer0()interrupt 1

{

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

aa ++;

}

void ex_int0()interrupt 0

{

// PCON = 0;//可要可不要

ET0 =1;

}

void ex_int1()interrupt 2

{

// PCON = 0;//可要可不要

ET0 = 1;

}

错误代码中,把

if(aa ==20)

{

aa =0;

num++;

if(num == 99)

num =0;

gw = num%10;

sw = num/10;

if(num == 6)

{

ET0 = 0;//关闭定时器

PCON = 0x01;//单片机进入空闲模式

}

}

这部分代码放在了定时器0的中断函数中,没有放在主函数中,导致外部中断无法响应,单片机无法从掉电模式或者是休眠模式中醒来

实验现象:数码管从00计数到05,之后进入休眠,数码管显示5,之后来一个外部中断,从5继续计数

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

基于双模式USB接口的便携式比色计设计

发表于 2018-11-20 11:18 62次阅读
基于双模式USB接口的便携式比色计设计

基于C8051F021和RA8835的液晶显示系统设计

发表于 2018-11-20 11:16 25次阅读
基于C8051F021和RA8835的液晶显示系统设计

单片机实时控制输出电压

发表于 2018-11-20 10:59 99次阅读
单片机实时控制输出电压

请问ADuC824正弦波转方波时频带要比较宽时怎么办

发表于 2018-11-20 09:23 18次阅读
请问ADuC824正弦波转方波时频带要比较宽时怎么办

24V地与3.3V地的隔离该用什么样的方法来做

发表于 2018-11-20 08:53 71次阅读
24V地与3.3V地的隔离该用什么样的方法来做

usb转vcp接收与连接回调函数如何处理 ?

发表于 2018-11-20 08:44 47次阅读
usb转vcp接收与连接回调函数如何处理 ?

无线遥控器单片机芯片方案EEPROM PWM配齐——深圳单片机开发方案公司

发表于 2018-11-19 18:14 6次阅读
无线遥控器单片机芯片方案EEPROM PWM配齐——深圳单片机开发方案公司

圣诞节LED灯饰单片机方案——深圳单片机开发方案公司

发表于 2018-11-19 17:44 54次阅读
圣诞节LED灯饰单片机方案——深圳单片机开发方案公司

单片机中的拉电流和灌电流是什么意思

单片机的拉电流和灌电流都是对单片机的输出而言的,是单片机驱动能力的具体体现。

发表于 2018-11-19 16:22 41次阅读
单片机中的拉电流和灌电流是什么意思

STM32F4的FPU性能的设置及要点

浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标...

发表于 2018-11-19 15:47 44次阅读
STM32F4的FPU性能的设置及要点

PIC16C5X系列单片机的四种振荡方式解析

PIC16C5X系列可以使用4种类型振荡方式:标准晶体/陶瓷振荡XT、高速晶体振荡HS(4MHz以上...

发表于 2018-11-19 15:43 18次阅读
PIC16C5X系列单片机的四种振荡方式解析

单片机应该如何学习才有效

发表于 2018-11-19 15:02 185次阅读
单片机应该如何学习才有效

招模拟IC及MCU研发 年薪30~50万 待遇可谈

发表于 2018-11-19 14:40 66次阅读
招模拟IC及MCU研发  年薪30~50万 待遇可谈

单片机调试有那些常见问题如何解决

error: #18: 6.error: #18: expected a ")" 如果是出现在c...

发表于 2018-11-17 11:50 470次阅读
单片机调试有那些常见问题如何解决

浅谈智能仪表未来发展趋势

智能仪表是以微型计算机(单片机)为主体,将计算机技术和检测技术有机结合,组成新一代“智能化仪表”。微...

发表于 2018-11-16 15:04 54次阅读
浅谈智能仪表未来发展趋势

浅析单片机数码管的8个段显示效果

数码管的 8 个段,我们直接当成 8 个 LED 小灯来控制,那就是 a、b、c、d、e、f、g、d...

发表于 2018-11-15 16:21 175次阅读
浅析单片机数码管的8个段显示效果

深度解析单片机复位电路

射频干扰,它是以空间电磁场的形式传递 在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁...

发表于 2018-11-15 11:32 276次阅读
深度解析单片机复位电路

PIC12F675单片机用于热释红外传感器中的应...

现在用于检测人员进出的探测器主要采用热释红外传感器。人体能够发射10μm左右的红外线,热释红外传感器...

发表于 2018-11-14 16:38 81次阅读
PIC12F675单片机用于热释红外传感器中的应...

探讨STC单片机烧写时出现的情况

MAX232转换板出口接三条线到STC单片机RXD,TXD和GND,单片机未通电,但这时RXD上有电...

发表于 2018-11-14 16:34 172次阅读
探讨STC单片机烧写时出现的情况

单片机最小系统的组成及其原理解析

单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。

发表于 2018-11-14 16:06 124次阅读
单片机最小系统的组成及其原理解析

单片机采用串行方式对LCD12864的驱动

#i nclude #i nclude sbit SCLK =P1^3 //E s...

发表于 2018-11-12 15:19 88次阅读
单片机采用串行方式对LCD12864的驱动

如何测试单片机的数据类型字节数

i = sizeof(char);//char是一字节的变量 if(i == 1) { ...

发表于 2018-11-12 15:13 79次阅读
如何测试单片机的数据类型字节数

单片机中断源情况大汇总 嵌入式时代已经到来

嵌入式时代已经来了,不要纠结要不要踏入嵌入式的领域了,

发表于 2018-11-12 10:44 227次阅读
单片机中断源情况大汇总 嵌入式时代已经到来

基于12864液晶屏实现多功能数字时钟的实验设计

首先来看看所需要的清单:51单片机STC12C5A60S2、12864液晶屏、温度传感器DS18B2...

发表于 2018-11-10 11:37 82次阅读
基于12864液晶屏实现多功能数字时钟的实验设计

基于51单片机使数码管静态显示数字5555

利用单片机及某些数字电路块的结合,可以实现静态字符的显示。本例是利用74LS164八位移位寄存器(串...

发表于 2018-11-10 11:33 126次阅读
基于51单片机使数码管静态显示数字5555

基于深联华单片机芯片的医用输液器智能控制系统设计

众所周知,我国人口众多,医疗资源稀缺,医院时常人满为患。输液作为一种重要的治疗手段,其受众面是非常之...

发表于 2018-11-10 11:30 192次阅读
基于深联华单片机芯片的医用输液器智能控制系统设计

如何提高单片机系统的可靠性

提高单片机系统可靠性的方法与措施很多。一般地,应根据系统所面临的具体的可靠性问题,针对引起或影响系统...

发表于 2018-11-09 15:20 107次阅读
如何提高单片机系统的可靠性

单片机中如何实现多线程

整个项目需要控制16台步进电机,21个电磁阀,3个泵,1个直流电机,系统要求全部执行时间为6秒钟,系...

发表于 2018-11-08 16:21 162次阅读
单片机中如何实现多线程

STM32F103试用体验:水共震准备材料中的过...

我这次要做的东东是一个水共震系统,说明:水共震系统是指在一个水盆里,有一个执行单元,通过电机和皮带,...

发表于 2018-11-08 10:38 290次阅读
STM32F103试用体验:水共震准备材料中的过...

一文了解逻辑分析仪当中的高级参数

对于快速高效的调试,选择逻辑分析仪解决方案时,需要重点评估仪器各方面参数,逻辑分析仪在数字电路的前期...

发表于 2018-11-08 09:07 59次阅读
一文了解逻辑分析仪当中的高级参数

比较逻辑分析仪与示波器之间的区别

目前电路的发展从抽象类似向着数字化发展,因此这些测量仪器的开发也正在朝着这种条件方法迈进。 现在,在...

发表于 2018-11-08 08:55 93次阅读
比较逻辑分析仪与示波器之间的区别

浅析单片机、ARM、FPGA 、嵌入式的特点

自带廉价的程序存储器(FLASH)和非易失的数据存储器(EEPROM)。这些存储器可多次电擦写,使程...

发表于 2018-11-07 09:54 463次阅读
浅析单片机、ARM、FPGA 、嵌入式的特点

如何系统地入门学习stm32?老司机筒子们有自己...

arm 官方也开始推这种通用库了。而此时st发现一剑走天涯的方法的确有很多弊端,开始了stmcube...

发表于 2018-11-06 17:07 535次阅读
如何系统地入门学习stm32?老司机筒子们有自己...

单片机无线传输系统的设计及nRF905无线收发模...

nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器、功率放大器等模块,曼彻斯特编码...

发表于 2018-11-06 16:00 87次阅读
单片机无线传输系统的设计及nRF905无线收发模...

五花八门的关于单片机的开发经验

AT89C51我认为是一个非常标准的51单片机了,4个P口,1个串口,RAM只有标准的128Byte...

发表于 2018-11-06 15:58 398次阅读
五花八门的关于单片机的开发经验

浅析单片机中断处理过程

中断处理过程可分为中断响应、中断处理和中断返回三个阶段。

发表于 2018-11-06 14:31 230次阅读
浅析单片机中断处理过程

如何使用可编程斜坡发生器外设创建参考信号和时序源

可编程斜坡发生器(PRG)(在Microchip最近推出的几款8位PIC 单片机上提供)是一种高度灵...

发表于 2018-11-06 09:15 185次阅读
如何使用可编程斜坡发生器外设创建参考信号和时序源

单片机中的定时计数器的四种工作方式解析

在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。,TMOD和TCON是名称...

发表于 2018-11-05 16:11 135次阅读
单片机中的定时计数器的四种工作方式解析

借助Vivado来学习FPGA的各种配置模式

单片机是基于FLASH结构的,所以单片机上电直接从本地FLASH中运行。但SRAM 架构的FPGA是...

发表于 2018-11-05 15:12 369次阅读
借助Vivado来学习FPGA的各种配置模式

单片机IO口另外三种状态

标准 51 单片机的P0 口默认就是开漏输出,如果要用的时候外部需要加上拉电阻。而强推挽输出就是有比...

发表于 2018-11-05 11:40 538次阅读
单片机IO口另外三种状态

上拉电阻应用很多,都可以起到什么作用呢?

加大普通 IO 口的驱动能力。标准 51 单片机的内部 IO 口的上拉电阻,一般都是在几十 K 欧,...

发表于 2018-11-05 11:35 444次阅读
上拉电阻应用很多,都可以起到什么作用呢?

为何不在单片机上实现PLC的逻辑呢?

内存规划,包括堆栈区的设置,定时器,计数器的累加值和预设值地址等等,目前初步定义8个计数器的当前计数...

发表于 2018-11-05 11:31 503次阅读
为何不在单片机上实现PLC的逻辑呢?

开发单片机时需掌握的四个基本技巧

在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着。现归纳出单片机开发中应...

发表于 2018-11-05 11:21 373次阅读
开发单片机时需掌握的四个基本技巧

准备学习单片机,该做哪些准备呢?

这估计是争论最大的一个问题了,有些人坚持学单片机软件一定要用汇编,也有人坚持选择高级语言。C51刚推...

发表于 2018-11-05 11:00 432次阅读
准备学习单片机,该做哪些准备呢?

单片机为什么需要晶振?外接晶体的值可以随意选择呢...

获取稳定的脉冲!那只要有合适的方法生成稳定的脉冲,那就可以去掉外接的晶体。举例,AVR单片机,它在单...

发表于 2018-11-05 10:40 341次阅读
单片机为什么需要晶振?外接晶体的值可以随意选择呢...

MCU的内存分配详解

其中code和RO-data存储在flash中,所以两者之和为单片机中flash需要分配给它们的空间...

发表于 2018-11-04 11:24 111次阅读
MCU的内存分配详解

单片机、ARM、DSP与CPU之间的关系大揭秘

你知道单片机、ARM、DSP都是CPU吗,它们之间又有什么不同,小编进行了整理和编辑。

发表于 2018-11-02 17:38 592次阅读
单片机、ARM、DSP与CPU之间的关系大揭秘

单片机中的上下拉电阻有什么作用

上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻也起到一个限流作用,下拉就是下拉到低电平...

发表于 2018-11-02 16:22 169次阅读
单片机中的上下拉电阻有什么作用

单片机中的CY与OV详细解析

CY(Carry): 用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位...

发表于 2018-11-02 16:15 145次阅读
单片机中的CY与OV详细解析

基于STM32单片机的64Mbit单对单通信

简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。

发表于 2018-11-02 14:19 251次阅读
基于STM32单片机的64Mbit单对单通信

AVR系列单片机的主要特性及选型

AVR单片机是1997年由ATMEL公司研发 出的增强型内置Flash的RISC(Reduced I...

发表于 2018-11-02 09:20 327次阅读
AVR系列单片机的主要特性及选型

单片机中的冷复位和热复位是什么意思

冷复位用英文来表示是Restart,热复位用英文来表示是Reset。

发表于 2018-11-01 16:25 186次阅读
单片机中的冷复位和热复位是什么意思

单片机存储器的工作原理及选片与总线的概念解析

存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低...

发表于 2018-11-01 16:15 116次阅读
单片机存储器的工作原理及选片与总线的概念解析

基于单片机的I2C和EEPROM连接

在实际的应用中,保存在单片机RAM中的数据,掉电后就丢失了,保存在单片机的FLASH 中的数据,又不...

发表于 2018-11-01 10:38 287次阅读
基于单片机的I2C和EEPROM连接

面对芯片及其相关的软件开发技术的快速发展变化如何...

单片机不是裸奔就是RTOS,其实玩过RTOS和linux的同学都知道,RTOS虽然也叫操作系统,但是...

发表于 2018-10-31 17:05 418次阅读
面对芯片及其相关的软件开发技术的快速发展变化如何...

单片机通用寄存器的分类及应用

通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特...

发表于 2018-10-31 16:50 119次阅读
单片机通用寄存器的分类及应用

单片机为何不能直接驱动继电器

虽然这个问题对于电子老白来说不值一提,不过对于初学单片机的朋友,问这个问题的人实在是太多了,以前总是...

发表于 2018-10-31 16:23 476次阅读
单片机为何不能直接驱动继电器

如何实现单片机UART串行数据与CAN数据之间相...

GCAN-601模块是嵌入式单片机UART串口转CAN模块,可实现将UART串行数据与CAN数据之间...

发表于 2018-10-31 16:00 359次阅读
如何实现单片机UART串行数据与CAN数据之间相...

单片机硬件电路设计的七个原则分享

一个单片机硬件系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RA...

发表于 2018-10-30 16:22 196次阅读
单片机硬件电路设计的七个原则分享

单片机实现利用中断复位的两种方式

如果想要实现利用中断复位,我所知道的有两种方式:看门狗中断和无中断服务程序的中断。

发表于 2018-10-30 15:55 299次阅读
单片机实现利用中断复位的两种方式

简单分析树莓派的优点与缺点

关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文...

发表于 2018-10-30 15:08 446次阅读
简单分析树莓派的优点与缺点

Arduino/树莓派/单片机/arm区别分析

Arduino是一款由开源软件环境提供支撑的开源硬件原型平台。最早是意大利的一个团队的一个开源项目,...

发表于 2018-10-30 11:06 403次阅读
Arduino/树莓派/单片机/arm区别分析

浅谈树莓派与单片机的区别

树莓派指的是一款硬件开源的,树莓派是一个成品开发板,上面也有CPU、内存,但是它们都是以分立的芯片的...

发表于 2018-10-30 09:42 453次阅读
浅谈树莓派与单片机的区别

如何使用单片机中printf

1. 如c语言同:printf(“”);在控制台就会输出“”中的内容; 2. 通过串口输出:只...

发表于 2018-10-29 15:48 151次阅读
如何使用单片机中printf

远程代码执行漏洞现身运行内嵌式系统的流行操作系统

在主要用于智能家居及关键基础设施系统中的大部分微处理器与单片机的开源操作系统FreeRTOS中,已发...

发表于 2018-10-28 09:30 482次阅读
远程代码执行漏洞现身运行内嵌式系统的流行操作系统

STM32单片机如何超频工作超大约多少还能正常工...

根据微软学术的定义,所谓超频(OVERCLOCKING)就是强制将计算机或硬件运行于厂商指定的时钟频...

发表于 2018-10-28 09:26 622次阅读
STM32单片机如何超频工作超大约多少还能正常工...

基于单片机D/A输出程序编写分享

D/A 是和 A/D 刚好反方向的,一个 8 位的 D/A,从 0~255,代表了 0~2.55V ...

发表于 2018-10-26 16:03 119次阅读
基于单片机D/A输出程序编写分享

基于stm8s103k3单片机串口UART的正确...

我使用的是stm8s103k3,32脚单片机,这个使用手册上说了UART1,UART2,UART3。...

发表于 2018-10-26 15:43 104次阅读
基于stm8s103k3单片机串口UART的正确...

基于单片机在异形曲面在线检测系统中的应用设计

随着三维设计软件常利用对系统模拟优化分析、路况的反馈和理论的计算,能够设计出高水平曲面异形线和截面,...

发表于 2018-10-26 15:19 66次阅读
基于单片机在异形曲面在线检测系统中的应用设计

单片机中的定时器与计数器有何不同,二者的区别是什...

定时器实际上也是工作在计数方式下,只是计数的是固定周期的脉冲,由于脉冲周期固定,由计数值可以计算时间...

发表于 2018-10-26 14:58 201次阅读
单片机中的定时器与计数器有何不同,二者的区别是什...