【问题标题】:rlcf instruction with pic 18F4550 in C compilerC 编译器中带有 pic 18F4550 的 rlcf 指令
【发布时间】:2011-05-20 11:58:15
【问题描述】:

我是使用 Microchip PIC 18F4550 的 c 编译器进行硬件编程的新手。

我的问题是,谁能给我一个例子'如何旋转位并获得添加的进位,使用这条指令'rlcf'(c编译器)

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

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

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

提前致谢!

【问题讨论】:

    标签: c compiler-construction microcontroller


    【解决方案1】:

    您无法在 C 编译器中携带位,您必须使用汇编来获取它们。

    对于 PIC18 上的 unsigned int,您的值也太大了,这是一个 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。如果这与具有相同示例编号的其他问题有关,您可能还会遇到数组问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多