Arduinoでのアセンブリ:IOレジスタ


13

質問:プログラミングにアセンブリを使用している場合、Arduino UnoのIOにアクセスするためにどのレジスタを使用しますか?

背景: Arduinoでアセンブリ言語スキルを練習することに興味がありました(コンソールIOを心配するよりもLEDをオン/オフする方が簡単だと思いました)。予備調査を行ったところ、AVRツールチェーンを使用してArduinoをプログラムできることがわかりました。それでも、IOピンに対応するレジスタを見つける方法はよくわかりません。

回答:


8

AVRマイクロコントローラーのデータシートは、読むのにかなり良いです。Arduino上の正確なコントローラー(例:ATmege328)をGoogleで検索し、atmel.com Webサイトで「完全な」データシートを見つけます。「概要」をダウンロードしないでください。多くの情報が含まれていません。atmel.comからデータシートをダウンロードします。これは、最新のドキュメントがある唯一の場所です。

基本IOで使用される3つのレジスタがあります(「I / Oポート」という章を確認してください)。

ここで、nはポート識別子、A、B、C、...の範囲の文字で、コントローラーのIOピンの数によって異なります。各レジスタの各ビットは、1つのGPIOピンを表します(これを完全に理解するには、バイナリに関する基本的な知識が必要です)。

  • DDR n、データ方向レジスタ:これは基本的に、入力(0)または出力(1)のいずれかのピンを構成します。
  • PORT n、ポートnデータレジスタ:ピンが出力として設定されると、関連ビットにより出力ピンがハイ(1)またはロー(0)に切り替わります。入力として設定すると、出力ピンの弱いプルアップ抵抗が有効になります。
  • PIN n、ポートn入力レジスタ:このレジスタを使用して、入力として設定されているピンの現在のレベルを読み取ります。

3
この。ステップ1:それをarduinoと考えるのをやめます。そうではありません。PCB上のATmega MCUです。2.データシートを読みます。3.いいえ、データシートを読んでください
コナーウルフ

ああ...それはまさに私が必要としたものです。Arduinoをターゲットにしたチュートリアルを探すのに多くの時間を費やしたので、単にAVRコントローラをプログラミングし、そのデータシートを使用できることを忘れていたと思います。
アプノートン14

1

これをチェックしてくださいhttp : //arduino.cc/en/Reference/PortManipulation

また、http//arduino.cc/en/Hacking/PinMapping168

他のポートとピンについては、コントローラーのデータシートを確認してください。それらは、それらを理解できる人にとって本当に便利です!:)


3
リンクのみの回答は、リンクのリポジトリを確立しようとしていないため、サイトには役立ちません。さらに、リンクが将来ダウンした場合、リンクのみの回答は役に立ちません。ユーザーがここで必要なものを見つけられるように、または少なくともソリューション自体を見つけることができるように十分なコンテキストを獲得できるように、回答自体にコンテンツを要約または言い換えることをお勧めします。
asheeshr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.