• ベストアンサー

PIC18のポート入出力

PIC16からPIC18を使おうといろいろ勉強中ですが、PIC18のポートはPIC16と違いLAT*というのがあります。 調べると高速処理時(容量性の負荷)の際の誤動作が防げるということらしいのですがLAT*への出力もPORT*出力も同じことらしいような。 この2つの使い分けは 出力ではLAT* 入力(ポート読み込み)ではPORT*を使うといった感じなのでしょうか? 使い分けはどんな感じなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.1

こんにちは。 使い分けに関しては、概ねお考えの通りかと思います。 両者の違いは、当該レジスタをリードした時の挙動です。 PORT*は、リードするとピンの状態が読めます。 LAT*は、リードするとピンの状態に関係なく以前に書きこんだ値が読めます。 ソフトから出力ポートに値を書いても、外的要因で実際のラインのレベルが期待通りにならない事はままあります。(IICなんかでありますね) ビット操作命令などは、ポートを一度読んで書き戻しているので、書いた値と読んだ値が食い違うと、誤動作の原因となります。 対して、書いた値が保持されていると、その点安心です。 ですので、出力(特にビット操作)はLAT*へ。 入力はPORT*から。 と使い分けるのが吉、という理解でおります。

poyo3
質問者

お礼

なるほどリードでも使い分けできますね。 PIC18はPIC16と違い細かいのでちょっととまどってます。慣れればすごく便利なのでしょうね。回答ありがとうございました。

関連するQ&A