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 + -
显示快捷键?