/********************************************************/ /* プロジェクト名: tmrsmpl */ /* ファイル名: tmrsmpl.c */ /* 内容: タイマサンプルプログラム */ /* TimerA0を用いて10msのループをまわす */ /* プログラム。 */ /* これを利用して課題プログラムを作成 */ /* する。 */ /* 日付: 2005.10.20 */ /* コンパイラ: NC30WA (Ver.5.10 Release 1) */ /* note: OAKS16対応(OAKS16CPUボード) */ /* 作成者: Kazuhiko Araki */ /********************************************************/ /* インクルードファイル */ #include "sfr62a.h" /* プロトタイプ宣言 */ void _main( void ); /* メインプログラム*/ /* マクロ定義 */ #define PORTOUT 0xff /* ポート方向レジスタを出力に設定する為のデータ */ #define LEDOFF 0xff /* LEDを消灯するデータ */ #define LEDON 0x00 /* LEDを点灯するデータ */ #define OFF 0x00 /* フラグのOFFを示すデータ */ #define ON 0x01 /* フラグのONを示すデータ */ #define CNT_TA0 (5000-1) /* タイマA0カウンタ値 fck=f1/32 */ #define CYCLE_TIME (63-1) /* タイマA3周期カウンタ値 */ #define COUNT1SEC 100 /* 10msecをベースにして1秒をカウントするカウント値 */ /* 外部変数宣言 */ void main( void ) { unsigned char count = COUNT1SEC; /* 1秒を数える変数 */ unsigned char p7buf = LEDOFF; /* LEDの点消灯を記憶する変数 */ p7 = LEDOFF; /* LEDにデータ出力 off */ pd7 = PORTOUT; /* ポート7を出力に設定 */ /* timerA0設定 割り込みは使用せず要求ビットのみを監視する */ udf = 0x00; /* ダウンカウント設定 */ ta0mr = 0x80; /* タイマモード クロック:1/32 */ ta0 = CNT_TA0; /* タイマ値の初期化 */ ta0ic = 0x00; /* 割り込みレベルの設定 */ tabsr = 0x01; /* カウント開始 */ for( ; ; ) { /* メインループ */ if( ir_ta0ic == 1 ) { /* 10ms経過? */ ir_ta0ic = 0; count--; if( count == 0 ) { count = COUNT1SEC; p7buf = ~p7buf; p7 = p7buf; } } } }