我正在为 8051 微控制器编写程序。在程序的第一部分,我做了一些计算,然后根据结果,我要么点亮 LED,要么不点亮(使用CLR P1.7
,其中 P1.7 是 LED 连接到微控制器中的端口)。
在程序的下一部分中,我想检索该位,也许将其存储在某个地方,然后在 if-jump 指令中使用它,例如JB
. 我怎样才能做到这一点?
另外,我MOV C, P1.7
在代码示例中看到了该指令。这里是什么C
?
我正在为 8051 微控制器编写程序。在程序的第一部分,我做了一些计算,然后根据结果,我要么点亮 LED,要么不点亮(使用CLR P1.7
,其中 P1.7 是 LED 连接到微控制器中的端口)。
在程序的下一部分中,我想检索该位,也许将其存储在某个地方,然后在 if-jump 指令中使用它,例如JB
. 我怎样才能做到这一点?
另外,我MOV C, P1.7
在代码示例中看到了该指令。这里是什么C
?
这里C
是 8051 的进位标志 - 之所以这样称呼,是因为它可用于在对多个字节进行加法运算时保存“进位”。
它也可以用作单位寄存器 - 因此(如此处)您想要移动位的位置,您可以使用端口值(例如P1.7
)加载它,然后将其存储在其他位置,例如:
MOV C, P1.7
MOV <bit-address>, C
然后稍后您可以使用以下命令对其进行分支:
JB <bit-address>, <label>
一些特殊功能寄存器也是可位寻址的。我相信它都是以 0 或 8 结尾的。我面前没有参考,但你可以做类似 setb r0.1 的事情。这样,如果您需要进位的东西,您不必担心推动它并占用堆栈上的空间。