#contents;

*使い方 [#xcf761da]
-init_h8sci(char arg_cBaudrate)~
初期化します。引数は通信速度です。(動作クロック 16MHz で調整しています)
-h8sci_out_string(char *arg_sStr)~
引数に与えられた文字列を送信します。
-unsigned char h8sci_in_data(void)~
文字を受信し、受信した文字を返します。この関数が実行された時点ではプログラムは停止しますので、他の主要な処理はタイマ割り込み等を併用してください。

*ソース [#u80c1fd2]
 //--------------------------------------------------------------
 //	シリアル通信用関数 for H8
 //	Ver.1.0
 //--------------------------------------------------------------
 
 //関数のプロトタイプ宣言
 void init_h8sci(char arg_cBaudrate);
 void h8sci_out_data(char arg_c);
 void h8sci_out_string(char *arg_sStr);
 unsigned char h8sci_in_data(void);
 
 char h8sci_buf[150];
 
 #define BR4800		103
 #define BR9600		51
 #define BR19200		25
 #define BR38400		12
 #define BR57600		8
 
 //--------------------------------------------------------------
 //シリアル処理関連
 //--------------------------------------------------------------
 
 //初期化
 void init_h8sci(char arg_cBaudrate)
 {
 #ifndef DISABLE_SCI
 	int i;
 	
 	SCI1.SCR.BYTE = SCI1.SMR.BYTE = 0;
 	SCI1.BRR = arg_cBaudrate;								// ボーレート
 	for (i = 0; i < 1000; i++);					// とりあえず待つ
 	SCI1.SCR.BYTE = 0x30;						// 送受信許可
 	SCI1.SSR.BYTE;								// ダミーリード
 	SCI1.SSR.BYTE = 0x80;						// エラーフラグクリア
 #endif
 }
 
 //1文字送信
 void h8sci_out_data(char arg_c)
 {
 #ifndef DISABLE_SCI
 	while(SCI1.SSR.BIT.TDRE == 0);
 	SCI1.TDR = arg_c;
 	SCI1.SSR.BIT.TDRE = 0;
 #endif
 }
 
 //文字列送信
 void h8sci_out_string(char *arg_sStr)
 {
 #ifndef DISABLE_SCI
 	while(*arg_sStr) 
 		h8sci_out_data(*arg_sStr++);
 #endif
 }
 
 //1文字受信
 //注意:この関数を呼んだ時点で停止します。何か入力があれば次へ移行します。
 unsigned char h8sci_in_data(void)
 {
 #ifndef DISABLE_SCI
 	char data;
 	while((SCI1.SSR.BYTE & 0x78) == 0);			//受信とエラーのフラグが立つまで待つ
 	
 	if(SCI1.SSR.BIT.RDRF == 1){					//データ受信が正常
 		data = SCI1.RDR;						//データを受け取りdataに保存
 		SCI1.SSR.BIT.RDRF = 0;					//受信フラグのクリア
 		return(data);
 	}
 	else{										//データ受信にエラー発生
 		SCI1.SSR.BYTE &= 0xc7;					//エラーフラグをクリア
 		return(0xff);							//エラー時はFFを返す
 	}
 #endif
 }

RIGHT:&now
RIGHT:2005-09-13 (火) 02:01:43
----
[[エレクトロニクス]]
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS