実行する
こうして作ったプログラムを下に示します。前回のLED点灯プログラムが下敷きです。あっさりしたプログラムなので特に問題はないはずです。が、買ってきたEZ-KITで走らせてもLEDが消えたままでボタンに反応しません。
これはEZ-KITの工場出荷時設定ではPFピンとSWが切り離されているからです。EZ-KITのマニュアルを読んでも何がいいたいのかよくわからず、表の読み方も不明です。そこで回路図を読むとこのPFピンを他でも使えるようにスイッチの回路が切り離しできるような設計であることがわかります。回路図は偉大です。
プログラムを動かすにはEZ-KITのSW9-1をONにします。
#include// FLASH AのポートB設定レジスタ volatile unsigned char * const pFLASHA_PORTB_OUT=(volatile unsigned char *)0x20270005; volatile unsigned char * const pFLASHA_PORTB_DIR=(volatile unsigned char *)0x20270007; int main(void) { *mmr::pEBIU_AMBCTL0 = 0x7bb07bb0; // 非同期ポート0,1の初期化 *mmr::pEBIU_AMBCTL1 = 0x7bb07bb0; // 非同期ポート2,3の初期化 *mmr::pEBIU_AMGCTL = 0x000f; // 全非同期ポートをイネーブル *pFLASHA_PORTB_DIR = 0x3f; // bit0-5を出力に *pFLASHA_PORTB_OUT = 0x00; // LED消灯 *mmr::pFIO_DIR &= 0xfeff; // PF8を入力に *mmr::pFIO_POLAR = 0; // 正論理入力 *mmr::pFIO_INEN |= 0x0100; // PF8入力イネーブル while(1) if ( *mmr::pFIO_FLAG_D & 0x0100 ) // スイッチは押されているか *pFLASHA_PORTB_OUT |= 0x0001; // 押されているならLED点灯 else *pFLASHA_PORTB_OUT &= 0xfffe; // 押されていないならLED消灯 }