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

📄 usbdisk.lst

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
    02B8 8022      LDD	R2,Z+2
    02B9 8033      LDD	R3,Z+3
    02BA 8044      LDD	R4,Z+4
    02BB 8055      LDD	R5,Z+5
    02BC 2224      AND	R2,R20
    02BD 2235      AND	R3,R21
    02BE 2246      AND	R4,R22
    02BF 2257      AND	R5,R23
    02C0 9220034E  STS	0x34E,R2
(0137)   Bulk_Control_r.CurrentBlock=Logical_Block_Address/0x20;
    02C2 E085      LDI	R24,5
    02C3 E090      LDI	R25,0
    02C4 01FE      MOVW	R30,R28
    02C5 8022      LDD	R2,Z+2
    02C6 8033      LDD	R3,Z+3
    02C7 8044      LDD	R4,Z+4
    02C8 8055      LDD	R5,Z+5
    02C9 938A      ST	R24,-Y
    02CA 0181      MOVW	R16,R2
    02CB 0192      MOVW	R18,R4
    02CC 940E0F6E  CALL	lsr32
    02CE 9310034D  STS	_Bulk_Control_r+3,R17
    02D0 9300034C  STS	_Bulk_Control_r+2,R16
(0138)   ReadPage(Bulk_Control_r.CurrentBlock,Bulk_Control_r.CurrentPage,PageBuf);  
    02D2 E480      LDI	R24,0x40
    02D3 E091      LDI	R25,1
    02D4 8399      STD	Y+1,R25
    02D5 8388      STD	Y+0,R24
    02D6 9120034E  LDS	R18,0x34E
    02D8 2733      CLR	R19
    02D9 940E0757  CALL	_ReadPage
(0139)   Bulk_Control_r.Transfer_Length--;
    02DB 9180034A  LDS	R24,_Bulk_Control_r
    02DD 9190034B  LDS	R25,_Bulk_Control_r+1
    02DF 9701      SBIW	R24,1
    02E0 9390034B  STS	_Bulk_Control_r+1,R25
    02E2 9380034A  STS	_Bulk_Control_r,R24
(0140)   Bulk_Control_r.CurrentPage++;
    02E4 9180034E  LDS	R24,0x34E
    02E6 5F8F      SUBI	R24,0xFF
    02E7 9380034E  STS	0x34E,R24
(0141)   Bulk_Control_r.BufCount=0;  
    02E9 2422      CLR	R2
    02EA 2433      CLR	R3
    02EB 92300351  STS	0x351,R3
    02ED 92200350  STS	0x350,R2
(0142)   bEPPflags.bits.bulk_state=BULK_DATA_TRANS;
    02EF 9180035C  LDS	R24,_bEPPflags+2
    02F1 7F88      ANDI	R24,0xF8
    02F2 6081      ORI	R24,1
    02F3 9380035C  STS	_bEPPflags+2,R24
(0143)   Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
    02F5 9120037D  LDS	R18,0x37D
    02F7 9130037E  LDS	R19,0x37E
    02F9 2700      CLR	R16
    02FA 940E0E01  CALL	_Bulk_ErrorHandler
(0144)   D12_WriteEndpoint(5,EP2_PACKET_SIZE,PageBuf);   
    02FC E480      LDI	R24,0x40
    02FD E091      LDI	R25,1
    02FE 8399      STD	Y+1,R25
    02FF 8388      STD	Y+0,R24
    0300 E420      LDI	R18,0x40
    0301 E030      LDI	R19,0
    0302 E005      LDI	R16,5
    0303 E010      LDI	R17,0
    0304 940E06B4  CALL	_D12_WriteEndpoint
(0145)   return TRUE;
    0306 E001      LDI	R16,1
    0307 9626      ADIW	R28,6
    0308 940E0ED1  CALL	pop_gset2
    030A 9508      RET
(0146) #undef  cdbRead10 
(0147) }
(0148) BOOLEAN  RBC_ReadCapacity(void)
(0149) {
(0150)   Bulk_code_transmit((const unsigned char*)&ReadCapacityData,
_RBC_ReadCapacity:
    030B E028      LDI	R18,0x8
    030C E030      LDI	R19,0
    030D EA0C      LDI	R16,0xAC
    030E E010      LDI	R17,0
    030F 940E0D6A  CALL	_Bulk_code_transmit
(0151) 		              sizeof(READ_CAPACITY_DATA));
(0152)   return TRUE;  
    0311 E001      LDI	R16,1
    0312 9508      RET
(0153) }
(0154) BOOLEAN  SPC_FormatCapacity(void)
(0155) {
(0156)   Bulk_code_transmit((const unsigned char*)&CapacitylistHead,
_SPC_FormatCapacity:
    0313 E02C      LDI	R18,0xC
    0314 E030      LDI	R19,0
    0315 EB04      LDI	R16,0xB4
    0316 E010      LDI	R17,0
    0317 940E0D6A  CALL	_Bulk_code_transmit
(0157) 		              CAPACITY_LIST_LENGTH);
(0158)   return TRUE;
    0319 E001      LDI	R16,1
    031A 9508      RET
(0159) }
(0160) BOOLEAN  SPC_TestUnit(void)
(0161) {
(0162)   Bulk_ErrorHandler(CSW_GOOD,0); 
_SPC_TestUnit:
    031B 2722      CLR	R18
    031C 2733      CLR	R19
    031D 2700      CLR	R16
    031E 940E0E01  CALL	_Bulk_ErrorHandler
(0163)   Bulk_CSWHandler();
    0320 940E0D5A  CALL	_Bulk_CSWHandler
(0164)   return TRUE;
    0322 E001      LDI	R16,1
    0323 9508      RET
(0165) }
(0166) BOOLEAN  RBC_Verify10(void)
(0167) {
(0168)   Bulk_ErrorHandler(CSW_GOOD,0); 
_RBC_Verify10:
    0324 2722      CLR	R18
    0325 2733      CLR	R19
    0326 2700      CLR	R16
    0327 940E0E01  CALL	_Bulk_ErrorHandler
(0169)   Bulk_CSWHandler();
    0329 940E0D5A  CALL	_Bulk_CSWHandler
(0170)   return TRUE;
    032B E001      LDI	R16,1
    032C 9508      RET
_RBC_Write10:
  pageNum              --> Y+6
  Logical_Block_Address --> Y+2
  blockNum             --> R12
  j                    --> R14
  i                    --> R10
    032D 940E0F00  CALL	push_gset5
    032F 9727      SBIW	R28,7
(0171) }
(0172) BOOLEAN  RBC_Write10(void)
(0173) {  
(0174)   #define cdbWrite10 Bulk_Block.cbw.CBWCB.RbcCdb_Write10
(0175)   unsigned char i,j,pageNum;
(0176)   unsigned int  blockNum;
(0177)   unsigned long Logical_Block_Address;
(0178)   Logical_Block_Address=cdbWrite10.LogicalBlockAddress[0]*0x1000000;
    0330 90200386  LDS	R2,0x386
    0332 2433      CLR	R3
    0333 2444      CLR	R4
    0334 2455      CLR	R5
    0335 E040      LDI	R20,0
    0336 E050      LDI	R21,0
    0337 E060      LDI	R22,0
    0338 E071      LDI	R23,1
    0339 925A      ST	R5,-Y
    033A 924A      ST	R4,-Y
    033B 923A      ST	R3,-Y
    033C 922A      ST	R2,-Y
    033D 018A      MOVW	R16,R20
    033E 019B      MOVW	R18,R22
    033F 940E0EA1  CALL	empy32u
    0341 01FE      MOVW	R30,R28
    0342 8302      STD	Z+2,R16
    0343 8313      STD	Z+3,R17
    0344 8324      STD	Z+4,R18
    0345 8335      STD	Z+5,R19
(0179)   Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[1]*0x10000;
    0346 90200387  LDS	R2,0x387
    0348 2433      CLR	R3
    0349 2444      CLR	R4
    034A 2455      CLR	R5
    034B E040      LDI	R20,0
    034C E050      LDI	R21,0
    034D E061      LDI	R22,1
    034E E070      LDI	R23,0
    034F 925A      ST	R5,-Y
    0350 924A      ST	R4,-Y
    0351 923A      ST	R3,-Y
    0352 922A      ST	R2,-Y
    0353 018A      MOVW	R16,R20
    0354 019B      MOVW	R18,R22
    0355 940E0EA1  CALL	empy32u
    0357 01FE      MOVW	R30,R28
    0358 8022      LDD	R2,Z+2
    0359 8033      LDD	R3,Z+3
    035A 8044      LDD	R4,Z+4
    035B 8055      LDD	R5,Z+5
    035C 0E20      ADD	R2,R16
    035D 1E31      ADC	R3,R17
    035E 1E42      ADC	R4,R18
    035F 1E53      ADC	R5,R19
    0360 01FE      MOVW	R30,R28
    0361 8222      STD	Z+2,R2
    0362 8233      STD	Z+3,R3
    0363 8244      STD	Z+4,R4
    0364 8255      STD	Z+5,R5
(0180)   Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[2]*0x100;
    0365 91200388  LDS	R18,0x388
    0367 2733      CLR	R19
    0368 E000      LDI	R16,0
    0369 E011      LDI	R17,1
    036A 940E0E91  CALL	empy16s
    036C 0118      MOVW	R2,R16
    036D 2444      CLR	R4
    036E FC37      SBRC	R3,7
    036F 9440      COM	R4
    0370 2455      CLR	R5
    0371 FC47      SBRC	R4,7
    0372 9450      COM	R5
    0373 01FE      MOVW	R30,R28
    0374 8062      LDD	R6,Z+2
    0375 8073      LDD	R7,Z+3
    0376 8084      LDD	R8,Z+4
    0377 8095      LDD	R9,Z+5
    0378 0C62      ADD	R6,R2
    0379 1C73      ADC	R7,R3
    037A 1C84      ADC	R8,R4
    037B 1C95      ADC	R9,R5
    037C 01FE      MOVW	R30,R28
    037D 8262      STD	Z+2,R6
    037E 8273      STD	Z+3,R7
    037F 8284      STD	Z+4,R8
    0380 8295      STD	Z+5,R9
(0181)   Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[3];
    0381 90200389  LDS	R2,0x389
    0383 2433      CLR	R3
    0384 2444      CLR	R4
    0385 2455      CLR	R5
    0386 01FE      MOVW	R30,R28
    0387 8062      LDD	R6,Z+2
    0388 8073      LDD	R7,Z+3
    0389 8084      LDD	R8,Z+4
    038A 8095      LDD	R9,Z+5
    038B 0C62      ADD	R6,R2
    038C 1C73      ADC	R7,R3
    038D 1C84      ADC	R8,R4
    038E 1C95      ADC	R9,R5
    038F 01FE      MOVW	R30,R28
    0390 8262      STD	Z+2,R6
    0391 8273      STD	Z+3,R7
    0392 8284      STD	Z+4,R8
    0393 8295      STD	Z+5,R9
(0182)   Bulk_Control_w.Transfer_Length=cdbWrite10.TransferLength[0]*256+cdbWrite10.TransferLength[1];
    0394 9120038B  LDS	R18,0x38B
    0396 2733      CLR	R19
    0397 E000      LDI	R16,0
    0398 E011      LDI	R17,1
    0399 940E0E91  CALL	empy16s
    039B 0118      MOVW	R2,R16
    039C 9040038C  LDS	R4,0x38C
    039E 2455      CLR	R5
    039F 0C24      ADD	R2,R4
    03A0 1C35      ADC	R3,R5
    03A1 92300341  STS	__idata_end+1,R3
    03A3 92200340  STS	__idata_end,R2
(0183)   Bulk_Control_w.CurrentPage=Logical_Block_Address%32;
    03A5 E14F      LDI	R20,0x1F
    03A6 E050      LDI	R21,0
    03A7 E060      LDI	R22,0
    03A8 E070      LDI	R23,0
    03A9 01FE      MOVW	R30,R28
    03AA 8022      LDD	R2,Z+2
    03AB 8033      LDD	R3,Z+3
    03AC 8044      LDD	R4,Z+4
    03AD 8055      LDD	R5,Z+5
    03AE 2224      AND	R2,R20
    03AF 2235      AND	R3,R21
    03B0 2246      AND	R4,R22
    03B1 2257      AND	R5,R23
    03B2 92200344  STS	0x344,R2
(0184)   Bulk_Control_w.CurrentBlock=Logical_Block_Address/32;
    03B4 E085      LDI	R24,5
    03B5 E090      LDI	R25,0
    03B6 01FE      MOVW	R30,R28
    03B7 8022      LDD	R2,Z+2
    03B8 8033      LDD	R3,Z+3
    03B9 8044      LDD	R4,Z+4
    03BA 8055      LDD	R5,Z+5
    03BB 938A      ST	R24,-Y
    03BC 0181      MOVW	R16,R2
    03BD 0192      MOVW	R18,R4
    03BE 940E0F6E  CALL	lsr32
    03C0 93100343  STS	__idata_end+3,R17
    03C2 93000342  STS	__idata_end+2,R16
(0185)   Bulk_Control_w.BeginPage=Bulk_Control_w.CurrentPage;
    03C4 90200344  LDS	R2,0x344
    03C6 92200345  STS	0x345,R2
(0186)   Bulk_Control_w.BufCount=0;
    03C8 2422      CLR	R2
    03C9 2433      CLR	R3
    03CA 92300347  STS	0x347,R3
    03CC 92200346  STS	0x346,R2
(0187)   bEPPflags.bits.bulk_state=BULK_DATA_RECIEVE;
    03CE 9180035C  LDS	R24,_bEPPflags+2
    03D0 7F88      ANDI	R24,0xF8
    03D1 6084      ORI	R24,4
    03D2 9380035C  STS	_bEPPflags+2,R24
(0188)   Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
    03D4 9120037D  LDS	R18,0x37D
    03D6 9130037E  LDS	R19,0x37E
    03D8 2700      CLR	R16
    03D9 940E0E01  CALL	_Bulk_ErrorHandler
(0189)   pageNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)%32;
    03DB 90200340  LDS	R2,__idata_end
    03DD 90300341  LDS	R3,__idata_end+1
    03DF 91800345  LDS	R24,0x345
    03E1 2799      CLR	R25
    03E2 0D82      ADD	R24,R2
    03E3 1D93      ADC	R25,R3
    03E4 718F      ANDI	R24,0x1F
    03E5 7090      ANDI	R25,0
    03E6 838E      STD	Y+6,R24
(0190)   blockNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)/32;
    03E7 91000345  LDS	R16,0x345
    03E9 2711      CLR	R17
    03EA 0D02      ADD	R16,R2
    03EB 1D13      ADC	R17,R3
    03EC E025      LDI	R18,5
    03ED E030      LDI	R19,0
    03EE 940E0F67  CALL	lsr16
    03F0 0168      MOVW	R12,R16
(0191)   blockNum+=Bulk_Control_w.CurrentBlock;
    03F1 90200342  LDS	R2,__idata_end+2
    03F3 90300343  LDS	R3,__idata_end+3
    03F5 0CC2      ADD	R12,R2
    03F6 1CD3      ADC	R13,R3
(0192)   Erase_Cluster(CANCEL_BLOCK);
    03F7 EF0F      LDI	R16,0xFF
    03F8 E017      LDI	R17,7
    03F9 940E072A  CALL	_Erase_Cluster
(0193)   if(blockNum==Bulk_Control_w.CurrentBlock)j=32;
    03FB 90200342  LDS	R2,__idata_end+2
    03FD 90300343  LDS	R3,__idata_end+3
    03FF 14C2      CP	R12,R2
    0400 04D3      CPC	R13,R3
    0401 F419      BNE	0x0405
    0402 E280      LDI	R24,0x20
    0403 2EE8      MOV	R14,R24
    0404 C002      RJMP	0x0407
