PIC Microcontoller Bit Math Method

Transfer one bit from a file register to one pin of PORT w/o jitter

Using shadow registers

;from Paul W. Webster
    MOVF    file,W
    ANDLW   fmask   ; fmask for bit 0 is defined as 0x01
    IORWF   shadA,W ; add in desired outputs from shadow
    MOVWF   PORTA

Only changes port A on the last cycle. Note that you must call this routine (subroutine/ macro) *whenever* you write to an output bit, which you always do using a BSF or BCF on shadA, never PORTA. You might also consider appending a

    MOVWF   shadA
to keep shadA synchronized with the last byte written to PORTA.

Without shadow register

;from Paul W. Webster
    ; WARNING: may trigger the "read-modify-write glitch"
    MOVF    file,W
    XORWF   PORTA,W ; derive "difference" value.
    ANDLW   fmask   ; fmask for bit 0 is defined as 0x01
    XORWF   PORTA,F ; Flip bit if not same.

footnote:

We never use the following instructions on an output register like PORTA:

    BSF PORTA,bit // don't do this!
    BCF PORTA,bit // don't do this either!
    IORWF PORTA,F // or this!
    XORWF PORTA,F // this either!
because we want to avoid the "Read-Modify-Write problem" . Instead, we do the BSF or BCF on a byte of RAM (the "shadow register"), then copy that byte to the output register.