ライトの状態変化を制御するCC2530アプリケーションボタン

独立して新しいプロジェクトをビルドし、コードを記述してコンパイルして、ボタンコントロールライトの点滅状態の変化を実現し、次のタスク要件を達成します。
[1]プログラムが実行を開始します。D4ライトが点滅し、D3、D5、D6ライトが消灯します。
[2]モジュールのSW1ボタンを押して離すと、D5とD6のライトが交互に点滅します。
[3] SW1ボタンをもう一度押すと、D5、D6が消灯します。
[4]上記の2つのステップを繰り返します。
この質問では、ライトの状態のフラグを定義する必要があります。ボタンのフラグビットには3つの状態があります。
状態1:D4ライトが点滅し、D3、D5、D6が消灯します。
状態2:D5およびD6ライトが順番に点滅します。
状態3:D5およびD6ライトはオフです。

 

 

1 #include " ioCC2530.h " 
2  
3  #define D3 P1_0
 4  #define D4 P1_1
 5  #define D5 P1_3
 6  #define D6 P1_4
 7  #define SW1 P1_2
 8  
9 unsigned char stat = 0 ;    // ライトステータスフラグ
10  
11  / * =======================シンプルな遅延機能===================== === * / 
12  void Delay(unsigned int t)
 13  {
 14    while(t--);
 15  }
 16  / * =======================ポート初期化関数================= ======= * / 
。17  のボイドinit_PORT()
 18である {
 19。    P1SEL&=〜として0x1B ;        //はP1_0、P1_1、P1_3、P1_4の汎用I / Oポートとして意志   
20がある    P1DIR | = として0x1B ;         // 意志P1_0 、P1_1、P1_3、P1_4出力方向に対して
21れる    P1の=〜&として0x1B ;           // 閉じる4 LEDが点灯
22は   
23である    P1SEL&=〜0x04の ;        // 汎用I / OポートとしてP1_2 
24    P1DIR〜&= 0x04を// 入力方向にP1_2 
25    P1INP&=〜0x04の ;        // P1_2プルアップ/プルダウン組の
26である    P2INP&=〜0x40の ;        // P1_2を引っ張る
27  }
 28  
29  / * ==== ================= D4ライト点滅機能====================== * / 
30  void D4_Flicker()
 31  {
 32    D4 = 1 ;
 33    遅延(60000 );
 34    D4 = 0 ;
 35    遅延(60000 );
 36  }
 37  
38 / * ===================== D5D6ライト点滅機能====================== * / 
39  void D5D6_Flicker()
 40  {
 41    D3 = 0 ;
 42    D4 = 0 ;
 43    D5 = 1 ;
 44    遅延(60000 );
 45    D5 = 0 ;
 46    遅延(60000 );
 47    D6 = 1 ;
 48    遅延(60000 ) ;
 49    D6 = 0 ;
 50    遅延(60000 );
51  }
 52  
53  / * =======================キースキャン機能================== ======= * / 
54である ボイドScan_Keys()
 55  {
 56は、   IF(SW1 == 0// キー信号SW1見つける
57である   {
 58      遅延(100);            // 遅延モーメントは、デバウンス
59      IF(SW1 == 0// SW1キー信号を確認します
60      {
 61        if(stat == 0 62        {
 63          stat =1 ;
 64        }
 65         else  if(stat == 1// 繰り返し
66        {
 67          stat = 2 ;
 68        }
 69        else  if(stat == 2 70        {
 71          stat = 1 ;
 72        }
 73        
74      }
 75    }       
 76  }
 77  
78  / * ==========================主な機能================== ========== * / 
79 void main()
 80  {
 81    Init_Port();             // ポートの初期化
82    while1 83    {
 84      Scan_Keys();           // キースキャン
85      スイッチ(stat)
 86      {
 87        ケース 0// 電源オン状態、D4が点滅
88          D4_Flicker();     
 89        ブレーク;
 90        ケース 1// 実行ステータス1:D5およびD6フラッシュ
91          D5D6_Flicker();
 92        ブレーク;
 93        ケース 2// 実行状態2:D5とD6がオフ
94          D5 = 0 ;
 95          D6 = 0 ;
 96        ブレーク;
 97      }
 98    }
 99 }
コードを表示

 

おすすめ

転載: www.cnblogs.com/yuling520/p/12691326.html