51单片机第26步_单片机工作在空闲模式

重点学习51单片机工作在空闲模式。

1、进入空闲模式的方法

通过将PCON寄存器中的IDLE置1,CPU就会进入空闲模式。在空闲模式中,程序停止执行,RAM中的数据仍然保持,晶振继续工作,但与CPU断开,定时器和串行口继续工作。一旦定时器中断、串口中断,外部中断或复位,CPU将退出空闲模式,执行完中断程序后,CPU将从程序原来停止的地方继续执行。

电源控制寄存器PCON: SMOD,-,-,-,GF1,GF0,PDWN,IDLE

SMOD:串行口通讯波特率控制位;

GF1:通用标志位1;

GF0:通用标志位2;

PDWN:低功耗标志位,置位,则进入低功耗模式;

IDLE:空闲标志位,置位,则进入空闲模式;

2、使用定时器0中断令CPU退出空闲模式

程序如下:

如果将main()中的“timer0_initializtion();”屏蔽掉,程序运行时,CPU无法从“空闲模式”退出,LED灯一直熄灭。若使用main()中的“timer0_initializtion();”,CPU进入空闲模式后,当定时器0产生中断,CPU会退出“空闲模式”,执行完定时器中断后,LED灯就被点亮。

#define Enter_IDLE_Mode()  PCON=PCON|0x01

#define OSC_FREQ          12000000L      //定义晶振频率为12MHz;

#define T0_Load_Value       (65536-50000)   //配置T0为50000us中断一次;

sbit LED = P1^0;  //低电平点亮LED

//函数功能: Timer0的中断服务函数,每50000us中断一次;

void timer0_interrupt_program() interrupt 1 using 1

{ TL0=T0_Load_Value;     //手动装载初值;

  TH0=T0_Load_Value>>8;

}

}

//函数功能: 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;                 //开总中断允许位;

}

void main(void)

{

timer0_initializtion(); //Timer0初始化;

//若屏蔽掉timer0_initializtion();”,则LED一直熄灭。

//若使用timer0_initializtion();”,则LED会被点亮。

LED=1;//关灯

  Enter_IDLE_Mode();

//进入空闲模式

//等待定时器中断

LED=0;//开灯  

while(1)

{ _nop_();

}

}

相关推荐

  1. 51单片机26_单片机工作空闲模式

    2024-07-10 16:22:02       17 阅读
  2. 51单片机——DHT11模块

    2024-07-10 16:22:02       52 阅读
  3. 51单片机-4G模块

    2024-07-10 16:22:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 16:22:02       51 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 16:22:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 16:22:02       44 阅读
  4. Python语言-面向对象

    2024-07-10 16:22:02       55 阅读

热门阅读

  1. QT调节屏幕亮度

    2024-07-10 16:22:02       21 阅读
  2. Spring Boot手写starter

    2024-07-10 16:22:02       23 阅读
  3. 【国产开源可视化引擎Meta2d.js】视频

    2024-07-10 16:22:02       22 阅读
  4. Apache Doris的分区与分桶原理解析

    2024-07-10 16:22:02       14 阅读
  5. Stream流的简单用法

    2024-07-10 16:22:02       26 阅读
  6. liunx上修改Firefox版本号

    2024-07-10 16:22:02       17 阅读
  7. PS设计新手如何学习?沈阳PS设计线下培训

    2024-07-10 16:22:02       19 阅读
  8. 深度学习进阶

    2024-07-10 16:22:02       16 阅读
  9. 提示学习的本质是KNN

    2024-07-10 16:22:02       19 阅读
  10. Tomcat

    Tomcat

    2024-07-10 16:22:02      17 阅读