我正在編寫8051微控制器的程序。在程序的第一部分,我做了一些計算,並根據結果,或者點亮LED(使用CLR P1.7
,其中P1.7是LED連接到微控制器的端口)。(8051)檢查是否設置了一個位
在程序的下一部分,我想檢索該位,可能將它存儲在某處,然後將其用於if-jump指令,如JB
。我怎樣才能做到這一點?
另外,我在代碼示例中看到了指令MOV C, P1.7
。什麼是C
這裏?
我正在編寫8051微控制器的程序。在程序的第一部分,我做了一些計算,並根據結果,或者點亮LED(使用CLR P1.7
,其中P1.7是LED連接到微控制器的端口)。(8051)檢查是否設置了一個位
在程序的下一部分,我想檢索該位,可能將它存儲在某處,然後將其用於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的事情。那樣的話,如果你需要攜帶的東西,你不必擔心推動它並佔用堆棧空間。
C51編譯器使用的另一個技巧是使用'PUSH PSW'來推送'C'標誌(以及狀態字的其餘部分),例如在使用'#pragma disable'時存儲以前的中斷狀態。 – 2014-05-17 07:31:58