DOにLEDを接続、DI1にスイッチを接続します。スイッチが押されたらLED点灯、離したら消灯にするプログラムです。Lチカに毛が生えたようなプログラムです。

毛の生えた部分は、DI1を入力ポートにする設定と
// 自前のイベントハンドラ
// コールドスタート時
void cbAppColdStart(bool_t bAfterAhiInit)
{
if (!bAfterAhiInit)
{
}
else
{
// 自前のイベントハンドラを登録
ToCoNet_Event_Register_State_Machine(vMyEventHandler);
//出力ポート設定
vPortAsOutput(DO1);
//入力ポート設定
vPortAsInput(SW);
}
}
次にイベントハンドラーでTickTimerのイベントでスイッチの値によりLEDを制御するところです。
// コールドスタート時
static void vMyEventHandler(tsEvent *pEv, teEvent eEvent, uint32 u32evarg)
{
// 4 msec tick timer
if (eEvent == E_EVENT_TICK_TIMER)
{
// DO1 の 反転制御
bPortRead(SW) ? vPortSetLo(DO1) : vPortSetHi(DO1);
}
}
Tick
Timerは4msecのタイマーです。本来ならスイッチのチャタリング除去をしますが、ここでは簡単明瞭にデジタル入出力がわかるようにしたいのでチャタリング除去はやっていません。
my_Sw.zip ダウンロード
|