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

📄 main.lst

📁 ATmega16L控制IDE硬盘的源代码,可以读写扇区,无文件系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
 1126 054a 9FE7      		ldi r25,lo8(127)
 1127 054c 8091 3200 		lds r24,50
 1128 0550 8923      		and r24,r25
 1129 0552 8093 3200 		sts 50,r24
 404:main.c        **** 				break;
 1131               	.LM146:
 1132 0556 72C0      		rjmp .L40
 1133               	.L43:
 405:main.c        **** 		case _Err_Features:
 406:main.c        **** 				Set_Bit(PORTD,DA0);
 1135               	.LM147:
 1136 0558 8091 3200 		lds r24,50
 1137 055c 8062      		ori r24,lo8(32)
 1138 055e 8093 3200 		sts 50,r24
 407:main.c        **** 				Clr_Bit(PORTD,DA1);
 1140               	.LM148:
 1141 0562 8091 3200 		lds r24,50
 1142 0566 8F7B      		andi r24,lo8(-65)
 1143 0568 8093 3200 		sts 50,r24
 408:main.c        **** 				Clr_Bit(PORTD,DA2);
 1145               	.LM149:
 1146 056c 9FE7      		ldi r25,lo8(127)
 1147 056e 8091 3200 		lds r24,50
 1148 0572 8923      		and r24,r25
 1149 0574 8093 3200 		sts 50,r24
 409:main.c        **** 				break;
 1151               	.LM150:
 1152 0578 61C0      		rjmp .L40
 1153               	.L44:
 410:main.c        **** 		case _SecCount:
 411:main.c        **** 				Clr_Bit(PORTD,DA0);
 1155               	.LM151:
 1156 057a 8091 3200 		lds r24,50
 1157 057e 8F7D      		andi r24,lo8(-33)
 1158 0580 8093 3200 		sts 50,r24
 412:main.c        **** 				Set_Bit(PORTD,DA1);
 1160               	.LM152:
 1161 0584 8091 3200 		lds r24,50
 1162 0588 8064      		ori r24,lo8(64)
 1163 058a 8093 3200 		sts 50,r24
 413:main.c        **** 				Clr_Bit(PORTD,DA2);
 1165               	.LM153:
 1166 058e 9FE7      		ldi r25,lo8(127)
 1167 0590 8091 3200 		lds r24,50
 1168 0594 8923      		and r24,r25
 1169 0596 8093 3200 		sts 50,r24
 414:main.c        **** 				break;
 1171               	.LM154:
 1172 059a 50C0      		rjmp .L40
 1173               	.L45:
 415:main.c        **** 		case _SecNum:
 416:main.c        **** 				Set_Bit(PORTD,DA0);
 1175               	.LM155:
 1176 059c 8091 3200 		lds r24,50
 1177 05a0 8062      		ori r24,lo8(32)
 1178 05a2 8093 3200 		sts 50,r24
 417:main.c        **** 				Set_Bit(PORTD,DA1);
 1180               	.LM156:
 1181 05a6 8091 3200 		lds r24,50
 1182 05aa 8064      		ori r24,lo8(64)
 1183 05ac 8093 3200 		sts 50,r24
 418:main.c        **** 				Clr_Bit(PORTD,DA2);
 1185               	.LM157:
 1186 05b0 9FE7      		ldi r25,lo8(127)
 1187 05b2 8091 3200 		lds r24,50
 1188 05b6 8923      		and r24,r25
 1189 05b8 8093 3200 		sts 50,r24
 419:main.c        **** 				break;
 1191               	.LM158:
 1192 05bc 3FC0      		rjmp .L40
 1193               	.L46:
 420:main.c        **** 		case _CylinderL:
 421:main.c        **** 				Clr_Bit(PORTD,DA0);
 1195               	.LM159:
 1196 05be 8091 3200 		lds r24,50
 1197 05c2 8F7D      		andi r24,lo8(-33)
 1198 05c4 8093 3200 		sts 50,r24
 422:main.c        **** 				Clr_Bit(PORTD,DA1);
 1200               	.LM160:
 1201 05c8 8091 3200 		lds r24,50
 1202 05cc 8F7B      		andi r24,lo8(-65)
 1203 05ce 8093 3200 		sts 50,r24
 423:main.c        **** 				Set_Bit(PORTD,DA2);
 1205               	.LM161:
 1206 05d2 8091 3200 		lds r24,50
 1207 05d6 8068      		ori r24,lo8(-128)
 1208 05d8 8093 3200 		sts 50,r24
 424:main.c        **** 				break;
 1210               	.LM162:
 1211 05dc 2FC0      		rjmp .L40
 1212               	.L47:
 425:main.c        **** 		case _CylinderH:
 426:main.c        **** 				Set_Bit(PORTD,DA0);
 1214               	.LM163:
 1215 05de 8091 3200 		lds r24,50
 1216 05e2 8062      		ori r24,lo8(32)
 1217 05e4 8093 3200 		sts 50,r24
 427:main.c        **** 				Clr_Bit(PORTD,DA1);
 1219               	.LM164:
 1220 05e8 8091 3200 		lds r24,50
 1221 05ec 8F7B      		andi r24,lo8(-65)
 1222 05ee 8093 3200 		sts 50,r24
 428:main.c        **** 				Set_Bit(PORTD,DA2);
 1224               	.LM165:
 1225 05f2 8091 3200 		lds r24,50
 1226 05f6 8068      		ori r24,lo8(-128)
 1227 05f8 8093 3200 		sts 50,r24
 429:main.c        **** 				break;
 1229               	.LM166:
 1230 05fc 1FC0      		rjmp .L40
 1231               	.L48:
 430:main.c        **** 		case _DeviceAndHead:
 431:main.c        **** 				Clr_Bit(PORTD,DA0);
 1233               	.LM167:
 1234 05fe 8091 3200 		lds r24,50
 1235 0602 8F7D      		andi r24,lo8(-33)
 1236 0604 8093 3200 		sts 50,r24
 432:main.c        **** 				Set_Bit(PORTD,DA1);
 1238               	.LM168:
 1239 0608 8091 3200 		lds r24,50
 1240 060c 8064      		ori r24,lo8(64)
 1241 060e 8093 3200 		sts 50,r24
 433:main.c        **** 				Set_Bit(PORTD,DA2);
 1243               	.LM169:
 1244 0612 8091 3200 		lds r24,50
 1245 0616 8068      		ori r24,lo8(-128)
 1246 0618 8093 3200 		sts 50,r24
 434:main.c        **** 				break;
 1248               	.LM170:
 1249 061c 0FC0      		rjmp .L40
 1250               	.L49:
 435:main.c        **** 		case _Status_AND_Command:
 436:main.c        **** 				Set_Bit(PORTD,DA0);
 1252               	.LM171:
 1253 061e 8091 3200 		lds r24,50
 1254 0622 8062      		ori r24,lo8(32)
 1255 0624 8093 3200 		sts 50,r24
 437:main.c        **** 				Set_Bit(PORTD,DA1);
 1257               	.LM172:
 1258 0628 8091 3200 		lds r24,50
 1259 062c 8064      		ori r24,lo8(64)
 1260 062e 8093 3200 		sts 50,r24
 438:main.c        **** 				Set_Bit(PORTD,DA2);
 1262               	.LM173:
 1263 0632 8091 3200 		lds r24,50
 1264 0636 8068      		ori r24,lo8(-128)
 1265 0638 8093 3200 		sts 50,r24
 1266               	.L40:
 1267               	/* epilogue: frame size=3 */
 1268 063c 2396      		adiw r28,3
 1269 063e 0FB6      		in __tmp_reg__,__SREG__
 1270 0640 F894      		cli
 1271 0642 DEBF      		out __SP_H__,r29
 1272 0644 0FBE      		out __SREG__,__tmp_reg__
 1273 0646 CDBF      		out __SP_L__,r28
 1274 0648 DF91      		pop r29
 1275 064a CF91      		pop r28
 1276 064c 0895      		ret
 1277               	/* epilogue end (size=9) */
 1278               	/* function RegAddrChangePhysics size 218 (199) */
 1280               	.Lscope11:
 1282               	.global	Read_HD_ID
 1284               	Read_HD_ID:
 439:main.c        **** 				break;
 440:main.c        **** 	}
 441:main.c        **** }
 442:main.c        **** /************************************************************
 443:main.c        **** *函数名称:void Read_HD_ID(void)								*
 444:main.c        **** *用途:读硬盘ID												*
 445:main.c        **** ************************************************************/ 
 446:main.c        **** void Read_HD_ID(void) 
 447:main.c        **** {
 1286               	.LM174:
 1287               	/* prologue: frame size=4 */
 1288 064e CF93      		push r28
 1289 0650 DF93      		push r29
 1290 0652 CDB7      		in r28,__SP_L__
 1291 0654 DEB7      		in r29,__SP_H__
 1292 0656 2497      		sbiw r28,4
 1293 0658 0FB6      		in __tmp_reg__,__SREG__
 1294 065a F894      		cli
 1295 065c DEBF      		out __SP_H__,r29
 1296 065e 0FBE      		out __SREG__,__tmp_reg__
 1297 0660 CDBF      		out __SP_L__,r28
 1298               	/* prologue end (size=10) */
 1299               	.L52:
 448:main.c        **** 	uint i,b;
 449:main.c        **** 	do
 450:main.c        **** 	{
 451:main.c        **** 		HDstate=ReadReg(_Status_AND_Command);
 1301               	.LM175:
 1302 0662 87E0      		ldi r24,lo8(7)
 1303 0664 0E94 0000 		call ReadReg
 1304 0668 8093 0000 		sts HDstate,r24
 452:main.c        **** 	}while(BSY);
 1306               	.LM176:
 1307 066c 8091 0000 		lds r24,HDstate
 1308 0670 8823      		tst r24
 1309 0672 0CF4      		brge .L53
 1311               	.LM177:
 1312 0674 F6CF      		rjmp .L52
 1313               	.L53:
 453:main.c        **** 	WriteReg(_Status_AND_Command,0xec);
 1315               	.LM178:
 1316 0676 6CEE      		ldi r22,lo8(-20)
 1317 0678 87E0      		ldi r24,lo8(7)
 1318 067a 0E94 0000 		call WriteReg
 1319               	.L55:
 454:main.c        **** 	do
 455:main.c        **** 	{
 456:main.c        **** 		HDstate=ReadReg(_Status_AND_Command);
 1321               	.LM179:
 1322 067e 87E0      		ldi r24,lo8(7)
 1323 0680 0E94 0000 		call ReadReg
 1324 0684 8093 0000 		sts HDstate,r24
 457:main.c        **** 	}while((!DRQ)||BSY);
 1326               	.LM180:
 1327 0688 8091 0000 		lds r24,HDstate
 1328 068c 9927      		clr r25
 1329 068e 9695      		lsr r25
 1330 0690 8795      		ror r24
 1331 0692 9695      		lsr r25
 1332 0694 8795      		ror r24
 1333 0696 9695      		lsr r25
 1334 0698 8795      		ror r24
 1335 069a 8170      		andi r24,lo8(1)
 1336 069c 9070      		andi r25,hi8(1)
 1337 069e 0097      		sbiw r24,0
 1338 06a0 71F3      		breq .L55
 1339 06a2 8091 0000 		lds r24,HDstate
 1340 06a6 8823      		tst r24
 1341 06a8 54F3      		brlt .L55
 458:main.c        **** 	for(i=0;i<256;i++)
 1343               	.LM181:
 1344 06aa 1982      		std Y+1,__zero_reg__
 1345 06ac 1A82      		std Y+2,__zero_reg__
 1346               	.L59:
 1347 06ae 8981      		ldd r24,Y+1
 1348 06b0 9A81      		ldd r25,Y+2
 1349 06b2 8F3F      		cpi r24,255
 1350 06b4 9105      		cpc r25,__zero_reg__
 1351 06b6 09F0      		breq .+2
 1352 06b8 58F5      		brsh .L51
 459:main.c        **** 	{
 460:main.c        **** 		WaitDRQ();
 1354               	.LM182:
 1355 06ba 0E94 0000 		call WaitDRQ
 461:main.c        **** 		ReadData();
 1357               	.LM183:
 1358 06be 0E94 0000 		call ReadData
 462:main.c        **** 		HDSectorDATA[b++]=HDDATAL;
 1360               	.LM184:
 1361 06c2 DE01      		movw r26,r28
 1362 06c4 1396      		adiw r26,3
 1363 06c6 2D91      		ld r18,X+
 1364 06c8 3C91      		ld r19,X
 1365 06ca 1197      		sbiw r26,1
 1366 06cc C901      		movw r24,r18
 1367 06ce FC01      		movw r30,r24
 1368 06d0 E050      		subi r30,lo8(-(HDSectorDATA))
 1369 06d2 F040      		sbci r31,hi8(-(HDSectorDATA))
 1370 06d4 8091 0000 		lds r24,HDDATAL
 1371 06d8 8083      		st Z,r24
 1372 06da 2F5F      		subi r18,lo8(-(1))
 1373 06dc 3F4F      		sbci r19,hi8(-(1))
 1374 06de 2D93      		st X+,r18
 1375 06e0 3C93      		st X,r19
 463:main.c        **** 		HDSectorDATA[b++]=HDDATAH;
 1377               	.LM185:
 1378 06e2 DE01      		movw r26,r28
 1379 06e4 1396      		adiw r26,3
 1380 06e6 2D91      		ld r18,X+
 1381 06e8 3C91      		ld r19,X
 1382 06ea 1197      		sbiw r26,1
 1383 06ec C901      		movw r24,r18
 1384 06ee FC01      		movw r30,r24
 1385 06f0 E050      		subi r30,lo8(-(HDSectorDATA))
 1386 06f2 F040      		sbci r31,hi8(-(HDSectorDATA))
 1387 06f4 8091 0000 		lds r24,HDDATAH
 1388 06f8 8083      		st Z,r24
 1389 06fa 2F5F      		subi r18,lo8(-(1))
 1390 06fc 3F4F      		sbci r19,hi8(-(1))
 1391 06fe 2D93      		st X+,r18
 1392 0700 3C93      		st X,r19
 1393 0702 1197      		sbiw r26,1
 1395               	.LM186:
 1396 0704 8981      		ldd r24,Y+1
 1397 0706 9A81      		ldd r25,Y+2
 1398 0708 0196      		adiw r24,1
 1399 070a 8983      		std Y+1,r24
 1400 070c 9A83      		std Y+2,r25
 1401 070e CFCF      		rjmp .L59
 1402               	.L51:
 1403               	/* epilogue: frame size=4 */
 1404 0710 2496      		adiw r28,4
 1405 0712 0FB6      		in __tmp_reg__,__SREG__
 1406 0714 F894      		cli
 1407 0716 DEBF      		out __SP_H__,r29
 1408 0718 0FBE      		out __SREG__,__tmp_reg__
 1409 071a CDBF      		out __SP_L__,r28
 1410 071c DF91      		pop r29
 1411 071e CF91      		pop r28
 1412 0720 0895      		ret
 1413               	/* epilogue end (size=9) */
 1414               	/* function Read_HD_ID size 106 (87) */
 1420               	.Lscope12:
 1422               	.global	HDRunningActivation
 1424               	HDRunningActivation:
 464:main.c        **** 	}
 465:main.c        **** }
 466:main.c        **** /************************************************************
 467:main.c        **** *函数名称:void HDRunningActivation(void)					*
 468:main.c        **** *用途:激活硬盘(转动)										*
 469:main.c        **** ************************************************************/ 
 470:main.c        **** void H

⌨️ 快捷键说明

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