English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
PS2 muis en BASIC Stamp computer
Colin Fahey

1. Inleiding

Dit artikel beschrijft hoe een PS/2 muis kan worden geëmuleerd door een BASIC Stamp computer. 

Deze verkenning is informeel. 
ps2_mouse_interior.jpg
Het interieur van een oude-stijl (bewegende bal) computermuis: het „Microsoft Intellimouse“  (I vervangen van de optische sensoren met lange draden.)
Een muis heeft twee zwaartepunten: „X“ en „Y“.  Wanneer de muis wordt verplaatst „horizontaal,“ de „X“ wiel in de muis draait.  Wanneer de muis wordt verplaatst „verticaal“ (op een oppervlak), de „Y“ wiel in de muis draait.  Voor willekeurige muis beweging, de „X“ en „Y“ wielen verplaatsen naar gelang van de „horizontale“ en „verticale“ componenten van de muis beweging. 
ps2_mouse_interruptor_wheels.jpg
Optische interruptor wielen in de muis
Let op de gaten in de wielen in de muis.  Als het wiel draait, de infrarood-(IR) uitgestraalde licht door een IR Light Emitting Diode (LED) is herhaaldelijk onderbroken, tegen een tarief dat in verhouding staat tot het tarief van de wielen rotatie.  Zo is de muis weet hoeveel „stappen“ (ook wel een „teken)“ de muis as is verplaatst in een bepaalde periode. 

Het bepalen van de richting van de beweging het gebruik van 2 licht sensoren, ligt zeer dicht bij elkaar, langs een as evenwijdig aan de beweging van het wiel.  (Beide sensoren zijn in een 3-pin component hieronder weergegeven.) 
mouse_sensor01.jpg
Muis IR lichtsensor (heeft twee IR detectoren in een enkel pakket)
De middelste pin van het pakket is de positieve collector spanning; 
De links en rechts pennen zijn de linker en rechter sensor output vervuilers. 

Laten we de naam van twee sensoren in de verpakking „A“ en „B“.  Stel dat het wiel is in eerste instantie op een rotatiehoek zodanig zijn dat de IR licht is geblokkeerd voor het bereiken van beide sensoren. 

Als het wiel draait, de IR licht van de zender zal uiteindelijk in staat zijn om door een gat in het wiel en bereiken een van de twee sensoren, zoals de sensor „A“.  Als het wiel blijft draaien in dezelfde richting, uiteindelijk de tweede sensor, „B“, zullen kunnen ontvangen IR licht.  Als het wiel blijft draaien in dezelfde richting, uiteindelijk de IR licht wordt geblokkeerd voor het bereiken van de sensor „A“.  Als het wiel blijft draaien in dezelfde richting, uiteindelijk de IR licht wordt geblokkeerd voor het bereiken van de sensor „B“. 

Zo is de volgorde is: 
(A,B):   ..., (0,0), (1,0), (1,1), (0,1), ...
Als het wiel draait in de tegenovergestelde richting, de 4-serie hierboven getoond zal worden teruggedraaid, met ingang van de huidige status.
Met deze twee sensor signalen kunnen we bepalen welke het toerental en de richting.
ps2_mouse_circuit_board.jpg
Het circuit bord van de Microsoft Intellimouse
Om te begrijpen hoe meer over de muis circuit interpreteert het licht sensoren en communiceert met de pc (PC) (via PS/2 signalen), studeerde ik het circuit bord. 

De microchip is de volgende naam op het gedrukt: SPCP05A. 

Een zoektocht van het internet voor het woord „SPCP05A“ geeft aan dat de chip wordt gemaakt door een bedrijf genaamd „Sunplus Technology Co.“.  Informatie over de „SPCP05A“ microchip kunnen worden verworven van dat bedrijf. 

