cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1582|回复: 0

ps/2键盘的程序,可供參考

[复制链接]
发表于 2004-11-20 02:13:58 | 显示全部楼层 |阅读模式
$MOD51
    clk    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=e0h
          call    kx_0          ;接收下一位
;===========================
;功能鍵
f0_1:    cjne    a,#0f0h,f0_2   ;a=f0h
         call    kx_0           ;接收下一位
         clr    a               ;清除
         ret                    ;結束
f0_2:    add    a,#7fh          ;a+7fh以上為功能鍵
         mov    dptr,#keb_a     ;設定鍵盤相對碼
         movc    a,@a+dptr      ;把"鍵盤相對碼"載入累積器a內
         mov    26h,a           ;鍵盤相對鍵
         ret                    ;結束
;===========================
;參數鍵
f0_a:    cjne    a,#0f0h,f0_b   ;a=f0h
         call    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    dptr,#keb_a    ;設定鍵盤相對碼
          movc    a,@a+dptr    ;把"鍵盤相對碼"載入累積器a內
          ret                  ;結束
;===========================
;設定接收8位數据
kx_0:    setb    clk        ;clk=1(釋放抑制)*******
         setb    dat        ;dat=1
kx_1:    mov    r7,#80       ;100ms
kx_2:    mov    r6,#250      ;
kx_3:    jnb    clk,kx_4    ;判斷開始位(start)
         djnz    r6,kx_3
         djnz    r7,kx_2
         clr    a
         ret
;=====================
kx_4:    jNb    clk,kx_4    ;判斷開始位(start)
         mov    r7,#08       ;設定接收8位數据
         clr    a            ;清零
dat_0:   jb    clk,dat_0     ;判斷clock
         mov    c,dat        ;把數据載入c內
         rrc    a           ;右移一位
         jnb    clk,$        ;判斷clock
         djnz    r7,dat_0    ;r7-1
         jb    clk,$        ;校驗位
         jnb    clk,$        ;判斷clock
         jb    clk,$        ;停止位(STOP)
         jnb    clk,$        ;判斷clock
         clr    clk        ;clk=0(抑制發送)*******
dat_1:    ret
;========================================================================;鍵盤碼
對應表
;鍵盤碼對應表
Keb_a:    db    000h    ;00h
    db    000h    ;01h
    db    000h    ;02h
    db    000h    ;03h
    db    000h    ;04h
    db    000h    ;05h
    db    000h    ;06h
    db    000h    ;07h
    db    000h    ;08h
    db    000h    ;09h
    db    000h    ;0ah
    db    000h    ;0bh
    db    000h    ;0ch
    db    000h    ;0dh
    db    05eh    ;0eh
    db    000h    ;0fh

    db    000h    ;10h
    db    000h    ;11h
    db    000h    ;12h
    db    000h    ;13h
    db    000h    ;14h
    db    051h    ;15h
    db    031h    ;16h (1)
    db    000h    ;17h
    db    000h    ;18h
    db    000h    ;19h
    db    05ah    ;1ah
    db    053h    ;1bh
    db    041h    ;1ch
    db    057h    ;1dh
    db    032h    ;1eh (2)
    db    000h    ;1fh

    db    000h    ;20h
    db    043h    ;21h
    db    058h    ;22h
    db    044h    ;23h
    db    045h    ;24h
    db    034h    ;25h (4)
    db    033h    ;26h (3)
    db    000h    ;27h
    db    000h    ;28h
    db    000h    ;29h
    db    056h    ;2ah
    db    046h    ;2bh
    db    054h    ;2ch
    db    052h    ;2dh
    db    035h    ;2eh (5)
    db    000h    ;2fh
   
    db    000h    ;30h
    db    04eh    ;31h
    db    042h    ;32h
    db    048h    ;33h
    db    047h    ;34h
    db    059h    ;35h
    db    036h    ;36h (6)
    db    000h    ;37h
    db    000h    ;38h
    db    000h    ;39h
    db    04dh    ;3ah
    db    04ah    ;3bh
    db    055h    ;3ch
    db    037h    ;3dh (7)
    db    038h    ;3eh (8)
    db    000h    ;3fh
   
    db    000h    ;40h
    db    02ch    ;41h
    db    04bh    ;42h
    db    049h    ;43h
    db    04fh    ;44h
    db    030h    ;45h (0)
    db    039h    ;46h (9)
    db    000h    ;47h
    db    000h    ;48h
    db    02eh    ;49h
    db    02fh    ;4ah
    db    04ch    ;4bh
    db    03bh    ;4ch
    db    050h    ;4dh
    db    02dh    ;4eh
    db    000h    ;4fh
   
    db    000h    ;50h
    db    000h    ;51h
    db    060h    ;52h
    db    000h    ;53h
    db    05bh    ;54h
    db    03dh    ;55h
    db    000h    ;56h
    db    000h    ;57h
    db    000h    ;58h
    db    000h    ;59h
    db    000h    ;5ah
    db    05dh    ;5bh
    db    000h    ;5ch
    db    027h    ;5dh
    db    000h    ;5eh
    db    000h    ;5fh

    db    000h    ;60h
    db    000h    ;61h
    db    000h    ;62h
    db    000h    ;63h
    db    000h    ;64h
    db    000h    ;65h
    db    000h    ;66h
    db    000h    ;67h
    db    000h    ;68h
    db    031h    ;69h (1)
    db    000h    ;6ah
    db    034h    ;6bh (4)
    db    037h    ;6ch (7)
    db    000h    ;6dh
    db    000h    ;6eh
    db    000h    ;6fh

    db    030h    ;70h (0)
    db    02eh    ;71h
    db    032h    ;72h (2)
    db    035h    ;73h (5)
    db    036h    ;74h (6)
    db    038h    ;75h (8)
    db    000h    ;76h
    db    000h    ;77h
    db    000h    ;78h
    db    02bh    ;79h
    db    033h    ;7ah (3)
    db    02dh    ;7bh
    db    02ah    ;7ch
    db    039h    ;7dh (9)
    db    000h    ;7eh
    db    000h    ;7fh

