I am seeing something strange.....It seems I can not read my ADC's or run anything in main when my interrupt is enabled. What my code is supposed to do is output a 1.5ms pulse every 16ms for "home" position on 4 servo's in the interrupt. At any time an ADC value on 5 ADC's is above a threshold I want to stop the interrupt and run the scaled up ADC values to run my servo's in real time. What am I missing?

Code:
 
ASM
    __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
    __config _CONFIG2, _PLLEN_OFF & _LVP_OFF & _LVP_OFF & _STVREN_OFF
        
ENDASM
DEFINE OSC 8  
    
 ;Define ADCIN parameters
 
  DEFINE ADC_BITS 8   ' Set number of bits in result
  DEFINE ADC_CLOCK 4   ' Set clock source, look on data sheet for chart
  DEFINE ADC_SAMPLEUS 500   ' Set sampling time in uS 
  
  DEFINE  INTHAND myint                   ' Setup interrupt handler
   
;*******************************************************************************
;*******************************************************************************
; System hardware configuration
;*******************************************************************************
;*******************************************************************************
        OSCCON = %01110000   ' bit.7 =32MHz internal
        ANSELA = %00000001   ' all digital. A/D disabled
        ANSELB = %00000000
        TRISB =  %00000000    ' set port directions 0 = output, 1 = input
        TRISA =  %00000001
        ADCON0 = %00000111  ' Set PORTA digital 1, analog 0
        ADCON1 = %01000000
         
        
;*******************************************************************************
; Program variables 
;*******************************************************************************
        ADCVAL      var     byte   bank0   
        ADCVAL2     var     byte   bank0  
        ADCVAL3     var     byte   bank0   
        ADCVAL4     var     byte   bank0   
        ADCVAL5     var     byte   bank0   
        
        
;*******************************************************************************        
; Program constants
;*******************************************************************************
        centM       con     1500        ;motor stop
        forM        con     2000        ;motor forward
        revM        con     1000        ;motor reverse
        
 

;******************************************************************************* 
; Power on initialization to known port states   
;*******************************************************************************
      
PowerOn_init: 
        PortA = 0             ' force low to avoid glitches 
        POrtB = 0
        PIR1 = 0              ' clear TMR1 int flag
        PIE1 =   %00000001    ' TMR1 int enabled
        INTCON = %11000000    ' global & peripheral ints enabled
        T1CON =  %00010001    ' TMR1 1:2 prescale, timer1 on

;*******************************************************************************
;*******************************************************************************
 goto mainloop
asm
; Save W, STATUS and PCLATH registers, if not done previously
myint   
        ; retfie auto-restores w, status, bsr, fsr and pclath
  BANKSEL T1CON 
  clrf  BSR
  bcf   T1CON,TMR1ON ; stop timer 1
  bcf   PIR1,TMR1IF  ; clear over flow flag
  movlw 0xBF         ; load timer for 16,535 * 2 prescaler interrupt on 16 bit timer
  movwf TMR1H        ; load high byte
  movlw 0xFF         
  movwf TMR1L        ; load low byte
  
  call  _home
  
  bsf   T1CON,TMR1ON ; re-enable timer 1
 
;  movlw 0x02
;  xorwf PORTB,f      ; toggle RB1
  retfie             ; Return from interrupt
        
endasm
home:
     if adcval < 4 and adcval2 < 4 and adcval3 <4 and adcval4 < 4 and adcval5 < 4 then
     PORTB = %00001111
       pauseus 1500
     PORTB = %00000000
     endif
return
    
 
mainloop:
    call readADC  
    call spin
'    call forward
'    call back
'    call left
'    call right
    pause 15
    goto mainloop

 readADC: 
      adcin 0, adcval   
      ADCIN 1, adcval2
      adcin 2, adcval3
      adcin 3, adcval4
      adcin 4, adcval5
      return
      
      
 spin:
     if adcval > 4 then 
       LATB = %00001111
            pauseus 6*(adcval) + 900
       LATB = %00000000
     endif     
     return
     
                       
 forward: 
     if adcval2 > 4 then
       LATB = %00001100
            pauseus 6*(adcval) + 900
       LATB = %00000000
       LATB = %00000011
            pauseus 6*(adcval) + 900
       LATB = %00000000
     endif
     return
    
 back: 
     if adcval3 > 4 then
       LATB = %00000011
            pauseus 6*(adcval) + 900
       LATB = %00000000
       LATB = %00001100
            pauseus 6*(adcval) + 900
       LATB = %00000000
     endif
    return
    
 left:
     if adcval4 > 4 then
       LATB = %00000101
            pauseus 6*(adcval) + 900
       LATB = %00000000
       LATB = %00001100
            pauseus 6*(adcval) + 900
       LATB = %00001010
     endif
    return
 
 right:
    if adcval5 > 4 then
       LATB = %00001010
            pauseus 6*(adcval) + 900
       LATB = %00000000
       LATB = %00000101
            pauseus 6*(adcval) + 900
       LATB = %00001010
    endif
    return