DEFINE OSC 4
CMCON=7                        
TRISA=%11111111                
TRISB=%00000000                
FLAG VAR BYTE

Inicio:                       
IF PORTA=%00000000 THEN        
  goto Salida1            
ENDIF
IF PORTA=%00000001 then        
  goto Salida2
ENDIF
IF PORTA=%00000010 THEN        
  goto Salida3
ENDIF
IF PORTA=%00000011 THEN        
  goto Salida4
ENDIF
IF PORTA=%00000100 THEN        
  goto Salida5
ENDIF
IF PORTA=%00000101 THEN        
  goto Salida6 
ENDIF
IF PORTA=%00000110 THEN        
  goto Salida7 
ENDIF
IF PORTA=%00000111 THEN        
  goto Salida8 
ENDIF

END

Salida1:
if flag <> 1 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
Low PORTB.5
low PORTB.6
low PORTB.7
flag = 1
Goto Inicio
Salida2:
if flag <> 2 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
HIGH PORTB.5
low PORTB.6
low PORTB.7
flag = 2
Goto Inicio
Salida3:
if flag <> 3 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
Low PORTB.5
HIGH PORTB.6
low PORTB.7
flag = 3
Goto Inicio
Salida4:
if flag <> 4 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
high PORTB.5
HIGH PORTB.6
low PORTB.7
flag = 4
Goto Inicio
Salida5:
if flag <> 5 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
low PORTB.5
low PORTB.6
high PORTB.7
flag = 5
Goto Inicio
Salida6:
if flag <> 6 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
high PORTB.5
low PORTB.6
HIGH PORTB.7
flag = 6
Goto Inicio
Salida7:
if flag <> 7 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
low PORTB.5
high PORTB.6
high PORTB.7
flag = 7
Goto Inicio
Salida8:
if flag <> 8 then
  Low PORTB.5
  low PORTB.6
  low PORTB.7
endif
high PORTB.5
high PORTB.6
high PORTB.7
Flag = 8
Goto Inicio