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

📄 main.lst

📁 ATmega16L控制IDE硬盘的源代码,可以读写扇区,无文件系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
 522               	/* prologue: frame size=0 */
 523 0212 CF93      		push r28
 524 0214 DF93      		push r29
 525 0216 CDB7      		in r28,__SP_L__
 526 0218 DEB7      		in r29,__SP_H__
 527               	/* prologue end (size=4) */
 262:main.c        **** 	Set_Bit(PORTC,Write);
 529               	.LM64:
 530 021a 8091 3500 		lds r24,53
 531 021e 8068      		ori r24,lo8(-128)
 532 0220 8093 3500 		sts 53,r24
 263:main.c        **** 	Set_Bit(PORTC,Read);
 534               	.LM65:
 535 0224 8091 3500 		lds r24,53
 536 0228 8064      		ori r24,lo8(64)
 537 022a 8093 3500 		sts 53,r24
 264:main.c        **** 	Clr_Bit(PORTC,CS0);
 539               	.LM66:
 540 022e 8091 3500 		lds r24,53
 541 0232 8E7F      		andi r24,lo8(-2)
 542 0234 8093 3500 		sts 53,r24
 265:main.c        **** 	Set_Bit(PORTC,CS1);
 544               	.LM67:
 545 0238 8091 3500 		lds r24,53
 546 023c 8260      		ori r24,lo8(2)
 547 023e 8093 3500 		sts 53,r24
 266:main.c        **** 	WriteReg(_DeviceAndHead,0xa0);
 549               	.LM68:
 550 0242 60EA      		ldi r22,lo8(-96)
 551 0244 86E0      		ldi r24,lo8(6)
 552 0246 0E94 0000 		call WriteReg
 553               	.L24:
 267:main.c        **** 	do
 268:main.c        **** 	{
 269:main.c        **** 		WriteReg(_DeviceAndHead,0xa0);
 555               	.LM69:
 556 024a 60EA      		ldi r22,lo8(-96)
 557 024c 86E0      		ldi r24,lo8(6)
 558 024e 0E94 0000 		call WriteReg
 270:main.c        **** 		HDstate=ReadReg(_Status_AND_Command);       
 560               	.LM70:
 561 0252 87E0      		ldi r24,lo8(7)
 562 0254 0E94 0000 		call ReadReg
 563 0258 8093 0000 		sts HDstate,r24
 271:main.c        **** 	}while((!DRDY)||BSY);
 565               	.LM71:
 566 025c 8091 0000 		lds r24,HDstate
 567 0260 9927      		clr r25
 568 0262 0024      		clr __tmp_reg__
 569 0264 880F      		lsl r24
 570 0266 991F      		rol r25
 571 0268 001C      		rol __tmp_reg__
 572 026a 880F      		lsl r24
 573 026c 991F      		rol r25
 574 026e 001C      		rol __tmp_reg__
 575 0270 892F      		mov r24,r25
 576 0272 902D      		mov r25,__tmp_reg__
 577 0274 8170      		andi r24,lo8(1)
 578 0276 9070      		andi r25,hi8(1)
 579 0278 0097      		sbiw r24,0
 580 027a 39F3      		breq .L24
 581 027c 8091 0000 		lds r24,HDstate
 582 0280 8823      		tst r24
 583 0282 1CF3      		brlt .L24
 272:main.c        **** 	WriteReg(_DeviceAndHead,0x40);
 585               	.LM72:
 586 0284 60E4      		ldi r22,lo8(64)
 587 0286 86E0      		ldi r24,lo8(6)
 588 0288 0E94 0000 		call WriteReg
 273:main.c        **** 	WriteReg(_SecCount,60);
 590               	.LM73:
 591 028c 6CE3      		ldi r22,lo8(60)
 592 028e 82E0      		ldi r24,lo8(2)
 593 0290 0E94 0000 		call WriteReg
 274:main.c        **** 	WriteReg(_Status_AND_Command,CMD_INITIALIZE_DRIVE_PARAMETERS);//0x91
 595               	.LM74:
 596 0294 61E9      		ldi r22,lo8(-111)
 597 0296 87E0      		ldi r24,lo8(7)
 598 0298 0E94 0000 		call WriteReg
 275:main.c        **** 	WaitBSY();
 600               	.LM75:
 601 029c 0E94 0000 		call WaitBSY
 276:main.c        **** 	WriteReg(_Status_AND_Command,CMD_RECALIBRATE);//0x10
 603               	.LM76:
 604 02a0 60E1      		ldi r22,lo8(16)
 605 02a2 87E0      		ldi r24,lo8(7)
 606 02a4 0E94 0000 		call WriteReg
 277:main.c        **** 	WaitBSY();
 608               	.LM77:
 609 02a8 0E94 0000 		call WaitBSY
 610               	/* epilogue: frame size=0 */
 611 02ac DF91      		pop r29
 612 02ae CF91      		pop r28
 613 02b0 0895      		ret
 614               	/* epilogue end (size=3) */
 615               	/* function HDinit size 80 (73) */
 617               	.Lscope4:
 620               	.global	ReadReg
 622               	ReadReg:
 278:main.c        **** }
 279:main.c        **** /************************************************************
 280:main.c        **** *函数名称:byte ReadReg(byte byAddr)							*
 281:main.c        **** *用途:读寄存器												*
 282:main.c        **** ************************************************************/ 
 283:main.c        **** byte ReadReg(byte byAddr)
 284:main.c        **** {
 624               	.LM78:
 625               	/* prologue: frame size=2 */
 626 02b2 CF93      		push r28
 627 02b4 DF93      		push r29
 628 02b6 CDB7      		in r28,__SP_L__
 629 02b8 DEB7      		in r29,__SP_H__
 630 02ba 2297      		sbiw r28,2
 631 02bc 0FB6      		in __tmp_reg__,__SREG__
 632 02be F894      		cli
 633 02c0 DEBF      		out __SP_H__,r29
 634 02c2 0FBE      		out __SREG__,__tmp_reg__
 635 02c4 CDBF      		out __SP_L__,r28
 636               	/* prologue end (size=10) */
 637 02c6 8983      		std Y+1,r24
 285:main.c        **** 	byte temp;
 286:main.c        **** 	RegAddrChangePhysics(byAddr);
 639               	.LM79:
 640 02c8 8981      		ldd r24,Y+1
 641 02ca 0E94 0000 		call RegAddrChangePhysics
 287:main.c        **** 	DDRA=0;
 643               	.LM80:
 644 02ce 1092 3A00 		sts 58,__zero_reg__
 288:main.c        **** 	PORTA=0xff;
 646               	.LM81:
 647 02d2 8FEF      		ldi r24,lo8(-1)
 648 02d4 8093 3B00 		sts 59,r24
 289:main.c        **** 	Clr_Bit(PORTC,Read);
 650               	.LM82:
 651 02d8 8091 3500 		lds r24,53
 652 02dc 8F7B      		andi r24,lo8(-65)
 653 02de 8093 3500 		sts 53,r24
 290:main.c        **** 	nop();
 655               	.LM83:
 656               	/* #APP */
 657 02e2 0000      		nop
 291:main.c        **** 	nop();
 659               	.LM84:
 660 02e4 0000      		nop
 292:main.c        **** 	nop();
 662               	.LM85:
 663 02e6 0000      		nop
 293:main.c        **** 	nop();
 665               	.LM86:
 666 02e8 0000      		nop
 294:main.c        **** 	temp=ReversalData(RDataL);
 668               	.LM87:
 669               	/* #NOAPP */
 670 02ea 8091 3900 		lds r24,57
 671 02ee 0E94 0000 		call ReversalData
 672 02f2 8A83      		std Y+2,r24
 295:main.c        **** //	temp=RDataL;
 296:main.c        **** 	Set_Bit(PORTC,Read);
 674               	.LM88:
 675 02f4 8091 3500 		lds r24,53
 676 02f8 8064      		ori r24,lo8(64)
 677 02fa 8093 3500 		sts 53,r24
 297:main.c        **** 	return temp;
 679               	.LM89:
 680 02fe 8A81      		ldd r24,Y+2
 681 0300 9927      		clr r25
 682               	/* epilogue: frame size=2 */
 683 0302 2296      		adiw r28,2
 684 0304 0FB6      		in __tmp_reg__,__SREG__
 685 0306 F894      		cli
 686 0308 DEBF      		out __SP_H__,r29
 687 030a 0FBE      		out __SREG__,__tmp_reg__
 688 030c CDBF      		out __SP_L__,r28
 689 030e DF91      		pop r29
 690 0310 CF91      		pop r28
 691 0312 0895      		ret
 692               	/* epilogue end (size=9) */
 693               	/* function ReadReg size 53 (34) */
 698               	.Lscope5:
 700               	.global	ReadData
 702               	ReadData:
 298:main.c        **** }
 299:main.c        **** //******************************************************************************
 300:main.c        **** /********************************************************
 301:main.c        **** *函数名称:void ReadData(void)							*
 302:main.c        **** *函数用途:读硬盘数据寄存器内容							*
 303:main.c        **** ********************************************************/
 304:main.c        **** void ReadData(void)
 305:main.c        **** {
 704               	.LM90:
 705               	/* prologue: frame size=0 */
 706 0314 CF93      		push r28
 707 0316 DF93      		push r29
 708 0318 CDB7      		in r28,__SP_L__
 709 031a DEB7      		in r29,__SP_H__
 710               	/* prologue end (size=4) */
 306:main.c        **** 	PORTA=0xff;
 712               	.LM91:
 713 031c 8FEF      		ldi r24,lo8(-1)
 714 031e 8093 3B00 		sts 59,r24
 307:main.c        **** 	DDRA=0;
 716               	.LM92:
 717 0322 1092 3A00 		sts 58,__zero_reg__
 308:main.c        **** 	PORTB=0xff;
 719               	.LM93:
 720 0326 8FEF      		ldi r24,lo8(-1)
 721 0328 8093 3800 		sts 56,r24
 309:main.c        **** 	DDRB=0;
 723               	.LM94:
 724 032c 1092 3700 		sts 55,__zero_reg__
 310:main.c        **** 	RegAddrChangePhysics(_Data);
 726               	.LM95:
 727 0330 80E0      		ldi r24,lo8(0)
 728 0332 0E94 0000 		call RegAddrChangePhysics
 311:main.c        **** 	Clr_Bit(PORTC,Read);
 730               	.LM96:
 731 0336 8091 3500 		lds r24,53
 732 033a 8F7B      		andi r24,lo8(-65)
 733 033c 8093 3500 		sts 53,r24
 312:main.c        **** 	nop();
 735               	.LM97:
 736               	/* #APP */
 737 0340 0000      		nop
 313:main.c        **** 	nop();
 739               	.LM98:
 740 0342 0000      		nop
 314:main.c        **** 	nop();
 742               	.LM99:
 743 0344 0000      		nop
 315:main.c        **** 	nop();
 745               	.LM100:
 746 0346 0000      		nop
 316:main.c        **** 	HDDATAL=ReversalData(RDataL);
 748               	.LM101:
 749               	/* #NOAPP */
 750 0348 8091 3900 		lds r24,57
 751 034c 0E94 0000 		call ReversalData
 752 0350 8093 0000 		sts HDDATAL,r24
 317:main.c        **** //	HDDATAL=RDataL;
 318:main.c        **** 	HDDATAH=RDataH;
 754               	.LM102:
 755 0354 8091 3600 		lds r24,54
 756 0358 8093 0000 		sts HDDATAH,r24
 319:main.c        **** 	Set_Bit(PORTC,Read);
 758               	.LM103:
 759 035c 8091 3500 		lds r24,53
 760 0360 8064      		ori r24,lo8(64)
 761 0362 8093 3500 		sts 53,r24
 762               	/* epilogue: frame size=0 */
 763 0366 DF91      		pop r29
 764 0368 CF91      		pop r28
 765 036a 0895      		ret
 766               	/* epilogue end (size=3) */
 767               	/* function ReadData size 48 (41) */
 769               	.Lscope6:
 773               	.global	WriteData
 775               	WriteData:
 320:main.c        **** }
 321:main.c        **** //******************************************************************************
 322:main.c        **** /********************************************************
 323:main.c        **** *函数名称:void WriteData(byte byDataL,byte byDataH)		*
 324:main.c        **** *函数用途:写硬盘数据寄存器内容							*
 325:main.c        **** ********************************************************/
 326:main.c        **** void WriteData(byte byDataL,byte byDataH)
 327:main.c        **** {
 777               	.LM104:
 778               	/* prologue: frame size=2 */
 779 036c CF93      		push r28
 780 036e DF93      		push r29
 781 0370 CDB7      		in r28,__SP_L__
 782 0372 DEB7      		in r29,__SP_H__
 783 0374 2297      		sbiw r28,2
 784 0376 0FB6      		in __tmp_reg__,__SREG__
 785 0378 F894      		cli
 786 037a DEBF      		out __SP_H__,r29
 787 037c 0FBE      		out __SREG__,__tmp_reg__
 788 037e CDBF      		out __SP_L__,r28
 789               	/* prologue end (size=10) */
 790 0380 8983      		std Y+1,r24
 791 0382 6A83      		std Y+2,r22
 328:main.c        **** 	byDataL=ReversalData(byDataL);
 793               	.LM105:
 794 0384 8981      		ldd r24,Y+1
 795 0386 0E94 0000 		call ReversalData
 796 038a 8983      		std Y+1,r24
 329:main.c        **** 	DDRA=0xff;
 798               	.LM106:
 799 038c 8FEF      		ldi r24,lo8(-1)
 800 038e 8093 3A00 		sts 58,r24
 330:main.c        **** 	DDRB=0xff;
 802               	.LM107:
 803 0392 8FEF      		ldi r24,lo8(-1)
 804 0394 8093 3700 		sts 55,r24
 331:main.c        **** 	RegAddrChangePhysics(_Data);
 806               	.LM108:
 807 0398 80E0      		ldi r24,lo8(0)
 808 039a 0E94 0000 		call RegAddrChangePhysics
 332:main.c        **** 	WDataL=byDataL;
 810               	.LM109:
 811 039e 8981      		ldd r24,Y+1
 812 03a0 8093 3B00 		sts 59,r24
 333:main.c        **** 	WDataH=byDataH;
 814               	.LM110:
 815 03a4 8A81      		ldd r24,Y+2
 816 03a6 8093 3800 		sts 56,r24
 334:main.c        **** 	Clr_Bit(PORTC,Write);
 818               	.LM111:
 819 03aa 9FE7      		ldi r25,lo8(127)
 820 03ac 8091 3500 		lds r24,53
 821 03b0 8923      		and r24,r25
 822 03b2 8093 3500 		sts 53,r24
 335:main.c        **** 	nop();
 824               	.LM112:
 825               	/* #APP */
 826 03b6 0000      		nop
 336:main.c        **** 	nop();
 828               	.LM113:

⌨️ 快捷键说明

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