;At 4.0Mhz, delay = approx. 100mS.
delay_100ms:
movwf CounterY ;
dly3: call delay10mS ;
clrwdt
decfsz CounterY, F ;
goto dly3 ;
return ;
delay10mS: clrf CounterX ; 10022uS (( 39 * X ) + 39 ) = uSec.
comf CounterX,f ;
goto dly1 ;
delay2mS: clrf CounterX
dly4: call dly5 ;
decfsz CounterX, F ; reduce count (( 7 * X ) + 4 ) = 1028 => 1,028 mSec39 * X ) + 37 ) = uSec.
goto dly4 ; loop
dly5: return ;
delay1200uS: clrf CounterX ; 1207uS (( 39 * X ) + 37 ) = uSec.
bsf CounterX,5 ;
decf CounterX,f ;
decf CounterX,f ; = d'30'
goto dly1 ;
delay800uS: clrf CounterX ; 895uS (( 39 * X ) + 37 ) = uSec.
bsf CounterX,1 ;
bsf CounterX,4 ;
decf CounterX,f ; = d'20'
dly1: call dly2 ;
decfsz CounterX, F ; reduce count (( 39 * X ) + 37 ) = uSec.
goto dly1 ; loop
dly2: goto $+1 ; 1
goto $+1 ; 2
goto $+1 ; 3
goto $+1 ; 4
goto $+1 ; 5
goto $+1 ; 6
goto $+1 ; 7
goto $+1 ; 8
goto $+1 ; 9
goto $+1 ;10
goto $+1 ;11
goto $+1 ;12
goto $+1 ;13
goto $+1 ;14
goto $+1 ;15
goto $+1 ;16
return ;