PICを、アセンブリ言語のプログラムで使う。

PICで電子工作をするため、アセンブリ言語プログラムを使い始める。

当ブログをご覧いただき、ありがとうございます。
ご注意事項:
記載内容には、十分注意しておりますが、勘違い、記憶違い、理解不足、思い込み等が無いとは限りませんので、申し訳ありませんが、 記載内容の正確性は保障致しません(出来ません)。
従いまして、このブログの内容を参考にする事に起因して生じる、または 生じた、いかなる事態にも、当方は何の責任も取れませんので、 参考にされる場合は、自己責任にてお願い致します。
このブログのアセンブリ言語に関する説明には、PICで電子工作するのに必要な事柄以外(私のレベルで)は出てきません、ご了承願います。

2021-01-01から1年間の記事一覧

アセンブリ言語で、LCD表示器を使う、ハードウエア編。

今回は、LCD表示器に文字を表示します。 まずは回路ですが、下の通りです。 使用する、LCD表示器は、秋月電子で売っている超小型LCDキャラクタディスプレイモジュール(16×2行 白抜き)型番SD1602VBWB-XA-G-G(下写真)です。 L…

アセンブリ言語で、4桁7セグメントLED表示器を使う。

今回は、4桁7セグメントLED表示器をダイナミック点灯にて駆動してみた。 プログラムは、下の通りです。 上記プログラムには、使っていない変数が定義されています。 上のプログラムを実行する回路は下の通りです。 PICマイコンは、PIC16F62…

アセンブリ言語で、LEDチカチカをやってみた。

