PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler PS/2 Schnittstelle Problem



sirbaros
30.05.2007, 06:40
Hallo,
ich möchte gerne eine ps/2 schnittstelle für eine tastatur programmieren.
dazu muss ich sie wie folgt programmieren!!

kann mir jemand da weiterhelfen wie ich das mit assembler machen muss??

vielen dank!!

http://de.wikipedia.org/wiki/PS/2-Schnittstelle


1. Im Einschaltmoment des Computers werden Clock und Data vom PC auf Low gezogen. Die Tastatur erkennt dieses und macht einen Selbsttest (basic assurance test).
2. Nachdem die Software im PC eine Initialisierung (Grundeinstellung aller nötigen Peripherie-Bausteine) vorgenommen hat, wird zunächst Data nicht mehr vom PC auf low gezogen. Ist der PC nun bereit zum Empfang, wird auch Clock deaktiviert und geht durch den Pullupwiderstand auf high.
3. Da nun Clock und Data high sind, kann die Tastatur Daten schicken. Die Pause dieses Zustandes ist hier aus Platzgründen verkürzt dargestellt.
4. Zuerst zieht die Tastatur Data auf low (Startbit), um den Beginn eines zu übertragenden Bytes zu kennzeichnen. Danach wird von der Tastatur Clock für eine Weile auf low gezogen.
5. Auf gleiche Art und Weise werden die folgenden Datenbits D0...D7, odd Parity und Stopbit (Data = 1) übertragen. In dem Beispiel ist D7...D0 = 1010 1010 welches $AA = BAT entspricht. Da die Anzahl der enthaltenen Einsen gerade ist, ist das Parity-Bit für odd Parity gesetzt.
6. Am Ende des Stopbits sind Data und Clock wieder beide high.
7. Zur Bestätigung der empfangenen Daten legt der PC Clock auf low, bis die interne Verarbeitung abgeschlossen ist.

Diagramm PS2-Schnittstelle: Daten vom PC

http://upload.wikipedia/de/thumb/0/04/Daten_vom_PC.png/700px-Daten_vom_PC.png

1. Zunächst muss der PC Clock wieder deaktivieren (negativ True logic), damit eine Übertragung ermöglicht wird. Knapp danach legt der PC Data auf low, um mit dem Startbit einen Übertragungswunsch zu signalisieren.
2. Hat die Tastatur das Startbit erkannt, legt sie Clock auf low, um damit das nächste Bit anzufordern.
3. Nun folgen die Daten-Bits D0...D7, Parity und Stopbit nach gleichem Schema. Hier im Beispiel wird 1110 1101 = $ED = Set LED gesendet.
4. Während Clock im Stopbit noch high ist, legt die Tastatur zur Quittierung auf Bitebene Data auf low und dann Clock für eine Weile auf low.
5. Danach wird Data von der Tastatur wieder zurückgenommen, und sowohl Data als auch Clock sind high.
6. Schließlich setzt der PC Clock wieder auf low, um die Daten zu verarbeiten.

Nach diesem Befehl Set LED würde die Tastatur mit Ack auf Byte-Ebene den Befehl als Verstanden quittieren. Als nächstes kann dann der PC z.B. den Parameter $02 übertragen (NumLock LED an). Die Befehlsübersicht steht unter Scancode.