现在有一个电池供电产品,要求待机功耗很低。使用内部震荡和内部mclr
在休眠模式时,我把所有外设都关了,为什么还有大约70uA的电流,我把单片机去掉后,就只有5uA左右的电流,说明应该是单片机产生的功耗而不是外部硬件产生的,程序如下:
//系统上电初始化
void Sys_Init()
{
NOP();
NOP();
//设置IO口输入输出
CLRWDT();
PORTC = 0x00;
PORTA = 0x00;
TRISA = 0x0e;//B'00000110';//设置RA1,RA2输入,其余输出
TRISC = 0x00;//B'00000000';//RC口输出
PORTC = 0x00;
PORTA &= 0x20;
INTCON = 0x00;
PIR1 = 0x00;
EECON1 = 0x00;
TMR1H = 0xff;
TMR1L = 0x5f; //设置定时器1初始值定时600us
T1CON = 0x21; //B'00100001';//打开定时器1,分频比1:4
TMR1IE = 1;
CMIE = 0;
VRCON = 0x00;
CMCON &= 0xf8;
CMCON |= 0x07;
PEIE = 1; //使能比较器中断检测电压
CMIF = 0;
IOCA = 0x00; //禁止电平变化中断
WPUA = 0x00; //
OPTION = 0x8d;
GIE = 1; //打开全局中断允许
}
//进入休眠模式
GIE = 0;
//CMCON = 0x07;
//VRCON = 0x00;
//CMIE = 0;
RA3 = 1;
OPTION = 0x8e;
SLEEP();
NOP();
NOP();
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
-----------------------------------------------------------------------
我把输入口的内部上拉都关掉了的,比较器也关闭了,不知道这个功耗从哪里来的,在睡眠时还有这么大
回复【3楼】millwood0
-----------------------------------------------------------------------
这是什么意思哦,
-----------------------------------------------------------------------
应该是 可能的话把端口改成模拟口
PORTA = 0x00;
TRISA = 0x0e;//B'00000110';//设置RA1,RA2输入,其余输出
TRISC = 0x00;//B'00000000';//RC口输出
PORTC = 0x00;
PORTA &= 0x20;
楼主,你设不IO方向位不用换页的吗?
一周热门 更多>