Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: nacha4 en 23 de Abril de 2006, 02:36:40
Título: retraso de 500, 50, 20 y 10 micro
Publicado por: nacha4 en 23 de Abril de 2006, 02:36:40
Hola necesito hacer un retraso de 500, 50, 20 y 10 micro lo que yo hice me parese medio a lo bruto quisiera saber si esto anda o si hay alguna forma mas sensilla de hacerlo
Título: Re: retraso de 500, 50, 20 y 10 micro
Publicado por: antoniof en 23 de Abril de 2006, 06:01:33
Buenas.
Tus rutinas estan bien, pero ocupan mucha memoria de programa, en comparación con estas:
Código: ASM
;RETARDO: Retardo de 10us = (3*2+4)*1us = 10us
retardo_10micros
movlw d'2'
movwf contador1
b10u decfsz contador1,f
goto b10u
return
Te explico: El bucle 'b10u' tarda en ejecutarse 3 instrucciones, es decir, 1 para el 'decfsz' y 2 para el 'goto'. Este bucle se repite tantas veces como valor tenga el registro 'contador1'. En este caso, contdor1 vale 2, pues tenemos 2*3 instrucciones. El 4 final se suma por las 2 instrucciones que se ejecutan al cargar el valor del contador y las otras 2 del return. EL resto es igual:
Código: ASM
;RETARDO: Retardo de 20us = (3*5+4+1)*1us = 20us
retardo_20micros
movlw d'5'
movwf contador1
nop
b20u decfsz contador1,f
goto b20u
return
Aqui se le pone un nop para que exactamente sean 20 microsegundos.
Código: ASM
;RETARDO: Retardo de 50us = (3*15+4+1)*1us = 50us
retardo_50micros
movlw d'15'
movwf contador1
nop
b50u decfsz contador1,f
goto b50u
return
Código: ASM
;RETARDO: Retardo de 500us = (3*165+4+1)*1us = 500us
retardo_500micros
movlw d'165'
movwf contador1
nop
b500u decfsz contador1,f
goto b500u
return
Espero que te sirva. Todo esto es suponiendo un cristal de 4MHz. Para otro cristal ya no se multiplica por 1us si no por el que corresponda, y habría que modificar los valores que se cargan en el contador.
Título: Re: retraso de 500, 50, 20 y 10 micro
Publicado por: migsantiago en 23 de Abril de 2006, 13:04:08
Hola, si deseas que la PC calcule los retardos por ti y te genere el código de la subrutina para que tú nadamás copies y pegues, revisa el adjunto :wink:
Título: Re: retraso de 500, 50, 20 y 10 micro
Publicado por: Yosupicprog en 24 de Abril de 2006, 11:32:21