Hier zijn de technische specificaties van de microchip „SPCP05A“: 
sunplus_ps2_3dmouse_datasheet.pdf
(Technische specificaties van de microchip „SPCP05A“)
1125022 bytes
MD5: 359a9210275e021cc19a5e2391499dc5
De volgende afbeelding toont de signalen van de pinnen van de „SPCP05A (PS/2 3D mouse)“ microchip.
spcp05a_chip_signals_bmp01.jpg
Signalen van de pinnen van de „SPCP05A (PS/2 3D mouse)“ microchip
De „SPCP05A“ is in feite een kleine computer!  Het is een instructie set, en RAM, en ROM, en de interne timers, enz.  In feite is de beschrijving van de „SPCP05A“ microchip in de informatie die door Sunplus Co.  nauwelijks wordt verwezen naar het specifieke gebruik van de microchip voor de „computermuis“ circuits.  Deze chip is een veelzijdige microcontroller. 

Ik heb het circuit sporen op het circuit bestuur van de Microsoft Intellimouse te vormen worden de volgende schema:
ps2_mouse_my_schematic.jpg
Benaderende schematische van de Microsoft Intellimouse  (Ik ben er ontbreekt een paar condensatoren, maar dit schema is bijna perfect.)
Bui Van Chu, in Australië, lees mijn artikel en heeft me een meer complete schema, dat is opgenomen in de volgende afbeelding.
ms_ps2_mouse_schematic.jpg
De PS/2 muis schematische, naar mij door Bui Van Chu uit Australië
Het circuit is zeer eenvoudig. 

De muisknoppen (links, midden, rechts) gaat u direct naar ingangen van de microchip. 

De drie paren van licht sensoren, ((„X“, „Y“, „Z“), (horizontale beweging, de verticale beweging, en midden muiswieltje)) signalen rechtstreeks naar andere ingangen op de chip. 

De PS/2 signalen DATA en CLK (klok) ook overeenstemmen met I/O signalen op de chip. 

Ik begreep het schema zo snel als ik klaar tekening (door het volgen van sporen op het circuit board). 

Een ding heb ik niet begrijpen aanvankelijk was de manier waarop de IR LEDs werden aangesloten op de microchip (pin 16: „PB1“), in plaats van hun negatieve terminals (kathode) gewoon rechtstreeks op de grond.  Dit is belangrijk!

2. Mijn eerste poging om de bewegingen van de muis

De volgende opmerkingen hebben betrekking op gang langs een enkele as (zoals de „X“, of horizontale, as). 

Het eerste wat ik probeerde was het verplaatsen van een object tussen de IR LED en de sensor paar - voor de simulatie van de werking van het draaiende wiel in de muis.  Dit werkte.  Ik kan de muiscursor bewegen over het scherm bewegen door simpelweg een obstakel via de IR lichtstraal herhaaldelijk, in dezelfde richting. 

Volgende ik verwijderd van de 3-pin sensor deel van de muis circuit board, en de bijgevoegde draden aan boord circuit in plaats van de sensor.  Ik handmatig een draad verbonden aan de positieve spanning te simuleren sensor activiteit.  Ik aangesloten de twee signalen naar de macht op basis van de volgende patroon (zoals dat „0“ is „uitgeschakeld,“ en vertegenwoordigt „op“ „1“):
(0,0), (1,0), (1,1), (0,1), ...
Dit werkte.  Ik kan met de muis de cursor op het scherm door dit vervelend het aansluiten en ontkoppelen van de draden in het patroon hierboven.  De omkering van de patroon van de huidige toestand in de reeks zou de cursor in de tegenovergestelde richting. 

Omdat de dingen zo goed gaat, heb ik besloten om te verbinden de draden aan relais (gecontroleerd door RS-232).  Dit zou in wezen wil ik doen wat ik deed met losse draden: het aansluiten van de sensor signalen aan de macht terminal in de juiste volgorde.  Het enige verschil zou zijn met het feit dat de mens (mij) niet zou moeten doen, het vervelend het aansluiten en ontkoppelen. 

Maar ...  het werkte niet! 

Na veel aanpassing van de weerstanden, condensatoren, etc, maakte ik een vreemde ontdekking: Als ik was het aanraken van bepaalde terminals in het circuit, het werkte perfect!  De oplossing voor dit mysterie wordt weergegeven in de volgende sectie. 

3. De infrarood licht (IR) moeten worden gedifferentieerd

Na wat experimenten frustrerend, ik had een nieuwe gedachte: De IR pulserend licht kan worden op een hoge frequentie, en de chip mag verwachten op deze frequentie.  Constant licht (of mijn gesimuleerde constante sensor output) zou kunnen worden afgewezen.  Ik was enigszins verbaasd over het feit dat de lichtsterkte van een halogeen lamp verdieping aanvaardbaar was, maar ik wist dat zelfs gloeilampen hebben aantoonbare modulatie. 

Ik heb geprobeerd een bruisende IR LED bij een hoge frequentie en de blokkering van de sensoren aan de hand van de verwachte patroon.  Het werkte! 

Dat was het!  De IR LEDs in de muis circuit bord moet knipperen bij een hoge snelheid, en de microchip mag verwachten dat deze knippert als aanvulling op het relatief lage percentage van het licht onderbreking door de draaiende wielen (met gaatjes). 

Door de knipperende IR LEDs, en verwacht dat dit in een bruisende gedeblokkeerd sensor output signaal, de chip kan verwerpen elke ambient IR signalen uit te bemoeien met de muis.  Bijvoorbeeld licht van andere (vaste) IR bronnen worden niet gedaan aan de muis. 

Ik een audio-versterker aangesloten op de sensor, output, en dan laat ik de sensor nemen in het omgevingslicht uitgebracht door mijn verdieping halogeen lamp.  Ik hoorde een afzonderlijke toon (60 Hz).  Toen ik het gedimd licht, de toon zwakke groei, en uiteindelijk gestopt toen het licht werd uitgeschakeld.  Dus, deze sensor gemakkelijk haalt de 60 Hz modulatie in de gloeiende bol van mijn woord halogeen lamp! 

Kijken, nu, op het schema van de PS/2 muis circuit board, de betekenis van de IR LEDs wordt aangesloten op een pin op de microchip (in plaats van aan de gelijkstroom) is duidelijk.  De controles van de microchip knipperen van de IR LEDs via de I/O pin, en de microchip kunnen correleren van zijn voornemen om de flash ID LEDs met de ontvangen sensor-ingangen, en dus verwerpen elke losse signalen (als gevolg van niet-knipperende IR licht).  (Echter correlatie is niet nodig.  Simpelweg het opsporen van een minimum aantal knipperende telt, kan een drempel voor het aanvaarden van sensor-ingang.) 

4. IR sensoren met bandfilter filters

U vindt IR speciale sensoren, verpakt in transistor-achtige vorm met drie leidt, die zijn „afgestemd“ op specifieke gemoduleerd IR licht frequenties (bijv.  38 kHz). 
tuned_sensor01.jpg
Afgestemd IR lichtsensor (maximale gevoeligheid voor licht 38 kHz modulatie)
Bandfilter circuit is opgenomen in de inrichting, samen met de IR foto-transistors. 

Dus, het IR LED kunnen over het algemeen worden pulsen met een frequentie van 38 kHz zodat de sensor ontvangt het licht en laat het elektrisch signaal naar de sensor outputs. 

Voor het overbrengen van informatie, het licht van de IR LED kan worden onderbroken op een relatief laag tarief (bijvoorbeeld 1 tot 100 keer per seconde).  Deze lage frequentie pulserend is in combinatie met de constante hoge frequentie pulserend, dat wil zeggen, het kloppende lage frequentie kan worden beschouwd als een differentiëring van de hoge frequentie kloppende.  De hoge-frequentie pulserend is als een „golf drager“ waarop de informatie-signaal (de relatief lage frequentie modulatie) is uitgevoerd. 

