Probleme mit Prgramm barauch schnelsst möglich hilfe

Gast #2040489
Lesenswert?

Hallo
ich habe ein Problem mit folgendem Programm und zwar macht er mir 
folgende erros und warnnings
wäre schön wenn ihr mir helfen könntet.

../Werkzuegwechsler.c:14: warning: data definition has no type or 
storage class
../Werkzuegwechsler.c:14: warning: type defaults to 'int' in declaration 
of 'k'
../Werkzuegwechsler.c: In function 'main':
../Werkzuegwechsler.c:25: error: expected ';' before 'if'
../Werkzuegwechsler.c:222: error: 'end' undeclared (first use in this 
function)
../Werkzuegwechsler.c:222: error: (Each undeclared identifier is 
reported only once
../Werkzuegwechsler.c:222: error: for each function it appears in.)
../Werkzuegwechsler.c:222: error: expected declaration or statement at 
end of input
../Werkzuegwechsler.c: At top level:
../Werkzuegwechsler.c:222: fatal error: opening dependency file 
dep/Werkzuegwechsler.o.d: No such file or directory
compilation terminated.
make: *** [Werkzuegwechsler.o] Error 1
Build failed with 6 errors and 2 warnings...





 #include <avr/io.h>                     //Einbinden der Header Datei 
der Ein und Ausgänge
 #include <stdint.h>                     //Einbinden der Header Datei 
zur verwendung von Integer
 #include <avr/interrupt.h>                  //Einbinden der Header 
Daeti zum verwenden des Timers

  int j;k;                        //Bekannt gebnen der Variablen j, k
  void warte (int zeit) ;                  //Bekannt gabe der Funktion 
