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- 50 00 0) //配置T0为 500 00us中断一次;

//函数功能: 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的中断服务函数,每 500 00us中断一次;

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

}

}

相关推荐
就是蠢啊9 分钟前
51单片机——红外遥控(一)
单片机·嵌入式硬件·51单片机
影阴15 分钟前
物联网通信之CAN通讯
单片机·物联网
范纹杉想快点毕业25 分钟前
FPGA实现同步RS422转UART方案
数据库·单片机·嵌入式硬件·fpga开发·架构
CS Beginner33 分钟前
【单片机】如何理解GPIO的配置寄存器?
单片机·嵌入式硬件
平凡灵感码头1 小时前
第一次做蓝牙产品,从零开发(5)蓝牙音频项目中功放芯片
单片机·嵌入式硬件·音视频
离凌寒5 小时前
一、在freertos上使用esp01s模块并配置使用sta模式进行数据通信传输测试。
单片机·freertos·esp01s
星期天29 小时前
1.1江科大之LED闪烁&LED流水灯&蜂鸣器
stm32·单片机·嵌入式硬件
梓德原9 小时前
【经验】MSP430编译器使用经验-IAR编辑框分框
单片机·嵌入式硬件·物联网
电子工程师-C519 小时前
基于51单片机的自动乒乓球发球机
单片机·嵌入式硬件·51单片机
玩转单片机与嵌入式10 小时前
在STM32F103单片机上跑通AI模型:为什么选正弦波作为Hello World?
人工智能·stm32·单片机