2

私は8051マイクロコントローラー用のプログラムを書いています。プログラムの最初の部分では、いくつかの計算を行い、その結果に基づいて、LEDを点灯するかどうかを決定します(CLR P1.7P1.7は、マイクロコントローラーでLEDが接続されているポートです)。

プログラムの次の部分では、ビットを取得し、おそらくどこかに格納して、のようなif-jump命令で使用したいと思いますJB。どうやってやるの?

MOV C, P1.7また、コードサンプルで命令を見てきました。Cここは何ですか?

4

2 に答える 2

4

これCが8051のキャリーフラグです。これは、複数のバイトで加算演算を実行するときに「キャリー」を保持するために使用できるためです。

シングルビットレジスタとしても使用できます。したがって、(ここのように)ビットを移動したい場合は、ポート値(などP1.7)をロードして、別の場所に格納できます。たとえば、次のようになります。

MOV C, P1.7
MOV <bit-address>, C

その後、次を使用して分岐できます。

JB <bit-address>, <label>
于 2010-06-09T15:58:41.880 に答える
1

一部の特殊機能レジスタもビットアドレス指定可能です。すべてが0または8で終わると思います。私の前に参照はありませんが、setbr0.1のようなことはできます。そうすれば、何かのためにキャリーが必要な場合、それを押したり、スタックのスペースを使い果たしたりすることを心配する必要はありません。

于 2010-07-02T19:32:45.877 に答える