在执行sleep(); 函数前,可以将不用的引脚设置为模拟输入,高阻态模式。
ANSELAbits.ANSA4 = 1; //进入sleep前,将LED IO口设置为模拟输入
TRISAbits.TRISA4 = 1;
如果设置为数字输入的话,将会提高功耗,约40uA(单个IO)
ANSELAbits.ANSA4 = 0; //设置为数字输入 (不可取)
TRISAbits.TRISA4 = 1;
PIC16F1508中有稳压器控制寄存器,将VREGPM:稳压器功耗模式选择位,置1时,休眠时使能低功耗休眠模式
休眠时消耗的电流最低,唤醒速度较慢
VREGPM=1; //使能低功耗休眠
实测功耗降低了4uA左右。