PIC Microcontoller Delay Method

Delay X cycles (7-1030) exclusive (11 to 1034 cycles inclusive of call and return)

From Dwayne Reid

;10 bit delay routine providing 1 cycle resolution.  Works with both 12 & 14 bit core PICs.
;Original idea from Mike Harrison.  This version by Dwayne Reid
;
;enters with upper 8 bits of delay in DELAYU, lower 2 bits in bits 1,0 of DELAYL
;bits 7..2 in DELAYL can be used as flags for whatever purpose desired.
;returns with W destroyed
Delay10bit      ;delay is 10 bit value + 7 cycles ( + call + return, if any)
     incf        DELAYU,F        ;correct for dec & test instead of test & dec
Dly10bLoop
     comf        DELAYL,W        ;invert LSBs
     decfsz      DELAYU,F
       goto      Dly10bLoop      ;coarse delay to closest 4 cycles
     andlw       b'00000011'
     addwf       PCL,F
     nop
     nop
     nop