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