レッスンTOPへ

//*****************************************************************************
// タイトル: LesssonC_08
// 作者 : ioio
// 移植 : sec
// 目的 : for文でLEDを5回点滅させます。
// マイコン: AT90S2313
// クロック: 10MHz
// Compiler: gcc winAVR
// :
//*****************************************************************************
// 変更履歴
// 2007.05.27(日) 作成
//
//*****************************************************************************
#include "io.h" // デバイス関連の定義を展開

#define DLY_TIME 524 // 500msecソフト遅延カウント

void delay_msec(unsigned int); // 関数を宣言

void main(void)
{
int n; // 点滅カウンタ
DDRB = 0xFE; // PortB b0=Out. b1,b2,b3,b4,b5,b6,b7=In

// 5回繰り返し実行
for( n = 0; n < 5; n++){
// LED ON
PORTB = PORTB | _BV(PB0); /* PB0ピンをHighにし、残りは変化させない */

// ソフト遅延
delay_msec(DLY_TIME);

// LED OFF
PORTB = PORTB & ~_BV(PB0); /* _BV(PB0)のビット反転とandする。PB1ピンをLowにし、残りは変化させない */

// ソフト遅延
delay_msec(DLY_TIME);
}

// main関数からの逸脱防止
while(1);
}


//-----------------------------------------------------------------------------
// 機能 : for文を使ってソフト遅延
// 引数 : unsigned int。 遅延時間をmsecで設定。
// 戻値 : なし
// 作成 : 2007.05.03(木)
//-----------------------------------------------------------------------------
#define T1MS 500 // 1msecソフト遅延カウント
void delay_msec(unsigned int time)
{
unsigned int cnt1;
unsigned int cnt2;

// cnt1がtimeより小さい間、{}の中を繰り返します
for(cnt1 = 0; cnt1 < time; cnt1++){
cnt2 = T1MS;
while(cnt2--); // 1msecの遅延
}
}

//*****************************************************************************
//*****************************************************************************


データダウンロード・・・圧縮ファイル








































inserted by FC2 system