1

バイト全体を SFR に割り当てることと、その値に AND または OR を適用することに違いはありますか?

言い換えれば、一部のビットを以前と同じ値に設定した場合、またはこれによりハードウェアの反応が引き起こされる可能性がありますか?

たとえば、次から始めます。

MOV UARTCON, 0x9b

次に、同じ最終値で私ができること

ORL UARTCON, 0x40

また

MOV UARTCON, 0xdb

あるいは

SETB UARTCON.6

違いはありますか?

ここでは特に UARTCON について話しているのではなく、SFR の一般的なメカニズムについて話しています。ビットのセットは重要ですか、それともそのビットの変更のみですか?

UPDCLR質問を絞り込むことができます: ビット アドレス指定可能な SFR は、ビットによって内部的に変更されますか、または、SETBORLおよびのような命令でもバイト全体として変更されますANDか?

4

1 に答える 1

0

ポートピンなど、読み取りと書き込みで意味が異なるビットがいくつかある場合があります。書き込まれるとラッチと出力が設定され、読み取られると入力が返されます。ピンを入力用に設定するには、ピンに 1 を書き込みます。入力に設定し、外部からローにプルされているとします。つまり、0 として読み取られます。入力にもP1.0設定したい場合は、それを行うことができ、問題なく動作します。ただし、 の値を読み取り、値を変更してから書き戻すと、機能しません。P1.1SETB P1.1P1

MOV P1, #1 ; set P1.0 to input
MOV A, P1  ; reads 0
ORL A, #2
MOV P1, A  ; P1.0 no longer input

ORL P1, #2は、論理的には同じことを行いますが、プロセッサが特別なサポートを持ち、ピン入力の代わりにポート ラッチを読み取ることを認識しているため、機能することに注意してください。

あなたが言及した別の可能性は、何かをトリガーする書き込みでした。そのような例の 1 つですSBUF。そこに同じ値を書き込んでも、送信のトリガーになります。ただし、ビットアドレス指定可能ではないため、これはあなたの質問にはあまり関係ありません。標準 8051 のコンテキストでは、同様の動作を示す別の SFR は考えられません。

于 2012-11-06T16:23:53.457 に答える