int D1 = A0;
int D2 = A1;
int D3 = A2;
int D4 = A3;
unsigned char binary_pattern[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned int a,b,c,d;
unsigned int counter = 0;
void setup() {
// initialize digital pin LED_BUILTIN as an output.
//pinMode(LED_BUILTIN, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
//DDRC=0XFF;
//PORTC=0XF0;
DDRD=0XFF;
}
// the loop function runs over and over again forever
void loop()
{
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
digitalWrite(D3, HIGH);
digitalWrite(D4, HIGH);
//PORTC=0XF0;
while(1)
{
a = counter / 1000;
delay(1000); // holds 1000's digit
b = ((counter/100)%10); // holds 100's digit
c = ((counter/10)%10); // holds 10th digit
d = (counter%10); // holds unit digit value
PORTD=binary_pattern[a];
digitalWrite(D1, LOW); // send 1000's place data to fourth digit
//D1=0; // turn on forth display unit
delay(10);
digitalWrite(D1, HIGH);//D1=1; // turn off forth display unit
PORTD=binary_pattern[b]; // send 100's place data to 3rd digit
digitalWrite(D2, LOW);//D2=0; // turn on 3rd display unit
delay(10);
digitalWrite(D2, HIGH);//D2=1; // turn off 3rd display unit
PORTD=binary_pattern[c]; // send 10th place data to 2nd digit
digitalWrite(D3, LOW);//D3 = 0; // turn on 2nd display unit
delay(10);
digitalWrite(D3, HIGH);//D3 = 1; // turn off 2nd display unit
PORTD=binary_pattern[d]; // send unit place data to 1st digit
digitalWrite(D4,LOW);D4 = 0; // turn on 1st display unit
delay(10);
digitalWrite(D4, HIGH);//D4 = 1; // turn off 1st display unit
if(counter>=1000) //wait till flag reaches 100
{
counter=0; //only if flag is hundred "i" will be incremented
}
counter++; //increment flag for each flas
}
return ;
}