今頃分かったこと [HC(S)08]
ベテランなら何でもないことでも、手探りでやっている場合はいつまでたったも分からないことが多い。
しかもメモしておかないとすぐに忘れてしまう。
アセンブラで書いた割り込みルーチンですが、HC08は元となった6805とのかねあいからすべてのレジスタをスタックに待避しないので、pshh pulhを意識的に書かなければなりません。
ところが、C言語ではどうなのか、
CodeWarriorのコンパイラでは自動的に入れてくれてます。
メモメモ
しかもメモしておかないとすぐに忘れてしまう。
アセンブラで書いた割り込みルーチンですが、HC08は元となった6805とのかねあいからすべてのレジスタをスタックに待避しないので、pshh pulhを意識的に書かなければなりません。
ところが、C言語ではどうなのか、
CodeWarriorのコンパイラでは自動的に入れてくれてます。
メモメモ
2009-08-02 15:42
nice!(0)
コメント(2)
トラックバック(0)
Hレジスタは、割り込みサービスルーチンの中で使っていなければ、退避する必要は、ハナから無いのです。
この例の "Time_Isr" でも、サブルーチン "PWM_MAX" でHレジスタが保護されていれば、退避する必要はありません。もし、退避するのであれば、
ldhx temp_byte
sthx TCH1
と書き直すことができます。
by noritan (2009-08-02 18:34)
素早いコメントありがとうございます。
まあ、これはこの地方の夏場のタイヤチェーンの様なものでして、年に1回使うかどうか分からないものでも、無いと困るのでトランクに入れっぱなしにしています。
このアセンブラは2年前のものなのですが、あの時、と言うか、今もですが、インディアン恐怖症と言いましょうか、感覚的につかめてないのですね。それで、16ビットのレジスタは意識的に使わなかった・・・・
例が良くありませんでした。
レベル、バレバレ
by DAI (2009-08-02 20:07)