Die Angabe welcher Kontroller und welcher Kompiler verwendet wird, erleichtert die Hilfestellung.
Diese Schreibweise im main führt möglicherweise auch zu einem Fehler: DDRB=0xb11111111; // PortB als Ausgang definieren
Die Angabe welcher Kontroller und welcher Kompiler verwendet wird, erleichtert die Hilfestellung.
Diese Schreibweise im main führt möglicherweise auch zu einem Fehler: DDRB=0xb11111111; // PortB als Ausgang definieren
möglicherweise verwirrt ihn das:
volatile uint16_t zx,zy,D;
void pause(D)
{
das ist "D" statisch definiert, aber auch als argument f. "pause"
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Das "D" ist als globale Variable definiert, wird auch nicht verwendet und gehört entfernt.
Da im Programm ein Wert an die Funktion übergeben wird, muss diese Variable in Funktionsaufruf definiert sein.
Das " void pause(D) " ergibt ein Warning, es soll so aussehen "void pause(unsigned int D)"
Statt 0b... kann man auch die Dezimalschreibweise oder Hexadezimalschreibweise nehmen.
Ich habe es am Anfang so gemacht, dass ich wenn ich einen ganzen Port o.Ä. setze zuerst die Binärschreibweise genommen habe (so wie du). Dann habe ich es in die Hex Schreibweise gewandelt und diese geschrieben. Die Umwandlung habe ich auf einem Zettel, den ich daneben gehabt habe gemacht.
Wenn du deine Binärschreibweise nimmst. Die einzelnen Schritte:
Ausgangskonfiguration hinschreiben (eventuell noch darüberschreiben, welcher Port gemeint ist (z.B. PB0-PB7)
Aufteilen in 2 Nibbles (4bit)
Zusammenrechnen
Als Hex Format hinschreiben
Du kannst aber auch so schreiben. So kannst du leichter einzelne Pins zuweisen ohne herumrechnen.Code:0b11111111 0b 1111 1111 ergibt 8+4+2+1 8+4+2+1 15 15 0x f f Ergebnis 0xff
Einen Tipp habe ich noch (man sollte aber das händisch umrechnen können). Der Rechner von Windows kann Standartmäßig Hex- (0-15), Binär- (0,1), Oktal- (0-7) Dezimalzahlen (0-9) umrechnen. Bei älteren Versionen (z.B. 2k, XP,..) muss man Wissenschaftlich wählen. Bei z.B. Win 7 muss man Programmierer wählen. Bei Vista bin ich mir nicht sicher wie es da ist, müsste nachschauen.Code:DDRB |= (1<<PB0) | (1<<PB1)....(1<<PB7);
MfG Hannes
Hallo
Gelegentlich ist die binäre Schreibweise vorteilhafter. Um trotzdem den Überblick zu behalten verwende ich eine zusätzliche Kommentarzeile:
GrußCode:// 76543210 DDRB=0b11111111;
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen