home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 April / CHIP4_98.ISO / software / ccconrad / basic.exe / CHIP / Programme.Bas / App-Board / keyb4.bas < prev    next >
Encoding:
BASIC Source File  |  1997-06-16  |  2.7 KB  |  132 lines

  1. '********************************************************************
  2. '
  3. ' C-Control/BASIC       KEYB4.BAS
  4. '
  5. ' Systemvoraussetzungen:
  6. '
  7. ' - Application Board mit angeschlossener Tastatur
  8. ' - serielle Verbindung zum PC
  9. ' - Terminalprogramm
  10. '
  11. ' Schwerpunkt:
  12. '
  13. ' - Eingeben von Zahlenwerten
  14. '
  15. '********************************************************************
  16.  
  17. define value word
  18. define neg byte
  19.  
  20. define key_nr byte
  21. define compare byte
  22. define key_ascii byte
  23.  
  24. define keyboard ad[8]
  25.  
  26.  
  27. ' die Reihenfolge der Tasten auf dem Keyboard
  28. define KEY_ASTERIX 0
  29. define KEY_7       1
  30. define KEY_4       2
  31. define KEY_1       3
  32. define KEY_0       4
  33. define KEY_8       5
  34. define KEY_5       6
  35. define KEY_2       7
  36. define KEY_CROSS   8
  37. define KEY_9       9
  38. define KEY_6       10
  39. define KEY_3       11
  40.  
  41.  
  42. ' --- Initialisierung ---
  43.  
  44.   value = 0
  45.   neg = 0
  46.  
  47. ' --- Tastaturabfrageschleife ---
  48.  
  49. #LOOP
  50.  
  51. ' anhand einer Tabelle werden die vom A/D-Wandler gemessenen
  52. ' Spannungswerte einer Taste zugeordnet, dabei wird eine
  53. ' Toleranz von +- 3 zugelassen, um Widerstandstoleranzen
  54. ' zu kompensieren
  55.  
  56.   for key_nr = 0 to 11
  57.     looktab keycodes, key_nr, compare
  58.     if abs(keyboard-compare) < 3 then gosub HANDLE_KEY
  59.   next
  60.  
  61. 'kleine Pause
  62.   pause 10
  63.  
  64. ' Endlosschleife
  65. goto LOOP
  66.  
  67. ' --- Vergleichstabelle mit Werten, die mit keyb1.bas ermittelt wurden ---
  68.  
  69. ' sollten die von Ihnen festgestellten Tasten-A/D-Werte von dieser Tabelle
  70. ' etwas abweichen, so ist das normal und durch die Widerstandstoleranzen
  71. ' begruendet
  72.  
  73. table keycodes
  74.   0 23 46 68
  75.   90 111 132 152
  76.   173 193 214 235
  77. tabend
  78.  
  79.  
  80. ' --- Zuordnung von ASCII-Codes fuer die Tasten aus einer Tabelle und Ausgabe ---
  81.  
  82. ' Achten Sie auf die hier implementierten Sonderfunktionen
  83. ' der Tasten # und * sowie auf das Setzten des negativen
  84. ' Vorzeichens durch Druecken der 0 vor der eigentlichen Eingabe
  85.  
  86. #HANDLE_KEY
  87.   if key_nr = KEY_0 and value = 0 then goto NEGATIVE
  88.   if key_nr = KEY_ASTERIX then goto BACKSPACE
  89.   if key_nr = KEY_CROSS then goto NEWLINE
  90.  
  91.   ' die Eingabe auf den Wertebereich -32000 bis 32000 begrenzen
  92.   if abs(value) > 3200 then goto ERRORBEEP
  93.   looktab asciicodes, key_nr, key_ascii
  94.  
  95.   value = value * 10 + key_ascii - 48
  96.   put key_ascii
  97. return
  98.  
  99. ' negatives Vorzeichen
  100. #NEGATIVE
  101.   neg = not neg
  102.   print "-";
  103. return
  104.  
  105. ' Loeschen des zuletzt eingegebenen Zeichens
  106. #BACKSPACE
  107.   if value = 0 then neg = not neg
  108.   value = value / 10
  109.   put 8
  110.   put 32
  111.   put 8
  112. return
  113.  
  114. ' Eingabe abschliessen
  115. #NEWLINE
  116.   print
  117.   if neg then value = -value
  118.   print "Sie haben "; value; " eingegeben"
  119.   value = 0
  120.   neg = 0
  121. return
  122.  
  123. #ERRORBEEP
  124.   beep 100,10,0
  125. return
  126.  
  127. table asciicodes
  128.   8 55 52 49
  129.   48 56 53 50
  130.   10 57 54 51
  131. tabend
  132.