This should be a bit faster ... (untested)
Code:
INDEX VAR BYTE BANK0
SOMETHING VAR BYTE BANK0
A VAR BYTE BANK0
B VAR BYTE BANK0
C VAR BYTE BANK0
D VAR BYTE BANK0
PIN1 VAR PORTB.0
PIN2 VAR PORTB.1
PIN3 VAR PORTB.2
PIN4 VAR PORTB.3
ASM
TestStart
movlw 0 ;FOR INDEX=1 TO SOMETHING
movwf _INDEX
ForLoop
incf _INDEX,F
movf _A,W ; IF INDEX>A THEN PIN1=1
subwf _INDEX,W
btfsc STATUS,C
bsf _PIN1
movf _B,W ; IF INDEX>B THEN PIN2=1
subwf _INDEX,W
btfsc STATUS,C
bsf _PIN2
movf _C,W ; IF INDEX>C THEN PIN3=1
subwf _INDEX,W
btfsc STATUS,C
bsf _PIN3
movf _D,W ; IF INDEX>D THEN PIN4=1
subwf _INDEX,W
btfsc STATUS,C
bsf _PIN4
movf _INDEX,W ; Next INDEX
subwf _SOMETHING,W
btfss STATUS,Z
goto ForLoop
ENDASM
Bookmarks