Tu das, schlaf dich erstmal aus, ich muss noch ein C# Programm für die Schule/Ausbildung schreiben, kann mich also noch net hinlegen
Gruß Hunni
Tu das, schlaf dich erstmal aus, ich muss noch ein C# Programm für die Schule/Ausbildung schreiben, kann mich also noch net hinlegen
Gruß Hunni
Hallo
Also vielen dank nochmal für die Hilfe.
Hier der Code:
Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Declare Sub Plussekunde() Declare Sub Plusminute() Declare Sub Plusstunde() Declare Sub Clockstart() Declare Sub Plustag() Declare Function Tastenabfrage() As Byte Dim I As Integer Dim N As Integer Dim Ton As Integer Dim Sekunde As Word Dim Minute As Word Dim Stunde As Word Dim Wochentag As String * 12 Dim Tag As Word Dim Taste As Byte Config Portc = Output Portc = 11111111 Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung Config Pina.7 = Input 'Für Tastenabfrage Porta.7 = 1 Tag = 1 Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Call Plussekunde Case 2 Call Plusminute Case 3 Call Plusstunde Case 4 Call Clockstart Case 5 Call Plustag End Select Sound Portd.7 , 400 , 500 'BEEP End If Waitms 100 If Sekunde = 60 Then Sekunde = 0 Minute = Minute + 1 Else End If If Minute = 60 Then Minute = 0 Stunde = Stunde + 1 Else End If If Stunde = 24 Then Stunde = 0 Tag = Tag + 1 End If If Tag > 7 Then Tag = 1 End If 'Select Case Tag 'Case 1 Wochentag = "Montag" 'Case 2 Wochentag = "Dienstag" 'Case 3 Wochentag = "Mittwoch" 'Case 4 Wochentag = "Donnerstag" 'Case 5 Wochentag = "Freitag" 'Case 6 Wochentag = "Samstag" 'Case 7 Wochentag = "Sonntag" 'Else Case 'End Select Select Case Tag Case 1 Wochentag = "Montag" Case 2 Wochentag = "Dienstag" Case 3 Wochentag = "Mittwoch" Case 4 Wochentag = "Donnerstag" Case 5 Wochentag = "Freitag" Case 6 Wochentag = "Samstag" Case 7 Wochentag = "Sonntag" End Select Loop End Function Tastenabfrage() As Byte Local Ws As Word Tastenabfrage = 0 Ton = 600 Start Adc Ws = Getadc(7) If Ws < 500 Then Select Case Ws Case 400 To 450 Tastenabfrage = 1 Ton = 550 Case 330 To 380 Tastenabfrage = 2 Ton = 500 Case 260 To 305 Tastenabfrage = 3 Ton = 450 Case 180 To 220 Tastenabfrage = 4 Ton = 400 Case 90 To 130 Tastenabfrage = 5 Ton = 350 End Select Sound Portd.7 , 400 , Ton End If End Function Sub Plussekunde() Sekunde = Sekunde + 1 Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Plusminute() Minute = Minute + 1 Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Plusstunde() Stunde = Stunde + 1 Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Plustag() Tag = Tag + 1 Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde End Sub Sub Clockstart() Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1 Enable Interrupts Enable Timer1 Sekunde = Sekunde + 1 ' + 1Sekunden für Timerausgleich On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1 Enable Interrupts Timer1 = 68570 'Timer1 soll schon von 34285 wegzählen End Sub Isr_von_timer1: 'ISR von Timer1 Timer1 = 68570 'Sound Portd.7 , 400 , 550 'Print "Stunde" ; Stunde ; " Minute:" ; Minute ; " Sekunde:" ; Sekunde Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde Sekunde = Sekunde + 1 Toggle Portc.0 Return
Ich werde mal sehen ob ich das noch besser hinbkomme.
Gibt es ausser der Bascom hilfe noch was wo das beschrieben wird?
Weil ich verstehe es immre besser wen's auf deutsch istt
Gruß Dominik
Halo
habe noch ein kleines problem.
Habe den code etwas benutzerfreundlicher gemacht.
Nur springt die Uhr jetzt nach dem einstellen am anfang immer auf den n#chsten tag (also ich stelle mittwoch 11:11:11 ein und sie springt auf donnerstag 11:11:12)
Vieleicht könnt ihr mir nochmal helfe?
Hier der Cide
Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Declare Sub Plussekunde() Declare Sub Plusminute() Declare Sub Plusstunde() Declare Sub Clockstart() Declare Sub Plustag() Declare Function Tastenabfrage() As Byte Dim I As Integer Dim N As Integer Dim Ton As Integer Dim Tag As Word Dim Taste As Byte Dim Wochentag As String * 12 Dim Stunde As Word Dim Minute As Word Dim Sekunde As Word Tag = 2 Config Portc = Output Portc = 11111111 Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung Config Pina.7 = Input 'Für Tastenabfrage Porta.7 = 1 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP Wait 1 Print Print "Zeitschaltuhr -Test" Print Wait 1 Print Print "Bitte Uhrzeit und Wochentag einstellen!" Print Wait 1 Print Print "Bitte Wochentag eingeben" Print Wait 1 Print "Anleitung:" Print "Wochentag einstellen: Taste-1" Print "OK: Taste-5" Wait 1 Print Print "Aktueller Tag:" Print "Montag" Do Select Case Tag Case 1 Wochentag = "Montag" Case 2 Wochentag = "Dienstag" Case 3 Wochentag = "Mittwoch" Case 4 Wochentag = "Donnerstag" Case 5 Wochentag = "Freitag" Case 6 Wochentag = "Samstag" Case 7 Wochentag = "Sonntag" Case 8 Wochentag = "Montag" End Select If Tag > 7 Then Tag = 1 End If Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Tag = Tag + 1 Waitms 200 Print Wochentag Case 5 Exit Do End Select Sound Portd.7 , 400 , 500 'BEEP End If Loop Sound Portd.7 , 400 , 500 'BEEP Print Print "Bitte Uhrzeit einstellen" Wait 1 Print Print "Anleitung:" Print "Stunden einstellen : Taste-1" Print "Minuten einstellen : Taste-2" Print "Sekunden einstellen: Taste-3" Print "OK : Tase-5" Wait 1 Print Print "Akutelle Zeit:" Print "0:0:0" Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Stunde = Stunde + 1 Waitms 50 Print Stunde ; ":" ; Minute ; ":" ; Sekunde: Case 2 Minute = Minute + 1 Waitms 50 Print Stunde ; ":" ; Minute ; ":" ; Sekunde Case 3 Sekunde = Sekunde + 1 Waitms 50 Print Stunde ; ":" ; Minute ; ":" ; Sekunde Case 5 Exit Do End Select Sound Portd.7 , 400 , 500 'BEEP End If If Sekunde = 60 Then Sekunde = 0 End If If Minute = 60 Then Minute = 0 End If If Stunde = 24 Then Stunde = 0 End If Loop Sound Portd.7 , 400 , 500 'BEEP Config Timer1 = Timer , Prescale = 256 'Konfiguriere Timer1 Enable Interrupts Enable Timer1 Sekunde = Sekunde + 1 ' + 1Sekunden für Timerausgleich On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1 Enable Interrupts Timer1 = 68570 'Timer1 soll schon von 34285 wegzählen Do If Sekunde = 60 Then Sekunde = 0 Minute = Minute + 1 Else End If If Minute = 60 Then Minute = 0 Stunde = Stunde + 1 Else End If If Stunde = 24 Then Stunde = 0 Tag = Tag + 1 End If If Tag > 7 Then Tag = 1 End If Select Case Tag Case 1 Wochentag = "Montag" Case 2 Wochentag = "Dienstag" Case 3 Wochentag = "Mittwoch" Case 4 Wochentag = "Donnerstag" Case 5 Wochentag = "Freitag" Case 6 Wochentag = "Samstag" Case 7 Wochentag = "Sonntag" End Select Loop End Function Tastenabfrage() As Byte Local Ws As Word Tastenabfrage = 0 Ton = 600 Start Adc Ws = Getadc(7) If Ws < 500 Then Select Case Ws Case 400 To 450 Tastenabfrage = 1 Ton = 550 Case 330 To 380 Tastenabfrage = 2 Ton = 500 Case 260 To 305 Tastenabfrage = 3 Ton = 450 Case 180 To 220 Tastenabfrage = 4 Ton = 400 Case 90 To 130 Tastenabfrage = 5 Ton = 350 End Select Sound Portd.7 , 400 , Ton End If End Function Isr_von_timer1: 'ISR von Timer1 Timer1 = 68570 'Sound Portd.7 , 400 , 550 Print Wochentag ; ", " ; Stunde ; ":" ; Minute ; ":" ; Sekunde Sekunde = Sekunde + 1 Toggle Portc.0 Return
also ich bin mir nicht ganz sicher, aber du machst zuerst:
und dann erst fragste die taster ab.Code:Select Case Tag Case 1 Wochentag = "Montag" Case 2 Wochentag = "Dienstag" Case 3 Wochentag = "Mittwoch" Case 4 Wochentag = "Donnerstag" Case 5 Wochentag = "Freitag" Case 6 Wochentag = "Samstag" Case 7 Wochentag = "Sonntag" Case 8 Wochentag = "Montag" End Select
So drückst du im prinzip einmal zu viel drauf. Vielleicht solltest du zuerst die Taster abfragen und dann schreiben, welcher Tag das is.Code:Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Tag = Tag + 1 Waitms 200 Print Wochentag Case 5 Exit Do End Select
Gruß Hunni
hi
also ich habe doch erst den oberen teil und dann den unteren. mit dem unteren muss ich sehen wie ich das löse, weiss noch nicht wie ich das machen soll
So, habe jetzt einfach etwas vertauscht:
Select Case Tag
Case 1
Wochentag = "Dienstag"
Case 2
Wochentag = "Mittwoch"
Case 3
Wochentag = "Donnerstag"
Case 4
Wochentag = "Freitag"
Case 5
Wochentag = "Samstag"
Case 6
Wochentag = "Sonntag"
Case 7
Wochentag = "Montag"
Case 8
Wochentag = "Dienstag"
End Select
was besseres fällt mir momentan nicht ein, bei stunde, minute und sekunde läuftsja supper, nur bei tag nicht
aber jetzt gehts ja
mhh, ansonsten probier mal das:
Code:Case 1 Wochentag = "Montag" Case 2 Wochentag = "Dienstag" Case 3 Wochentag = "Mittwoch" Case 4 Wochentag = "Donnerstag" Case 5 Wochentag = "Freitag" Case 6 Wochentag = "Samstag" Case 7 Wochentag = "Sonntag" Case Else : tag= 1 End Select
bringt nichts
immer noch ein tag zuviel, das andere ist halt gefuscht![]()
mhh..... komisch..... leider kann ich dir jetzt auch net den code ganz neu schreiben, da ich im augenblick gerade etwas viel mit der schule zu tun hab.
Versuch einfach nochmal den Code neuzuschreiben, ohne den alten anzugucken, so mach ich das auch manchmal, wenns net hilft.
Ansonsten müsstest du gucken, ob du deinen Taster entprellt hast, aber daran kann das eig net liegen.
Gruß Hunni
Lesezeichen