【问题标题】:AVR SBI or CBI on Higher Ports H+更高端口 H+ 上的 AVR SBI 或 CBI
【发布时间】:2014-12-15 05:21:18
【问题描述】:

在使用端口 H 到 L 时,我在 avr 程序集中使用 CBI 或 SBI 时遇到问题。根据文档 [http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_SBI.html],SBI 仅采用 5 位参数,如果我使用端口 H 或更高,则_SFR_IO_ADDR(PORTH) 中的地址将超出允许的范围。有没有其他方法可以实现这一目标?谢谢。

【问题讨论】:

  • 为什么这个问题被否决了?

标签: assembly arduino avr


【解决方案1】:

您需要对值进行 LD,执行操作位所需的 OR 或 AND,然后将值返回 ST。除非你只需要写一个 1 以便例如清除中断。在这种情况下,您应该直接 ST 适当的值。

【讨论】:

  • 请注意,SBI/CBI 是 原子 操作,而加载-修改-存储序列不是。您可能必须在这些指令中禁用中断以避免竞争条件。
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
相关资源
最近更新 更多