📄 d12_setup.lis
字号:
01E6 .dbline 154
01E6 .dbline 155
01E6 ; }
01E6 .dbline 156
01E6 ; break;
01E6 L41:
01E6 L42:
01E6 .dbline 158
01E6 ; }
01E6 ; XmtBuff.wrLength = 0;
01E6 2224 clr R2
01E8 20922200 sts _XmtBuff+34,R2
01EC .dbline 159
01EC ; USB_submit();
01EC BDD0 rcall _USB_submit
01EE .dbline -2
01EE .dbline 160
01EE ; }
01EE L40:
01EE 00D0 rcall pop_gset1
01F0 .dbline 0 ; func end
01F0 0895 ret
01F2 .dbsym r j 20 c
01F2 .dbend
01F2 .dbfunc e set_address _set_address fV
01F2 ; j -> R20
.even
01F2 _set_address::
01F2 00D0 rcall push_gset1
01F4 .dbline -1
01F4 .dbline 162
01F4 ; void set_address(void)
01F4 ; {
01F4 .dbline 164
01F4 ; char j;
01F4 ; j = 0x80 | XmtBuff.b[2];
01F4 40910200 lds R20,_XmtBuff+2
01F8 4068 ori R20,128
01FA .dbline 165
01FA ; D12_COMMAND = 0xd0;//设置新地址使能
01FA 80ED ldi R24,208
01FC 8093017F sts 32513,R24
0200 .dbline 166
0200 ; cwait;
0200 0000 nop
0202 .dbline 167
0202 ; D12_DATA = j;
0202 4093007F sts 32512,R20
0206 .dbline 168
0206 ; csram;
0206 609301FC sts 0xfc01,R22
020A .dbline 168
020A .dbline 169
020A ; XmtBuff.wrLength = 0;
020A 2224 clr R2
020C 20922200 sts _XmtBuff+34,R2
0210 .dbline 170
0210 ; USB_submit();
0210 ABD0 rcall _USB_submit
0212 .dbline -2
0212 .dbline 171
0212 ; }
0212 L51:
0212 00D0 rcall pop_gset1
0214 .dbline 0 ; func end
0214 0895 ret
0216 .dbsym r j 20 c
0216 .dbend
0216 .dbfunc e get_descriptor _get_descriptor fV
0216 ; i -> R20,R21
.even
0216 _get_descriptor::
0216 00D0 rcall push_gset1
0218 .dbline -1
0218 .dbline 174
0218 ;
0218 ; void get_descriptor(void)
0218 ; {
0218 .dbline 176
0218 ; unsigned int i;
0218 ; XmtBuff.p_p=1;
0218 81E0 ldi R24,1
021A 80932700 sts _XmtBuff+39,R24
021E .dbline 177
021E ; switch (XmtBuff.b[3])
021E 40910300 lds R20,_XmtBuff+3
0222 5527 clr R21
0224 4130 cpi R20,1
0226 E0E0 ldi R30,0
0228 5E07 cpc R21,R30
022A 49F0 breq L60
022C 4230 cpi R20,2
022E E0E0 ldi R30,0
0230 5E07 cpc R21,R30
0232 79F0 breq L63
0234 4330 cpi R20,3
0236 E0E0 ldi R30,0
0238 5E07 cpc R21,R30
023A 21F1 breq L73
023C 34C0 rjmp L56
023E X5:
023E .dbline 178
023E ; {
023E L60:
023E .dbline 180
023E ; case 0x01: //USB_DEVICE
023E ; XmtBuff.pp = device_descriptor;
023E 80E0 ldi R24,<_device_descriptor
0240 90E0 ldi R25,>_device_descriptor
0242 90932400 sts _XmtBuff+35+1,R25
0246 80932300 sts _XmtBuff+35,R24
024A .dbline 181
024A ; XmtBuff.wrLength = sizeof(device_descriptor);
024A 82E1 ldi R24,18
024C 80932200 sts _XmtBuff+34,R24
0250 .dbline 182
0250 ; break;
0250 2CC0 rjmp L57
0252 L63:
0252 .dbline 184
0252 ; case 0x02:// USB_CONFIGURATION
0252 ; i = XmtBuff.b[7];
0252 40910700 lds R20,_XmtBuff+7
0256 5527 clr R21
0258 .dbline 185
0258 ; i = ((i<<8) | XmtBuff.b[6]);
0258 20900600 lds R2,_XmtBuff+6
025C 542F mov R21,R20
025E 422D mov R20,R2
0260 .dbline 186
0260 ; XmtBuff.pp = Configuration_Descriptor;
0260 80E0 ldi R24,<_Configuration_Descriptor
0262 90E0 ldi R25,>_Configuration_Descriptor
0264 90932400 sts _XmtBuff+35+1,R25
0268 80932300 sts _XmtBuff+35,R24
026C .dbline 187
026C ; XmtBuff.wrLength = *(XmtBuff.pp+2);
026C FC01 movw R30,R24
026E 3296 adiw R30,2
0270 E491 lpm R30,Z
0272 E0932200 sts _XmtBuff+34,R30
0276 .dbline 188
0276 ; if(i<16)
0276 4031 cpi R20,16
0278 E0E0 ldi R30,0
027A 5E07 cpc R21,R30
027C B0F4 brsh L57
027E .dbline 189
027E ; XmtBuff.wrLength = XmtBuff.b[6];
027E 20922200 sts _XmtBuff+34,R2
0282 .dbline 190
0282 ; break;
0282 13C0 rjmp L57
0284 L73:
0284 .dbline 192
0284 ; case 0x03: //USB_STRING
0284 ; switch(XmtBuff.b[2])
0284 40910200 lds R20,_XmtBuff+2
0288 5527 clr R21
028A 4030 cpi R20,0
028C 4507 cpc R20,R21
028E 69F0 breq L57
0290 X6:
0290 4130 cpi R20,1
0292 E0E0 ldi R30,0
0294 5E07 cpc R21,R30
0296 49F0 breq L57
0298 4230 cpi R20,2
029A E0E0 ldi R30,0
029C 5E07 cpc R21,R30
029E 29F0 breq L57
02A0 00C0 rjmp L74
02A2 X7:
02A2 .dbline 193
02A2 ; {
02A2 .dbline 197
02A2 ; case 0x00 :
02A2 ; //?XmtBuff.wrLength = sizeof(USBStringLanguageDescription);
02A2 ; //?XmtBuff.p = USBStringLanguageDescription;
02A2 ; break;
02A2 .dbline 201
02A2 ; case 0x01 :
02A2 ; //?XmtBuff.wrLength = sizeof(USBStringDescription1);
02A2 ; //?XmtBuff.p = USBStringDescription1;
02A2 ; break;
02A2 .dbline 205
02A2 ; case 0x02 :
02A2 ; //?XmtBuff.wrLength = sizeof(USBStringDescription2);
02A2 ; //?XmtBuff.p = USBStringDescription2;
02A2 ; break;
02A2 L74:
02A2 .dbline 207
02A2 ; default :
02A2 ; void_function();
02A2 FDDE rcall _void_function
02A4 .dbline 208
02A4 ; return;
02A4 03C0 rjmp L54
02A6 X8:
02A6 .dbline 210
02A6 ; }
02A6 ; break;
02A6 L56:
02A6 .dbline 212
02A6 ; default :
02A6 ; void_function();
02A6 FBDE rcall _void_function
02A8 .dbline 213
02A8 ; return;
02A8 01C0 rjmp L54
02AA L57:
02AA .dbline 215
02AA ; }
02AA ; USB_submit();
02AA 5ED0 rcall _USB_submit
02AC .dbline -2
02AC .dbline 216
02AC ; }
02AC L54:
02AC 00D0 rcall pop_gset1
02AE .dbline 0 ; func end
02AE 0895 ret
02B0 .dbsym r i 20 i
02B0 .dbend
02B0 .dbfunc e get_configuration _get_configuration fV
.even
02B0 _get_configuration::
02B0 .dbline -1
02B0 .dbline 219
02B0 ;
02B0 ; void get_configuration(void)
02B0 ; {
02B0 .dbline 220
02B0 ; XmtBuff.b[0] = 1;//返回是否被配置(非 0 为配置)
02B0 81E0 ldi R24,1
02B2 80930000 sts _XmtBuff,R24
02B6 .dbline 221
02B6 ; XmtBuff.wrLength = 16;
02B6 80E1 ldi R24,16
02B8 80932200 sts _XmtBuff+34,R24
02BC .dbline 222
02BC ; XmtBuff.p_p=0;
02BC 2224 clr R2
02BE 20922700 sts _XmtBuff+39,R2
02C2 .dbline 223
02C2 ; XmtBuff.p = XmtBuff.b;
02C2 80E0 ldi R24,<_XmtBuff
02C4 90E0 ldi R25,>_XmtBuff
02C6 90932600 sts _XmtBuff+37+1,R25
02CA 80932500 sts _XmtBuff+37,R24
02CE .dbline 224
02CE ; USB_submit();
02CE .dbline -2
02CE .dbline 228
02CE ; ///D12_COMMAND = 0x05;
02CE ; ///cwait;
02CE ; ///D12_COMMAND = 0xfa;// 设置 IN 缓冲区有效(满标志)
02CE ; }
02CE L81:
02CE .dbline 0 ; func end
02CE 4CC0 rjmp _USB_submit
02D0 .dbend
02D0 .dbfunc e set_configuration _set_configuration fV
02D0 ; j -> R20
02D0 ; u -> R20,R21
.even
02D0 _set_configuration::
02D0 00D0 rcall push_gset1
02D2 .dbline -1
02D2 .dbline 231
02D2 ;
02D2 ; void set_configuration(void)
02D2 ; {
02D2 .dbline 234
02D2 ; char j;
02D2 ; int u;
02D2 ; if (XmtBuff.b[0] == 0x00)
02D2 20900000 lds R2,_XmtBuff
02D6 2220 tst R2
02D8 89F5 brne L86
02DA .dbline 235
02DA ; {
02DA .dbline 236
02DA ; XmtBuff.wrLength = 0;
02DA 2224 clr R2
02DC 20922200 sts _XmtBuff+34,R2
02E0 .dbline 237
02E0 ; USB_submit();
02E0 43D0 rcall _USB_submit
02E2 .dbline 238
02E2 ; j = XmtBuff.b[2];
02E2 40910200 lds R20,_XmtBuff+2
02E6 .dbline 239
02E6 ; D12_COMMAND = 0xd8;
02E6 88ED ldi R24,216
02E8 8093017F sts 32513,R24
02EC .dbline 240
02EC ; if(j == 0x00)
02EC 4423 tst R20
02EE 21F4 brne L90
02F0 .dbline 241
02F0 ; {
02F0 .dbline 242
02F0 ; D12_DATA = 0x00; // 停止普通/同步端点
02F0 2224 clr R2
02F2 2092007F sts 32512,R2
02F6 .dbline 243
02F6 1FC0 rjmp L91
02F8 L90:
02F8 .dbline 243
02F8 ; }else if(j == 0x01)
02F8 4130 cpi R20,1
02FA E9F4 brne L92
02FC .dbline 244
02FC ; {
02FC .dbline 245
02FC ; D12_DATA = 0x01; // 使能普通/同步端点
02FC 81E0 ldi R24,1
02FE 8093007F sts 32512,R24
0302 .dbline 246
0302 ; cwait;
0302 0000 nop
0304 .dbline 249
0304 ; /// bconfig=1;
0304 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -