GetKBD() simulieren

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • GetKBD() simulieren

      Lt. Bascomhilfe soll es möglich sein, die Funktion getKBD() zu simulieren.
      Dazu muss man wohl, bevor man die Funktion ausführt, im Hardware-Simulations-Fenster (da wo auch Display und IO angezeigt werden) eine der Tasten (Ziffernblock) anklicken.

      Bei mir kommt da aber immer 16, das dem nicht gedrückten Zustand entspricht.

      Hat das schon mal jemand ausprobiert?
      Was muss man da beim Simulieren beachten?

      Hier wird das fast ganz unten beschrieben: Bascomhilfe
      Kaum macht man es richtig - und schon geht's!
    • Ja, $Sim ist drin.

      Im Simulator habe ich einen Haltepunkt in der Zeile mit getKBD gesetzt.
      Dann klicke ich die Ziffer und dann steppe ich weiter.
      Rückgabewert von getKBD = 16, egal was ich klicke.

      Hier noch das Programm

      BASCOM Source Code

      1. $Regfile = "m16def.dat"
      2. $HWStack = 40
      3. $SWStack = 30
      4. $Framesize = 40
      5. $Crystal = 8000000
      6. $Baud = 9600
      7. Config SubMode = New
      8. $Sim
      9. Config Kbd = PortA , Cols = 3
      10. Dim Taste as Byte
      11. Do
      12. Taste = getKBD()
      13. Print Taste
      14. Loop
      Display All
      Und ich habe die Version 2.0.8.1
      Kaum macht man es richtig - und schon geht's!

      The post was edited 2 times, last by Mitch64 ().

    • Vielen Dank für die Vorschläge mit einem Keypad kaufen.

      Aber das geht ja am voll Ziel vorbei.

      Mir gings ja nur drum, wie das funktioniert, diesen Tastenblock wie im Post #1 gezeigt auszuprobieren.

      Und manchmal ist eine Simulation vielleicht doch nützlich, wenn sie denn funktionieren würde.
      Und sei es nur, um etwas zu zeigen. Damit braucht der, der das auch mal testen möchte
      nicht auch gleich ein Keypad zu besorgen.

      Aber wenns nicht funktioniert, dann gehts eben nicht.
      Kaum macht man es richtig - und schon geht's!
    • Ich hab hier nen 44 auf m Tisch. Das :

      Source Code

      1. $regfile = "attiny84.dat"
      2. $crystal = 8000000
      3. $hwstack=40
      4. $swstack = 32
      5. $framesize = 32
      6. Config Base = 0
      7. 'a0=aref a1= a2= a3=
      8. 'a4=Scl a5=Mi/oc1b a6=Mo/oc1a/Sda 7=oc0b
      9. 'b0= b1= b2=oc0a/clk0 b4=/R
      10. Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Portb.1 , Rs = Portb.0
      11. Config Lcd = 16 * 2 'R/W pin muss auf Gnd liegen
      12. Initlcd
      13. Cursor Off Noblink
      14. Cls
      15. Lcd "Taste : "
      16. Lowerline
      17. Lcd "Loop : "
      18. Config Kbd = Porta , Cols = 3
      19. Dim Taste As Byte , Lauf As Word
      20. Do
      21. Taste = Getkbd()
      22. If Taste < 16 Then
      23. Ddra = $ff
      24. Locate 1 , 7
      25. Lcd Taste
      26. Locate 2 , 7
      27. Lcd Lauf
      28. Ddra = 0
      29. End If
      30. Waitms 10
      31. Incr Lauf
      32. Loop
      33. End
      Display All
      funktioniert. (Natürlich schreddert der Kurzschluß (Tastensimulation durch Büroklammer) das LCD aber es lassen sich verschiedene Tastenwerte generieren - Nicht nur 0,4,8) In der Realität gehts also.
    • Probiert halt mal das Beispiel aus der Hilfe. avrhelp.mcselec.com/config_kbd.htm
      Da wird ja auch erwähnt, wie das zu simulieren ist, und dann sollte es auch gehen. Und wenn nicht, dann halt nicht. Ich bin auch mehr der hw-Typ und verwende den Simulator hauptsächlich nur um Laufzeiten zu messen und so Kleinscheixx. Also hält sich meine Kritik, wenn es nicht gehen sollte, in Grenzen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch wrote:

      Probiert halt mal das Beispiel aus der Hilfe
      Hab ich gemach. Bringt leider das gleiche Ergebnis wie mein Programm. Taste ist immer 16.
      Hätte mich auch gewundert, wenn's anders sein sollte. In der HS steht ja auch nur Tste=getKBD und dann ein Print Taste.


      Pluto25 wrote:

      Ich hab hier nen 44 auf m Tisch
      Was ist das? Ein Sportwagen Baujahr 1944? Oder soll das der Controller sein? Mega 44? Tiny 44?
      Mein Mofa hat glaube ich 44 ccm Hubraum (viele Ablagerungen und ne tote Maus im Verbrennungsraum). - Egal

      Dass es in der Realität mit richtigen Tasten funktioniert, hat ja niemand angezweifelt.
      Ich wollte ja nur mal die Tasten wie im Post #1 angegeben ausprobieren. Und das geht eben nicht mit realen Tasten.

      An der Stelle brauchen wir auch nicht weiter zu diskutieren.
      Es geht halt nicht mit der Simulation.
      Kein Beinbruch, aber auch nicht toll, weil's eben in der Hilfe anders steht.
      Kaum macht man es richtig - und schon geht's!
    • Im Hilfebeispiel war jetzt cols auf default 4 gesetzt, das war der Unterschied zum Programm aus #3. Hätte ja sein können, dass es nur mit cols=4 funktioniert. Wenn jetzt code aus der Hilfe nicht so funktioniert, wie es da drin steht, hm, dann ist es nicht sehr hilfreich, wie @Mitch64 auch schon bemerkte.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------