研究一下单片机的掉电模式
admin · 经验心得 · 2024年09月27日

掉电模式:将PCON第二位设置为1,单片机将进入掉电模式,内部晶振停振,所以CPU、定时器、看门狗、串口等都将价值工作,如果外部中断INT0和INT1被允许中断(90C52RC),则可以低电平或者下降沿触发,否则也将停止工作。

复位也是从掉电模式唤醒,只是程序会重新从0000H开始

进入掉电模式之后 PCON 寄存器第5位会被设置为1,需要软件内设置为0

在进入掉电模式时,是有IO口和SFR特殊功能寄存器维持掉电模式前那一刻。

掉电模式唤醒之后,继续执行原程序。

经过研究,掉电模式好像就是为了省电,如果真的是没电了重启的话应该还是会从0000H开始执行程序

注意:掉电模式需要开启对应中断允许。

以下是代码:

!code=

#include <reg52.h>

#define GPIO_DIG P0 //段选

sbit LED1 = P1^3;

unsigned char code DIG_CODE[17] = {

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x01};

char num;

void Delay10ms(unsigned int);

void main(void){

unsigned char n,i;

IT0 = 1;

EX0 = 1;

EA = 1;

while(1){

for(n=0;n<10;n++){

num = n;

LED1 = 1;

GPIO_DIG = DIG_CODE[n]; //显示段码

for(i=0;i<10;i++);

//GPIO_DIG = 0x00; //消影

if(n == 5){

PCON = PCON | 0x2 ; //正常来讲是进入掉电模式,然后可以通过P3.2 P3.3 中断唤醒

}

Delay10ms(100);//延时1秒

}

}

}

void int0_name() interrupt 0{

PCON = 0x10 ; //外部中断0 从吊带你模式唤醒

}

void Delay10ms(unsigned int c)  //误差 0us

{

    unsigned char a,b;

    for(;c>0;c--)

        for(b=38;b>0;b--)

            for(a=130;a>0;a--);

}

!codend=


标签1 ( 15 )
标签2 ( 12 )
标签3 ( 4 )
标签4 ( 2 )
标签5 ( 7 )
标签6 ( 5 )
标签 ( 2 )