手电的待机功耗太高了.2ma .设置了掉电模式, 尴尬,不会唤醒
2024-7-3 20:58 来自 vb2002 发布 @ 综合讨论
手电的功能弄好了.
功耗太高,有2ma,估计放几天就没电了
设置了掉电模式 pcon = 0x02;
没有电流了.但是问题来了.
不会唤醒了
现在是按P32 开关和调光.
想用P32直接拿来唤醒.按下打开手电并退出掉电模式
关闭的时候 开启掉电模式
复制代码
功耗太高,有2ma,估计放几天就没电了
设置了掉电模式 pcon = 0x02;
没有电流了.但是问题来了.
不会唤醒了
现在是按P32 开关和调光.
想用P32直接拿来唤醒.按下打开手电并退出掉电模式
关闭的时候 开启掉电模式
- #include <STC8G.H>
- #include "intrins.h"
-
- #define MAIN_Fosc 11059200UL
- unsigned int pwm_levels = {5,15 ,80,255 };
- unsigned char PWM_SAVE;
- sbit KEY1 = P3^2;
- bit key_flag;
- unsigned char PWM_MODE;
- unsigned char time_out;
- void PWM_init(void)
- {
- CCON = 0x00;
- CMOD = 0x08;
- CL = 0x00;
- CH = 0x00;
- CCAPM1 = 0x42;
- PCA_PWM1 = 0x00;
- CCAP1L = 0x00;
- CCAP1H = 0x00;
- CR=1;
- }
- //void pwm_init(void);
- //void delayms(u16 ms);
- //void pwm_init(void)
- //{
- //
- // CCON = 0x00;
- // CMOD = 0x08;
- // CL = 0x00;
- // CH = 0x00;
- // CCAPM1 = 0x42;
- // PCA_PWM1 = 0x00;
- // CCAP1L = ld;
- // CCAP1H = ld;
- // CR=1;
- //// while(1);
- //}
- void PWM_updata(unsigned int duty) {
- if(duty > 0) { // 如果占空比大于0
- CCAP1L = duty; // 更新CCR4计数值
- CCAP1H = duty;
- CCAPM1 = 0x42; // 使能PWM输出
-
- } else {
- CCAP1L = 0x00;
- CCAP1H = 0x00;
- CCAPM1 = 0x00;
- // P33 = 1; P34 = 1; // 将P3.3和P3.4设置为高电平
- }
- }
- // 定时器0中断服务程序
- void Timer0_Isr(void) interrupt 1 {
-
- static unsigned char key_sta; // 按键状态机变量
- // 按键状态机
- switch(key_sta) {
- case 0: // 状态0:等待按键
- if (KEY1 == 0) key_sta++; // 如果按键按下,进入状态1
- break;
- case 1: // 状态1:确认按键
免责声明:
本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;