Ik heb echter vastgesteld dat de IR sensoren in de Microsoft Intellimouse niet over een dergelijke differentiatie te filteren.  Maar het circuit is wel dat de IR licht worden gemoduleerd in enkele wijze, in aanvulling op de laag-frequente onderbrekingen van het licht door het wiel met gaten. 

Het volgende schema illustreert het verschil in sensor signalen voor constante IR LED licht en knipperende IR LED licht voor de verschillende fasen van muiswieltje draaien.
ps2_mouse_quadrature_sketch.jpg
Sensor output signalen voor de constante IR licht geval en het knipperende licht IR geval.

5. Het simuleren van de muis met behulp van een input BASIC Stamp computer

De „BASIC Stamp 2“ computer heeft voldoende programmeerbaarheid voor de uitvoering van de PS/2 protocol.  Daarom is de „BASIC Stamp 2“ computer kan worden aangesloten rechtstreeks aan de PS/2 poort van een computer (PC) en kan emuleren een PS/2 muis of het toetsenbord. 

5.1 De PS/2 protocol

In de jaren 1998 via 2003, de meerderheid van personal computers had PS/2 havens voor de muis en toetsenbord. 

De PS/2 haven heeft 4 signalen: (1) CLOCK; (2) DATA; (3) +5V; (4) GROUND. 

De PS/2 poort maakt het mogelijk apparaten voor het verzenden van gegevens naar de host, en het gastland mei stuurt gegevens naar de apparaten.  Alle partijen op een PS/2 poort (meestal slechts een hulpmiddel en de host) moeten de signalen en moet detecteren wanneer een andere partij is op dit moment gebruik te maken van de signalen. 

Hoe kunnen de signalen worden gedeeld?  Een signaal (zoals CLOCK of DATA) is meestal „drijvende“ hoog, wat betekent dat het signaal is aangesloten op een positieve spanning door middel van een weerstand met een hoge resistentie (bijvoorbeeld 4 kilo-Ohms).  Dus het signaal wordt opgevat als een logisch „hoog“ door alle partijen luisteren.  Elke partij kan trek de lijn laag (via TTL logica) wanneer de partij is van plan voor het verzenden van gegevens.  Wanneer een partij eindigt het verzenden van een pakket, het laat gaan van de signalen, zodat zij vlotter hoge opnieuw. 

Voor het verzenden van gegevens van een apparaat (bijvoorbeeld de muis of het toetsenbord) aan de personal computer (PC), moet u de gegevens in 11-bit pakketten, bestaande uit de volgende bits: (1) start bit („0“); (2) 8 data bits (LSB eerste); (3) bit „(oneven“ pariteit); (4) stop bits „(1).“  Merk op dat „oneven pariteit“ is wanneer het totale aantal „1“ bits in de data bits en bit gecombineerd is een oneven aantal. 

Het volgende diagram laat de toezending van een enkel pakket gegevens: 
ps2_clock_data_dev2pc01_adj.jpg
PS/2 protocol: inrichting voor het gastland (PC) packet
De DATA lijn moet worden ingesteld op de juiste waarde te brengen voordat de CLOCK lijn laag.  De DATA waarde moet blijven stellen totdat de CLOCK lijn is terug te hoog.  Wanneer de CLOCK lijn wordt bevestigd te hoog, de DATA waarde kan worden veranderd naar de volgende bit waarde. 

De typische klok snelheid is relatief traag, over 10 kHz te 17 kHz.  Dat is 100 microseconden tot 70 microseconden voor elke klok periode. 

