Pessoal nao sei se estou sendo idiota de por isso aqui mas eu nao conhecia esse tipo de macro e me ajudou muito na criacao de meu projeto, como quando eu esta procurando algumas coisas no forum eu me deparei com varias questoes sobre delay eu resolvi colocar.
Essa macro foi calculada para 4mhz, nao sei dizer se e realmente precisa para qualquer valor mas funcionou legal comigo.
Espero que ajude mais alguem.
WAIT:MACRO TIME
;Delay for TIME µs.
;Variable time must be in multiples of 5µs.
MOVLW (TIME/5)-1 ;1µs
MOVWF TMP0 ;1µs
CALL WAIT5U ;2µs
ENDM
;
; SEU PROGRAMA
; TEMPO em µs multipo de 5µs (exemplo abaixo)
WAIT .500 ; delay de 500µs
WAIT5U:
;This takes 5µS to complete
NOP ;1µs
NOP ;1µs
DECFSZ TMP0,F ;1µs or 2µs
GOTO WAIT5U ;2µs
RETLW 0 ;2µs
; --------------------------------------------------------
(rotina retirada do site da dallas)