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