La mejor formula es la que esta en este segundo post, el "picdel", que tambien la teneis en el primer hilo de este subforo, las temporizaciones son perfectas no fallan ni una millonesima y te da el codigo hecho, yo lo uso siempre y en las simulaciones en el MPLAB nunca tuve un desvio ni de 1us, cuando en un programa se ponen varias demoras hay que tener cuidado, pues hay que cambiar los nombres de las etiquetas y de los rgistros de RAM:
DEMORA ; demora 1ms
movlw .248 ; 1 set numero de repeticion
movwf PDel0 ; 1 |
PLoop0 clrwdt ; 1 clear watchdog
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ?
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
DEMORA1 ; demora 500ms
movlw .239 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop1 movlw .232 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL3 goto PDelL2 ; 2 ciclos delay
PDelL4 goto PDelL3 ; 2 ciclos delay
PDelL5 clrwdt ; 1 ciclo delay
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL6 goto PDelL5 ; 2 ciclos delay
PDelL7 goto PDelL6 ; 2 ciclos delay
PDelL8 goto PDelL7 ; 2 ciclos delay
PDelL9 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.