⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 henhao.lst

📁 此代码是一个键盘程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
0109 600C            179             JZ              JUDGE_6                                                         ;Ye
                             s,return
010B                 180     JUDGE_5:
010B E531            181             MOV             A,gByteCounter
010D 6408            182             XRL             A,#08H                                                          ;Ei
                             ght byte?
010F 7006            183             JNZ             JUDGE_6                                                         ;No
                             ,return
0111 12017D          184             LCALL   PROCESS_EIGHTBYTE                                       ;Yes,find the scan 
                             code
0114 020119          185             LJMP    JUDGE_7
0117                 186     JUDGE_6:
0117 74FF            187             MOV             A,#0FFH
0119                 188     JUDGE_7:        
0119 22              189             RET
                     190     ;*****************************************
011A                 191     PROCESS_ONEBYTE:
011A E550            192             MOV     A,RestoreBuffer   
011C 6477            193             XRL     A,#77H                      ;Is the key NumLock key?                    
011E 7002            194             JNZ     LED_1
0120 B201            195             CPL     blnNumLockKey                           ;Yes,setting the symbol of NumLock 
                             key
0122                 196     LED_1:
0122 E550            197             MOV     A,RestoreBuffer   
0124 6458            198             XRL     A,#58H                       ;Is the key CapsLock Key           
0126 7002            199             JNZ     LED_2
0128 B202            200             CPL     blnCapsLockKey                          ;Yes,setting the symbol of CapLock 
                             key
012A                 201     LED_2:
012A E550            202             MOV     A,RestoreBuffer   
012C 647E            203             XRL     A,#7EH                      ;Is the key ScrollLock Key
012E 7002            204             JNZ     SHIFT_1
0130 B200            205             CPL     bitStrollLockKey                                ;Yes,setting the symbol of 
                             ScrollLock key
0132                 206     SHIFT_1:        
0132 E550            207             MOV     A,RestoreBuffer  
0134 6412            208             XRL     A,#12H                         ;Is the key left Shift key
0136 6006            209             JZ              SHIFT_2
0138 E550            210             MOV     A,RestoreBuffer                                 
013A 6459            211             XRL     A,#59H                                                  ;Is the key right S
                             hift key
013C 7002            212             JNZ     ONEBYTE_1
013E                 213     SHIFT_2:
013E D203            214             SETB    blnShiftKeyDown                                 ;Setting the symbol of Shif
                             t key
0140                 215     ONEBYTE_1:                      
0140 AF50            216             MOV             R7,RestoreBuffer                         
0142 EF              217             MOV     A,R7                                                                    ;Br
                             eak out the data to A
0143 C3              218             CLR     C                                       ;Clean the C
0144 9490            219             SUBB    A,#90H                          ; Is the data                      
0146 5006            220             JNC     ONEBYTE_2
0148 12023A          221             LCALL   FINDSCANCODE
014B F532            222             MOV             CodeReg_1,A
014D 22              223             RET
A51 MACRO ASSEMBLER  HENHAO                                                               09/25/2008 16:42:26 PAGE     5

014E                 224     ONEBYTE_2:
014E 74FF            225             MOV     A,#0FFH
0150 22              226             RET
                     227     ;**********************************
0151                 228     PROCESS_TWOBYTE:
0151 E550            229             MOV             A,RestoreBuffer
0153 64F0            230             XRL             A,#0F0H                        ;Is the first byte 0F0H?
0155 600F            231             JZ              FIRSTBYTEISF0
0157 E550            232             MOV             A,RestoreBuffer
0159 64E0            233             XRL             A,#0E0H                        ;Is the first byte 0E0H?
015B 6003            234             JZ              TWOBYTE_1
015D 74FF            235             MOV     A,#0FFH
015F 22              236             RET
                     237     ;-------------------------------------
                     238             ;The progress to find the scan code for multibyte
0160                 239     TWOBYTE_1:
0160 7951            240             MOV             R1,#RestoreBuffer+1
0162 120186          241             LCALL   MOREBYTESCAN
0165 22              242             RET
                     243     ;-------------------------------
                     244     ;The first byte is 0F0H 
0166                 245     FIRSTBYTEISF0:
0166 E551            246             MOV     A,RestoreBuffer+1  
0168 6412            247             XRL     A,#12H                         
016A 6006            248             JZ              SHIFT_3
016C E551            249             MOV     A,RestoreBuffer+1  
016E 6459            250             XRL     A,#59H                          
0170 7002            251             JNZ     F0_1
0172                 252     SHIFT_3:
0172 C203            253             CLR     blnShiftKeyDown
0174                 254     F0_1:
0174 74FF            255             MOV     A,#0FFH
0176 22              256             RET
                     257     ;*****************************************
0177                 258     PROCESS_FOURBYTE:
0177 7953            259             MOV             R1,#RestoreBuffer+3
0179 120186          260             LCALL   MOREBYTESCAN
017C 22              261             RET
                     262     ;******************************************
017D                 263     PROCESS_EIGHTBYTE:
017D 753245          264             MOV             CodeReg_1,#69
0180 753300          265             MOV             CodeReg_2,#0
0183 74FE            266             MOV             A,#0FEH
0185 22              267             RET
                     268     ;--------------------------------------------------
