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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機STC8G1K08A單鍵依次點亮7種亮燈模式后,第8次循環有時能跳出有時不能跳出循環

[復制鏈接]
跳轉到指定樓層
樓主
ID:957836 發表于 2021-10-24 17:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機STC8G1K08A
單鍵每按下一次就點亮一種模式,依次點亮7種亮燈模式后,第8次循環點亮前7種模式,但按下按鍵有時能跳出有時不能跳出第8種模式。

#include <stc8.h>
sbit      K=P5^5;         


void  delay (unsigned int i)
        {
                 unsigned int k,m;
                        for(m=0;m<9000;m++);
                                for(k=0;k<i;k++);
        }     


void port_mode()
        {
                P3M1=0X00;P3M0=0X00;P5M1=0X00;P5M0=0X00;
        }
       
void main()
        {   
                unsigned char i=0;        
                                       
                                        port_mode();
                                        P5=0XE0;
                                        P3=0X00;
                                        while(1)
                 {
                                        if(K==0)   
                                        {
                                                                delay(1200);     
                                                                if(K==0)         
                                                                {   
                                                                 while(!K);  
                                                                 delay(1200);
                                                                 if(++i==9)i=1;                                                                                           
                                                                }  
                                        }
                                         switch(i)            
                                        {
                                                         case  1:P3=0x02;break;
                                                         case  2:P3=0x04;break;
                                                         case  3:P3=0x08;break;
                                                         case  4:P3=0x06;break;
                                                         case  5:P3=0x0a;break;
                                                         case  6:P3=0x0c;break;
                                                         case  7:P3=0x0e;break;
                                                         case  8:                    
                                                                     P3=0x02;            
                                                                     delay(50000);                     
                                                                     P3=0x04;  
                                                                     delay(50000);                     
                                                                     P3=0x08;
                                                                     delay(50000);                     
                                                                     P3=0x06;
                                                                     delay(50000);                     
                                                                     P3=0x0a;
                                                                     delay(50000);
                                                                     P3=0x0c;
                                                                     delay(50000);                                                    
                                                                    P3=0x0e;
                                                                    delay(50000);break;
                                                                 
                                                        default:P3=0X00;break;
                                        }
                                                 
                        }   
        }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:973695 發表于 2021-10-24 21:58 | 只看該作者
delay(1200);     是用執行空操作的方式來延時,所以很容易出現檢測不到按鍵動作 。要解決的話只能用外部中斷來捕捉按鍵動作。
回復

使用道具 舉報

板凳
ID:957836 發表于 2021-10-24 22:03 | 只看該作者
謝謝回復,我再按您給的提示嘗試一下。
回復

使用道具 舉報

地板
ID:213173 發表于 2021-10-24 22:17 | 只看該作者
因為按鍵第8次進入流水燈期間按鍵無效,流水燈結束時按鍵難以及時操作,鍵值 i 沒有改變,所以繼續進入流水燈。要在流水燈結束時鍵值清0。
  1. #include <stc8.h>

  2. sbit      K=P5^5;         
  3.   
  4. void delay(unsigned int k)                //@11.0592MHz
  5. {
  6.         unsigned char i, j;
  7.         while (--k)
  8.         {
  9.                 i = 15;
  10.                 j = 90;
  11.                 do
  12.                 {
  13.                         while (--j);
  14.                 } while (--i);
  15.         }
  16. }

  17. void port_mode()
  18. {
  19.         P3M1=0X00;
  20.         P3M0=0X00;
  21.         P5M1=0X00;
  22.         P5M0=0X00;
  23. }

  24. void main()
  25. {   
  26.         unsigned char i=0;        
  27.         port_mode();
  28.         P5=0XE0;
  29.         P3=0X00;
  30.         while(1)
  31.         {
  32.                 if(K==0)   
  33.                 {
  34.                         delay(20);     
  35.                         if(K==0)         
  36.                         {   
  37.                                 if(++i==9)i=1;
  38.                                 while(!K);
  39.                         }  
  40.                 }
  41.                 switch(i)            
  42.                 {
  43.                         case  1:P3=0x02;break;
  44.                         case  2:P3=0x04;break;
  45.                         case  3:P3=0x08;break;
  46.                         case  4:P3=0x06;break;
  47.                         case  5:P3=0x0a;break;
  48.                         case  6:P3=0x0c;break;
  49.                         case  7:P3=0x0e;break;
  50.                         case  8:                    
  51.                                         P3=0x02;
  52.                                         delay(1000);
  53.                                         P3=0x04;
  54.                                         delay(1000);
  55.                                         P3=0x08;
  56.                                         delay(1000);
  57.                                         P3=0x06;
  58.                                         delay(1000);
  59.                                         P3=0x0a;
  60.                                         delay(1000);
  61.                                         P3=0x0c;
  62.                                         delay(1000);
  63.                                         P3=0x0e;
  64.                                         delay(1000);
  65.                                         i=0;break;
  66.                         default:P3=0X00;break;
  67.                 }
  68.         }   
  69. }
復制代碼



回復

使用道具 舉報

5#
ID:123289 發表于 2021-10-25 16:44 | 只看該作者
可能的原因:
1、按鍵防彈動未做洽當。
2、延時程序占用CPU時間。(在此時間里你按鍵了,但程序死在延時當中,還未出來呢)
解決建議:
1、按鍵用中斷方式識別。
2、延時用定時器做(設立一個延時標記,在定時器中看到標記就對其它計時,到時后清除它或設置一個你希望的東東,供你延時判斷用)。
3、主程序延時處理時,只判斷看延時標記,有則執行你想做的事,無則立即退出。這樣既辦了事,又不耽誤時間。
回復

使用道具 舉報

6#
ID:959346 發表于 2021-10-25 17:46 | 只看該作者
在執行CASE 8部分,有很長的延時,沒有辦法檢測到按鍵。一直到這部分執行完,再次跑到按鍵檢測,才能檢測按鍵,只有在這時檢測到按鍵了,才能退出。所以1一直按著不放,等到按鍵檢測那;2在剛退出case 8操作時,按鍵按下,剛好可以檢測到,而由于這個檢測時間比case 8操作的時間小很多,所以有時靈有時不靈
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人国产一区二区三区精品麻豆 | 欧洲一区在线观看 | 亚洲一区二区三 | 欧美在线视频二区 | 91av导航 | 国产精品美女久久久久久不卡 | 热99在线 | 免费黄色录像片 | 国产一区久久久 | 一级美国黄色片 | 国精产品一品二品国精在线观看 | 久久这里有精品 | www亚洲免费国内精品 | 久久久久国产一区二区三区 | 范冰冰一级做a爰片久久毛片 | 国产精品久久777777 | 老子午夜影院 | 免费一级黄| 中文天堂网 | 狠狠狠色丁香婷婷综合久久五月 | 国产一二区视频 | 免费黄色在线观看 | www久久国产 | 中文字幕视频在线 | 久久久久9999亚洲精品 | 亚洲精品无 | 色视频成人在线观看免 | 日韩欧美中文字幕在线视频 | 亚洲一区二区三区视频 | 天天色天天色 | 国产精品久久久久久吹潮 | 日本成人中文字幕 | 国产精品久久久久久久久免费丝袜 | 国产精品久久久久久久久久久久冷 | 国产精品第2页 | 欧美一区二区三区在线观看视频 | 国产欧美一区二区三区久久 | 国产精品久久久久久影视 | 欧美午夜剧场 | 色眯眯视频在线观看 | 免费的网站www |