Below is the actual code which currently runs on 16F870 @ 4mhz:

Code:
FOR F=1 TO 8
A=F
C=F
B=9-F
FOR E=0 TO 10
IF A=1 THEN PORTC.0=0
IF B=1 THEN PORTC.1=0
if c=1 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>1 THEN PORTC.0=0
IF B>1 THEN PORTC.1=0
if c>1 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>2 THEN PORTC.0=0
IF B>2 THEN PORTC.1=0
if c>2 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>3 THEN PORTC.0=0
IF B>3 THEN PORTC.1=0
if c>3 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>4 THEN PORTC.0=0
IF B>4 THEN PORTC.1=0
if c>4 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>5 THEN PORTC.0=0
IF B>5 THEN PORTC.1=0
if c>5 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>6 THEN PORTC.0=0
IF B>6 THEN PORTC.1=0
if c>6 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

IF A>7 THEN PORTC.0=0
IF B>7 THEN PORTC.1=0
if c>7 then PORTC.2=0
PAUSE LODINI
PORTC.0=1
PORTC.1=1
PORTC.2=1

NEXT
NEXT
It smoothly dims in-out leds, as needed. Here I'm imitating external change of A,B,C by introducing variable F and altering it's value in loop. Imagine there's no that FOR/NEXT loop, and values of A,B,C are updated elsewhere, but this code runs in interrupt. Will it work?