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

}

}

相关推荐
远望创客学堂7 小时前
【单片机毕业设计选题24047】-基于阿里云的工地环境监测系统
stm32·单片机·嵌入式硬件·阿里云·云计算·课程设计·arduino
极客小张7 小时前
利用 STM32 实现多协议物联网网关:Modbus/Zigbee 到以太网/Wi-Fi 的数据桥接
stm32·单片机·嵌入式硬件·物联网·网络协议·https·硬件工程
FPGAmaster创新者8 小时前
基于AGX ORIN与FPGA K7实现PCIE高速数据通信/Orin与FPGA高速数据传输/XDMA在linux系统使用教程
linux·嵌入式硬件·fpga开发
XD7429716368 小时前
【TB作品】电子琴,ATMEGA16单片机,Proteus仿真
单片机·proteus·电子琴·atmega
maybe_YX8 小时前
51单片机基础8——单片机控制超声波模块
c语言·单片机·嵌入式硬件·51单片机
@一二三四五9 小时前
STM32 看门狗 HAL
stm32·单片机·嵌入式硬件
北京迅为9 小时前
【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第四章 Ubuntu启用root用户
linux·嵌入式硬件
maybe_YX9 小时前
51单片机基础10——串口实验
c语言·单片机·嵌入式硬件·51单片机
Qingniu0110 小时前
开关电源的电路组成原理
单片机·嵌入式硬件·新能源·电源模块·无刷电机
芯源义码11 小时前
嵌入式软件常用测试工具
单片机