nabend euch allen,
heute war mal wieder bastelstunde, weil ich die letzten tage nicht so viel zeit hatte.
mit dem angepassten code funktionierte das ganze gut, allerdings nur einmal...
also das ganze dann irgendwie in eine schleife packen...
hier das ergebnis:
Kompiler sagt:Code:#define F_CPU 16000000UL #include <avr/io.h> #include <stdint.h> uint8_t y; int main(){ // port B und D werden als ausgang definiert DDRB = 0x1f; DDRD = 0xff; uint16_t AD(); if (y>=0){ uint8_t LED(); } else main(); } uint16_t AD(void) { //variablen uint16_t x; ADMUX |= (1<<REFS0); //AVCC als Referenzspannung wählen //Prescaler auf 128 einstellen und ADC aktivieren ADCSRA = (1<<ADPS0) | (1<<ADPS2) | (1<<ADEN); ADCSRA |= (1<<ADSC); while(ADCSRA & (1<<ADSC)){ ;//Konvertierung abwarten } x=ADC; // eingangswert wird der variable x übergeben y=x/4; // x wird durch 4 geteilt (von 10 auf 8 bit) } uint8_t LED(void){ int hunderter; int zehner; int einer; // ----- 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; } main(); //ende und neustart }
aber ich bekomm trotzdem nur 3 nullen angezeigt...Code:Build succeeded with 0 Warnings...
greetz horsty[/code]







Zitieren

Lesezeichen