Code: Select all
const int T_Frame_1[8][8] = {
{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
void Layer1(void)
{
RD0_bit = 0;delay_us(1);
RD1_bit = 0;delay_us(1);
RD2_bit = 0;delay_us(1);
}
void Layer2(void)
{
RD0_bit = 1;delay_us(1);
RD1_bit = 0;delay_us(1);
RD2_bit = 0;delay_us(1);
}
void Layer3(void)
{
RD0_bit = 0;delay_us(1);
RD1_bit = 1;delay_us(1);
RD2_bit = 0;delay_us(1);
}
void Layer4(void)
{
RD0_bit = 1;delay_us(1);
RD1_bit = 1;delay_us(1);
RD2_bit = 0;delay_us(1);
}
void Layer5(void)
{
RD0_bit = 0;delay_us(1);
RD1_bit = 0;delay_us(1);
RD2_bit = 1;delay_us(1);
}
void Layer6(void)
{
RD0_bit = 1;delay_us(1);
RD1_bit = 0;delay_us(1);
RD2_bit = 1;delay_us(1);
}
void Layer7(void)
{
RD0_bit = 0;delay_us(1);
RD1_bit = 1;delay_us(1);
RD2_bit = 1;delay_us(1);
}
void Layer8(void)
{
RD0_bit = 1;delay_us(1);
RD1_bit = 1;delay_us(1);
RD2_bit = 1;delay_us(1);
}
void Print_layer_by_layer(const int value[][8] ,unsigned int times, unsigned int delay,unsigned int imode)
{
unsigned int i,j,k;
switch(imode)
{
case 1:
for(i=0;i<times;i++)
{
Layer1();
for(j=0;j<8;j++)
{
SPI1_Write(value[0][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer2();
for(j=0;j<8;j++)
{
SPI1_Write(value[1][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer3();
for(j=0;j<8;j++)
{
SPI1_Write(value[2][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer4();
for(j=0;j<8;j++)
{
SPI1_Write(value[3][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer5();
for(j=0;j<8;j++)
{
SPI1_Write(value[4][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer6();
for(j=0;j<8;j++)
{
SPI1_Write(value[5][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer7();
for(j=0;j<8;j++)
{
SPI1_Write(value[6][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer8();
for(j=0;j<8;j++)
{
SPI1_Write(value[7][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
}
break;
case 2:
for(i=0;i<times;i++)
{
Layer1();
for(j=7;j>=0;j--)
{
SPI1_Write(value[0][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer2();
for(j=7;j>=0;j--)
{
SPI1_Write(value[1][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer3();
for(j=7;j>=0;j--)
{
SPI1_Write(value[2][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer4();
for(j=7;j>=0;j--)
{
SPI1_Write(value[3][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer5();
for(j=7;j>=0;j--)
{
SPI1_Write(value[4][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer6();
for(j=7;j>=0;j--)
{
SPI1_Write(value[5][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer7();
for(j=7;j>=0;j--)
{
SPI1_Write(value[6][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
Layer8();
for(j=7;j>=0;j--)
{
SPI1_Write(value[7][j]);
}
for(k=0;k<delay;k++)
{
delay_ms(1);
}
}
break;
}
}
void main()
{
int s,t;
CMCON = 0x07;
ADCON1 = 0x0F;
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
DELAY_us(100);
TRISD= 0;
while(1)
{
Print_layer_by_layer(T_Frame_1,1 ,100,1);
}
}
if i call : Print_layer_by_layer(T_Frame_1,1 ,100,1); :its working
but if : Print_layer_by_layer(T_Frame_1,1 ,100,2); :Not working >>I checked this code on Proteus ISIS simulator this code hanging down the software and also on Real machine its not working.