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

📄 main.lis

📁 单片机USB接口模拟键盘,该程序可以控制PC机的PS/2键盘的NUM LOCK和SCROLL LOCK的灯,以此说明通讯正常
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0071           L17:
 0071 560501            mov [X+5],1
 0074 560400            mov [X+4],0
 0077           L18:
 0077 5205              mov A,[X+5]
 0079 5303              mov [_right_button],A
 007B                   .dbline 98
 007B           ;           if (move == STOP)
 007B 3C0400            cmp [_move],0
 007E B007              jnz L19
 0080                   .dbline 99
 0080           ;               {
 0080                   .dbline 100
 0080           ;                       P0DATA |= 0x20;        // P0.5 high (off)
 0080 430020            or REG[ 0],32
 0083                   .dbline 101
 0083           ;                       pre_move=UP;
 0083 550200            mov [_pre_move],0
 0086                   .dbline 104
 0086           ;               //      while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0086           ;               //      USB_LoadEP(1, &c_ram[0], 8);                    
 0086           ;               }
 0086           L19:
 0086                   .dbline 105
 0086           ;               if (move == GO && pre_move ==UP)
 0086 3C0401            cmp [_move],1
 0089 B029              jnz L21
 008B 3C0200            cmp [_pre_move],0
 008E B024              jnz L21
 0090                   .dbline 106
 0090           ;               {
 0090                   .dbline 107
 0090           ;                       P0DATA &= ~(0x20);     // P0.5 low (on) 
 0090 4100DF            and REG[ 0],-33
 0093                   .dbline 108
 0093           ;                       pre_move=DOWN;
 0093 550201            mov [_pre_move],1
 0096           L23:
 0096                   .dbline 110
 0096           L24:
 0096                   .dbline 110
 0096           ;                       // Check to see if the endpoint is empty
 0096           ;                       while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0096 10                push X
 0097 5001              mov A,1
 0099 7C0000            xcall _USB_bGetEPState
 009C 20                pop X
 009D 3901              cmp A,1
 009F BFF6              jnz L23
 00A1                   .dbline 111
 00A1           ;                       USB_LoadEP(1, &a_ram[0], 8);
 00A1 550001            mov [_USB_APIEPNumber],1
 00A4                   .dbline 111
 00A4 550008            mov [_USB_APICount],8
 00A7                   .dbline 111
 00A7 10                push X
 00A8 5000              mov A,>_a_ram
 00AA 08                push A
 00AB 5000              mov A,<_a_ram
 00AD 5C                mov X,A
 00AE 18                pop A
 00AF 7C0000            xcall _USB_XLoadEP
 00B2 20                pop X
 00B3                   .dbline 112
 00B3           ;               }
 00B3           L21:
 00B3                   .dbline 114
 00B3           ;               ///////////////////
 00B3           ;               if (left_button == UP)
 00B3 3C0500            cmp [_left_button],0
 00B6 B007              jnz L26
 00B8                   .dbline 115
 00B8           ;               {
 00B8                   .dbline 116
 00B8           ;                   P0DATA |= 0x40;        // P0.6 high (off)
 00B8 430040            or REG[ 0],64
 00BB                   .dbline 117
 00BB           ;                   pre_LB_down =UP;
 00BB 550100            mov [_pre_LB_down],0
 00BE                   .dbline 120
 00BE           ;               //      while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 00BE           ;               //      USB_LoadEP(1, &c_ram[0], 8);                    
 00BE           ;               }
 00BE           L26:
 00BE                   .dbline 121
 00BE           ;               if (left_button == DOWN && pre_LB_down ==UP)
 00BE 3C0501            cmp [_left_button],1
 00C1 B057              jnz L28
 00C3 3C0100            cmp [_pre_LB_down],0
 00C6 B052              jnz L28
 00C8                   .dbline 122
 00C8           ;               {
 00C8                   .dbline 123
 00C8           ;                       P0DATA &= ~(0x40);     // P0.6 low (on) 
 00C8 4100BF            and REG[ 0],-65
 00CB                   .dbline 124
 00CB           ;                       pre_LB_down=DOWN;
 00CB 550101            mov [_pre_LB_down],1
 00CE                   .dbline 125
 00CE           ;                       switch (USB_bGetEPState(1))
 00CE 10                push X
 00CF 5001              mov A,1
 00D1 7C0000            xcall _USB_bGetEPState
 00D4 20                pop X
 00D5 5407              mov [X+7],A
 00D7 560600            mov [X+6],0
 00DA 3D0600            cmp [X+6],0
 00DD B006              jnz X2
 00DF 3D0700            cmp [X+7],0
 00E2 A017              jz L33
 00E4           X2:
 00E4 3D0600            cmp [X+6],0
 00E7 B006              jnz X3
 00E9 3D0701            cmp [X+7],1
 00EC A012              jz L34
 00EE           X3:
 00EE 3D0600            cmp [X+6],0
 00F1 B006              jnz X4
 00F3 3D0702            cmp [X+7],2
 00F6 A00D              jz L35
 00F8           X4:
 00F8 800E              xjmp L31
 00FA           X0:
 00FA                   .dbline 126
 00FA           ;               {
 00FA           L33:
 00FA                   .dbline 127
 00FA           ;                       case 0: P0DATA &= ~(0x20);break;                // P0.5 low (on)
 00FA 4100DF            and REG[ 0],-33
 00FD                   .dbline 127
 00FD 8009              xjmp L31
 00FF           L34:
 00FF                   .dbline 128
 00FF           ;                       case 1: P0DATA &= ~(0x40);break;        // P0.6 low (on)
 00FF 4100BF            and REG[ 0],-65
 0102                   .dbline 128
 0102 8004              xjmp L31
 0104           L35:
 0104                   .dbline 129
 0104           ;                       case 2: P1DATA &= ~(0x08);break;                // P1.3 low (on)
 0104 4101F7            and REG[0x1],-9
 0107                   .dbline 129
 0107                   .dbline 130
 0107           ;                       default: break;
 0107           L31:
 0107                   .dbline 134
 0107           ;               }
 0107           ;                   // Check to see if the endpoint is empty
 0107           ; //                    while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0107           ;                       USB_LoadEP(1, &b_ram[0], 8);
 0107 550001            mov [_USB_APIEPNumber],1
 010A                   .dbline 134
 010A 550008            mov [_USB_APICount],8
 010D                   .dbline 134
 010D 10                push X
 010E 5000              mov A,>_b_ram
 0110 08                push A
 0111 5000              mov A,<_b_ram
 0113 5C                mov X,A
 0114 18                pop A
 0115 7C0000            xcall _USB_XLoadEP
 0118 20                pop X
 0119                   .dbline 135
 0119           ;               }
 0119           L28:
 0119                   .dbline 137
 0119           ;                               ///////////////////
 0119           ;               if (right_button == UP)
 0119 3C0300            cmp [_right_button],0
 011C B007              jnz L36
 011E                   .dbline 138
 011E           ;               {
 011E                   .dbline 139
 011E           ;                   P1DATA |= 0x08;        // P1.3 high (off)
 011E 430108            or REG[0x1],8
 0121                   .dbline 140
 0121           ;                   pre_RB_down =UP;
 0121 550000            mov [_pre_RB_down],0
 0124                   .dbline 143
 0124           ;               //      while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 0124           ;               //      USB_LoadEP(1, &c_ram[0], 8);                    
 0124           ;               }
 0124           L36:
 0124                   .dbline 144
 0124           ;               if (right_button == DOWN && pre_RB_down ==UP)
 0124 3C0301            cmp [_right_button],1
 0127 B057              jnz L38
 0129 3C0000            cmp [_pre_RB_down],0
 012C B052              jnz L38
 012E                   .dbline 145
 012E           ;               {
 012E                   .dbline 146
 012E           ;                       P1DATA &= ~(0x08);     // P0.6 low (on) 
 012E 4101F7            and REG[0x1],-9
 0131                   .dbline 147
 0131           ;                       pre_RB_down=DOWN;
 0131 550001            mov [_pre_RB_down],1
 0134                   .dbline 149
 0134           ; //                    USB_EnableEP(1);
 0134           ;                       switch (USB_bGetEPState(1))
 0134 10                push X
 0135 5001              mov A,1
 0137 7C0000            xcall _USB_bGetEPState
 013A 20                pop X
 013B 5407              mov [X+7],A
 013D 560600            mov [X+6],0
 0140 3D0600            cmp [X+6],0
 0143 B006              jnz X5
 0145 3D0700            cmp [X+7],0
 0148 A017              jz L43
 014A           X5:
 014A 3D0600            cmp [X+6],0
 014D B006              jnz X6
 014F 3D0701            cmp [X+7],1
 0152 A012              jz L44
 0154           X6:
 0154 3D0600            cmp [X+6],0
 0157 B006              jnz X7
 0159 3D0702            cmp [X+7],2
 015C A00D              jz L45
 015E           X7:
 015E 800E              xjmp L41
 0160           X1:
 0160                   .dbline 150
 0160           ;               {
 0160           L43:
 0160                   .dbline 151
 0160           ;                       case 0: P0DATA &= ~(0x20);break;                // P0.5 low (on)
 0160 4100DF            and REG[ 0],-33
 0163                   .dbline 151
 0163 8009              xjmp L41
 0165           L44:
 0165                   .dbline 152
 0165           ;                       case 1: P0DATA &= ~(0x40);break;        // P0.6 low (on)
 0165 4100BF            and REG[ 0],-65
 0168                   .dbline 152
 0168 8004              xjmp L41
 016A           L45:
 016A                   .dbline 153
 016A           ;                       case 2: P1DATA &= ~(0x08);break;                // P1.3 low (on)
 016A 4101F7            and REG[0x1],-9
 016D                   .dbline 153
 016D                   .dbline 154
 016D           ;                       default: break;
 016D           L41:
 016D                   .dbline 158
 016D           ;               }
 016D           ;                   // Check to see if the endpoint is empty
 016D           ; //                    while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
 016D           ;                       USB_LoadEP(1, &d_ram[0], 8);
 016D 550001            mov [_USB_APIEPNumber],1
 0170                   .dbline 158
 0170 550008            mov [_USB_APICount],8
 0173                   .dbline 158
 0173 10                push X
 0174 5000              mov A,>_d_ram
 0176 08                push A
 0177 5000              mov A,<_d_ram
 0179 5C                mov X,A
 017A 18                pop A
 017B 7C0000            xcall _USB_XLoadEP
 017E 20                pop X
 017F                   .dbline 159
 017F           ;               }
 017F           L38:
 017F                   .dbline 193
 017F           L8:
 017F                   .dbline 93
 017F 8EB6              xjmp L7
 0181           L46:
 0181                   .dbline 196
 0181           ;               /*
 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;

⌨️ 快捷键说明

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