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; } } } }
Hi
>ob alle EIngänge am PORTB eine 1 haben
Du solltest aber beachten, das PB6 und PB7 nicht mit der Stiftleiste
'PortB sondern mit XT1 und XT2 der Stiftleiste PortE verbunden sind.
MfG Spess
spess53 schrieb: > Hi > >>ob alle EIngänge am PORTB eine 1 haben > > Du solltest aber beachten, das PB6 und PB7 nicht mit der Stiftleiste > 'PortB sondern mit XT1 und XT2 der Stiftleiste PortE verbunden sind. > > MfG Spess PortB ist bei mir garnicht angeschlossen, musste also eine 0 am PIn haben oder verstehe ich das falsch?
Hi > DDRB = 0b00000000; > PORTB = 0b11111111; Definiert PortB als Eingang mit Pull-Upwiderständen. Offene Pins werden also als H gelesen. MfG Spess
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.