第一個是查表法
比方說我有三個數(shù)據(jù)
char code table={0x01,0x02,0x03}分別對應(yīng)0xa,0xb,0xc,請問如何用C語言實現(xiàn)查表找到對應(yīng)的值呢?請給位大蝦寫出具體的語法實現(xiàn),要簡潔明了。
第二個問題是:比方說我有一數(shù)據(jù) char data=0xa2 ;我要串行發(fā)送出去,那么我采用從高位發(fā)送,然后左移8次分別發(fā)出,請問如何實現(xiàn)?若是采用data<<1這樣的語法,每次左移出去的高位去哪了呢?在CY位?那么任何單片機都有CY寄存器?況且都是左移,data<<1,什么時候高位就會移入CY,什么時候就是丟棄不要呢?
第一個問題:
比如用查表法將結(jié)果保存到變量i中,查表變量為x,則i = table[x],記住C語言里面數(shù)組是從0開始的,比如說上面的0x01就是table[0],0x02是table[1],以此類推。
再說第二個問題:
比如說從P1.0口發(fā)送出去,則可以寫為
sbit OUT = P1^0;//定義OUT為P1.0口,這樣今后好寫程序
char i;
for(i = 0;i < 8;i++)
{
OUT = data & 0x80;//因為高位在前,將它寫成二進制就明白了
data <<= 1;
}
上面的程序就能搞定了;
應(yīng)該是所有的單片機都有CY位(不知道浮點DSP有沒有);
C語言中左移和右移之后低位或高位自動補零,CY位也保持為零(視編譯器而定,這個得看編譯器手冊),有些編譯器提供了循環(huán)移位的函數(shù);