2018.6.11
前へ
次へ
ホームページトップへ戻る


16ビットマイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第36回]



●三角関数(SIN)

前回を書いた時点では、今回はプリント基板とそれに部品を実装して実際に動作しているところの写真をお見せするつもりだったのですが。
今日になってパソコンの電源をONにして、前回の記事を読み直していましたら、せっかくSID(度数値のSIN)ができたのだから、SIN関数も試してみたいなあ、という気持ちが出てきて、結局そういうことになってしまいました。
本日はSINだけではなくて、もっとほかのところまで検証が進んだのですが、そういうことになってしまいましたので、結局写真を撮ることなく、終日関数演算プログラムの検証作業にはまってしまいました。

昔学校で最初に習った三角関数は度を単位とするものだったと記憶しています。
それも細かい度数ではなくて30度、45度、60度、90度ぐらいだったように記憶しています。
私はそれは中学3年だったと思うのですが、妻などに聞くと「三角関数なんて高校の数学よお」と言います。
まま、それはどちらでもよいことなのですが。
もっと高学年のいわば進んだ三角関数になりますと、度などは使わず、ラジアンという単位を使います。
π(pi)/2ラジアンとか2π(pi)ラジアンとかという数値に記憶があって、さてラジアンって何だっけ?と思ってネットで調べてみました。
[2018.6.12追記]上の行と下の数行の中でラジアンの前あたりに円周率を示す記号(パイ)を置いているのですがブラウザによっては正しく表示されない場合があるかも知れません。
なので記号の後ろに(pi)を追記しました。[追記ここまで]

そうでした。
思い出しました。
半径と同じ長さの弧をもつ扇形の中心角が1ラジアンでした。
つうことは360度が2π(pi)ラジアンで90度がπ(pi)/2ラジアンということになります。
え?わかります?
半径をRとすると、円周の長さは2π(pi)Rです。
このときの中心角は360度ですから、それは2π(pi)ラジアンです。
90度はその1/4ですから、π(pi)/2ラジアンです。
よくわかんないなあ、という方はネットで調べてみてくださいませ。

さてそれでZB3BASICでは度数のSIN(正弦)関数の関数名はSID()という名前で扱っています。
それについては前回書きました。
ラジアンで計算するSIN関数の関数名はSIN()です。
()の中の単位はラジアンです。
前回と同じことを、今回はSIN()で試してみたのが下の画像です。
値の比較のために前回の記事を右に置いて実行しました。



途中の経過は最下位の数値に少し差があるものもありますが、正しい結果が得られているようです。
ただ最後のπ(pi)/2(90度)が計算されずに終わってしまいました。
これは端数の増分を使ったFOR NEXT文では避けられないもので、誤差の蓄積が原因です。
そのことについては後で説明することとして、これは下のように対策することで、無事にπ(pi)/2(90度)のSINが計算されます。



FOR NEXTの終了条件に小さな値(ここでは0.1)を加算しています。
するとπ(pi)/2(90度)のSINが計算されました。

前回と同様ND80Z3.5でも同じことをやってみました。


計算結果は一致していますが、ND80Z3.5の場合には表示結果が縦に揃っています。
8086BASICはまだ作成途中なので、PRINT文のTAB機能がうまく働いていないようです。
これは大した問題ではありませんから、そのうち直すつもりです。

このあと実数演算(浮動小数点計算)の誤差について書くつもりだったのですが、時間がなくなってしまいました。
ですので。
以下は次回の予告です。

BASICなどのシステムプログラムを自分で書いてみたい、とお考えの方もいらっしゃるのではと思います。
しかし実際には、整数BASICでもそのハードルは結構高いです。
ZB3BASICのように浮動小数点計算機能があって、さらに指数関数、対数関数や三角関数の機能までもたせるということになりますと、これはもう至難の技ということになりましょう。
いうなれば超上級者向きであります。
とはいえ、浮動小数点計算のプログラムとはどういうものか、その基礎的な知識程度については、ぜひ知りたいと興味をもたれる方もおありかと思いますので、次回、超簡単ですけれど、そのあたりについて書きたいと思います。

16ビットマイコンボードの製作[第36回]
2018.6.11upload
2018.6.12追記

前へ
次へ
ホームページトップへ戻る