📄 d12_setup.lis
字号:
0304 ; D12_COMMAND=0x05;
0304 85E0 ldi R24,5
0306 8093017F sts 32513,R24
030A .dbline 250
030A ; D12_COMMAND=0xf0;
030A 80EF ldi R24,240
030C 8093017F sts 32513,R24
0310 .dbline 251
0310 ; D12_DATA=0;
0310 2224 clr R2
0312 2092007F sts 32512,R2
0316 .dbline 252
0316 ; D12_DATA=64;
0316 80E4 ldi R24,64
0318 8093007F sts 32512,R24
031C .dbline 253
031C ; for( u=0;u<64;u++)
031C 4427 clr R20
031E 5527 clr R21
0320 L94:
0320 .dbline 254
0320 4093007F sts 32512,R20
0324 L95:
0324 .dbline 253
0324 4F5F subi R20,255 ; offset = 1
0326 5F4F sbci R21,255
0328 .dbline 253
0328 4034 cpi R20,64
032A E0E0 ldi R30,0
032C 5E07 cpc R21,R30
032E C4F3 brlt L94
0330 .dbline 255
0330 ; D12_DATA=u;
0330 ; D12_COMMAND=0xfa;
0330 8AEF ldi R24,250
0332 8093017F sts 32513,R24
0336 .dbline 260
0336 ; //D12_COMMAND = 0x05;
0336 ; //cwait;
0336 ; //D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效(满标志)
0336 ;
0336 ; }
0336 L92:
0336 L91:
0336 .dbline 261
0336 ; csram;
0336 609301FC sts 0xfc01,R22
033A .dbline 261
033A .dbline 262
033A ; }
033A 01C0 rjmp L87
033C L86:
033C .dbline 264
033C B0DE rcall _void_function
033E L87:
033E .dbline -2
033E .dbline 265
033E ; else
033E ; void_function();
033E ; }
033E L85:
033E 00D0 rcall pop_gset1
0340 .dbline 0 ; func end
0340 0895 ret
0342 .dbsym r j 20 c
0342 .dbsym r u 20 I
0342 .dbend
0342 .dbfunc e get_interface _get_interface fV
.even
0342 _get_interface::
0342 .dbline -1
0342 .dbline 268
0342 ;
0342 ; void get_interface(void)
0342 ; {
0342 .dbline 269
0342 ; XmtBuff.b[0] = 0;
0342 2224 clr R2
0344 20920000 sts _XmtBuff,R2
0348 .dbline 270
0348 ; XmtBuff.wrLength = 1;
0348 81E0 ldi R24,1
034A 80932200 sts _XmtBuff+34,R24
034E .dbline 271
034E ; XmtBuff.p_p=0;
034E 20922700 sts _XmtBuff+39,R2
0352 .dbline 272
0352 ; XmtBuff.p = XmtBuff.b;
0352 80E0 ldi R24,<_XmtBuff
0354 90E0 ldi R25,>_XmtBuff
0356 90932600 sts _XmtBuff+37+1,R25
035A 80932500 sts _XmtBuff+37,R24
035E .dbline 273
035E ; USB_submit();
035E .dbline -2
035E .dbline 274
035E ; }
035E L98:
035E .dbline 0 ; func end
035E 04C0 rjmp _USB_submit
0360 .dbend
0360 .dbfunc e set_interface _set_interface fV
.even
0360 _set_interface::
0360 .dbline -1
0360 .dbline 277
0360 ;
0360 ; void set_interface(void)
0360 ; {
0360 .dbline 278
0360 ; XmtBuff.wrLength = 0;
0360 2224 clr R2
0362 20922200 sts _XmtBuff+34,R2
0366 .dbline 279
0366 ; USB_submit();
0366 .dbline -2
0366 .dbline 280
0366 ; }
0366 L102:
0366 .dbline 0 ; func end
0366 00C0 rjmp _USB_submit
0368 .dbend
0368 .dbfunc e USB_submit _USB_submit fV
0368 ; j -> R16
0368 ; k -> R18
0368 ; i -> R20
.even
0368 _USB_submit::
0368 00D0 rcall push_gset1
036A .dbline -1
036A .dbline 283
036A ;
036A ; void USB_submit(void)
036A ; {
036A .dbline 285
036A ; char i,j,k;
036A ; if(16>XmtBuff.wrLength)
036A 20902200 lds R2,_XmtBuff+34
036E 80E1 ldi R24,16
0370 2816 cp R2,R24
0372 10F4 brsh L105
0374 .dbline 286
0374 ; {
0374 .dbline 287
0374 ; j = XmtBuff.wrLength;
0374 022D mov R16,R2
0376 .dbline 288
0376 ; }else
0376 01C0 rjmp L106
0378 L105:
0378 .dbline 289
0378 ; {
0378 .dbline 290
0378 ; j = 16;
0378 00E1 ldi R16,16
037A .dbline 291
037A ; }
037A L106:
037A .dbline 292
037A ; D12_COMMAND = 1;// 选择 IN 端点(指针指向0位置)
037A 81E0 ldi R24,1
037C 8093017F sts 32513,R24
0380 .dbline 293
0380 ; cwait;
0380 0000 nop
0382 .dbline 294
0382 ; D12_COMMAND = 0xf0;// 写缓冲区
0382 80EF ldi R24,240
0384 8093017F sts 32513,R24
0388 .dbline 295
0388 ; cwait;
0388 0000 nop
038A .dbline 296
038A ; D12_DATA = 0x00;
038A 2224 clr R2
038C 2092007F sts 32512,R2
0390 .dbline 297
0390 ; cwait;
0390 0000 nop
0392 .dbline 298
0392 ; D12_DATA = j;
0392 0093007F sts 32512,R16
0396 .dbline 299
0396 ; csram;
0396 609301FC sts 0xfc01,R22
039A .dbline 299
039A .dbline 300
039A ; if(XmtBuff.p_p)
039A 20902700 lds R2,_XmtBuff+39
039E 2220 tst R2
03A0 F9F0 breq L109
03A2 .dbline 301
03A2 ; {
03A2 .dbline 302
03A2 ; for(i=0;i<j ;i++)
03A2 4427 clr R20
03A4 0EC0 rjmp L115
03A6 L112:
03A6 .dbline 303
03A6 .dbline 304
03A6 20902300 lds R2,_XmtBuff+35
03AA 30902400 lds R3,_XmtBuff+35+1
03AE E42F mov R30,R20
03B0 FF27 clr R31
03B2 E20D add R30,R2
03B4 F31D adc R31,R3
03B6 2491 lpm R18,Z
03B8 .dbline 305
03B8 2093007F sts 32512,R18
03BC .dbline 306
03BC 609301FC sts 0xfc01,R22
03C0 .dbline 306
03C0 .dbline 307
03C0 L113:
03C0 .dbline 302
03C0 4395 inc R20
03C2 L115:
03C2 .dbline 302
03C2 4017 cp R20,R16
03C4 80F3 brlo L112
03C6 .dbline 308
03C6 ; {
03C6 ; k = *(XmtBuff.pp+i);
03C6 ; D12_DATA = k;
03C6 ; csram;
03C6 ; }
03C6 ; XmtBuff.pp += j;
03C6 20902300 lds R2,_XmtBuff+35
03CA 30902400 lds R3,_XmtBuff+35+1
03CE 402E mov R4,R16
03D0 5524 clr R5
03D2 420C add R4,R2
03D4 531C adc R5,R3
03D6 50922400 sts _XmtBuff+35+1,R5
03DA 40922300 sts _XmtBuff+35,R4
03DE .dbline 309
03DE ; }else
03DE 12C0 rjmp L110
03E0 L109:
03E0 .dbline 310
03E0 ; {
03E0 .dbline 311
03E0 ; for(i=0;i<j;i++)
03E0 4427 clr R20
03E2 0EC0 rjmp L121
03E4 L118:
03E4 .dbline 312
03E4 .dbline 313
03E4 E0912500 lds R30,_XmtBuff+37
03E8 F0912600 lds R31,_XmtBuff+37+1
03EC 2191 ld R18,Z+
03EE F0932600 sts _XmtBuff+37+1,R31
03F2 E0932500 sts _XmtBuff+37,R30
03F6 .dbline 314
03F6 2093007F sts 32512,R18
03FA .dbline 315
03FA 609301FC sts 0xfc01,R22
03FE .dbline 315
03FE .dbline 316
03FE L119:
03FE .dbline 311
03FE 4395 inc R20
0400 L121:
0400 .dbline 311
0400 4017 cp R20,R16
0402 80F3 brlo L118
0404 .dbline 317
0404 ; {
0404 ; k = *(XmtBuff.p++);
0404 ; D12_DATA = k;
0404 ; csram;
0404 ; }
0404 ; }
0404 L110:
0404 .dbline 318
0404 ; XmtBuff.wrLength -= j;
0404 20902200 lds R2,_XmtBuff+34
0408 201A sub R2,R16
040A 20922200 sts _XmtBuff+34,R2
040E .dbline 319
040E ; D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效(满标志)
040E 8AEF ldi R24,250
0410 8093017F sts 32513,R24
0414 .dbline 320
0414 ; csram;
0414 609301FC sts 0xfc01,R22
0418 .dbline 320
0418 .dbline -2
0418 .dbline 321
0418 ; }
0418 L104:
0418 00D0 rcall pop_gset1
041A .dbline 0 ; func end
041A 0895 ret
041C .dbsym r j 16 c
041C .dbsym r k 18 c
041C .dbsym r i 20 c
041C .dbend
.area bss(ram, con, rel)
0000 .dbfile G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb\D12_setup.c
0000 _XmtBuff::
0000 .blkb 40
0028 .dbstruct 0 40 .1
0028 .dbfield 0 b A[16:16]c
0028 .dbfield 16 msg A[16:16]c
0028 .dbfield 32 msgL c
0028 .dbfield 33 wendu c
0028 .dbfield 34 wrLength c
0028 .dbfield 35 pp pkc
0028 .dbfield 37 p pc
0028 .dbfield 39 p_p c
0028 .dbend
0028 .dbsym e XmtBuff _XmtBuff S[.1]
.area func_lit
0000 B001 PL_set_interface: .word `_set_interface
0002 A101 PL_get_interface: .word `_get_interface
0004 6801 PL_set_configuration: .word `_set_configuration
0006 5801 PL_get_configuration: .word `_get_configuration
0008 0B01 PL_get_descriptor: .word `_get_descriptor
000A F900 PL_set_address: .word `_set_address
000C C500 PL_set_feature: .word `_set_feature
000E 4F00 PL_void_function: .word `_void_function
0010 9300 PL_clear_feature: .word `_clear_feature
0012 6500 PL_get_status: .word `_get_status
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -