標題:
一個字節(jié)按位依次給到單片機管腳時遇到的問題
[打印本頁]
作者:
屁顛屁顛
時間:
2017-11-12 17:47
標題:
一個字節(jié)按位依次給到單片機管腳時遇到的問題
把一個字節(jié)的數(shù)據(jù)從高位依次間隔賦給單片機的一個管腳。
a=0x05; // 01010101
sbit led=P1^0; //單片機管腳
for(i=7;i>=0;i--) //賦值8次
{
led=a>>7; //高位移到低位
a=a<<1; //把用過的數(shù)據(jù)移走
}第一次a右移7位就是最高位移到最低位嘛,然后a自己左移一次,第二次實際就是把次高位右移7次。
同理 我像下面這樣寫
for(i=7;i>=0;i--)
{
led=a>>i;
}為什么這樣不對呢?我把變量i作為移動的次數(shù),7,6,....1.也是相當(dāng)于把數(shù)據(jù)依次移動到低位啊
求解。
作者:
cccc8888
時間:
2017-11-12 20:49
第一個居然是對的,數(shù)據(jù)類型不匹配一個bit一個char類型,居然沒有警告。 漲見識了。
第二個可以改成這樣。
for(i=7;i>=0;i--)
{
led=(a>>i)%2?1:0;
}
作者:
HC6800-ES-V2.0
時間:
2017-11-13 08:33
你自己寫的程序不對!
不是移位問題,是循環(huán)不停。前8個移位沒有問題,但第九次就出問題了。
此時,i=0,再i--,則不會出現(xiàn)負值,而是255,所以你的循環(huán)就成死循環(huán)了!
除非你定義的i變量是有符號的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1