uhr mit bascom

sascha32

Neues Mitglied
10. Okt. 2010
18
0
0
Sprachen
hi guten abend ich bin neu hier im forum.


achso ich bin der sascha und bin 32, ich komme aus der nehe von rheine,osnabrück.vom beruf bin ich Elektriker.gehe Angeln


da dachte ich mir ich versuche einmal eine uhr,so den anfang habe ich schon aber ich kome nicht weiter.

ich habe einen atmega32 mit internen quarz.
eil lcd mit 16x2
und es läuft auch alles mit dem programm auser die zeit noch nicht,die bleibt so stehen wie sie eingestellt wird.


so mal den code ....



CodeBox BASCOM
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , _
Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2

$baud = 9600
$regfile "m8def.dat"
$crystal = 16000000
Config Lcd = 16 * 2
Dim Sekunde As Word
Dim Minute As Word
Dim Stunde As Word
Dim S1 As String * 2
Dim S2 As String * 2
Dim S3 As String * 2
Dim Refresh As Byte

Config Pind.2 = Input
Portd.2 = 1
Taster0 Alias Pind.2

Config Pind.3 = Input
Portd.3 = 1
Taster1 Alias Pind.3


Config Timer1 = Timer , Prescale = 256
Enable Timer1
On Timer1 Test
Enable Interrupts
Timer1 = 3036

'------------ Uhr Voreinstellung ----------------------------------------------
Sekunde = 0
Minute = 0
Stunde = 0

Initlcd
Cursor Off

Do
'-------------------- Formatkonvertierung für Uhrzeit -------------------------

S1 = Str(stunde)
S1 = Format(s1 , "00")
'----------------------------------
S2 = Str(minute)
S2 = Format(s2 , "00")
'------------------------------------
S3 = Str(sekunde)
S3 = Format(s3 , "00")
'--------------------------------------
' S1 ist nun die Variable für Stunde
' S2 ist nun die Variable für Minuten
' S3 ist nun die Variable für Sekunden

'----------- Anzeige Stunden , Minuten, Sekunden auf Display ------------------

If Refresh = 1 Then
Cls ' Display löschen
Locate 2 , 13
Lcd S3
Locate 2 , 11
Lcd ":"
Locate 2 , 8
Lcd S2
Locate 2 , 6
Lcd ":"
Locate 2 , 3
Lcd S1
Locate 1 , 1
Lcd "Aktuelle Uhrzeit"
' Waitms 50
Refresh = 0
End If
'--------------Uhr einstellen Minute ------------------------------------------
If Taster0 = 0 Then
Waitms 50
Incr Stunde
End If
'--------------Uhr einstellen Stunde -----------------------------------------
If Taster1 = 0 Then
Waitms 50
Incr Minute
End If
'--------Uhr komplett auf Null stellen ----------------------------------------
If Taster0 = 0 And Taster1 = 0 Then
Sekunde = 0
Minute = 0
Stunde = 0
Waitms 50
End If
'------------------------------------------------------------------------------
Loop

End

Test:
Timer1 = 3036 'Timer macht man gerne zuerst in der ISR.
Incr Sekunde
Refresh = 1

Return


schon eimal danke für eure hilfe
 
Hallo Sascha!

Ich habe mir mal erlaubt, den anderen Beitrag mit selben Inhalt wieder zu löschen.
Hier in der Kategorie "Software" ist dein Thread schon ganz gut aufgehoben. ;)

Nur mal eine Frage am Rande.....
Warum hast du ausgerechent deine Uhr genau nach diesem Code begonnen?


Gruß,
Cassio
 
Hi Sascha,

achso ich bin der sascha und bin 32, ich komme aus der nehe von rheine,osnabrück.vom beruf bin ich Elektriker.gehe Angeln

denn mal herzlich willkommen im Forrum :flowers:

ich habe einen atmega32 mit internen quarz.
Die Atmels haben intern einen RC-Oszillator - also was relativ ungenaues
mit Widerstand und Kondensator.

und es läuft auch alles mit dem programm auser die zeit noch nicht,die bleibt so stehen wie sie eingestellt wird.
Müßte man sich den Code mal genauer ansehen ... fehlt mir aber im Moment
etwas die Zeit und es ist schon etwas spät für logische Gedanken ;)

Ich hab mal den Code in deinem Beitrag etwas vom Rest mit dem Text
getrennt. Wird dann etwas übersichtlicher. Wenn du mit "ÄNDERN" in den
Beitrag gehst kannst du sehen wie ich es gemacht hab.

Gruß
Dino
 
Hi,

auf die Schnelle 2 Sachen, die mir aufgefallen sind:

$regfile = "m8def.dat" passt nicht zum ATMega32
$crystal = 16000000 passt nicht zum internen Oszillator

Bin erstmal müde, daher keine weitere Vertiefung in den Code.
Falls bis morgen niemand etwas geschrieben hat, schaue ich nochmal rüber.

Tip: Was mit den Sekunden nach 59 passiert, siehst Du dann sicher, wenn diese gezählt werden.
Da fehlt noch ein wenig.

Schönen Gruss
Markus
 
ach was solls ...

ich habe einen atmega32 mit internen quarz.




CodeBox BASCOM
$regfile = "m8def.dat"
$crystal = 16000000

das paßt nicht zum internen Takt und Mega32 (wie der Vorredner
Markus schon gesagt hat.)



CodeBox BASCOM
   $hwstack = 100
$swstack = 100
$framesize = 100

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , _
Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2

$baud = 9600

laß das "baud" raus wenn du im Programm keinen UART verwendest sonst
belegt dir der Befehl die Pins des UART. Die gehen dann nicht für normale
IO-Operationen.



CodeBox BASCOM
   $regfile "m8def.dat"
$crystal = 16000000

:confused: warum noch einmal definieren ? Und warum dann wieder falsch ?



CodeBox BASCOM
   Config Lcd = 16 * 2
Dim Sekunde As Word
Dim Minute As Word
Dim Stunde As Word

Da würde auch Byte reichen. Byte geht von 0 bis 255. Word geht bis 65535
Das spart Platz im wenig vorhandenen SRAM.



CodeBox BASCOM
   Dim S1 As String * 2
Dim S2 As String * 2
Dim S3 As String * 2
Dim Refresh As Byte

Config Pind.2 = Input
Portd.2 = 1
Taster0 Alias Pind.2

Config Pind.3 = Input
Portd.3 = 1
Taster1 Alias Pind.3


Config Timer1 = Timer , Prescale = 256
Enable Timer1
On Timer1 Test
Enable Interrupts
Timer1 = 3036

'------------ Uhr Voreinstellung ----------------------------------------------
Sekunde = 0
Minute = 0
Stunde = 0

Initlcd
Cursor Off

Do
'-------------------- Formatkonvertierung für Uhrzeit -------------------------

S1 = Str(stunde)
S1 = Format(s1 , "00")
'----------------------------------
S2 = Str(minute)
S2 = Format(s2 , "00")
'------------------------------------
S3 = Str(sekunde)
S3 = Format(s3 , "00")
'--------------------------------------
' S1 ist nun die Variable für Stunde
' S2 ist nun die Variable für Minuten
' S3 ist nun die Variable für Sekunden

'----------- Anzeige Stunden , Minuten, Sekunden auf Display ------------------

If Refresh = 1 Then
Cls ' Display löschen
Locate 2 , 13
Lcd S3
Locate 2 , 11
Lcd ":"
Locate 2 , 8
Lcd S2
Locate 2 , 6
Lcd ":"
Locate 2 , 3
Lcd S1
Locate 1 , 1
Lcd "Aktuelle Uhrzeit"
' Waitms 50
Refresh = 0
End If
'--------------Uhr einstellen Minute ------------------------------------------
If Taster0 = 0 Then
Waitms 50
Incr Stunde
End If
'--------------Uhr einstellen Stunde -----------------------------------------
If Taster1 = 0 Then
Waitms 50
Incr Minute
End If

