📄 main.lst
字号:
381 .LM29:
382 0154 8091 3500 lds r24,53
383 0158 8062 ori r24,lo8(32)
384 015a 8093 3500 sts 53,r24
385 015e 05C0 rjmp .L20
386 .L19:
92:./ds1302.h **** else
93:./ds1302.h **** clr_ds1302_io();
388 .LM30:
389 0160 8091 3500 lds r24,53
390 0164 8F7D andi r24,lo8(-33)
391 0166 8093 3500 sts 53,r24
392 .L20:
94:./ds1302.h **** set_ds1302_sclk(); /*时钟*/
394 .LM31:
395 016a 8091 3500 lds r24,53
396 016e 8061 ori r24,lo8(16)
397 0170 8093 3500 sts 53,r24
95:./ds1302.h **** clr_ds1302_sclk();
399 .LM32:
400 0174 8091 3500 lds r24,53
401 0178 8F7E andi r24,lo8(-17)
402 017a 8093 3500 sts 53,r24
96:./ds1302.h **** reg>>=1;
404 .LM33:
405 017e 8981 ldd r24,Y+1
406 0180 8695 lsr r24
407 0182 8983 std Y+1,r24
409 .LM34:
410 0184 8B81 ldd r24,Y+3
411 0186 8150 subi r24,lo8(-(-1))
412 0188 8B83 std Y+3,r24
413 018a DBCF rjmp .L16
414 .L17:
97:./ds1302.h **** }
98:./ds1302.h **** for(i=8;i>0;i--) /*写数据*/
416 .LM35:
417 018c 88E0 ldi r24,lo8(8)
418 018e 8B83 std Y+3,r24
419 .L21:
420 0190 8B81 ldd r24,Y+3
421 0192 8823 tst r24
422 0194 29F1 breq .L22
99:./ds1302.h **** {
100:./ds1302.h **** clr_ds1302_sclk();
424 .LM36:
425 0196 8091 3500 lds r24,53
426 019a 8F7E andi r24,lo8(-17)
427 019c 8093 3500 sts 53,r24
101:./ds1302.h **** delay_nus(500);
429 .LM37:
430 01a0 84EF ldi r24,lo8(500)
431 01a2 91E0 ldi r25,hi8(500)
432 01a4 35DF rcall delay_nus
102:./ds1302.h **** if((data&0x01)==0x01)
434 .LM38:
435 01a6 8A81 ldd r24,Y+2
436 01a8 9927 clr r25
437 01aa 8170 andi r24,lo8(1)
438 01ac 9070 andi r25,hi8(1)
439 01ae 0097 sbiw r24,0
440 01b0 31F0 breq .L24
103:./ds1302.h **** set_ds1302_io();
442 .LM39:
443 01b2 8091 3500 lds r24,53
444 01b6 8062 ori r24,lo8(32)
445 01b8 8093 3500 sts 53,r24
446 01bc 05C0 rjmp .L25
447 .L24:
104:./ds1302.h **** else
105:./ds1302.h **** clr_ds1302_io();
449 .LM40:
450 01be 8091 3500 lds r24,53
451 01c2 8F7D andi r24,lo8(-33)
452 01c4 8093 3500 sts 53,r24
453 .L25:
106:./ds1302.h **** set_ds1302_sclk(); /*时钟*/
455 .LM41:
456 01c8 8091 3500 lds r24,53
457 01cc 8061 ori r24,lo8(16)
458 01ce 8093 3500 sts 53,r24
107:./ds1302.h ****
108:./ds1302.h **** data>>=1;
460 .LM42:
461 01d2 8A81 ldd r24,Y+2
462 01d4 8695 lsr r24
463 01d6 8A83 std Y+2,r24
465 .LM43:
466 01d8 8B81 ldd r24,Y+3
467 01da 8150 subi r24,lo8(-(-1))
468 01dc 8B83 std Y+3,r24
469 01de D8CF rjmp .L21
470 .L22:
109:./ds1302.h **** }
110:./ds1302.h **** clr_ds1302_rst(); /*置0,结束本次数据传送,I/O引脚变为高阻态*/
472 .LM44:
473 01e0 8091 3500 lds r24,53
474 01e4 877F andi r24,lo8(-9)
475 01e6 8093 3500 sts 53,r24
111:./ds1302.h **** clr_ds1302_io_ddr(); /*设为输入*/
477 .LM45:
478 01ea 8091 3400 lds r24,52
479 01ee 8F7D andi r24,lo8(-33)
480 01f0 8093 3400 sts 52,r24
481 /* epilogue: frame size=3 */
482 01f4 2396 adiw r28,3
483 01f6 0FB6 in __tmp_reg__,__SREG__
484 01f8 F894 cli
485 01fa DEBF out __SP_H__,r29
486 01fc 0FBE out __SREG__,__tmp_reg__
487 01fe CDBF out __SP_L__,r28
488 0200 DF91 pop r29
489 0202 CF91 pop r28
490 0204 0895 ret
491 /* epilogue end (size=9) */
492 /* function ds1302_write size 143 (124) */
497 .Lscope5:
500 .global ds1302_read
502 ds1302_read:
112:./ds1302.h **** }
113:./ds1302.h **** /******************************************************************/
114:./ds1302.h **** uchar ds1302_read(uchar reg)
115:./ds1302.h **** {
504 .LM46:
505 /* prologue: frame size=3 */
506 0206 CF93 push r28
507 0208 DF93 push r29
508 020a CDB7 in r28,__SP_L__
509 020c DEB7 in r29,__SP_H__
510 020e 2397 sbiw r28,3
511 0210 0FB6 in __tmp_reg__,__SREG__
512 0212 F894 cli
513 0214 DEBF out __SP_H__,r29
514 0216 0FBE out __SREG__,__tmp_reg__
515 0218 CDBF out __SP_L__,r28
516 /* prologue end (size=10) */
517 021a 8983 std Y+1,r24
116:./ds1302.h **** uchar data=0;
519 .LM47:
520 021c 1A82 std Y+2,__zero_reg__
117:./ds1302.h **** char i=0;
522 .LM48:
523 021e 1B82 std Y+3,__zero_reg__
118:./ds1302.h **** reg+=1; //读标志
525 .LM49:
526 0220 8981 ldd r24,Y+1
527 0222 8F5F subi r24,lo8(-(1))
528 0224 8983 std Y+1,r24
119:./ds1302.h **** set_ds1302_rst_ddr();
530 .LM50:
531 0226 8091 3400 lds r24,52
532 022a 8860 ori r24,lo8(8)
533 022c 8093 3400 sts 52,r24
120:./ds1302.h **** set_ds1302_sclk_ddr();
535 .LM51:
536 0230 8091 3400 lds r24,52
537 0234 8061 ori r24,lo8(16)
538 0236 8093 3400 sts 52,r24
121:./ds1302.h **** set_ds1302_io_ddr(); /*设为输出*/
540 .LM52:
541 023a 8091 3400 lds r24,52
542 023e 8062 ori r24,lo8(32)
543 0240 8093 3400 sts 52,r24
122:./ds1302.h ****
123:./ds1302.h **** clr_ds1302_rst();
545 .LM53:
546 0244 8091 3500 lds r24,53
547 0248 877F andi r24,lo8(-9)
548 024a 8093 3500 sts 53,r24
124:./ds1302.h **** clr_ds1302_sclk();
550 .LM54:
551 024e 8091 3500 lds r24,53
552 0252 8F7E andi r24,lo8(-17)
553 0254 8093 3500 sts 53,r24
125:./ds1302.h **** set_ds1302_rst();
555 .LM55:
556 0258 8091 3500 lds r24,53
557 025c 8860 ori r24,lo8(8)
558 025e 8093 3500 sts 53,r24
126:./ds1302.h **** for(i=8;i>0;i--)
560 .LM56:
561 0262 88E0 ldi r24,lo8(8)
562 0264 8B83 std Y+3,r24
563 .L27:
565 .LM57:
566 0266 8B81 ldd r24,Y+3
567 0268 8823 tst r24
568 026a 11F1 breq .L28
127:./ds1302.h **** {
128:./ds1302.h **** clr_ds1302_sclk();
570 .LM58:
571 026c 8091 3500 lds r24,53
572 0270 8F7E andi r24,lo8(-17)
573 0272 8093 3500 sts 53,r24
129:./ds1302.h **** if((reg&0x01)==0x01)
575 .LM59:
576 0276 8981 ldd r24,Y+1
577 0278 9927 clr r25
578 027a 8170 andi r24,lo8(1)
579 027c 9070 andi r25,hi8(1)
580 027e 0097 sbiw r24,0
581 0280 31F0 breq .L30
130:./ds1302.h **** set_ds1302_io();
583 .LM60:
584 0282 8091 3500 lds r24,53
585 0286 8062 ori r24,lo8(32)
586 0288 8093 3500 sts 53,r24
587 028c 05C0 rjmp .L31
588 .L30:
131:./ds1302.h **** else
132:./ds1302.h **** clr_ds1302_io();
590 .LM61:
591 028e 8091 3500 lds r24,53
592 0292 8F7D andi r24,lo8(-33)
593 0294 8093 3500 sts 53,r24
594 .L31:
133:./ds1302.h **** set_ds1302_sclk();
596 .LM62:
597 0298 8091 3500 lds r24,53
598 029c 8061 ori r24,lo8(16)
599 029e 8093 3500 sts 53,r24
134:./ds1302.h ****
135:./ds1302.h **** reg>>=1;
601 .LM63:
602 02a2 8981 ldd r24,Y+1
603 02a4 8695 lsr r24
604 02a6 8983 std Y+1,r24
606 .LM64:
607 02a8 8B81 ldd r24,Y+3
608 02aa 8150 subi r24,lo8(-(-1))
609 02ac 8B83 std Y+3,r24
610 02ae DBCF rjmp .L27
611 .L28:
136:./ds1302.h **** }
137:./ds1302.h **** clr_ds1302_io_ddr(); //PA1 in
613 .LM65:
614 02b0 8091 3400 lds r24,52
615 02b4 8F7D andi r24,lo8(-33)
616 02b6 8093 3400 sts 52,r24
138:./ds1302.h **** for(i=8;i>0;i--)
618 .LM66:
619 02ba 88E0 ldi r24,lo8(8)
620 02bc 8B83 std Y+3,r24
621 .L32:
622 02be 8B81 ldd r24,Y+3
623 02c0 8823 tst r24
624 02c2 39F1 breq .L33
139:./ds1302.h **** {
140:./ds1302.h **** if((PINC&0X20)==0X20)
626 .LM67:
627 02c4 8091 3300 lds r24,51
628 02c8 9927 clr r25
629 02ca 9695 lsr r25
630 02cc 8795 ror r24
631 02ce 9295 swap r25
632 02d0 8295 swap r24
633 02d2 8F70 andi r24,0x0f
634 02d4 8927 eor r24,r25
635 02d6 9F70 andi r25,0x0f
636 02d8 8927 eor r24,r25
637 02da 8170 andi r24,lo8(1)
638 02dc 9070 andi r25,hi8(1)
639 02de 0097 sbiw r24,0
640 02e0 21F0 breq .L35
141:./ds1302.h **** data|=0x80;
642 .LM68:
643 02e2 8A81 ldd r24,Y+2
644 02e4 8068 ori r24,lo8(-128)
645 02e6 8A83 std Y+2,r24
646 02e8 03C0 rjmp .L36
647 .L35:
142:./ds1302.h **** else
143:./ds1302.h **** data&=0x7f;
649 .LM69:
650 02ea 8A81 ldd r24,Y+2
651 02ec 8F77 andi r24,lo8(127)
652 02ee 8A83 std Y+2,r24
653 .L36:
144:./ds1302.h **** set_ds1302_sclk();
655 .LM70:
656 02f0 8091 3500 lds r24,53
657 02f4 8061 ori r24,lo8(16)
658 02f6 8093 3500 sts 53,r24
145:./ds1302.h **** clr_ds1302_sclk();
660 .LM71:
661 02fa 8091 3500 lds r24,53
662 02fe 8F7E andi r24,lo8(-17)
663 0300 8093 3500 sts 53,r24
146:./ds1302.h ****
147:./ds1302.h **** data>>=1;
665 .LM72:
666 0304 8A81 ldd r24,Y+2
667 0306 8695 lsr r24
668 0308 8A83 std Y+2,r24
670 .LM73:
671 030a 8B81 ldd r24,Y+3
672 030c 8150 subi r24,lo8(-(-1))
673 030e 8B83 std Y+3,r24
674 0310 D6CF rjmp .L32
675 .L33:
148:./ds1302.h **** }
149:./ds1302.h **** clr_ds1302_rst();
677 .LM74:
678 0312 8091 3500 lds r24,53
679 0316 877F andi r24,lo8(-9)
680 0318 8093 3500 sts 53,r24
150:./ds1302.h **** return(data);
682 .LM75:
683 031c 8A81 ldd r24,Y+2
684 031e 9927 clr r25
685 /* epilogue: frame size=3 */
686 0320 2396 adiw r28,3
687 0322 0FB6 in __tmp_reg__,__SREG__
688 0324 F894 cli
689 0326 DEBF out __SP_H__,r29
690 0328 0FBE out __SREG__,__tmp_reg__
691 032a CDBF out __SP_L__,r28
692 032c DF91 pop r29
693 032e CF91 pop r28
694 0330 0895 ret
695 /* epilogue end (size=9) */
696 /* function ds1302_read size 150 (131) */
702 .Lscope6:
704 .global check_ds1302
706 check_ds1302:
151:./ds1302.h **** }
152:./ds1302.h **** /******************************************************************/
153:./ds1302.h **** uchar check_ds1302(void)
154:./ds1302.h **** {
708 .LM76:
709 /* prologue: frame size=2 */
710 0332 CF93 push r28
711 0334 DF93 push r29
712 0336 CDB7 in r28,__SP_L__
713 0338 DEB7 in r29,__SP_H__
714 033a 2297 sbiw r28,2
715 033c 0FB6 in __tmp_reg__,__SREG__
716 033e F894 cli
717 0340 DEBF out __SP_H__,r29
718 0342 0FBE out __SREG__,__tmp_reg__
719 0344 CDBF out __SP_L__,r28
720 /* prologue end (size=10) */
155:./ds1302.h **** ds1302_write(ds1302_control_reg,0x80);
722 .LM77:
723 0346 60E8 ldi r22,lo8(-128)
724 0348 8EE8 ldi r24,lo8(-114)
725 034a CEDE rcall ds1302_write
156:./ds1302.h **** if(ds1302_read(ds1302_control_reg)==0x80) return 1;
727 .LM78:
728 034c 8EE8 ldi r24,lo8(-114)
729 034e 5BDF rcall ds1302_read
730 0350 8038 cpi r24,lo8(-128)
731 0352 29F4 brne .L38
733 .LM79:
734 0354 81E0 ldi r24,lo8(1)
735 0356 90E0 ldi r25,hi8(1)
736 0358 8983 std Y+1,r24
737 035a 9A83 std Y+2,r25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -