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.


  • Mod

    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


  • Mod

    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
    {
       ....
    }
    

  • Mod

    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 😉


  • Mod

    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...


Anmelden zum Antworten