我使用Keil uVision編程4.Keil uVision(C51編譯器),一元運算符「!」的含義是什麼?
我有一些像這樣的代碼:
sbit X = P3^3; // X is third bit of P3 register
...
while (1) {
X = !X; // X equals not X ?!
if (X == 0)
printf("0");
else
printf("1");
}
我可以控制`P3^3
通用輸入引腳,因爲該引腳上我有一個PIR(脈衝紅外傳感器)。當它閃爍時,它在那條線上給我1,當它在睡覺時給它0。
時P3^3
被拉到1
, 輸出(如預期)10101010101010..
當它仍然爲0, 輸出(不預期)0000000000000..
我的行爲因爲sbit X
被PIR設置/未設置。
所以問題是,在Keil C51編譯器中運算符!
的含義是什麼?
該文檔指出'sbit'不能在一個函數內聲明,所以我還假設這個代碼片段被省略了?用一個省略號('...')來表明它是正規的('...') – Clifford
只需要清楚,當輸入低時描述'預期'輸出可能會有幫助,因爲在分析中我認爲它的行爲正確* (即編碼)給定了sbit語言擴展的硬件和語義。 – Clifford
是的範圍是全球範圍。 我期待與線路很高時的輸出相同。 實際上,我以爲'!'和'〜'是一樣的。 –