Atmega 16 und eine Siebensegment Anzeige. (Fragen)

  • Guten Abend,


    Ich habe soeben eine 7 Segmentanzeige an einen Atmega16 gelötet.
    Die Anzeige Buchstaben entsprechen den Port A:
    PortA.0 = a
    PortA.1 = b
    PortA.2 = c
    usw.
    Besteht die Möglichkeit, dass der IC selbst von 0-9 Zählt und dann einen Stellenübersprung zu den Zehnern macht? ( Zehner auf Port B )
    Und wie errechnet sich die Zeit bei warten in Verbindung zum crystal
    [Blockierte Grafik: http://circuits.datasheetdir.com/18/ATMEGA16-pinout.jpg]


  • Mit dem Programm zählt der Mega eigentlich gar nicht sonden zeigt nur die Segmente an und wartet dann 250ms
    da gibt es auch nicht viel zu rechnen, waitms 250 heisst einfach 250ms warten der compiler berechnet das von selbst mit der Taktfrequenz.



    zum anzeigen des 2. Segmentes brauchts einfach nur ein "Config Portb = Output" und im programm verteilt die passende anweisung für PortB "Portb = &B11000000"

  • Wenn du den µController dann noch durchzählen lassen willst würde ich es so machen (keine Ahnung wie das mit Bascom geht, ich schreibe nur in C, deswegen nur der theoretische Aufbau):
    In der Hauptschleife stehen dann nur drei Anweisungen:
    - Eine Sekunde warten
    - Variable erhöhen
    - Variable an die Ausgabefunktion übergeben
    In der Ausgabefunktion dann pro Zeichen:
    - Kopie der Variable erstellen, durch den Stellenwert teilen und auf INT umwandeln, anschließend INT*Stellenwert von der Variable abziehen
    - Den INT-Wert dann in eine Switch-Case-Konstruktion übergeben und entsprechend ausgeben lassen
    - Nochmal von vorne, bis man durch die komplette Variable durch ist


    Beispiel:
    Variable = 456
    1. Schritt:
    INT(456/100)=4
    456-(4*100)=56
    4 übergeben
    2. Schritt
    INT(56/10)=5
    56-(5*10)=6
    5 übergeben
    3. Schritt
    6 übergeben


    Gruß Matthias