WHY??? Code_is_not_working

Beta Testing discussion on mikroC PRO for PIC.
Post Reply
Author
Message
Saleem_Beg
Posts: 4
Joined: 26 Dec 2012 21:17

WHY??? Code_is_not_working

#1 Post by Saleem_Beg » 28 Dec 2012 23:04

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.

User avatar
janko.kaljevic
Posts: 3565
Joined: 16 Jun 2011 13:48

Re: WHY??? Code_is_not_working

#2 Post by janko.kaljevic » 03 Jan 2013 15:22

Hello,

Please check the first for loop in case 2:

Code: Select all

for(j=7;j>=0;j--)
since j is unsigned int, it will never exit this for loop.

Best regards.

Post Reply

Return to “mikroC PRO for PIC Beta Testing”