请教大家,我想采用定时器0中断唤醒掉电模式,但是进入掉电后,定时器好像就不工作了。
#include "stc8g.h"#include "intrins.h"
sbit LRD_R = P3^2;
unsigned int cnt=0;
void T0_Init(void)
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x20; //设置定时初始值
TH0 = 0xD1; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //打开定时器T0中断
EA = 1; //打开总中断
}
void TM0_Isr(void) interrupt 1
{
cnt++;
if(cnt ==1000)
{
LRD_R = !LRD_R ;
cnt = 0;
}
}
void main()
{
P0M0 = 0x00; //设置P0.0~P0.7为双向口模式
P0M1 = 0x00;
P1M0 = 0x00; //设置P1.0~P1.7为双向口模式
P1M1 = 0x00;
P2M0 = 0x00; //设置P2.0~P2.7为双向口模式
P2M1 = 0x00;
P3M0 = 0x00; //设置P3.0~P3.7为双向口模式
P3M1 = 0x00;
P4M0 = 0x00; //设置P4.0~P4.7为双向口模式
P4M1 = 0x00;
P5M0 = 0x00; // 将P5口配置为双向口模式
P5M1 = 0x00;
T0_Init();
while(1)
{
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
PCON = 0x02;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
}
}
定时器0进入掉电模式后停止工作,是唤醒不了掉电模式的。
掉电唤醒定时器,或者RTC可以周期性唤醒MCU掉电模式。 进入掉电模式,系统时钟都停止了,定时器自然也停止了,所以是不能唤醒的 定时器唤醒要引脚
专用的掉电唤醒定时器才可以唤醒
要讲具体型号,都在发展,现在有RTC 唤醒了
乘风飞扬 发表于 2024-6-3 14:59
定时器0进入掉电模式后停止工作,是唤醒不了掉电模式的。
掉电唤醒定时器,或者RTC可以周期性唤醒MCU掉电模 ...
请问大佬,唤醒后定时器需要再开启吗? rip 发表于 2025-2-19 19:26
请问大佬,唤醒后定时器需要再开启吗?
进入低功耗模式不会改变原先寄存器的设置,所以唤醒后定时器会继续工作,不用重新设置。 普通定时器唤醒不了掉电模式
页:
[1]