Het scenario van de ontvangende (PC) het verzenden van gegevens naar een apparaat is vergelijkbaar met het apparaat verzenden van gegevens naar de host, maar in alle gevallen het apparaat controleert de CLOCK signaal tijdens de gegevens zelf.  Ook een beetje data verstuurd uit het gastland (op apparaat instelling CLOCK laag) moeten worden latched wanneer het apparaat kunt het signaal CLOCK een overgang naar hoog. 

Een Internet-zoekmachine zal uit de vele beschrijvingen van PS/2 signalen en informatie over het protocol. 

5.2 PS/2 muis data pakketten

Wanneer de computer opstart, wordt het besturingssysteem wordt gestart en uiteindelijk ook de communicatie met de muis voor het bepalen van de aard van de muis.  Standaard wordt de muis mei gedragen als een generieke PS/2 muis.  Maar als het besturingssysteem bepaalt dat de muis is eigenlijk een „3D PS/2“ muis (bijvoorbeeld een muis met een wiel), kan het vertellen van de muis te veranderen aan de 3D PS/2 muis-protocol. 

Wanneer u de muis beweegt, of druk op de vrijgave of de muis, de muis circuit stuurt gegevens naar de ontvangende (PC), waarin wordt aangegeven wat de veranderingen zijn opgetreden sinds de vorige vermelding. 

De generieke PS/2 muis stuurt de volgende drie pakketten naar de host: 
    ------------------------
    D7 D6 D5 D4 D3 D2 D1 D0  (The D0 bit (LSB) is sent first)
    ------------------------
(1) YV XV YS XS  1  0  R  L  (overflow, sign, buttons)
(2) X7 X6 X5 X4 X3 X2 X1 X0  (X movement; -128 to +127)
(3) Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  (Y movement; -128 to +127)

L  = Left  Button State (1 = pressed down)
R  = Right Button State (1 = pressed down)
XS = Direction of X movement (1 = LEFT)
YS = Direction of Y movement (1 = UP)
XV = Overflow of X movement value (1 = X overflow occured)
YV = Overflow of Y movement value (1 = Y overflow occured)
X7,...,X0 : X movement; 8-bit 2's-complement signed byte (-128 to +127)
Y7,...,Y0 : Y movement; 8-bit 2's-complement signed byte (-128 to +127)

Here are examples of data sent to the host (PC):
------------------------------------------------
(The least-significant bit of each data byte is sent first.)
Move Left  1 unit    :  0x18, 0xFF, 0x00
Move Right 1 unit    :  0x08, 0x01, 0x00
Move Down  1 unit    :  0x28, 0x00, 0xFF
Move Up    1 unit    :  0x08, 0x00, 0x01
Press   Left  Button :  0x09, 0x00, 0x00
Release Left  Button :  0x08, 0x00, 0x00
Press   Right Button :  0x0C, 0x00, 0x00
Release Right Button :  0x08, 0x00, 0x00
Het is gebruikelijk om een „3D PS/2“ muis (bijvoorbeeld met een muiswiel dat tevens fungeert als een middelste knop).  Zo'n muis stuurt vier data-pakketten naar de host (PC). 
    ------------------------
    D7 D6 D5 D4 D3 D2 D1 D0  (The D0 bit (LSB) is sent first)
    ------------------------
(1) YV XV YS XS  1  M  R  L  (overflow, sign, buttons)
(2) X7 X6 X5 X4 X3 X2 X1 X0  (X movement; -128 to +127)
(3) Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  (Y movement; -128 to +127)
(4) Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0  (Z movement; -128 to +127)

This is very similar to the generic PS/2 mouse,
with a few additions:

M = Middle Button State (1 = pressed down)
Z7,...,Z0 : Mouse wheel movement; 8-bit 2's-complement signed byte
    (The Z value is forced to a range of -8 to +7)

5.3 Mijn eerste circuit voor de simulatie van een PS/2 muis

