Einrücken
-
Hallo zusammen,
kann mir jemand diesen Quelltext richtig einrücken und sagen, ob ich zuviel Kommentare geschrieben habe und was ich weg lassen könnte.lg
#include <t89c51ac2.h> // Header für Controller "AT89C51AC3" #include <stdio.h> // Headerdatei #define stepper P1_0 //Eingang für Rechtslauf #define stepper P1_1 //Eingang für Linkslauf void delay(); void main() // Beginn des Hauptprogrammes { P2=0x00; P1=0X00; //P2 ausgang zum Schrittmotor while(1){ //Endlosschleife if(P1_0==1){ //Polling P2= 0x0C; // 0x0C = 1100 binär -> Ausgang 3 und 4 sind an delay(); //Zeitverzögerung P2 = 0x09; // 0x09 = 1001 binär -> Ausgang 1 und 4 sind an delay(); //Zeitverzögerung P2 = 0x03; //0x03 = 0011 binär -> Ausgang 1 und 2 sind an delay(); //Zeitverzögerung P2 = 0x06; //0x06 = 0110 binär -> Ausgang 2 und 3 sind an delay(); //Zeitverzögerung while(P1_1==1){} //Polling solange P1_1 gleich eins bleibt wird die Schleife } if(P1_1==1){ // Polling P2= 0x06; //0x06 = 0110 binär -> Ausgang 2 und 3 sind an delay(); //Zeitverzögerung P2 = 0x03; //0x03 = 0011 binär -> Ausgang 1 und 2 sind an delay(); //Zeitverzögerung P2 = 0x09; // 0x09 = 1001 binär -> Ausgang 1 und 4 sind an delay(); //Zeitverzögerung P2 = 0x0C; // 0x0C = 1100 binär -> Ausgang 3 und 4 sind an delay(); //Zeitverzögerung while(P1_0==1){} //Polling } } } void delay(){ // Zeitverzögerungsschleife unsigned char i,j,k; for(i=0;i<6;i++) for(j=0;j<255;j++) for(k=0;k<255;k++); }
-
Warum bist du hier seit 1.5 Jahren angemeldet und kannst immer noch nicht einrücken? Herrje, ist doch wirklich nicht schwer. Zur Not lies dir mal die Wikipedia-Seite zum Thema Einrückung durch oder schau die andere Quellcodes an. Das nächste Mal machst du es selber, aber da es mit einem vernünftigen Editor keine Arbeit macht, bitteschön:
#include <t89c51ac2.h> // Header für Controller "AT89C51AC3" #include <stdio.h> // Headerdatei #define stepper P1_0 //Eingang für Rechtslauf #define stepper P1_1 //Eingang für Linkslauf void delay(); void main() // Beginn des Hauptprogrammes { P2=0x00; P1=0X00; //P2 ausgang zum Schrittmotor while(1){ //Endlosschleife if(P1_0==1){ //Polling P2= 0x0C; // 0x0C = 1100 binär -> Ausgang 3 und 4 sind an delay(); //Zeitverzögerung P2 = 0x09; // 0x09 = 1001 binär -> Ausgang 1 und 4 sind an delay(); //Zeitverzögerung P2 = 0x03; //0x03 = 0011 binär -> Ausgang 1 und 2 sind an delay(); //Zeitverzögerung P2 = 0x06; //0x06 = 0110 binär -> Ausgang 2 und 3 sind an delay(); //Zeitverzögerung while(P1_1==1){} //Polling solange P1_1 gleich eins bleibt wird die Schleife } if(P1_1==1){ // Polling P2= 0x06; //0x06 = 0110 binär -> Ausgang 2 und 3 sind an delay(); //Zeitverzögerung P2 = 0x03; //0x03 = 0011 binär -> Ausgang 1 und 2 sind an delay(); //Zeitverzögerung P2 = 0x09; // 0x09 = 1001 binär -> Ausgang 1 und 4 sind an delay(); //Zeitverzögerung P2 = 0x0C; // 0x0C = 1100 binär -> Ausgang 3 und 4 sind an delay(); //Zeitverzögerung while(P1_0==1){} //Polling } } } void delay(){ // Zeitverzögerungsschleife unsigned char i,j,k; for(i=0;i<6;i++) for(j=0;j<255;j++) for(k=0;k<255;k++); }
EDIT: Und Kommentare wie "Beginn des Hauptprogramms" oder "Verzögerung" sind selbstverständlich völlig überflüssig (Selbsterklärendes musst du nicht erklären...) und eventuell sogar kontraproduktiv, da sie den Bildschirm unnötig mit Zeichen füllen. Ich würde alle Kommentare bis auf die für die Pins wegschmeissen.
-
Allgemeines:
- Kommentare auf Englisch
- stdio.h ist unbenutzt.
- Deinen Kommentarinhalt hat _matze schon kritisiert. Du beschreibst triviales, aber lässt das interessante weg.
- Besorg dir einen Editor mit Autoeinrückung. Glaubst du ich hätte das für dich alles von Hand gemacht?
- Leere Schleifen markiert man durch Semikolon, nicht durch leeren Körper
- Endlosschleifen sind üblicherweise
for( ;; )
, nicht while(1) - Weniger Leerzeilen!
- Mehr Leerzeichen! Besonders zwischen Kommentarzeichen und Kommentar.
Hier eine Einrückung, GNU-Style:
#include <t89c51ac2.h> // Header für Controller "AT89C51AC3" #include <stdio.h> #define stepper P1_0 // Eingang für Rechtslauf #define stepper P1_1 // Eingang für Linkslauf void delay(); void main() { P2 = 0x00; P1 = 0X00; // P2 ausgang zum Schrittmotor // Und was ist P1? for(;;) { if(P1_0 == 1) { P2 = 0x0C; // 0x0C = 1100 binär -> Ausgang 3 und 4 sind an delay(); P2 = 0x09; // 0x09 = 1001 binär -> Ausgang 1 und 4 sind an delay(); P2 = 0x03; // 0x03 = 0011 binär -> Ausgang 1 und 2 sind an delay(); P2 = 0x06; // 0x06 = 0110 binär -> Ausgang 2 und 3 sind an delay(); while(P1_1 == 1); // Erklärung, was das soll. Nicht erklären, wie eine Schleife funktioniert! } if(P1_1==1) { P2 = 0x06; // 0x06 = 0110 binär -> Ausgang 2 und 3 sind an delay(); P2 = 0x03; // 0x03 = 0011 binär -> Ausgang 1 und 2 sind an delay(); P2 = 0x09; // 0x09 = 1001 binär -> Ausgang 1 und 4 sind an delay(); P2 = 0x0C; // 0x0C = 1100 binär -> Ausgang 3 und 4 sind an delay(); while(P1_0 == 1); } } } void delay() { // Zeitverzögerungsschleife. Hier mehr Information. Wie lange? Warum? unsigned char i,j,k; // Hier Erklärung, warum drei verschachtelte Schleifen, statt nur einer for(i = 0; i < 6; i++) for(j = 0; j < 255; j++) for(k = 0; k < 255; k++); }
-
#include <t89c51ac2.h>
eigene Headerdateien kennzeichnet man üblichweise mit "" und nicht <>
#define stepper P1_0 //Eingang für Rechtslauf #define stepper P1_1 //Eingang für Linkslauf
das dürfte sinnfrei sein
void main()
das ist nicht standardkonform
void delay(){ // Zeitverzögerungsschleife unsigned char i,j,k; for(i=0;i<6;i++) for(j=0;j<255;j++) for(k=0;k<255;k++); }
das geht sinnvoller mit Standardmitteln (clock()), wenn auch nur als busy-loop
-
Wutz schrieb:
void main()
das ist nicht standardkonform
void delay(){ // Zeitverzögerungsschleife unsigned char i,j,k; for(i=0;i<6;i++) for(j=0;j<255;j++) for(k=0;k<255;k++); }
das geht sinnvoller mit Standardmitteln (clock()), wenn auch nur als busy-loop
Das sieht mir doch sehr nach einer freestanding Implementation aus, wo dies eventuell nicht anders geht. Oder der Threadersteller hat keine Ahnung, was ich bei dieser Fragestellung nicht ausschließen mag (_matze hat da vollkommen Recht mit seiner Eingangsbemerkung). Besonders nachdem du mich auf
Wutz schrieb:
#define stepper P1_0 //Eingang für Rechtslauf #define stepper P1_1 //Eingang für Linkslauf
das dürfte sinnfrei sein
aufmerksam gemacht hast. Autsch! Ist mir beim ersten Lesen gar nicht aufgefallen.
-
Freestandig implementation mit stdio.h?
Diese Compilerdokumentation möchte ich gerne mal sehen, mind. alle Schnittstellen zur (stdio)Standardbibliothek müssten dort aufgeführt werden, da freestanding implementation erstmal keine (Standard)Bibliothek kennt, auch "void main()" müsste dann dort entsprechend dokumentiert sein.
-
Benutze einfach die Tools indent oder astyle.
-
Wutz schrieb:
#include <t89c51ac2.h>
eigene Headerdateien kennzeichnet man üblichweise mit "" und nicht <>
Die kommt schon vom System. Ist für einen µC.
SeppJ schrieb:
Allgemeines:
- Kommentare auf Englisch
Immer wieder die alte Leier.
Sinnlose Diskussion. Ich bin anderer Meinung.
-
Den Compiler interessieren Einrückungen und Kommentare nicht. Das dient nur der Lesbarbarkeit und dem Verständnis des Programmes. Man kann sich mit grosser Mühe auch totkommentieren.
for (i=0;i<10;i++) // Schleife mit der Laufvariable i, beginnend bei 0, endend bei 9 // insgesamt 10 Durchläufe { .... }
-
Wutz schrieb:
Freestandig implementation mit stdio.h?
Das wiederum schiebe ich darauf, dass der Threadersteller keine Ahnung hat, was er überhaupt tut.
DirkB schrieb:
SeppJ schrieb:
Allgemeines:
- Kommentare auf Englisch
Immer wieder die alte Leier.
Sinnlose Diskussion. Ich bin anderer Meinung.Sizin görüş için bir sebep var mı?
Gallwch hyd yn oed, mae'n rhaid, yn disgwyl rhaglennydd i siarad Saesneg ond nad ydych yn gallu disgwyl i bob rhaglennydd i siarad Almaenwr.
אויב דעמאָלט קיין פּראָגראַמיסט אַנפאַנגט אין זיין אייגן שפּראַך צו באַמערקן, וואָס איז ינקרעדאַבלי קאַנפיוזינג.
Kial vi ne devus diskuti ĝin? Ĉu vi havas argumentojn?
-
SeppJ schrieb:
Wutz schrieb:
Freestandig implementation mit stdio.h?
Das wiederum schiebe ich darauf, dass der Threadersteller keine Ahnung hat, was er überhaupt tut.
Wieso? Du bist doch mit der freestanding implementation angekommen.
Falls es z.B. der Keil C51 ist (der hat diesen einen Header), dann gibts da auch eine (abgespeckte) stdio.h. Ob das jetzt freestanding ist oder nicht halte ich für pure Erbsenzählerei. Das interessiert in dem Umfeld niemanden.
DirkB schrieb:
SeppJ schrieb:
Allgemeines:
- Kommentare auf Englisch
Immer wieder die alte Leier.
Sinnlose Diskussion. Ich bin anderer Meinung.Sizin görüş için bir sebep var mı?
Gallwch hyd yn oed, mae'n rhaid, yn disgwyl rhaglennydd i siarad Saesneg ond nad ydych yn gallu disgwyl i bob rhaglennydd i siarad Almaenwr.
Und? Wozu sollen türkische Schüler ihre Schulprojekte auf englisch kommentieren? Das bringt doch nur was bei internationalen Konzernen oder Open-Source-Projekten.
Letzteres (ist das walisisch oder gälisch?) verbieten zu wollen ist wahrscheinlich sowieso ein Affront gegen die Bemühungen, diese Sprachen am Leben zu erhalten
אויב דעמאָלט קיין פּראָגראַמיסט אַנפאַנגט אין זיין אייגן שפּראַך צו באַמערקן, וואָס איז ינקרעדאַבלי קאַנפיוזינג.
Kial vi ne devus diskuti ĝin? Ĉu vi havas argumentojn?
Antisemitismus!!1
Kenn ich nicht, Esperanto? OK, das braucht kein Mensch
-
Bashar schrieb:
Das wiederum schiebe ich darauf, dass der Threadersteller keine Ahnung hat, was er überhaupt tut.
Wieso? Du bist doch mit der freestanding implementation angekommen.
Ja. Und? Der µIC hat bestimmt kein Betriebssystem und keine Ausgabe. Das stdio.h ist einfach nur falsch.
Und? Wozu sollen türkische Schüler ihre Schulprojekte auf englisch kommentieren? Das bringt doch nur was bei internationalen Konzernen oder Open-Source-Projekten.
Aus dem gleichen Grund, warum sie ihren Code richtig einrücken oder allgemein, warum sie sauber programmieren sollten. Interessiert nämlich eigentlich auch niemanden, übt aber für "richtige" Programme.
-
SeppJ schrieb:
Bashar schrieb:
Das wiederum schiebe ich darauf, dass der Threadersteller keine Ahnung hat, was er überhaupt tut.
Wieso? Du bist doch mit der freestanding implementation angekommen.
Ja. Und? Der µIC hat bestimmt kein Betriebssystem und keine Ausgabe.
http://www.keil.com/support/man/docs/c51/c51_stdio_h.htm
Das stdio.h ist einfach nur falsch.
Weil sie nicht benutzt wird, aber auch nur deswegen. Sonst hätte sich der Compiler schon beschwert...