|
发表于 2011-3-3 12:41:15
|
显示全部楼层
void SendRow_16S_1Col_4Line(uint8 row, uint8 *DispBuffer)
{
uint16 k;
uint32 StartAddr;
uint32 temp1,temp2,temp3,temp4;
uint8 b;
b = 28 - (row % 8) * 4;
StartAddr = ((uint32)DispBuffer + (row / 8) * (Screen.Len * 8) - 0x20000000) * 32;
temp1 = StartAddr + 0x2200001c - (row % 8) * 4;
temp2 = temp1 + Screen.Len * 512;
temp3 = temp1 + Screen.Len * 1024;
temp4 = temp1 + Screen.Len * 1536;
for (k = 0; k < Screen.Len ; k ++) // 多少列
{
// StartAddr = k * 64 * 8;//32*2*k
StartAddr = k * 256;
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
StartAddr += 32;//32*2*k
SCK = false;
D1 = ~*( unsigned int *)( StartAddr + temp1);
D2 = ~*( unsigned int *)( StartAddr + temp2);
D3 = ~*( unsigned int *)( StartAddr + temp3);
D4 = ~*( unsigned int *)( StartAddr + temp4);
SCK = true;
}
STB = false; //stb
STB = true;
}
毫无疑问,我用的是最笨的方法。尽量减少循环 |
|