PIC Microcontroller Bit Math Method

Copy unaligned bits from one register to another:

With possibility of "jitter" on destination pin

	bsf     PORTA,4
	btfss   STATUS,C
	bcf     PORTA,4

ie: Assume the bit is one, then change to 0 if it is not. A C/C++ macro for Hitech C is available

Saves 1 instruction over the more standard:

With possibility of error due to change in value on source pin

        btfsc   STATUS,C        ; load the data
        bsf     PORTA,4
        btfss   STATUS,C
        bcf     PORTA,4

This macro...

COPY_BIT     MACRO   var_A,bit_N,var_B,bit_M
        NOEXPAND
         btfsc   var_A,bit_N
         bsf     var_B,bit_M
         btfss   var_A,bit_N
         bcf     var_B,bit_M
        ENDM

remember to define the dummy macro variables:
var_A   equ     0
bit_N   equ     0

...will produce the same output if called like this:

COPY_BIT STATUS,C,PORTA,4

but can be used on any current bank registers.