>10進の入出力は大抵遅くてもいい部分でしか使われないから
昔、秋月で売っていたDDSの8桁の発振周波数をロータリエンコーダで増減し、
(PCとの任意のタイミングのUART通信でも変更、増減できるようにしていた)
液晶にその発振周波数を表示する、というパルスジェネレータを作った。

ロータリエンコーダを最高速度で回しても、操作性(応答性)を良くするために
1クリックの時間内で、液晶表示とDDSの周波数の更新が出来るようにしたかったので、
後から色々と悩むよりも、最初から最高速を目指してアセンブラで作った。
もっとも、あらかじめ厳密に時間計算したわけでは無いので、
Cでも可能だったかもしれない。

ところで10進数演算命令ではなくて、10進数演算「補正」命令で十分。
PIC18では2命令(加算と補正)で済むのに、AVRではフラグの問題もあり、
2桁のBCD加算に21命令もかかる(参考AVR204)、残念っw