忍者ブログ
グラビアアイドルについて語るブログ。
[28] [27] [26] [25] [24] [23] [22] [21] [20] [19] [18]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

CQ_V850 で、4つの LED を順次点灯する実験を行いました。

ブレッドボードを使いました。配線がぐちゃぐちゃです。

4つのLEDでの点灯実験

次のようにポート9を使い、Hレベルで点灯しています。

[CON1-9] P98 → 680Ω → (+)LED(-) → GND [CON3-10]
[CON1-10] P99 → 680Ω → (+)LED(-) → GND [CON3-10]
[CON1-11] P910 → 680Ω → (+)LED(-) → GND [CON3-10]
[CON1-12] P911 → 680Ω → (+)LED(-) → GND [CON3-10]

以下、主要なコードです。

周期的に LED を点灯させるための変数です。Lレベルで点灯する場合は、配列の値を反転する必要があります。

static const unsigned char p9h[] = {
0x00, // none
0x01, // P98
0x03, // P98+P99
0x07, // P98+P99+P910
0x0f, // P98+P99+P910+P911
};
static unsigned int p9_count = 0;


メイン関数内で、ポート、タイマ、割り込みの初期化を行います。

// メイン
void sample_main()
{
...
init_port();
init_timer();
init_intc();
...
}

// ポート初期化
void init_port()
{
// ポート98〜ポート911の設定
PMC9H = 0; // 入出力ポート
PM9H = 0; // 出力モード
P9H = p9h[p9_count];
}

// タイマ初期化
void init_timer()
{
// TMM0の設定
TM0CE = 0; // 動作禁止
TM0CKS = 4; // fxx/512
TM0CMP0 = 20000000 / 512 - 1; // 1000ms周期
TM0CE = 1; // 動作許可
}

// 割り込み初期化
void init_intc()
{
// INTTM0EQ0
TM0EQPR0 = 1; // 割り込み優先度 = 1
TM0EQMK0 = 0; // 割り込み許可
}


INTTM0EQ0 割り込みハンドラで、LED の点灯状態を変更します。

void timer_int_handler()
{
if (++p9_count == sizeof(p9h) / sizeof(unsigned char))
p9_count = 0;
P9H = p9h[p9_count];
}



【備考】gcc で開発していますが、独自マクロで Applilet っぽく書けるようにしています。
PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
ブログ内検索
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最新コメント
[07/07 tiffany jewelry uk]
[09/17 車載モニター・阿蘇テック]
[08/30 愛]
[06/12 シモネッタ]
[06/11 arms22]
最新トラックバック
フリーエリア
あわせて読みたい
    Firefox 2 無料ダウンロード
    バーコード
    プロフィール
    名前:
    シモネッタ
    性別:
    非公開
    カウンター
    アクセス解析