微控制器C語言實現迴圈移位 (轉)

amyz發表於2007-08-15
微控制器C語言實現迴圈移位 (轉)[@more@]
首先宣告:我學習微控制器C語言還不到半年,所以我還是菜鳥,我貼出的東西或許你們都知道,但我只想把我學習的經歷給記錄下來,希望你能找到你所想要的.
 我記得做學微控制器做的第一個實驗就是做迴圈彩燈的實驗,如果用RL和RR很容易實現迴圈移位,但是C語言的移位指指令不能迴圈,移了後以0填充。
如果用C實現迴圈移位呢?
我的思路是:
比如將a=0x45迴圈左移二位。
a迴圈左移n位,即將原來右面(8-n)位左移n位,而將原來左端的n位移到最右面n位。
1、將a的左端n位先放到b中的高n位中
b=>>(8-n);
2、將a左移n位,其右面高n位被補0
c=<3、將b,c進行或運算
a=c|b;
如下:
main()
{
 unsigned char a=0x45,b,c;
 unsigned int n=2;
 b=a>>(8-n)
 c=a< a=c|b;
}
記得我才學微控制器的時候做的第一個實驗就是迴圈彩燈(那時候用的彙編)
學微控制器C語言的時候,第一個實驗當然也就是迴圈彩燈了,C沒有直接迴圈移位的指令沒關係,用上面的語句即可實現。:)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-957956/,如需轉載,請註明出處,否則將追究法律責任。

相關文章