「PIC18FxxK40」カテゴリーアーカイブ
MPASM Technic – ユーザースタック
積極的にユーザースタックを作成する方法を紹介する。 これは、FSR2(FSR0,1でも良いがFSR2を推奨)を用いたユーザースタックである。 ここで、ユーザースタックを構成する場合に重要なこととして極力メモリを食わずに高 … 続きを読む
MPASM Technic – PPS Lockの動き
PIC18FではPICのPinにハード機能を割り付けるPPSという機能がある。 PPS機能にはLOCK機構があり、セットするとPPS機能が変更ができなくなる。 PPSをLockする場合、マニュアルではシーケンスがあると記 … 続きを読む
MPASM Technic – SPIが受信できない
開発途中でSPIやEUART(Serial COMM)が正しく動作しない状態に陥った。 結果であるが、PMD0のSYSCMDは注意が必要である。 SPIやEUARTなど周辺モジュールはこのビットがOFFであっても動いてい … 続きを読む
MPASM Technic – Tblrdが動作しない
PIC18Fではプログラムコード内に置いたデータを連続して読み出せる機能がついた。 従来データはサブルーチンのリターン戻り値としてわたす命令のため、操作しづらく、メモリ消費も問題であった。 PIC18Fでは新たなレジスタ … 続きを読む
MPASM Technic – マクロ
個人の好みとなりますが、アセンブラコード中でどうしても使いづらい部分がいくつかあり、一部マクロで対応しています。 マクロは基本的に以下のよう書式です。 Label macro param1 {, param2… … 続きを読む
MPASM Technic – スタック
PIC18Fでは(PIC12やPIC16など比べ)プログラムによるスタック操作が追加されています。 サブルーチン呼び出しの際にPCがスタックにPUSHされ、ReturnでPOPされます。 これまでPICではプログラムから … 続きを読む
MPASM Technic – 高速な左シフト
一般的に2倍とか4倍などを計算する際、左シフトを用いるが、PIC18FxxK40では高速に演算できます。 これは、8ビット系では珍しい掛け算のMULLW命令が実装されたことによります。 特筆すべきはMULLW命令は1イン … 続きを読む
MPASM Technic – 短いWait挿入
ハード制御等で、タイミングを取るためにCPUに対してなるべく正確で短いWaitを入れたい場合、NOPなどの方法があるが、なるべくコード数を減らしたい場合以下のコードはいかが? 最大3ワード(PIC18Fの1命令は16bi … 続きを読む
MPASM Technic – リテラルの引き算
PIC18FのSUBLW命令によるリテラル[固定数値]の引き算は、 数値-WREGとなる。 一般的な引き算では、WREG-固定数値 のほうが使いやすいのだが、このようなCPUニーモニックはない。 解決方法として、リテラル … 続きを読む