Hola, lo primero que encuentro, es que está mal empleado el cblock, ya que aunque sea el primero, tendria que tener la direccion donde colocar los registros.. por ejemplo 20h (depende del micro) 0ch etc
por ejemplo , este retardo es de un cuarto segundo
;-------------------------------------------------------------
; Generado con PDEL ver SP r 1.0 el 13/01/2012 Hs 14:27:31
; Descripcion: Delay 250000 ciclos
;-------------------------------------------------------------
DEMORA movlw .197 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .253 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2
return ; 2+2 Fin.
;-------------------------------------------------------------
entonces podria llamarlo con CALL 4 VECES
UN_SEGUNDO
CALL DEMORA
CALL DEMORA
CALL DEMORA
CALL DEMORA
RETURN
;----------------------------------------------------
UN_MINUTO ; ESTO PRODUCE UNA DEMORA DE UN MINUTO
MOVLW .60
MOVWF MINUTO ;(tienes que declarar el registro MINUTO)
CALL UN_SEGUNDO
DECFSZ MINUTO,F ;REALIZO 60 VECES ESTE CICLO
GOTO $-2 ;AL TERMINAR, RETORNA
RETURN
;------------------------------------------------------
UNA_HORA
MOVLW .60
MOVWF HORA ;(tienes que declarar el registro HORA)
CALL UN_SEGUNDO
DECFSZ HORA,F ;REALIZO 60 VECES ESTE CICLO
GOTO $-2 ;AL TERMINAR, RETORNA
RETURN
;-----------------------------------------------------