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

}

}

相关推荐
吠品4 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
Chery11405 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
小李不想当小白8 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米9 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
尼喃10 小时前
662K/65Z5三脚稳压芯片规格书—PW6566B33/B30引脚功能
嵌入式硬件
创界工坊工作室10 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家11 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
Zwawa13 小时前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
意法半导体STM3213 小时前
【官方原创】LAT6048 如何扩大MP2的A35核和M33核共享内存
stm32·单片机·嵌入式硬件·内存映射·stm32mp2
en.en..13 小时前
STM32(F429)启动模式与两种烧录方式
stm32·单片机·嵌入式硬件