PS2 माउस BASIC Stamp और कंप्यूटर
Colin Fahey
1. परिचय
यह लेख का वर्णन किया जा सकता है कि किस तरह एक PS/2 माउस द्वारा BASIC Stamp कंप्यूटर की नकल है .
यह अन्वेषण अनौपचारिक है .

भीतरी एक पुरानी शैली ( चलती गेंद ) कंप्यूटर माउस : "Microsoft Intellimouse" ( ऑप्टिकल सेंसर की जगह मैं लंबे तारों के साथ है . )
एक माउस में दो axes : "X" और "Y" . जब माउस "क्षैतिज" चली है , "X" पहिया के भीतर माउस rotates . जब माउस के "रूप" में स्थानांतरित होता है ( एक सतह पर ) , "Y" पहिया के भीतर माउस rotates . मनमानी के लिए माउस गति , चाल के अनुसार "X" और "Y" पहियों को "क्षैतिज" और "ऊर्ध्वाधर" घटक माउस प्रस्ताव है .

ऑप्टिकल interruptor पहियों के भीतर माउस
सूचना के पहियों के भीतर छिद्र में माउस . जब पहिया rotates , अवरक्त लाल (IR) द्वारा उत्सर्जित प्रकाश उत्सर्जक डायोड IR लाइट (LED) लगातार बाधित है , की दर से आनुपातिक की दर से पहिया रोटेशन . इस प्रकार , माउस जानता कि कितने "बढ़ता" ( "ticks" भी कहा जाता है ) की धुरी माउस ने किसी विशेष समय अवधि में चले गए .
निर्धारित करने की दिशा शामिल आंदोलन के प्रयोग के प्रकाश 2 सेंसर , बहुत निकट स्थित एक साथ , एक धुरी के साथ समानांतर करने के लिए आंदोलन के पहिया है . ( दोनों एक ही सेंसर में हैं 3 घटक पिन नीचे दिखाई गई है . )

प्रकाश संवेदक माउस IR ( IR डिटेक्टरों की दो में एक पैकेज )
इस केन्द्र का पैकेज है पिन सकारात्मक कलेक्टर वोल्टेज ;
वामपंथियों और सही हैं पिनों के अधिकार छोड़ दिया और सेंसर निर्गम emitters .
आइए हम नाम के दो सेंसर में पैकेज "A" और "B" . मान लीजिए के शुरू में एक पहिया है कि इस तरह के रोटेशन कोण IR प्रकाश पहुंचने के दोनों सेंसरों से अवरुद्ध है .
जैसा कि पहिया rotates , IR प्रकाश से emitter जाएगा करने में सक्षम एक छेद में से होकर पहुंच पहिया और दो में से एक सेंसर , जैसे कि सेंसर "A" . यदि पहिया जारी है एक ही दिशा में बदलती है , अंततः के दूसरे सेंसर , "B" , प्राप्त करने में सक्षम होंगे IR प्रकाश . यदि पहिया जारी है एक ही दिशा में बदलती है , अंततः IR के प्रकाश की जाएगी अवरुद्ध तक पहुँचने से सेंसर "A" . यदि पहिया जारी है एक ही दिशा में बदलती है , अंततः IR के प्रकाश की जाएगी अवरुद्ध तक पहुँचने से सेंसर "B" .
इस प्रकार , यह दृश्य है :
(A,B): ..., (0,0), (1,0), (1,1), (0,1), ...
यदि पहिया rotates में विपरीत दिशा में , 4 अवधि के ऊपर दिखाए गए दृश्य होगा उलट , शुरू से वर्तमान स्थिति है .
इन संकेतों के साथ दो सेंसर हम रोटेशन की दर निर्धारित कर सकते हैं , और दिशा .

