?? led.lst
字號:
389 0136 BD9A sbi 55-0x20,5
390 0138 C598 cbi 56-0x20,5
391 013a 1CC0 rjmp .L3
392 .L7:
394 .LM17:
395 013c C330 cpi r28,lo8(3)
396 013e 19F4 brne .L9
397 0140 8E9A sbi 49-0x20,6
398 0142 9698 cbi 50-0x20,6
399 0144 17C0 rjmp .L3
400 .L9:
402 .LM18:
403 0146 C230 cpi r28,lo8(2)
404 0148 19F4 brne .L11
405 014a 8F9A sbi 49-0x20,7
406 014c 9798 cbi 50-0x20,7
407 014e 12C0 rjmp .L3
408 .L11:
410 .LM19:
411 0150 C130 cpi r28,lo8(1)
412 0152 19F4 brne .L13
413 0154 B89A sbi 55-0x20,0
414 0156 C098 cbi 56-0x20,0
415 0158 0DC0 rjmp .L3
416 .L13:
418 .LM20:
419 015a C630 cpi r28,lo8(6)
420 015c 19F4 brne .L15
421 015e BB9A sbi 55-0x20,3
422 0160 C398 cbi 56-0x20,3
423 0162 08C0 rjmp .L3
424 .L15:
426 .LM21:
427 0164 C730 cpi r28,lo8(7)
428 0166 21F0 breq .L22
430 .LM22:
431 0168 C830 cpi r28,lo8(8)
432 016a 11F0 breq .L22
434 .LM23:
435 016c C930 cpi r28,lo8(9)
436 016e 11F4 brne .L3
437 .L22:
438 0170 BE9A sbi 55-0x20,6
439 0172 C698 cbi 56-0x20,6
440 .L3:
441 /* epilogue: frame size=0 */
442 0174 CF91 pop r28
443 0176 0895 ret
444 /* epilogue end (size=2) */
445 /* function DispSeperateShow size 57 (54) */
447 .Lscope1:
451 .global Hex2Bcd
453 Hex2Bcd:
76:drive/led.c **** }
77:drive/led.c ****
78:drive/led.c ****
79:drive/led.c **** void Hex2Bcd( uint16 bytevalue,uint8 bcdval[5] )
80:drive/led.c **** {
455 .LM24:
456 /* prologue: frame size=0 */
457 /* prologue end (size=0) */
458 0178 FB01 movw r30,r22
459 017a DB01 movw r26,r22
460 017c 24E0 ldi r18,lo8(4)
461 .L27:
81:drive/led.c **** u08 j;
82:drive/led.c **** for ( j = 0; j < 5 ;j++)
83:drive/led.c **** {
84:drive/led.c **** bcdval[j]= 0;
463 .LM25:
464 017e 1D92 st X+,__zero_reg__
466 .LM26:
467 0180 2150 subi r18,lo8(-(-1))
468 0182 27FF sbrs r18,7
469 0184 FCCF rjmp .L27
85:drive/led.c **** }
86:drive/led.c **** //萬位處理
87:drive/led.c **** while( bytevalue >= 10000) //20060402 判斷中的>=不能寫成>,否則有錯,特別是會
88:drive/led.c **** //各位數為10,在顯示時顯示成“a”
89:drive/led.c **** {
90:drive/led.c **** bcdval[0]++;
91:drive/led.c **** bytevalue-=10000;
471 .LM27:
472 0186 27E2 ldi r18,hi8(10000)
473 0188 8031 cpi r24,lo8(10000)
474 018a 9207 cpc r25,r18
475 018c 48F0 brlo .L43
476 018e 2081 ld r18,Z
477 .L30:
479 .LM28:
480 0190 2F5F subi r18,lo8(-(1))
482 .LM29:
483 0192 8051 subi r24,lo8(-(-10000))
484 0194 9742 sbci r25,hi8(-(-10000))
485 0196 37E2 ldi r19,hi8(10000)
486 0198 8031 cpi r24,lo8(10000)
487 019a 9307 cpc r25,r19
488 019c C8F7 brsh .L30
489 019e 2083 st Z,r18
490 .L43:
92:drive/led.c **** }
93:drive/led.c **** //千位處理
94:drive/led.c **** while( bytevalue >= 1000)
95:drive/led.c **** {
96:drive/led.c **** bcdval[1]++;
97:drive/led.c **** bytevalue-=1000;
492 .LM30:
493 01a0 23E0 ldi r18,hi8(1000)
494 01a2 883E cpi r24,lo8(1000)
495 01a4 9207 cpc r25,r18
496 01a6 48F0 brlo .L45
497 01a8 2181 ldd r18,Z+1
498 .L33:
500 .LM31:
501 01aa 2F5F subi r18,lo8(-(1))
503 .LM32:
504 01ac 885E subi r24,lo8(-(-1000))
505 01ae 9340 sbci r25,hi8(-(-1000))
506 01b0 33E0 ldi r19,hi8(1000)
507 01b2 883E cpi r24,lo8(1000)
508 01b4 9307 cpc r25,r19
509 01b6 C8F7 brsh .L33
510 01b8 2183 std Z+1,r18
511 .L45:
98:drive/led.c **** }
99:drive/led.c **** //百位處理
100:drive/led.c **** while( bytevalue >= 100)
101:drive/led.c **** {
102:drive/led.c **** bcdval[2]++;
103:drive/led.c **** bytevalue-=100;
513 .LM33:
514 01ba 8436 cpi r24,100
515 01bc 9105 cpc r25,__zero_reg__
516 01be 40F0 brlo .L47
517 01c0 2281 ldd r18,Z+2
518 .L36:
520 .LM34:
521 01c2 2F5F subi r18,lo8(-(1))
523 .LM35:
524 01c4 8456 subi r24,lo8(-(-100))
525 01c6 9040 sbci r25,hi8(-(-100))
526 01c8 8436 cpi r24,100
527 01ca 9105 cpc r25,__zero_reg__
528 01cc D0F7 brsh .L36
529 01ce 2283 std Z+2,r18
530 .L47:
104:drive/led.c **** }
105:drive/led.c **** //十位處理
106:drive/led.c **** while(bytevalue >= 10)
107:drive/led.c **** {
108:drive/led.c **** bcdval[3]++;
109:drive/led.c **** bytevalue-=10;
532 .LM36:
533 01d0 8A30 cpi r24,10
534 01d2 9105 cpc r25,__zero_reg__
535 01d4 38F0 brlo .L49
536 01d6 2381 ldd r18,Z+3
537 .L39:
539 .LM37:
540 01d8 2F5F subi r18,lo8(-(1))
542 .LM38:
543 01da 0A97 sbiw r24,10
544 01dc 8A30 cpi r24,10
545 01de 9105 cpc r25,__zero_reg__
546 01e0 D8F7 brsh .L39
547 01e2 2383 std Z+3,r18
548 .L49:
110:drive/led.c **** }
111:drive/led.c **** //個位處理
112:drive/led.c **** bcdval[4]=bytevalue;
550 .LM39:
551 01e4 8483 std Z+4,r24
552 /* epilogue: frame size=0 */
553 01e6 0895 ret
554 /* epilogue end (size=1) */
555 /* function Hex2Bcd size 56 (55) */
560 .Lscope2:
562 .global __vector_4
564 __vector_4:
113:drive/led.c ****
114:drive/led.c **** }
115:drive/led.c ****
116:drive/led.c ****
117:drive/led.c **** /**************************************************************
118:drive/led.c **** * functionname: signal(sig_overflow0)
119:drive/led.c **** ***************************************************************/
120:drive/led.c **** static uint16 cnt = 0 ; /*軟定時器,用于設定時標 */
121:drive/led.c **** static uint8 LedCnt = 0 ; /*用于數碼管的刷新計數 */
122:drive/led.c **** static uint16 fLedFlashMap= 0 ; /*用于閃爍位的指示 */
123:drive/led.c **** static uint8 fFlashison = 0 ; /*指示閃爍中的明暗兩種狀態 */
124:drive/led.c **** u08 tick_15ms = 0 ;
125:drive/led.c **** static u16 tick_500ms = 0 ;
126:drive/led.c **** static u16 tick_1s = 0 ;
127:drive/led.c **** static u16 tick_5s = 0 ;
128:drive/led.c **** static u16 tick_60s = 0 ;
129:drive/led.c ****
130:drive/led.c **** /*********定時器2的中斷,來產生系統工作的基本時序**************/
131:drive/led.c ****
132:drive/led.c **** SIGNAL(SIG_OVERFLOW2)
133:drive/led.c **** //SIGNAL(SIG_OVERFLOW0)
134:drive/led.c **** {
566 .LM40:
567 /* prologue: frame size=0 */
568 01e8 1F92 push __zero_reg__
569 01ea 0F92 push __tmp_reg__
570 01ec 0FB6 in __tmp_reg__,__SREG__
571 01ee 0F92 push __tmp_reg__
572 01f0 1124 clr __zero_reg__
573 01f2 2F93 push r18
574 01f4 3F93 push r19
575 01f6 4F93 push r20
576 01f8 5F93 push r21
577 01fa 6F93 push r22
578 01fc 7F93 push r23
579 01fe 8F93 push r24
580 0200 9F93 push r25
581 0202 AF93 push r26
582 0204 BF93 push r27
583 0206 EF93 push r30
584 0208 FF93 push r31
585 /* prologue end (size=17) */
135:drive/led.c **** u08 ledbuffer = 0;
587 .LM41:
588 020a E0E0 ldi r30,lo8(0)
136:drive/led.c **** TCNT2 = TIMER2_BGN_VAL;
590 .LM42:
591 020c 80EE ldi r24,lo8(-32)
592 020e 84BD out 68-0x20,r24
137:drive/led.c **** //TCNT0 = TIMER0_BGN_VAL;
138:drive/led.c ****
139:drive/led.c **** if( tick_15ms++ >= 15/T0_TICK &&f_15ms==false ) { tick_15ms =0;f_15ms=true;timer0_stop();
594 .LM43:
595 0210 8091 0000 lds r24,tick_15ms
596 0214 982F mov r25,r24
597 0216 8F5F subi r24,lo8(-(1))
598 0218 8093 0000 sts tick_15ms,r24
599 021c 9F30 cpi r25,lo8(15)
600 021e 50F0 brlo .L55
602 .LM44:
603 0220 8091 0000 lds r24,f_15ms
604 0224 8823 tst r24
605 0226 31F4 brne .L55
606 0228 E093 0000 sts tick_15ms,r30
607 022c 81E0 ldi r24,lo8(1)
608 022e 8093 0000 sts f_15ms,r24
609 0232 00D0 rcall timer0_stop
610 .L55:
140:drive/led.c **** if( tick_500ms++>= 500/T0_TICK&&f_500ms==false ) { tick_500ms=0;f_500ms=true;}
612 .LM45:
613 0234 8091 0000 lds r24,tick_500ms
614 0238 9091 0000 lds r25,(tick_500ms)+1
615 023c 9C01 movw r18,r24
616 023e 0196 adiw r24,1
617 0240 9093 0000 sts (tick_500ms)+1,r25
618 0244 8093 0000 sts tick_500ms,r24
619 0248 245F subi r18,lo8(500)
620 024a 3140 sbci r19,hi8(500)
621 024c 58F0 brlo .L56
622 024e 8091 0000 lds r24,f_500ms
623 0252 8823 tst r24
624 0254 39F4 brne .L56
625 0256 1092 0000 sts (tick_500ms)+1,__zero_reg__
626 025a 1092 0000 sts tick_500ms,__zero_reg__
627 025e 81E0 ldi r24,lo8(1)
628 0260 8093 0000 sts f_500ms,r24
629 .L56:
141:drive/led.c **** if( tick_1s++ >= 1000/T0_TICK&&f_1s==false ) { tick_1s =0;f_1s=true; }
631 .LM46:
632 0264 8091 0000 lds r24,tick_1s
633 0268 9091 0000 lds r25,(tick_1s)+1
634 026c 9C01 movw r18,r24
635 026e 0196 adiw r24,1
636 0270 9093 0000 sts (tick_1s)+1,r25
637 0274 8093 0000 sts tick_1s,r24
638 0278 285E subi r18,lo8(1000)
639 027a 3340 sbci r19,hi8(1000)
640 027c 58F0 brlo .L57
641 027e 8091 0000 lds r24,f_1s
642 0282 8823 tst r24
643 0284 39F4 brne .L57
644 0286 1092 0000 sts (tick_1s)+1,__zero_reg__
645 028a 1092 0000 sts tick_1s,__zero_reg__
646 028e 81E0 ldi r24,lo8(1)
647 0290 8093 0000 sts f_1s,r24
648 .L57:
142:drive/led.c **** if( tick_5s++ >= 3000/T0_TICK&&f_5s==false ) { tick_5s =0;f_5s=true; }
650 .LM47:
651 0294 8091 0000 lds r24,tick_5s
652 0298 9091 0000 lds r25,(tick_5s)+1
653 029c 9C01 movw r18,r24
654 029e 0196 adiw r24,1
655 02a0 9093 0000 sts (tick_5s)+1,r25
656 02a4 8093 0000 sts tick_5s,r24
657 02a8 285B subi r18,lo8(3000)
658 02aa 3B40 sbci r19,hi8(3000)
659 02ac 58F0 brlo .L58
660 02ae 8091 0000 lds r24,f_5s
661 02b2 8823 tst r24
662 02b4 39F4 brne .L58
663 02b6 1092 0000 sts (tick_5s)+1,__zero_reg__
664 02ba 1092 0000 sts tick_5s,__zero_reg__
665 02be 81E0 ldi r24,lo8(1)
666 02c0 8093 0000 sts f_5s,r24
667 .L58:
143:drive/led.c **** if( tick_60s++ >= 20000/T0_TICK&&f_60s==false ) { tick_60s =0;f_60s=true; }
669 .LM48:
670 02c4 8091 0000 lds r24,tick_60s
671 02c8 9091 0000 lds r25,(tick_60s)+1
672 02cc 9C01 movw r18,r24
673 02ce 0196 adiw r24,1
674 02d0 9093 0000 sts (tick_60s)+1,r25
675 02d4 8093 0000 sts tick_60s,r24
676 02d8 2052 subi r18,lo8(20000)
677 02da 3E44 sbci r19,hi8(20000)
678 02dc 58F0 brlo .L59
679 02de 8091 0000 lds r24,f_60s
680 02e2 8823 tst r24
681 02e4 39F4 brne .L59
682 02e6 1092 0000 sts (tick_60s)+1,__zero_reg__
683 02ea 1092 0000 sts tick_60s,__zero_reg__
684 02ee 81E0 ldi r24,lo8(1)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -