const char digitPatterns[10] = {
0b00111111,
0b00000110,
0b01011011,
0b01001111,
0b01100110,
0b01101101,
0b01111101,
0b00000111,
0b01111111,
0b01101111
};
void setup() {
volatile char *direction_f = (char*)0x30;
volatile char *output_f = (char*)0x31;
volatile char *direction_k = (char*)0x107;
volatile char *input_k = (char*)0x106;
*direction_f = 0xff;
*direction_k = 0x00;
int count = 0;
*output_f = digitPatterns[count];
while (1) {
volatile int trace = *input_k;
if (trace & 0x01) {
int display = 1;
while (display) {
for (int j = 0; j <= 9; j++) {
if (trace & 0x02) {
*output_f = 0x00;
display = 0;
break;
}
*output_f = digitPatterns[j];
delayLoop();
}
}
} else {
*output_f = digitPatterns[0];
}
}
}
void delayLoop() {
for (volatile long long j = 0; j < 100000; j++);
}