■
PICマイクロ・コントローラ
■
●PICマイコンとは
●開発(プログラミング)環境
●アセンブラの使い方
●アセンブラ・サブルーチン集
アセンブラ・サブルーチンの使い方について
●「整数演算」
◇16+16ビットの加算ルーチン
・
(MP)
◇24+24ビットの加算
・
(MP)
◇32+32ビットの加算
・
(MP)
◇32+32ビットの加算(Type2、間接アドレシング使用)
・
(MP)
◇64+64ビットの加算
・
(MP)
◇64+64ビットの加算(Type2、間接アドレシング使用)
・
(MP)
◇16−16ビットの減算
・
(MP)
◇32−32ビットの減算
・
(MP)
◇32−32ビットの減算(Type2、間接アドレシング使用)
・
(MP)
◇64−64ビットの減算
・
(MP)
◇64−64ビットの減算(Type2、間接アドレシング使用)
・
(MP)
◇8×8=16ビットの乗算
・
(MP)
◇16×16=32ビットの乗算
・
(MP)
◇16×16=32ビットの乗算(Type2)
・
(MP)
◇32×32=64ビットの乗算
・
(MP)
◇8÷8=8ビットの割り算(余りも得られる)
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇16÷16=16ビットの割り算(余りも得られる)
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇32÷32=32ビットの割り算(余りも得られる)
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇64÷64=64ビットの割り算(余りも得られる)
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
●
Casperさんから四則演算ルーチンを送っていただきました。当方のルーチンでは加減乗除が別になっていますが、これらのルーチンでは1つにまとめられているため、メモリー効率や扱いの点で便利と思います。また、8〜32ビットまで4種を作って下さいました。どうもありがとうございました。
各ルーチンはMPASM対応の純正仕様となっています。
お知らせ:現在(2010年6月頃より)下記4種の四則演算ルーチンで割り算の余りが違っている(答えそのものは合っているようです)というご連絡がホームページを見ていただいた方から寄せられました。余りが常に違うというのでも無く、違っていることがあるということらしいのですが、このことに関しましてルーチンを送っていただいたCasperさんに現在連絡をとっていますが、結果をいただける日にち、時期等はまだわかりませんので、お返事があるまでしばらくお待ち下さい。(2010.10.01)
◇ 8ビット四則演算ルーチン ADMS8.asm
◇16ビット四則演算ルーチン ADMS16.asm
◇24ビット四則演算ルーチン ADMS24.asm
◇32ビット四則演算ルーチン ADMS32.asm
Casperさんによりますと、各ルーチンはシュミレータでテストしていますが、実際のPICマイコンでは充分な使い込みが出来ていないので、もし何か不具合があればすみませんということでした。皆さんで使ってみられてもし何かお気付きの点があれば当方から転送しますのでご連絡下さい。
●「数値/文字列変換」
◇与えられた1バイトをアスキーコードとみて 0〜9 の数字文字であるかを調べ、
そうであればその数を返す
・
(MP)
◇5桁までの10進数文字列("00000"〜"65535")を2バイト数値に変換(先頭アドレス指定型)
・
(MP)
◇5桁までの10進数文字列("00000"〜"65535")を2バイト数値に変換(固定変数型)
・
(MP)
●「多ビット整数(16進数)から10進数値への変換」
以下のルーチンは以前ここで公開していた自作10進化ルーチンの効率が悪かったため、秋月電子製PICプログラム・キット付属のサンプルを基本に私が若干手を加えたものを紹介します。
オリジナルでは使用変数に配列に近いものを使用していますが、自作プログラム中で他のルーチンとの変数共用化などのつごうがあったため変数名を変更し、単体の変数としています(改悪?)。
また、オリジナルでは引き数32ビット、10進数値化のみでしたが、引き数を3種用意し、液晶表示などに便利な数字文字化するルーチンも用意しました(単に30hを加えているだけですが..)。
オリジナル・ルーチンは許可を取っていないためここでの掲載は控えさせていただきますが、秋月電子ではPICプログラム・キットのためのソフトウェア・アップグレード用CD−Rのみも500円で販売されています。また、以前のDOS版ではホームページ上でもソフトを公開しているようですので、そちらの方をぜひご覧下さい。他にも有益なルーチンが紹介されています。
◇8ビット数値を3桁の10進数値に変換する(0〜255)
・
(MP)
◇16ビット数値を5桁の10進数値に変換する(0〜65535)
・
(MP)
◇32ビット数値を10桁の10進数値に変換する(0〜4294967295)
・
(MP)
◇8ビット数値を3桁の10進数文字列に変換する(0〜255)
・
(MP)
◇16ビット数値を5桁の10進数文字列に変換する(0〜65535)
・
(MP)
◇32ビット数値を10桁の10進数文字列に変換する(0〜4294967295)
・
(MP)
●「アスキー文字、文字列操作」
◇与えられた1バイトを文字コードとみて数字文字であるかを調べる
・
(MP)
◇与えられた1バイトを文字コードとみて表示可能な英数文字であるかを調べる
・
(MP)
◇与えられた1バイトを文字コードとみてカナ文字であるかを調べる
・
(MP)
◇参考:8ビット文字コード(キャラクタコード)表
●「RS−232C」
(RS−232Cルーチンでも秋月電子製プログラム・キット付属のサンプルを基本にしています)
◇通信制御無し受信
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇通信制御無し送信
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇RTS/CTS制御の受信
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇RTS/CTS制御の送信
・
(MP)
◇上と同じ。基本命令のみに変更したもの。
◇参考:RS−232Cの信号と端子接続図
●「ウェイト・ルーチン」
●クロック4MHz
◇およそ1/4秒のウェイト
・
(MP)
◇およそ1/2秒のウェイト
・
(MP)
◇およそ1秒のウェイト
・
(MP)
●「その他」
◇ビープ音出力 「ピー」
・
(MP)
◇ビープ音出力 「ピロピロピロ」
・
(MP)
◇2つの周波数を交互に発音する形式のビープ音出力サンプルプログラム
(HTML)
◇ビープ音出力テスト用回路図
◇16F84 の EEPデータROM への書き込み
・
(MP)
◇16F84 の EEPデータROM からの読み込み
・
(MP)
◇16C711 での A/D 変換
・
(MP)
Top
News
Reference
Parts
PIC
What's new
Link
Deep sea
Miscellany
Mail
E.S. [趣味の電気工作] http://www.try-net.or.jp/~el_dream/