Het volgende schema was mijn eerste werkdag techniek om mijn „BASIC Stamp 2“ computer te sturen PS/2 gegevens bij de muis de ontvangende (PC).
2002june03_basicstamp_to_ps2mouse_circuit.jpg
Schematische weergave van de route toe te staan dat de BASIC Stamp computer PS/2 voor het verzenden van pakketten naar de host (PC).
Merk op dat dit circuit elektrisch isolaten BASIC Stamp mijn computer uit het gastland (PC) computer.  Merk ook op dat dit circuit is alleen te voldoen aan de eisen van de elektrische PS/2 van gegevens (van het apparaat naar host).  Dus, ik kan sturen PS/2 toetsenbord berichten met behulp van dezelfde route als ik de stekker in het PS/2 toetsenbord-poort op de host (PC)! 

Sinds de ontvangst van signalen over het algemeen niet-invasieve (dat wil zeggen, luisteren niet interfereert met elektrische signalen), het enige wat nodig is om de computer te ontvangen „BASIC Stamp“ de PS/2 CLOCK en DATA signalen is een directe verbinding van deze signalen naar andere BASIC Stamp I/O pinnen (geconfigureerd te worden inputs).  Ik wil proberen een soort buffering - maar ik absoluut niet gebruik kunnen maken van een opto-isolator direct, want dat zou een belasting op het „drijvende“ signalen (dus „zinken!).“  Ik kan gebruik maken van de +5V aan de macht een buffer, dan gebruik dan de buffer output tot het besturen van opto-inrichtingen die uiteindelijk signalen af aan de BASIC Stamp I/O pins (geconfigureerd als input). 

De volgende afbeelding toont BASIC Stamp 2 mijn computer aangesloten op een route die overeenkomen met het schema hierboven. 
2002june03_basicstamp_mousecircuit01_adj.jpg
BASIC Stamp 2 computer aangesloten op een PS/2 muis-poort via een opto-isolator circuit.
De volgende BASIC Stamp 2 programma, geschreven in de programmeertaal PBASIC, was mijn eerste geslaagde poging om de PS/2 muis BASIC Stamp 2 via de computer. 

Het programma maakt gewoon de muiscursor bewegen langs een kleine diagonale lijn. 
'====================================================================
'{$STAMP  BS2} 'STAMP directive (specifies a BS2)

    DIR0 = %1 'Set pin 0 to OUTPUT
    DIR1 = %1 'Set pin 1 to OUTPUT
    OUT0 = %0 'Set DATA line high (pin low)
    OUT1 = %0 'Set CLOCK line high (pin low)
    tempData    VAR  BYTE
    tempParity  VAR  BYTE

'--------------------------------------------------------------------

MainLoop:

    tempCounter  VAR  WORD

    FOR tempCounter = 0 TO 10
    tempData = $28
    GOSUB TransmitPacket
    tempData = $01
    GOSUB TransmitPacket
    tempData = $ff
    GOSUB TransmitPacket
    tempData = $00
    GOSUB TransmitPacket
    PAUSE 100
    NEXT

    FOR tempCounter = 0 TO 10
    tempData = $18
    GOSUB TransmitPacket
    tempData = $ff
    GOSUB TransmitPacket
    tempData = $01
    GOSUB TransmitPacket
    tempData = $00
    GOSUB TransmitPacket
    PAUSE 100
    NEXT

    GOTO MainLoop

STOP

'--------------------------------------------------------------------

TransmitPacket:

    GOSUB ComputeParity       'First, compute parity

    tempData   = ~tempData    'Invert data bits
    tempParity = ~tempParity  'Invert parity bit

    '==== Start Bit ====
    OUT0 = %1 'Set data line low (output high)
    PULSOUT 1, 25   ' Pulse line 1 for (25*2) = 50 usec

    '==== Data Bits ====
    OUT0 = tempData.BIT0
    PULSOUT 1, 25
    OUT0 = tempData.BIT1
    PULSOUT 1, 25
    OUT0 = tempData.BIT2
    PULSOUT 1, 25
    OUT0 = tempData.BIT3
    PULSOUT 1, 25
    OUT0 = tempData.BIT4
    PULSOUT 1, 25
    OUT0 = tempData.BIT5
    PULSOUT 1, 25
    OUT0 = tempData.BIT6
    PULSOUT 1, 25
    OUT0 = tempData.BIT7
    PULSOUT 1, 25

    '==== Parity Bit ====
    OUT0 = tempParity.BIT0
    PULSOUT 1, 25

    '==== Stop Bit (high) ====
    OUT0 = %0  ' pin low is DATA high
    PULSOUT 1, 25

    PAUSE 1 ' Necessary? Provides 1 msec gap between packets...

