C 编译器中带有 pic 18F4550 的 rlcf 指令
我是使用 Microchip 的 PIC 18F4550 的 C 编译器进行硬件编程的新手。
我的问题是,有人可以给我一个例子'如何旋转位并获取添加的进位,使用这条指令'rlcf'(c编译器)
这条指令将位向左移动并将最左边的位放在进位中,你应该从进位读回这个值。
我知道它是如何运作的。但在我的编码方式中找不到任何示例代码来运行它。
这就是我收到的数据输入。必须将其转换为二进制值,然后进行旋转。 无符号整型红色 = 1206420333240;
提前致谢!
I'm new at hardware programming with c compiler for the PIC 18F4550 from Microchip.
My question is, can someone give me an example 'how to rotate bits and get the carry that is added, with this instruction 'rlcf' (c compiler)
This instruction shifts the bits to the left and places the leftmost bit in a Carry and you should read back this value from the carry.
I know how it works. But can not find any example code to run it on my way to code.
That's the data input i receive. It must be converted into binary values, and than rotate it.
unsigned int red = 1206420333240;
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无权访问 C 编译器中的进位位,必须使用汇编来访问它们。
另外,您的值对于 PIC18 上的 unsigned int 来说太大了,PIC18 是一个 16 位数字,十进制最大为 65535,十六进制为 0xFFFF。
在 C 文件中编写汇编的方式因编译器而异。在 Hitech C 中,以下语法是有效的
,但请注意,这是循环一个字节,而不是一个两字节数字。您需要将两个寄存器的两次循环链接在一起才能循环 16 位数字。
You don't have access to carry bits in a C compiler, you'd have to use assembly to get to them.
Also your value is too big for an unsigned int on a PIC18, which is a 16 bit number with a maximum of 65535 decimal, 0xFFFF hex.
How you write assembly inside a C file varies depending on the compiler. In Hitech C, the following syntax is valid
But note that is is rotating one byte, not a two byte number. You need to chain together two rotates of two registers to rotate a 16 bit number.