Thanks Louie and Al.

Louie: Yes, I do need to use parenthesis. That was an oversight. I hope you are correct about the division remainders. That is one of my concerns.

Al: It's not critical, either way, to my application but what you suggest makes good sense. I will probably test it each way.

I've tentatively completed the code for my project if either of you, or anyone else, would care to critique it for me. I could really use your more experienced opinions. I hope to breadboard it tomorrow.

Thanks again,
Mitch

Code:
'****************************************************************
'*  Name    : Train_Autoreverser.pbp                            *
'*  Author  :                                                   *
'*  Notice  : Copyright (c) 2010                                *
'*          : All Rights Reserved                               *
'*  Date    : 10/27/2010                                        *
'*  Version : 1.0                                               *
'*  Notes   : Model train autoreversing circuit using           *
'*          : a PIC12F675 and reed switch sensors.              *
'****************************************************************

'   ---------Configuration--------

' PICBasic Pro v2.6a default configuration for PIC12F675
'   __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_ON & _CP_OFF


'   ---------Constants/Defines-------

DEFINE OSCCAL_1K 1            ' Calibrate internal oscillator

DEFINE ADC_BITS 8             ' Set number of bits in result
DEFINE ADC_CLOCK 3            ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50        ' Set sampling time in uS

SW1 CON 0                     ' Reed switch 1 to GPIO.0
SW2 CON 1                     ' Reed switch 2 to GPIO.1
RY1 CON 4                     ' Relay 1 (Power) to GPIO.4
RY2 CON 5                     ' Relay 2 (Voltage reversing) to GPIO.5


'   ---------Variables---------

adval VAR BYTE                ' Store result of each A/D conversion.
delay VAR BYTE                ' Store result of math conversion to seconds.


'   ---------Initialization--------

ANSEL = %00000100             ' Set AN2 analog, all others digital.
CMCON = 7                     ' Turn off analog comparators.


'   ---------Main Code---------

PAUSE 2000                    ' Let everything stabalize for 2 seconds.
LOW RY2                       ' Make sure RY2 is off for forward movement.
                            
mainloop:
HIGH RY1                      ' Turn on Power relay to start forward movement.

  IF SW1 = 0 THEN             ' Keep moving in the forward direction until
    LOW RY1                   ' SW1 reed switch is closed. Then turn off 
  ELSE                        ' RY1 power relay to stop movement.
    HIGH RY1
  ENDIF
    
GOTO delayloop                ' Keep stopped for x number of seconds.(1-63)
    
HIGH RY2                      ' Turn on reversing relay for reverse movement.
HIGH RY1                      ' Turn on power relay to start reverse movement.
    
  IF SW2 = 0 THEN             ' Keep moving in the reverse direction until
    LOW RY1                   ' SW2 reed switch is closed. Then turn off
  ELSE                        ' RY1 power relay to stop movement.
    HIGH RY1
  ENDIF

LOW RY2                       ' Get RY2 ready for next forward movement.
    
GOTO delayloop                ' Keep stopped for x number of seconds.(1-63)
  
GOTO mainloop                 ' Keep repeating until user terminated.
    
END
  
    
delayloop:
ADCIN 2, adval                ' Read A/D channel 2 into adval variable.
  IF adval <4 THEN            ' Make 1 second the shortest time delay.
    adval = 4                 
    delay = (adval /4) * 1000 ' Divide adval value (1-255) by 4 and multiply
  ENDIF                       ' by 1000 to get millisecond value for PAUSE
PAUSE delay                   ' command. Place this value in delay variable.