Hallo ich habe mir vor ein paar Tagen ein Arduino Lernpaket gekauft um nun meine ersten Schritte in der C-Programmierung zu machen. Nun suche ich vergeblich nach einen Befehl, um einen ganzen Port auf einmal anzusprechen. In Assembler ist die ja möglich mit z.B. move P1, 01010101b;. Könnt Ihr mir verraten, wie bzw ob dies in C zu realisieren ist? Vielen Dank schon einmal, Michi
Michi schrieb: > In Assembler ist die ja möglich mit > z.B. move P1, 01010101b;. Nein, auch in Assembler brauchst du 2 Befehle: ldi r16, 0b01010101 out PORTA, r16 in C wäre das:
1 | PORTA = 0x55; |
Egal ob C, Assembler oder Bascom, es werden immer zwei Befehle draus. Der Mikrocontroller versteht nur Maschinencode (quasi Assembler, nur halt als Befehlsnummern codiert), und da werden es immer mindestens zwei Befehle werden. Außer, du hast das auszugebende Bitmuster irgendwann mal vorher in ein Register geladen, so dass du es jederzeit ausgeben kannst. Dann wäre es tatsächlich nur noch ein Assemblerbefehl, das heißt, die Ausgabe braucht nur noch einen einzigen CPU-Takt.
Hallo Michi, Port B PB0 bis PB7 als Ein- bzw. Ausgänge festlegen: DDRB = 0b00001111; (PB0-PB3 ist Ausgang, PB4-PB7 ist Eingang) PB1 auf HIGH setzen: PORTB = 0b00000010; DDRB ist das Datenrichtungsregister für Port B und PORTB ist eben Port B. Servus Peter
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.