Hallo, Um ein I/0 auf HI oder LO zu setzen schreibt man z.B.: // Port D, Pin 3 auf HI setzen. PORTD |= (1<<3); // Port D, Pin 3 auf LO setzen. PORTD &= ~(1<<3); Das funktioniert so auch ganz gut. Ich würde jetzt gern folgendes machen: Gehen wir davon aus an Port D, Pin 3 ist eine LED. define LEDan PORTD |= (1<<3); define LEDaus PORTD &= ~(1<<3); und dann möchte ich in meinem Programm anstatt: PORTD |= (1<<3); und PORTD &= ~(1<<3); einfach die befehle "LEDan" und "LEDaus" verwenden können. Also dass der Compiller einfach die Befehle "LEDan" und "LEDaus" durch PORTD |= (1<<3); und PORTD &= ~(1<<3); ersetzt. Geht so was? Wie muss da der Syntax aussehen... So wie ich es soben gemacht hab funktioniert es bestimmt nicht. Danke für eure Hilfe! Gruß Johannes!
So in etwa geht es. #define LEDan PORTD |= (1<<3) #define LEDaus PORTD &= ~(1<<3) Das wäre die richtige Syntax. Also der Lattenzaun davor und das Semikolon weg. Vorausgesetzt der Pin ist als Ausgang geschaltet und das LED geht nach Masse. MW
Danke für deine Antwort! Oh cool, fast so wie ich es mir gedacht habe. Was muss ich dann schrieben um die LED an oder aus zu machen? LEDan oder LEDan; oder doch was anderes? Gruß Johannes!
Hallo Ganz einfach: Anstatt PORTD &= ~(1<<3); schreibst du von #define LEDan PORTD |= (1<<3) nur noch LEDan. Beim Header ja so heisst das glaub, wird defniert das die Variable LEDan = PORTD |= (1<<3) heisst. Schreibst du im Code nun LEDan; , wird das durch den Compiler automatisch mit PORTD |= (1<<3) ersetzt :-) PS einfach testen, du hast sicher ein ISP-Kabel. Ich mache das auch so, einfach tüfteln überlegen und halt auch viel probieren. Dann klappt es. Mit der Zeit kommt auch die Erfahrung. Gruss Alain
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.