找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

手电的待机功耗太高了.2ma .设置了掉电模式, 尴尬,不会唤醒

2024-7-3 20:58 来自 vb2002 发布 @ 综合讨论

手电的功能弄好了.

功耗太高,有2ma,估计放几天就没电了
设置了掉电模式 pcon = 0x02;
没有电流了.但是问题来了.
不会唤醒了
现在是按P32 开关和调光.
想用P32直接拿来唤醒.按下打开手电并退出掉电模式
关闭的时候 开启掉电模式
  1. #include <STC8G.H>
  2. #include "intrins.h"
  3.   
  4. #define MAIN_Fosc 11059200UL
  5. unsigned int pwm_levels = {5,15 ,80,255 };

  6. unsigned char PWM_SAVE;
  7. sbit KEY1 = P3^2;
  8. bit key_flag;
  9. unsigned char PWM_MODE;
  10. unsigned char time_out;

  11. void PWM_init(void)
  12. {
  13.     CCON = 0x00;
  14.     CMOD = 0x08;
  15.     CL = 0x00;
  16.     CH = 0x00;

  17.     CCAPM1 = 0x42;
  18.     PCA_PWM1 = 0x00;
  19.     CCAP1L = 0x00;                  
  20.     CCAP1H = 0x00;
  21.         CR=1;       
  22. }


  23. //void pwm_init(void);
  24. //void delayms(u16 ms);       

  25. //void pwm_init(void)
  26. //{
  27. //       
  28. //    CCON = 0x00;
  29. //    CMOD = 0x08;
  30. //    CL = 0x00;
  31. //    CH = 0x00;

  32. //    CCAPM1 = 0x42;
  33. //    PCA_PWM1 = 0x00;
  34. //    CCAP1L = ld;                  
  35. //    CCAP1H = ld;

  36. //        CR=1;       
  37. ////        while(1);
  38. //}

  39. void PWM_updata(unsigned int duty) {
  40.     if(duty > 0) {                              // 如果占空比大于0
  41.         CCAP1L = duty;                       // 更新CCR4计数值
  42.           CCAP1H = duty;  
  43.         CCAPM1 = 0x42;                         // 使能PWM输出
  44.         
  45.     } else {
  46.         CCAP1L = 0x00;                       
  47.           CCAP1H = 0x00;  
  48.         CCAPM1 = 0x00;                     
  49. //        P33 = 1; P34 = 1;                       // 将P3.3和P3.4设置为高电平
  50.     }
  51. }


  52. // 定时器0中断服务程序
  53. void Timer0_Isr(void) interrupt 1 {
  54.   
  55.         static unsigned char key_sta;               // 按键状态机变量

  56.     // 按键状态机
  57.     switch(key_sta) {
  58.         case 0:                                 // 状态0:等待按键
  59.             if (KEY1 == 0) key_sta++;            // 如果按键按下,进入状态1
  60.             break;
  61.         case 1:                                 // 状态1:确认按键
  62.         
复制代码

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-7 18:26 , Processed in 0.062762 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部