PIC Microcontoller Math Method

Increment / Decrement

Sixteen bit counter with a Constant Loop Delay

by: Marc Heuler from: http://www.myke.com/basic.htm

  movlw  HIGH TimeDelay  ;  Load the Delay Values
  movwf  HiCount
  movlw  LOW TimeDelay
Dlay:
  addlw  1               ;  Increment the Counter by 1
  btfsc  STATUS, Z
   decfsz HiCount, f     ;  Decrement the High Counter
    goto Dlay

This loop takes five cycles to execute, regardless of whether or not "HiCount" is to be decremented.

The actual time delay is calculated using the sixteen bit number from:

Time Dlay = (16BitDlay * 5 ins/loop * 4 clocks/ins / clock frequency) + 256