char values[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7b,0x07,0x7f,0x6f};
volatile char *TRISD,*TRISA,*PORTTD,*PORTTA;
void init_ssd()
{
TRISD = 0x30;
*TRISD = 0xFF;
TRISA = 0x107;
*TRISA = 0xFF;
PORTTD = 0x31;
*PORTTD = 0x00;
PORTTA = 0x108;
*PORTTA = 0x00;
}
void display_each(unsigned char data,char index)
{
*PORTTD = data;
*PORTTA = (*PORTTA & 0xF0) | (0x01 << index);
}
void display_all(unsigned char small_arr[],char *index,long *delay_2)
{
display_each(small_arr[*index],*index);
if(++(*delay_2) == 50000)
{
(*index)++;
*delay_2 = 0;
if(*index == 4)
*index = 0;
}
}
void setup() {
init_ssd();
volatile char index = 0,ind_1 = 0,ind_2 = 1,ind_3 = 2,ind_4 = 3;
volatile long delay_2 = 0,delay_1 = 0;
unsigned char large_array[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7b,0x07,0x7f,0x6f,0x00,0x00};
unsigned char small_array[4];
small_array[0] = large_array[ind_1];
small_array[1] = large_array[ind_2];
small_array[2] = large_array[ind_3];
small_array[3] = large_array[ind_4];
while(1)
{
for(int i = 0;i < 4;i++)
{
*PORTTD = small_array[i];
*PORTTA = (*PORTTA & 0xF0) | (0x01 << i);
for(volatile long k = 500000;k--;);
}
// display_all(small_array,&index,&delay_2);
// if(index == 4)
// {
// if(++delay_1 == 500000)
// {
// // Re-Initialization
// if(ind_1 == 12)
// ind_1 = -1;
// else if(ind_2 == 12)
// ind_2 = -1;
// else if(ind_3 == 12)
// ind_3 = -1;
// else if(ind_4 == 12)
// ind_4 = -1;
// //Incrementation
// ind_1++;
// ind_2++;
// ind_3++;
// ind_4++;
// //delay_1 re-assignment
// delay_1 = 0;
// }
// //index re-assignment
// index = 0;
// }
}
}