//ICC-AVR application builder : 19.01.2006 16:06:09 // Target : M8 // Crystal: 1.0000Mhz #include #include unsigned char lowByte=0; //definiere lowByte als unsigned integer 8bit unsigned char highByte=0; //definiere highByte als unsigned integer 8bit unsigned int ergebnis=0,x=0,value=0,einer=0,value2=0; //################################################################################## void adc_init(void) { ADMUX = 0x00; ADCSR = 0xE7; //ADC läuft+Prescaler 128 } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void messung (void) { lowByte = ADCL; //immer zuerst das LowByte auslesen highByte = ADCH; //dann das mittlerweile gesperrte HighByte auslesen ergebnis = highByte * 256 + lowByte; //Zusammenführung von HighByte und LowByte zu einem //ergebnis=200; value=((50*ergebnis)/1023); value2=((int)value); einer=value2%10; switch (einer) { case 0 : PORTD=0x00; break; case 1 : PORTD=0x01; break; case 2 : PORTD=0x10; break; case 3 : PORTD=0x11; break; case 4 : PORTD=0x08; break; case 5 : PORTD=0x09; break; case 6 : PORTD=0x18; break; case 7 : PORTD=0x19; break; case 8 : PORTD=0x02; break; case 9 : PORTD=0x03; break; default:; } } //############################################################################ void main() { PORTC = 0x00; DDRC = 0x2E; PORTD = 0x00; DDRD = 0xFF; adc_init(); SEI(); for(;;) //Loop forever { messung(); } }