Hello and thanks for any and all help or comments,

I'm having issues with the attached code. Its for a circuit that replaces an Escort Radar Detector "Smart Cord". The original just didn't have enough features for me, so I built my own and tossed in a PIC to add a few more features.

The PIC for the most part adds a "flip-flop" type on-off function by inputing the state of a tact-button and toggling a relay and green power LED on or off when pressed between 100 mS and 1 S ( anti "accidental bump" protection).

When a radar alert is detected on another pin, the PIC flashes red and blue LEDs in an alternating fashion for a visual alert (very small and NOT visible outside of my car).

Another feature uses an ADC input to measure the voltage output by the cars dashboard light dimmer circuit to dim the LEDs in relation with the dashboard lights. Also, when the car detects that it is daylight out, it automaticaly turns the dashlights off and takes the dimmer voltage to ground which makes my radar detector cord LEDs go to full brightness so they can be seen in daylight. (Thanks HUGE to Darrel Taylor and his HPWM10 routine!)

The above all works fine, and is great. However, When I try to detect the length of the power button press to see if it is held down for more than ~ 3 seconds and toggle a bit which is suppsed to suppress the LEDs (turn them off, but leave the radar detector on), It doesn't work. As in it won't turn off the LEDs, But everything else still works.

I use a while/wend on the tact-button input pin to increment the variable "onOffBtntst" while the button is pressed. If it is pressed for 100 mS to 1 S then it toggles the power on and off like above. If it is held for more than 3 seconds it should set the varible "suprsLEDs" to 1 which in turn should keep the LEDs off. It doesn't seem to want to suppress the LEDs. The power on-off part works as expected, and if you hold the button for more than 1 S it doesn't toggle the relay, which it shouldn't. Maddning!

I then added a serial debug output to PORTC.4 to try to see what "onOffBtntst" is doing, and then what "suprsLEDs" is doing and that won't work either! It just spits gibberish into hyperterm (spades) and another program "realterm" (random giberrish), and I've tried every
mode PIC side and port setting on the PC side I can think of (Both program and hardware device settings. other serial devices work fine)

I think I must be setting up a port or module wrong or have a logic error that I just can't see. I've stepped away and came back over the past two weeks and still can't nail it down, Please
help!

Code:
@ DEVICE pic16F684,INTRC_OSC_NOCLKOUT,  WDT_OFF,  PWRT_OFF,  MCLR_OFF, BOD_OFF, IESO_OFF, FCMEN_OFF

include "HPWM10.pbp" 

DEFINE OSC 8            ' Define 8 MHz oscillator 

DEFINE ADC_BITS 10      ' 10 bit A/D Conversion
DEFINE ADC_SAMPLEUS 50  ' 50 uS A/D sample time

CMCON0 = %00000111      ' Disable Comparator
VRCON = %00000000       ' Disable Comparator Voltage Reference

ANSEL = %01000000       ' Set pin 8 (AN6) to analog input, the rest to digital
ADCON0 = %10011001      ' Set up A/D converter - Right Just., VDD REF., CH 6, ON
ADCON1 = %00110000      ' Set up A/D Converter clock source to internal RC

TRISC.2 = 1             ' Set Pin 8 to input for A/D Converter input
TRISC.5 = 0             ' Set Pin 5 to output for PWM generator
TRISA.5 = 1             ' Set Pin 2 to input for Power ON/OFF Button
TRISC.3 = 0             ' Set Pin 7 to output for Power ON/OFF Relay
TRISA.4 = 1             ' Set Pin 3 to input for Power LED sense input
TRISA.3 = 1             ' Set Pin 4 to input for Alert LED sense input
TRISC.1 = 0             ' Set Pin 9 to output for LED3 - Blue Alert LED Cathode
TRISA.2 = 0             ' Set Pin 11 to output for LED2 - Red Alert LED Cathode
TRISA.0 = 0             ' Set Pin 13 to output for LED1 - Green Power on LED Cathode

' definitions

onOffBtn var PORTA.5    ' Power ON/OFF Button               - Pin 2
onOffRly var PORTC.3    ' Power ON/OFF Relay                - Pin 7
brghtns var PORTC.2     ' LED Brightness A/D input.         - Pin 8
pwrOn var PORTA.4       ' Power LED sense input             - Pin 3
alrt VAR PORTA.3        ' Alert LED sense input             - Pin 4
LED1 var PORTA.0        ' LED1 - Green Power on LED Cathode - Pin 13
LED2 var PORTA.2        ' LED2 - Red Alert LED Cathode      - Pin 11
LED3 var PORTC.1        ' LED3 - Blue Alert LED Cathode     - Pin 9
beepSup Var PORTA.1     ' Beep Suppress                     - Pin 12
beep var PORTC.0        ' Beep on power cut                 - Pin 10
serial var PORTC.4      ' Serial out for debugging          - Pin 6

