FAQ | Points | Add... | Recent posts | Search | Register | Log in


Interfejs myszy i klawiatury komputerowej dla PICa


Post new topic  Reply to topic      Main Page -> Forum Index -> Download, Articles -> Interfejs myszy i klawiatury komputerowej dla PICa
Author
Message
zasoby
Poziom 19
Poziom 19


Joined: 11 Jul 2002
Posts: 792

Post#1 Post from the author of the topic 17 Sep 2004 22:21   

Interfejs myszy i klawiatury komputerowej dla PICa


Dużo układów bazujących na PIC wykorzystują proste przyciski do sterowania funkcjami zbudowanego urządzenia. Przy niewielkich ilościach jest opłacalne kupienie kilku przycisków, wszystko komplikuje się jeżeli potrzebne jest dużo przycisków i zaprogramowanie pod każdym przyciskiem innej funkcji. Wspomnijmy, że pomysł na dwukrotne kliknięcie został opatentowany ;) Z drugiej strony ceny klawiatur są bardzo niskie, osoby wymieniają klawiaturę przynajmniej raz na kilka lat. Czemu nie wykorzystać klawiatury lub myszki do sterowania pracą mikrokontrolera PIC?

Rozwiązanie jest kompatybilne tylko z złączem PS/2.

Interfejs myszy i klawiatury komputerowej dla PICa

Demonstracyjny listing został napisany dla PIC16F628, gdzie pin RA0 jest używany dla linii DATA PS2 a RA1 jest używany dla CLK. Można użyć dowolnego PICa i dowolnych pinów wprowadzając korekcję do listingu. Na pokładzie klawiatury znajduje się pewnego rodzaju niewielki procesor z którym należy się skomunikować. Do tego są używane linie DATA i CLK, a zasilanie +5V jest doprowadzane pinami 5 oraz 2. Dane są wysyłane w sposób szeregowy - bit startu - 8 bitów danych oraz bit stopu. Wszystko jest odpowiednio synchronizowane przez sygnał zegarowy.

Listing programu dane wejściowe z klawiatury PS/2
Code:

MAIN: comf PORTA,W ; are clock and data lines both high?
andlw b’0000001’ ; (i.e. is keyboard in Idle state?)
btfsc STATUS,Z
goto MAIN ; no
call RECEIVE ; yes, so check if a key pressed
movf BYTE,W ; is BYTE > 0 (has a data byte been received?)
btfsc STATUS,Z
goto MAIN ; no, so try again
btfss PARITY,0 ; yes, is parity bit correct (hi)?
goto MAIN ; no, so start again
call YourRoutine ; yes (data received ok so use it as you want)
goto MAIN ; repeat it all again
RECEIVE: btfss PORTA,1 ; wait till clock high (idle clock)
goto RECEIVE ; not yet high
btfsc PORTA,0 ; it’s high, so is data line low (start bit)?
return ; no, it’s high, so a false Start bit, try again
clrf BYTE ; yes, set BYTE to zero prior to getting data
movlw 8 ; set loop for 8 data bits
movwf LOOP
clrf PARITY ; clear parity record
RECDATA: rrf BYTE,F ; rotate byte to make room for received bit
call HIGHLOW ; wait for clock high to low transition
RX2: btfsc PORTA,0 ; is data low?
goto RECSET ; no, it’s high
bcf BYTE,7 ; yes, data is low so clear bit 7 of BYTE
goto RECNEXT ; and ignore parity counter
RECSET: bsf BYTE,7 ; set bit 7 of BYTE
incf PARITY,F ; and add 1 to parity counter
RECNEXT: decfsz LOOP,F
goto RECDATA ; loop until all 8 bits have been received
call HIGHLOW ; wait for clock high to low transition
movf PORTA,W ; get parity bit
xorwf PARITY,W ; XOR with parity counter
andlw 1 ; extract bit 0 of parity
movwf PARITY ; and store it
call HIGHLOW ; wait for Stop bit (but not actually used)
return ; return to main routine
HIGHLOW: btfss PORTA,1 ; loop until clock is high
goto HIGHLOW
HL2: btfsc PORTA,1 ; loop until clock is low
goto HL2
return


W załączniku opis w języku angielskim, schemat przykładowego układu, listingi programów, znaczenie kodów klawiszy.

EPE



PIC_to_keyboard_and_mouse.zip
 Filename:  PIC_to_keyboard_and_mouse.zip
Download
 Contents:  kbd151.asm , mouse213.asm , p16f628.inc , KBD151.HEX , MOUSE213.HEX , PIC to k...d mouse
See all...
 Filesize:  15.18 KB
 Punkty:  0.00


klawiatura dla pic.pdf
 Filename:  klawiatura dla pic.pdf
Download
 Contents:  
 Filesize:  192.4 KB
 Punkty:  0.00

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 17 Sep 2004 22:21   





Back to top
   
zasoby
Poziom 19
Poziom 19


Joined: 11 Jul 2002
Posts: 792

Post#2 Post from the author of the topic 19 Sep 2004 11:28   

Re: Interfejs myszy i klawiatury komputerowej dla PICa


Przykładowa gra z wykorzystaniem myszki i kody źródłowe



alpha mouse.zip
 Filename:  alpha mouse.zip
Download
 Contents:  alpha mouse , alphamouse.txt , alphamouse70.asm , ALPHAMOUSE70.HEX
See all...
 Filesize:  5.62 KB
 Punkty:  0.00


alpha mouse.pdf
 Filename:  alpha mouse.pdf
Download
 Contents:  alpha mouse , alphamouse.txt , alphamouse70.asm , ALPHAMOUSE70.HEX
See all...
 Filesize:  185.15 KB
 Punkty:  0.00

Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Download, Articles -> Interfejs myszy i klawiatury komputerowej dla PICa
Statement for Wykop Statement for Facebook Statement for Delicious Statement for Digg Statement for Google Statement for Twitter Statement for Blip
Page 1 of 1
Similar topics
Interfejs MIDI IN ---> USB dla ubogich (14)
Interfejs IDE dla kart CompactFlash (CF) (85)
Corsair Vengeance M60 i M90 - myszy dla graczy FPS, MMO i RTS (1)
"Pianino" z klawiatury komputerowej PS/2 (21)
2-żyłowy interfejs klawiatury na ne555. (19)
Przełącznik klawiatury / myszy PS2 (2)
Jelfin proponuje nowy typ myszy komputerowej (5)
Kamera małej rozdzielczości z myszy komputerowej. (103)
Interfejs do programów - oscyloskopów dla karty dźwiękowej (3)

Page generation time: 0.13 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed