亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 96key.txt

?? 通過96鍵程序說明如何構造多任務鍵盤和"零耗時"消抖技術
?? TXT
字號:
;-------96鍵程序-------------------------
;這是1個回復題中的應用示例,已通過軟仿真“驗證”
;這只是鍵掃描技術的1個“縮影”,方法實在太多.
;有“難看之處”,敬請高手們批評指教.
;HotPower將虛心接受,堅決改正.重新做人.
;發表目的: 在21IC中壯大游擊隊.
;----------------------------------------------------
;由于2051資源問題,本程序只取多任務鍵盤的壓放鍵2個事件
;廢除長壓鍵(壓鍵1段時間后才激活)事件
;廢除長放鍵(放鍵1段時間后才激活)事件
;廢除雙擊鍵事件
;廢除任意組合鍵事件
;----------常數定義------------------------------
TIME208US  EQU -208;20mS/96=208uS
TIME50MS   EQU -5000;50000uS
;KEYCOUNT   EQU   1;鍵盤鍵個數(軟仿真時用)
;------------------------------------------------
KEYCOUNT   EQU   96;鍵盤鍵個數(實際應用)


;----------RAM地址定義----------------------------
;--------96鍵鍵狀態標志位數組Bits[12*8位]--------
KEYBUFF1   DATA  08H;08H~13H(12個字節96位)對應96鍵
;--------96鍵鍵跳變標志位數組Bits[12*8位]--------
KEYBUFF2   DATA  14H;14H~1FH(12個字節96位)對應96鍵
;------------------------------------------------
KEYNUM     DATA  30H;
HotPower_55H      DATA   6EH
HotPower_AAH      DATA   6FH
;---------------------------------------
SP_MIN       DATA HotPower_AAH
;-------主程序開始----------------------
    ORG   0000H
START:
    LJMP  MAINSTART;主程序開始
    ORG   0003H
;-------掉電保護中斷INT0服務程序--------
INT0_INTADDR:
    RETI
    ORG   000BH
;-------定時器T0中斷服務程序------------
;工作在8位自動裝載方式,每208uS中斷一次
T0_INTADDR:
    LJMP  T0INTPROC;定時器T0中斷服務程序
    RETI
    ORG   0013H
;-------外部中斷INT1服務程序------------
INT1_INTADDR:
    RETI
    ORG   001BH
;-------定時器T1中斷服務程序------------
T1_INTADDR:
    LJMP  T1INTPROC;定時器T1中斷服務程序
    RETI
;    ORG   0023H
;-------串行中斷服務程序----------------
;SINT_INTADDR:
;    RETI
;-------------------------------------------
;    ORG   002BH
;-------定時器T2中斷服務程序------------
;    LJMP  T2INTPROC;執行中斷服務程序
;    RETI
;-------執行鍵盤命令----------------------
;本程序利用散轉回收技術(指針函數)
;它的最大優點是散轉處的子程序可被它用(函數)
;它比JMP @A+DPTR指令要“游擊”很多,靈活和隱蔽了許多
;它在對付“反匯編”方面,比JMP @A+DPTR更“壞”
;HotPower打死也不用JMP @A+DPTR
KEYPROC:
;入口:  DPTR散轉地址表
;       ACC 散轉號
    CJNE  A,#KEYCOUNT,$+3
    JNC   KEYPROC_EXIT;非法鍵(96~255)防止程序飛,不散轉
    RL    A;*2;地址需要2字節(像ARM的大端模式)
    ADD   A,DPL
    MOV   DPL,A
    CLR   A
    ADDC  A,DPH
    MOV   DPH,A
    MOV   A,#01H;低8位
    MOVC  A,@A+DPTR;取低8位地址
        PUSH  ACC;壓入事件處理低8位地址
        CLR   A;高8位
    MOVC  A,@A+DPTR;取高8位地址
        PUSH  ACC;壓入事件處理高8位地址
KEYPROC_EXIT:
    RET;執行鍵盤命令(散轉JMP @A+DPTR)
;-------壓鍵事件處理地址表--------------------
KEYJMPPROCTAB:
    DW    KEYPROC0;0鍵壓鍵
    DW    KEYPROC1
    DW    KEYPROC2
;............................
    DW    KEYPROC95;95鍵壓鍵
;-------放鍵事件處理地址表--------------------
KEYJMPPROCTABX:
    DW    KEYPROC0X;0鍵放鍵
    DW    KEYPROC1X
    DW    KEYPROC2X
;............................
    DW    KEYPROC95X;95鍵放鍵
MAINSTART:
;-------P0口初始化------------------
    MOV   P0,#11111111B
;-------P1口初始化------------------
    MOV   P1,#11111111B
;-------P2口初始化------------------
    MOV   P2,#11111111B
;-------P3口初始化------------------
    MOV   P3,#11111111B
;--------------------------------
    MOV   IE,#00000000B;EA=0,ES=ET2=ET1=EX1=ET0=EX0=0
    MOV   SP,#SP_MIN;
          MOV   PSW,#00000000B;RS1RS0=00,R0~R7=00H~07H
    MOV   A,#LOW(MAINNEXT)
    PUSH  ACC
    MOV   A,#HIGH(MAINNEXT)
    PUSH  ACC
    RETI
MAINPROC:
    LCALL MAININIT;系統初始化
        MOV   IE,#10001010B;開中斷
;-------主循環-------------------------------
MAINLOOP:
    ORL   PCON,#10001101B;待機
    SJMP  MAINLOOP;死循環
MAINNEXT:
    MOV   A,#LOW(MAINPROC)
    PUSH  ACC
    MOV   A,#HIGH(MAINPROC)
    PUSH  ACC
    RETI
;-------主程序初始化------------------------
MAININIT:
;-------接口初始化--------------------------
;-------內存初始化-------------------------
    MOV   A,HotPower_55H
    XRL   A,HotPower_AAH
    CPL   A
    JZ    MAININITNEXT;內存未破壞
    MOV   HotPower_55H,#055H
    MOV   HotPower_AAH,#0AAH
    LCALL SYSTEMINIT;系統初始化
MAININITNEXT:
;-------運行初始化---------------
    LCALL SYSTEMSETUP;系統設置
    RET
SYSTEMINIT:
    LCALL KEYBUFFINIT
    RET
SYSTEMSETUP:
;-------系統主頻12MHz---------------------------------
;    MOV   IP,#00100001B;中斷優先級EX0>ET2>ET0>EX1>ES
     MOV   TMOD,#00010010B;T1=MODE1(16位定時器),T0=MODE2(8位定時器)
    MOV   TCON,#01010101B;啟動定時器TR1EQUTR0EQU1,IT1EQUIT0EQU1
;------------------------------------------------------
    MOV   TL0,#TIME208US;設置定時器0時間常數
    MOV   TH0,#TIME208US;設置定時器0時間常數
;------------------------------------------------------
;    MOV   TL1,#LOW(TIMEXMS);設置定時器1時間常數
;    MOV   TH1,#HIGH(TIMEXMS)
;-------
KEYBUFFINIT:
    MOV   KEYNUM,#00H
    MOV   R0,#KEYBUFF1
KEYBUFFINITLOOP:
    MOV   @R0,#00H
    INC   R0
    CJNE  R0,#KEYBUFF2+12,KEYBUFFINITLOOP
    RET
;---------------------------------------------
INKEY:
;T0每中斷1次,將進行1次鍵"掃描"
    LCALL TESTKEY;鍵盤測試(不掃但描)
;-------鍵盤軟仿真測試點-----------------
;在此   A=0 無鍵壓下,A<>0有鍵壓下
;若調試n個鍵,需將KEYCOUNT設置為n.(KEYCOUNT=1~96)
;----------------------------------------
    JNZ   INKEY1;有鍵壓下
INKEY0:
;-------無鍵壓下------------------------
    LCALL GETKEYBIT;取鍵狀態
    JZ    INKEY01;鍵狀態未發生變化
        LCALL CLRKEYBIT;設置放鍵標志
    LCALL SETKEYBITK;設置跳變標志(防止放鍵抖動)
    RET
INKEY01:
    LCALL GETKEYBITK;取鍵跳變標志
    JZ    INKEY02;鍵未發生跳變(防止2次事件處理)
    LCALL CLRKEYBITX;設置重入標志
        MOV   A,KEYNUM;取鍵號
        MOV   DPTR,#KEYJMPPROCTABX;鍵盤放鍵事件處理表
    LCALL KEYPROC;執行鍵盤放鍵事件處理
INKEY02:
    RET
INKEY1:
;-------有鍵壓下------------------------
    LCALL GETKEYBIT;取鍵狀態
    JNZ   INKEY11;鍵狀態未發生變化(防止2次事件處理)
        LCALL SETKEYBIT;設置壓鍵標志
    LCALL SETKEYBITK;設置跳變標志(防止壓鍵抖動)
    RET
