Gast
#3581078
Hallo Jungs Ich probiere momentan mit einem STK500 und ein ATmega88 Programmverlauf: Wenn Taste PDC0 gedrückt wird, dann soll geprüft werden, ob alle EIngänge am PORTB eine 1 haben, ist das nicht der Fall sollen Die PINs in Port B, die keine "1" haben, detektiert und die passenden LED in PORTD ausgeschaltet werden. ich denke die folgende Zeile funktioniert nicht[if (( StatusPortB != DiodeOk)) ] was amche ich da falsch. Danke im Voraus Programm: #include <avr/signal.h> #include <avr/sleep.h> #include <stdint.h> #include <avr/io.h> #include <util/delay.h> #define BIT(x) (1 << (x)) #define BITC(ADDRESS,BIT) (!(ADDRESS & (1<<BIT))) #define BITS(ADDRESS,BIT) (ADDRESS & (1<<BIT)) #define SETB(ADDRESS,BIT) (ADDRESS |= (1<<BIT)) #define CLEARB(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT)) char StatusPortB, StatusPortC, DiodeOk ; volatile unsigned int j, Diode_count ; int main(void) { // configure I/O ports as INPUT DDRB = 0b00000000; PORTB = 0b11111111; DDRC = 0b000000; PORTC = 0b111111; // configure I/O ports as OUTPUT DDRD = 0b11111111; PORTD = 0b00000000; while (1) { DiodeOk=0b11111111 StatusPortB=PINB; StatusPortC=PINC; if (BITC(PINC,0)) // Wenn Taster PINC0 gedrückt ist, dann... { if (( StatusPortB != DiodeOk)) // wenn PORTB 0...bis 7 ungleich 1 { for (j = 0; j <= 7; j++) { if BITS(PINB,j) { SETB(PORTD,j); _delay_ms(100); } } } else { PORTD = 0b00000000; } } } }