btnVar var byte         ' Holding variable for Power Button
aTOd var word           ' Holding variable for A/D converter
Frequency var word      ' Holding variable Frequency for PWM
DutyCycle1 Var Word     ' Holding variable Duty Cycle For PWM
beepLoop var byte       ' Loop Variable for beep
beepKill var bit       ' Kill variable for beep loop
onOffBtnTst var word    ' Test variable for on/off button
suprsLEDs var bit      ' Variable to suppress LEDs

frequency = 1000        ' Set PWM frequency to 1000 Hz
LOW LED1               ' Set Green Power on LED  to off at start-up
LOW LED2               ' Set Red Alert LED to off at start-up
LOW LED3               ' Set Blue Alert LED to off at start-up
low onOffRly            ' Set On/Off relay to off at start-up
btnVar = 0              ' Clear On/Off Button Variable
aTOd = 0                ' Clear A/D converter Variable
DutyCycle1 = 0          ' Clear PWM Duty Cycle Variable
beepLoop = 0
beepKill = 0
onOffBtnTst = 0
suprsLEDs = 0 
high beepsup 

'-------------------------------------------------------------------------------
MainLoop:

button onoffbtn, 0, 255, 0,btnvar, 1, pwrOnOff:

PowerCheck_Alert:
IF pwron = 0 then 
    gosub pulseWidthModulator:
    if suprsLEDs = 0 then
    HIGH led1
    else
    LOW led1
    endif
    high beepsup
    HIGH Beep
    beepkill = 0
else 
        LOW led1
         if onOffRly = 0 then    
            if beepkill = 0 then 
                for beeploop = 1 to 6
                low beepSup
                LOW beep 
                Pause 50
                High beep
                Pause 100
                next beepLoop
                beepkill = 1
            endif
        endif            
endif


IF alrt = 0 then 
if suprsLEDs = 0 then
    LOW led1
    HIGH led2
    pause 70
    LOW led2
    HIGH led3
    pause 70
    LOW led3
 else
 LOW led2
 LOW led3
 endif
    else 
    LOW led2
    LOW led3
endif

goto mainloop:

'-------------------------------------------------------------------------------
pulseWidthModulator:

ADCIN 6, atod 


IF aTOd	>	93	AND	aTOd	<=	186	THEN		
								DutyCycle1 = 	10
ENDIF									
IF aTOd	>	186	AND	aTOd	<=	279	THEN		
								DutyCycle1 = 	30
ENDIF									
IF aTOd	>	279	AND	aTOd	<=	372	THEN		
								DutyCycle1 = 	50
ENDIF									
IF aTOd	>	372	AND	aTOd	<=	465	THEN		
								DutyCycle1 = 	70
ENDIF									
IF aTOd	>	465	AND	aTOd	<=	558	THEN		
								DutyCycle1 = 	90
ENDIF									
IF aTOd	>	558	AND	aTOd	<=	651	THEN		
								DutyCycle1 = 	110
ENDIF									
IF aTOd	>	651	AND	aTOd	<=	744	THEN		
								DutyCycle1 = 	130
ENDIF									
IF aTOd	>	744	AND	aTOd	<=	837	THEN		
								DutyCycle1 = 	150
ENDIF									
IF aTOd	>	837	AND	aTOd	<=	930	THEN		
								DutyCycle1 = 	170
ENDIF									
IF aTOd	>	930	AND	aTOd	<=	1023 THEN		
								DutyCycle1 = 	200
ENDIF									

IF aTOd	<	45	AND	aTOd		     THEN		
								DutyCycle1 = 	1023
ENDIF
								
@ HPWM10 1,_DutyCycle1, _Frequency

return
'-------------------------------------------------------------------------------
pwrOnOff:

WHILE onoffbtn = 0
pause 1
onOffBtntst = onOffBtntst + 1
wend
pause 10
serout2 serial,16780,[DEC onOffBtntst, 10] 
if onOffBtntst >= 3000  and onOffBtntst <= 65535 then
    if suprsLEDs = 0 then
    suprsLEDs = 1
    else
    suprsLEDs = 0
    endif
endif

if onOffBtntst >= 100 and onOffBtntst <= 1000  then
toggle onOffRly 
    if onOffRly = 0 then
    suprsLEDs = 0
    endif
endif
onOffBtntst = 0
serout2 serial,16780,[DEC suprsLEDs, 10] 
goto PowerCheck_Alert:


end