;==============================
    db    000h    ;80h
    db    000h    ;81h
    db    000h    ;82h
    db    000h    ;83h
    db    000h    ;84h
    db    000h    ;85h
    db    000h    ;86h
    db    000h    ;87h
    db    000h    ;88h
    db    000h    ;89h
    db    000h    ;8ah
    db    000h    ;8bh
    db    000h    ;8ch
    db    000h    ;8dh
    db    000h    ;8eh
    db    000h    ;8fh

    db    000h    ;90h
    db    000h    ;91h
    db    000h    ;92h
    db    000h    ;93h
    db    000h    ;94h
    db    000h    ;95h
    db    000h    ;96h
    db    000h    ;97h
    db    000h    ;98h
    db    000h    ;99h
    db    000h    ;9ah
    db    000h    ;9bh
    db    000h    ;9ch
    db    000h    ;9dh
    db    000h    ;9eh
    db    000h    ;9fh

    db    000h    ;a0h
    db    000h    ;a1h
    db    000h    ;a2h
    db    000h    ;a3h
    db    000h    ;a4h
    db    000h    ;a5h
    db    000h    ;a6h
    db    000h    ;a7h
    db    000h    ;a8h
    db    000h    ;a9h
    db    000h    ;aah
    db    000h    ;abh
    db    000h    ;ach
    db    000h    ;adh
    db    000h    ;aeh
    db    000h    ;afh

    db    000h    ;b0h
    db    000h    ;b1h
    db    000h    ;b2h
    db    000h    ;b3h
    db    000h    ;b4h
    db    000h    ;b5h
    db    000h    ;b6h
    db    000h    ;b7h
    db    000h    ;b8h
    db    000h    ;b9h
    db    000h    ;bah
    db    000h    ;bbh
    db    000h    ;bch
    db    000h    ;bdh
    db    000h    ;beh
    db    000h    ;bfh

    db    000h    ;c0h
    db    000h    ;c1h
    db    000h    ;c2h
    db    000h    ;c3h
    db    000h    ;c4h
    db    000h    ;c5h
    db    000h    ;c6h
    db    000h    ;c7h
    db    000h    ;c8h
    db    000h    ;c9h
    db    000h    ;cah
    db    000h    ;cbh
    db    000h    ;cch
    db    000h    ;cdh
    db    000h    ;ceh
    db    000h    ;cfh

    db    000h    ;d0h
    db    000h    ;d1h
    db    000h    ;d2h
    db    000h    ;d3h
    db    000h    ;d4h
    db    000h    ;d5h
    db    000h    ;d6h
    db    000h    ;d7h
    db    000h    ;d8h
    db    001h    ;d9h (ENTER)
    db    000h    ;dah
    db    000h    ;dbh
    db    000h    ;dch
    db    000h    ;ddh
    db    000h    ;deh
    db    000h    ;dfh

    db    000h    ;e0h
    db    000h    ;e1h
    db    000h    ;e2h
    db    000h    ;e3h
    db    000h    ;e4h
    db    040h    ;e5h (Back Space)
    db    000h    ;e6h
    db    000h    ;e7h
    db    000h    ;e8h
    db    000h    ;e9h
    db    008h    ;eah (L ARROW)
    db    000h    ;ebh
    db    000h    ;ech
    db    000h    ;edh
    db    000h    ;eeh
    db    000h    ;efh

    db    020h    ;f0h (Delete)
    db    004h    ;f1h (D ARROW)
    db    000h    ;f2h
    db    010h    ;f3h (R ARROW)
    db    002h    ;f4h (U ARROW)
    db    080h    ;f5h (Esc)
    db    000h    ;f6h
    db    000h    ;f7h
    db    000h    ;f8h
    db    000h    ;f9h
    db    000h    ;fah
    db    000h    ;fbh
    db    000h    ;fch
    db    000h    ;fdh
    db    000h    ;feh
    db    000h    ;ffh
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-4 14:20 , Processed in 0.455530 second(s), 7 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表