Hola he abierto un post en la seccion de c para pasar un proyecto de asm a c, pero bueno, la verdad es que es normal que a la gente no le apetezca lo mas minimo traducir rollos ke ni le interesan, asi que no me keda mas remedio que romperme la cabeza.
Abro este post aqui porke creo que es el sitio adecuado, la cosa es que hay trozos de asm que por mas que intento comprender no lo consigo, a ver si alguien me echa una manillo
con lo que por mas que intento no soy capaz de descifrar.
En esta rutina.
------------------------------------
Flash:
bsf PORTA,3
call Testlus
bcf PORTA,3
call Testlus
return
-------------------------------
primero enciende el bit 3 de puerto A. llama a testlus lo paga y vuelve a llamar a testlus. Pues bien testlus es esto
--------------------------
Testlus:
movlw H'FF'
movwf W1
movlw H'08'
movwf W2
movlw H'01'
movwf W3
call Testlusloop
--------------------------
Aki pone el valor FF a w1 08 a w2 y 01 a w3 y llama a testlusloop, que es la rutina que por mas que intento no llego a comprender como funciona realmente, en teoria es un retardo pero no se como funciona.
---------------------------
Testlusloop:
decfsz W1,F
goto Testlusloop
decfsz W2,F
goto Testlusloop
decfsz W3,F
goto Testlusloop
return
---------------------
van decreciendo todo el rato los registros w1 w2 y w3 e imagino que eso sera lo que hara perder tiempo y sera el retardo pero no se como conocer el tiempo de retardo de la primera funcion donde w1 era ff w2 08 y w3 01.
Para que os hagais una idea otras funciones de retardo que si tienen nombre dentro de la libreria toman los siguiente valores:
100ms w1 FF w2 dc w3 01
15ms w1 FF w2 01 w3 01
1ms w1 50 w2 01 w3 01
La duda de todo este rollo es poder saber cual es el tiempo de la 1 funcion de retardo llamada testlus. Si alguien me ayuda lo agradeceria muchisimo, es bastante complicado esto del asm y no hay tampoco mucha informacion.
Gracias a todo el que haya llegado hasta aqui.