2011-05-20 133 views
3

我是使用Microchip的PIC18F4550的c編譯器進行硬件編程的新手。在c編譯器中使用pic 18F4550的rlcf指令

我的問題是,有人可以給我一個例子「如何旋轉位,並獲得被添加進,該指令‘rlcf’(C編譯器)

該指令將位在左,將最左邊的位放在進位中,您應該從進位讀回該值。

我知道它是如何工作的。但是找不到任何示例代碼在我的代碼上運行它。

這就是我收到的數據輸入。必須將其轉換爲二進制值,並將其旋轉。 unsigned int red = 1206420333240;

在此先感謝!

回答

4

您無權訪問C編譯器中的位,您必須使用程序集才能訪問它們。

此外,對於PIC18上的無符號整數,您的值太大,該值是16位數字,最大值爲65535,十六進制0xFFFF。

如何在C文件中編寫程序集取決於編譯器。在海泰C,下面的語法是有效的

asm("RLCF REG,0,0");//replace REG with your register and consider the d and a flags. 
asm("BC 5"); //branch if carry 

但要注意的是旋轉一個字節,而不是兩個字節數。您需要鏈接兩個寄存器的兩個旋轉以旋轉16位數字。

+0

好的,謝謝!我怎樣才能在彙編中寫這個? – projecten1 2011-05-20 13:09:23

+0

我已經更新了答案,以提供一個裝配樣本,但是您將不得不爲自己弄清細節。無論如何,這已經脫離了原來的主題。我想至少有兩個問題,如何在C文件中使用匯編(取決於您的編譯器)以及如何在彙編中執行16位RLCF。如果這與其他問題具有相同的示例編號有關,那麼您也可能會遇到數組問題。 – Martin 2011-05-20 13:26:32