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

📄 main.lst

📁 ATmega16L控制IDE硬盘的源代码,可以读写扇区,无文件系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
 829 03b8 0000      		nop
 337:main.c        **** 	nop();
 831               	.LM114:
 832 03ba 0000      		nop
 338:main.c        **** 	nop();
 834               	.LM115:
 835 03bc 0000      		nop
 339:main.c        **** 	Set_Bit(PORTC,Write);
 837               	.LM116:
 838               	/* #NOAPP */
 839 03be 8091 3500 		lds r24,53
 840 03c2 8068      		ori r24,lo8(-128)
 841 03c4 8093 3500 		sts 53,r24
 842               	/* epilogue: frame size=2 */
 843 03c8 2296      		adiw r28,2
 844 03ca 0FB6      		in __tmp_reg__,__SREG__
 845 03cc F894      		cli
 846 03ce DEBF      		out __SP_H__,r29
 847 03d0 0FBE      		out __SREG__,__tmp_reg__
 848 03d2 CDBF      		out __SP_L__,r28
 849 03d4 DF91      		pop r29
 850 03d6 CF91      		pop r28
 851 03d8 0895      		ret
 852               	/* epilogue end (size=9) */
 853               	/* function WriteData size 59 (40) */
 855               	.Lscope7:
 859               	.global	WriteReg
 861               	WriteReg:
 340:main.c        **** }
 341:main.c        **** /************************************************************
 342:main.c        **** *函数名称:void WriteReg(byte byAddr,byte byData)			*
 343:main.c        **** *用途:写寄存器:寄存器地址,数据,无返回值					*
 344:main.c        **** ************************************************************/ 
 345:main.c        **** void WriteReg(byte byAddr,byte byData)
 346:main.c        **** {
 863               	.LM117:
 864               	/* prologue: frame size=2 */
 865 03da CF93      		push r28
 866 03dc DF93      		push r29
 867 03de CDB7      		in r28,__SP_L__
 868 03e0 DEB7      		in r29,__SP_H__
 869 03e2 2297      		sbiw r28,2
 870 03e4 0FB6      		in __tmp_reg__,__SREG__
 871 03e6 F894      		cli
 872 03e8 DEBF      		out __SP_H__,r29
 873 03ea 0FBE      		out __SREG__,__tmp_reg__
 874 03ec CDBF      		out __SP_L__,r28
 875               	/* prologue end (size=10) */
 876 03ee 8983      		std Y+1,r24
 877 03f0 6A83      		std Y+2,r22
 347:main.c        **** 	byData=ReversalData(byData);
 879               	.LM118:
 880 03f2 8A81      		ldd r24,Y+2
 881 03f4 0E94 0000 		call ReversalData
 882 03f8 8A83      		std Y+2,r24
 348:main.c        **** 	RegAddrChangePhysics(byAddr);
 884               	.LM119:
 885 03fa 8981      		ldd r24,Y+1
 886 03fc 0E94 0000 		call RegAddrChangePhysics
 349:main.c        **** 	DDRA=0xff;
 888               	.LM120:
 889 0400 8FEF      		ldi r24,lo8(-1)
 890 0402 8093 3A00 		sts 58,r24
 350:main.c        **** 	WDataL=byData;
 892               	.LM121:
 893 0406 8A81      		ldd r24,Y+2
 894 0408 8093 3B00 		sts 59,r24
 351:main.c        **** 	Clr_Bit(PORTC,Write);
 896               	.LM122:
 897 040c 9FE7      		ldi r25,lo8(127)
 898 040e 8091 3500 		lds r24,53
 899 0412 8923      		and r24,r25
 900 0414 8093 3500 		sts 53,r24
 352:main.c        **** 	nop();
 902               	.LM123:
 903               	/* #APP */
 904 0418 0000      		nop
 353:main.c        **** 	nop();
 906               	.LM124:
 907 041a 0000      		nop
 354:main.c        **** 	nop();
 909               	.LM125:
 910 041c 0000      		nop
 355:main.c        **** 	nop();
 912               	.LM126:
 913 041e 0000      		nop
 356:main.c        **** 	Set_Bit(PORTC,Write);
 915               	.LM127:
 916               	/* #NOAPP */
 917 0420 8091 3500 		lds r24,53
 918 0424 8068      		ori r24,lo8(-128)
 919 0426 8093 3500 		sts 53,r24
 920               	/* epilogue: frame size=2 */
 921 042a 2296      		adiw r28,2
 922 042c 0FB6      		in __tmp_reg__,__SREG__
 923 042e F894      		cli
 924 0430 DEBF      		out __SP_H__,r29
 925 0432 0FBE      		out __SREG__,__tmp_reg__
 926 0434 CDBF      		out __SP_L__,r28
 927 0436 DF91      		pop r29
 928 0438 CF91      		pop r28
 929 043a 0895      		ret
 930               	/* epilogue end (size=9) */
 931               	/* function WriteReg size 53 (34) */
 933               	.Lscope8:
 935               	.global	WaitBSY
 937               	WaitBSY:
 357:main.c        **** }
 358:main.c        **** /************************************************************
 359:main.c        **** *函数名称:byte WaitBSY(void)								*
 360:main.c        **** *用途:等待BSY信号											*
 361:main.c        **** ************************************************************/ 
 362:main.c        **** byte WaitBSY(void)
 363:main.c        **** {
 939               	.LM128:
 940               	/* prologue: frame size=0 */
 941 043c CF93      		push r28
 942 043e DF93      		push r29
 943 0440 CDB7      		in r28,__SP_L__
 944 0442 DEB7      		in r29,__SP_H__
 945               	/* prologue end (size=4) */
 946               	.L33:
 364:main.c        **** 	//byte timeOut=0;
 365:main.c        **** 	do
 366:main.c        **** 	{
 367:main.c        **** 		HDstate=ReadReg(_Status_AND_Command);
 948               	.LM129:
 949 0444 87E0      		ldi r24,lo8(7)
 950 0446 0E94 0000 		call ReadReg
 951 044a 8093 0000 		sts HDstate,r24
 368:main.c        ****  		//timeOut++;
 369:main.c        **** 		//if(timeOut>=254)
 370:main.c        **** 			//return(0xff);	//超时
 371:main.c        **** 	}while(BSY);
 953               	.LM130:
 954 044e 8091 0000 		lds r24,HDstate
 955 0452 8823      		tst r24
 956 0454 0CF4      		brge .L34
 958               	.LM131:
 959 0456 F6CF      		rjmp .L33
 960               	.L34:
 372:main.c        **** 	return(1);
 962               	.LM132:
 963 0458 81E0      		ldi r24,lo8(1)
 964 045a 90E0      		ldi r25,hi8(1)
 965               	/* epilogue: frame size=0 */
 966 045c DF91      		pop r29
 967 045e CF91      		pop r28
 968 0460 0895      		ret
 969               	/* epilogue end (size=3) */
 970               	/* function WaitBSY size 19 (12) */
 972               	.Lscope9:
 974               	.global	WaitDRQ
 976               	WaitDRQ:
 373:main.c        **** }
 374:main.c        **** /************************************************************
 375:main.c        **** *函数名称:byte WaitDRQ(void)								*
 376:main.c        **** *用途:等待DRQ信号											*
 377:main.c        **** ************************************************************/ 
 378:main.c        **** byte WaitDRQ(void)
 379:main.c        **** {
 978               	.LM133:
 979               	/* prologue: frame size=0 */
 980 0462 CF93      		push r28
 981 0464 DF93      		push r29
 982 0466 CDB7      		in r28,__SP_L__
 983 0468 DEB7      		in r29,__SP_H__
 984               	/* prologue end (size=4) */
 985               	.L37:
 380:main.c        **** 	//byte timeOut=0;
 381:main.c        **** 	do
 382:main.c        **** 	{
 383:main.c        **** 		HDstate=ReadReg(_Status_AND_Command);
 987               	.LM134:
 988 046a 87E0      		ldi r24,lo8(7)
 989 046c 0E94 0000 		call ReadReg
 990 0470 8093 0000 		sts HDstate,r24
 384:main.c        ****  		//timeOut++;
 385:main.c        **** 		//if(timeOut>=254)
 386:main.c        **** 			//return(0xff);	//超时
 387:main.c        **** 	}while(!DRQ);
 992               	.LM135:
 993 0474 8091 0000 		lds r24,HDstate
 994 0478 9927      		clr r25
 995 047a 9695      		lsr r25
 996 047c 8795      		ror r24
 997 047e 9695      		lsr r25
 998 0480 8795      		ror r24
 999 0482 9695      		lsr r25
 1000 0484 8795      		ror r24
 1001 0486 8170      		andi r24,lo8(1)
 1002 0488 9070      		andi r25,hi8(1)
 1003 048a 0097      		sbiw r24,0
 1004 048c 09F4      		brne .L38
 1006               	.LM136:
 1007 048e EDCF      		rjmp .L37
 1008               	.L38:
 388:main.c        **** 	return(1);
 1010               	.LM137:
 1011 0490 81E0      		ldi r24,lo8(1)
 1012 0492 90E0      		ldi r25,hi8(1)
 1013               	/* epilogue: frame size=0 */
 1014 0494 DF91      		pop r29
 1015 0496 CF91      		pop r28
 1016 0498 0895      		ret
 1017               	/* epilogue end (size=3) */
 1018               	/* function WaitDRQ size 28 (21) */
 1020               	.Lscope10:
 1023               	.global	RegAddrChangePhysics
 1025               	RegAddrChangePhysics:
 389:main.c        **** }
 390:main.c        **** /************************************************************
 391:main.c        **** *函数名称:void RegAddrChangePhysics(byte byRegAddr)			*
 392:main.c        **** *用途:把寄存器地址转化为物理接口							*
 393:main.c        **** ************************************************************/ 
 394:main.c        **** void RegAddrChangePhysics(byte byRegAddr)
 395:main.c        **** {
 1027               	.LM138:
 1028               	/* prologue: frame size=3 */
 1029 049a CF93      		push r28
 1030 049c DF93      		push r29
 1031 049e CDB7      		in r28,__SP_L__
 1032 04a0 DEB7      		in r29,__SP_H__
 1033 04a2 2397      		sbiw r28,3
 1034 04a4 0FB6      		in __tmp_reg__,__SREG__
 1035 04a6 F894      		cli
 1036 04a8 DEBF      		out __SP_H__,r29
 1037 04aa 0FBE      		out __SREG__,__tmp_reg__
 1038 04ac CDBF      		out __SP_L__,r28
 1039               	/* prologue end (size=10) */
 1040 04ae 8983      		std Y+1,r24
 396:main.c        **** 	Clr_Bit(PORTC,CS0);
 1042               	.LM139:
 1043 04b0 8091 3500 		lds r24,53
 1044 04b4 8E7F      		andi r24,lo8(-2)
 1045 04b6 8093 3500 		sts 53,r24
 397:main.c        **** 	Set_Bit(PORTC,CS1);
 1047               	.LM140:
 1048 04ba 8091 3500 		lds r24,53
 1049 04be 8260      		ori r24,lo8(2)
 1050 04c0 8093 3500 		sts 53,r24
 398:main.c        **** 	switch(byRegAddr)
 1052               	.LM141:
 1053 04c4 8981      		ldd r24,Y+1
 1054 04c6 282F      		mov r18,r24
 1055 04c8 3327      		clr r19
 1056 04ca 2A83      		std Y+2,r18
 1057 04cc 3B83      		std Y+3,r19
 1058 04ce 8A81      		ldd r24,Y+2
 1059 04d0 9B81      		ldd r25,Y+3
 1060 04d2 8330      		cpi r24,3
 1061 04d4 9105      		cpc r25,__zero_reg__
 1062 04d6 09F4      		brne .+2
 1063 04d8 61C0      		rjmp .L45
 1065               	.LM142:
 1066 04da 2A81      		ldd r18,Y+2
 1067 04dc 3B81      		ldd r19,Y+3
 1068 04de 2430      		cpi r18,4
 1069 04e0 3105      		cpc r19,__zero_reg__
 1070 04e2 84F4      		brge .L50
 1071 04e4 8A81      		ldd r24,Y+2
 1072 04e6 9B81      		ldd r25,Y+3
 1073 04e8 8130      		cpi r24,1
 1074 04ea 9105      		cpc r25,__zero_reg__
 1075 04ec A9F1      		breq .L43
 1076 04ee 2A81      		ldd r18,Y+2
 1077 04f0 3B81      		ldd r19,Y+3
 1078 04f2 2230      		cpi r18,2
 1079 04f4 3105      		cpc r19,__zero_reg__
 1080 04f6 0CF0      		brlt .+2
 1081 04f8 40C0      		rjmp .L44
 1082 04fa 8A81      		ldd r24,Y+2
 1083 04fc 9B81      		ldd r25,Y+3
 1084 04fe 0097      		sbiw r24,0
 1085 0500 D1F0      		breq .L42
 1086 0502 9CC0      		rjmp .L40
 1087               	.L50:
 1088 0504 2A81      		ldd r18,Y+2
 1089 0506 3B81      		ldd r19,Y+3
 1090 0508 2530      		cpi r18,5
 1091 050a 3105      		cpc r19,__zero_reg__
 1092 050c 09F4      		brne .+2
 1093 050e 67C0      		rjmp .L47
 1094 0510 8A81      		ldd r24,Y+2
 1095 0512 9B81      		ldd r25,Y+3
 1096 0514 8530      		cpi r24,5
 1097 0516 9105      		cpc r25,__zero_reg__
 1098 0518 0CF4      		brge .+2
 1099 051a 51C0      		rjmp .L46
 1100 051c 2A81      		ldd r18,Y+2
 1101 051e 3B81      		ldd r19,Y+3
 1102 0520 2630      		cpi r18,6
 1103 0522 3105      		cpc r19,__zero_reg__
 1104 0524 09F4      		brne .+2
 1105 0526 6BC0      		rjmp .L48
 1106 0528 8A81      		ldd r24,Y+2
 1107 052a 9B81      		ldd r25,Y+3
 1108 052c 8730      		cpi r24,7
 1109 052e 9105      		cpc r25,__zero_reg__
 1110 0530 09F4      		brne .+2
 1111 0532 75C0      		rjmp .L49
 1112 0534 83C0      		rjmp .L40
 1113               	.L42:
 399:main.c        **** 	{
 400:main.c        **** 		case _Data:
 401:main.c        **** 				Clr_Bit(PORTD,DA0);
 1115               	.LM143:
 1116 0536 8091 3200 		lds r24,50
 1117 053a 8F7D      		andi r24,lo8(-33)
 1118 053c 8093 3200 		sts 50,r24
 402:main.c        **** 				Clr_Bit(PORTD,DA1);
 1120               	.LM144:
 1121 0540 8091 3200 		lds r24,50
 1122 0544 8F7B      		andi r24,lo8(-65)
 1123 0546 8093 3200 		sts 50,r24
 403:main.c        **** 				Clr_Bit(PORTD,DA2);
 1125               	.LM145:

⌨️ 快捷键说明

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