Bien vamos a ver, primero vamos a entender que hace el chip por ejemplo cuando abre la bandeja con un 16f84
movlw 100
movwf RAM_0D
ETI_132
Bien este es el principio de la subrutina en el que carga 100 (en decimal que pasandalo a hexadecimal es 64h)en la variable RAM_0D.
movlw '10111001'
movwf PORTB
movlw'11011110'
tris PORTB
movlw 10
call pausawx1msg
Aqui envia la orden de encender el motor y le dice que la bandeja va a salir durante 10 milisegundos
movlw '10011001'
movwf PORTB
movlw'11011110'
tris PORTB
Ahora lo que hace es parar el motor durante un tiempo que depende de lo que explico a continuacion.
movf RAM_0D,W
andlw b'11000000' ; cambio de velocidad en bandeja
movlw 15
btfss STATUS,Z
movlw 10
call PAUSAWX1MSG
decfsz RAM_0D,F
goto ETI_132
Bien aqui es donde la mata, pasa al acumulador el valor de la variable que inicialmente es 64h y hace una AND con '11000000' que en hexadec es C0h el resultado de esta operacion es 40h por lo que el bit Z no se pone a 1 y pasamos 10 (en decimal) a la subrutina de pausa, decrementa y compara la variable con 0 y si es distinta de 0 vuelve ETI_132, con esto lo que hace es que mientras el valor de RAM_0d sea mayor de 40h la bandeja salga a pulsos de 20 msg (10 nivel alto 10 nivel bajo) y por debajo de 40h sale a pulsos de 25msg(10 alto 15 bajo) por tanto al principio sale rapido y despues un pelin mas despacio.
bien el tiempo total de la operacion segun mis cuentas y sin tocar el programa es de 2140 msg osea 2,1 sg.
Conclusion si modificas el valor con el hace la operacion AND '1100000' poniendolo mayor no conseguiras que salga mas despacio, al contrario saldra mas rapido, si lo bajas entonces saldra al principio lento, luego rapido y luego lento.
Entonces que se puede hacer?
yo lo que haria es cambiar los valores de la pausa en elnivel bajo, por ejemplo si ponemos:
movlw 35 en vez de movlw 15
el tiempo total de la operacion seria de2880 msg (640 nivel alto 1240 nivel bajo).
Bueno eso es todo, si me he confundido en algo que me corrijan y por ultimo dar las gracias a USB es artifice de este gran codigo.Creo que no he olvidado nada
Saludos