I'm trying to increase LCD refresh rate by doing SPI commands without using SHIFTOUT. There seems to be quite big improvement between code #1 and code #2.

Code #1: Lcd_CLK high time is 3.6us
Code #2: Lcd_CLK high time is 0.8us

This speed increasement is big and you can really notice it visually

Code #1
Code:
    SHiftOUT Lcd_SDA , Lcd_CLK , MSBFIRST, [FC(0),FC(1),FC(2),FC(3),FC(4),FC(5)]
Code #2
Code:
    Lcd_SDA = FC.0(7) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(6) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(5) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(4) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(3) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(2) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(1) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(0) : Lcd_CLK = 1 : Lcd_CLK = 0

    Lcd_SDA = FC.0(15) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(14) : Lcd_CLK = 1 : Lcd_CLK = 0
    ....
    ....
    ....

    Lcd_SDA = FC.0(47) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(46) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(45) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(44) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(43) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(42) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(41) : Lcd_CLK = 1 : Lcd_CLK = 0
    Lcd_SDA = FC.0(40) : Lcd_CLK = 1 : Lcd_CLK = 0
Because Code #2 is quite long (48 lines) and consumes memory, I tried to make it with loops but there I faced big problems.

I tried many different ways but never managed to get it work as Code #2.

Code:
    for i = 0 to 5
        k=7+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=6+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=5+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=4+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=3+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=2+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=1+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
        k=0+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
    next i
Code:
    for i = 0 to 5
        Lcd_SDA = FC.0[7+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[6+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[5+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[4+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[3+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[2+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[1+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
        Lcd_SDA = FC.0[0+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
    next i
Code:
    for k = 0 to 5
        for i = (8+(8*k)) to (1+(8*k)) step -1
            j = i-1
            Lcd_SDA = FC.0(j) : Lcd_CLK = 1 : Lcd_CLK = 0
        next i
    next k
(Variables i, j and k are bytes)

I have read Melanies guide about Bits, Byte Words and Arrays, which tells how to you can reference to Arrays, etc...
http://www.picbasic.co.uk/forum/show...17&postcount=1
but it didn't help me too much. I have understood that variable in array is OK, am I wrong?

-Gusse-