【问题标题】:LOW() HIGH() to use variable instead of valueLOW() HIGH() 使用变量而不是值
【发布时间】:2021-09-05 08:04:23
【问题描述】:

我知道这就是我们使用 LOW() 和 HIGH() 运算符的方式:

MOV P3,#LOW(-10)

但是如果-10 是其中一个端口上的变量或输入怎么办?这就是我需要的:

MOV P3,#LOW(P0)

这不起作用。 Edsim51 模拟器说需要一个标签。但是我不认为我可以在这里如何使用标签,也许它意味着一个函数标签,我试过了,但据我所知,我们无法从函数返回值,所以我仍然不知道如何在此处使用函数标签。

MOV P3,#LOW(func)
func:
RET P0

这是不正确的。

这是我在互联网上唯一能找到的,只是关于这个问题的讨论:https://community.arm.com/developer/tools-software/tools/f/keil-forum/22073/how-to-use-low-or-high-in-a51

在官方文档中,我什至在任何地方都找不到 LOW() 和 HIGH() 运算符,这对我来说很奇怪:https://www.keil.com/support/man/docs/is51/is51_instructions.htm

【问题讨论】:

  • 您希望 LOW/HIGH 在端口上做什么?端口本质上是 8 位值。你确定你不仅仅需要MOV P3 P0吗?

标签: 8051


【解决方案1】:
  1. 你没有。
  2. 没有意义,一开始只有一个字节宽的东西的低字节或高字节怎么取?
  3. 您没有在官方说明文档中找到它们,因为它们不是说明。 CPU 永远不会看到它们。它们只是汇编程序的快捷方式。 MOV P3, #LOW(-10) 只是 MOV P3, #246 的另一种写作方式,它使程序员的意图更加清晰。

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多