SSブログ

今頃分かったこと [HC(S)08]

ベテランなら何でもないことでも、手探りでやっている場合はいつまでたったも分からないことが多い。
しかもメモしておかないとすぐに忘れてしまう。
イメージ 3.jpg
アセンブラで書いた割り込みルーチンですが、HC08は元となった6805とのかねあいからすべてのレジスタをスタックに待避しないので、pshh pulhを意識的に書かなければなりません。
ところが、C言語ではどうなのか、
イメージ 2.jpg
CodeWarriorのコンパイラでは自動的に入れてくれてます。

メモメモ
nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

noritan

Hレジスタは、割り込みサービスルーチンの中で使っていなければ、退避する必要は、ハナから無いのです。

この例の "Time_Isr" でも、サブルーチン "PWM_MAX" でHレジスタが保護されていれば、退避する必要はありません。もし、退避するのであれば、

ldhx temp_byte
sthx TCH1

と書き直すことができます。

by noritan (2009-08-02 18:34) 

DAI

素早いコメントありがとうございます。

まあ、これはこの地方の夏場のタイヤチェーンの様なものでして、年に1回使うかどうか分からないものでも、無いと困るのでトランクに入れっぱなしにしています。

このアセンブラは2年前のものなのですが、あの時、と言うか、今もですが、インディアン恐怖症と言いましょうか、感覚的につかめてないのですね。それで、16ビットのレジスタは意識的に使わなかった・・・・

例が良くありませんでした。

レベル、バレバレ
by DAI (2009-08-02 20:07) 

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0