इस सर्किट बोर्ड के Microsoft Intellimouse
समझने के बारे में और अधिक जानकारी के लिए माउस circuitry कैसे एकीकृत सेंसरों और संचार के प्रकाश के साथ व्यक्तिगत कंप्यूटर (PC) ( PS/2 संकेतों के द्वारा ) , मैं सर्किट बोर्ड का अध्ययन किया है .
यह माइक्रोचिप के निम्नलिखित नाम पर छपी है : SPCP05A .
इंटरनेट पर एक खोज के लिए शब्द "SPCP05A" संकेत है कि चिप द्वारा निर्मित एक कंपनी का नाम "Sunplus Technology Co." . सूचना के बारे में "SPCP05A" माइक्रोचिप से प्राप्त किया जा सकता है कि कंपनी है .
ये हैं तकनीकी विनिर्देशों के "SPCP05A" माइक्रोचिप :
निम्नलिखित छवि के संकेतों से पता चलता है पिनों के "SPCP05A (PS/2 3D mouse)" माइक्रोचिप .

सिग्नल के पिनों के "SPCP05A (PS/2 3D mouse)" माइक्रोचिप
यह वास्तव में एक छोटे से कंप्यूटर "SPCP05A" है ! यह एक अनुदेश समुच्चय है , और RAM , और ROM , टाइमर और आंतरिक , आदि वास्तव में , वर्णन के "SPCP05A" माइक्रोचिप में Sunplus Co. scarcely द्वारा प्रदान की गई जानकारी के विशिष्ट आशय के उपयोग की माइक्रोचिप "कंप्यूटर" के लिए "माउस" सर्किट . यह एक बहुमुखी microcontroller चिप है .
मैं सर्किट का अध्ययन किया जोधपुर पर सर्किट बोर्ड के Microsoft Intellimouse अनुमानित योजना बनाने के लिए निम्नलिखित हैं :

अनुमानित योजना के Microsoft Intellimouse ( मुझे कुछ capacitors गायब है , लेकिन इस योजना में लगभग पूर्ण है . )
Bui Van Chu , ऑस्ट्रेलिया में , मेरे लेख पढ़ा ने मुझे भेजा और एक अधिक पूर्ण योजना है , जो निम्नलिखित छवि में लगता है .