warte

   int main (void)
  {

    while(1)                       //Endlosschleife
    {
      DDRC = 0xff                    //Alle Pins des Port C werden als 
Ausgänge gesetzt


        if (PB0 == 1 & PB4 == 1)          //Springe in die Schleife wen 
Z Achse auf 1/10 SPS  = 1 und Freigabesignal = 1
        {

          j = 0;                  //Setze j auf 0

          PC0 = 1;                //Setze Z Achse Richtung auf 1

            for (j = 0; j <80; j++)        //Zähle bis 80(Pulse) dan 
Spring aus der Schleife raus
            {

              PC1 = 1;            //Setze Z Achse Puls = 1

              warte  (5000);          //Einstellen der Zeit der 
Positiven Halbwelle

              PC1 = 0;            //Setze Z Achse Puls = 0

              warte  (5000);          //Einstellen der Zeit der 
Negativen Halbwelle


              if(j = 80)            //Nach den 80 Pulsen springe in 
diese Schleife
              {

                PD0 = 1;          //Setze Z Achse auf 1/10 Ausgang SPS 
auf 1

                  if(PD0 = 1)        //Wenn Z Achse auf 1/10 Ausgang SPS 
auf 1 ist Springe hier rein
                  {

                    if(PB5 = 1)      //Wenn Signal Erhalten 1 ist 
Springe hier rein
                    {

                      PD0 = 0;    //Setze Z Achse auf 1/10 Ausgang SPS 
auf 0

                    }          //Ende Schleife if(PB5 = 1)

                   }            //Ende Schleife if(PD0 = 1)

              }                //Ende Schleife if(j = 80)

            }                  //Ende Schleife for (j = 0; j <80; j++)

        }                      //Ende Schleife if (PB0 == 1 & PB4 == 1)



        if (PB1 == 1 & PB4 == 1)          //Springe in die Schleife wen 
Z Achse ab 1/10 SPS = 1 und Freigabesignal = 1
        {

          j = 0;                  //Setze j auf 0

          PC =0 0;                //Setze Z Achse Richtung auf 0

            for (j = 0; j <80; j++)        //Zähle bis 80(Pulse) dan 
Spring aus der Schleife raus
            {

              PC1 = 1;            //Setze Z Puls = 1

              warte  (5000);          //Einstellen der Zeit der 
Positiven Halbwelle

              PC1 = 0;            //Setze Z Puls = 0

              warte  (5000);          //Einstellen der Zeit der 
Negativen Halbwelle


              if(j = 80)            //Nach den 80 Pulsen spirneg in 
diese Schleife
              {

                PD1 = 1;          //Setze Z Achse ab 1/10 Ausgang SPS 
auf 1

                  if(PD1 = 1)        //Wenn Z Achse ab 1/10 Ausgang SPS 
auf 1 ist Springe hier rein
                  {

                    if(PB5 = 1)      //Wenn Signal Erhalten 1 ist 
Springe hier rein
                    {

                      PD1 = 0;    //Setze Z Achse ab 1/10 Ausgang SPS 
auf 0

                    }          //Ende Schleife if(PB5 = 1)

                   }            //Ende Schleife if(PD1 = 1)

              }                //Ende Schleife if(j = 80)

            }                  //Ende Schleife for (j = 0; j <80; j++)

        }                      //Ende Schleife if (PB1 == 1 & PB4 == 1)



        if (PB2 == 1 & PB4 == 1)          //Springe in die Schleife wen 
Schrittmoto Werkzeugwechsler rechts = 1 und Freigabesignal =1
        {

          j = 0;                  //Setze j auf 0

          PC2 = 1;                //Setze Schrittmotor Werkzeugwechsler 
Richtung auf 1

            for (j = 0; j <10; j++)        //Zähle bis 10(Pulse) dan 
Spring aus der Schleife raus
            {

              PC3 = 1;            //Setze Schrittmotor Werkzeugwechseler 
Puls = 1

              warte  (1000);          //Einstellen der Zeit der 
Positiven Halbwelle

              PC3 = 0;            //Setze Schrittmotor Werkzeugwechseler 
Puls = 0

              warte  (1000);          //Einstellen der Zeit der 
Negativen Halbwelle


              if(j = 10)            //Nach den 10 Pulsen spirneg in 
diese Schleife
              {

                PD2 = 1;          //Setze Schrittmotor Werkzeugwechsler 
Rechts SPS auf 1

                  if(PD2 = 1)        //Wenn Schrittmotor 
Werkzeugwechsler Rechts SPS auf 1 ist Springe hier rein
                  {

                    if(PB5 = 1)      //Wenn Signal Erhalten 1 ist 
Springe hier rein
                    {

                      PD2 = 0;    //Setze Schrittmotor Werkzeugwechsler 
Rechts SPS auf 0

                    }          //Ende Schleife if(PB5 = 1)

                   }            //Ende Schleife if(PD3 = 1)

              }                //Ende Schleife if(j = 10)
            }                  //Ende Schleife for (j = 0; j <10; j++)

        }                      //Ende Schleife if (PB2 == 1 & PB4 == 1)



        if (PB3 == 1 & PB4 == 1)          //Springe in die Schleife wen 
Schrittmoto Werkzeugwechsler links = 1 und Freigabesignal = 1
        {

          j = 0;                  //Setze j auf 0

          PC2 = 0;                //Setze Schrittmotor Werkzeugwechsler 
Richtung auf 0

            for (j = 0; j <10; j++)        //Zähle bis 10(Pulse) dan 
Spring aus der Schleife raus
            {

              PC3 = 1;            //Setze Schrittmotor Werkzeugwechseler 
Puls = 1

              warte  (1000);          //Einstellen der Zeit der 
Positiven Halbwelle

              PC3 = 0;            //Setze Schrittmotor Werkzeugwechseler 
Puls = 0

              warte  (1000);          //Einstellen der Zeit der 
Negativen Halbwelle


              if(j = 10)            //Nach den 10 Pulsen spirneg in 
diese Schleife
              {

                PD3 = 1;          //Setze Schrittmotor Werkzeugwechsler 
Links SPS auf 1

                  if(PD3 = 1)        //Wenn Schrittmotor 
Werkzeugwechsler Links SPS auf 1 ist Springe hier rein
                  {

                    if(PB5 = 1)      //Wenn Signal Erhalten 1 ist 
Springe hier rein
                    {

                      PD3 = 0;    //Setze Schrittmotor Werkzeugwechsler 
Links SPS auf 0

                    }          //Ende Schleife if(PB5 = 1)

                   }            //Ende Schleife if(PD3 = 1)

              }                //Ende Schleife if(j = 10)

            }                  //Ende Schleife for (j = 0; j <10; j++)

          }                    //Ende Schleife if (PB3 == 1 & PB4 == 1)

      }                        //Ende Hauptprogramm



void warte   (int zeit)                    //Funktion Warte

{
    k=0x00;                        //Variable auf 0 setzen
    TCCR0 = (1<<CS01);                  //Timer starten mit 1/8 des CPU 
Taktes

      while (k<=zeit)                  //solange variable kleiner als 
zeit ist
      {

        while (TOV0==0)                //solange Timer nicht überläuft
        {
          ;
        }

        k++;                    //Variable k + 1
      }

    TCCR0=0;                      //Timer aus
}

end;
#2040502
Lesenswert?

wow... so rotzfreche, stinkfaule aber trotzdem extrem dringliche 
anfragen gibts hier selten.
rechne mit viel gegenliebe - ich fang mal an.

> ../Werkzuegwechsler.c:25: error: expected ';' before 'if'
bist du zu dumm zum lesen, oder verstehst du nicht das kleinste bisschen 
englisch?

> ../Werkzuegwechsler.c:222: error: 'end' undeclared (first use in this
> function)
bist du zu dumm zum lesen, oder verstehst du nicht das kleinste bisschen 
englisch?
Gast #2040525
Lesenswert?

Peter Dannegger schrieb:
> Lies Dir in Ruhe die Postingregeln durch und versuchs nochmal.
> Lies auch einmal Korrektur vor dem Abschicken.

Klaus Wachtler schrieb:
> Dateiname falsch.
> (Weiter lese ich nicht, um mir die gute Stimmung nicht zu versauen.)

Hey Leute, Leute! Für sowas hat man doch keine Zeit, wenn man "schnelsst 
möglich hilfe baraucht".
Etwas mehr Verständnis bitte!
Moderator (Firma: Titel) Persönliche Seite #2040529
Lesenswert?

Sascha schrieb:
> if(j = 10)       //Nach den 10 Pulsen spirneg in diese Schleife
Siehe http://if-schleife.de

Du hättest leichter keine Kommentare in dein Programm geschrieben, dann 
könnte man das besser lesen...

Und lies mal die Zeilen da oben direkt über dem Eingabefenster:
1
Antwort schreiben
2
Wichtige Regeln - erst lesen, dann posten!
3
    * Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
Und C-Dateien am besten mit der Endung .c

> if (PB0 == 1 & PB4 == 1)
Du wirst mit diese Zeile (und ähnlichen) nicht das erreichen, was du 
willst. Da sind gleich ein paar Fehler drin...
Nummer 1: Das & in C ist ein bitweises Und, du willst hier aber 
eigentlich logisch verknüpfen. Sieh dir mal den Unterschied der & sowie 
der && Operatoren genauer an.
Nummer 2 und 3: Sieh mal nach, was PB0 ist. Richtig: es ist ein define 
mit dem Wert 0. Und 0 ist nicht == 1, deshalb ist diese Abfrage immer 
falsch.
Genau das selbe mit PB4. Dieses Makro repräsentatiert den Wert 4, und 
deshalb ist 4==1 immer falsch.
Und desahlb wird diese if-Abfrage nie ausgeführt...

Lies dir doch einfach mal ein C-Grundlagenbuch durch. Und die ganzen 
Tutorials hier im Forum. Einfach nur irgendwo irgendwas herkopieren 
klappt so nicht...
#2040534
Lesenswert?

Oh, mein Ton ist unsachlich! Ja Katastrophe!
Gott sei Dank hast du uns das mitgeteilst, sonst wärs mir und dem Rest 
der Welt ja völlig entgangen.

Achja, an meinem Deutsch wirst du außer regional üblichen 
Verschleifungen und der ein oder anderen Unzulänglichkeit selben 
Ursprungs keinen Fehler finden.
Gast #2040535
Lesenswert?

so habe das Programm jetzt auch auf folgende Errors reduzieren können.

../Werkzuegwechsler.c:26: error: expected ';' before 'if'
../Werkzuegwechsler.c: At top level:
../Werkzuegwechsler.c:221: fatal error: opening dependency file 
dep/Werkzuegwechsler.o.d: No such file or directory
compilation terminated.
Gast #2040538
Lesenswert?

Uuuuiiihh,

großes Chaos in deinem Code, die "Formatierung" ist
ja unter aller S.. , mit verlaub gesagt.

und das hier

> int j;k;

ist "falsch"

sollte

int j,k;

...

den Rest tu ich mir nicht an. :(

Formatier deinen CODE mal richtig! Von "einrücken" hast
du noch nichts gehört?
1
...lesen terminated "wegen Augenkrebsgefahr"

Alter Schwede...

Grüße...
Moderator (Firma: Titel) Persönliche Seite #2040539
Lesenswert?

Sascha schrieb:
> So habe mal das Programm als TXT dokument angehangen
Und ich sach noch:
>> Und C-Dateien am besten mit der Endung .c
Weil dann, du wirst es kaum glauben, hier im Forum so eine wundersame 
Syntaxhighlighting-Geschichte losgeht und damit sogar dein Quelltext 
lesbarer wird...

EDIT: Stell mal die Tabs in deinem Editor ab und statt dessen 4 
Leerzeichen ein...
Gast #2040551
Lesenswert?

> Oh, mein Ton ist unsachlich! Ja Katastrophe!
> Gott sei Dank hast du uns das mitgeteilst, sonst wärs mir und dem Rest
> der Welt ja völlig entgangen.

> Achja, an meinem Deutsch wirst du außer regional üblichen
> Verschleifungen und der ein oder anderen Unzulänglichkeit selben
> Ursprungs keinen Fehler finden.

Geht also, wenn du nur willst. Allein hinter dem einleitenden 'Oh' hätte 
ich gern ein 'Gott' gelesen.
Gast #2040552
Lesenswert?

Endschuldigt bitte aber ich bin dabei C zulernen in der Schule 
allerdings Programmiere ich sonst einen 80C552 von NXP und keinen Atmega 
32 von Atmel und normalerweise programiere ich auch in Keil und nicht 
AVRStudio.

Ich wäre um Hilfreiche Beiträge von euch sehr dankbar.
Gast #2040557
Lesenswert?

>> Gott sei Dank hast du uns das mitgeteilst ...

Was mir noch auffiel. ist eine gewisse Ich-Schwäche in deinem Beitrag. 
Das entnahm ich dem 'uns' in deinem deinem Satz, der eindeutig an dich 
gerichtet war.
Gast #2040562
Lesenswert?

Sascha schrieb:
> Ok endschuldig meinen Ton und meine Rechtschreibung aber ich muss das
> Programm so schnell wie möglich Fertig bekommen da es sehr wichtig ist.
> Und nun das Programm nochmal als C datei mit guter Formatierung.

Es fehlen Semikolons, Vergleiche bei if sind falsch, Leerzeichen in 
Funktionsaufrufen sind auch unorthodox...

Ganz im ernst, da sind dermaßen viele Fehler drin, da hab ich auch keine 
Lust noch im Detail zu sagen, wo jetzt genau was falsch ist. Es sind 
nicht nur programmiertechnische Fehler sondern auch Tippfehler usw.. 
Rudimentärste C-Konstrukte sind falsch umgesetzt...
#2040566
Lesenswert?

[/c]        if (PB0 == 1 & PB4 == 1)          //Springe in die Schleife 
wen Z Achse auf 1/10 SPS  = 1 und Freigabesignal = 1
[/c]
Das klappt so nicht.
Willst du einen einzelnen (zwei einzelne) Pin abfragen, musst du das so 
schreiben:
1
if ( (PINB & (1<<PB0)) && (PINB & (1<<PB1)) )
So und nicht anders.

[/c]          PC0 = 1;                //Setze Z Achse Richtung auf 1
[/c]
Willst du einen einzelnen Pin setzen, musst du das so schreiben:
1
PORTC |=  (1<<PC0);       //setzen
2
PORTC &= ~(1<<PC0);       //löschen
So und nicht anders.
#2040567
Lesenswert?

Sascha schrieb:
> Ok endschuldig meinen Ton und meine Rechtschreibung aber ich muss das
> Programm so schnell wie möglich Fertig bekommen da es sehr wichtig ist.

dann hättest du eher anfangen, in der C-Vorlesung richtig aufpassen, 
oder jemanden bezahlen müssen.

In dem Code steckt soviel Unkenntnis der Grundlagen und prinzipielle 
Fehler, dass hier ein Paar Tips nicht ausreichen.
Und niemand wird dir hier kostenlos ein Programm schreiben.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.