サンプル
/*
組み込みシステムプログラミング
第二章 点滅するライト
*/
#define LED_GREEN 0x40
#define P2LTCH 0xff5e /* P2LTCHレジスタのオフセット */
/*
LED状態を反転
ArcomのTarget188EB専用
*/
void toggleLed(unsigned char ledMask)
{
asm {
mov dx,P2LTCH /* レジスタのアドレスをロード */
in al,dx /* レジスタの内容読み込み */
mov ah,ledMask /* ledMaskをレジスタにコピー */
xor al,ah /* ビット反転 */
out dx,al /* レジスタに反転情報書き込み */
};
}
/*
指定された秒数待つ
*/
void delay(unsigned int nMilliseconds)
{
#define CYCLES_PER_MS 260
unsigned long nCycles = nMilliseconds*CYCLES_PER_MS;
while (nCycles--);
}
/*
緑色LEDを一秒間に一回点滅させる
*/
void main(void)
{
while (1) {
toggleLed(LED_GREEN);
delay(500);
}
}
- main()関数はスタートアップに合わせる
- toggleLed()はボード依存の関数でasm文で記述
メモリテスト
メモリの読み書きをすることでメモリをテスト
typedef unsigned char datum; /* データバスの設定を8bitにする */
/*
メモリ領域の特定アドレスに置かれているウォーキングワンテストを実行。
*/
datum memTestDataBus(volatile datum *address)
{
datum pattern;
for (pattern = 1; pattern != 0; pattern <<= 1) {
*address = pattern; /* テストパターンを書く */
if (*address != pattern) { /* 読み直し */
return pattern;
}
}
return 0;
}
「組み込みシステムプログラミング」より
0 件のコメント:
コメントを投稿