Das Einstellen der Uhr wird ne echt interessante Sache werden :D
Schon mal durchgerechnet wieviel 1/50ms in Herz sind ? :eek: :rolleyes:



CodeBox BASCOM

'--------Uhr komplett auf Null stellen ----------------------------------------
If Taster0 = 0 And Taster1 = 0 Then
Sekunde = 0
Minute = 0
Stunde = 0
Waitms 50
End If
'------------------------------------------------------------------------------
Loop

End

Test:
Timer1 = 3036 'Timer macht man gerne zuerst in der ISR.
Incr Sekunde
Refresh = 1

Return

"Timer macht man gerne zuerst in der ISR"
ich würde sagen ... muß man zuerst machen damit einem die anderen
Befehle nicht zu viel Ungenauigkeit in den Timer reinhauen. Ich sag mal
nur Ausführungszeit. Jeder Befehl benötigt seine Zeit. Je mehr Befehle, desto
mehr Zeit ... die man dann später bei der Timerberechnung wieder mit
berücksichtigen muß.

Aber wie Cassio schon in dem anderen Thread von dir geschrieben hat ...
es wär interessant wieviel Vorwissen bereit vorhanden ist um besser
abschätzen zu können wie man dir am besten weiterhelfen kann.

Gruß
Dino
 
Hi Sascha
Ich begrüß dich gleich hier und werde dir mal ein paar Tipps geben. Bascom ist nicht meine Welt, aber das heißt nicht, das ich dir nicht helfen kann. Du bist schon auf dem richtigen Weg, mit einem Projekt in die Welt der µc's einzusteigen.
Hier meine Tipps:
Ich sehe zwar eine Schleife, aber keinen Aufruf irgendwelcher unterprogramme. Du hast zwar schon die Abschnitte ganz gut herauskommentiert, aber besser ist es, in einem Programm viele Unterprogramme aufzurufen.
Der Vorteil, ist eine solche Routine erst einmal ok, dann kannst du sie immer wieder verwenden. Dann solltest du mal überlegen, ob EVA nicht helffen kann. Du beginnst mit dem Einlesen von Informationen, Verarbeitest diese und am Ende gibst du die Ergebnisse aus, also Eingabe Verarbeitung Ausgabe - kurz EVA.
Die Blockverarbeitung hab ich versucht, in den FAQ's einmal zu erklären. Auch wenn ich die Beiträge auf Assembler zugeschnitten habe, wirst du einiges auch in BASCOM anwenden können.
Gruß oldmax
 
Guten Morgen

Ich habe erst vor 4 wochen mit dem theme mich befast. da habe ich noch nicht so viel ahnung. aber das mit dem quarz und den m32def.dat einstellen das weiß ich auch schon,das es in dem code nicht passt. aber das lerne ich auch noch.also ich werde heute mal den code ein wenig neu machen mal schauen wie weit ich komme.
 
Hallo Sascha!


......aber man will auch was allein hinbekommen.

In deinem Vorstellungsthread hast du geschrieben, dass du auch mal etwas selber machen möchtest......
Warum dann gerade DIESER Code? :hmmmm:
Selber geschrieben hast du den doch auch nicht.


also ich werde heute mal den code ein wenig neu machen mal schauen wie weit ich komme.

Verzeih mir bitte, aber ich würde den Code (gaaaaanz weit) an die Seite packen, mir einen 32,768kHz Uhrenquarz besorgen und die BASCOM-Hilfe zum Thema "Softclock" nutzen!

Ich denke, du möchtest erst einmal BASCOM und die AVR`s kennen lernen?
Dann solltest du dich auch nur Schrittweise damit befassen! :cool:
Dein derzeitig gefundener Programmcode ist dafür jedenfalls nicht geeignet.


Gruß,
Cassio
 
Hallo Sascha!




In deinem Vorstellungsthread hast du geschrieben, dass du auch mal etwas selber machen möchtest......
Warum dann gerade DIESER Code? :hmmmm:
Selber geschrieben hast du den doch auch nicht.




Verzeih mir bitte, aber ich würde den Code (gaaaaanz weit) an die Seite packen, mir einen 32,768kHz Uhrenquarz besorgen und die BASCOM-Hilfe zum Thema "Softclock" nutzen!

Ich denke, du möchtest erst einmal BASCOM und die AVR`s kennen lernen?
Dann solltest du dich auch nur Schrittweise damit befassen! :cool:
Dein derzeitig gefundener Programmcode ist dafür jedenfalls nicht geeignet.


Gruß,
Cassio

da hast du recht der Code ist nicht von mir. dann werdeich mir mal ein quaz bestellen und dann mal damit rumspieln,ich kann ja auch den hilfe von bascom den Time$ nehmen oder ????? ach so welche bücher kannst dumir vorschlagen.


Wo muss ich den den quarz hin bauen??? kommt er dann da hin wo der normale quarz ist.???

wie stelle ich meine fusebits ein und den ezternen quarz.????? deratmega32 lauft noch jungfreulich.
 
Moin,

ich würde nicht dazu raten, die Softclock zu nutzen. Dabei lernt man nicht viel, zumal in diesem Fall wohl erstmal die Basics aufgebaut werden müssen. Dafür ist die Programmierung einer Uhr schonmal nicht schlecht, da sie einige Klinken (zumindest für Anfänger) enthält.

Einen Quarz würde ich deshalb noch nicht unbedingt kaufen. Dass die Uhr anfangs aufgrund der internen Taktung ungenau läuft, ist erstmal egal. Es geht nicht um die genaue Zeit, sondern darum, es zum Fliegen zu bringen. Dabei würde ich keine Zusatzbaustellen aufmachen, zumal der mc durch falsches fusebit-Handling schnell mal im Nirvana landet. Einen Schritt nach dem anderen.

Abschließend hätte ich noch eine Bitte an Sascha: Deine Postings sind recht holprig lesbar. Etwas mehr Mühe bei der Rechtschreibung, gerade Groß-/Kleinschreibung macht es für den Lesenden gleich viel gefälliger.

Schönen Gruss
Markus
 
Danke schön Markus,ich werde auf meine Rechtschreibung achten.

So dann,wie kann ich jetzt am besten anfangen?????

Bitte um Hilfe für ein Anfänger der jetzt ein wenig durcheinander ist.

Mich wieder auf den rechten weg zu bringen.:confused: :confused:
 
Hi Sascha,

ganz einfach Schritt für Schritt.

Der Anfang wäre:

$regfile = "m32def.dat"
$crystal = 1000000

Spiel erstmal soweit rum, dass Du die Uhr vernünftig einstellen kannst.
Dein Beispiel läuft aus dem Ruder, wenn die Minuten größer 59 werden. Bei den Stunden ist es das gleiche (naja, nicht bei 60, sondern bei 24).
Die Verzögerung scheint außerdem viel zu klein, um eine Einstellung überhaupt hinzubekommen zu können.

Wenn das funktioniert, kannst Du Dich auf den Timer stürzen.

Schönen Gruss
Markus
 
Hi Sascha,

ganz einfach Schritt für Schritt.

Der Anfang wäre:

$regfile = "m32def.dat"
$crystal = 1000000

Spiel erstmal soweit rum, dass Du die Uhr vernünftig einstellen kannst.
Dein Beispiel läuft aus dem Ruder, wenn die Minuten größer 59 werden. Bei den Stunden ist es das gleiche (naja, nicht bei 60, sondern bei 24).
Die Verzögerung scheint außerdem viel zu klein, um eine Einstellung überhaupt hinzubekommen zu können.