PS/2 माउस की योजना है , मेरे द्वारा भेजे Bui Van Chu ऑस्ट्रेलिया से
सर्किट का बहुत सरल है .
माउस बटन ( बाएँ , मध्यम , सही ) सीधे निवेश पर माइक्रोचिप .
इस तीन जोड़ी प्रकाश सेंसर , ( ( "X" , "Y" , "Z" ) , ( क्षैतिज के लिए आंदोलन के आंदोलन खड़ी है , और मध्य माउस पहिया ) ) संकेतों को सीधे भेजने के अन्य साधनों की चिप पर है .
इस PS/2 संकेतों DATA और CLK ( घड़ी के अनुसार ) से संबंधित हैं I/O भी संकेतों पर चिप .
मैं समझ के योजनाबद्ध जैसे ही मैं यह बैठक समाप्त ( जोधपुर द्वारा निम्नलिखित पर सर्किट बोर्ड ) .
एक बात मैंने शुरू में नहीं था जिस तरह से समझने के IR LEDs को माइक्रोचिप से जुड़े थे ( 16 पिन : "PB1" ) , टर्मिनल के बजाय अपने नकारात्मक ( कैथोड ) की जा रही बस को सीधे जमीन से जुड़ा है . यह महत्वपूर्ण है !
2. मेरा पहला प्रयास माउस को नियंत्रित करने के लिए आंदोलन
निम्नलिखित टिप्पणी उल्लेख प्रस्ताव के साथ एक ही धुरी ( जैसे "X" , या क्षैतिज , धुरी ) .
पहली बात का प्रयास किया गया था मैं किसी वस्तु के बीच चलती है और IR LED संवेदक जोड़ी -- सिमुलेट करने के प्रभाव का पहिया के भीतर माउस बदलती है . यह काम किया है . मैं कारण हो सकता है माउस कर्सर को स्थानांतरित करने के लिए स्क्रीन के आसपास के द्वारा बस चलती एक बाधा के माध्यम से प्रकाश की किरण IR बार बार , एक ही दिशा में .
इसके बाद , मुझे निकाल दिया है पिन 3 हिस्सा सेंसर बोर्ड से माउस सर्किट , और तारों को संलग्न सर्किट के सेंसर बोर्ड के स्थान पर है . मैं स्वयं को तार से जुड़े एक सकारात्मक वोल्टेज सिमुलेट को सेंसर गतिविधि है . मैं संकेतों से जुड़े दोनों को शक्ति के अनुसार निम्नलिखित पैटर्न ( "0" है कि इस तरह के "बंद" का प्रतिनिधित्व करता है , और "1" "पर" प्रतिनिधित्व करता है ) :
(0,0), (1,0), (1,1), (0,1), ...
यह काम किया है . कदम हो सकता है मैं माउस कर्सर द्वारा इस स्क्रीन पर थकाऊ disconnecting के तारों को जोड़ने और ऊपर दिखाए गए स्वरूप में है . नाममात्र की तर्ज से वर्तमान स्थिति में ले जाया जाएगा अनुक्रम कर्सर के विपरीत दिशा में है .
क्योंकि इतनी अच्छी बातें जा रहे थे , मैं कनेक्ट करने का निर्णय लिया के तारों को रिले ( द्वारा नियंत्रित RS-232 ) . इससे ठीक करने के लिए अनिवार्य रूप से की अनुमति मेरे साथ जो कुछ मैंने खुले तार : कनेक्ट संवेदक विद्युत संकेतों को टर्मिनल में अनुक्रम उपयुक्त है . अंतर केवल यह होगा कि मानव ( मुझे ) को ऐसा करने के लिए नहीं जोड़ने और थकाऊ disconnecting .
... लेकिन यह काम नहीं किया है !
बाद में काफी प्रतिरोधों के समायोजन और capacitors , etc , मैं ने एक अजीब खोज : यदि मैं कुछ छूने टर्मिनल में सर्किट , यह काम बिल्कुल ! इसका समाधान करने के लिए इस रहस्य के अगले भाग में दिखाई देता है .
3. इस अवरक्त लाल प्रकाश (IR) होना चाहिए modulated
frustrating प्रयोगों के बाद कुछ मैं ने एक नया विचार : IR प्रकाश हो सकता है स्पंदन में एक उच्च आवृत्ति , और हो सकता है चिप इस आवृत्ति को प्राप्त करने की उम्मीद है . लगातार प्रकाश ( या मेरे सिमुलेट उत्पादन लगातार सेंसर ) हो सकता है अस्वीकार कर दिया है . मैं कुछ उलझन थी कि इस तथ्य के प्रकाश परिवेश में एक दीप halogen मंजिल स्वीकार्य था , लेकिन मैं जानता था कि तापदीप्त लैंप भी detectable मॉडुलन हैं .
मैं एक IR LED स्पंदन की कोशिश की पर और उच्च आवृत्ति रोकने के सेंसरों के अनुसार उम्मीद की परिपाटी है . यह काम किया है !
वह यह था ! इस माउस में IR LEDs सर्किट बोर्ड होना चाहिए घड़ियां पर उच्च गति , और उम्मीद है कि यह माइक्रोचिप चाहिए घड़ियां के अलावा अपेक्षाकृत कम दर के प्रकाश के द्वारा बाधा पहिया आवर्ती ( छिद्र ) .
स्पंदन के द्वारा IR LEDs है , और इस उम्मीद में स्पंदन unblocked सेंसर संकेत उत्पादन , चिप किसी भी अस्वीकार कर सकते हैं परिवेश IR संकेतों से माउस आपरेशन के साथ दखल है . उदाहरण के लिए , आवारा प्रकाश से अन्य ( निरंतर ) IR स्रोतों के साथ माउस interefere नहीं होगा .
मैं एक ऑडियो जुड़े प्रवर्धक को सेंसर निर्गम , और फिर मैं दें संवेदक परिवेश प्रकाश में ले कलाकारों द्वारा मेरे दीपक halogen मंजिल है . मैंने सुना एक अलग आवाज (60 Hz) . जब मैं dimmed के दीप , हल्का टोन बढ़ी है , और अंततः जब प्रकाश बंद कर दिया गया है . सो , यह आसानी से पकड़ता सेंसर की 60 Hz मॉडुलन में तापदीप्त बल्बों की मेरी मंजिल halogen दीप !
देखते हैं , अब इस योजना के PS/2 पर माउस सर्किट बोर्ड के महत्व के IR LEDs से जोड़ा जा रहा है पिन पर एक माइक्रोचिप ( करने के बजाय मौजूदा प्रत्यक्ष ) स्पष्ट है . यह माइक्रोचिप पर नियंत्रण रखने की घड़ियां के IR LEDs पिन I/O के माध्यम से , और माइक्रोचिप कर सकते हैं संबंध को अचानक अपनी मंशा के साथ ID LEDs सेंसर निवेश प्राप्त है , और इस प्रकार किसी भी अस्वीकार कर आवारा संकेतों ( न होने के कारण प्रकाश घड़ियां IR ) . ( हालांकि , सह आवश्यक नहीं है . बस का पता लगाने का एक न्यूनतम संख्या में घड़ियां गणना की जा सकती है संवेदक को स्वीकार करने के लिए निवेश सीमा से एक है . )
4. IR सेंसरों के साथ bandpass फिल्टर
आप पा सकते हैं IR विशेष सेंसरों , डिब्बाबंद में ट्रांजिस्टर के समान रूप से तीन का नेतृत्व है , "देखते" हैं कि प्रकाश आवृत्तियों को विशिष्ट modulated IR ( eg , 38 kHz ) .

प्रकाश संवेदक देखते IR ( अधिकतम संवेदनशीलता को 38 kHz प्रकाश मॉडुलन )
Bandpass में निहित है circuitry उपकरण के साथ फोटो IR - ट्रांजिस्टर .
इसलिए , IR LED स्पंदित किया जा सकता है आमतौर पर एक आवृत्ति के 38 kHz प्राप्त होगा जिससे कि सेंसर के प्रकाश दें और बिजली जाने के संकेत को सेंसर outputs .
संप्रेषित करने के लिए जानकारी के प्रकाश से IR LED बाधित किया जा सकता है पर अपेक्षाकृत कम दर ( eg , 1 से 100 गुना प्रति सेकंड ) . यह कम आवृत्ति है स्पंदन के साथ संयोजन के रूप में निरंतर उच्च आवृत्ति स्पंदन ; यानी , कम आवृत्ति स्पंदन माना जा सकता है modulating के उच्च आवृत्ति स्पंदन है . इस उच्च आवृत्ति स्पंदन के समान है जो "वाहक तरंग" पर जानकारी संकेत ( अपेक्षाकृत कम आवृत्ति मॉडुलन ) किया जाता है .
लेकिन , मैं सत्यापित है कि सेंसर IR में Microsoft Intellimouse मॉडुलन फ़िल्टर ऐसी नहीं है . हालाँकि , सर्किट की आवश्यकता करता है कि IR प्रकाश में कुछ तरीके से किया जा modulated के अलावा , कम आवृत्ति interruptions प्रकाश के द्वारा पहिया छिद्र के साथ .
निम्नलिखित रेखाचित्र बुलडोजर के अंतर में सेंसर संकेतों के लिए निरंतर IR LED प्रकाश IR LED घड़ियां और प्रकाश के लिए माउस के विभिन्न चरणों की ओर पहिया है .

सेंसर संकेतों के लिए उत्पादन के मामले प्रकाश में निरंतर IR घड़ियां और IR मामले प्रकाश .
5. इनपुट का अनुकरण माउस का उपयोग करते हुए एक कंप्यूटर BASIC Stamp
"BASIC Stamp 2" ने इस कंप्यूटर को लागू करने के लिए पर्याप्त programmability प्रोटोकॉल PS/2 . इसलिए , "BASIC Stamp 2" सीधे कंप्यूटर से जोड़ा जा सकता है PS/2 बंदरगाह के लिए एक व्यक्तिगत कंप्यूटर (PC) अनुकरण कर सकते हैं और एक या माउस PS/2 कुंजीपटल .
5.1 यह प्रोटोकॉल PS/2
1998 के माध्यम से 2003 के वर्षों में , अधिकांश निजी कंप्यूटर था PS/2 बंदरगाहों के लिए कुंजीपटल और माउस .
इस बंदरगाह PS/2 ने संकेत 4 : (1) CLOCK ; (2) DATA ; (3) +5V ; (4) GROUND .
इस PS/2 डाटा भेजने के लिए उपकरणों की अनुमति देता है पोर्ट को होस्ट , डाटा भेज सकते हैं और मेजबान के लिए उपकरणों की है . सभी पार्टियों के बंदरगाह पर PS/2 ( आमतौर सिर्फ एक युक्ति और मेजबान ) के साझा करना होगा और संकेतों का पता लगाने चाहिए यदि वर्तमान में पार्टी के एक और संकेत के प्रयोग से .
कैसे कर सकते हैं संकेतों की जाएगी ? एक संकेत ( जैसे CLOCK या DATA ) आमतौर पर "चल" उच्च है , जिसका अर्थ है कि यह एक सकारात्मक संकेत है जुड़े resistor के साथ एक उच्च वोल्टेज के माध्यम से प्रतिरोध ( eg , 4 kilo-Ohms ) . इस प्रकार के संकेत के रूप में एक तार्किक व्याख्या की है "उच्च" द्वारा सभी दलों सुन . कोई भी पार्टी की रेखा से कम कर सकते हैं खींचने ( via TTL तर्क ) जब पार्टी का इरादा डाटा भेजने के लिए . जब समाप्त होने के एक दल भेजने का एक पैकेट , यह जाने का संकेत देता है अनिश्चित है , इसलिए वे फिर से उच्च फ्लोट .
डाटा भेजने के लिए एक उपकरण से ( जैसे , या माउस कुंजीपटल ) को पर्सनल कंप्यूटर (PC) , आपको भेज डेटा में 11 बिट के पैकेट , निम्नलिखित के बिट : (1) शुरू बिट ("0") ; (2) डेटा 8 बिट ( LSB पहली ) ; (3) समता बिट ( "विषम" समता ) ; (4) बंद बिट ( "1" ) . ध्यान दें कि यह है कि जब "विषम समता" की कुल संख्या "1" बिट में डेटा बिट और समता बिट संख्या करीब एक संयुक्त है .
निम्नलिखित चित्र बुलडोजर के प्रसारण के एक पैकेट डेटा :

PS/2 प्रोटोकॉल : होस्ट करने के लिए उपकरण के पैकेट (PC)
इस सेट किया जाना चाहिए DATA लाइन को उचित मूल्य की CLOCK लाइन लाने से पहले कम है . DATA का मूल्य निर्धारित करना चाहिए जब तक बने रहने की रेखा है CLOCK वापस लौट अधिक है . जब CLOCK रेखा के उच्च होने की पुष्टि की है , DATA मूल्य परिवर्तित करने के लिए किया जा सकता है कि अगले कुछ मान .
इस विशिष्ट घड़ी की गति अपेक्षाकृत धीमी है , के बारे में 10 kHz को 17 kHz . यह 100 microseconds कम करने के लिए 70 microseconds अवधि के लिए हर घड़ी है .
इस परिदृश्य में मेजबान (PC) डाटा भेजने के लिए एक उपकरण के समान है डाटा भेजने के लिए इस उपकरण का मेजबान है , लेकिन सभी मामलों में नियंत्रण उपकरण के संकेत CLOCK आंकड़ा संचरण के दौरान ही है . इसके अलावा , एक डाटा बिट से भेजा मेजबान ( युक्ति पर कम सेटिंग CLOCK ) किया जाना चाहिए जब latched युक्ति बनाने के संकेत देता है CLOCK के संक्रमण को एक अधिक है .
एक इंटरनेट खोज करेंगे विवरण से पता चलता है कई PS/2 संकेतों के बारे में और विवरण प्रोटोकॉल .
5.2 PS/2 माउस के पैकेट डेटा
जब कम्प्यूटर बूट करना , ऑपरेटिंग सिस्टम के साथ शुरू और अंत में संचार माउस को निर्धारित करने के लिए माउस के प्रकार के हैं . मूलभूत रूप से हो सकता है माउस की तरह व्यवहार एक सामान्य PS/2 माउस . हालांकि , अगर माउस ऑपरेटिंग सिस्टम यह निर्धारित करता है कि वास्तव में एक "3D PS/2" माउस ( जैसे , एक माउस के साथ एक पहिया है ) , तो यह बता सकता माउस को बदलने के लिए माउस 3D PS/2 प्रोटोकॉल .
जब आप कदम माउस , या जारी प्रेस या माउस बटन , circuitry माउस को होस्ट (PC) डेटा भेजता है , जो राज्य में परिवर्तन का संकेत के बाद से हुई है जो पिछले राज्य संकेत है .
यह सामान्य PS/2 भेजता है माउस को निम्नलिखित तीन पैकेट को होस्ट :
------------------------
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
यह एक बहुत ही सामान्य करने के लिए माउस "3D PS/2" ( eg , माउस के साथ एक पहिया है कि मध्य बटन के रूप में भी कार्य करता है ) . इस तरह का डाटा माउस भेजता चार पैकेट को होस्ट (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 मेरी पहली सर्किट के लिए माउस सिमुलेट एक PS/2
निम्नलिखित कार्य योजना थी मेरी पहली तकनीक पाने के लिए मेरे "BASIC Stamp 2" कंप्यूटर डाटा भेजने के लिए माउस को PS/2 मेजबान (PC) .

योजना के सर्किट की अनुमति देने के लिए कंप्यूटर की BASIC Stamp भेजने के लिए PS/2 के पैकेट को होस्ट (PC) .
ध्यान दें कि इस सर्किट बिजली आइसोलेट्स BASIC Stamp मेरे कंप्यूटर से मेजबान कंप्यूटर (PC) . यह भी ध्यान दें कि यह परिपथ ही है बिजली की आवश्यकताओं को पूरा करना PS/2 आंकड़ा संचरण ( युक्ति से होस्ट करने के लिए ) . इस प्रकार , मैं संदेश भेज सकते हैं PS/2 कुंजीपटल का उपयोग करते हुए इस प्लग में यदि मैं एक ही सर्किट को PS/2 कुंजीपटल बंदरगाह पर होस्ट (PC) !
प्राप्त संकेतों के बाद से आमतौर पर गैर आक्रामक ( यानी , सुन विद्युत संकेतों में हस्तक्षेप नहीं करता है ) , केवल इस बात की अनुमति देने के लिए आवश्यक "BASIC Stamp" प्राप्त करने के लिए कंप्यूटर PS/2 CLOCK और DATA संकेतों से सीधा संबंध है उन संकेतों को अन्य BASIC Stamp I/O पिनों ( करने के लिए कॉन्फ़िगर किया जा आदानों ) . मैं तो किसी तरह के प्रयास बफरन -- लेकिन मैं निश्चित रूप से एक का उपयोग नहीं कर सकते opto - सीधे अलगाने वाला है , ने एक के बाद से जो भार पर "चल" संकेतों ( "डूबने" उन्हें इस प्रकार है ! ) . मैं +5V को सत्ता का उपयोग कर सकता है एक बफर , फिर उसके बाद निर्गम बफर का उपयोग करने के लिए ड्राइव opto - isolators है कि अंततः भेजने के संकेतों को BASIC Stamp I/O पिनों ( निवेश के रूप में विन्यस्त है ) .
निम्नलिखित छवि से पता चलता है BASIC Stamp 2 मेरे कंप्यूटर से जुड़ा एक सर्किट मेल से ऊपर की योजना है .

BASIC Stamp 2 कंप्यूटर से जुड़ा एक PS/2 माउस पोर्ट के द्वारा एक से अलगाने वाला opto सर्किट .
निम्नलिखित BASIC Stamp 2 कार्यक्रम , PBASIC प्रोग्रामिंग भाषा में लिखे थे , मेरा पहला प्रयास सफल PS/2 को नियंत्रित करने के लिए माउस के द्वारा कंप्यूटर BASIC Stamp 2 .
इस कार्यक्रम से बस के साथ एक छोटा सा कदम माउस कर्सर विकर्ण लाइन है .
'====================================================================
'{$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
'====================================================================
इस प्रोग्राम की पूर्ण काम करता है . मैं इसे चलाने के लिए घंटे दें , और यह माउस कर्सर flawlessly ने सही कदम दो स्थानों के बीच स्क्रीन पर . यह वही है जो मैं तलाश : सटीक माउस नियंत्रण के साथ बातचीत कर सकते हैं कि मैं सॉफ्टवेयर है .
इंटरनेट पर खोज के बाद पता चला कि मैं किसी और BASIC Stamp कंप्यूटर का उपयोग करने के लिए PS/2 अंतरफलक ( स्टिमुलेट में एक की बोर्ड ) . इस व्यक्ति का उपयोग किया है PBASIC अनुदेश SHIFTOUT से निबटने के CLOCK और DATA संकेत है , जो वास्तव में महान है . इससे अपने "TransmitPacket" उपनेमका काफी कम है , शायद 5 लाइनों की कुल कोड !
अन्य लोगों ने देखा कि मैं भी प्रयोग किया जाता TTL buffers के साथ निवेश से सीधे जुड़े PS/2 संकेतों ( CLOCK और DATA ) , और सीधे जुड़े outputs पिनों पर microcontroller चिप . उसी में सर्किट , निर्गम लाइनों से सीधे जाकर microcontroller पिनों के आधार पर ट्रांजिस्टर ने जो अपने कलेक्टरों PS/2 संकेतों को सीधे जुड़ा है . यह सब प्रत्यक्ष युग्मन विभिन्न सर्किट की तरह लगता है खराब विचार मुझ से , ऐसा न हो कि एक दूसरे के सर्किट भूनें . मैं नहीं जानता कि क्या मैं तो करते हैं यदि मैं तले PS/2 के बंदरगाह पर मेरे PC . खरीदें एक नया motherboard , मुझे लगता है ! को उन्नत करने के लिए एक बहाना है . मुझे नहीं लगता कि एक PS/2 पोर्ट motherboard meltdown की संभावना है , लेकिन मैंने तुरन्त मेरे कंप्यूटर बन्द करना ग़लती से जब मैं छोटी circuited के +5V और GROUND जा रहे संकेतों के लिए माउस PS/2 . शायद यह एक विशेषता है ! मैं एक नया बटन को जोड़ सकता है माउस सर्किट के कम ही है कि बिजली के लिए माउस को तत्काल बंद PC . ;-)
यहाँ की कड़ी के बारे में जानकारी के प्रयोग के SHIFTOUT के लिए प्रोटोकॉल PS/2 :
देखो के लिए नीचे दिए लिंक :
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).
कैश्ड प्रति स्थानीय फ़ाइल :
keybtst.zip
10655 बाइट्स
MD5: c5667557f96db53fb878bd11bfbe4f74
निम्नलिखित लिंक के बारे में अधिक जानकारी प्रदान करता है PS/2 माउस interfacing :