Challenge? ... What challenge?

Started with a previous version ...
Code:
'****************************************************************
'*  Name    : THE_BUTON_sleep.BAS                         *
'****************************************************************
@ DEVICE PIC12F675, intrc_osc_noclkout, wdt_OFF, pwrt_on, mclr_off, bod_off

DEFINE OSC  4
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50

CMCON = 7
OPTION_REG  = %10000110
TRISIO  = %00011110
ANSEL = %00011000
ADCON0 = %10001101

GIE var intcon.7 ' global interrupt enable 1=on ; 0=off
gpie var intcon.3 'port change interrupt enable 1=0n ; 0=off
gpif var intcon.0 'port change interrupt flag bit

adval var Word
vt var word
u  var byte
cnt var byte
but1 var gpio.3
but2 var gpio.2
rel1  var gpio.5
rel2  var gpio.0

Timer1    VAR WORD EXT :@Timer1 = TMR1L
TMR1ON    VAR T1CON.0
TMR1IF    VAR PIR1.0
T1Count   VAR BYTE
LongPress VAR BIT
T1CON = %00110100

u=0
cnt=0
GIE=0
GPIE=1
IOC.2=1   ' int-on-change for GPIO.2 enabled
IOC.3=1   ' int-on-change for GPIO.3 enabled

but1=0
but2=0
rel1=0
rel2=0

main:
  rel1=0
  rel2=0
@ sleep
  pause 100
  Timer1    = 3037
  T1Count   = 0
  LongPress = 0
  
  btn1:                   'actionare buton up
  
  if but1=1 and rel2=0  then
           high rel1
           TMR1ON = 1 
           pause 20
                            
           while but1=1
           call check
           wend
           IF LongPress THEN Stop_UP
           T1Count = 0        
           pause 20
                                         
           while but1 = 0 and but2 = 0
           call check
           if rel1=0 then
              GOTO Btn1PressDone
           endif
           wend
    Stop_UP:
           LOW rel1
  
           while but1=1  OR but2 = 1
           wend
           pause 100
  endif
  GPIF=0  'Clear ort change interrupt flag
  
  Btn1PressDone:
  
  
  btn2:               ' actionare buton down
  if but2=1 and rel1=0  then
           high rel2 
           TMR1ON = 1 
           pause 20
                   
           while but2=1
           call check
           wend
           IF LongPress THEN Stop_Down        
           pause 20                          
          
           while but2 = 0  and but1 = 0
           call check
           if rel2 = 0 then
             GOTO Btn2PressDone
           endif
           wend
    Stop_Down:
           low rel2  
  
           while but2=1 or but1=1
           wend
           pause 100
  endif
  GPIF=0  'Clear ort change interrupt flag
  Btn2PressDone:
   
GOTO MAIN

check:          ' verificare pentru supracurent
  adcin 3, adval
   vt=adval * 5000
   vt=div32 1023
  
  for cnt = 1 to 5
          if vt > 270 then      
              u=u+1
                      if u > 5 then
  	                gpio.0=0
                      gpio.5=0
                      endif
              pause 50
              goto check            
          else
              u=0
          endif
  next cnt
  
  IF TMR1IF then
      TMR1IF  = 0
      Timer1  = 3037
      T1Count = T1Count + 1
      if T1Count = 2 then 
        TMR1ON = 0
        T1Count = 0
        LongPress = 1
      endif
  ENDIF

return


end             ' of program
I'll have to charge you for the next one though.
<br>