====================================================================== 【ソ フ ト名】KSK AKI-H8_ENV (Ver1.10) 【登 録 名】KSK AKI-H8_ENV 【ファ イ ル】startup.src, h8-01.h, h8cc.cmd, サンプルプログラム AKI-H8_ENV.txt 【著作権 者】小坂敏文 kosaka@tokyo-ct.ac.jp 【対応 機種】WINDOWS 2000,XP /AKI-H8 + マザーボード 【動作 確認】AKI-H8 + マザーボード 【必要DLL】 【開発 言語】AKI-H8 Cコンパイラ(秋月配布の日立評価版コンパイラ) 【公 開 日】15-Dec-2001 【ソフトウェア種別】学習用フリーソフトウェア 【転載 条件】転載,配布を希望される方は、事前に作者宛にメールをして下さい ====================================================================== 1.概要  AKI-H8スタートアップルーチン,コンパイルコマンド,  マザーボードIO関数,整数SCI1_printf関数を提供する  開発サブシステム  次の6つの特徴を持ち,サンプルプログラムで利用方法がわかるようにしました。  (1)コンパイルからダウンロードまでをCソースファイルのドラッグ&ドロップで処理     します。  (2)初期化されたグローバル変数,関数内static変数を,実行時にはRAMに割り当てて     正常に動作させるようにしました。(startup.src)  (3)マザーボードIO関数を学習者向けに小さな関数で実現しました。(h8-01.h)  (4)整数型変数対応のSCI1_printf()を用いて%dなどの表現で,ホストパソコンの画面     へ変数値の表示をサポートします。SCI1_printf("a=%d b=%4x\r\n",a,b)などの表     現を可能としました(h8-01.h)  (5)msec単位,μsec単位のタイマ割り込みの利用をサポートします。(startup.src,     h8-01.h)  (6).subファイルは自動生成されます。 最新の説明は次を参照して下さい。 http://www2.tokyo-ct.ac.jp/~j/staff/kosaka/for_students/H8.html 2.インストール  ファイルを適当なフォルダにおくだけ。アンインストールは削除するだけです。 3.使用上の注意  このプログラムは学習用フリーソフトウェアです。  このプログラムの使用による、いかなる損害に対しても、作者は責任を負いません。  著作権は、作者(小坂敏文)が保持します。作者に無断で以下の事をしないでください。 1) オリジナル以外の形で他の人に配布する。 2) 有料で配布する。 3) その他、著作権法にふれる行為。 4.使用方法 4.1 含まれるファイル startup.src :共通スタートアップルーチンソース startup.OBJ :共通スタートアップルーチン h8-01.h :マザーボードIO関数,整数SCIprintf 実はソースファイルです。 varTest.c :変数配置チェック用プログラム h8cc.cmd :コンパイル用スクリプト led2nd.c :「h8-01.h」サンプルプログラム LED点滅 ledpwm.c :「h8-01.h」サンプルプログラム LED明るさ制御(PWM制御) eightswh.c :「h8-01.h」サンプルプログラム 8bitスイッチ pushsw.c :「h8-01.h」サンプルプログラム pushスイッチ int1st.c :「h8-01.h」サンプルプログラム タイマ割り込みによるLED点滅 int2nd.c :「h8-01.h」サンプルプログラム                    タイマ割り込みによるLED明るさ制御(PWM制御) sciout.c :「h8-01.h」サンプルプログラム SCI経由でホスト画面へ表示 to_H8.ht :ハイパーターミナル設定ファイル AKI-H8_ENV.txt:このファイル 4.2 フォルダ位置についての前提 (1)ここでの説明においては,AKI-H8購入時に購入したCコンパイラ,リンカ,コンバー    タは「C:\Program Files\h8\C」にあるものとします。 (2)「C:\Program Files\h8\C」には次のものがあることにします。 A38H.EXE :アセンブラ本体 CC38H.EXE :Cコンパイラ本体 C38H.EXE :コンバータ本体 L38H.EXE :リンカ本体 C38CGNB.EXE :CC38H.EXEが使用するコプログラム C38ASMB.EXE :CC38H.EXEが使用するコプログラム C38FRNTB.EXE :CC38H.EXEが使用するコプログラム C38PEPB.EXE :CC38H.EXEが使用するコプログラム C38MIDB.EXE :CC38H.EXEが使用するコプログラム 3048F.H :ヘッダーファイル ASSERT.H :ヘッダーファイル CTYPE.H :ヘッダーファイル ERRNO.H :ヘッダーファイル FLOAT.H :ヘッダーファイル SETJMP.H :ヘッダーファイル LIMITS.H :ヘッダーファイル MATH.H :ヘッダーファイル STDLIB.H :ヘッダーファイル STRING.H :ヘッダーファイル STDDEF.H :ヘッダーファイル STDARG.H :ヘッダーファイル STDIO.H :ヘッダーファイル C38HAB.LIB :ライブラリ3048Hアドバンスモード用 4.3 サンプルプログラム実行方法 (0)準備 1)startup.OBJを「C:\Program Files\h8\C」に入れます。 2)h8cc.cmdの24行目をカスタマイズします。自分の使用するwriterにします。 rem ダウンロードに使用するプログラムを指定します。 set downloader=n-h8w.exe お勧めは前田氏の高速転送ツールです。 http://www.vector.co.jp/soft/win95/prog/se232247.html (1)varTest.c  1)作業用フォルダvarTestを作ります。  2)その中にh8-01.h,varTest.c,to_H8.ht,h8cc.cmdをコピーします。  3)AKI-H8をダウンロード受け入れ状態にしてから    varTest.cをh8cc.cmdにドラッグ&ドロップします。  4)ダウンロードしたケーブルをそのままにしてWindowsマシン側で    to_H8.ht をダブルクリックしてハイパーターミナルを立ち上げて,    通信方式を     38400baud, Ascnc, 8bit, NoParity, stop1    にしてから,AKI-H8をrunさせると,ハイパーターミナル中に表示が現れます。    (プログラムソース参照)    その後AKI-H8のマザーボードのLEDが点滅します。(プログラムソース参照) (2)led2nd.c  フォルダled2ndを作ります。  その中にh8-01.h,led2nd.c,to_H8.ht,h8cc.cmdをコピーします。  AKI-H8をダウンロード受け入れ状態にしてから    led2nd.cをh8cc.cmdにドラッグ&ドロップします。  AKI-H8をrunさせると,AKI-H8のマザーボードのLEDが点滅します。 (3)それ以降のプログラム  同様に行なえばよいでしょう。 5.スタートアップルーチンで実現したプログラム中の変数の取り扱い (1)初期化されていないグローバル変数 RAM領域 (2)初期化されたグローバル変数    RAM領域 (3)初期化された関数内static変数   RAM領域 (4)const修飾子のある初期化されたグローバル変数    ROM領域 (5)const修飾子のある初期化された関数内static変数   ROM領域  const修飾語をつけてもオート変数はスタック領域にセットされ,値の変更を  コンパイラがチェックするだけです。(変更するとコンパイルエラーとなる。)  すなわち,大きな定数表(配列)をグローバル変数で与えるときにはconst修飾子をつ  けるとROM領域に割り当てられ,少ないRAMの節約になることを意味します。(関数内で  大きな定数表(配列)を与える場合はconst staticにすればよい。)  varTest.cのソースの末尾に与えた実行結果と,同プログラムを読んでください。 6.補足 (1)タイマ割り込みルーチンの名前は「void interrupt_cfunc()」に固定です。 (2)タイマ割り込みルーチン中ではユーザがやりたいことだけに専念できるよ    うにしました。ITUに関する処理は内部でやっています。現在のところITU1    にのみ対応しており,h8-01.h中の初期化関数で初期化して使うようになっ    ています。 (3)h8-01.hでは機能ごとに関数化する手法をとっています。このようにしてポ    ート名等を隠します。 (4)「SCI1_printf()」等すべての関数はh8-01.h中にソースの形で置いてある    ため,学習者の理解を深めるのに役立つと思います。 (5)「SCI1_printf()」は実数型変数(%f,%lf)には対応していません。 7.h8cc.cmdについて  h8cc.cmdはCソースファイル「xxxx.c」から転送形式ファイル「xxxx.mot」を作り,  転送するためのスクリプトです。h8cc.cmdはコンパイラ関係のフォルダの位置に依存  します。h8cc.cmdのカスタマイズ領域を自分で変更してください。 【バージョン履歴】 ------------------------------------------------------------------- Version# | 更新 日付 | 記事 ------------------------------------------------------------------- 1.10 | 15.Dec.2003 | SCI1_printf改定,h8cc.cmd公開 1.04 | 19.Apr.2002 | %dなどで0を表示しない誤りを訂正 1.03 | 17.Apr.2002 | SCI1_printfの%uの表現をANSIに準拠した 1.02 | 26.Jan.2002 | 説明文の不十分なところを追加した。プログラムは変更無し 1.01 | 19.Dec.2001 | startup.OBJ 変数が使われていないプログラムでの不具合解消 1.00 | 15.Dec.2001 | 新規作成開始 -------------------------------------------------------------------