標(biāo)題:
C語言與0x80的問題 從高位到低位讀數(shù)據(jù)
[打印本頁]
作者:
風(fēng)之痕于夢(mèng)想
時(shí)間:
2022-9-12 12:56
標(biāo)題:
C語言與0x80的問題 從高位到低位讀數(shù)據(jù)
代碼
unsigned int XPT2046_ReadAD(unsigned char Command)
{
unsigned char i;
unsigned int Data=0;
XPY2046_DCLK=0;
XPY2046_CS=0;
for(i=0;i<8;i++)
{
XPY2046_DIN=Command&(0x80>>i);
XPY2046_DCLK=1;
XPY2046_DCLK=0;
}
}
請(qǐng)問下for(i=0;i<8;i++)
{
dat=Command&(0x80>>i);
}
是怎么樣把Command從高位到低位讀出來的,
假設(shè)Command是1010 1000
&0x80 1000 0000
= 1000 0000
最終讀出來的結(jié)果好像是0x80不是1,但是XPY2046_DIN只是一個(gè)位,怎么保證讀的是1而不是0x80呢?
作者:
yzwzfyz
時(shí)間:
2022-9-12 14:08
只說取一位的方法,其余7位自己想:
A=INT((dat * 2)/256)
此題用匯編做最方便。
作者:
188610329
時(shí)間:
2022-9-12 14:13
這代碼有何玄機(jī)? 0x80 一定大于i,肯定為真,而你又沒if,也沒while,這個(gè)條件也沒利用上啊。
作者:
wulin
時(shí)間:
2022-9-12 14:56
樓主抄錯(cuò)了,應(yīng)該是:
for(i=0;i<8;i++)
{
dat |= Command & (0x80>>i);
}
作者:
XCYYLX
時(shí)間:
2022-9-12 15:06
運(yùn)用位運(yùn)算與邏輯運(yùn)算讀取數(shù)據(jù)的高位值: for(i=0;i<8;i++) { OLED_SCLK_Clr(); if(dat&0x80) OLED_SDIN_Set(); else OLED_SDIN_Clr(); OLED_SCLK_Set(); dat<<=1; }
作者:
逍遙111111
時(shí)間:
2022-9-12 15:19
I=0 Command&0x80 ,I=1 0x80右移1位變0100 0000,再與Command做比較,以此類推i=2.3.4.5
作者:
hongsehuasheng
時(shí)間:
2022-9-12 15:34
0x80第一次確實(shí)只讀出了首位,但后面還有7次,每次右移一位,不就把剩下7位都讀出來了嗎?
作者:
rundstedt
時(shí)間:
2022-9-12 16:23
0x80>i永遠(yuǎn)成立,你的代碼抄錯(cuò)了,貼正確的出來。
作者:
imxuheng
時(shí)間:
2022-9-12 18:36
感覺不行,這樣吧
for(i=0;i<8;i++)
{
if(Command&(0x80>i));
dat|=1;
}
作者:
zxq9781
時(shí)間:
2022-9-12 18:40
dat=(Command<<1)&0x80;
作者:
北道
時(shí)間:
2022-9-12 18:54
第一次循環(huán),先把command的高八位取出來,第二次循環(huán),0x80右移一位變成01000000,這樣就可以取出第七位了.就這樣直到第一位
作者:
cuihaodianzi
時(shí)間:
2022-9-12 20:47
>> 這是右移,>這是大于,用右移就對(duì)了,再把 dat 也一起右移 8-i
for(i = 0; i < 8; i++)
{
dat = Command&(0x80>>i);
dat = dat >>(8-i);
printf("..... %d\r\n,"dat );
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1