最初のプログラム(LEDを点滅する)




 北斗ボードの基盤上に並んでいるLEDはポート1に繋がっています。このLEDを一定時間毎の点滅するプログラムを作成します。
新規プロジェクトワークスペースの作成を選択し、ワークスペース名に「M12_LED」を記入します。これは、\Workspase内に作られるフォルダ名になります。

#include "sfr_r8m12a.h"
#include "led_ctrl.h"
#define CLOCK 20000

/*メインプログラム*/
void main( void ) {
    init();   /*初期化*/
    while( 1 ) {
        p1 = 0x55;
        wait_ms(1000);
        p1 = 0xaa;
        wait_ms(1000);
    }
}
/* R8C/M12A スペシャルファンクションレジスタ(SFR)の初期化*/
void init( void ) {
    int i;
    /* クロックを高速オンチップオシレータ(20MHz)に変更 */
    prc0 = 1; /* プロテクト解除 */
    hocoe = 1; /* 高速オンチップオシレータ発信開始 */
    for(i=0; i<50; i++ ); /* 安定するまで少し待つ(約10ms) */
    hscksel = 1;/* 高速オンチップオシレータのクロックに切換え */
    scksel = 1;/* システム基準クロック 低速→高速切換え */
    prc0 = 0; /* プロテクト保護 */
    /* ポートの入出力設定 */
    pd1 = 0xff;/* ポート1の入出力設定 */
}
/* タイマ本体 us単位のwait関数*/
void wait_us(unsigned long usec) {
    usec = (usec * CLOCK) / 45000;
    while(usec --);{ }
}
/* タイマ本体 ms単位のwait関数*/
void wait_ms(unsigned long msec) {
    unsigned int i;
    for(i=0;i<msec;i++){
      wait_us(1000);
    }
}
/* end of file*/




次に、関数のプロトタイプ宣言をまとめたファイルled_ctrl.hを作成します。
Cのソースファイルと同じフォルダに保存しておきます。

/* led_ctrl.h */
/* プロトタイプ宣言 */
void init( void );
void wait_us(unsigned long usec);
void wait_ms(unsigned long msec);



入力が終わったら、メニューのbuildアイコンをクリックしてmotファイルを作成します。

ツール→書き込みでR8Cライタを使ってボードに書き込みを行います。

電源を繋いで走らせると、ボード上のLEDが1秒毎に点滅を繰り返します。

プロジェクトファイルのダウンロード


メニューに戻る