There must be a more elegant way to do this
DELAY_1K
MOVLW D'250'
MOVWF TIMER
LOOP_1K
NOP
DECFSZ TIMER, 1
GOTO LOOP_1K
RETURN
DELAY_250K
MOVLW D'250'
MOVWF TIMER1
LOOP_250K
NOP
CALL DELAY_1K
DECFSZ TIMER1, 1
GOTO LOOP_250K
RETURN
DELAY_3M
MOVLW D'12'
MOVWF TIMER2
LOOP_3M
NOP
CALL DELAY_250K
DECFSZ TIMER, 1
GOTO LOOP_3M
RETURN