独立して新しいプロジェクトをビルドし、コードを記述してコンパイルして、ボタンコントロールライトの点滅状態の変化を実現し、次のタスク要件を達成します。
[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 while(1 ) 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 }