當前位置:編程學習大全網 - 編程軟體 - 51單片機,pcf8591編程問題,發送壹個字節程序中,if((temp&0x80)==0x80的含義

51單片機,pcf8591編程問題,發送壹個字節程序中,if((temp&0x80)==0x80的含義

沒懂妳的意思,妳就拿這麽壹個if判斷語句出來,實在沒法給妳解釋,或許是理解有誤。

不得不說兩句,妳問的問題,提供的內容要全面,要明確妳想知道的是什麽?疑問在什麽地方?

像妳前面說得雙字節字符,貌似就壹點關系都沒有。

上面的那位仁兄說得很不錯了(還不懂的話,建議妳去看I2C協議,和硬件配置吧)

void Send(unsigned char Data)

{

unsigned char BitCounter = 8;

unsigned char temp;

do

{

temp = Data;

//I2C的時鐘線SCL先清零,這是I2C協議決定的,數據傳輸SDA只能在SCL=0時才能改變。

scl = 0;

nop();

//下面就要判斷在I2C數據線上要發送的數據,

//從最高位開始,判斷結果是1,SDA就要置1,判斷結果為0,SDA就要清零。

//沒有什麽像妳說的輸不輸出數據,輸出0是數據,輸出1也是數據。

if((temp&0x80) == 0x80)

sda = 1;

else

sda = 0;

//下面壹個SCL上升沿,把數據線SDA上的數據發送出去

scl = 1;

//因為前面始終判斷的temp最高位,

//第(2,3,4...8)次循環,要依次把數據的第(7,6,5..1)位移到temp的最高位。

//滿足這個要求,每次循環移動壹位就可以了

temp = Data << 1;

Data = temp;

//BitCounter是用來統計循環次數的,

BitCounter --;

}while(BitCounter);

scl = 0;

}

  • 上一篇:怎麽解決進入巫師2:國王刺客時顯示Direct3D 9 device initialization error!
  • 下一篇:win8如何刪除電腦中的其他設備
  • copyright 2024編程學習大全網