vielen dank für die tipps!
mittlerweile scheint es u funktionieren, aber die 7-segment an der der wert ausgegeben werden soll, zeigt nur eine null an. (verzweiflung macht sich breit =) )
hier habe ich mal das gesamte programm:
wo liegt der da der fehler?Code:#define F_CPU 16000000 #include <avr/io.h> int16_t main () { // port B und D werden als ausgang definiert DDRA = 0x00; DDRB = 0x1f; DDRC = 0x00; DDRD = 0xff; //variablen int y; int hunderter; int zehner; int einer; int16_t x; ADMUX |= (1<<REFS0); ADCSRA |= (1<<ADEN) | (1<<ADATE) | (1<<ADSC) | (1<<ADPS2) | (1<<ADPS0); x = ADCW; // eingangswert wird der variable x übergeben y=x/4; // x wird durch 4 geteilt (von 10 auf 8 bit) // ----- ab hier wird die 8-bit zahl auseinander genommen // die hunderter stelle hunderter=y/100; hunderter=hunderter%10; switch (hunderter) { case 1: PORTD |= (1<<PD3) | (0<<PD4) | (0<<PD5) | (0<<PD6); break; case 2: PORTD |= (0<<PD3) | (1<<PD4) | (0<<PD5) | (0<<PD6); break; // abschaltung der hunderter stelle bei kleineren zahlen durch schalten auf high default : PORTD |= (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6); break; } zehner=y/10; zehner=zehner%10; // abschaltung der zehner stelle wenn hunnderter und zehner gleich 0 ist if (hunderter==0 && zehner==0) { PORTB |= (1<<PB4); PORTD |= (1<<PD0) | (1<<PD1) | (1<<PD2); } else switch (zehner) { case 0: PORTB |= (0<<PB4); PORTD |= (0<<PD0) | (0<<PD1) | (0<<PD2); break; case 1: PORTB |= (1<<PB4); PORTD |= (0<<PD0) | (0<<PD1) | (0<<PD2); break; case 2: PORTB |= (0<<PB4); PORTD |= (1<<PD0) | (0<<PD1) | (0<<PD2); break; case 3: PORTB |= (1<<PB4); PORTD |= (1<<PD0) | (0<<PD1) | (0<<PD2); break; case 4: PORTB |= (0<<PB4); PORTD |= (1<<PD0) | (0<<PD1) | (0<<PD2); break; case 5: PORTB |= (1<<PB4); PORTD |= (0<<PD0) | (1<<PD1) | (0<<PD2); break; case 6: PORTB |= (0<<PB4); PORTD |= (1<<PD0) | (1<<PD1) | (0<<PD2); break; case 7: PORTB |= (1<<PB4); PORTD |= (1<<PD0) | (1<<PD1) | (0<<PD2); break; case 8: PORTB |= (0<<PB4); PORTD |= (0<<PD0) | (0<<PD1) | (1<<PD2); break; case 9: PORTB |= (1<<PB4); PORTD |= (0<<PD0) | (0<<PD1) | (1<<PD2); break; default: PORTB |= (1<<PB4); PORTD |= (1<<PD0) | (1<<PD1) | (1<<PD2); break; } // anzeige der einer stelle einer=y%10; switch (einer) { case 0: PORTB |= (0<<PA0) | (0<<PA1) | (0<<PA2) | (0<<PA3); break; case 1: PORTB |= (1<<PA0) | (0<<PA1) | (0<<PA2) | (0<<PA3); break; case 2: PORTB |= (0<<PA0) | (1<<PA1) | (0<<PA2) | (0<<PA3); break; case 3: PORTB |= (1<<PA0) | (1<<PA1) | (0<<PA2) | (0<<PA3); break; case 4: PORTB |= (0<<PA0) | (0<<PA1) | (1<<PA2) | (0<<PA3); break; case 5: PORTB |= (1<<PA0) | (0<<PA1) | (1<<PA2) | (0<<PA3); break; case 6: PORTB |= (0<<PA0) | (1<<PA1) | (1<<PA2) | (0<<PA3); break; case 7: PORTB |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (0<<PA3); break; case 8: PORTB |= (0<<PA0) | (0<<PA1) | (0<<PA2) | (1<<PA3); break; case 9: PORTB |= (1<<PA0) | (0<<PA1) | (0<<PA2) | (1<<PA3); break; default: PORTB |= (1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3); break; } return(0); //ende und neustart }
greetz
horsty







Zitieren
Lesezeichen