デバッグの道具1


1.デバッグとは

「デバッグ」という言葉はプログラム開発の作業の中での虫取り
です。この虫が居なくなって始めて期待通りにプログラムが動い
てくれること になる訳で、プログラム中の全ての命令の流れを
確認する作業です。
プログラムの実行を実際に動かしての確認は外から何も見え
ないのでかなり困難です。そこで考えられたのがシミュレータで、
別のコンピュータ(つまりここではパソコンで)でPICの命令を実
行したように見せるプログラムです。

これを使えば、命令実行前後の全てのPICの状態を知ることが
でき、作ったプログラムが意図通りに動いているかどうかを確認
できることになります。
この状態の確認のための道具がMPLABには沢山用意されてい
ます。 これらを以下に説明します。


2.アセンブルリスト

リストには、ソースリストとアセンブル結果のリストと2種類あり
ます。 ここでは、アセンブルリストの方を下図に示します。
このリストを表示するには、プロジェクトを開いた状態で、
Window → Absolute Listing で表示できます。
このリストには、プログラムのアセンブル結果である機械語が
アドレス順にリストされており、メモリの格納内容を示していま
す。
さらにこのリストには幾つかのデバッグ情報が色で表現されて
います。つまり、
   ・赤 ---- ブレークポイントの設定個所
   ・緑 ---- トレースの設定範囲
   ・黒 ---- 特に設定の無い部分

プログラムの実行内容の確認はすべてこのリストを見ながら
確認することになるので、デバッグ中は、このリストは常に
MPLABのWindow内に表示したままとなります。

                    拡大できます   



3.レジスタの表示

PIC16C84にはレジスタとして用意されている内部メモリが
48個あります。
その内、アドレスが「0C〜2F」までは、変数として使えるレジスタで、
36個あります。この変数も含めてレジスタの現在状態を表示する
窓が "File Register Window"で、下図のように表示されます。
これを表示するには、Window → File Registers とクリックします。
この表示には値だけでなく色で情報が表現され、赤字の値はプロ
グラムで書き換えが実行されたことを示しています。

この窓は下記の様な使い方をします。
(1) 変数の確認と変更
 デバッグ中に変数の値が知りたい時には、この窓を見ること
 で確認でき    ます。また、後で説明する"Modify"でこれらの
 値を直接書き換えて変更することができます。
 つまり、変数を直接設定してその値でプログラム を実行させて
 試るということができます。
(2) フラッグの確認
 演算や比較命令実行後のフラッグは、03番地(STATUS)を見る
 ことにより判断することができます。
(3) 入出力ポートのデータ確認
 入出力ポートのデータも、05番地(PORTA)と06番地(PORTB)で
 確認出来ます。もちろん Modifyで変更することもできます。




4.EEPROMデータの表示

PIC16C84には、電源を切った後も消えない便利なメモリが用意され
ています。
EEPROMメモリがこれで、64バイトがありこの現在状態を表示する
窓が "EEPROM Window"です。
表示するには、Window → EEPROM Memory とクリックします。
EEPROMの内容も"Modify"の窓で書き換えを行うことができます。
この表示もプログラムやModifyにより書き換えが実行された部分は
赤字で表示されます。

 



5.レジスタ変更

上記レジスタの設定変更やプログラムメモリの書き換えを行う時に
使う窓です。
Modifyの窓は、Window → Modify で開きますが、"File Register
Window"の変更したい場所を選択後で右クリックでも開くことが
きます。
このModifyからは下記の内容変更ができます。

(1) レジスタの変更
 Modify窓中の"Memory Area"で「Data」を指定するとレジスタ
 の変更となり 「Address」に指定場所を"Data Opcode"にデータ
 を16進数で入力し(RadixをHexに設定していると16進数)
 「Write」を実行すると書き換わります。
(2) プログラムメモリの変更
 プログラムエリアを0クリアしたり、命令の機械語を直接書き
 換えたりする時には、"Memory Area"で「Program」を指定し
 す。
 範囲をまとめて書き換える時には"Address"と"End Address"
 で指定し、 "Data Opcode"に目的の値を設定したあと
 「Fill Range」をクリックします。
(3) スタックエリアの変更
 これはまず使うことは無いでしょう。
(4) EEPROMメモリの書き換え
 "Memory Area"で「EEPROM」を指定し、"Address"に場所を
 指定して「Write」をクリックすればメモリ内容が書き換わります。



次ページへ     目次ページへ