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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3136|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区 | 精品毛片 | 国产在线观看一区二区三区 | 国产一区视频在线 | 毛片入口| 国产在线精品一区 | 91在线视频免费观看 | 国产成人综合一区二区三区 | 天天拍天天操 | 精品久久久久一区二区国产 | 国产精品久久久久久久久免费 | 香蕉国产在线视频 | 久久精品国产99国产精品 | 青春草在线 | 欧洲一区二区三区 | 国产一区精品在线 | 国产区一区二区三区 | 亚洲欧洲精品一区 | 日韩午夜影院 | 91资源在线 | 在线亚洲电影 | 欧美日韩午夜精品 | 成人av在线播放 | 黑人一级黄色大片 | 日韩中文字幕在线播放 | 福利一区视频 | 青青草国产在线观看 | 久久综合一区二区 | www.日韩欧美| 一区二区三区在线观看免费视频 | 欧美 日韩 在线播放 | 日韩精品一区二区三区在线播放 | 欧美综合在线观看 | 最新黄色在线观看 | 国产在线网站 | 国产精品久久精品 | 国产有码| a级黄色网 | 免费看a | 视频在线一区 | 成人av观看|