# Problemas con retardo (Assembler).



## Rayz0n (May 13, 2010)

*Importante: Publico esto por acá porque creo que mi problema se debe al simulador*

Hola a todos, tengo el siguiente problema al simular el PIC 18F4550 en Proteus 7.6 y ruego que me ayuden.

Sucede que he utilizado la siguiente subrutina de retardo y antirrebote respectivamente:
*
Para 1 Seg
*

Delay_1S
			clrf		        reg1
			clrf		        reg2
			clrf		        reg3
			movlw		.100
			movwf		reg3
TRES		
			movlw		.97
			movwf		reg2	
DOS		
			movlw		.33
			movwf		reg1
UNO		
			decfsz		reg1
			goto		        UNO

_			call		nobounce	 ;Acá empieza el chequeo
			btfss		PORTB,0      ;de pulsadores.
			goto		NEXT
			goto		PUL1
			btfss		PORTB,1
			goto		NEXT
			goto		PUL2
			btfss		PORTB,2
			goto		NEXT
			goto		PUL3	_ 

NEXT		
			decfsz		reg2
			goto		        DOS
			decfsz		reg3
			goto		        TRES
			Return


*
Para 20 mseg:*

nobounce
			clrf	           	reg1
			clrf		        reg2
			clrf	        	reg3			
			movlw		.2
			movwf		reg3
Three		 
			movlw		.97
			movwf		reg2	
Two		
			movlw		.33
			movwf		reg1
One		
			decfsz	 	reg1
			goto		        One
			decfsz		reg2
			goto	 	        Two
			decfsz		reg3
			goto		        Three
			Return


Y bueno, me parece que el problema no está en el código =/, pero proteus jamás se sale del bucle, decrementa y decrementa y aparece un mensaje de error diciendo que debido al overflow el micro está siendo forzado a resetearse. Espero sus prontas respuestas! 

Si es necesario, publicaría el programa por completo y capturas de pantalla. Gracias de antemano.


----------



## aguevara (May 14, 2010)

Y que hay de la configuracion del WDT ) Watch Dog Timer) ??? como lo tienes ??? activo, inactivo ???


----------



## frankKM (May 14, 2010)

0.2 es 20 milisegundos? o 200


----------



## aguevara (May 14, 2010)

0.2 seg son 200mS, mmmh ok desactivalo y prueba tu programa.


----------



## Rayz0n (May 14, 2010)

El watchdog está desactivado, el reloj es de 4 MHz y bueh =/ solucioné el problema de overflow, se debía a que estaba invocando muchas veces el retardo y como chequeaba los pulsadores y se salía, la pila se llenaba.

Sin embargo, sigue el problema del bucle infinito con los retardos y me tiene bastante preocupado. Creo que he cometido un error publicando en este subforo, debió haber sido en la zona de microprocesadores, mis disculpas!


----------



## Rayz0n (May 14, 2010)

Bueno volví a hacer todo el programa y me ha funcionado! gracias a por la ayuda =).


----------

