Anweisung in C



  • Hallo
    Ich benutze CodeVisionAvr zum bearbeiten und compilieren der Datei und hoffe ich bin hier im richtigen Forum

    Wie erstelle ich eine C Anweisung in Form von
    a= 1 bis 3

    Gruß



  • Das sind absolute Grundlagen - in jeder Pragrammiersprache.

    Wenn du noch nicht einmal diese kennst, wird es (gerade in C) shr sehr schwierig für dich.

    Lies ein C-Buch. Nein, arbeite ein C-Buch durch.



  • DirkB schrieb:

    Lies ein C-Buch. Nein, arbeite ein C-Buch durch.

    Aber nicht C von A-Z von Jürgen Wolf 🙂

    anfänger67 schrieb:

    Ich benutze CodeVisionAvr zum bearbeiten und compilieren der Datei

    Wie lang schon?

    Ich weiß zwar nicht was du meinst, aber vielleicht hilft das:

    #include <stdio.h>
    
    int main(void)
    {
        int a;
    
        for (a=1;a<4;a++)
            printf("%d\n",a);
    
        return 0;
    }
    


  • Ok Danke erst mal,damit werde ich es mal versuchen auf mein Prog anzupassen



  • Hallo noch mal
    Also irgendwie gehe ich die Sache falsch an oder habe einen Denkfehler.
    Das prog ist für einen DDS Syntesizer gedacht zum betrieb an einem KW Empfänger.
    Es hat den frequenzbereich von 0 bis 35Mhz und ist in 9 Bänder unterteilt die sich schalten lassen. Beim Umschalten wird jeweils etwa in Frequenzmitte gestartet wie zb. 1900000 oder 3600000 um nur 2 zu nennen.Ziel ist es ein Band anfang und Ende zu setzen zb.Band1 von 3500000 bis 3800000 und band0 von1800000 bis 2000000.
    Das klptt entweder garnicht oder nur für ein Band dann kann ich zwar die Frequenz von -bis verstellen aber nicht mehr umschalten. zb
    if (frequency<=band0){frequency=band0_begin}
    if (frequency>=band0){frequency=band0_end}

    Auch der Gedanke hier:
    if(band0_begin < band0 || band0 > band0_end) {band0=band0_begin;band0_end=band0; delay_ms(500);};
    if(band1_begin < band1 || band1 > band1_end) {band1=band1_begin;band1_end=band1; delay_ms(500);};
    if(band2_begin < band2 || band2 > band2_end) {band2=band2_begin;band2_end=band2; delay_ms(500);};

    funktioniert nicht.



  • wie kann ich hier eine Datei hochladen ohne den ganzen Code zu posten??
    Gruß



  • Eine Datei kannst du hier nicht hochladen, die würde sich dann wahrscheinlich auch niemand ansehen.
    Poste doch einfach den relevanten Teil des Codes (mit Code-Tags)



  • OK Danke

    Am Anfang habe ich Frequenzmitte , Anfang und Ende festgelegt und...

    eeprom unsigned long band0= 1900000; // Frequenzmitte
    eeprom unsigned long band1= 3600000;
    eeprom unsigned long band2= 7050000;

    eeprom unsigned long band0_begin= 1800000; // Frequenzbereiche
    eeprom unsigned long band0_end= 2000000;
    eeprom unsigned long band1_begin= 3500000;
    eeprom unsigned long band1_end= 3800000;
    eeprom unsigned long band2_begin= 7000000;
    eeprom unsigned long band2_end= 7200000;

    wird beim Start oder umschalten durch

    switch(l)
    {
    case 1:{frequency=band0,n=1,b0=1; break;}; // 1,9
    case 2:{frequency=band1,n=1,b1=1; break;};
    case 3:{frequency=band2,n=1,b2=1; break;};
    case 4:{frequency=band3,n=1,b3=1; break;};
    aufgerufen.

    und hiermit sollte das Band von - bis festgelegt werden (was nicht geht)

    if(band0_begin < band0 || band0 > band0_end) {band0=band0_begin;band0_end=band0; delay_ms(500);};
    if(band1_begin < band1 || band1 > band1_end) {band1=band1_begin;band1_end=band1; delay_ms(500);};
    if(band2_begin < band2 || band2 > band2_end) {band2=band2_begin;band2_end=band2; delay_ms(500);};

    evntuell habe ich irgendwas übersehen oder vergessen? 😕

    Gruß



  • Sind die Kommentare so, wie du dir das vorstellst?

    if(band0_begin < band0 || band0 > band0_end) // Wenn band0 größer Anfang ODER band0 größer Ende ist
                                                 // (wenn band0_begin kleiner band0_end ist, dann ist der ODER-Teil überflüssig)
    { band0 = band0_begin;  // setze band0 auf Anfang
      band0_end=band0;      // setze Ende auf Anfang
      delay_ms(500);    
    }
    


  • Da gibt es massig Bücher drüber. Das einfachste ist, du lädst dir die c-tutorial.pdf runter.
    Ist zwar für GNU aber sehr gut brauchbar.

    Es sei den, du bis in Englisch kein Ass.

    Sonst würde ich dir zu Standardwerken von Verlagen wie Data Becker,
    Addison-Wesley raten. Einige wie die von Addison Wessley kannst du
    ganz lange im Schrank stehen lassen.
    Der Grund, warum man mit herkömmlichen Büchern schneller lernen kann
    als mit nderen Medien liegt darin, das wir mit unserer linken logischen Gehirnhälfte
    (Licht Geruche u.s.w) etwa sieben Eindrücke pro Sekunde verarbeiten können.

    Mit der rechten, der die für die Bildaufnahme zuständig ist, bis zu 10000 Eindrücke pro Sekunde.
    In der rechten schlummert auch das Unterbewußtsein, wo auch die meisten Eindrücke landen.
    Egal wie gut dein Rechner ist und wie neu, die Konstruktion "homo sapiens"
    ist 30000 Jahre alt.

    Schnapp dir also ein gutes Buch und studiere es.


Anmelden zum Antworten