wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 552|回復: 5
打印 上一主題 下一主題
收起左側

STC32G12K128單片機使用P3.2/INT0,外部中斷當按鍵怎么實現進入掉電模式后長按開機?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1153575 發表于 2025-10-9 10:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一個鋰電產品,關機后要進入低功耗,用INT0(P3.2)引腳實現按鍵喚醒,現在情況是這樣,我寫的程序 在關機后能進入低功耗模式。但是在長按按鍵喚醒開機時出現下面兩種情況
1.按鍵按下直接就開機了,沒有經過檢測長按
2.按鍵需要按兩次,第一次按下喚醒,第二次按下可以實現長按開機
所以我想問問各位,怎么實現在 進入低功耗模式后,實現長按開機,麻煩各位給點思路
下面是我的代碼
void INT0_Isr(void) interrupt 0
{

    delay_ms(20); // 消抖

}

void main() {
        
    bit key_flag = 0;  // 按鍵狀態標志位
                u16        j;
        
                EAXFR = 1;                         // 使能訪問XFR
                CKCON = 0x00;         // 設置外部數據總線速度為最快
                WTST = 0x00;                // 設置程序代碼等待參數,0等待時鐘,速度最快
        
    GPIO_Init();       // 初始化IO
                Timer0_Init();     // 初始化定時器(24MHz配置)
                ADC_config();                                //初始化ADC0
                PWM_config();                                
                Timer_config();
                TurnOffAllLights();//上電初始化關閉所有輸出
        
                IT0 = 1;                                                                                // INT0下降沿中斷
                EX0 = 1;                                                                                // 使能外部中斷0
                EA = 1;                                                                                        // 使能EA總中斷
        
          system_state = SYSTEM_OFF; // 假設上電默認是關機狀態
    while(1) {
                        
                Check_USB();                        // 檢查USB狀態

                j = Get_ADCResult(0);                //讀取ADC0檢測的電壓值               
                keyvalue = key_multi();                //讀取鍵值
               
                        
                if(j >= 3500)   //只有當P1.0/ADC0,測到有電壓,電機才會工作
                          {
                                        MOTO_PLAY();                        
                                }else{
                                        PWM8P_OUT_DIS();                        
                                }
                                                               
                        if(keyvalue != KEY_STATE_0)
                                {
                                         if (usb_state == USB_CONNECTED) {              
                beep_(1);  // 短鳴提示USB插入,禁止操作
                delay_ms(100);
            }
                                        else if(system_state == SYSTEM_OFF && keyvalue == Key1_Long_Click){
                                                                        system_state = SYSTEM_ON;  // 切換到開機狀態
                                                                        press_count = 1;
                                                                        Timer3_Run(1);Timer0_Run(1);                                                         
                                                                        Display(); MODE_PLAY();UpdateTimer();
                                                                        LED = 0;
                                                                        beep_(2);                                                                                                                                
                                                                        timer_count = 0;           // 重置計時器
                                                                        timer_running = 1;         // 開始計時                                
                                } else if(system_state == SYSTEM_ON){
                                                                        if(keyvalue == Key1_Single_Click){
                                                                        press_count++;          // 模式計數加1
                                                                        if (press_count > 7) press_count = 1;        
                                                                        Display();         MODE_PLAY();             // 更新顯示        
                                                                        beep_(1);                // 播放短按提示音                                                                                                                                
                                }else if(keyvalue == Key1_Long_Click){
                                                                        system_state = SYSTEM_OFF;  // 切換到關機狀態
                                                                        TurnOffAllLights();        // 關閉所有燈光                                                                        
                                                                        beep_(3);                   // 播放關機音效                                                        
                                                                        timer_running = 0;          // 停止計時
                     IT0 = 1;
                  EX0 = 1;
                  EA = 1;
                        PD = 1;                                // 進入低功耗模式-IDLE空式                                                                                                        
                                                        }
                                        }               
                        }
                    UpdateTimer();   // 更新計時器狀態
        Display();       // 更新顯示(用于處理閃爍)
                                MODE_PLAY();
        delay_ms(1);    // 短暫延時,降低CPU占用
                        
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:458247 發表于 2025-10-9 13:05 | 只看該作者
增加一個狀態,在休眠時,置起一個標志位,然后在中斷里面判斷該標志位置起,若置起,則進入等待長安狀態。在這個狀態中,屏幕不顯示、指示燈不亮,假裝自己還在休眠,一直檢測按鍵是否按下,按下持續2秒后,進入正常狀態,并把休眠狀態位取消。大概套路就是這樣
回復

使用道具 舉報

板凳
ID:1133081 發表于 2025-10-9 15:05 | 只看該作者
這個沒有難度。一旦按鍵按下系統即被喚醒,首先判斷長短按,長按即開機,小于長按預設值即算短按,再次進入低功耗睡眠。呈現的功能就是睡眠中短按無效,長按開機。實際短按也有效,只不過察覺不到。
回復

使用道具 舉報

地板
ID:1133081 發表于 2025-10-9 15:16 | 只看該作者
給你一個示例,稍改一下即可滿足需求
  1. //一鍵開/關機(掉電喚醒)
  2. //適合STC15/STC8系列,測試平臺 TX-1C 開發板
  3. #include <STC8H.H>
  4. #include "intrins.h"
  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. sbit key  = P3^2;//S14
  8. sbit GND  = P3^4;//矩陣鍵盤模擬接地

  9. uchar Temp;
  10. uchar Key_value; //鍵值
  11. uint  keyTim;    //按鍵時長
  12. bit   flag1ms;   //1ms中斷標志
  13. bit   on_off;    //開關標志
  14. bit   allow;     //允許關機標志

  15. void Timer0Init(void)//1毫秒@11.0592MHz
  16. {
  17.         AUXR |= 0x80;                //定時器時鐘1T模式
  18.         TMOD &= 0xF0;                //設置定時器自動重載模式
  19.         TL0 = 0xCD;                        //設置定時初始值
  20.         TH0 = 0xD4;                        //設置定時初始值
  21.         TF0 = 0;                                //清除TF0標志
  22.         TR0 = 1;                                //定時器0開始計時
  23.         ET0 = 1;                                //允許T0中斷
  24. //        EA  = 1;                                //開總中斷
  25. }
  26. void Delay20ms()                //@11.0592MHz
  27. {
  28.         unsigned char i, j;

  29.         i = 216;
  30.         j = 37;
  31.         do
  32.         {
  33.                 while (--j);
  34.         } while (--i);
  35. }

  36. void key_scan()    //按鍵掃描函數
  37. {
  38.         if(flag1ms)  //1ms時間標志
  39.         {
  40.                 flag1ms = 0;//1ms時間標志清0
  41.                 if(!key && !on_off)
  42.                 {
  43.                         if(++keyTim>1000)keyTim=1001;//防止溢出

  44.                         if(keyTim==20) //大于20ms小于1s算短按
  45.                         {
  46.                                 Key_value=0x01;
  47.                         }
  48.                         if(keyTim==1000) //達到1s算長按
  49.                         {
  50.                                 Key_value|=0x10;
  51.                         }
  52.                 }
  53.                 else
  54.                 {
  55.                         keyTim=0;        //按鍵松手keyTim清0
  56.                 }
  57.         }
  58. }

  59. void key_service()//按鍵服務函數
  60. {//短按等松手響應,長按達1s不論是否松手即響應
  61.         if((keyTim==0||keyTim==1000) && Key_value!=0x00)
  62.         {
  63.                 if(Key_value==0x01)//短按任務
  64.                 {
  65.                         Temp++;
  66.                         P1=~Temp;//演示,LED低電平亮
  67.                 }
  68.                 if(Key_value==0x11)//長按關機
  69.                 {
  70.                         allow=1;//允許休眠
  71.                 }
  72.                 Key_value=0x00;//任務完成后鍵值清0
  73.         }
  74. }

  75. void Shutdown()//掉電模式函數
  76. {
  77.         if(allow)
  78.         {
  79.                 P1=0xff;                //關閉LED顯示
  80.                 //關閉所有在用硬件,減小能耗
  81.                 while(!key);//等待按鍵松手
  82.                 Delay20ms();//消抖防止誤動作
  83.                 EX0 = 1;                //開外部中斷
  84.                 PCON = 0x02;//MCU進入掉電模式
  85. /************************************************/
  86.                 _nop_();    //掉電模式被喚醒后,首先執行此語句,然后再進入中斷服務程序
  87.                 _nop_();    //中斷服務程序執行完再接著此句繼續執行
  88.                 while(!key);//等待按鍵松手,防止按鍵掃描程序誤讀
  89.                 Delay20ms();//消抖防止誤動作
  90.                 //打開所有在用硬件,恢復正常運行
  91.                 allow=0;                //清0
  92.                 on_off=0;        //開關標志清0
  93.                 P1=~Temp;        //恢復LED顯示
  94.         }
  95. }

  96. void main()
  97. {
  98.         P0M0 = 0x00;//初始化IO
  99.         P0M1 = 0x00;
  100.         P1M0 = 0x00;
  101.         P1M1 = 0x00;
  102.         P2M0 = 0x00;
  103.         P2M1 = 0x00;
  104.         P3M0 = 0x00;
  105.         P3M1 = 0x00;
  106.         P4M0 = 0x00;
  107.         P4M1 = 0x00;
  108.         P5M0 = 0x00;
  109.         P5M1 = 0x00;
  110.         P6M0 = 0x00;
  111.         P6M1 = 0x00;
  112.         P7M0 = 0x00;
  113.         P7M1 = 0x00;
  114.         GND  = 0;
  115.         IT0 = 1;//設置INT0的中斷類型為下降沿喚醒
  116. //        EX0 = 1;//使能INT0中斷
  117.         EA  = 1;//開總中斷                                                        
  118.         Timer0Init();//定時器初始化函數
  119.         while (1)
  120.         {
  121.                 key_scan();                //按鍵掃描函數
  122.                 key_service(); //按鍵服務函數
  123.                 Shutdown();                //掉電模式函數
  124.         }
  125. }
  126. //INT0中斷服務程序
  127. void exint0() interrupt 0
  128. {
  129.         EX0 = 0;                //關外部中斷
  130.         on_off=1;//開關標志置1
  131. }
  132. //T0中斷服務程序
  133. void interruptTimer0() interrupt 1
  134. {
  135.         flag1ms = 1;    //1ms標志
  136. }
復制代碼
回復

使用道具 舉報

5#
ID:1153575 發表于 2025-10-9 15:50 | 只看該作者
謝謝各位工程提供的建議,根據你們的建議,我已經實現了該功能!!
回復

使用道具 舉報

6#
ID:57657 發表于 2025-10-9 17:28 | 只看該作者
此長按開機與手機開機原理類似:
半喚醒:關機狀態開機鍵有按下,控制芯片開始工作并檢測電池電量是否符合開機條件,對開機鍵按住時間毫秒計數,松開后計數清零并重新休眠,計數滿后全喚醒:正式開機、屏幕等模塊開始工作。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
亚洲精品免费一区二区三区| 日皮视频在线免费观看| 成人午夜视频精品一区| 韩国一级黄色录像| 日本 欧美 国产| 国产三级短视频| 日本japanese极品少妇| 99精品一区二区三区无码吞精| 亚洲精品成人在线播放| 久久久久久久久久一区二区| 天天爽夜夜爽一区二区三区| 中文字幕av专区| 国产乱码一区二区三区四区| 亚洲色图欧美自拍| 岛国大片在线免费观看| 欧美性生交xxxxx| 999精品免费视频| 性色av蜜臀av色欲av| 日本黄色特级片| 国产高清一区二区三区四区| 日韩不卡av在线| 国产极品国产极品| 国产午夜免费福利| 亚洲专区第一页| 精品国产99久久久久久宅男i| 懂色av蜜臀av粉嫩av分享吧最新章节| 中国一区二区视频| www.午夜激情| 一本一本久久a久久综合精品蜜桃 一道精品视频一区二区三区男同 一道精品视频一区二区三区图片 一二三四在线观看视频韩国 | 国产成人精品免费在线| 国产高清不卡一区| 国产午夜一区二区三区| 亚洲国产欧美在线人成| 色8久久精品久久久久久蜜| 欧美久久一二区| 日韩国产一区三区| 久久91精品国产| 国产精品一区二区久久国产| 精品国产_亚洲人成在线| 亚洲人成网站在线观看播放| 日韩avxxx| 丰满岳乱妇一区二区| 后入内射无码人妻一区| 日韩欧美中文字幕一区二区| 亚洲熟妇无码久久精品| 最新亚洲精品国自产在线观看| 特一级黄色片| 日韩写真福利视频在线| 黄色小网站在线观看| 新片速递亚洲合集欧美合集| 国产精品一区二区美女视频免费看| 一区二区美女| 一区二区高清| 成人美女在线视频| 亚洲国产综合视频在线观看| 日韩午夜激情免费电影| 色综合影院在线| 国产精品香蕉av| 亚洲综合首页| 五月花丁香婷婷| 国产wwwwxxxx| 国产精品久久久久久免费播放| 亚洲成人在线电影| 97伦伦午夜电影理伦片| 尤物在线免费视频| 一级片免费网站| 国产免费大片| 一二三中文字幕在线| 麻豆mv在线看| 大片网站久久| 国产一区二区三区美女| 亚洲国产毛片aaaaa无费看 | 日韩一级片av| 丰满人妻一区二区三区四区53| 日本成片免费高清| 91sp网站在线观看入口| 亚洲成人高清| 亚洲乱码视频| 欧美高清一级片在线观看| 欧美丝袜自拍制服另类| 久久躁日日躁aaaaxxxx| 精品国产一二| 亚洲精品免费一区亚洲精品免费精品一区| 在线看的片片片免费| 日韩有码第一页| 男人午夜天堂| 成人在线视频免费| 激情久久五月| 国产精品麻豆久久久| 日韩一二三区不卡| 69久久夜色精品国产69| 亚洲成人动漫在线| 亚洲熟妇无码av| 亚洲精品成av人片天堂无码| av首页在线| 日本不卡一二三| 亚洲无线视频| 亚洲欧美日本韩国| 亚洲天堂成人在线视频| 91传媒视频在线观看| 精品少妇人妻av免费久久洗澡| 污污视频网站在线免费观看| 亚洲aⅴ在线观看| 欧美视频综合| 久久精品国产亚洲5555| 国产精品亚洲专一区二区三区| 色婷婷综合久久久久中文 | 国产一区二区三区网站| www日韩av| 国产永久免费网站| 在线观看亚洲黄色| 男男互摸gay网站| 欧美爱爱视频| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲图片欧美色图| 欧美激情a∨在线视频播放| 在线观看日本一区| 中文乱码字幕高清一区二区| 中文字幕在线看精品乱码| 91短视频版在线观看www免费| 神马电影久久| 国产精品色眯眯| 中文字幕视频在线免费欧美日韩综合在线看 | 97超碰在线人人| 亚洲国产综合久久| 爱爱视频网站免费| 97成人超碰| 国产一区二区不卡| 亚洲精品国产欧美| 欧洲久久久久久| 国产馆在线观看| 国产中文字幕av| 日韩影院在线| 美腿丝袜亚洲一区| 日韩色视频在线观看| 国产乱码精品一区二区三区卡 | 国产成人美女视频| 国产sm主人调教女m视频| 国产呻吟对白刺激无套视频在线| 欧美交a欧美精品喷水| 国产亚洲一区二区三区在线观看| 日韩亚洲在线观看| av之家在线观看| 亚洲一区在线观| 狠狠色伊人亚洲综合网站l| 99久久精品费精品国产风间由美| 亚洲精品中文字幕乱码三区| 午夜精品久久久久久久99热浪潮| aⅴ在线免费观看| 国产精品热久久| 夜级特黄日本大片_在线 | 久久国产精彩视频| 亚洲 高清 成人 动漫| 中文字幕一区二区人妻| 国产精品一区二区三区四区色| 911久久香蕉国产线看观看| 午夜视频在线观看一区二区| 欧美裸体一区二区三区| 成人精品视频久久久久| 在线视频 日韩| 91香蕉网站| 日韩精品一区二区三区中文在线| 2021中文字幕一区亚洲| 欧美国产日本高清在线| 肉色超薄丝袜脚交| 乱小说欧美综合| 成人日韩视频| 亚洲视频免费看| 国产成人亚洲综合| 噜噜噜在线视频| 黄网站在线观看高清免费| 超碰在线一区| 亚洲国产日韩一区二区| 91最新在线免费观看| 91视频最新网址| 桥本有菜亚洲精品av在线| 久久久久久久久久久妇女| 欧美性三三影院| 亚洲不卡一卡2卡三卡4卡5卡精品| www.天天色| 黄色大片在线看| 久久激情婷婷| 亚洲区一区二区| 99爱视频在线| 天堂√中文在线| 国产免费av国片精品草莓男男| 国产精品妹子av| 国产又爽又黄的激情精品视频| 成人免费视频入口| 91嫩草在线播放| 99国产一区| 国产亚洲精品久久久优势| 国产精品无码一本二本三本色| 77777_亚洲午夜久久多人| 玖玖玖电影综合影院| 亚洲男人的天堂一区二区 | 97国产suv精品一区二区62| 丰满少妇一区二区三区专区| 尤物视频在线观看网站| 蜜臀久久99精品久久一区二区 | 亚洲一区二区在线免费观看视频| 97久久夜色精品国产九色| 国产小视频在线观看免费| 大地资源中文在线观看免费版| 日本不卡一区二区| 久热精品视频在线观看| 捆绑裸体绳奴bdsm亚洲| 国产精品久久久久永久免费看| 亚洲经典在线| 最近免费中文字幕视频2019| av在线天堂网| 国产精品久久久久久精| 亚洲免费中文| 久久av资源网站| 毛片网站免费观看| 天堂а√在线8种子蜜桃视频 | 亚洲一区二区中文字幕在线观看| 色猫视频免费观看| 亚洲精品888| 亚洲天堂男人天堂女人天堂| www.久久com| 好男人社区在线视频| 国产情侣一区| 欧美乱妇40p| 亚洲不卡的av| 色网站免费在线观看| 久久久久久日产精品| 成人综合电影| 97精品人妻一区二区三区| 亚洲成人毛片| 欧美蜜桃一区二区三区| 日韩 欧美 高清| 成人淫片免费视频95视频| 亚洲在线网站| 国产69精品久久久久久| 欧美一级高潮片| 吉吉日韩欧美| 欧美色图在线视频| 欧美爱爱视频免费看| 黄色毛片免费看| 视频一区欧美日韩| 国产精品精品国产| 这里只有久久精品视频| 亚洲精品高潮| 精品国产亚洲在线| 黄色av电影网站| 久久久久久女乱国产| 2023国产一二三区日本精品2022| 狠狠色综合一区二区| 污污视频在线免费看| 国产精品一线天粉嫩av| 国产亚洲精品美女| 午夜黄色福利视频| 这里有精品可以观看| 色就色 综合激情| 三级a在线观看| 黄污网站在线观看 | 粉嫩精品一区二区三区在线观看 | 西西午夜视频| 日韩精品视频网| 91精品久久久久久| 亚洲黄色小说网| 97偷自拍亚洲综合二区| 欧美老女人性生活| 五月婷婷激情网| 国产日韩欧美中文在线| 精品国产亚洲在线| 欧美老女人性生活视频| 三妻四妾的电影电视剧在线观看| 色婷婷久久综合| 色偷偷中文字幕| www黄在线观看| 亚洲成年人网站在线观看| 日本xxxxxxx免费视频| 色网址在线观看| 中文天堂在线一区| 成品人视频ww入口| 国产二级片在线| 久久奇米777| 黄色影视在线观看| 日本高清不卡中文字幕| 成人aa视频在线观看| 亚洲成人18| www.超级碰| 99视频国产精品| 特大黑人娇小亚洲女mp4| 免费观看视频www| 久久免费国产精品| 国产一二三在线视频| 国产超碰在线观看| 亚洲人成在线观看一区二区| 男人的天堂99| 国产三级在线观看| 精品久久久免费| 欧亚乱熟女一区二区在线| 9999精品成人免费毛片在线看| 欧美日韩精品电影| 日本人亚洲人jjzzjjz| 日韩亚洲国产免费| 尤物yw午夜国产精品视频| 日韩精品在线观看免费| 亚洲区小说区图片区qvod按摩| 久久香蕉国产线看观看av| 怡红院男人天堂| 亚洲成人精选| 91久久精品美女高潮| 欧美又粗又硬又大久久久| 久久99久久久欧美国产| 亚洲欧美一区二区原创| 91大神在线资源观看无广告| 国产精品传媒入口麻豆| 欧美午夜aaaaaa免费视频| av毛片在线| 日韩欧美一区在线| 麻豆亚洲av成人无码久久精品| 国产一区二区三区亚洲| 欧美亚洲一级片| 先锋资源中文字幕| 国内精品视频一区二区三区八戒 | 五月婷婷综合色| 免费观看羞羞视频网站| 亚洲一区在线观看网站| aaa黄色大片| 人人精品久久| 韩日精品中文字幕| 最新版天堂资源中文官网| 国产成人精品一区二区三区网站观看 | 欧美激情手机在线视频 | 久久婷婷亚洲| 亚洲第一在线综合在线| 一级片在线免费看| 色婷婷香蕉在线一区二区| 国产日产精品一区二区三区的介绍| 亚洲啊v在线免费视频| 久久久久久久久久婷婷| 男人天堂网页| av福利精品导航| 国产精品三级av在线播放| 姬川优奈aav一区二区| 中文字幕亚洲日本| 在线成人视屏| 久久久久久久久国产精品| av色男福利网| bt7086福利一区国产| 91插插插插插插插插| 成人网ww555视频免费看| 欧美另类高清videos| 天堂精品高清1区2区3区| 久久久久久久精| 男人的天堂免费| 一区二区日韩| 96sao精品视频在线观看| 美乳在线观看| 欧美日韩国产经典色站一区二区三区 | 国产午夜在线视频| 日韩一区二区三区观看| 国产一区免费看| 久久只有精品| 国产a级一级片| 在线看欧美视频| 国产不卡在线观看| 麻豆视频官网| 色爱区综合激月婷婷| 国产精品视频久久久久久久| 国产精品毛片一区二区三区| 草草草视频在线观看| bbw在线视频| 91国产视频在线播放| 黄色毛片免费| 欧美色老头old∨ideo| 波多野结衣视频网址| 狠狠色丁香九九婷婷综合五月| 91制片厂毛片| 国产精品videossex| 国产精品一区二区三区免费| 黄色网址在线播放| 亚洲午夜未满十八勿入免费观看全集 | 中文字幕2020第一页| 中文字幕日韩av资源站| 网站永久看片免费| 中文在线一区| 日韩 欧美 高清| 粉嫩精品导航导航| 激情伦成人综合小说| 18av在线播放| 97高清免费视频| 日本福利片免费看| 日韩精品在线免费观看视频| 四虎影视18库在线影院| 亚洲精品乱码久久久久| 国产主播在线播放| 国产精品99久久久久久宅男| 制服下的诱惑暮生| 日韩精品四区| 日本欧美视频在线观看| 国产成人免费视频网站视频社区| 91传媒视频在线观看| 黄色精品免费看| 热久久视久久精品18亚洲精品| 中文字幕97|