在Arduino上组装:IO寄存器


13

问:当我使用汇编进行编程时,我该使用哪些寄存器访问Arduino Uno上的IO?

背景: 我对在Arduino上练习我的汇编语言技能感兴趣(我认为打开/关闭LED灯比担​​心控制台IO容易得多)。通过初步搜索,我发现AVR工具链可用于对Arduino进行编程。但是,我不太了解如何为IO引脚找到相应的寄存器。

Answers:


8

AVR微控制器的数据表相当好阅读。只需在Google上找到您的Arduino上确切的控制器(例如ATmege328),然后在atmel.com网站上找到“ Complete”数据表即可。不要下载“摘要”,它不包含很多信息。从atmel.com下载数据表,这是包含最新文档的唯一位置。

基本IO中使用了三个寄存器(请查看“ I / O端口”一章):

其中n是端口标识符,取决于控制器具有的IO引脚数,字母范围从A,B,C...。每个寄存器中的每个位代表一个GPIO引脚(是的,您需要一些二进制基础知识才能完全理解这一点)。

  • DDR n,数据方向寄存器:基本上将它配置为输入(0)或输出(1)的引脚。
  • 端口n,端口n数据寄存器:当某个引脚设置为输出时,相关位将输出引脚切换为高电平(1)或低电平(0)。当配置为输入时,这将在输出引脚上启用一个弱上拉电阻。
  • PIN n,端口n输入寄存器:使用此寄存器读取配置为输入的引脚上的当前电平。

3
这个。步骤1:停止将其视为arduino。不是。它是PCB上的ATmega MCU。2.阅读数据表。3.不,请阅读数据表
康纳·沃尔夫

啊...那正是我需要的。我想我花了很多时间寻找针对Arduino的教程,以至于我忘了我只是在编写AVR控制器,并且可以使用它的数据表。
apnorton 2014年

1

检查一下:http : //arduino.cc/en/Reference/PortManipulation

另外:http : //arduino.cc/en/Hacking/PinMapping168

至于其他端口和引脚,请检查控制器的数据表,对于了解它们的人来说,它们真的很有用!:)


3
仅链接答案对站点无用,因为我们不尝试建立链接存储库。此外,如果将来链接断开,仅链接的答案将无用。最好汇总或解释答案本身中的内容,以便用户可以在这里本身找到所需的内容,或者至少获得足够的上下文,以便能够自己找到解决方案。
asheeshr 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.