5章:LED点滅

    作成2014.02.28

  1. STEP07_BlinkFailed
    (1)STEP07_BlinkFailedソースプログラム
    STEP07_BlinkFailedソースプログラムを以下に示します。
    /*****************************
     STEP07_BlinkFailed.c
    *****************************/
    #define _LEGACY_HEADERS
    // インクルードファイルの読み込み
    #include <pic.h>
    // コンフィギュレーションワードの設定
    __CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
    // メイン関数
    void main (void)
    {
    	// 1,2,17,18端子を入出力端子に設定
    	CMCON = 0x07;
    	
    	// 電圧レベルの初期設定
    	PORTA = 0xFF;
    	PORTB = 0xFF;
    	
    	// 入出力設定
    	TRISA = 0x20;
    	TRISB = 0x00;
    	
    	// 永久ループ
    	while(1)
    	{
    		// LED1点灯
    		RB0 = 0;
    		
    		// LED1消灯
    		RB0 = 1;
    	}
    }
    
    *非常にシンプルで簡潔ですが点滅の周期が設定されていません。


  2. STEP07_BlinkSuccessful
    (1)STEP07_BlinkSuccessfulソースプログラム
    STEP07_BlinkSuccessfulソースプログラムを以下に示します。
    /*****************************
     STEP07_Successful.c
    *****************************/
    #define _LEGACY_HEADERS
    // インクルードファイルの読み込み
    #include <pic.h>
    // コンフィギュレーションワードの設定
    __CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
    // メイン関数
    void main (void)
    {
    	// カウンタ値用変数
    	int cnt;
    	
    	// 1,2,17,18端子を入出力端子に設定
    	CMCON = 0x07;
    	
    	// 電圧レベルの初期設定
    	PORTA = 0xFF;
    	PORTB = 0xFF;
    	
    	// 入出力設定
    	TRISA = 0x20;
    	TRISB = 0x00;
    	
    	// 永久ループ
    	while(1)
    	{
    		// LED1点灯
    		RB0 = 0;
    		
    		// 10000回繰り返し
    		cnt = 10000;
    		while(cnt > 0)
    			cnt--;
    		
    		// LED1消灯
    		RB0 = 1;
    		
    		// 10000回繰り返し
    		cnt = 10000;
    		while(cnt > 0)
    			cnt--;
    	}
    }
    
    *10000回繰り返しによるディレイが追加されました。


  3. STEP07_BlinkFailedとSTEP07_BlinkSuccessfulの実行結果
     実行結果はLEDの点滅で確認できますが、RB0の電圧変化を測定した結果を図5-1に示します。

    **図5-1において、FailedがSTEP07_BlinkFailedに対応し、SuccessfulがSTEP07_BlinkSuccessfulに対応します。
    **STEP07_BlinkFailedも一応点滅しているのですが、周期が短すぎてLEDの点滅を目視で確認できません。
    **STEP07_BlinkSuccessfulの点滅の周期が約380msであり、LEDの点滅を目視で確認できます。










6章:関数化とレベルスタックに行く。

トップページに戻る。