/***************************** STEP08_Function.c *****************************/ #define _LEGACY_HEADERS // インクルードファイルの読み込み #include <pic.h> // コンフィギュレーションワードの設定 __CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO ); // プロトタイプ宣言 void WaitTime (int cnt); // メイン関数 void main (void) { // 1,2,17,18端子を入出力端子に設定 CMCON = 0x07; // 電圧レベルの初期設定 PORTA = 0xFF; PORTB = 0xFF; // 入出力設定 TRISA = 0x20; TRISB = 0x00; // 永久ループ while(1) { // LED1点灯 RB0 = 0; // 待ち時間関数の呼び出し WaitTime(10000); // LED1消灯 RB0 = 1; // 待ち時間関数の呼び出し WaitTime(10000); } } // 待ち時間関数 void WaitTime(int cnt) { while(cnt > 0) cnt--; }*待ち時間関数を定義すると以下のメリットがあります。
/***************************** STEP08_StackOver.c *****************************/ #define _LEGACY_HEADERS // インクルードファイルの読み込み #include <pic.h> // コンフィギュレーションワードの設定 __CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO ); // プロトタイプ宣言 void Func0 (void); void Func1 (void); void Func2 (void); void Func3 (void); void Func4 (void); void Func5 (void); void Func6 (void); void Func7 (void); void Func8 (void); void Func9 (void); // メイン関数 void main (void) { // Func0関数の呼び出し Func0(); // 永久ループ while(1) ; } // Func0関数 void Func0 (void) { // Func1関数の呼び出し Func1(); } // Func1関数 void Func1 (void) { // Func2関数の呼び出し Func2(); } // Func2関数 void Func2 (void) { // Func3関数の呼び出し Func3(); } // Func3関数 void Func3 (void) { // Func4関数の呼び出し Func4(); } // Func4関数 void Func4 (void) { // Func5関数の呼び出し Func5(); } // Func5関数 void Func5 (void) { // Func6関数の呼び出し Func6(); } // Func6関数 void Func6 (void) { // Func7関数の呼び出し Func7(); } // Func7関数 void Func7 (void) { // Func8関数の呼び出し Func8(); } // Func8関数 void Func8 (void) { // Func9関数の呼び出し Func9(); } // Func9関数 void Func9 (void) { ; }*関数化は大変便利な機能です。