Habe hier mal versucht ein Programm zu schreiben dort kann man mit einer Taste vordefinierte Werte auswählen die dann mit einem eingang in einserschritten wieder runtergezählt werden sollen. Leider wenn ich aus dem Programmteil zur Auswahl zurückspringe in die Hauptschleife wird mir der ausgewählt Wert wieder auf Null gesetzt! Bin schon fast die ganze Woche bei dem Problem habe schon überall gesucht ob ich einen Fehler gemacht habe aber auch das WWW gibt mir keine Information darüber! Vieleicht kann mal einer der Experten für Bascom da rüber schauen und mir sagen wo der Fehler liegt!
Ich hoffe das ich hier nicht den falschen Berreich für meine Frage erwischt habe, wahr leider sehr lange nicht mehr hier im Forum. Wenn ich doch versehentlich falsch gelandet bin Bitte ich um Nachsicht und wenn möglich um Information wo ich dann richtig währe.
Anzeige mit Zweistelliger 7Segment Anzeige, Funktioniert auch soweit ganz gut inklusive der Abschaltung nur die Vorwahl der Variable "Zahl" wird mir immer wieder auf Null zurückgesetzt was nicht dem Zweck entspricht!
Währe sehr freundlich wenn sich das mal jemand anschaut.
CodeBox BascomAVR
Währe für Hilfe sehr Dankbar !!
;-)
_
TR5
Ich hoffe das ich hier nicht den falschen Berreich für meine Frage erwischt habe, wahr leider sehr lange nicht mehr hier im Forum. Wenn ich doch versehentlich falsch gelandet bin Bitte ich um Nachsicht und wenn möglich um Information wo ich dann richtig währe.
Anzeige mit Zweistelliger 7Segment Anzeige, Funktioniert auch soweit ganz gut inklusive der Abschaltung nur die Vorwahl der Variable "Zahl" wird mir immer wieder auf Null zurückgesetzt was nicht dem Zweck entspricht!
Währe sehr freundlich wenn sich das mal jemand anschaut.
CodeBox BascomAVR
$regfile = "m8Adef.dat" $crystal = 8000000 'the internal oscillator of 8 Mhz was choosen in the fusebits Osccal = &HAE $hwstack = 32 ' default use 32 for the hardware stack $swstack = 40 ' default use 10 for the SW stack $framesize = 40 'An den Ports B.0 , B.1 und B.2 je 10k Ohm Pullup Config Portc = Output Config Portd = Output 'Siebensegmentanzeige Siebensegment_kathoden Alias Portd ' kathoden Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Input 'Siebensegmentanzeige 2 Stellig Config Pinb.3 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Pinb.6 = Output Config Pinb.7 = Output Config Debounce = 100 ' Debounce absichtlich etwas grösser gewählt ' anoden ' Timer fuer Multiplex Config Timer0 = Timer , Prescale = 64 On Timer0 Anzeige Const Timervorgabe_0 = 131 ' 200 Hz / 4 Anzeigen = 50 Hz pro Anzeige ' Timer fuer Sekunden-Takt Config Timer1 = Timer , Prescale = 1024 On Timer1 Zeittimer Const Timervorgabe_1 = 3125 ' Teimer passen hier noch nicht genau !!!! Enable Timer0 Enable Timer1 Enable Interrupts Speaker Alias Portb.5 Dim Ziffer As Byte 'Ziffer = 0 Dim Zaehler As Byte 'Zaehler = 0 Dim Zahl As Byte 'Zahl = 0 Dim Zahl_temp As Byte 'Zahl_temp = 0 Dim Einer As Byte 'Einer = 0 Dim Zehner As Byte 'Zehner = 0 Dim Stelle As Byte 'Stelle = 0 Dim Anzahl As Byte 'Anzahl = 0 Dim Auswahl As Byte 'Auswahl = 0 Do Debounce Pinb.0 , 0 , Press ', Sub 'Springe nach Press: wenn B.0 null ist (Taste1) Debounce Pinb.1 , 0 , Press2 , Sub ' 'Springe nach Press2: wenn B.1 null ist (Taste2) Debounce Pinb.2 , 0 , Press3 ', Sub 'Springe nach Press3: wenn B.2 null ist (Taste3) Loop End Press: ' Vorgesehen für weitere Optionen Toggle Portc.0 Sound Speaker , 400 , 50 Return Press2: Anzahl = Anzahl + 1 Select Case Anzahl Case 1 : Auswahl = 8 Case 2 : Auswahl = 13 'Auswahl der Zahl Case 3 : Auswahl = 22 Case 4 : Auswahl = 45 Case 5 : Auswahl = 65 Case 6 : Auswahl = 76 Case 7 : Auswahl = 82 End Select Zahl = Auswahl If Anzahl = 7 Then Anzahl = 0 Toggle Portc.2 ' Toggle Portc.2 zur kontrolle Sound Speaker , 400 , 25 ' Pipton zur kontrolle 'Wait 2 Return Press3: Toggle Portc.1 'Portc.1 Togglen zur kontrolle Sound Speaker , 400 , 25 'Pipton zur kontrolle Decr Zahl 'Zahl um 1 Decrementieren Return Anzeige: Timer0 = Timervorgabe_0 Zahl_temp = Zahl '1234 Einer = Zahl_temp Mod 10 '4 Zahl_temp = Zahl_temp - Einer '1230 Zahl_temp = Zahl_temp / 10 '123 Zehner = Zahl_temp Mod 10 '3 Zahl_temp = Zahl_temp - Zehner '120 Zahl_temp = Zahl_temp / 10 '12 If Stelle < 2 Then Incr Stelle Else Stelle = 1 End If If Stelle = 1 Then Ziffer = Einer If Stelle = 2 Then Ziffer = Zehner Portb.6 = 0 Portb.7 = 0 Select Case Ziffer ' gfedcba dp Case 0 : Siebensegment_kathoden = &B01000000 ' auswahl des Bitmusters für 7Segment Case 1 : Siebensegment_kathoden = &B01111001 Case 2 : Siebensegment_kathoden = &B00100100 Case 3 : Siebensegment_kathoden = &B00110000 Case 4 : Siebensegment_kathoden = &B00011001 Case 5 : Siebensegment_kathoden = &B00010010 Case 6 : Siebensegment_kathoden = &B00000010 Case 7 : Siebensegment_kathoden = &B01111000 Case 8 : Siebensegment_kathoden = &B00000000 Case 9 : Siebensegment_kathoden = &B00010000 End Select If Stelle = 1 Then Portb.6 = 1 ' Auswahl der Stelle If Stelle = 2 Then Portb.7 = 1 Return Zeittimer: ' Soll nach einer Zeit abschalten wenn nichts passiert weil Batteriebetrieb Incr Zaehler ' Wert der Abschaltung zum Test nur auf 10 gesetzt! 'If Zahl = 98 Then If Zaehler = 10 Then Goto Ende End If Return Ende: ' Abschalten aller Ports Interrups und Timer Disable Interrupts Stop Timer0 Stop Timer1 Sound Speaker , 1200 , 300 ' Pipton zur Akustischen Wahrnehmung der Abschaltung Portb = 0 ' rückholung mit absicht nur mit Reset Portc = 0 Portd = 0 Idle ' Zur Ennergieersparniss in den Idle-Mod wechseln End
Währe für Hilfe sehr Dankbar !!
;-)
_
TR5
Zuletzt bearbeitet: