C编译器中带PIC18F4550的rlcf指令

C编译器中带PIC18F4550的rlcf指令,c,compiler-construction,microcontroller,C,Compiler Construction,Microcontroller,我是新的硬件编程与c编译器的PIC18F4550从微芯片 我的问题是,有人能给我举个例子“如何使用指令‘rlcf’(c编译器)旋转位并获得所添加的进位” 此指令将位向左移位,并将最左边的位放入进位,您应该从进位读回此值 我知道它是怎么工作的。但在我编写代码的过程中,找不到任何示例代码来运行它 这就是我收到的数据输入。必须将其转换为二进制值,然后对其进行旋转。 无符号整数红色=1206420333240 提前谢谢 在C编译器中,您没有访问进位的权限,您必须使用汇编来访问它们 此外,您的值对于PIC

我是新的硬件编程与c编译器的PIC18F4550从微芯片

我的问题是,有人能给我举个例子“如何使用指令‘rlcf’(c编译器)旋转位并获得所添加的进位”

此指令将位向左移位,并将最左边的位放入进位,您应该从进位读回此值

我知道它是怎么工作的。但在我编写代码的过程中,找不到任何示例代码来运行它

这就是我收到的数据输入。必须将其转换为二进制值,然后对其进行旋转。 无符号整数红色=1206420333240


提前谢谢

在C编译器中,您没有访问进位的权限,您必须使用汇编来访问它们

此外,您的值对于PIC18上的无符号整数来说太大,这是一个16位数字,最大值为65535十进制,0xFFFF十六进制

在C文件中编写程序集的方式因编译器而异。在Hitech 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位数字。

我已经更新了答案,以提供一个组装示例,但您必须自己解决细节问题。无论如何,这已经偏离了原来的主题。我认为您至少有两个问题,如何在C文件中使用汇编(取决于您的编译器)以及如何在汇编中执行16位RLCF。如果与具有相同示例编号的其他问题相关,那么您可能还存在数组问题。