cmicrocontroller

rlcf instruction with pic 18F4550 in C compiler


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;


Solution

  • 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

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

    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.