ayuda con mplab, subrutinas y bucles de tiempo

mis dudas es al usar decfsz para hacer que una accion dure cierto tiempo, necesito hacer que las acciones duren 2, 3 y 5 segundos lo que hice en mi programa es esto,creando una subrutina de modo que usando decfsz que se encuentra al ultimo lo tenga que hacer 32x250x250 para 2 seg, hice lo mismo para los otros segundos, lo que quiero saber es si esto es valido o si hay una mejor manera de hacerlo


movlw b'00001010' ;avanza hacia la derecha 2seg
movwf PORTB
call tiempo 2seg


tiempo 2seg
movlw b'11111010' ; inicio del tiempo de 2 seg 250x250x32 microsegundos
movwf CONTADOR1
t1 decfsz CONTADOR1,1
goto a1
goto termina tiempo1
a1 movlw b'11111010'
movwf CONTADOR2
t2 decfsz CONTADOR2,1
goto a2
goto t1
a2 movlw b'00100000'
movwf CONTADOR3
t3 decfsz CONTADOR3,1
goto t3
goto t2
termina tiempo1 ; fin del tiempo de 2 seg
return
 
Atrás
Arriba