void setup() {
volatile char * dirf=0x30;
volatile char * dirk=0x107;
*dirf=0xFF;
*dirk=0x0F;
Serial.begin(9600);
}
void loop() {
const char segments[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
char digit_on[4]={0x0E,0x0D,0X0B,0x07};
unsigned volatile char * outf=0x31;
unsigned volatile char * outk=0x108;
for(long i=0;i<10000;i++){
int digits_i[4]={0};
int k=3;
long x=i;
while(x!=0){
int rem=i%10;
digits_i[k]=rem;
x=x/10;
k--;
}
for(int l=0;l<200;l++)
for(int j=0;j<4;j++){
*outk=digit_on[j];
*outf=segments[digits_i[j]];
delay(5);
}
*outf=0x00;
}
}