|
楼主 |
发表于 2004-4-1 00:20:06
|
显示全部楼层
re:$MOD51 clk b...
$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=1kx_1: mov r7,#80 ;100mskx_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 ;右移一位 |
|