在51微控制器中有個特殊的變數 sbit (位變數)
用它做乙個變數反轉是很簡單的, nuber=!nuber就實現了。
為什麼需要這個功能呢?
下面看乙個程式
假設 led是乙個燈,led=1為亮,led=0為滅。
那麼我想要他200毫秒閃爍,
while(1)
這是51微控制器的寫法。
在c語言中這樣是不可取的,因為我們不能去對映某一位,(其實是我不會把暫存器對映某一位出來操作)
所以通常我用的都是函式led_on(),led_off()
這樣的話程式就該這樣
while(1)
那麼我的while(1)中還有其它很多事情,我必須每10ms跑一次,那麼51實現200ms的閃爍應該這樣
while(1)
delay_ms(10); }
也很簡單,但是放在沒有位變數的stm32呢?程式是不是該想一想了?
我下面提供一下小方法
(1)flag=1; //需要應該標誌變數
while(1)
delay_ms(10);
} (2)
flag=1; //需要應該標誌變數
while(1)
delay_ms(10);
} 當然還有很多實現的方式,就不一樣列舉了。
位反轉演算法
比如0x12 0001 0010 反轉後變成 0100 1000 即0x48 static unsigned char buf 0x12,buf1 0 static int m,n for m 7,n 0 m n 0 m n buf buf1 將兩位元組short型別數高低位元組取出來 unsign...
位運算可以實現哪些功能
位運算可以實現哪些功能 左移1位乘以2,左移n位乘以2 n 右移1位除以2,右移n位除以2 n 舉個例子 includeusing namespace std int main int a 16 int b 25 乘除2 cout b 1 a 1 用到位運算中的按位與,和1按位與。如下 includ...
解析高效位反轉
把乙個二進位制數反轉 逆序輸出 的 如下 unsigned char fun4 unsigned char c 實際上,這段 的原理很簡單。就是先2位一組反轉,再4位一組反轉,最後8位一組反轉。其中,4位一組反轉時,把一組分為兩半看,每一半都已經反轉了,所以只要將兩半對調即可。8位一組同理。對於2 ...