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

}

}

相关推荐
FreakStudio9 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘14 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484914 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150014 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼14 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi14 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘14 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展14 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司14 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑14 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习