18章:最終章

    作成2014.03.11

  1. キットで遊ぼう電子回路No.9新PIC入門C言語編のまとめ
    (1)必要な電子部品がそろっており、解説書の内容も非常に丁寧でわかりやすい。
    (2)最新のPICマイコンの開発環境は)「MPLAB X IDE」と「XCコンパイラ」であり、プログラマは「PICkit3」がベストマッチとなる。
    (3)キットで遊ぼう電子回路No.9新PIC入門C言語編で使用するPICマイコンはPIC16F627Aであるが、上記の最新開発環境では、ビルドはできるがデバッグと書き込み機能が正常に動作しない。
    (4)ICD HEADER(Part Number AC162053)を使用すればPIC16F627Aでも最新の開発環境でも動作するとの説明があるが、コスト的に負担となる。
    (5)PIC18F以降のマイコンはICD HEADERなしに最新のPICマイコンの開発環境で動作するため、今後は入門書もPIC18F以降のマイコンに移行すると思われる。
    (6)PICマイコンのプログラミングは一般C言語の容易に理解できる部分と一般知識では理解できない部分がある。
    (7)一般知識では理解できない部分はハード機能の設定に関する部分であり、この部分はサンプルプログラムと解説が必要である。
    (8)開発環境の変化に伴うデバッグと書き込み機能のトラブルがあったが、キットで遊ぼう電子回路No.9新PIC入門C言語編解説書の内容は非常に丁寧で理解しやすかった。


  2. my_BinaryCounter
     最後にサンプルプログラムをベースに変更を加えてにました。
    (1)my_BinaryCounterソースプログラム
    my_BinaryCounterソースプログラムを以下に示します。
    //my_BinaryCounter
    #define _LEGACY_HEADERS
    #include <pic.h>
    // プロトタイプ宣言
    void WaitTime (long cnt);
    // メイン関数
    void main (void)
    {
    	 unsigned char PC=0;
    	 unsigned char MC=0;
    
    	// 1,2,17,18端子を入出力端子に設定
    	CMCON = 0x07;
    	
    	// 電圧レベルの初期設定
    	PORTA = 0xFF;
    	PORTB = 0xFF;
    	
    	// 入出力設定
    	TRISA = 0b00101111;
    	TRISB = 0x00;
    	
    	// 永久ループ
    	while(1)
    	{
    		if(RA0 == 0)// SW1がONの場合
    		{
    			WaitTime (255);// 待ち時間関数の呼び出し
    			while( RA0 == 0 );// SW1がONの間ループ
    			WaitTime (255);// 待ち時間関数の呼び出し
    			
    			if(PC <= 1)
    			{
    				PC=16;
    			}
    			else
    			{
    				PC=PC/2;
    			}
    			PORTB = 0xFF;
    			MC=0;
    		}
    		if(RA1 == 0)// SW2がONの場合
    		{
    			WaitTime (255);// 待ち時間関数の呼び出し
    			while( RA1 == 0 );// SW2がONの間ループ
    			WaitTime (255);// 待ち時間関数の呼び出し
    			
    			if(MC <= 1)
    			{
    				MC=16;
    			}
    			else
    			{
    				MC=MC/2;
    			}
    			PORTB = 0x00;
    			PC=0;
    		}
    		if(RA2 == 0 || RA3 ==0)// SW3orSW4がONの場合
    		{
    			PC=0;MC=0;PORTB = 0xFF;
    		}	
    		if(PC > 1)
    		{
    
    			WaitTime (500*PC);
    			PORTB = PORTB - 1;
    		}
    		if(MC > 1)
    		{
    
    			WaitTime (500*MC);
    			PORTB = PORTB + 1;
    		}
    		
    		
    		
    		
    	}
    }
    
    // 待ち時間関数
    void WaitTime ( long cnt )
    {
    	while (cnt > 0)
    		cnt--;
    }
    
     my_BinaryCounter.cの内容は以下を開いてコピーします。
    「my_BinaryCounter.cの内容」にいく。


  3. 動作確認
    (1)SW1を1回押して離すと8個のLEDがカウントアップを開始します。
    (2)SW1さらに押して離すとカウントアップが早くなります。(4回ほどで元に戻ります)
    (3)SW2を1回押して離すと8個のLEDがカウントダウンを開始します。
    (4)SW3さらに押して離すとカウントダウンが早くなります。(4回ほどで元に戻ります)

    **LEDの点滅のプログラムは容易です。
    **8個のLEDで0〜225までの数値を表示できます。









19章:電子回路No.9新PIC入門C言語編応用オモチャに行く。

トップページに戻る。