Bascom taster in code einfügen nur wie?

Thorsten_Sch

Mitglied
31. Okt. 2010
152
0
16
47
HH
Sprachen
  1. BascomAVR
Hallo Forum gemeinde und ein frohe sneues jahr 2016

ich möchte einen 7segment zähler mit 1 stelle also 0-9 Zählen, den code der zählt hab ich ja schon
aber ich wüste nicht wo ich da den taster einfüge und ob es jetzt richtig ist.....

Hier der code


CodeBox BascomAVR
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Config Portd.0 = Input 
Portd.0 = 1
Taster Alias Pind.0

Config Portb = Output
Siebensegmentanzeige Alias Portb

Dim Ziffer As Byte
Dim Dezimalpunkt As Bit
Dim I As Byte


Do
If Taster = 1 Then For Ziffer = 0 To 9' so richtig??????
'For Ziffer = 0 To 9
  Gosub Anzeige
  Wait 1
Next Ziffer

Siebensegmentanzeige = 0
Wait 1

Ziffer = 0
Dezimalpunkt = 1
Gosub Anzeige
Wait 1

Siebensegmentanzeige = 0
Dezimalpunkt = 0
Wait 1

Loop
End


Anzeige:
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select
If Dezimalpunkt = 1 Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Return


es soll so funktionieren Taser oder kontakt wird geschlossen und zählt einen meher, und immer wieder von vohrne. bitte um rat

Mit Freundtlichen Grüßen
Thorsten Sch.
 
Hi, probier mal:


CodeBox BascomAVR
Do
If taster=1 then
Ziffer=ziffer+1
If ziffer>9 then ziffer=0
Gosub anzeigen
While taster=1
Wend
Endif
Loop
 
ähm hab das so gemacht


CodeBox BascomAVR
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Config Portd.0 = Input  'PD0 - Ein_1
Portd.0 = 1
Taster Alias Pind.0

Config Portb = Output
Siebensegmentanzeige Alias Portb

Dim Ziffer As Byte
Dim Dezimalpunkt As Bit
Dim I As Byte

Do
If Taster = 1 Then
Ziffer = Ziffer + 1
If Ziffer > 9 Then Ziffer = 0
Gosub Anzeige
While Taster = 1
Wend
End If




'Do
'For Ziffer = 0 To 9
'  Gosub Anzeige
'  Wait 1
'Next Ziffer

Siebensegmentanzeige = 0
Wait 1

Ziffer = 0
Dezimalpunkt = 1
Gosub Anzeige
Wait 1

Siebensegmentanzeige = 0
Dezimalpunkt = 0
Wait 1

Loop
End

Anzeige:
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select
If Dezimalpunkt = 1 Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Return


jetzt blink die 7segment anzeige und ne 1 kommt geht dann wieder auf 0 warum
 
Wenn du in jedem Durchlauf deiner do...loop 'Ziffer=0' schreibst, was erwartest du? Die Variable 'Ziffer' soll doch mit jedem Tastendruck weiter gezählt werden. 'Siebensegmentanzeige=0' ist auch kontraproduktiv, damit schaltest du deine Ausgabe ab.
Was willst du mit dem Dezimalpunkt machen? Soll der irgendwie blinken, oder was?
 
Ja hallo
Hab es jetzt weg gemacht uns es geht wunderbar....
CODE


CodeBox BascomAVR
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Config Portd.0 = Input  'PD0 - Ein_1
Portd.0 = 1
Taster Alias Pind.0

Config Portb = Output
Siebensegmentanzeige Alias Portb

Dim Ziffer As Byte
Dim Dezimalpunkt As Bit
Dim I As Byte

Do
If Taster = 1 Then
Ziffer = Ziffer + 1
If Ziffer > 9 Then Ziffer = 0
Gosub Anzeige
Waitms 40
While Taster = 1
Wend
End If

Loop
End

Anzeige:
Select Case Ziffer
  Case 0 : Siebensegmentanzeige = &B01111110
  Case 1 : Siebensegmentanzeige = &B00001100
  Case 2 : Siebensegmentanzeige = &B10110110
  Case 3 : Siebensegmentanzeige = &B10011110
  Case 4 : Siebensegmentanzeige = &B11001100
  Case 5 : Siebensegmentanzeige = &B11011010
  Case 6 : Siebensegmentanzeige = &B11111010
  Case 7 : Siebensegmentanzeige = &B00001110
  Case 8 : Siebensegmentanzeige = &B11111110
  Case 9 : Siebensegmentanzeige = &B11011110
End Select
If Dezimalpunkt = 1 Then Siebensegmentanzeige = Siebensegmentanzeige Or &B00000001
Return


mir ist noch was eingefallen würde es gern wie bei manchen ampel als runterzähler solange noch rot ist
hier der code


CodeBox BascomAVR
$regfile = "attiny13.dat"  'verwendeter Controller
$crystal = 1200000  'Taktfrequenz
$hwstack = 6  'Stackwerte und Framesize zuweisen
$swstack = 6
$framesize = 28

'==============================================================================
'Ausgänge / Eingänge deklarieren / Aliasvergabe
'------------------------------------------------------------------------------

Ddrb = &B11111  'Ganzer Port B als Ausgang

Led_rot Alias Portb.1  'Alias für rote Ampel- LED
Led_gelb Alias Portb.2  'Alias für gelbe Ampel- LED
Led_gruen Alias Portb.0  'Alias für grüne Ampel- LED
Warn_led_1 Alias Portb.4  'Alias für Warnlampe 1
Warn_led_2 Alias Portb.3  'Alias für Warnlampe 2

Dim I As Byte  'Zählvariable für die For- Next- Schleife

Do  'Schleifenanfang

  Led_rot = 1
  Wait 10
  Led_gelb = 1
  Waitms 1500
  Led_rot = 0
  Led_gelb = 0
  Led_gruen = 1
  Wait 5
  For I = 1 To 4
  Led_gruen = 1
  Waitms 500
  Led_gruen = 0
  Waitms 500
  Next I

  '=============================================================================
  'Weiter geht´s im normalen Ampelprogramm
  Led_gruen = 0
  Led_gelb = 1
  Wait 3
  Led_gelb = 0

Loop  'Zurück zu Do (Schleifenanfang)
'==============================================================================

End 


danke für die ratschläge
 
Dann wäre der erste Schritt das 'Aufwärtszählprogramm mit Tastendruck' in ein 'selbstlaufendes Abwärtszählprogramm' umzustricken. Wenn das läuft, ist das Einbinden in die Grünphase deines Ampelprogramms auch nicht schwer.
 

Ü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)