📄 main.lst
字号:
84:./ds1302.h **** clr_ds1302_rst(); /*置0*/
348 .LM23:
349 0120 8091 3500 lds r24,53
350 0124 877F andi r24,lo8(-9)
351 0126 8093 3500 sts 53,r24
85:./ds1302.h **** clr_ds1302_sclk(); /*置0,在RST置1时,SCLK必须为0*/
353 .LM24:
354 012a 8091 3500 lds r24,53
355 012e 8F7E andi r24,lo8(-17)
356 0130 8093 3500 sts 53,r24
86:./ds1302.h **** set_ds1302_rst(); /*置1,启动数据传送*/
358 .LM25:
359 0134 8091 3500 lds r24,53
360 0138 8860 ori r24,lo8(8)
361 013a 8093 3500 sts 53,r24
87:./ds1302.h **** for(i=8;i>0;i--) /*写地址*/
363 .LM26:
364 013e 88E0 ldi r24,lo8(8)
365 0140 8B83 std Y+3,r24
366 .L16:
368 .LM27:
369 0142 8B81 ldd r24,Y+3
370 0144 8823 tst r24
371 0146 11F1 breq .L17
88:./ds1302.h **** {
89:./ds1302.h ****
90:./ds1302.h **** if((reg&0x01)==0x01)
373 .LM28:
374 0148 8981 ldd r24,Y+1
375 014a 9927 clr r25
376 014c 8170 andi r24,lo8(1)
377 014e 9070 andi r25,hi8(1)
378 0150 0097 sbiw r24,0
379 0152 31F0 breq .L19
91:./ds1302.h **** set_ds1302_io();
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -