Alarm..es geht weiter
Nun nach dem einiges gelernt habe..( Angeber..ich weiss ) habe folgendes für mich als Übung ausgedacht. Ein Timer..Klar ähnlich wie die Uhr.
Folgende einfache Funktion habe ich ausgedacht.
Mit Taster1 und Taster2 stelle ich die Zeit ein. Das geht.
Wenn ich auf Taster0 Drücke beginnt die Zeit zu laufen, soweit OK
00:00:00 dann 00:00:01
Nun habe ich gedacht wenn ich anstatt incr decr verwende müsste das ganze einfach rückwärts laufen..dachte ich..falsch...
Beim starten passiert folgendes :
00:00:00 dann 00:00:255
woher kommt plötzlich die 255 wobei an der Formattierung nichts geändert wurde ????????????
Nun der Code ( Es sind noch einiges auskommentiert, primär geht es um die sekunden..wenn das geht kann ich weitermachen )
Klar ich könnte den Zähler incr laufen lassen (zus.Zähler vewenden ) dann -1 machen...
Nun nach dem einiges gelernt habe..( Angeber..ich weiss ) habe folgendes für mich als Übung ausgedacht. Ein Timer..Klar ähnlich wie die Uhr.
Folgende einfache Funktion habe ich ausgedacht.
Mit Taster1 und Taster2 stelle ich die Zeit ein. Das geht.
Wenn ich auf Taster0 Drücke beginnt die Zeit zu laufen, soweit OK
00:00:00 dann 00:00:01
Nun habe ich gedacht wenn ich anstatt incr decr verwende müsste das ganze einfach rückwärts laufen..dachte ich..falsch...
Beim starten passiert folgendes :
00:00:00 dann 00:00:255
woher kommt plötzlich die 255 wobei an der Formattierung nichts geändert wurde ????????????
Nun der Code ( Es sind noch einiges auskommentiert, primär geht es um die sekunden..wenn das geht kann ich weitermachen )
Code:
'$sim
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100
Dim Sekunde As Byte 'Uhrzeit - Sekunde
Dim Minute As Byte 'Uhrzeit Minute
Dim Stunde As Byte 'Uhrzeit Stunde
Dim Timer_flag As Bit
Dim Lcd_sekunde As String * 2 'Ausgabe Sekunden
Dim Lcd_minute As String * 2 'Ausgabe Minuten
Dim Lcd_stunde As String * 2 'Ausgabe Sekunden
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
Cls
Cursor Off
'-----------------------------------------------
'Taster0 Starten
Config Pind.2 = Input
Portd.2 = 0
Taster0 Alias Pind.2
'Taster1 Uhr stellen
Config Pind.3 = Input
Portd.3 = 0
Taster1 Alias Pind.3
'Taster2 Minuten stellen
Config Pind.4 = Input
Portd.4 = 0
Taster2 Alias Pind.4
'LED definieren
Config Portd.5 = Output
Led Alias Portd.5
'Buzzer Port
Config Portd.7 = Output
Speaker Alias Portd.7
'-----------------------------------------------
Config Timer1 = Timer , Prescale = 256
Enable Timer1
On Timer1 Takt
Enable Interrupts
Timer1 = 3036
'Sekunde = 0
'Minute = 0
'Stunde = 0
'-----------------------------------------------
Do
Debounce Taster0 , 1 , Start_timer , Sub
Lcd_stunde = Str(stunde)
Lcd_stunde = Format(lcd_stunde , "00")
'----------------------------------
Lcd_minute = Str(minute)
Lcd_minute = Format(lcd_minute , "00")
'------------------------------------
Lcd_sekunde = Str(sekunde)
Lcd_sekunde = Format(lcd_sekunde , "00")
Locate 2 , 13
Lcd Lcd_sekunde
Locate 2 , 11
Lcd ":"
Locate 2 , 8
Lcd Lcd_minute
Locate 2 , 6
Lcd ":"
Locate 2 , 3
Lcd Lcd_stunde
Locate 1 , 1
Lcd " Timer "
Waitms 50
If Taster1 = 1 Then 'Uhr einstellen Minute
Waitms 50
Incr Minute
End If
If Taster2 = 1 Then 'Uhr einstellen Stunde
Waitms 50
Incr Stunde
End If
If Sekunde > 59 Then Minute = Minute - 1
'If Sekunde > 59 Then Sekunde = 59
'If Minute > 59 Then Stunde = Stunde - 1
'If Minute > 00 Then Minute = 50
'If Stunde > 0 Then Stunde = 23
Loop
'Submenu Timer
Takt:
If Timer_flag = 1 Then
Incr Sekunde
Timer1 = 3036
End If
Return
Start_timer:
Timer_flag = 1
Return
Klar ich könnte den Zähler incr laufen lassen (zus.Zähler vewenden ) dann -1 machen...