4

Cに変換する目的で、開発ボード(XL400)に付属のasmの例を理解しようとしています.

asm コードは以下に含まれていますが、残念ながら、このようなドキュメントは中国語から非常にひどく翻訳されており、役に立たないというよりも悪いものになっています。また、asm を使用するのは久しぶりです。

コードには、DELAY サブルーチン (コードの最後の 3 行目) に JB 命令があります。それが何をするのか、どのように動作するのか理解できません。JBをグーグルで検索すると、別のフォーム(JBラベル)の説明が表示されるため、asmが正しいかどうかはわかりません?? Ta さん、どうもありがとうございました。

 RS EQU P2.0
 RW EQU P2.1
 E EQU P2.2
 ORG 0080H
 MOV P0,#00000001B  ;- Screen
 ACALL ENABLE
 MOV P0,#00000001B  ;- Screen
 ACALL ENABLE
 MOV P0,#00111000B  ;Display
 ACALL ENABLE
 MOV P0,#00001111B  ;Show switch control
 ACALL ENABLE
 MOV P0,#00000110B  ;Input mode
 ACALL ENABLE
 MOV P0,#0C0H       ;Data memory address
 ACALL ENABLE
 mov p0,#01000001b  ;ASCII code
 SETB RS
 CLR RW
 CLR E
 ACALL DELAY
 SETB E
 AJMP $

ENABLE: CLR RS           ;Send orders
 CLR RW
 CLR E
 ACALL DELAY
 SETB E
 RET

DELAY: MOV P0,#0FFH
 CLR RS
 SETB RW
 CLR E
 NOP
 SETB E
 JB P0.7,DELAY      ;Judgement busy signs
 RET

 END
4

3 に答える 3

5

8051 アセンブラの JB 命令は、第 1 オペランドで指定されたビットがセットされている場合、第 2 オペランドのラベルが示すアドレスにジャンプします。MOV P0,#0FFHしたがって、あなたの場合、が設定されている場合にジャンプしますP0.7

JB label参照している命令は 8086 命令 (直前の CMP 命令の結果に基づいて下にジャンプ) であるため、間違ったページを見ていました。

編集: 彼らが使用している LCD のタイプは正確にはわかりませんが、ビジー フラグだと思います。これらのディスプレイはすべて、由緒あるHitachi 44780とかなり密接に関連しているためです。ボードの回路図では、 P0.7 はディスプレイ ピン 14 (通常は DB7) に接続されており、ここにビジー フラグが存在します。もちろん、実際のディスプレイのドキュメントを使用するのが常に最善ですが、これはおそらくかなり近いものであり、始めることができます。また、そのディスプレイは非常に人気があるため、プログラミング方法に関するすべての可能な言語のコードを簡単に見つけることができます。アセンブリをリバース エンジニアリングするよりも、そのルートに従う方が簡単かもしれません。

于 2012-11-20T12:14:04.040 に答える
1

コマンドの後に LCD コントローラーの準備が整うまでのビジー/待機ループのように見えます。

SETB E //enable LCD
JB P0.7,DELAY //jump if 1 

http://www.keil.com/support/man/docs/is51/is51_jb.htm

于 2012-11-20T12:13:26.823 に答える
1

(免責事項: 私は 8051 アセンブリ言語を知りません。)

http://www.win.tue.nl/~aeb/comp/8051/set8051.html#51jbより

説明: bit addr で示されるビットがセットされている場合、JB は reladdr で示されるアドレスに分岐します。ビットがセットされていない場合、プログラムの実行は JB 命令の次の命令から続行されます。

P0 の 7 番目のビットを見て、ビットがセットされていれば DELAY にジャンプするようです。

于 2012-11-20T12:14:50.753 に答える