📄 d12setup.lis
字号:
; **时钟频率: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 + -