Hallo An alle,
ich wollte mal die Möglichkeiten von Mikrocontrollern etwas besser kennenlernen und habe mir ein Lernpaket zugelegt.
Die Entwicklungsumgebung ist Bascom.
Als erstes eigenes Programm habe ich eine Stoppuhr erstellt. Aus meiner sicht sollte sie auch laufen.
Ob sie es macht oder nicht, kann ich nicht sagen. Im Terminalprogramm sehe ich keine Uhranzeige.
Wenn ich den Tastern Sw1 und Sw2 die den Timer starten bzw. Stoppen sollen betätige geht zwar meine Led an und aus ich sehe keine Print ausgabe im Terminal. Setze ich Go=0 im Printbefehl wird im Terminal gleich nach dem öffnen 0:00 ausgegeben.
Meine Frage ist nun, kann es sein, dass die Übertragung zum Terminal zu langsam ist wenn der Timer läuft.
Muss ich ein LCD verwenden? Oder habe ich einen anderen Gedankenfehler?
Hier noch mein code.
Da mir am code nicht falsches aufgefallen ist, hoffe ich auf ein paar Tips von Euch Experten.
Sirko
ich wollte mal die Möglichkeiten von Mikrocontrollern etwas besser kennenlernen und habe mir ein Lernpaket zugelegt.
Die Entwicklungsumgebung ist Bascom.
Als erstes eigenes Programm habe ich eine Stoppuhr erstellt. Aus meiner sicht sollte sie auch laufen.
Ob sie es macht oder nicht, kann ich nicht sagen. Im Terminalprogramm sehe ich keine Uhranzeige.
Wenn ich den Tastern Sw1 und Sw2 die den Timer starten bzw. Stoppen sollen betätige geht zwar meine Led an und aus ich sehe keine Print ausgabe im Terminal. Setze ich Go=0 im Printbefehl wird im Terminal gleich nach dem öffnen 0:00 ausgegeben.
Meine Frage ist nun, kann es sein, dass die Übertragung zum Terminal zu langsam ist wenn der Timer läuft.
Muss ich ein LCD verwenden? Oder habe ich einen anderen Gedankenfehler?
Hier noch mein code.
Code:
'Stoppuhrtest
'Version 1.0
$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200
'Eingänge
Sw1 Alias Pind.2 'Alias für Pind 2
Config Sw1 = Input 'Sw1 ist Eingang
Portd.2 = 1 'Eingang Entprellt
Sw2 Alias Pind.3 'Alias für Pind 3
Config Sw2 = Input 'Sw2 ist Eingang
Portd.3 = 1 'Eingang entprellt
Sw3 Alias Pind.4 'Alias für Pind 4
Config Sw3 = Input 'Sw3 ist Eingang
Portd.4 = 1 'Eingang entprellt
Led Alias Portb.6
Config Led = Output
Led = 0
'Timer
Config Timer0 = Timer , Prescale = 64 'Timer0 mit Teiler 64
Stop Timer0 'Teimer Stoppen
On Timer0 Timer_isr 'Interrupt Service Routiene
Enable Timer0 'Timer einschalten
Enable Interrupts 'Interrupt einschalten
'Variablen
Const Reload = 131 'Reloadwert 131
Dim Msekunden As Byte 'Variable für Tausendstel Sekunden
Dim Hsekunden As Byte 'Variable für Hundertstel Sekunden
Dim Csekunden As Byte 'Variable für Centel Sekunden
Dim Sekunden As Byte 'Variable für Sekunden
Dim Zsekunden As Byte 'Variable für 10 Sekunden
Dim Minuten As Byte 'Variable für Minuten
Dim Go As Byte 'Variable Timer Läuft
'Initialisierung
Msekunden = 0
Hsekunden = 0
Csekunden = 0
Sekunden = 0
Zsekunden = 0
Minuten = 0
Go = 0
Do
If Sw1 = 0 Then 'Starttaste gedrückt
Start Timer0 'Starten Timer0
Go = 1 'Timer läuft
Led = 1
End If
If Sw2 = 0 Then 'Stoptaste gedrückt
Stop Timer0 'Stoppen Timer0
Go = 0 'Timer läuft nicht
Led = 0
End If
If Sw3 = 1 Then 'Resettaste gedrückt
Stop Timer0 'Stoppen Timer0
Msekunden = 0
Hsekunden = 0
Csekunden = 0
Sekunden = 0
Zsekunden = 0
Minuten = 0
Go = 0
End If
If Msekunden = 10 Then
Incr Hsekunden
Msekunden = 0
If Hsekunden = 10 Then
Incr Csekunden
Hsekunden = 0
If Csekunden = 10 Then
Incr Sekunden
Csekunden = 0
If Sekunden = 10 Then
Incr Zsekunden
Sekunden = 0
If Zsekunden = 10 Then
Incr Minuten
Zsekunden = 0
If Minuten = 10 Then
Msekunden = 0
Hsekunden = 0
Csekunden = 0
Sekunden = 0
Zsekunden = 0
Minuten = 0
End If
End If
End If
End If
End If
End If
'Zeitanzeige
If Go = 1 Then
Print ; Minuten ; ":" ; Zsekunden ; Sekunden
End If
Loop
'Timer Interrupt
Timer_isr:
Timer0 = Reload 'Timer Reload laden
Incr Msekunden 'Tausendstel Sekunden Incrementieren
Return
End
Da mir am code nicht falsches aufgefallen ist, hoffe ich auf ein paar Tips von Euch Experten.
Sirko