• ベストアンサー

h8/3048 or 3052  プログラムの実行時間の測定

richardoの回答

  • richardo
  • ベストアンサー率20% (11/53)
回答No.3

 システムクロックで動作する16ビットカウンタを使って、以下のようなプログラムを作った事が有ります。 ; === 測定開始 === COUNT_CLK_1: MOV.W @TCNT_0,E0 ;+(1) PUSH.W E0 ;+(2) ここまでは、被測定命令では無い ;************************************* ; 以下に被測定命令を入れます。次のどれかになるでしょう。 * ; * ;  1.命令を直接書き込む * ;  2.サブルーチンを呼ぶ * ;  3.インクルードを使う * ; * ;************************************* ;------------- 被測定命令開始 ----------------------- ;------------- 被測定命令はここまで -------------- POP.W E0 ;-(2) MOV.W @TCNT_0,R0 ; SUB.W E0,R0 ;-(1) SUB.W #19,R0 ; ADJUST ; === R0に答のクロック数が入っている ===

関連するQ&A

  • プログラムの実行時間

    ええと..何から言えばいいのか…。私は今、Servlet&JSPを使って、XMLデータベースにアクセスするプログラムを作っています。 簡単な掲示板(見たいなもの)ですが、少し困っています。 それは、プログラムの実行時間についてです。 例えば、誰かが何かを投稿する度にデータベースにアクセスし、 投稿されたものを表示させる度にデータベースにアクセスし、 また、投稿されたものを検索する度にデータベースにアクセスしています。 なぜなら、それぞれの処理を違うクラスで行っているため、データベースにアクセスした時に取得したCollectionを渡すやりかたを知らないからです。 それに、実験段階ではあまり実行時間を気にする必要はないので取り合えずそのようにしました。 しかし、たくさんの人が使う場合にきっとこんなやり方では時間がかかることが 予想されます。 そこで、どなたか「こうすればいい」という意見のある方いませんか? 実際の処理じゃなくていいんです。「意見」で十分です。私に知識を下さい。 お願いします。

    • ベストアンサー
    • Java
  • H83052 ITUタイマ機能 時間の測定について

    現在h8/3052でITUタイマを利用して1msecごとに割り込みがかかるようにしてそのときにセンサで測定した値をA/D変換させるプログラムを作成しました。モニタプログラムのGDB-STUBをROM領域に書き込んでおりますので、GDBで実際にデバッグを行ってみました。 その結果、毎回の割り込みごとのA/D変換終了時のタイマカウントの値をその時の時間としてみているのですが、その時間間隔が正確に1msecではなく、タイマのカウントが最大で3クロック分くらいずれが生じてしまう結果になってしまいました。 タイマカウンタには、誤差は全くないと思いますので、他の原因として考えられるのはプログラムの部分でしょうか?A/D変換の変換開始のタイミングや、終了待ちの関係でしょうか。 その誤差の部分についてわかることがありましたら、ご回答よろしくお願いします。 必要であれば、プログラム内容も載せたほうがよろしいでしょうか。

  • 実行中のプログラムについて

     こんにちわ。 どうしても分からない事がありまして、投稿しました。 私の使用しているPCはNECのノートPCで、OSはWindows XP SP2です。 私はPCにパスワードを設定していて、電源を入れてもパスワードを入力しないとWindowsが起動しないようになっています。 それで最近気が付いたのですが、電源を入れてパスワードを入力する画面が表示された時に「7個のプログラムを実行しています」と表示されます。 何のプログラムが実行されているのか気になって、「7個のプログラムを実行しています」をクリックして見たら 「実行しているプログラムが多すぎるためにコンピュータの処理速度が、通常より遅い場合はプログラムをいくつか終了して下さい」と表示されました。 実行されているプログラムの内2個は分かるのですが「多分、ウイルスバスター2007と日記帳」残り5個がどうしても分からないのです。 実行されている残り5個のプログラムを見つける方法を教えてください、よろしくお願い致します。

  • 一定周期実行プログラム

    UNIX環境での、プログラムを一定周期実行させるプログラミング方法についてご教授下さい。 例えば、50msの周期で、無限ループするプログラムです。 while(1) { t1=clock(); (処理1); t2=clock(); passtime=(t2-t1)/CLOCKS_PER_SEC; time=0.05-passtime; tmp=(int)(1000000*time); usleep(tmp); } まず、思い付いたプログラムは、処理1に掛かった時間を計算し、50msから処理に掛かった時間を引いた時間をsleepで待たせるプログラムです。clock()は精度が低いようですが・・・他に何かいい方法はないでしょうか?

  • javaプログラムの実行時間

    某javaベースのウェブサービスのプログラムをやってます。antでプログラムの実行を行っているので、処理時間を測定したくてSystem.currentTimeMillis()をソースコードに入れても端末には何も表示されませんでした。初心者で申し訳ないが、このようなのをどうすれぼ良いですか。

  • プログラムの実行時間を計測する方法について

    私は、Tiny Basic for Windowsを使って、 プログラムの計算方法の違いによる、 プログラムが答えを導き出すまでの実行時間の違いを調べたいと思っています。 内容としては、入力された数が素数かどうかを調べるものなのですが、 大体のプログラムは完成しています。 後は、時間を計測するだけなのですが、 BASIC言語でプログラムの実行時間を表示させるプログラムなどはできるのでしょうか。 それ以外の方法でもかまいません。 とにかく大体の実行時間を知りたいと思っています。 ストップウォッチで自分が計るしかないのでしょうか。 実行時間を知るための方法を教えてください。 よろしくお願いします。

  • プログラム実行中にプログラムを書き換えるには?

    実行中のプログラムの中でそのプログラムの一部を書き換えて保存するにはどうすればいいですか? 例えば次のようなプログラムの場合、このプログラムの中でTEXT("最初の文字列");の部分の文字列を別な文字列に変更しプログラムを更新したいです。 (プログラム終了後にもう一度実行すると「moji[20]=」の部分は前回実行時に書き換えた文字列が代入されているようにしたい) #include<windows.h> int WINAPI WinMain(HINSTANCE hinst,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int ncmdshow){ TCHAR moji[20]=TEXT("最初の文字列"); MessageBox(NULL,moji,TEXT("文字列表示"),MB_OK); return 0; } --- 実行環境 --- Microsoft Visual C++ 2010 Express WIN32 ユニコードビルド C言語

  • 時間内処理のCプログラム

    今、LSIC86試食版でプログラムの練習をしています。 時間内処理についてですが、例えば、5秒間HELLOという文字を出力して、5秒後ENDを表示する といったプログラムの作り方をご存知の方いらっしゃらないでしょうか? 5回表示すると言うプログラムでしたらできますが、時間内処理の組み方がわからなくて困っています。 LSIC86番のコンパイラで実行したいので、教えてください。 よろしくお願いします。

  • WINAPIから始まるプログラム実行時の引数について。

    WINAPIで始まるメインループにコンソールプログラムのように、引数を与えて実行時の処理を変更させる方法を教えてください。 コンソールでの引数の使い方等は分かるので、どうやったらWINAPIにそう言った引数が渡せるのかが知りたいデス_| ̄|○

  • エクセル¥マクロで、プログラム実行中に中断したい

    エクセルのマクロで、ある収束計算プログラムを作りました。収束条件、最大反復計算回数を設定できるようにしたので、無限ループに陥ることはないのですが、計算結果を表示させながら反復計算をしているためか、処理速度が遅く、途中でプログラムをとめたい~と思うことがあります。 プログラム実行中は何をクリックしてもだめで、プログラムを中断するナイスな方法はありませんでしょうか。今はしょうがないので「ctrl+alt+del」という最悪の方法を使ってます。 教えてください。よろしくお願いします。