µC-Programmierung in C



  • Hi leute,

    Die Aufgabe:
    P2 (LEDs) soll binär hochgezählt werden. Die Zählgeschwindigkeit ist fest vorgegeben.

    Meine Lösung wäre: (mit C programmiert)

    #include <reg51.h>

    sfr at P2 LEDs;

    void main(void){
    while(1){
    for(LEDs=0; LEDs<=255; LEDs++){
    }
    }
    }

    Wenn ich dieses Programm übersetze ist es fehlerfrei! Und wenn ich es simuliere macht es auch was ich möchte, doch wenn ich es auf dem Mikrocontroller angezeigt haben möchte, tut der Mikrocontroller etwas, aber auch nicht wirklich. Ich vermute ich brauche eine Schleife die zwischen dem Hochzählen eine Pause benötigt oder so, naja das ist mein Problem, ich weiß nicht wie ich es ausgeben kann(fehlerfrei).

    Vielen Dank fürs lesen 😉
    Dann noch ein Danke Schön für eine Antwort.
    Und eventuell ein Danke Schön für eine richtige Antwort :D.



  • Deine Schleife zaehlt unendlich oft von 0 bis 255, ist dir das klar? Ausserdem, wenn die Schleife wirklich nur so aussieht dann hast du sogut wie keine chance eine klare Zahlenabfolge zu erkennen weil einfach alles viel zu schnell geht (ausser dein Mikrocontroller kommt aus der Steinzeit).
    Was ist eigentlich das Ziel von deinem Programm? Soll es nur die Zahlen am Display anzeigen? Dann solltest du wirklich mal ain ein sleep oder usleep denken.

    lg
    moe



  • man kanns natürlich auch viel kürzer schreiben 😉

    while (1)
    {
       LEDs++;
       // aber hier muss auf jeden fall 'ne verzögerung rein ;)
    }
    


  • Also ich hab erst vor einer Woche mit C angefangen davor hatte ich Assembler(schwer). Wie gesagt bei der Simulation funkt alles!! Ja mein prog soll nur die zahlen anzeigen. Wie macht man so ein sleep/unsleep?!

    vielen dank



  • Du hast leider nciht dazu geschrieben mit was für einen MikroController du den Spaß machst, deswegen kann ich dir den Namen der Funktion net sagen. Schau doch mal in die Doku des Compiler und /oder- Prozessor -Herstellers.
    hat was mit sleep zu tun. Ansonsten wäre da noch die Variante des Timers und die Nutzung einer Interrupt Service Routine.

    Schau mal in der doku nach.

    mfg secret



  • secret schrieb:

    was für einen MikroController

    8051 offensichtlich


Anmelden zum Antworten