
#include "iodefine.h"	//マイコン設定に必要な情報読み込み

//関数のプロトタイプ宣言
//こういう関数を使いますよという予告の役割
void hardware_setup(void);
void set_LED_R(int);
void set_LED_G(int);
int get_sw1(void);
//プロトタイプ宣言をしておくと関数の実体はどこに書いても良くなる。

////////////////////// ここからメイン処理 //////////////////////

main(){
	hardware_setup();	//マイコンの端子を初期化
	set_LED_R(0);		//とりあえずLED赤消灯
	set_LED_G(0);		//とりあえずLED緑消灯
	while(1){
		if(get_sw1()){		//スイッチ1がON:下の時
			set_LED_R(1);	//LED赤点灯
			set_LED_G(0);	//LED緑消灯
		}else{				//スイッチ1がON:下じゃない時(OFF:上)
			set_LED_R(0);	//LED赤消灯
			set_LED_G(1);	//LED緑点灯
		}
	}
}

////////////////////// ここから関数の実体 //////////////////////

/*============= マイコン端子の初期化関数 =============*/
void hardware_setup(void){
	//ポートEの特殊機能設定
	//今回はポートEの0〜15を全て汎用IOに設定する(特殊機能不使用)
	PFC.PECRL4.WORD = 0x0000;
	PFC.PECRL3.WORD = 0x0000;
	PFC.PECRL2.WORD = 0x0000;
	PFC.PECRL1.WORD = 0x0000;

	//ポートEの入出力を設定する
	//7,6,3,2を入力それ以外は出力
	//1111 1111 0011 0011(2進数)
	//   F    F    3    3(16進数)
	PFC.PEIORL.WORD = 0xFF33;
	// ！！！注意！！！
	//ベースボードを接続する場合PE02は出力に設定しないこと。
}

/*============= LED赤の出力関数(0:消灯、1:点灯) =============*/
void set_LED_R(int on){
	if(on==0)	//関数への入力が0の時
		PE.DRL.BIT.B0=0;	//消灯
	else		//それ以外(入力が0の時)
		PE.DRL.BIT.B0=1;	//点灯
}

/*============= LED緑の出力関数(0:消灯、1:点灯) =============*/
void set_LED_G(int on){
	if(on==0)	//関数への入力が0の時
		PE.DRL.BIT.B1=0;	//消灯
	else		//それ以外(入力が0の時)
		PE.DRL.BIT.B1=1;	//点灯
}

/*============= SW1の状態取得関数(SW1上:0、SW1下:1)=============*/
int get_sw1(void){
	return PE.DRL.BIT.B2;
}

/*============= ここまで =============*/