INKEY11:
    LCALL GETKEYBITK;取鍵跳變標志
    JZ    INKEY12;鍵未發生跳變
    LCALL CLRKEYBITX;設置重入標志
        MOV   A,KEYNUM;取鍵號
        MOV   DPTR,#KEYJMPPROCTAB;鍵盤壓鍵事件處理表
    LCALL KEYPROC;執行鍵盤壓鍵事件處理
INKEY12:
    RET
GETKEYBITK:
    MOV   A,R0
    ADD   A,#12
    MOV   R0,A
    SJMP  GETKEYBITX
GETKEYBIT:
    LCALL GETKEYBITADDR
    LCALL GETKEYBITVAL
GETKEYBITX:
    MOV   A,@R0
        ANL   A,B
    RET
SETKEYBITK:
    MOV   A,R0
    ADD   A,#12
    MOV   R0,A
    SJMP  SETKEYBITX
SETKEYBIT:
    LCALL GETKEYBITADDR
    LCALL GETKEYBITVAL
SETKEYBITX:
    MOV   A,@R0
        ORL   A,B
    MOV   @R0,A
    RET
CLRKEYBITK:
    MOV   A,R0
    ADD   A,#12
    MOV   R0,A
    SJMP  CLRKEYBITX
CLRKEYBIT:
    LCALL GETKEYBITADDR
    LCALL GETKEYBITVAL
CLRKEYBITX:
    MOV   A,@R0
    XRL   B,#0FFH;取反B
        ANL   A,B
    XRL   B,#0FFH;還原B
    MOV   @R0,A
    RET
;-----------------------------------
;CPLKEYBITK:
;    MOV   A,R0
;    ADD   A,#12
;    MOV   R0,A
;    SJMP  CPLKEYBITX
;CPLKEYBIT:
;    LCALL GETKEYBITADDR
;    LCALL GETKEYBITVAL
;CPLKEYBITX:
;    MOV   A,@R0
;        XRL   A,B
;    MOV   @R0,A
;    RET
;---------------------------------------------
GETKEYBITVAL:
    MOV   A,KEYNUM
    ANL   A,#07H
    ADD   A,#GETKEYBITTAB-GETKEYBITTABOFF
    MOVC  A,@A+PC
GETKEYBITTABOFF:
    MOV   B,A
    RET
GETKEYBITTAB:
    DB    00000001B
    DB    00000010B
    DB    00000100B
    DB    00001000B
    DB    00010000B
    DB    00100000B
    DB    01000000B
    DB    10000000B
    RET
;----------------------------------------------
GETKEYBITADDR:
    MOV   A,KEYNUM
    ANL   A,#01111000B
    RR    A
    RR    A
    RR    A
    ADD   A,#KEYBUFF1
    MOV   R0,A
    RET
;-------鍵測試子程序--------------------------
TESTKEY:
;鍵號KEYNUM=000 0000B~101 1111B(0~95)
;入口   無
;出口   ACC==0 無鍵壓下(鍵號KEYNUM)
;       ACC<>0 有鍵壓下(鍵號KEYNUM)
    MOV   A,KEYNUM;取鍵號
    ANL   A,#0FH;取行號(鍵號低4位)
    ANL   P3,#0F0H;清行信號
    ORL   P3,A;發送行掃描信號DCBA;P3.3~P3.0
    MOV   A,KEYNUM;取鍵號
    ANL   A,#01110000B;取列號(鍵號高3位)
    SWAP  A;變換到低3位
    ADD   A,#TESTKEYTAB-TESTKEYTABOFF;得到表地址
        MOVC  A,@A+PC;取列表值
TESTKEYTABOFF:
    JZ    TESTKEYEXIT;6,7非法列,認為無鍵壓下
    PUSH  B;保護現場
    MOV   B,A;暫存
    ANL   A,P1;接收列值P1.7~P1.2,有鍵壓下為0
    XRL   A,B;有鍵壓下非0
    POP   B;恢復現場
TESTKEYEXIT:
    RET
TESTKEYTAB:
    DB    00000100B;0列
    DB    00001000B;1列
    DB    00010000B;2列
    DB    00100000B;3列
    DB    01000000B;4列
    DB    10000000B;5列
    DB    00000000B;6列非法
    DB    00000000B;7列非法
