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

📄 d12_setup.lis

📁 D12固件程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -