-#define F_CPU 11059200ul
+#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
// start by creating a "letter" variable which defines pin states
uint8_t letter=0;
- if(regD&(1<<PD0)){letter|=(1<<7);} // letter 1 (voltage MSB)
- if(regD&(1<<PD2)){letter|=(1<<6);} // letter 2
- if(regD&(1<<PD3)){letter|=(1<<5);} // letter 3
- if(regD&(1<<PD4)){letter|=(1<<4);} // letter 4
- if(regD&(1<<PD5)){letter|=(1<<3);} // letter 5 (current MSB)
- if(regD&(1<<PD6)){letter|=(1<<2);} // letter 6
- if(regD&(1<<PD7)){letter|=(1<<1);} // letter 7
- if(regB&(1<<PB0)){letter|=(1<<0);} // letter 8
+ if(regC&(1<<PC0)){letter|=(1<<7);} // letter 1 (voltage MSB)
+ if(regC&(1<<PC3)){letter|=(1<<6);} // letter 2
+ if(regC&(1<<PC4)){letter|=(1<<5);} // letter 3
+ if(regD&(1<<PD2)){letter|=(1<<4);} // letter 4
+ if(regB&(1<<PB3)){letter|=(1<<3);} // letter 5 (current MSB)
+ if(regD&(1<<PD4)){letter|=(1<<2);} // letter 6
+ if(regD&(1<<PD3)){letter|=(1<<1);} // letter 7
+ if(regD&(1<<PD5)){letter|=(1<<0);} // letter 8
// try to match expected pin states
if (letter==0b10000000) {return '1';}
// returned value will be in ASCII
// returns 0 if no letter is selected, or if it's confusing
int segments=0;
- if(regC&(1<<PC5)){segments|=(1<<7);} // A (MSB)
- if(regC&(1<<PC4)){segments|=(1<<6);} // B
- if(regC&(1<<PC3)){segments|=(1<<5);} // C
- if(regC&(1<<PC2)){segments|=(1<<4);} // D
- if(regC&(1<<PC1)){segments|=(1<<3);} // E
- if(regC&(1<<PC0)){segments|=(1<<2);} // F
- if(regB&(1<<PB2)){segments|=(1<<1);} // G (LSB)
- //if(regB&(1<<PB1)){}//H
+ if(regC&(1<<PC1)){segments|=(1<<7);} // A (MSB)
+ if(regC&(1<<PC5)){segments|=(1<<6);} // B
+ if(regD&(1<<PD7)){segments|=(1<<5);} // C
+ if(regB&(1<<PB1)){segments|=(1<<4);} // D
+ if(regB&(1<<PB2)){segments|=(1<<3);} // E
+ if(regC&(1<<PC2)){segments|=(1<<2);} // F
+ if(regD&(1<<PD6)){segments|=(1<<1);} // G (LSB)
+ //if(regB&(1<<PB0)){}//H
if(segments==0b00001000) {return '9';}
if(segments==0b00000000) {return '8';}