;-------定時器T0中斷服務程序--------------------
;每個鍵20mS掃描1次,并自動進行壓鍵或放鍵消抖處理
;這是1個大規模(96鍵)的鍵盤游擊戰的非典戰例
;特點:
;1.不需鍵掃描.(T0中斷的次序即為鍵掃描號)
;2.不需鍵消抖.(在T0中斷96次后自動消抖)
;3.壓鍵放鍵事件分離(散轉回收技術)
;4.用戶事件"并行處理"(mS級分時)
T0INTPROC:
    PUSH  PSW
    PUSH  ACC
    PUSH  B
    PUSH  DPL
    PUSH  DPH
T0INTPROC_START:
    LCALL INKEY;鍵掃描并執行壓放鍵事件處理
    INC   KEYNUM;準備下一鍵號(T0中斷計數)
    MOV   A,KEYNUM
    CJNE  A,#KEYCOUNT,T0INTPROC_EXIT
    MOV   KEYNUM,#00H;開始下1輪鍵掃描
T0INTPROC_EXIT:
    POP   DPH
    POP   DPL
    POP   B
    POP   ACC
    POP   PSW
    RETI
;-------定時器T1中斷服務程序------------
T1INTPROC:
    RETI
;-------0鍵壓鍵事件處理---------------------
KEYPROC0:
;在此添加用戶壓鍵事件
    RET
;-------1鍵壓鍵事件處理---------------------
KEYPROC1:
;在此添加用戶壓鍵事件
    RET
;-------2鍵壓鍵事件處理---------------------
KEYPROC2:
;在此添加用戶壓鍵事件
    RET
;-------95鍵壓鍵事件處理---------------------
KEYPROC95:
;在此添加用戶壓鍵事件
    RET
;-------0鍵放鍵事件處理---------------------
KEYPROC0X:
;在此添加用戶放鍵事件
    RET
;-------1鍵放鍵事件處理---------------------
KEYPROC1X:
;在此添加用戶放鍵事件
    RET
;-------2鍵放鍵事件處理---------------------
KEYPROC2X:
;在此添加用戶放鍵事件
    RET
;-------95鍵放鍵事件處理---------------------
KEYPROC95X:
;在此添加用戶放鍵事件
    RET
;-------全部程序結束--------------------------------------
    END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人动漫精品| 国产尤物一区二区| 另类的小说在线视频另类成人小视频在线| 久久 天天综合| 在线视频一区二区三| 久久免费看少妇高潮| 亚洲成av人影院在线观看网| 99re视频这里只有精品| 久久久亚洲精品石原莉奈| 亚瑟在线精品视频| 日本韩国欧美一区二区三区| 久久精品人人做| 美国精品在线观看| 欧美日韩精品一区二区三区| 国产精品久久一卡二卡| 国产伦精一区二区三区| 日韩你懂的在线观看| 午夜av电影一区| 色老汉av一区二区三区| 中文字幕佐山爱一区二区免费| 国产一区二区美女诱惑| 日韩一区二区免费高清| 日韩av中文字幕一区二区三区| 欧亚洲嫩模精品一区三区| 中文字幕亚洲欧美在线不卡| 国产91富婆露脸刺激对白 | 日韩精品亚洲专区| 在线观看免费视频综合| 亚洲色图在线看| eeuss鲁片一区二区三区| 国产欧美日韩在线| 国产不卡视频在线观看| 国产校园另类小说区| 国产美女视频91| 久久精品视频免费| 国产成人精品三级麻豆| 久久久不卡网国产精品二区| 国产一区二区在线观看免费| 国产片一区二区三区| 国产成a人亚洲精| 国产精品久久网站| 99久久婷婷国产| 亚洲午夜久久久久| 在线电影国产精品| 韩国v欧美v日本v亚洲v| 国产欧美精品一区二区色综合朱莉| 国产高清久久久| 成人欧美一区二区三区| 欧美三级资源在线| 亚洲一二三区在线观看| 欧美日韩成人高清| 国产综合色视频| 国产精品久久久久影院| 欧美影视一区二区三区| 日本一区中文字幕| 国产日韩精品视频一区| 色综合色综合色综合| 日韩精品91亚洲二区在线观看| 精品国产凹凸成av人网站| 成人午夜电影久久影院| 一区二区三区免费看视频| 欧美一级高清片在线观看| 国产一区二区三区美女| 亚洲日本在线a| 91精品国产欧美一区二区18 | 欧美精品久久一区二区三区| 久久99精品国产.久久久久 | 亚洲国产中文字幕在线视频综合 | 免费观看久久久4p| 久久精品视频在线免费观看 | 国产成人午夜精品影院观看视频| 久久青草国产手机看片福利盒子| 懂色av一区二区三区蜜臀| 日韩免费高清av| 欧美色视频在线观看| 亚洲精品视频一区| 制服丝袜成人动漫| 国产高清视频一区| 亚洲综合图片区| 精品嫩草影院久久| 99久久精品免费看国产| 丝袜美腿亚洲色图| 国产精品国产三级国产普通话蜜臀 | 精品处破学生在线二十三| 从欧美一区二区三区| 一级中文字幕一区二区| 精品国产污污免费网站入口 | 国产一区二区三区免费看| 一色屋精品亚洲香蕉网站| 91精品免费在线观看| 国产99精品在线观看| 亚洲二区在线观看| 中文字幕亚洲区| 在线观看91精品国产麻豆| 国产精品77777竹菊影视小说| 亚洲人成在线播放网站岛国| 欧美一激情一区二区三区| av成人老司机| 美女性感视频久久| 亚洲一区在线观看免费观看电影高清| 精品欧美一区二区在线观看 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 播五月开心婷婷综合| 精品一区二区免费看| 香港成人在线视频| 18欧美乱大交hd1984| 久久综合色鬼综合色| 欧美中文字幕一区二区三区| 成人免费视频视频| 另类的小说在线视频另类成人小视频在线 | 99久久婷婷国产综合精品| 国产一区二区剧情av在线| 三级不卡在线观看| 一个色妞综合视频在线观看| 国产精品另类一区| 日韩三级伦理片妻子的秘密按摩| 在线影院国内精品| 91丨九色丨国产丨porny| 国产99久久久国产精品潘金| 国产一区二区三区免费观看 | 亚洲欧洲精品一区二区精品久久久| 日韩欧美国产一区二区在线播放 | 国产ts人妖一区二区| 精品在线一区二区| 日本成人在线不卡视频| 亚洲成av人在线观看| 亚洲一区二区三区精品在线| 一区二区三区 在线观看视频| 国产精品久久久久9999吃药| 国产欧美精品在线观看| 久久综合九色综合欧美亚洲| 2023国产精品视频| 久久色中文字幕| 久久天天做天天爱综合色| 久久综合给合久久狠狠狠97色69| 久久亚洲综合色| 国产视频视频一区| 欧美激情在线观看视频免费| 国产精品久久午夜夜伦鲁鲁| 日韩毛片视频在线看| 亚洲乱码国产乱码精品精的特点| 一区二区三区欧美日| 日韩国产欧美在线播放| 男女性色大片免费观看一区二区| 美国十次综合导航| 国产suv精品一区二区三区| av午夜一区麻豆| 欧美色电影在线| 欧美本精品男人aⅴ天堂| 国产欧美一区视频| 亚洲免费资源在线播放| 天使萌一区二区三区免费观看| 日本麻豆一区二区三区视频| 国产精品一区二区三区网站| 99精品久久99久久久久| 欧美日韩日日骚| 2020国产精品久久精品美国| 国产精品天美传媒沈樵| 亚洲午夜av在线| 久久99精品国产麻豆婷婷洗澡| 成人国产精品视频| 欧美日韩国产影片| 久久久久久久网| 亚洲自拍都市欧美小说| 九色综合国产一区二区三区| 不卡一卡二卡三乱码免费网站| 欧美日韩一本到| 国产欧美视频在线观看| 亚洲高清免费观看高清完整版在线观看| 视频在线观看国产精品| 大尺度一区二区| 4438x亚洲最大成人网| 国产精品人妖ts系列视频| 亚洲电影欧美电影有声小说| 懂色av中文字幕一区二区三区| 欧美丝袜自拍制服另类| 国产亚洲欧洲997久久综合| 亚洲午夜免费电影| 成人免费电影视频| 日韩一区二区高清| 亚洲在线视频网站| 国产传媒久久文化传媒| 欧美午夜精品久久久久久孕妇| 久久婷婷国产综合国色天香| 亚洲高清免费视频| 99久久婷婷国产综合精品电影| 久久先锋影音av| 理论电影国产精品| 欧美日免费三级在线| 亚洲欧洲国产日本综合| 国产一区二区美女诱惑| 91麻豆精品国产自产在线观看一区| 国产精品三级电影| 国产一区二区三区视频在线播放| 欧美欧美欧美欧美| 一区二区三区av电影| 91在线视频观看| 国产精品久久一卡二卡| 国产成人在线观看| 久久久精品国产免费观看同学|