Wenn das funktioniert, kannst Du Dich auf den Timer stürzen.

Schönen Gruss
Markus

Danke dann werde ich mal das mal in angriff nehmen,und dann mal weiter schauen. ich werde den Code mal selbst schreiben. Mal sehen was dabei rauskommt.
 
Hi
Der richtige Weg... hmm, ich denke, den hast du bereits beschritten. Nur, da hat Cassio nicht ganz unrecht, fertige Programme nehmen und versuchen, die zu verstehen, ist oft auch für Profi's nicht einfach.
Trotzdem, man kann sich einzelne Passagen ansehen und versuchen, diese in eigene Anwendungen zu integrieren. Aber alles mal Step by Step...
Schau erst mal in die FAQ's und überflieg zumindest die dortigen Anleitungen und Informationen. Einen Controller muß man verstehen, um damit zu arbeiten. Ein Vorteil ist die Grundkenntnis der Elektrotechnik/ Elektronik. Aber bei einem Controller gibt es ein paar Dinge, die man nicht aus den Augen lassen darf. Da ist zum Beispiel die Befehlsfolge. Wenn du deine Gedanken nicht ordnen kannst, wird dich dein "Chaos" immer wieder in die Irre leiten. Daher mußt du unbedingt darauf achten, Programme in kleine funktionelle Blöcke zu zerlegen. Ich halte die Uhr schon für sinnvoll. Das versuche ich mal mit ein paar Worten zu erklären :
Zuerst einmal die Aufgabenstellung über den Funktionsumfang:
Uhrzeit stellen
Uhrzeit anzeigen
Das wäre mal die Minimalausstattung.
Nun geht's los:
Einfach mal so drauf los denken, was sind kleine Funktionseinheiten?
Timer-Interrupt alle ms
Ausgabe an Anzeige
Anzeige aktualisieren
Taster Eingaben abfragen
Millisekunden zählen und Sekunden bilden
Sekunden zählen und Minuten bilden
Minuiten zählen und Stunden bilden
Binärwerte für 7-Segment-Anzeige aufarbeiten
Binärwerte für LCD aufarbeiten
Binärwerte nach ASCII wandeln
Hardware-Beschaltung/ Datenblatt
Platine und Layout
ok, so in etwa ist das erste Brainstorming ....
Nun mach da eine Struktur hinein, sowohl auf der Software- als auch auf Hardware-Seite. Letzteres werd ich jetzt nicht weiter behandeln, aber auch da gibt's einen Fahrplan.
So, die Software.... male für jede Funktionseinheit einen Kasten auf ein Papier und schreib dran, was geht an Information hinein und was soll herauskommen. Bsp.: Binärer Wert nach ASCI - Ziffer wandeln.
Angenommen, du hast deine Bytes auf max. 9 begrenzt und möchtest dafür den ASCII - Wert erhalten.
Also Input ist Byte - Ausgang ist auch Byte, aber eben eine ASCII - Ziffer.
oder: Binärer Wert für 7-Segment
Auch hier Eingang ein Byte - Ausgang ein Byte, aber eben das entprechende 7 Segment-Muster für die Zahl.
Du merkst, ich schau nicht nach 234772 sondern nach nur einer Ziffer:
Zahl 2 nach ASCII 32hex oder 0b01011101 (mögliches Muster für 7 Segment)

Die Kunst ist es nun, solche kleinen Routinen für jede beliebige Zahl zu verwenden.
Die Funktionseinheiten gliederst du schließlich noch nach dem EVA-Prinzip. Und möglichst schön der Reihe nach.

Noch ein paar Worte zur ISR des Timers. Sie ist wie ein komplett eigenständiges Programm zu betrachten, was irgendwann deinen Programmablauf unterbricht. Daher sind hier ein paar Regeln einzuhalten, die ich jetzt nicht näher beschreibe. Aber auch hier kannst du kleine Häppchen von machen - z. B. zähle Millsekunden, Sekunden, Minuten und Stunden. Hier ist die Eingangsinfo auch Ausgangs-Info + nächste Stufe
Bspw. Eingang: Millisekunde Ausgang Millisekunde und Sekunde
Eingang Sekunde und Ausgang Sekunde und Minute
Und wenn dann deine Uhr läuft, erst dann bau die Erweiterung - Wecker zum Beispiel.
Auch dann wieder Blöcke malen und Begriffe für kleine Programmschnipsel , diese mit Eingang- und Ausgangs-Info beschreiben und dann zuletzt gliedern, also Reihenfolge im Programm festlegen.
Nicht viel was anderes steht in Büchern, nur es ist ausführlicher....
Gruß oldmax
 
So ich habe ein wenig an mein Code gebastelt, und jetzt weiß ich nicht mehr weite wie ich die Minuten hochzählen lassen kann, wenn die 59 Sekunden Rum sind. bitte um Hilfe.


so der Code

Code:
$regfile = "m32def.dat"
$crystal = 1000000

'------- lcd--------


 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.3 , Db6 = Porta.2 , Db7 = Porta.1 , E = Porta.5 , Rs = Porta.7

 Config Lcd = 16 * 2

 Dim Sekunde As Byte
 Dim Minute As Byte
 Dim Stunde As Byte
 Dim S1 As String * 2
 Dim S2 As String * 2
 Dim S3 As String * 2


 Cls
 Cursor Off
 Do

 S1 = Str(sekunde)
 S1 = Format(s1 , "00")
 S2 = Str(minute)
 S2 = Format(s2 , "00")
 S3 = Str(stunde)
 S3 = Format(s3 , "00")


 Locate 1 , 11
 Lcd S1
 Locate 1 , 10
 Lcd ":"
 Locate 1 , 8
 Lcd S2
 Locate 1 , 7
 Lcd ":"
 Locate 1 , 5
 Lcd S3


 If Sekunde > 58 Then Sekunde = 0

 Sekunde = Sekunde + 1




 Wait 1
 Loop
 End
 
Hi,

ändere als erstes die Reihenfolge. Also erst die Sekunden hochzählen und dann vergleichen (aber mit >59 ;) ).

Wenn Du die Sekunden zurücksetzt, kannst Du die Minuten erhöhen.

Tip dazu:
Wenn Du nach dem "then" eine neue Zeile beginnst, kannst Du dort reichlich Code reinpacken, also auch mehrere Zeilen. Alles, was bis zum Befehl "Endif" kommt, wird nur bearbeitet, wenn die Bedingung wahr ist.
Die Bascom-Hilfe hält dazu einiges bereit. Such mal etwas.

Die Stunden kannst Du dann gleich auch noch nach dem Muster dazubasteln.

Schönen Gruss
Markus
 
danke schön Markus

so ich hab es es läuft.

Code:
$regfile = "m32def.dat"
$crystal = 1000000

'------- lcd--------


 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.3 , Db6 = Porta.2 , Db7 = Porta.1 , E = Porta.5 , Rs = Porta.7

 Config Lcd = 16 * 2

 Dim Sekunde As Byte
 Dim Minute As Byte
 Dim Stunde As Byte
 Dim S1 As String * 2
 Dim S2 As String * 2
 Dim S3 As String * 2


 Cls
 Cursor Off
 Do

 S1 = Str(sekunde)
 S1 = Format(s1 , "00")
 S2 = Str(minute)
 S2 = Format(s2 , "00")
 S3 = Str(stunde)
 S3 = Format(s3 , "00")


 Locate 1 , 11
 Lcd S1
 Locate 1 , 10
 Lcd ":"
 Locate 1 , 8
 Lcd S2
 Locate 1 , 7
 Lcd ":"
 Locate 1 , 5
 Lcd S3


 If Sekunde > 59 Then
 Sekunde = 0
 Minute = Minute + 1
 Else
 Sekunde = Sekunde + 1
 End If
 If Minute > 59 Then
 Minute = 0
 Stunde = Stunde + 1
 Else
 If Stunde > 23 Then
 Stunde = 0
 End If
 End If
 Wait 1
Loop

 End;)
 
H Sascha,

die Tendenz ist sichtbar, es sind aber noch ein paar Fehler drin

Code:
$regfile = "m32def.dat"
$crystal = 1000000

'------- lcd--------


 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.3 , Db6 = Porta.2 , Db7 = Porta.1 , E = Porta.5 , Rs = Porta.7

 Config Lcd = 16 * 2

 Dim Sekunde As Byte
 Dim Minute As Byte
 Dim Stunde As Byte
 Dim S1 As String * 2
 Dim S2 As String * 2
 Dim S3 As String * 2


 Cls
 Cursor Off
 Do

 S1 = Str(sekunde)
 S1 = Format(s1 , "00")
 S2 = Str(minute)
 S2 = Format(s2 , "00")
 S3 = Str(stunde)
 S3 = Format(s3 , "00")


 Locate 1 , 11
 Lcd S1
 Locate 1 , 10
 Lcd ":"
 Locate 1 , 8
 Lcd S2
 Locate 1 , 7
 Lcd ":"
 Locate 1 , 5
 Lcd S3

 Sekunde = Sekunde + 1

 If Sekunde > 59 Then
    Sekunde = 0
    Minute = Minute + 1
 End If

 If Minute > 59 Then
    Minute = 0
    Stunde = Stunde + 1
 End If

 If Stunde > 23 Then Stunde = 0

 Wait 1
Loop

 End;)

Deine Version dürfte nie 00 Sekunden angezeigt haben, sondern eher..., 59, 60, 01,...
Die Umschaltung von 23:59 auf 0:00 sollte so auch funktionieren, was sie vorher nicht tat.
Da siehst Du gleich den nächsten Punkt: Alles testen, also in diesem Falle alle Überläufe der Uhr. Das hast Du nicht getan, wenn ich es richtig sehe.

Ich habe es auch etwas anders aufgeteilt. Ohne freie Zeilen und Einrücken des linken Randes wird es sehr schnell unübersichtlich. Mach das nie, auch nicht, um mal kurz was dazuzutesten. Diese Dinge bleiben, wenn sie denn leidlich funktionieren, oftmals so drin und wenn Du ein paar Tage später etwas ändern musst, blickst Du nicht mehr durch.
Kommentare kosten auf dem MC ebenfalls keinen Speicherplatz und auf dem PC hast Du reichlich. Also spar damit nicht. Zuviel kann man kaum kommentieren.

Du solltest jetzt die Tasten mit reinbasteln.
Da die Tasten nichts anderes machen, als das, was Du im Falle des Überlaufes machst, kannst Du eigentlich gleich hingehen und die Erhöhung von Minute und Stunde in Unterprogrammen abarbeiten, dann hast Du das auch mal gemacht. Hilfe hierzu wieder unter der Bascom-Hilfe.

Wenn das alles passt, kannst Du es hier nochmal zum Check posten. Danach kommt dann der Interrupt dran.

Schönen Gruss
Markus
 
Hi Sascha,

schau dir das mal hier in den FAQs an ...
BASCOM-Spielereien für Anfänger
Da ist der Aufbau eines Bascom-Programms von Grund an erklärt und
auch wie man eine Uhr baut. Die ist zwar nicht mit nem LCD sondern als
Binär-Uhr aber an dem Grundgerüst kannst du bestimmt was lernen und
für deine Version einige Anregungen aufnehmen.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)