找回密码
 立即注册
×

00:00:00

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

代码已经加上双击和长按了.但是不能保存双击那个操作(已解决)

2024-9-28 19:31 来自 vb2002 发布 @ 综合讨论

本帖最后由 vb2002 于 2024-9-30 13:06 编辑


之前双击和长按,没有调用io口操作,导致io口复位。不能推挽输出,双击长按打开推挽就好了

已经接近理想状态了. 感谢小飞飞大佬提供的代码.. 键值的代码参照 布丁橘长 的教程.
现在功能是  单击打开LED (三秒内按下换下一个数组的值,也就是pwm亮度. 3 三秒后按下关闭LED,并保存当前亮度.下次打开就是关闭前的亮度),
今天加上了双击 极亮(pwm全输出.) 但是现在有两个问题.  
一 不能保存那个极亮. 二.关机进入掉电模式后,不能双击极亮
关机后,不能双击极亮,或者长按进入低亮模式,.应该是和状态机那里有关.

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

  4.     // 按键状态机
  5.     switch(key_sta) {
  6.         case 0:                                 // 状态0:等待按键
  7.             if (KEY1 == 0) key_sta++;            // 如果按键按下,进入状态1
  8.             break;
  9.         case 1:                                 // 状态1:确认按键
  10.             if (KEY1 == 0) key_sta++;            // 如果按键持续按下,进入状态2
  11.             else key_sta = 0;                   // 否则返回状态0
  12.             break;
  13.         case 2:                                 // 状态2:等待按键释放
  14.             if (KEY1 == 1) key_sta++;            // 如果按键释放,进入状态3
  15.             break;
  16.         case 3:                                 // 状态3:按键完成
  17.             key_flag = 1;                       // 设置按键标志位
  18.             key_sta = 0;              
复制代码

免责声明:

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

热门标签 更多

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

GMT+8, 2025-5-14 17:17 , Processed in 0.060053 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部