10章:スイッチ(1)

    作成2014.03.03

  1. STEP11_Switch
    (1)STEP11_Switchソースプログラム
    STEP11_Switchソースプログラムを以下に示します。
    /*****************************
     STEP11_Switch.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 = 0b00101111;
    	TRISB = 0x00;
    	
    	// 永久ループ
    	while(1)
    	{
    		// SW1がONの場合
    		if(RA0 == 0)
    		{
    			// LED1点灯
    			RB0 = 0;
    		}
    		// SW1がOFFの場合
    		else
    		{
    			// LED1消灯
    			RB0 = 1;
    		}
    	}
    }
    
     
    (2)STEP11_Switchlソースプログラム実行
    *RA0,RA1,RA2,RA3が入力設定
    *SW1がONの場合 LED1点灯、SW1がOFFの場合LED1消灯となります。


  2. STEP11_SwitchBlink
    (1)STEP11_SwitchBlinkソースプログラム
    STEP11_SwitchBlinkソースプログラムを以下に示します。
    /*****************************
     STEP11_SwitchBlink.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 = 0b00101111;
    	TRISB = 0x00;
    		
    	// 永久ループ
    	while(1)
    	{	
    		// SW1がONの場合
    		if(RA0 == 0)
    		{
    			// LED1点灯
    			RB0 = 0;
    			
    			// 待ち時間関数の呼び出し
    			WaitTime(10000);
    			
    			// LED1消灯
    			RB0 = 1;
    			
    			// 待ち時間関数の呼び出し
    			WaitTime(10000);
    		}
    		// その他の場合(SW1がOFFの場合)
    		else
    		{
    			// LED1消灯
    			RB0 = 1;
    		}
    	}
    }
    
    // 待ち時間関数
    void WaitTime(int cnt)
    {
    	while(cnt > 0)
    		cnt--;
    }
    
     
    (2)STEP11_SwitchBlinkソースプログラムの実行
    *RA0,RA1,RA2,RA3が入力設定
    *SW1がONの場合 LED1が点滅、SW1がOFFの場合LED1消灯となります。


  3. STEP12_LogicOperator
    (1)STEP12_LogicOperatorソースプログラム
    STEP12_LogicOperatorソースプログラムを以下に示します。
    /*****************************
     STEP12_LogicOperator.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 = 0b00101111;
    	TRISB = 0x00;
    	
    	// 永久ループ
    	while(1)
    	{
    		// SW1 ON かつ SW2 ON の場合
    		if(RA0 == 0 && RA1 == 0)
    		{
    			// LED4〜1のみ点灯
    			PORTB = 0b11110000;
    		}
    		// SW1 ON かつ SW2 OFF の場合
    		else if (RA0 == 0 && RA1 == 1)
    		{
    			// LED1のみ点灯
    			PORTB = 0b11111110;
    		}
    		// SW1 OFF かつ SW2 ON の場合
    		else if (RA0 == 1 && RA1 == 0)
    		{
    			// LED2のみ点灯
    			PORTB = 0b11111101;
    		}
    		// その他の場合(SW1,2共にOFFの場合)
    		else
    		{
    			// 全消灯
    			PORTB = 0b11111111;
    		}
    	}
    }
    
    
     
    (2)STEP12_LogicOperatorソースプログラムの実行
    *RA0,RA1,RA2,RA3が入力設定
    *SW1 ON かつ SW2 ON の場合、LED1、LED2、LED3、LED4点灯
    *SW1 ON かつ SW2 OFF の場合、LED1のみ点灯
    *SW1 OFF かつ SW2 ON の場合、LED2のみ点灯
    *SW1,2共にOFFの場合、全消灯
    となります。


  4. STEP12_Nest
    (1)STEP12_Nestソースプログラム
    STEP12_Nestソースプログラムを以下に示します。
    /*****************************
     STEP12_Nest.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 = 0b00101111;
    	TRISB = 0x00;
    		
    	// 永久ループ
    	while(1)
    	{
    		// SW1がONの場合
    		if(RA0 == 0)
    		{
    			// SW2がONの場合
    			if(RA1 == 0)
    			{
    				// LED4〜1点灯
    				PORTB = 0b11110000;
    			}
    			// その他の場合(SW2がOFFの場合)
    			else
    			{
    				// LED1のみ点灯
    				PORTB = 0b11111110;
    			}
    		}
    		// その他の場合(SW1がOFFの場合)
    		else
    		{
    			// SW2がONの場合
    			if(RA1 == 0)
    			{
    				// LED2のみ点灯
    				PORTB = 0b11111101;
    			}
    			// その他の場合(SW2がOFFの場合)
    			else
    			{
    				// 全消灯
    				PORTB = 0b11111111;
    			}
    		}
    	}
    }
    
     
    (2)STEP12_Nestソースプログラムの実行
    *RA0,RA1,RA2,RA3が入力設定
    *SW1 ON かつ SW2 ON の場合、LED1、LED2、LED3、LED4点灯
    *SW1 ON かつ SW2 OFF の場合、LED1のみ点灯
    *SW1 OFF かつ SW2 ON の場合、LED2のみ点灯
    *SW1,2共にOFFの場合、全消灯
    となります。









11章:スイッチ(2)に行く。

トップページに戻る。