(0194)   else j=Bulk_Control_w.BeginPage;
    0405 90E00345  LDS	R14,0x345
(0195)   for(i=0;i<j;i++)
    0407 24AA      CLR	R10
    0408 C017      RJMP	0x0420
(0196)   {
(0197)     ReadPage(Bulk_Control_w.CurrentBlock,i,PageBuf);
    0409 E480      LDI	R24,0x40
    040A E091      LDI	R25,1
    040B 8399      STD	Y+1,R25
    040C 8388      STD	Y+0,R24
    040D 2D2A      MOV	R18,R10
    040E 2733      CLR	R19
    040F 91000342  LDS	R16,__idata_end+2
    0411 91100343  LDS	R17,__idata_end+3
    0413 940E0757  CALL	_ReadPage
(0198) 	WritePage(CANCEL_BLOCK,i,PageBuf);
    0415 E480      LDI	R24,0x40
    0416 E091      LDI	R25,1
    0417 8399      STD	Y+1,R25
    0418 8388      STD	Y+0,R24
    0419 2D2A      MOV	R18,R10
    041A 2733      CLR	R19
    041B EF0F      LDI	R16,0xFF
    041C E017      LDI	R17,7
    041D 940E0790  CALL	_WritePage
    041F 94A3      INC	R10
    0420 14AE      CP	R10,R14
    0421 F338      BCS	0x0409
(0199)   }  
(0200)   Erase_Cluster(Bulk_Control_w.CurrentBlock);
    0422 91000342  LDS	R16,__idata_end+2
    0424 91100343  LDS	R17,__idata_end+3
    0426 940E072A  CALL	_Erase_Cluster
(0201)   for(i=0;i<Bulk_Control_w.BeginPage;i++)
    0428 24AA      CLR	R10
    0429 C017      RJMP	0x0441
(0202)   {
(0203)      ReadPage(CANCEL_BLOCK,i,PageBuf);
    042A E480      LDI	R24,0x40
    042B E091      LDI	R25,1
    042C 8399      STD	Y+1,R25
    042D 8388      STD	Y+0,R24
    042E 2D2A      MOV	R18,R10
    042F 2733      CLR	R19
    0430 EF0F      LDI	R16,0xFF
    0431 E017      LDI	R17,7
    0432 940E0757  CALL	_ReadPage
(0204) 	 WritePage(Bulk_Control_w.CurrentBlock,i,PageBuf);
    0434 E480      LDI	R24,0x40
    0435 E091      LDI	R25,1
    0436 8399      STD	Y+1,R25
    0437 8388      STD	Y+0,R24
    0438 2D2A      MOV	R18,R10
    0439 2733      CLR	R19
    043A 91000342  LDS	R16,__idata_end+2
    043C 91100343  LDS	R17,__idata_end+3
    043E 940E0790  CALL	_WritePage
    0440 94A3      INC	R10
    0441 90200345  LDS	R2,0x345
    0443 14A2      CP	R10,R2
    0444 F328      BCS	0x042A
(0205)   }
(0206)   if(blockNum>Bulk_Control_w.CurrentBlock)
    0445 90200342  LDS	R2,__idata_end+2
    0447 90300343  LDS	R3,__idata_end+3
    0449 142C      CP	R2,R12
    044A 043D      CPC	R3,R13

⌨️ 快捷键说明

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