1、文章编号:1310-加入日期:2004-3-24 关闭窗口ps/2键盘的程序,可供參考 給emina(王玲)$MOD51clk bit p1.6 ;時鐘dat bit p1.7 ;數据;destrop 26h,a,r0,r6,r7;=;接收數据keb_0: mov 26h,#00 ;清除call kx_0 ;接收cjne a,#0e0h,f0_a ;a=e0hcall kx_0 ;接收下一位;=;功能鍵f0_1: cjne a,#0f0h,f0_2 ;a=f0hcall kx_0 ;接收下一位clr a ;清除ret ;結束f0_2: add a,#7fh ;a+7fh以上為功能鍵mov dp
2、tr,#keb_a ;設定鍵盤相對碼movc a,a+dptr ;把“鍵盤相對碼“載入累積器 a內mov 26h,a ;鍵盤相對鍵ret ;結束;=;參數鍵f0_a: cjne a,#0f0h,f0_b ;a=f0hcall kx_0 ;接收下一位clr a ;清除ret ;結束f0_b: cjne a,#5ah,keb_3 ;判斷 ENTER按鈕ljmp f0_2 ;為功能鍵keb_3: cjne a,#76h,keb_4 ;判斷 Esc按鈕ljmp f0_2 ;為功能鍵keb_4: cjne a,#66h,keb_5 ;判斷 BKSP按鈕ljmp f0_2 ;為功能鍵keb_5: mov
3、dptr,#keb_a ;設定鍵盤相對碼movc a,a+dptr ;把“鍵盤相對碼“載入累積器 a內ret ;結束;=;設定接收 8位數据kx_0: setb clk ;clk=1(釋放抑制)*setb dat ;dat=1kx_1: mov r7,#80 ;100mskx_2: mov r6,#250 ;kx_3: jnb clk,kx_4 ;判斷開始位(start)djnz r6,kx_3djnz r7,kx_2clr aret;=kx_4: jNb clk,kx_4 ;判斷開始位(start)mov r7,#08 ;設定接收 8位數据clr a ;清零dat_0: jb clk,dat
4、_0 ;判斷 clockmov c,dat ;把數据載入 c內rrc a ;右移一位jnb clk,$ ;判斷 clockdjnz r7,dat_0 ;r7-1jb clk,$ ;校驗位jnb clk,$ ;判斷 clockjb clk,$ ;停止位(STOP)jnb clk,$ ;判斷 clockclr clk ;clk=0(抑制發送)*dat_1: ret;=;鍵盤碼對應表;鍵盤碼對應表Keb_a: db 000h ;00hdb 000h ;01hdb 000h ;02hdb 000h ;03hdb 000h ;04hdb 000h ;05hdb 000h ;06hdb 000h ;07h
5、db 000h ;08hdb 000h ;09hdb 000h ;0ahdb 000h ;0bhdb 000h ;0chdb 000h ;0dhdb 05eh ;0ehdb 000h ;0fhdb 000h ;10hdb 000h ;11hdb 000h ;12hdb 000h ;13hdb 000h ;14hdb 051h ;15hdb 031h ;16h (1)db 000h ;17hdb 000h ;18hdb 000h ;19hdb 05ah ;1ahdb 053h ;1bhdb 041h ;1chdb 057h ;1dhdb 032h ;1eh (2)db 000h ;1fhdb 0
6、00h ;20hdb 043h ;21hdb 058h ;22hdb 044h ;23hdb 045h ;24hdb 034h ;25h (4)db 033h ;26h (3)db 000h ;27hdb 000h ;28hdb 000h ;29hdb 056h ;2ahdb 046h ;2bhdb 054h ;2chdb 052h ;2dhdb 035h ;2eh (5)db 000h ;2fhdb 000h ;30hdb 04eh ;31hdb 042h ;32hdb 048h ;33hdb 047h ;34hdb 059h ;35hdb 036h ;36h (6)db 000h ;37h
7、db 000h ;38hdb 000h ;39hdb 04dh ;3ahdb 04ah ;3bhdb 055h ;3chdb 037h ;3dh (7)db 038h ;3eh (8)db 000h ;3fhdb 000h ;40hdb 02ch ;41hdb 04bh ;42hdb 049h ;43hdb 04fh ;44hdb 030h ;45h (0)db 039h ;46h (9)db 000h ;47hdb 000h ;48hdb 02eh ;49hdb 02fh ;4ahdb 04ch ;4bhdb 03bh ;4chdb 050h ;4dhdb 02dh ;4ehdb 000h
8、;4fhdb 000h ;50hdb 000h ;51hdb 060h ;52hdb 000h ;53hdb 05bh ;54hdb 03dh ;55hdb 000h ;56hdb 000h ;57hdb 000h ;58hdb 000h ;59hdb 000h ;5ahdb 05dh ;5bhdb 000h ;5chdb 027h ;5dhdb 000h ;5ehdb 000h ;5fhdb 000h ;60hdb 000h ;61hdb 000h ;62hdb 000h ;63hdb 000h ;64hdb 000h ;65hdb 000h ;66hdb 000h ;67hdb 000h
9、;68hdb 031h ;69h (1)db 000h ;6ahdb 034h ;6bh (4)db 037h ;6ch (7)db 000h ;6dhdb 000h ;6ehdb 000h ;6fhdb 030h ;70h (0)db 02eh ;71hdb 032h ;72h (2)db 035h ;73h (5)db 036h ;74h (6)db 038h ;75h (8)db 000h ;76hdb 000h ;77hdb 000h ;78hdb 02bh ;79hdb 033h ;7ah (3)db 02dh ;7bhdb 02ah ;7chdb 039h ;7dh (9)db 0
10、00h ;7ehdb 000h ;7fh;=db 000h ;80hdb 000h ;81hdb 000h ;82hdb 000h ;83hdb 000h ;84hdb 000h ;85hdb 000h ;86hdb 000h ;87hdb 000h ;88hdb 000h ;89hdb 000h ;8ahdb 000h ;8bhdb 000h ;8chdb 000h ;8dhdb 000h ;8ehdb 000h ;8fhdb 000h ;90hdb 000h ;91hdb 000h ;92hdb 000h ;93hdb 000h ;94hdb 000h ;95hdb 000h ;96hdb
11、 000h ;97hdb 000h ;98hdb 000h ;99hdb 000h ;9ahdb 000h ;9bhdb 000h ;9chdb 000h ;9dhdb 000h ;9ehdb 000h ;9fhdb 000h ;a0hdb 000h ;a1hdb 000h ;a2hdb 000h ;a3hdb 000h ;a4hdb 000h ;a5hdb 000h ;a6hdb 000h ;a7hdb 000h ;a8hdb 000h ;a9hdb 000h ;aahdb 000h ;abhdb 000h ;achdb 000h ;adhdb 000h ;aehdb 000h ;afhdb
12、 000h ;b0hdb 000h ;b1hdb 000h ;b2hdb 000h ;b3hdb 000h ;b4hdb 000h ;b5hdb 000h ;b6hdb 000h ;b7hdb 000h ;b8hdb 000h ;b9hdb 000h ;bahdb 000h ;bbhdb 000h ;bchdb 000h ;bdhdb 000h ;behdb 000h ;bfhdb 000h ;c0hdb 000h ;c1hdb 000h ;c2hdb 000h ;c3hdb 000h ;c4hdb 000h ;c5hdb 000h ;c6hdb 000h ;c7hdb 000h ;c8hdb
13、 000h ;c9hdb 000h ;cahdb 000h ;cbhdb 000h ;cchdb 000h ;cdhdb 000h ;cehdb 000h ;cfhdb 000h ;d0hdb 000h ;d1hdb 000h ;d2hdb 000h ;d3hdb 000h ;d4hdb 000h ;d5hdb 000h ;d6hdb 000h ;d7hdb 000h ;d8hdb 001h ;d9h (ENTER)db 000h ;dahdb 000h ;dbhdb 000h ;dchdb 000h ;ddhdb 000h ;dehdb 000h ;dfhdb 000h ;e0hdb 000
14、h ;e1hdb 000h ;e2hdb 000h ;e3hdb 000h ;e4hdb 040h ;e5h (Back Space)db 000h ;e6hdb 000h ;e7hdb 000h ;e8hdb 000h ;e9hdb 008h ;eah (L ARROW)db 000h ;ebhdb 000h ;echdb 000h ;edhdb 000h ;eehdb 000h ;efhdb 020h ;f0h (Delete)db 004h ;f1h (D ARROW)db 000h ;f2hdb 010h ;f3h (R ARROW)db 002h ;f4h (U ARROW)db 080h ;f5h (Esc)db 000h ;f6hdb 000h ;f7hdb 000h ;f8hdb 000h ;f9hdb 000h ;fahdb 000h ;fbhdb 000h ;fchdb 000h ;fdhdb 000h ;fehdb 000h ;ffh(文章推荐人:shnj)