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

📄 d12setup.lis

📁 usb开发(基于D12)。。湖南大学计算机与通信学院同学毕业设计及源代码!!好的很啊
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                       ; **时钟频率:8MHZ
                       ; 
                       ; **函数功能:标准设备请求
                       ; **函数输入参数及说明:无
                       ; 
                       ; **函数返回值:无
                       ; **在本函数以外定义的变量:D12_COMMAND,D12_DATA
                       ; **调用的函数说明:
                       ;   USB_submit();
                       ;   控制端点提交函数
                       ;   
                       ; **修改人:陈驰
                       ; **修改日期:2004.4.30
                       ; **修改说明:创建
                       ; *************************************************************/
                       ; void set_feature(void)
                       ; {
 01D0                   .dbline 270
                       ;     unsigned char j;
                       ;     switch (XmtBuff.b[0])
 01D0 40910000          lds R20,_XmtBuff
 01D4 5527              clr R21
 01D6 4030              cpi R20,0
 01D8 4507              cpc R20,R21
 01DA 19F1              breq L35
 01DC 4130              cpi R20,1
 01DE E0E0              ldi R30,0
 01E0 5E07              cpc R21,R30
 01E2 F9F0              breq L35
 01E4 4230              cpi R20,2
 01E6 E0E0              ldi R30,0
 01E8 5E07              cpc R21,R30
 01EA 09F0              breq L39
 01EC 1AC0              rjmp L34
 01EE                 X2:
 01EE                   .dbline 271
                       ;     {
 01EE                   .dbline 273
                       ;     case 0x00://设置设备唤醒功能
                       ;         break;
 01EE                   .dbline 275
                       ;     case 0x01://设置接口状态
                       ;         break;
 01EE                 L39:
 01EE                   .dbline 278
                       ;     case 0x02://停止端点
                       ;         //XmtBuff.b[5] D7为方向,D3~0为端点号
                       ;         j = XmtBuff.b[5];
 01EE 40910500          lds R20,_XmtBuff+5
 01F2                   .dbline 279
                       ;         if(j<0x80)
 01F2 4038              cpi R20,128
 01F4 58F4              brsh L41
 01F6                   .dbline 280
                       ;         {
 01F6                   .dbline 281
                       ;             j = 0x40+j * 2;
 01F6 440F              lsl R20
 01F8 405C              subi R20,192    ; addi 64
 01FA                   .dbline 282
                       ;             D12_COMMAND = j;// 停止OUT端点
 01FA 4093017C          sts 31745,R20
 01FE                   .dbline 283
                       ;             cwait;
 01FE 0000              nop
 0200                   .dbline 284
                       ;             D12_DATA = 0x01;
 0200 81E0              ldi R24,1
 0202 8093007C          sts 31744,R24
 0206                   .dbline 285
                       ;             csram;
 0206 609301FC          sts 0xfc01,R22
 020A                   .dbline 285
 020A                   .dbline 286
                       ;         }
 020A 0BC0              rjmp L35
 020C                 L41:
 020C                   .dbline 288
                       ;         else
                       ;         {
 020C                   .dbline 289
                       ;             j = j & 0x0f;
 020C 4F70              andi R20,15
 020E                   .dbline 290
                       ;             j = 0x41+j*2;
 020E 440F              lsl R20
 0210 4F5B              subi R20,191    ; addi 65
 0212                   .dbline 291
                       ;             D12_COMMAND = j;// 停止IN端点
 0212 4093017C          sts 31745,R20
 0216                   .dbline 292
                       ;             cwait;
 0216 0000              nop
 0218                   .dbline 293
                       ;             D12_DATA = 0x01;
 0218 81E0              ldi R24,1
 021A 8093007C          sts 31744,R24
 021E                   .dbline 294
                       ;             csram;
 021E 609301FC          sts 0xfc01,R22
 0222                   .dbline 294
 0222                   .dbline 295
                       ;         }
 0222                   .dbline 296
                       ;         break;
 0222                 L34:
 0222                 L35:
 0222                   .dbline 298
                       ;     }
                       ;     XmtBuff.wrLength = 0;
 0222 2224              clr R2
 0224 3324              clr R3
 0226 30924100          sts _XmtBuff+64+1,R3
 022A 20924000          sts _XmtBuff+64,R2
 022E                   .dbline 299
                       ;     USB_submit();
 022E 00D0              rcall _USB_submit
 0230                   .dbline -2
 0230                   .dbline 300
                       ; }
 0230                 L33:
 0230 00D0              rcall pop_gset1
 0232                   .dbline 0 ; func end
 0232 0895              ret
 0234                   .dbsym r j 20 c
 0234                   .dbfunc s set_address _set_address fI
                       ;              j -> R20
                         .even
 0234                 _set_address::
 0234 00D0              rcall push_gset1
 0236                   .dbline -1
 0236                   .dbline 325
                       ; /************************************************************
                       ; **工程名称:U盘固件程序开发
                       ; **编译器类型及版本:ICCAVR 6.26C
                       ; **日期:2004.4.30
                       ; **创建人:陈驰
                       ; **所属单位:湖南大学计算机与通信学院
                       ; 
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
                       ; **时钟频率:8MHZ
                       ; 
                       ; **函数功能:标准设备请求
                       ; **函数输入参数及说明:无
                       ; 
                       ; **函数返回值:无
                       ; **在本函数以外定义的变量:D12_COMMAND,D12_DATA
                       ; **调用的函数说明:
                       ;   USB_submit();
                       ;   控制端点提交函数
                       ;   
                       ; **修改人:陈驰
                       ; **修改日期:2004.4.30
                       ; **修改说明:创建
                       ; *************************************************************/
                       ; void set_address(void)
                       ; {
 0236                   .dbline 327
                       ;     unsigned char j;
                       ;     j = 0x80 | XmtBuff.b[2];
 0236 40910200          lds R20,_XmtBuff+2
 023A 4068              ori R20,128
 023C                   .dbline 328
                       ;     D12_COMMAND = 0xd0;//设置新地址使能
 023C 80ED              ldi R24,208
 023E 8093017C          sts 31745,R24
 0242                   .dbline 329
                       ;     cwait;
 0242 0000              nop
 0244                   .dbline 330
                       ;     D12_DATA = j;
 0244 4093007C          sts 31744,R20
 0248                   .dbline 331
                       ;     csram;
 0248 609301FC          sts 0xfc01,R22
 024C                   .dbline 331
 024C                   .dbline 332
                       ;     XmtBuff.wrLength = 0;
 024C 2224              clr R2
 024E 3324              clr R3
 0250 30924100          sts _XmtBuff+64+1,R3
 0254 20924000          sts _XmtBuff+64,R2
 0258                   .dbline 333
                       ;     USB_submit();
 0258 00D0              rcall _USB_submit
 025A                   .dbline -2
 025A                   .dbline 334
                       ; }
 025A                 L44:
 025A 00D0              rcall pop_gset1
 025C                   .dbline 0 ; func end
 025C 0895              ret
 025E                   .dbsym r j 20 c
 025E                   .dbfunc s get_descriptor _get_descriptor fI
                       ;              i -> R20,R21
                         .even
 025E                 _get_descriptor::
 025E 00D0              rcall push_gset1
 0260                   .dbline -1
 0260                   .dbline 359
                       ; /************************************************************
                       ; **工程名称:U盘固件程序开发
                       ; **编译器类型及版本:ICCAVR 6.26C
                       ; **日期:2004.4.30
                       ; **创建人:陈驰
                       ; **所属单位:湖南大学计算机与通信学院
                       ; 
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
                       ; **时钟频率:8MHZ
                       ; 
                       ; **函数功能:标准设备请求
                       ; **函数输入参数及说明:无
                       ; 
                       ; **函数返回值:无
                       ; **在本函数以外定义的变量:D12_COMMAND,D12_DATA
                       ; **调用的函数说明:
                       ;   USB_submit();
                       ;   控制端点提交函数
                       ;   
                       ; **修改人:陈驰
                       ; **修改日期:2004.4.30
                       ; **修改说明:创建
                       ; *************************************************************/
                       ; void get_descriptor(void)
                       ; {
 0260                   .dbline 361
                       ;     unsigned int i;
                       ;     XmtBuff.p_p=1;
 0260 81E0              ldi R24,1
 0262 80934600          sts _XmtBuff+70,R24
 0266                   .dbline 362
                       ;     switch (XmtBuff.b[3])
 0266 40910300          lds R20,_XmtBuff+3
 026A 5527              clr R21
 026C 4130              cpi R20,1
 026E E0E0              ldi R30,0
 0270 5E07              cpc R21,R30
 0272 51F0              breq L53
 0274 4230              cpi R20,2
 0276 E0E0              ldi R30,0
 0278 5E07              cpc R21,R30
 027A 99F0              breq L56
 027C 4330              cpi R20,3
 027E E0E0              ldi R30,0
 0280 5E07              cpc R21,R30
 0282 09F4              brne X6
 0284 38C0              rjmp L66
 0286                 X6:
 0286 48C0              rjmp L49
 0288                 X3:
 0288                   .dbline 363
                       ;     {
 0288                 L53:
 0288                   .dbline 365
                       ;         case 0x01: //USB_DEVICE
                       ;             XmtBuff.pp = device_descriptor;
 0288 80E0              ldi R24,<_device_descriptor
 028A 90E0              ldi R25,>_device_descriptor
 028C 90934300          sts _XmtBuff+66+1,R25
 0290 80934200          sts _XmtBuff+66,R24
 0294                   .dbline 366
                       ;             XmtBuff.wrLength = sizeof(device_descriptor);
 0294 82E1              ldi R24,18
 0296 90E0              ldi R25,0
 0298 90934100          sts _XmtBuff+64+1,R25
 029C 80934000          sts _XmtBuff+64,R24
 02A0                   .dbline 367
                       ;             break;
 02A0 3DC0              rjmp L50
 02A2                 L56:
 02A2                   .dbline 369
                       ;         case 0x02:// USB_CONFIGURATION
                       ;             i = XmtBuff.b[7];
 02A2 40910700          lds R20,_XmtBuff+7
 02A6 5527              clr R21
 02A8                   .dbline 370
                       ;             i = ((i<<8) | XmtBuff.b[6]);
 02A8 20900600          lds R2,_XmtBuff+6
 02AC 3324              clr R3
 02AE 442E              mov R4,R20
 02B0 552E              mov R5,R21
 02B2 542C              mov R5,R4
 02B4 4424              clr R4
 02B6 4228              or R4,R2
 02B8 5328              or R5,R3
 02BA 442D              mov R20,R4
 02BC 552D              mov R21,R5
 02BE                   .dbline 371
                       ;             XmtBuff.pp = Configuration_Descriptor;
 02BE 80E0              ldi R24,<_Configuration_Descriptor
 02C0 90E0              ldi R25,>_Configuration_Descriptor
 02C2 90934300          sts _XmtBuff+66+1,R25
 02C6 80934200          sts _XmtBuff+66,R24
 02CA                   .dbline 372
                       ;             XmtBuff.wrLength = *(XmtBuff.pp+2);
 02CA 0296              adiw R24,2
 02CC E82F              mov R30,R24
 02CE F92F              mov R31,R25
 02D0 C895              lpm
 02D2 202C              mov R2,R0
 02D4 3324              clr R3
 02D6 30924100          sts _XmtBuff+64+1,R3
 02DA 20924000          sts _XmtBuff+64,R2
 02DE                   .dbline 373
                       ;             if(i<16)
 02DE 4031              cpi R20,16
 02E0 E0E0              ldi R30,0
 02E2 5E07              cpc R21,R30
 02E4 D8F4              brsh L50
 02E6                   .dbline 374
                       ;                   XmtBuff.wrLength = XmtBuff.b[6];
 02E6 20900600          lds R2,_XmtBuff+6
 02EA 3324              clr R3
 02EC 30924100          sts _XmtBuff+64+1,R3
 02F0 20924000          sts _XmtBuff+64,R2
 02F4                   .dbline 375
                       ;             break;
 02F4 13C0              rjmp L50
 02F6                 L66:
 02F6                   .dbline 377
                       ;         case 0x03: //USB_STRING
                       ;             switch(XmtBuff.b[2])
 02F6 40910200          lds R20,_XmtBuff+2
 02FA 5527              clr R21
 02FC 4030              cpi R20,0
 02FE 4507              cpc R20,R21
 0300 69F0              breq L50
 0302 4130              cpi R20,1
 0304 E0E0              ldi R30,0
 0306 5E07              cpc R21,R30
 0308 49F0              breq L50
 030A 4230              cpi R20,2
 030C E0E0              ldi R30,0
 030E 5E07              cpc R21,R30
 0310 29F0              breq L50
 0312 00C0              rjmp L67
 0314                 X4:
 0314                   .dbline 378
                       ;             {
 0314                   .dbline 382
                       ;             case 0x00 :
                       ;                 //XmtBuff.wrLength = sizeof(USBStringLanguageDescription);
                       ;                 //?XmtBuff.p = USBStringLanguageDescription;
                       ;                 break;
 0314                   .dbline 386
                       ;             case 0x01 :
                       ;                 //?XmtBuff.wrLength = sizeof(USBStringDescription1);
                       ;                 //?XmtBuff.p = USBStringDescription1;
                       ;                break;
 0314                   .dbline 390

⌨️ 快捷键说明

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