Darrel,
I did some experimenting with TRISA to follow up on Joe's suggestion that didn't work when I tried it. However, I discovered that if I place the following TRISA statement ahead of the @ SLEEP in the MAIN loop
TRISA = %00001101 ' Set RA0, RA2 & RA3 as inputs
then it appears the MCU does go into sleep after the 1st interrupt with the same power as was shown at PowerUp....in this case, 350 microamps.
Unfortunately I don't know why. I still have the following statement in the Int_Handlr that makes all PortA inputs during the ISR.
TRISA = %11111111 ' Set all PORTA pins to inputs...RA0, RA2 & RA3 are used in the ISR
Can you explain why this change to TRISA in the MAIN loop makes it work and without it, it won't??
So that you and anyone else who ever referes to this thread can see the final solution, here is the code that appears to work. Power consumed during apparent SLEEP (350 microamps) is still higher than I would like, but possibly I am not seeing accurate values on my ampmeter???
Code:
' -----[ Device Declaration ]----------------------------------------------
' For MSASM assembler use following:
@ __config _INTRC_OSC_NOCLKOUT & _BOR_SBODEN  & _WDT_OFF & _MCLRE_OFF & _CP_OFF
' For PM assembler only use following instead
'@device pic16F690, intrc_osc_noclkout, _bor_sboden, pwrt_off, wdt_off, mclr_off,
' protect_off
' The above config  is inteded to set CONFIG = %0000110111010100 for hex 0DD4 or
' FCMEN on (1), IESO on(1), BOREN (01), CPD off (1), CP off (1), /MCLR is  
' digital input (0), /PWRTE off (1), WDTE off (0), INTOSCIO (100).   
  
' -----[ Revision History ]------------------------------------------------
' Version 1.0.6 on 6/19/09: Replaced 2nd IF-THEN block with REPEAT-UNTIL to
'                           flash leds correctly during flow and low battery
' Version 1.0.7 on 6/21/09: Eliminated @ NOP in MAIN; Reformated Port
'                           Assignments list; Changed IntCloc from 4 to 1 MHz;
'                           WDT_OFF and comparators off to save power.
' Version 1.0.8 on 6/22/09: Changes to MAIN to minimize power during Sleep:  
'                           Set BOR_SBODEN; set PCON.4 =0; ANSEL =%11110011, 
'                           TRISA = %00001000 in MAIN to reduce Sleep power.                                                                                                                                             

' -----[ Declare Variables & Aliases ]-----------------------------
'
diff    VAR Byte      ' Difference between bat_mon and Vthr
dummy   VAR Byte      ' For read of on-interrupt port & clear mismatch condition
flush   VAR PORTA.3   ' Set RA3 as input for sensing flush switch closure Int
i       VAR Byte      ' Index used in Gallon counter loop
led1    VAR PORTC.0   ' Set RC0 as LED indicator of valve open..water flowing
led2    VAR PORTC.1   ' Set RC1 as LED indicator of low battery
bat_mon VAR PortA.0   ' Set RA0 as battery low power monitor
meter   VAR PORTA.2   ' Set RA2 as input for Hall Sensor meter pulse Interrupt
open_valve    VAR PORTC.2   ' Set RC2 as valve solenoid open command
close_valve   VAR PORTC.3   ' Set RC3 as valve solenoid close command

' -----[ Declare Constants ]----------------------------------------
'
 k             CON 10   ' Calibration factor for flow meter...# pulses per gal
 Vthr          CON 3    ' Assumes Low Battery Monitor threshold = 3 volts
 
' -----[ Initialization ]-------------------------------------------  
Init: 
' Setup Timer0 as an 8-bit counter with the clock input on RA2.
' 1:1 TMR0 prescaler
' TMR0 counts on high-to-low transitions
  OPTION_REG = %00111000   ' PORTA/B pullups enabled, Interrupt on falling
                           ' edge of RA2/INT, TMR0 clock source is RA2,
                           ' increment on high-to-low transitions, prescaler to 
                           ' TMR0, TMR0 Rate 1:2
  TMR0 = 256 - k           ' preload TMR0 to overflow after k counts
  
' Initialization of inputs/outputs
  open_Valve = 0    ' Initialize RC2 (open_valve) at Low value
  close_valve = 0   ' Intialize RC3 (close_valve) at Low value
  TRISA.2 = 1       ' Set RA2 as input port for clock to TMR0
  TRISA.3 = 1       ' Set RA3 as input port for sensing Flush switch closure
  meter = 1         ' Initialize RA2 (meter) at High for METER pulse inputs
                    ' RA2 = TMR0 clock input for simulated meter pulse inputs
  flush = 1         ' Initialize RA3 (flush) at High value for flush interrupt
  
' Interrupts Settings
FLUSH_INT_FLAG VAR INTCON.0 ' Alias RA3(FLUSH) On-change-interrupt flag bit
TMR0_INT_FLAG VAR INTCON.2  ' Alias Timer0 overflow flag bit
INTCON = %10101000          ' Enable interrupts: global, TMR0 overflow, & RABIE
IOCA = %00001000            ' Enable RA3 as on-change-INT

' Set INT Handler
ON INTERRUPT GOTO Int_handler   

'-----[ Main Code Starts Here ]------------------------------------------------
MAIN:
  ' Perform following steps to save power during Sleep mode
    OPTION_REG.7 = 1    ' Disable PortA/PortB pull-ups 
    OSCCON = %0100011   ' Switch to 1 MHz internal oscillator
    VRCON = %00100000   ' Set Voltage Reference for minimum power consumption
                        ' Disable CVref
    ANSEL= %11110011    ' Set PortA to Analog I/O to save power during Sleep but
                        ' leave Bits 2 & 3 as digital for RA2 pulse count
                        ' TMR0 overflow interrupt & RA3 On-Change intterupt.
    ANSELH= %11111111   ' Analog module enabled to save power during Sleep
    CM1CON0.7 = 0       ' Turn off comparators during Sleep
    CM2CON0.7 = 0
    PCON.4 = 0          ' Turn off BOR during Sleep
    WDTCON = %00010110  ' Turn WDT off to SLEEP indefinitely
    TRISA = %00001101   ' Set RA0, RA2 & RA3 as inputs
    TRISB = %11111111   ' Set all PORTB pins to inputs during Sleep
    TRISC = %11111111   ' Set all PORTC pins to input during Sleep
    PortA = %11111111   ' Write Port A all High to clear mismatch and save
                        ' power during SLEEP  
    PortB = %11111111   ' Set all Port B and C pins High to save power
    PortC = %11111111   ' in Sleep mode
    @ sleep                  
    ' Microcontroller is in Sleep State waiting for external FLUSH Interrupt
        ' Valve should be closed at this point and no water flowing
   GOTO Main    ' Loop to Main to wait for next Flush interrupt on RA3 change
 
'------{ Begin Interrupt Handler }---------------------------------------------
  DISABLE       ' Disable interrupts during interrupt handler
Int_handler:                     
    OPTION_REG.7 = 0    ' Enable PortA/PortB Pullups                   
    WDTCON = %0001000   ' Turn WDT on for ops
    'Initialize registers for interrupt ops
  ' A/D & Comparators disabled
    ANSEL=0             ' Set PortA to digital I/O for use with RA2 and RA3
    ANSELH=0            ' Analog module disabled
    CM1CON0=0           ' Disable comparators
    CM2CON0=0 
  ' Port Settings
    TRISA = %11111111   ' Set all PORTA pins to inputs...RA0, RA2 & RA3 are used
    TRISB = %00000000   ' Set all PORTB pins to outputs
    TRISC = %11110000   ' Set lower 4 pins of PartB as outputs for LEDs
    PORTA = %00000000   ' PortA pins all set to Low
    PORTC = %00000000   ' LEDs off, PULSOUT RC3 provides a high-going pulse 
   
  High bat_mon      ' For testing..simulate battery monitor input is Low or High
  DEFINE WRITE_INT 1
  'Write 13, bat_mon   ' Remove comments on Write statements for test only
  'Write 15, Vthr
  diff = Vthr - bat_mon
  'Write 17, diff
  IF FLUSH_INT_FLAG = 1 Then  ' Interrupt was from RA3 on change
    REPEAT
        ' Wait until the external Flush interrupt is at high level...limits
        ' interrupt to switch closure only and not also for switch opening 
    Until flush = 1 
    PULSOUT open_valve,2000*2   ' Generate 20 msec pulse to RC3 to open valve
    'HIGH led1              ' Light indicator that valve is open & water flowing  
    Write  7, flush        ' Write FLUSH value..remove comment for test only  
    ' Put code here to start a timer to run for 50 secs as a fail safe 
    ' to prevent overflow of toilet tank in case of sensor failure.
        'PULSOUT close_valve,2000 ' Generate 20 msec
                                  ' pulse to RC4 to close valve      
  Endif
  ' Valve is open and water is flowing
  REPEAT
        ' Wait for flow to reach 1.6 gallons
        ' Flash flow light while water flowinguntil pulse counter overflows
        High led1
        Pause 125/10
        Low led1
        Pause 500/10
        If diff > 2 Then   ' Battery is low..flash the low battery monitor light
            HIGH led2      ' while water is flowing
            PAUSE 125/10        
            Low led2
            Pause 500/10
        ENDIF                                            
        'Write 5, bat_mon  ' Remove comment for test only 
  Until TMR0_INT_FLAG = 1  ' Until flow meter pulse counter overflows
  PULSOUT close_valve,2000*2 ' Generate 20 msec pulse to RC4 to close valve  
  WRITE 11, TMR0_INT_FLAG ' Write TMR0 value..remove comment for test only
  dummy = flush            ' Clear mismatch condition                   
  FLUSH_INT_FLAG = 0       ' Clear interrupt flag & enable RA3 on interrupt
  TMR0_INT_FLAG = 0        ' Clear overflow flag
  TMR0 = 256 - k           ' Reload TMR0 to overflow after k counts
  RESUME Main              ' Resume Main Program                 
  ENABLE   
  '-------{ End of Interrupt Handler }-----------------------------------------
      
    ' If the user program ends by getting to the last statement of the program
    ' at an END instruction, the MCU will SLEEP and await a wakeup.
END