NEC ELECTRONICS NEC ELECTRONICS
NEC electronics NEC electronics NEC
ホーム
アプリケーション
製品情報
先端技術
サポート
WEBショップ
ニュース&イベント
会社案内
header
GO
詳細検索機能/特性検索
サイトマップ お問い合わせ

ビット操作の注意点

目次

    
FAQ-ID = bit-nnnn
0001: ビット操作上の共通注意事項
0002: ポートの出力異常
0003: ポート兼用端子の誤動作 (uPD75P0016)
bit
-0001
ビット操作上の共通注意事項
Q1
ビット操作を行う上での共通注意事項を教えてください。
A1
これは4ビットの75Xから32ビットのV850に共通の事項です。

 ・ビット操作命令
 ・ポートへのビット操作

 マイコンのビット操作は専用のハードウエアで実現しているのではなく、 リード・モディファイ・ライトにより実現しています。  動作としては、
  (1) データを 4/8ビット単位で読み込む(読み込む長さは CPUで異なります)
  (2) 読み込んだデータの目的のビットのセット/リセットを行う
  (3) ビットを処理したデータを 4/8ビット単位で書き戻します
の動作となります。

 通常のプログラム処理ではこれらは特に意識する必要はないのですが、 ポートのようなハードウエアに対してビット操作を行う場合には注意が必要です。
 一部のデバイスを除いては、ポートへのビット操作を可能にするために、 ポートを出力で使用している時には出力ラッチのデータを読み出し、 入力で使用している時には外部端子の状態を読み出せるような回路構成となっています。

 例えば P20-P27 の 8ビットの入出力ポートがあるとします。 このポートへのアクセスは必ず 8ビット単位で行われます。 このポートに対するビット操作を行う場合には、8ビット分のデータが読み込まれます。 この時、出力に指定してあるビットでは出力ラッチのデータが読まれ、 入力に指定してあるビットでは端子の状態が読まれます。

このようなビット毎に異なるところからのデータが組合わさった状態で読まれます。 このデータの中の目的のビットに対して操作が行われ、結果が 8ビットで出力ラッチに書き戻されます。 つまり、入力ポートに指定されたポートの出力ラッチには外部端子の状態が書き込まれる事になります。
このため、操作しないビットに対応するポートが入力の場合、データ化けを生じる可能性があります。従って、入力に指定しているポートに関しては注意が必要になります。

このように、ポートを出力に指定しない状態でのポートに対するビット操作は、対象以外のビットに思いがけない影響を与えますので、注意が必要です。
具体的な現象例での問題については、以下のFAQをご参照ください。

(2006/11)

この情報はお役にたちましたか?
Q2
注意が必要なのは、ポートへのビット操作ということですが、内蔵周辺のモード・レジスタなどでは問題ないですか。
A2
はい、ビット操作でも問題はありません。
なお、内蔵周辺の動作中に、関連レジスタへの同じ値の書き込み可否を気にされることがあります。書き込み禁止(起動トリガになっているなど)が明記されていなければ、動作モードなどを変更するわけではないので、特に問題にはなりません(ビット操作、バイト操作とも)。

(2008/02)

この情報はお役にたちましたか?
back to top  
(2008/02)

bit
-0002
ポートの出力異常
Q1
 ポート・モード(入出力設定)を設定したときに異常な出力がでないように以下のように、 あらかじめ各ビットのデータをポートのラッチに書き込んでからポート・モードを設定しましたが、 意図したとおりの出力となりません。
  P2.3 = 0;
  P2.2 = 1;
  P2.1 = 0;
  PM2 = 0xf1;
先に PMを設定してから各ビットを設定すると意図したとおりになります。 PMを設定する前の各データ設定は無視されるのでしょうか?
A1
ポートの出力データをビット単位で設定しているのが問題です。一括設定をしてください。
ビット単位の設定ではビット操作命令を使用しますが、ポート一括(全ビット)でデータを読み込んで、ビット操作を行って書き戻します。
リセット後のポートは入力のため、外部の端子状態を読み込むことになります。
つまり、P2.1=0 の実行で、その前にセットした P2.2 はクリアされてしまいます。
この情報はお役にたちましたか?
back to top  

bit
-0003
ポート兼用端子の誤動作 (uPD75P0016)
Q1
PORT22 をクロック出力に設定すると電源を入れる度にクロックが出たりでなかったりします。(1/2の確率?) ただ、オシロスコープのプローブを接続していると95%以上の確率で動作しますが、 たまにはクロックが出ない場合も有ります。初期化部分のソフトを以下に示します。

    MOV  A, #0011B
    MOV  PCC, A
    SET1  MBE
    SEL  MB15
    MOV  A, #0001B
    MOV  CLOM, A
    MOV  A, #0H
    MOV  PORT2, A
    MOV  PORT3, A
    SET1  P2.3
    MOV  PORT4, A
    MOV  PORT5, A
    MOV  PORT6, A
    MOV  PORT7, A
    MOV  XA, #10000100B
    MOV  PMGB, XA
    MOV  XA, #0
    MOV  PMGC, XA

A1
ポート2のビット3のセット命令 (SET1 P2.3) による操作が影響しています。

次のように、MOV命令で操作してください。
    MOV  A,#4H
    MOV  PORT2,A
この情報はお役にたちましたか?
back to top  









































 ご利用にあたって  個人情報保護について  RSS       © 1995-2008  NEC Electronics Corporation