久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關于單片機IO檢測充電問題請教下

查看數: 3297 | 評論數: 4 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2022-7-19 11:32

正文摘要:

想要實現的功能同步檢測和輸出,檢測到充電3次高電平,IO口開啟輸出高電平等待200ms關閉輸出,充電工作原理必須開關一次,才能繼續循環充電,太菜了沒寫出來,退而求其次寫了一個 檢測3次 定時器定時3s開啟IO口輸出 ...

回復

ID:474386 發表于 2022-7-20 08:57
樓上的,用心去評論,非常到位非常牛逼。我很少夸人,不得不給你點贊。
ID:401564 發表于 2022-7-19 18:09
其實這個是可以很簡單的去實現的,你這個搞得看起來好恐怖方便的話,把硬件電路上傳一下,把涉及商業機密抹去就行如果是直接檢測充電電源的話,中斷是一定會有抖動的
那么,中斷被觸發之后,只作清除標志位和置位一個觸發標志位,用來告訴主程序:充電線插入或者拔出了,并清除定時器控制的某個變量

主函數再通過定時器變量和觸發標志位來進行操作
這是我一個8051的充電檢測,只有高電平充電檢測,沒有拔出檢測,但原理是差不多的,你參考一下就知道了
如果是要檢測插入和拔出,就增加對應的檢測就可以了

KEY為中斷端口
void main(void)
{               
        Mcu_Rst();                                                        //單片機初始化       
while(1)
        {                                                                                                                                                
                if(key_press&&(key_10ms>=30)&&KEY)key_disp();        //處理
                //key_press中斷觸發標志位,只在key_disp();函數中清除
        }       
}


//───────────────────────────────────────────────
void Int0_isr() interrupt 0        //外部中斷0
{       
        key_press=1;                          //中斷觸發
        key_10ms=0x00;                //每次進入中斷都清除定時器變量,這樣定時器就會在抖動之后才開始計時,從最后一次退出中斷開始計時
        IE0=0;//清除中斷標志位
}
//────────────────────────────────────────────────
void key_disp()//處理
{                       
        key_press=0;        //清標志位               
}


ID:1005692 發表于 2022-7-19 13:51
lkc8210 發表于 2022-7-19 13:31
代碼不全
單看你提供的代碼
KG在三秒內只會出現一次高電平

time_3s_ok置1 只有在定時器中斷到時間后才置1 其余代碼都是配置 設置不影響 目前功能就是寫了我上面發的這些,我把定時器中斷的代碼也發出來
  1. /*-------------------------------------------------
  2. *  函數名:interrupt ISR
  3. *        功能:  中斷處理函數
  4. *  輸入:  無
  5. *  輸出:  無
  6. --------------------------------------------------*/
  7. void interrupt ISR(void)                                //PIC_HI-TECH使用
  8. {
  9.    
  10.                 if(EPIF0 & 0x28)                       
  11.                 {
  12.                        
  13.                          EPIF0 |= 0xFF;                           //寫1清中斷0響應標志位
  14.                
  15.                 }
  16.    
  17.           //定時器4的中斷處理**********************
  18.         if(T4UIE && T4UIF)                        //500HZ   2ms
  19.         {
  20.                 T4UIF = 1;                            //寫1清零標志位   
  21.                         time_10ms++;
  22.             if(time_10ms>=5)//2*5
  23.             {
  24.                 time_10ms=0;
  25.                 time_10ms_ok=1;
  26.                
  27.             }
  28.                         if(time1++>58)  //100ms  
  29.                         {
  30.                                 time1=0;
  31.                                 time_500ms++;
  32.                 time_200ms++;
  33.                                 time_3s++;
  34.                                 time_1s++;   
  35.                 time_100ms_ok=1;        
  36.                        
  37.                         }      
  38.                                 if(time_200ms==3)
  39.                                 {
  40.                                         time_200ms=0;
  41.                                         time_200ms_ok=1;
  42.                                 }            
  43.                                 if(time_3s>48)  //3s
  44.                                 {
  45.                                         time_3s=0;
  46.                                         time_3s_ok=1;
  47.                                 }  
  48.                
  49.          
  50.                         if(time_500ms>4) // 500ms
  51.                         {
  52.                                 time_500ms=0;
  53.                                 time_500ms_ok=1;
  54.                         }
  55.                
  56.                         if(time_1s>10)  //1000ms=1s
  57.                         {
  58.                                 time_1s=0;
  59.                                 time_1s_ok=1;
  60.                 time_5s++;       
  61.                 time_4s++;
  62.                 if(time_4s>5)
  63.                 {
  64.                     time_4s=0;
  65.                     time_4s_ok=1;
  66.                 }       
  67.                 if(time_5s>6)
  68.                 {
  69.                     time_5s=0;
  70.                     time_5s_ok=1;
  71.                 }
  72.                                 if(time_1min++>60)  //1min
  73.                                 {
  74.                                         time_1min=0;
  75.                                         if(time_5min++>6)  //5min
  76.                                         {
  77.                                                 time_5min=0;
  78.                                                 time_5min_ok=1;
  79.                                         }
  80.                                 }
  81.                         }
  82.     }


  83.    
  84. }  
復制代碼
ID:161164 發表于 2022-7-19 13:31
代碼不全
單看你提供的代碼
KG在三秒內只會出現一次高電平
懷疑time_3s_ok被重復置1

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美三区 | 久久99蜜桃综合影院免费观看 | 99精品一区二区 | 国产精品久久久久免费 | 另类 综合 日韩 欧美 亚洲 | 成人精品一区二区 | 91佛爷在线观看 | 中文字幕一区二区三区在线观看 | 亚洲一区二区三区四区五区午夜 | 欧美一区二区免费在线 | 日韩电影免费在线观看中文字幕 | 日韩精品一区二区三区在线 | 毛片免费视频 | 久久精品色欧美aⅴ一区二区 | 男女视频在线观看免费 | 国产大学生情侣呻吟视频 | 国产人成精品一区二区三 | 久久久tv | 五月婷亚洲| 欧美成人h版在线观看 | 狠狠操狠狠操 | 国产农村妇女毛片精品久久麻豆 | 99久久99| 日韩国产免费观看 | 毛片一级黄色 | 国产精品美女久久久久aⅴ国产馆 | 成年人免费网站 | 碰碰视频 | 天天操天天干天天爽 | 欧美一级片在线观看 | 中文字幕一区二区三区四区 | 国产精品福利网 | 不卡一区二区三区四区 | 成人h免费观看视频 | 欧美激情国产精品 | 久久国产一区二区三区 | 欧美成人精品 | 天堂视频中文在线 | 一区二区三区不卡视频 | 国产高清美女一级a毛片久久w | 一区二区三区久久久 |