RETURN

'--------------------------------------------------------------------

ComputeParity:

    tempParity = $01
    tempParity = tempParity + tempData.BIT0
    tempParity = tempParity + tempData.BIT1
    tempParity = tempParity + tempData.BIT2
    tempParity = tempParity + tempData.BIT3
    tempParity = tempParity + tempData.BIT4
    tempParity = tempParity + tempData.BIT5
    tempParity = tempParity + tempData.BIT6
    tempParity = tempParity + tempData.BIT7
    tempParity = tempParity & $01

RETURN

'====================================================================
Dit programma werkt perfect.  Ik laat het lopen voor uren, en het foutloos gemaakt met de muis de cursor verplaatsen tussen twee exacte locaties op het scherm.  Dit is wat ik zocht: precieze controle van de muis, zodat ik kan interageren met software. 

Na het zoeken op het internet ontdekte ik dat iemand anders gebruik gemaakt van een BASIC Stamp computer interface PS/2 (controle van een toetsenbord).  Deze persoon gebruikt de PBASIC instructie SHIFTOUT om de CLOCK en DATA signalen, dat is echt heel goed.  Dit zou mijn „TransmitPacket“ subroutine veel korter, misschien 5 regels code in totaal! 

Ik zag ook dat andere mensen gebruikt TTL buffers, die rechtstreeks verband houden met de inbreng van PS/2 signalen (CLOCK en DATA), en de output direct verbonden met pinnen op de microcontroller chip.  In hetzelfde circuit, output lijnen van de microcontroller gingen rechtstreeks naar de basis pinnen op transistoren die hun verzamelingen rechtstreeks op de PS/2 signalen.  Al deze directe koppeling van de verschillende circuits lijkt een slecht idee is voor mij, opdat een circuit bak de andere kant.  Ik weet niet wat ik wil doen als ik gebakken PS/2 de poort van mijn PC.  Koop een nieuw moederbord, I guess!  Een excuus om te upgraden.  Ik denk niet dat een PS/2 haven moederbord kernsmelting is waarschijnlijk, maar ik heb meteen mijn computer afsluiten als ik per ongeluk kortsluiting de +5V en GROUND signalen die naar de PS/2 muis.  Maybe it's a feature!  Ik kon een nieuwe knop op de muis die net kortsluitingen de muis macht voor het direct stopzetten van het PC.  ;-) 

Hier is de link naar de informatie over het gebruik van SHIFTOUT voor de PS/2 protocol:
http://ourworld.compuserve.com/homepages/steve_lawther/keybinfo.htm
Let op de volgende link:
KEYBTST.ZIP   gives a very basic program for the parallax
-----------
BASIC stamp II, to send key-codes to the PC's keyboard port.
It also gives a write-up of the XT and AT keyboard interfaces
(although IMO some details could be wrong / different to the
keyboards I've looked at).
Lokaal-cachegeheugen opgeslagen kopie van het dossier:
keybtst.zip

10655 bytes
MD5: c5667557f96db53fb878bd11bfbe4f74
De volgende link geeft meer informatie over PS/2 muis interface:
http://panda.cs.ndsu.nodak.edu/ ~ achapwes/PICmicro/PS2/ps2.htm
colinfahey.com
contactgegevens
English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية