|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請(qǐng)教PS/2問(wèn)題. |
| 作者:idcard 欄目:單片機(jī) |
我參照以前的貼做了個(gè)鍵盤(pán)口的傳輸,可以接收到,但有時(shí)會(huì)出錯(cuò),請(qǐng)教做過(guò)的前輩程序還有什么需要完善的嗎? 程序如下,另CLOCK的頻率沒(méi)錯(cuò),是15K左右,大概十來(lái)次會(huì)錯(cuò)一次的機(jī)率,找不到原因,有點(diǎn)煩啊.請(qǐng)指教,先謝了! 程序如下: MOV R6, #0bH; MOV 3AH,#5aH MOV R1,#30H SENT: MOV A,@R1 ;待發(fā)數(shù)據(jù)-A NOP CLR P1.7 ;數(shù)據(jù)線置為低電平 ACALL DELA10 ;延時(shí)10us NOP NOP CLR P1.4 ;時(shí)鐘線置為低電平 ACALL DELA30 ;延時(shí)30us NOP NOP SETB P1.4 ;時(shí)鐘線置為高電平,發(fā)送起始位 MOV B,#9 ;置循環(huán)次數(shù) MOV C,P ;奇偶標(biāo)志-C CPL C ;偶校驗(yàn) TC: ACALL DELA10 ACALL DELA10 NOP NOP NOP NOP RRC A MOV P1.7,C ;發(fā)一位數(shù)據(jù) ACALL DELA10 NOP NOP CLR P1.4 ;產(chǎn)生一個(gè)時(shí)鐘脈沖 ACALL DELA30 NOP NOP SETB P1.4 NOP NOP DJNZ B,TC ;未完繼續(xù) NOP NOP ACALL DELA10 ACALL DELA10 NOP NOP NOP NOP SETB P1.7 ;停止位 ACALL DELA10 NOP NOP CLR P1.4 ACALL DELA30 NOP NOP SETB P1.4 SENT2: INC R1 ACALL DELA50M DJNZ R6, SENT AJMP START DELA10: MOV R0,#02H ;03 DELA11: DJNZ R0,DELA11 RET DELA30: MOV R0,#10h;11 DELA31: DJNZ R0,DELA31 RET DELA50m: MOV R7,#62h ;11 DL0: MOV R5,#0FFH DL1: DJNZ R5,DL1 DJNZ R7,DL0 RET |
| 2樓: | >>參與討論 |
| 作者: 焊出個(gè)未來(lái) 于 2005/1/27 23:33:00 發(fā)布:
idcard 老師,你的這個(gè)程序我試過(guò)了怎么不好使呢? 我是用你的程序發(fā)了2個(gè)數(shù)據(jù)15H,15H在表里查是Q,怎么用記事本一個(gè)也收不到呢?我的是51,晶振11.0592 ORG 00H JMP START DELA10: MOV R0,#02H ;03 DELA11: DJNZ R0,DELA11 RET DELA30: MOV R0,#10h;11 DELA31: DJNZ R0,DELA31 RET DELA50m: MOV R7,#62h ;11 DL0: MOV R5,#0FFH DL1: DJNZ R5,DL1 DJNZ R7,DL0 RET START: MOV R6, #02H; MOV 3AH,#5aH ;--------------------數(shù)據(jù) MOV 30H,#15H MOV 31H,#15H ; MOV R1,#30H SENT: MOV A,@R1 ;´ý·¢Êý¾Ý-A NOP CLR P3.5 ;Êý¾ÝÏßÖÃΪΜÍΜçÆ½ ACALL DELA10 ;ÑÓʱ10us NOP NOP CLR P3.4 ;ʱÖÓÏßÖÃΪΜÍΜçÆ½ ACALL DELA30 ;ÑÓʱ30us NOP NOP SETB P3.4 ;ʱÖÓÏßÖÃΪ¸ßΜçÆ½,·¢ËÍÆðʼλ MOV B,#9 ;ÖÃÑ­»·´ÎÊý MOV C,P ;ÆæÅ¼±êÖ¾-C CPL C ;żУÑé TC: ACALL DELA10 ACALL DELA10 NOP NOP NOP NOP RRC A MOV P3.5,C ;·¢Ò»Î»Êý¾Ý ACALL DELA10 NOP NOP CLR P3.4 ;²úÉúÒ»¸öʱÖÓÂö³å ACALL DELA30 NOP NOP SETB P3.4 NOP NOP DJNZ B,TC ;δÍê¼ÌÐø NOP NOP ACALL DELA10 ACALL DELA10 NOP NOP NOP NOP SETB P3.5 ;ֹͣλ ACALL DELA10 NOP NOP CLR P3.4 ACALL DELA30 NOP NOP SETB P3.4 SENT2: INC R1 ACALL DELA50M DJNZ R6, SENT AJMP $ END |
|
| 3樓: | >>參與討論 |
| 作者: IDCARD 于 2005/1/28 9:32:00 發(fā)布:
我發(fā)現(xiàn)問(wèn)題了,是和鍵盤(pán)的不兼容。去掉鍵盤(pán)就沒(méi)問(wèn)題了。 另樓上的兄弟,程序沒(méi)問(wèn)題,我晶體是12M,你可換晶體,或是調(diào)一下NOP,叫CLK的高低電平為40U左右就行了,還有你P3.5口若沒(méi)加上拉電阻加一10K上拉就行了。 |
|
| 4樓: | >>參與討論 |
| 作者: winhiwang 于 2005/1/28 10:44:00 發(fā)布:
如果與鍵盤(pán)并連,需要做個(gè)切換 |
|
| 5樓: | >>參與討論 |
| 作者: sayasa 于 2005/1/28 11:27:00 發(fā)布:
如何切換?能不能具體點(diǎn) 另鼠標(biāo)晃動(dòng)也會(huì)出錯(cuò),CLK波形為0(1MS)-1(100US)-0(1MS)-1(100US)-0(1MS)-1(100US)-0(1MS)-1(100US),出錯(cuò)就是這原因引起的,怎么處理好呢?以為我是只上傳,沒(méi)做接收PC的處理,是不是要做處理?具體怎么做? |
|
| 6樓: | >>參與討論 |
| 作者: winhiwang 于 2005/1/28 11:34:00 發(fā)布:
如果鍵盤(pán)鼠標(biāo)都用PS2的要他們之間的沖突,主機(jī)會(huì)禁止另外一方的 可以用多路開(kāi)關(guān)做切換 |
|
| 7樓: | >>參與討論 |
| 作者: shixiudong 于 2005/1/28 11:43:00 發(fā)布:
你用74HC4066切換PS2的各種設(shè)備 可以用74HC4066多路開(kāi)關(guān)切換。 注意: 最好采用74HC4066,不要用CD4066,因?yàn)榍罢叩膶?dǎo)通電阻更小。曾經(jīng)用CD4066不成功。 案例: 我在1998年,用這種方法設(shè)計(jì)了一款POS專(zhuān)用可編程鍵盤(pán),工作良好。 史修棟 |
|
| 8樓: | >>參與討論 |
| 作者: 焊出個(gè)未來(lái) 于 2005/1/28 20:00:00 發(fā)布:
疑惑 根據(jù)PS2的協(xié)議,上電后鍵盤(pán)送AAH給主機(jī),證明初始化成功。 發(fā)送數(shù)據(jù)應(yīng)有通碼和斷碼,比如發(fā)送一個(gè)Q到PC,首先是一個(gè)字節(jié)的通碼,接著 是2個(gè)字節(jié)的斷碼。應(yīng)發(fā)送數(shù)據(jù)15H,F(xiàn)0H,15H。 而我看現(xiàn)在市場(chǎng)上的產(chǎn)品沒(méi)有發(fā)送AAH給HOST,并且發(fā)送數(shù)據(jù)時(shí)也只發(fā)送了兩個(gè)字節(jié),好象兩個(gè)字節(jié)的數(shù)據(jù)還是一樣的。 這是怎么回事呢? |
|
| 9樓: | >>參與討論 |
| 作者: sayasa 于 2005/2/18 8:31:00 發(fā)布:
問(wèn)題解決 正如史修棟兄所說(shuō),是用硬件切換的,程序沒(méi)問(wèn)題,我拆了別人的一臺(tái)看了一下,且定做的連接線時(shí)鐘和數(shù)據(jù)不是并在一起的,而是分別接在設(shè)備上,通過(guò)74HC4066切換.當(dāng)設(shè)備傳數(shù)據(jù)時(shí)斷開(kāi),不傳時(shí)鍵盤(pán)的時(shí)種和數(shù)據(jù)是和PC連在一起的. SENT: MOV C,P1.4 JNC SENT ACALL DELA30 ACALL DELA10 ACALL DELA10 MOV C,P1.4 JNC SENT MOV C,P1.7 還有這段小程序加在發(fā)送前. 謝謝各位兄臺(tái)的支持,還有,建意以后在這問(wèn)問(wèn)題的朋友解決問(wèn)題后在這發(fā)個(gè)貼說(shuō)說(shuō)怎么解決的,以免后來(lái)人發(fā)現(xiàn)同樣的問(wèn)題又要費(fèi)時(shí)間. 新年大吉,早日發(fā)財(cái),呵呵 * - 本貼最后修改時(shí)間:2005-2-18 8:39:57 修改者:sayasa |
|
| 10樓: | >>參與討論 |
| 作者: guoyahui 于 2005/2/18 8:43:00 發(fā)布:
我用m8做了一款不用硬件切換的, 直接截獲鍵盤(pán)和計(jì)算機(jī)數(shù)據(jù)再轉(zhuǎn)發(fā),再加入自己的應(yīng)用 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |