51單片機 對 char 反序列輸出,以及注意事項

 反序列輸出 意思是 比如數值 0xaa (二進制 1010 1010),輸出爲 0x55(二進制 0101 0101).

先上函數

unsigned char  Reverse(unsigned char _char)
{
	unsigned char data aa = 0x00;
	unsigned char data bb = 0x00;
	unsigned char data cc = 0x00;
  unsigned char i;
	aa = _char;

	for (i = 0; i < 7; i++)
	{
		bb = aa & 0x01;
		cc |= bb;

		aa >>= 1;
		cc <<= 1;
	}

	bb = aa & 0x01;
	cc |= bb;
	
	return cc;
}

注意啊,如果Keil 的memory Model 設置爲 Xdata.,aa bb cc變量前不加 data 關鍵字那麼這個函數值就是錯的。位移就出錯了。找了半天原因,我說邏輯沒錯啊。哇哈哈。
具體去搜下 Keil的memory model 設置意義。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章