-
ps2-tastatur am 644p....
hallo, ich habe eine ps2-tastatur am 644p.
funktioniert auch.
wer kann mir das gedöns von den datazeilen mal erklären.
ich kann es nicht enziffern, was das bedeuten kann.
gruss
Code:
$regfile = "m644pdef.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Keyboard = Pind.2 , Data = Pind.4 , Keydata = Keydata
Dim S As String * 12
Dim B As Byte
$serialinput = Kbdinput
Print "hello"
Do
B = Getatkbd()
If B > 0 Then
Print B ; Chr(b)
End If
Loop
End
Kbdinput:
$asm
push r16 ; save used register
push r25
push r26
push r27
Kbdinput1:
rCall _getatkbd ; call the function
tst r24 ; check for zero
breq Kbdinput1 ; yes so try again
pop r27 ; we got a valid key so restore registers
pop r26
pop r25
pop r16
$end Asm
Return
B = Getatkbd()
Keydata:
'normal keys lower case
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
'shifted keys UPPER case
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
-
noch ein programm von hier :
http://www.rn-wissen.de/index.php/PS/2_-_Schnittstelle
ich muss hier ja für den 644p das gimsk ersetzen mit eimsk ("push r0:in r0,eimsk:push r0:disable int1 ) und dieses ( pop r0:!out eimsk,r0:pop r0)
es werden nicht die tastendrücke angegeben, die ich drücke sondern ganz andere, die vom zahlenwert her nicht annähernd hinkommen.
woran liegt der fehler in diesem bascom-musterprogramm?
gruss
-
Ich betreibe eine PS/2-Tastatatur an einem Atmega8 in BASCOM und muss
ehrlich gesagt erwähnen, dass ich die Routine dafür auch im wesentlichen
abgeschrieben habe, obwohl sie anders etwas aussieht, als bei Dir.
Du und ich können erstmal sagen, dass es funktioniert. Das Wichtigste!
Genau erschliesst sich mir die Funktion auch nicht, jedoch kann ich nur
soviel sagen, dass der Tastaturcode GANZ ANDERS ist, als der ASC-Code,
so dass eine Codewandlung gemacht werden muss, die dann in den
DATA-Zeilen abgelegt ist. Hoffentlich sind meine Ausführungen richtig,
ich denke hier gibts bestimmt Jemanden, der das gut ergänzen könnte.
VG Micha