|
$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
|
|