Könntest du das bei der einen Datei mal in eine S19-Datei umwandeln, ich habs nämlich nciht so ganz kappiert, wäre echt super.
Hier schonmal der ASM-Code
Code:
; Scancode AT-Tastatur
; Author Martin Kaup (kaup@nettypes.de)
; nettypes GmbH
; Datum 08.04.2002
; Code ist frei verfügbar, und dient als Beispiel
; Ein Scancode besteht aus 11 seriellen bits.
; 1. Startbit 2.-9. Datenbits, Paritybit und Stopbit
; Scancode (22) 00010110 zB. entspricht der Taste 1 (nicht in NUM-Block!)
; Es gibt Tasten (zB. Entf, Ende, Bild hoch etc., die senden zwei Codes. 1. den ESC-Code 224(dezimal) und dann den
; Tastencode 112(dezimal) bei der Taste Einfg.
; Die Tastatur übermittelt auch noch ob eine entsprechende Taste losgelassen wurde mit dem Code 240(dezimal).
; Bsp. Die Taste 1 (nicht in NUM-Block!)
; Ein einzelner Anschlag besteht also aus 33 Takten. Tastencode - Taste wurde losgelassen - Tastencode.
; Es sei denn, es wurde eine 'ESC'-Taste gedrückt - dann liegen uns 55 Takte vor.
; Also: LS MS
; BitNr.: 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11
; BitArt: S|D0|D1|D2|D3|D4|D5|D6|D7| P| s S=Startbit, Dn=Datenbits, P=Paritybit ODD, s=Stopbit
; S| 0| 1| 1| 0| 1| 0| 0| 0| P| sS| 0| 0| 0| 0| 1| 1| 1| 1| P| sS| 0| 1| 1| 0| 1| 0| 0| 0| P| s
; Weitere Details bitte dem Code entnehmen, oder per E-Mail.
; Die Anschlüsse der Tastatur, Clock und Data liegen an 0,01 und 1,01 Data.
; Die Daten liegen mit fallender Flanke der Clock an. Beide Signale sind low-aktiv.
; Das Ergebnis des Scancode liegt in ERG (A4) vor.
; Ein Umsetzung der Scancodes in ASCII ist noch im Basic nötig.
; Scancode:ASCII:Zeichen
; 22:49:1 30:50:2 38:51:3 37:52:4 ...etc.
; Nächster Schritt wird sein, da es sich beim AT-Keyboard um ein bidirektionales Protokoll handelt, die LED's
; und weitere "Setup"-Funktionen (Delay,Repeat...) zu aktivieren.
; Der Code erhebt kein Anspruch auf Vollständigkeit oder Funktion. Mir ging es nur um die Möglichkeit eine preiswerte
; Lösung zur Ansteuerung von Relais mit einer Tastatur zu haben.
; Der Code als solcher lässt sich bestimmt noch Optimieren, aber ich hab's mit Assembler nicht so.
; Ich habe auf die 'ESC'-Sequenz der 'ESC'-Tasten verzichtet. Ich hoffe nur, dass es keine Normal-Codes mit gleichen
; Codes gibt, so dass es notwendig wird die ESC-Sequenzen mit Auzuwerten, denn der Code ist mit 80 Sys-Bytes
; noch entschieden zu gross.
; Viel Spass mit den Scancodes
; Martin Kaup im April 2002 :-}
porta equ $00
portb equ $01
ddrb equ $05
A1 equ $A1
A2 equ $A2
A3 equ $A3
ERG equ $A4
org $101
sei ; Interrupts Maskieren, damit wir die grüne LED behalten!
; bclr 0,ddrb ; bit0 auf portb als Eingang (CLock)
; bclr 1,ddrb ; bit1 auf portb als Eingang (Data)
ldx #9 ; 1. bit ist Startbit, es folgen 8 Datenbit
jsr read1
sta A1 ; letzten 8bit in A1
ldx #3 ; 1. bit ist 2. bit ist Stopbit, 2. es folgen 8 Datenbit
jsr read1
ldx #8
jsr read1
sta A2
ldx #3
jsr read1
ldx #8
jsr read1
sta A3
lda #!240
cmp A1
beq SCistA2
cmp A2
beq SCistA3
lda #!224
cmp A1
beq SCistA2
lda A1
cmp A2
beq SCistA2
rts
SCistA2
lda A2
bra raus
SCistA3
lda A3
bra raus
raus
sta ERG
rts
read1 brclr 0,portb,read1
read2 brset 0,portb,read2
brset 1,portb,w1 ; 8 mal Databit = Databyte
w1 rora
decx
bne read1
rts
Wenn ich das richtig sehe, ist der erste Teil sowiso nciht entscheidend.
MFG Moritz
Lesezeichen