main.lis

来自「单片机USB接口模拟键盘,该程序可以控制PC机的PS/2键盘的NUM LOCK和」· LIS 代码 · 共 836 行 · 第 1/3 页

LIS
836
字号
 0181           ;       }
 0181           ;       while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0181           ;       USB_LoadEP(1, &b_ram[0], 8);
 0181           ;       USB_LoadEP(1, &c_ram[0], 8);
 0181           ;     
 0181           ;       USB_EnableEP(1);
 0181           ;     
 0181           ;       switch (USB_bGetEPState(1))
 0181           ;       {
 0181           ;               case 0: P0DATA &= ~(0x20);break;                // P0.5 low (on)
 0181           ;               case 1: P0DATA &= ~(0x40);break;        // P0.6 low (on)
 0181           ;               case 2: P1DATA &= ~(0x08);break;                // P1.3 low (on)
 0181           ;               default: break;
 0181           ;       }
 0181           ;     
 0181           ;       USB_LoadEP(1, &a_ram[0], 8);
 0181           ;     
 0181           ;       USB_DisableEP(1);
 0181           ;       switch (USB_bGetEPState(1))
 0181           ;       {
 0181           ;               case 0: P0DATA &= ~(0x20);break;                // P0.5 low (on)
 0181           ;               case 1: P0DATA &= ~(0x40);break;        // P0.6 low (on)
 0181           ;               case 2: P1DATA &= ~(0x08);break;                // P1.3 low (on)
 0181           ;               default: break;
 0181           ;       }*/
 0181           ;       }
 0181           ;       
 0181           ;     while (0)
 0181           ;     {
 0181                   .dbline 199
 0181           ;       //USB接收保存PC数据
 0181           ;   //          while (USB_bGetEPState(1) == OUT_BUFFER_EMPTY)
 0181           ;       {
 0181                   .dbline 203
 0181           ;    //                 USB_EnableEP(1);
 0181           ; 
 0181           ;                   //USB按键发送键盘数据
 0181           ;               move        = ((P0DATA & 0x04) ? STOP : GO);  // P0.2 Up or Down
 0181 490004            tst REG[ 0],4
 0184 A009              jz L50
 0186 560100            mov [X+1],0
 0189 560000            mov [X+0],0
 018C 8007              xjmp L51
 018E           L50:
 018E 560101            mov [X+1],1
 0191 560000            mov [X+0],0
 0194           L51:
 0194 5201              mov A,[X+1]
 0196 5304              mov [_move],A
 0198                   .dbline 204
 0198           ;               left_button = ((P0DATA & 0x08) ? UP : DOWN);  // P0.3 Up or Down
 0198 490008            tst REG[ 0],8
 019B A009              jz L53
 019D 560300            mov [X+3],0
 01A0 560200            mov [X+2],0
 01A3 8007              xjmp L54
 01A5           L53:
 01A5 560301            mov [X+3],1
 01A8 560200            mov [X+2],0
 01AB           L54:
 01AB 5203              mov A,[X+3]
 01AD 5305              mov [_left_button],A
 01AF                   .dbline 206
 01AF           ;               ///////////////////
 01AF           ;               if(move== GO || left_button==DOWN)
 01AF 3C0401            cmp [_move],1
 01B2 A006              jz L57
 01B4 3C0501            cmp [_left_button],1
 01B7 B0AB              jnz L55
 01B9           L57:
 01B9                   .dbline 207
 01B9           ;               {
 01B9                   .dbline 208
 01B9           ;                       if (move == STOP)
 01B9 3C0400            cmp [_move],0
 01BC B024              jnz L58
 01BE                   .dbline 209
 01BE           ;                       {
 01BE                   .dbline 210
 01BE           ;                           P0DATA |= 0x20;        // P0.5 high (off)
 01BE 430020            or REG[ 0],32
 01C1                   .dbline 211
 01C1           ;                           pre_move=UP;
 01C1 550200            mov [_pre_move],0
 01C4           L60:
 01C4                   .dbline 212
 01C4           L61:
 01C4                   .dbline 212
 01C4           ;                           while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 01C4 10                push X
 01C5 5001              mov A,1
 01C7 7C0000            xcall _USB_bGetEPState
 01CA 20                pop X
 01CB 3901              cmp A,1
 01CD BFF6              jnz L60
 01CF                   .dbline 213
 01CF           ;                           USB_LoadEP(1, &c_ram[0], 8);                        
 01CF 550001            mov [_USB_APIEPNumber],1
 01D2                   .dbline 213
 01D2 550008            mov [_USB_APICount],8
 01D5                   .dbline 213
 01D5 10                push X
 01D6 5000              mov A,>_c_ram
 01D8 08                push A
 01D9 5000              mov A,<_c_ram
 01DB 5C                mov X,A
 01DC 18                pop A
 01DD 7C0000            xcall _USB_XLoadEP
 01E0 20                pop X
 01E1                   .dbline 214
 01E1           ;                       }
 01E1           L58:
 01E1                   .dbline 215
 01E1           ;                       if (move == GO && pre_move ==UP)
 01E1 3C0401            cmp [_move],1
 01E4 B029              jnz L63
 01E6 3C0200            cmp [_pre_move],0
 01E9 B024              jnz L63
 01EB                   .dbline 216
 01EB           ;                       {
 01EB                   .dbline 217
 01EB           ;                               P0DATA &= ~(0x20);     // P0.5 low (on) 
 01EB 4100DF            and REG[ 0],-33
 01EE                   .dbline 218
 01EE           ;                               pre_move=DOWN;
 01EE 550201            mov [_pre_move],1
 01F1           L65:
 01F1                   .dbline 220
 01F1           L66:
 01F1                   .dbline 220
 01F1           ;                           // Check to see if the endpoint is empty
 01F1           ;                           while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 01F1 10                push X
 01F2 5001              mov A,1
 01F4 7C0000            xcall _USB_bGetEPState
 01F7 20                pop X
 01F8 3901              cmp A,1
 01FA BFF6              jnz L65
 01FC                   .dbline 221
 01FC           ;                           USB_LoadEP(1, &a_ram[0], 8);
 01FC 550001            mov [_USB_APIEPNumber],1
 01FF                   .dbline 221
 01FF 550008            mov [_USB_APICount],8
 0202                   .dbline 221
 0202 10                push X
 0203 5000              mov A,>_a_ram
 0205 08                push A
 0206 5000              mov A,<_a_ram
 0208 5C                mov X,A
 0209 18                pop A
 020A 7C0000            xcall _USB_XLoadEP
 020D 20                pop X
 020E                   .dbline 222
 020E           ;                       }
 020E           L63:
 020E                   .dbline 224
 020E           ;                       ///////////////////
 020E           ;                       if (left_button == UP)
 020E 3C0500            cmp [_left_button],0
 0211 B024              jnz L68
 0213                   .dbline 225
 0213           ;                       {
 0213                   .dbline 226
 0213           ;                           P0DATA |= 0x40;        // P0.6 high (off)
 0213 430040            or REG[ 0],64
 0216                   .dbline 227
 0216           ;                           pre_LB_down =UP;
 0216 550100            mov [_pre_LB_down],0
 0219           L70:
 0219                   .dbline 228
 0219           L71:
 0219                   .dbline 228
 0219           ;                           while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0219 10                push X
 021A 5001              mov A,1
 021C 7C0000            xcall _USB_bGetEPState
 021F 20                pop X
 0220 3901              cmp A,1
 0222 BFF6              jnz L70
 0224                   .dbline 229
 0224           ;                           USB_LoadEP(1, &c_ram[0], 8);                        
 0224 550001            mov [_USB_APIEPNumber],1
 0227                   .dbline 229
 0227 550008            mov [_USB_APICount],8
 022A                   .dbline 229
 022A 10                push X
 022B 5000              mov A,>_c_ram
 022D 08                push A
 022E 5000              mov A,<_c_ram
 0230 5C                mov X,A
 0231 18                pop A
 0232 7C0000            xcall _USB_XLoadEP
 0235 20                pop X
 0236                   .dbline 230
 0236           ;                       }
 0236           L68:
 0236                   .dbline 231
 0236           ;                       if (left_button == DOWN && pre_LB_down ==UP)
 0236 3C0501            cmp [_left_button],1
 0239 B029              jnz L73
 023B 3C0100            cmp [_pre_LB_down],0
 023E B024              jnz L73
 0240                   .dbline 232
 0240           ;                       {
 0240                   .dbline 233
 0240           ;                               P0DATA &= ~(0x40);     // P0.6 low (on) 
 0240 4100BF            and REG[ 0],-65
 0243                   .dbline 234
 0243           ;                               pre_LB_down=DOWN;
 0243 550101            mov [_pre_LB_down],1
 0246           L75:
 0246                   .dbline 236
 0246           L76:
 0246                   .dbline 236
 0246           ;                           // Check to see if the endpoint is empty
 0246           ;                           while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0246 10                push X
 0247 5001              mov A,1
 0249 7C0000            xcall _USB_bGetEPState
 024C 20                pop X
 024D 3901              cmp A,1
 024F BFF6              jnz L75
 0251                   .dbline 237
 0251           ;                           USB_LoadEP(1, &b_ram[0], 8);
 0251 550001            mov [_USB_APIEPNumber],1
 0254                   .dbline 237
 0254 550008            mov [_USB_APICount],8
 0257                   .dbline 237
 0257 10                push X
 0258 5000              mov A,>_b_ram
 025A 08                push A
 025B 5000              mov A,<_b_ram
 025D 5C                mov X,A
 025E 18                pop A
 025F 7C0000            xcall _USB_XLoadEP
 0262 20                pop X
 0263                   .dbline 238
 0263           ;                       }
 0263           L73:
 0263                   .dbline 239
 0263           ;                   }
 0263           L55:
 0263                   .dbline 240
 0263                   .dbline 241
 0263           L47:
 0263                   .dbline 195
 0263                   .dbline -2
 0263                   .dbline 242
 0263           ;           }
 0263           ;     }
 0263           ; }
 0263           L6:
 0263 38F8              add SP,-8
 0265 20                pop X
 0266                   .dbline 0 ; func end
 0266 8FFF              jmp .
 0268                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile ./main.c
 0000           _pre_RB_down::
 0000                   .blkb 1
 0001                   .dbsym e pre_RB_down _pre_RB_down c
 0001           _pre_LB_down::
 0001                   .blkb 1
 0002                   .dbsym e pre_LB_down _pre_LB_down c
 0002           _pre_move::
 0002                   .blkb 1
 0003                   .dbsym e pre_move _pre_move c
 0003           _right_button::
 0003                   .blkb 1
 0004                   .dbsym e right_button _right_button c
 0004           _move::
 0004                   .blkb 1
 0005                   .dbsym e move _move c
 0005           _left_button::
 0005                   .blkb 1
 0006                   .dbsym e left_button _left_button c

⌨️ 快捷键说明

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