0186                 269     MOREBYTESCAN:
0186 E7              270             MOV             A,@R1
0187 9001AE          271             MOV             DPTR,#TwoByteKeyTable
018A 7E00            272             MOV             R6,#0
018C FF              273             MOV     R7,A
018D                 274     STMP3:  
018D EE              275             MOV     A,R6
018E 93              276             MOVC    A,@A+DPTR
018F 601A            277             JZ              STMP2
0191 6F              278             XRL     A,R7
0192 6003            279             JZ              STMP1
0194 0E              280             INC     R6
0195 80F6            281             SJMP    STMP3
0197                 282     STMP1:
0197 EE              283             MOV     A,R6
0198 1201C1          284             LCALL   FindTwoByteKeyScanCode
019B B76900          285             CJNE    @R1,#69H,STMP4
019E                 286     STMP4:  
019E 5003            287             JNC             STMP5
01A0 F532            288             MOV             CodeReg_1,A     
01A2 22              289             RET
A51 MACRO ASSEMBLER  HENHAO                                                               09/25/2008 16:42:26 PAGE     6

01A3                 290     STMP5:
01A3 F532            291             MOV     CodeReg_1,A
01A5 753300          292         MOV         CodeReg_2,#0  
01A8 74FE            293             MOV     A,#0FEH
01AA 22              294             RET
01AB                 295     STMP2:  
01AB 74FF            296             MOV     A,#0FFH
01AD 22              297             RET
01AE                 298     TwoByteKeyTable:
01AE 11141F27        299             DB 11H,14H,1FH,27H,2FH,4AH,5AH,69H,6BH,6CH,70H,71H,72H,74H,75H,7AH,7CH,7DH,0H   
01B2 2F4A5A69                
01B6 6B6C7071                
01BA 7274757A                
01BE 7C7D00                  
01C1                 300     FindTwoByteKeyScanCode:
01C1 04              301             INC A
01C2 83              302             MOVC A,@A+PC
01C3 22              303             RET
01C4 381D5B5C        304             DB 38H,1DH,5BH,5CH,5DH,35H,1CH,4FH,4BH,47H,52H,53H,50H,4DH,48H,51H,37H,49H,0FFH 
01C8 5D351C4F                
01CC 4B475253                
01D0 504D4851                
01D4 3749FF                  
                     305     ;*********************************************
                     306     ;The Progress of resume
01D7                 307     RESUME:
01D7 7950            308             MOV             R1,#RestoreBuffer
01D9 120232          309             LCALL   CLR_BUFFER                        ;Clean the restore buffer
01DC E530            310             MOV     A,gBitCounter
01DE 75F00B          311             MOV             B,#11
01E1 84              312             DIV     AB
01E2 FA              313             MOV             R2,A
01E3 2450            314             ADD             A,#RestoreBuffer
01E5 FE              315             MOV             R6,A
01E6 8A31            316             MOV             gByteCounter,R2
01E8                 317     RESUME_LOOP1:
01E8 12021C          318             LCALL   RRC_READ
01EB 502C            319             JNC     ERROR
01ED 12021C          320             LCALL   RRC_READ
01F0 9208            321             MOV     bitParityBak,C
01F2 7D08            322             MOV             R5,#8
01F4                 323     RESUME_LOOP2:
01F4 12021C          324             LCALL   RRC_READ
01F7 7950            325             MOV             R1,#RestoreBuffer
01F9 AC31            326             MOV     R4,gByteCounter
01FB                 327     RLC_RESTORE_LOOP:                                          ;restore a bit                  
                                   
01FB E7              328             MOV     A,@R1
01FC 33              329             RLC     A
01FD F7              330             MOV     @R1,A
01FE 09              331             INC     R1
01FF DCFA            332             DJNZ    R4,RLC_RESTORE_LOOP
0201 DDF1            333             DJNZ    R5,RESUME_LOOP2
                     334             ;check the receive parity error
                     335             ;if (paritybit==P) go error
0203 E550            336             MOV             A,RestoreBuffer 
0205 A2D0            337             MOV             C,PSW.0
0207 8208            338             ANL     C,BitParityBak
0209 400E            339             JC              ERROR
020B A2D0            340             MOV             C,PSW.0                 
020D 7208            341             ORL             C,BitParityBak
020F 5008            342             JNC             ERROR
0211 12021C          343             LCALL   RRC_READ
0214 4003            344             JC              ERROR
0216 DAD0            345             DJNZ    R2,RESUME_LOOP1
0218 22              346             RET
A51 MACRO ASSEMBLER  HENHAO                                                               09/25/2008 16:42:26 PAGE     7

0219                 347     ERROR:
0219 74FF            348             MOV             A,#0FFH
021B 22              349             RET
                     350     ;------------------------------------------------
                     351     ;The progress to break out a bit
021C                 352     RRC_READ:
021C 794B            353             MOV             R1,#ReceiveBuffer+11
021E 7C0C            354             MOV             R4,#12
0220                 355     RRC_READ_LOOP:
0220 E7              356             MOV             A,@R1
0221 13              357             RRC             A
0222 F7              358             MOV             @R1,A
0223 19              359             DEC             R1
0224 DCFA            360             DJNZ    R4,RRC_READ_LOOP
0226 22              361         RET
                     362     ;---------------------------------------------------
                     363     ;The progress to restore a bit
0227                 364     RLC_STORE:
0227 7F0C            365             MOV     R7,#12
0229 7840            366             MOV     R0,#ReceiveBuffer       
022B                 367     RLC_STORE_LOOP:                                                      
022B E6              368             MOV     A,@R0
022C 33              369             RLC     A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -