📄 scsi.lis
字号:
0092 262E mov R2,R22
0094 3324 clr R3
0096 F0910400 lds R31,_WritePageBuffLen+1
009A E0910300 lds R30,_WritePageBuffLen
009E E20D add R30,R2
00A0 F31D adc R31,R3
00A2 30900200 lds R3,_WritePageBuff+1
00A6 20900100 lds R2,_WritePageBuff
00AA E20D add R30,R2
00AC F31D adc R31,R3
00AE 8C2F mov R24,R28
00B0 9D2F mov R25,R29
00B2 A62F mov R26,R22
00B4 BB27 clr R27
00B6 A80F add R26,R24
00B8 B91F adc R27,R25
00BA 2C90 ld R2,x
00BC 2082 std z+0,R2
00BE .dbline 87
00BE L19:
00BE .dbline 85
00BE 6395 inc R22
00C0 L21:
00C0 .dbline 85
; {
; j = D12_DATA;
; csram;
; asm("st Z+,%j");
; }
; for(i=0;i<len;i++){
00C0 6417 cp R22,R20
00C2 38F3 brlo L18
00C4 .dbline 88
; WritePageBuff[WritePageBuffLen+i] = Buff[i];
; }
; WritePageBuffLen += len;
00C4 242E mov R2,R20
00C6 3324 clr R3
00C8 50900400 lds R5,_WritePageBuffLen+1
00CC 40900300 lds R4,_WritePageBuffLen
00D0 420C add R4,R2
00D2 531C adc R5,R3
00D4 50920400 sts _WritePageBuffLen+1,R5
00D8 40920300 sts _WritePageBuffLen,R4
00DC .dbline 89
; if(WritePageBuffLen == 512){
00DC 842D mov R24,R4
00DE 952D mov R25,R5
00E0 8030 cpi R24,0
00E2 E2E0 ldi R30,2
00E4 9E07 cpc R25,R30
00E6 39F4 brne L22
00E8 .dbline 89
00E8 .dbline 90
; Usb_BoBulkInData();
00E8 CDD0 rcall _Usb_BoBulkInData
00EA .dbline 91
; WritePageBuffLen = 0;
00EA 2224 clr R2
00EC 3324 clr R3
00EE 30920400 sts _WritePageBuffLen+1,R3
00F2 20920300 sts _WritePageBuffLen,R2
00F6 .dbline 92
; }
00F6 L22:
00F6 .dbline 93
; }
00F6 L12:
00F6 L7:
00F6 .dbline 94
; D12_COMMAND = 0x04;//选择端点(指针指向0位置)
00F6 84E0 ldi R24,4
00F8 8093017C sts 31745,R24
00FC .dbline 95
; cwait;
00FC 0000 nop
00FE .dbline 96
; D12_COMMAND = 0xf1;
00FE 81EF ldi R24,241
0100 8093017C sts 31745,R24
0104 .dbline 97
; cwait;
0104 0000 nop
0106 .dbline 98
; D12_COMMAND = 0xf2;//清端点缓冲区
0106 82EF ldi R24,242
0108 8093017C sts 31745,R24
010C .dbline -2
010C .dbline 99
; }
010C L5:
010C EF96 adiw R28,63
010E 2196 adiw R28,1 ; offset = 64
0110 00D0 rcall pop_gset4
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym r p 12 pc
0114 .dbsym l Buff 0 A[64:64]c
0114 .dbsym r j 10 c
0114 .dbsym r i 22 c
0114 .dbsym r len 20 c
0114 .dbfunc s Usb_BoCommand _Usb_BoCommand fI
.area func_lit(rom, con, rel)
0000 L53:
0000 1F01 .word `L41
0002 3D01 .word `L32
0004 2401 .word `L42
0006 3D01 .word `L32
0008 3D01 .word `L32
000A 2901 .word `L43
000C 3D01 .word `L32
000E 2E01 .word `L44
.area text(rom, con, rel)
0114 .dbfile G:\source\Scsi.c
.even
0114 _Usb_BoCommand::
0114 00D0 rcall push_gset1
0116 .dbline -1
0116 .dbline 121
; /************************************************************
; **工程名称:U盘固件程序开发
; **编译器类型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **创建人:陈驰
; **所属单位:湖南大学计算机与通信学院
;
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **时钟频率:8MHZ
;
; **函数功能:SCSI命令处理
; **函数输入参数及说明:无
;
; **函数返回值:无
; **在本函数以外定义的变量:
; **调用的函数说明:无
;
; **修改人:陈驰
; **修改日期:2004.4.30
; **修改说明:创建
; *************************************************************/
; void Usb_BoCommand(void){
0116 .dbline 122
; XmtBuff.p_p=1;
0116 81E0 ldi R24,1
0118 80934600 sts _XmtBuff+70,R24
011C .dbline 123
; dCBWDaTrLen=((XmtBuff.b[11]<<8)+(XmtBuff.b[10]))<<15;
011C 20900A00 lds R2,_XmtBuff+10
0120 3324 clr R3
0122 00910B00 lds R16,_XmtBuff+11
0126 1127 clr R17
0128 102F mov R17,R16
012A 0027 clr R16
012C 020D add R16,R2
012E 131D adc R17,R3
0130 2FE0 ldi R18,15
0132 30E0 ldi R19,0
0134 00D0 rcall lsl16
0136 10932D00 sts _dCBWDaTrLen+1,R17
013A 00932C00 sts _dCBWDaTrLen,R16
013E .dbline 124
; dCBWDaTrLen=(dCBWDaTrLen<<1)+((XmtBuff.b[9]<<8)+(XmtBuff.b[8])) ;
013E 20900800 lds R2,_XmtBuff+8
0142 3324 clr R3
0144 40900900 lds R4,_XmtBuff+9
0148 5524 clr R5
014A 542C mov R5,R4
014C 4424 clr R4
014E 420C add R4,R2
0150 531C adc R5,R3
0152 202E mov R2,R16
0154 312E mov R3,R17
0156 220C lsl R2
0158 331C rol R3
015A 240C add R2,R4
015C 351C adc R3,R5
015E 30922D00 sts _dCBWDaTrLen+1,R3
0162 20922C00 sts _dCBWDaTrLen,R2
0166 .dbline 125
; Usb_Cbw.CBWCB[0] = XmtBuff.b[15];
0166 20900F00 lds R2,_XmtBuff+15
016A 20920F00 sts _Usb_Cbw+15,R2
016E .dbline 126
; switch(Usb_Cbw.CBWCB[0]){
016E 422D mov R20,R2
0170 5527 clr R21
0172 4E31 cpi R20,30
0174 E0E0 ldi R30,0
0176 5E07 cpc R21,R30
0178 09F4 brne X2
017A 5CC0 rjmp L40
017C X2:
017C 8EE1 ldi R24,30
017E 90E0 ldi R25,0
0180 8417 cp R24,R20
0182 9507 cpc R25,R21
0184 D4F0 brlt L48
0186 L47:
0186 4231 cpi R20,18
0188 E0E0 ldi R30,0
018A 5E07 cpc R21,R30
018C 09F4 brne X3
018E 48C0 rjmp L38
0190 X3:
0190 82E1 ldi R24,18
0192 90E0 ldi R25,0
0194 8417 cp R24,R20
0196 9507 cpc R25,R21
0198 54F0 brlt L50
019A L49:
019A 4030 cpi R20,0
019C 4507 cpc R20,R21
019E 09F4 brne X4
01A0 35C0 rjmp L36
01A2 X4:
01A2 4330 cpi R20,3
01A4 E0E0 ldi R30,0
01A6 5E07 cpc R21,R30
01A8 09F4 brne X5
01AA 35C0 rjmp L37
01AC X5:
01AC 66C0 rjmp L32
01AE L50:
01AE 4A31 cpi R20,26
01B0 E0E0 ldi R30,0
01B2 5E07 cpc R21,R30
01B4 09F4 brne X6
01B6 39C0 rjmp L39
01B8 X6:
01B8 60C0 rjmp L32
01BA L48:
01BA 4F32 cpi R20,47
01BC E0E0 ldi R30,0
01BE 5E07 cpc R21,R30
01C0 09F4 brne X7
01C2 51C0 rjmp L45
01C4 X7:
01C4 8FE2 ldi R24,47
01C6 90E0 ldi R25,0
01C8 8417 cp R24,R20
01CA 9507 cpc R25,R21
01CC CCF0 brlt L52
01CE L51:
01CE 4332 cpi R20,35
01D0 E0E0 ldi R30,0
01D2 5E07 cpc R21,R30
01D4 0CF4 brge X8
01D6 51C0 rjmp L32
01D8 X8:
01D8 8AE2 ldi R24,42
01DA 90E0 ldi R25,0
01DC 8417 cp R24,R20
01DE 9507 cpc R25,R21
01E0 0CF4 brge X9
01E2 4BC0 rjmp L32
01E4 X9:
01E4 80E0 ldi R24,<L53
01E6 90E0 ldi R25,>L53
01E8 042F mov R16,R20
01EA 152F mov R17,R21
01EC 0352 subi R16,35
01EE 1040 sbci R17,0
01F0 000F lsl R16
01F2 111F rol R17
01F4 080F add R16,R24
01F6 191F adc R17,R25
01F8 00D0 rcall lpm16
01FA E02F mov R30,R16
01FC F12F mov R31,R17
01FE 0994 ijmp
0200 L52:
0200 4A35 cpi R20,90
0202 E0E0 ldi R30,0
0204 5E07 cpc R21,R30
0206 09F4 brne X10
0208 33C0 rjmp L46
020A X10:
020A 37C0 rjmp L32
020C X1:
020C .dbline 126
020C L36:
020C .dbline 128
; case 0x00:
; SCSICMD_TestUnitReady();
020C F7D0 rcall _SCSICMD_TestUnitReady
020E .dbline 129
; BulkStausPhase = InCSWPhase;
020E 88E0 ldi R24,8
0210 80932E00 sts _BulkStausPhase,R24
0214 .dbline 130
; break;
0214 35C0 rjmp L33
0216 L37:
0216 .dbline 132
; case 0x03:
; SCSICMD_RequestSense();
0216 0CD1 rcall _SCSICMD_RequestSense
0218 .dbline 133
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -