Hola q tal, recien estoy aprendiendo a usar pic y tengo un problema al hacer retrasos de 1 microsegundo. Estoy usando el PIC16F877A con un OSC de 20MHz.
Si quiero hacer un delay de sólo 1 microsegundo sería así:
;---líneas de código---
donde la rutina microseg es:
microseg
;---líneas de código---
donde la rutina de ret_us es:
ret_us
Hay alguna forma de reducir ese exceso de 1 microsegundo?
Espero que me puedan ayudar
Gracias por adelantado
Si quiero hacer un delay de sólo 1 microsegundo sería así:
;---líneas de código---
call microseg
;---líneas de código---
donde la rutina microseg es:
microseg
nop
return
Pero si quiero hacerlo para más microsegundos hago estoreturn
;---líneas de código---
movlw .10
call ret_us
goto $ ; para simular en el mplab en esta linea aplico un breakpoint
;---líneas de código---call ret_us
goto $ ; para simular en el mplab en esta linea aplico un breakpoint
donde la rutina de ret_us es:
ret_us
movwf 20H
ret1
nop
nop
decfsz 20H
goto ret1
return
al hacer esto obtengo lo ingresado más un microsegundo, es decir si almaceno 10 (en decimal) en 20H el tiempo q transcurre es 11 microsegundos. Lo mismo sucede para números hasta 255.nop
decfsz 20H
goto ret1
return
Hay alguna forma de reducir ese exceso de 1 microsegundo?
Espero que me puedan ayudar
Gracias por adelantado