2017/06/25(SUN) | 【Nチビ】デジタルスピードメーターを割り算する |
---|---|
さて続編なしかと思いきや
ちょっと仕事でストレス満載なので アルゴリズムでも空想して気を紛らわすwww 相変わらずPICマイコンで作ろうとしているわけで 一定間隔のうち磁力センサーが何回反応したか?をカウントして 速度表示するというプログラムを作るわけだ。 しかもアセンブラでwww んで、割り算をする必要があるのだが アセンブラで割り算なんかできるわけない ということで オーソドックスややり方で実装しようかと。 なに方式っていうんだっけかな? 割り算の手書きをそのままアルゴリズムにする方法。 たとえば、69 ÷ 10 の場合 10真数だと ![]() するわけだ 商が 6 で、余りが 9 となる。 んじゃ2進数だと ![]() なので ![]() となるわけだ。 この手順を紐解いて アルゴリズムをプログラムへと落す まぁ10進数の割り算と一緒ね。 ![]() 違うところといえば、 「0」「1」しかなので、 都度あまりが1010(10)で割れるかだけを 考えればいい ![]() 「余り」をまた1010(10)で割る ![]() というのを繰り返して 最後の桁まで計算したら「商」「余り」が求まる ![]() 単純なアルゴリズムですね。 まぁあまり速度はもとめないから この方式でいいかな? もっと画期的な計算方法もありそうだけどね。 あ、そうそう回路変えました PORTAとPORTBを入れ替え ![]() 前の回路だとRA5で磁力センサーの入力を カウントしようかと思ったんだけど・・・ PORTAの入力って入力割り込み拾えないのね・・・ ということで入れ替え |