アセンブリ言語でプログラムを書いて、LEDチカチカをやってみた。 下が、そのプログラム、40行まで、初期設定である。 29、30行で変数のラベルを設定。 34行からがメインプログラム、35行でメモリのバンクを1に変更。 (TRISレジスタがバ…

PICの動作はいかにして開始されるか。

PICの動作開始は、どの様になっているのか。 1.PICが適正な回路で使用され、電源が投入される。 2.電源電圧が決まった値を超えると、リセット信号が出て、PICは動作停止状態になる。 3.その後、決まった時間待機してから、クロック信号をカウ…

アセンブリ言語の命令、RETLW命令。

RETFLW命令の解説。 書式;RETLW k kは、定数データ 0~255(0x00~0xFF)、または、ラベル。 動作;CALL命令の次の命令に制御を移すと共に、ワーキングレジスタにkを書き込む。 ステータスレジスタへの影響 C;影響しない DC;影響しな…

アセンブリ言語の命令、RETFIE命令。

RETFIE命令の解説。 書式;RETFIE 動作;ハードウェア割込み発生命令の次の命令に制御を移すと共に、INTCONレジスタのGIEに1を書き込む。 ステータスレジスタへの影響 C;影響しない DC;影響しない Z;影響しない 例

アセンブリ言語の命令、RETURN命令。

RETURN命令の解説。 書式;RETURN 動作;CALL命令の次の命令に制御を移す。 ステータスレジスタへの影響 C;影響しない DC;影響しない Z;影響しない 例

アセンブリ言語の命令、GOTO命令。

GOTO命令の解説。 書式;GOTO k kは、定数データ 0~2047(0x00~0x7FF)、または、ラベル。 動作;k番地の命令に制御を移す。 ステータスレジスタへの影響 C;影響しない DC;影響しない Z;影響しない 例 1. GOTO命令のアドレスを0…

アセンブリ言語の命令、CALL命令。

CALL命令の解説。 書式;CALL k kは、定数データ 0~2047(0x00~0x7FF)、または、ラベル。 動作;リターンアドレスをスタックに書き込み、k番地のサブルーチンに飛ぶ。 ステータスレジスタへの影響 C;影響しない DC;影響しない Z;影響…

アセンブリ言語の命令、BTFSS命令。

BTFSS命令の解説。 書式;BTFSS f,b fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 bは、汎用レジスタビット指定 0~7。 動作;fのbビットが1? ➡ 1なら次の命令はNOP、0ならそのまま実行。 汎用レジスタのbビットが…

アセンブリ言語の命令、BTFSC命令。

BTFSC命令の解説。 書式;BTFSC f,b fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 bは、汎用レジスタビット指定 0~7。 動作;fのbビットが0? ➡ 0なら次の命令はNOP、1ならそのまま実行。 汎用レジスタのbビットが…

アセンブリ言語の命令、INCFSZ命令。

INCFSZ命令の解説。 書式;INCFSZ f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f + 1 ➡ W or f 汎用レジスタ内容に1を加算し、結果を…

アセンブリ言語の命令、DECFSZ命令。

DECFSZ命令の解説。 書式;DECFSZ f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f - 1 ➡ W or f 汎用レジスタ内容から1を減算し、結果…

アセンブリ言語の命令、XORLW命令。

XORLW命令の解説。 書式;XORLW K kは、定数データ 0~255(0x00~0xFF)、または、ラベル。 動作;W XOR k ➡ W ワーキングレジスタの内容と定数データのXORを計算し、結果をワーキングレジスタに上書き。 ステータスレジスタへの影響 C…

アセンブリ言語の命令、XORWF命令。

XORWF命令の解説。 書式;XORWF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;W XOR f ➡ W or f ワーキングレジスタの内容と汎用レジ…

アセンブリ言語の命令、SWAPF命令。

SWAPF命令の解説。 書式;SWAPF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f上位 ⇆ f下位 ➡ f or W 汎用レジスタの内容の上位4ビットと下…

アセンブリ言語の命令、SUBWF命令。

SUBWF命令の解説。 書式;SUBWF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f - W ➡ f or W 汎用レジスタの内容からワーキングレジスタの…

アセンブリ言語の命令、SUBLW命令。

SUBLW命令の解説。 書式;SUBLW k kは、リテラルデータ 0~255(0x00~0xFF)。 動作; k - W ➡ W リテラルデータからワーキングレジスタの内容を減算し、ワーキングレジスタに上書き。 (0x01~0x0x7F(1~127)が正の数、0xFF~0x81(-1~ー127…

アセンブリ言語の命令、RRF命令。

RRF命令の解説。 書式;RRF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作; C f C f 0 10010110 ➡ 0 01001011 Cと汎用レジスタの内容のビット…

アセンブリ言語の命令、RLF命令。

RLF命令の解説。 書式;RLF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作; C f C f 0 10010110 ➡ 1 00101100 Cと汎用レジスタの内容のビット…

アセンブリ言語の命令、NOP命令。

NOP命令の解説。 書式;NOP 何もしない。 C;影響しない DC;影響しない Z;影響しない 例; 1. NOP //命令実行 1命令文の実行時間中何もしない、何もしなくても、1命令文の実行時間はかかる。 PICのクロックが、4MHzの時、1μ秒程の時間が…

アセンブリ言語の命令、MOVWF命令。

MOVWF命令の解説。 書式;MOVWF f fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 動作;W ➡ f ワーキングレジスタの内容を、汎用レジスタに上書き。 C;影響しない DC;影響しない Z;影響しない 例; 1. 汎用レジスタ番…

アセンブリ言語の命令、MOVF命令。

MOVF命令の解説。 書式;MOVF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f ➡ W or f 汎用レジスタの内容を、dで指定されたレジスタに上…

アセンブリ言語の命令、IORWF命令。

IORWF命令の解説。 書式;IORWF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;W OR f ➡ W or f ワーキングレジスタの内容と汎用レジスタ…

アセンブリ言語の命令、MOVLW命令。

MOVLW命令の解説。 書式;MOVLW K kは、定数データ 0~255(0x00~0xFF)、または、ラベル。 動作; k ➡ W 定数データをワーキングレジスタに上書き。 ステータスレジスタへの影響 C;影響しない DC;影響しない Z;影響しない 例; 1. W …

アセンブリ言語の命令、IORLW命令。

IORLW命令の解説。 書式;IORLW k kは、定数データ 0~255(0x00~0xFF)、または、ラベル。 動作;W or k ➡ W ワーキングレジスタの内容と定数データのORを計算し、結果をワーキングレジスタに上書き。 ステータスレジスタへの影響 C;影響し…

アセンブリ言語の命令、INCF命令。

INCF命令の解説。 書式;INCF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f + 1 ➡ W or f 汎用レジスタ内容に1を加算し、結果をdで指…

アセンブリ言語の命令、DECF命令。

DECF命令の解説。 書式;DECF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作;f - 1 ➡ W or f 汎用レジスタ内容から1を減算し、結果をdで…

アセンブリ言語の命令、COMF命令。

COMF命令の解説。 書式;COMF f,d fは、汎用レジスタアドレス 0~127(0x00~0x7F)、または、ラベル。 dは、結果の上書き先が、ワーキングレジスタか、汎用レジスタの選択。 動作; f 反転 ➡ W or f fの内容の2進数を反転して、格納先に上書きす…

アセンブリ言語の命令、CLRW命令。

CLRW命令の解説。 書式;CLRW 動作;Wの内容 0x?? ➡ 0x00 ワーキングレジスタの内容を0x00にする。 ステータスレジスタへの影響 C;影響しない DC;影響しない Z;1をセット 例; 1. W 0xA6 //命令実行前の値(ワーキングレジスタの内容) CLRW //…