void setup() {
volatile char *ddra;
volatile char *ddrb;
ddra = (char*)0x21; // Data Direction Register for PORTA
ddrb = (char*)0x24; // Data Direction Register for PORTB
*ddra = 0xFF; // PORTA as output (integer part)
*ddrb = 0xFF; // PORTB as output (decimal part)
}
void loop() {
volatile char *outa = (char*)0x22; // Output register for PORTA
volatile char *outb = (char*)0x25; // Output register for PORTB
volatile long i;
unsigned char seg_code[10] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
unsigned char seg_code1[10] = {
0xBF, // 0.
0x86, // 1.
0xDB, // 2.
0xCF, // 3.
0xE6, // 4.
0xED, // 5.
0xFD, // 6.
0x87, // 7.
0xFF, // 8.
0xEF // 9.
};
// Display from 0.0 to 9.9
for (int tens = 0; tens <= 9; tens++) {
*outb = seg_code1[tens]; // Integer part on PORTA
for (int ones = 0; ones <= 9; ones++) {
*outa = seg_code[ones]; // Decimal part on PORTB
// Simulated 0.5 second delay
for (i = 0; i < 500000; i++);
}
}
}