PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konfiguration eines Keyboards???



EDatabaseError
06.07.2005, 17:39
Ich find im ganzen Web keine Beschreibung zu der Konfiguration eines Keyboard. Kann mir da bitte jemand helfen?

Ich habe ein Keyboard 4x4 Matrix an Portb.

Danke schon mal im Vorraus!

Andree-HB
06.07.2005, 18:39
...guck einfach in die Hilfe von Bascom und suche nach "Matrix", da steht alles weitere...

EDatabaseError
06.07.2005, 19:27
Gibts die Hilfe au in deutsch???

Ich versteh die Zahlen nicht 16 bei nichts und 19... Keine Ahnung!

Mein Programm sicht z.Zt so aus:


'####################ALARMANLAGEV1.0############## ######'
'Copyright: Tobias Hocke || 05.07.2005 - 06.07.2005 '
'################################################# ######'

$regfile = "m8def.dat" 'ATmega8
$crystal = 10000000 '10 MHz

Config Portb = Input 'Keyboard
Config Portd = Input 'Sensoren bei Alarm Aktoren

Config Lcdpin = Pin , E = Portc.0 , E2 = Portc.1 , Rs = Portc.2 , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6
Config Lcd = 16 * 2

Config Kbd = Portb

Declare Sub Pause(byval D As Word)
Declare Sub Tastatur()
Declare Sub Funktion_taste()

Dim Akttaste As Word
Dim ___lcdno As Bit

Dim B As Byte

Deflcdchar 0 , 4 , 14 , 14 , 14 , 14 , 14 , 31 , 4
Deflcdchar 1 , 32 , 32 , 1 , 2 , 20 , 8 , 32 , 32
Deflcdchar 2 , 32 , 17 , 27 , 14 , 14 , 27 , 17 , 32
Deflcdchar 3 , 4 , 14 , 31 , 14 , 4 , 12 , 4 , 28

'Hauptprogramm
Do
B = Getkbd()
Print B
Call Tastatur()
Call Funktion_taste()
Lcd Akttaste
Lcd 0
Lcd 1
Lcd 2
Lcd 3
Lcd B
Lcd "geht"
Call Pause(10)
Loop

'Prozeduren
Sub Pause(byval D As Word)
Dim I As Word
For I = 0 To D
nop
Next I
End Sub

sebastian.heyn
06.07.2005, 20:02
Hallo, Ich hatte mal in bascom eine 3x4 matrix ansteuerung selbst geschrieben, ich kann mal schauen, wo ich den code hin habe aber im prinzip ging es so:

x1-4 ->Portb (output)

y1-4 ->portd (input)
(du kannst die ports natürlich auch anders belegen zb portb0-3 in und portb4-7 output - whatever)

die input ports ziehst du mit 10k gegen masse
dann setzt du alle ausgänge auf high und fragst die eingangsports regelmäßig auf high status ab. ist einer der vier eingänge high dann springst du in eine keyboard-sub wo du folgendes machst:

x1 high x2,x3,x4 auf low

wenn y1=1 dann button=1
wenn y1=2 dann button=4
wenn y1=3 dann button=7
wenn y1=4 dann button=*

danach X2 high alle andern low
wenn y1=1 dann button=2
wenn y1=2 dann button=5
wenn y1=3 dann button=8
wenn y1=4 dann button=0

und so weiter.
am ende wartest du noch bis die taste losgelassen wird, so daß du nicht immer fortlaufend die zahlen bekommst...

Falls bascom sowas schon haben sollte, dann kannst du das natürlich vergessen!

EDatabaseError
06.07.2005, 20:05
ja sowas hab ich auch geschrieben if.....

aber das geht mit bascom auch ohne soo verschachtlungen...

aber wie man dann den Satus ausliest keine Ahnung!

sebastian.heyn
06.07.2005, 20:14
vorher alias festlegen
y1 alias pind.0

und dann if y1=1 or y2=1 or y3=1 or y4=1 then gosub keyboardread

EDatabaseError
06.07.2005, 20:21
und ich bin leider [nicht sehr erfahrenb und progremmiere erst seit einer Woche BASCOM]

Wo legt man diesen Alias fest?

sebastian.heyn
07.07.2005, 07:52
MMHH. also im deklarationsteil, wo du auch deine variablen festlegst...
der genaue syntax ist auch in der hilfe von bascom nochmal näher erläutert

EDatabaseError
07.07.2005, 16:42
:( leider nur in englisch. gibts des net au in deutsch???