📄 main.lst
字号:
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 + -