📄 main.lss
字号:
if (temp == 0x2c) /* '<' inc freq one step*/
3de: 89 81 ldd r24, Y+1 ; 0x01
3e0: 8c 32 cpi r24, 0x2C ; 44
3e2: 59 f0 breq .+22 ; 0x3fa <__vector_30+0x52>
{
if (Div2 == 0xff) {Div2 = 0; Div1++;}
else Div2++;
}
else if (temp == 0x2e) /* '>' dec freq one step*/
3e4: 89 81 ldd r24, Y+1 ; 0x01
3e6: 8e 32 cpi r24, 0x2E ; 46
3e8: 91 f0 breq .+36 ; 0x40e <__vector_30+0x66>
{
if (Div2 == 0) {Div1--; Div2=0xff;}
else Div2--;
}
else if (temp == 'c') /* 'c' inc channel */
3ea: 89 81 ldd r24, Y+1 ; 0x01
3ec: 83 36 cpi r24, 0x63 ; 99
3ee: 39 f1 breq .+78 ; 0x43e <__vector_30+0x96>
{
if(channel++ == 103) channel = 0;
calc_divider(channel);
}
else if (temp == 'x') /* 'x' dec channel */
3f0: 89 81 ldd r24, Y+1 ; 0x01
3f2: 88 37 cpi r24, 0x78 ; 120
3f4: 09 f0 breq .+2 ; 0x3f8 <__vector_30+0x50>
3f6: 44 c0 rjmp .+136 ; 0x480 <__vector_30+0xd8>
3f8: 14 c0 rjmp .+40 ; 0x422 <__vector_30+0x7a>
3fa: 80 91 d3 02 lds r24, 0x02D3
3fe: 8f 3f cpi r24, 0xFF ; 255
400: 99 f1 breq .+102 ; 0x468 <__vector_30+0xc0>
402: 80 91 d3 02 lds r24, 0x02D3
406: 8f 5f subi r24, 0xFF ; 255
408: 80 93 d3 02 sts 0x02D3, r24
40c: 39 c0 rjmp .+114 ; 0x480 <__vector_30+0xd8>
40e: 80 91 d3 02 lds r24, 0x02D3
412: 88 23 and r24, r24
414: 01 f1 breq .+64 ; 0x456 <__vector_30+0xae>
416: 80 91 d3 02 lds r24, 0x02D3
41a: 81 50 subi r24, 0x01 ; 1
41c: 80 93 d3 02 sts 0x02D3, r24
420: 2f c0 rjmp .+94 ; 0x480 <__vector_30+0xd8>
{
if(channel-- == 0) channel = 103;
422: 80 91 d4 02 lds r24, 0x02D4
426: 81 50 subi r24, 0x01 ; 1
428: 80 93 d4 02 sts 0x02D4, r24
42c: 80 91 d4 02 lds r24, 0x02D4
430: 8f 3f cpi r24, 0xFF ; 255
432: 11 f1 breq .+68 ; 0x478 <__vector_30+0xd0>
calc_divider(channel);
434: 80 91 d4 02 lds r24, 0x02D4
438: 0e 94 91 00 call 0x122 ; 0x122 <calc_divider>
43c: 21 c0 rjmp .+66 ; 0x480 <__vector_30+0xd8>
43e: 80 91 d4 02 lds r24, 0x02D4
442: 8f 5f subi r24, 0xFF ; 255
444: 80 93 d4 02 sts 0x02D4, r24
448: 80 91 d4 02 lds r24, 0x02D4
44c: 88 36 cpi r24, 0x68 ; 104
44e: 91 f7 brne .-28 ; 0x434 <__vector_30+0x8c>
450: 10 92 d4 02 sts 0x02D4, r1
454: ef cf rjmp .-34 ; 0x434 <__vector_30+0x8c>
456: 80 91 d9 02 lds r24, 0x02D9
45a: 81 50 subi r24, 0x01 ; 1
45c: 80 93 d9 02 sts 0x02D9, r24
460: 8f ef ldi r24, 0xFF ; 255
462: 80 93 d3 02 sts 0x02D3, r24
466: 0c c0 rjmp .+24 ; 0x480 <__vector_30+0xd8>
468: 10 92 d3 02 sts 0x02D3, r1
46c: 80 91 d9 02 lds r24, 0x02D9
470: 8f 5f subi r24, 0xFF ; 255
472: 80 93 d9 02 sts 0x02D9, r24
476: 04 c0 rjmp .+8 ; 0x480 <__vector_30+0xd8>
478: 87 e6 ldi r24, 0x67 ; 103
47a: 80 93 d4 02 sts 0x02D4, r24
47e: da cf rjmp .-76 ; 0x434 <__vector_30+0x8c>
}
SET_FLAG(channel_change_byte_flag);
480: 8f ef ldi r24, 0xFF ; 255
482: 80 93 d8 02 sts 0x02D8, r24
486: 21 96 adiw r28, 0x01 ; 1
488: f8 94 cli
48a: de bf out 0x3e, r29 ; 62
48c: cd bf out 0x3d, r28 ; 61
48e: df 91 pop r29
490: cf 91 pop r28
492: ff 91 pop r31
494: ef 91 pop r30
496: bf 91 pop r27
498: af 91 pop r26
49a: 9f 91 pop r25
49c: 8f 91 pop r24
49e: 7f 91 pop r23
4a0: 6f 91 pop r22
4a2: 5f 91 pop r21
4a4: 4f 91 pop r20
4a6: 3f 91 pop r19
4a8: 2f 91 pop r18
4aa: 0f 90 pop r0
4ac: 0f be out 0x3f, r0 ; 63
4ae: 0f 90 pop r0
4b0: 1f 90 pop r1
4b2: 18 95 reti
000004b4 <PutEnter>:
}
void PutEnter(void)
{
4b4: 8d e0 ldi r24, 0x0D ; 13
4b6: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
PutChar(0x0d);
PutChar(0x0a);
4ba: 8a e0 ldi r24, 0x0A ; 10
4bc: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
4c0: 08 95 ret
000004c2 <str_len>:
}
unsigned char str_len(const unsigned char * spr)
{
4c2: dc 01 movw r26, r24
unsigned char string_len = 0;
unsigned char string_data = *spr++;
while(string_data != '\0')
4c4: 8c 91 ld r24, X
4c6: 88 23 and r24, r24
4c8: 49 f0 breq .+18 ; 0x4dc <str_len+0x1a>
4ca: fd 01 movw r30, r26
{
string_len++;
string_data = *spr++;
4cc: 81 81 ldd r24, Z+1 ; 0x01
4ce: 31 96 adiw r30, 0x01 ; 1
4d0: 88 23 and r24, r24
4d2: e1 f7 brne .-8 ; 0x4cc <str_len+0xa>
4d4: 8e 2f mov r24, r30
4d6: 8a 1b sub r24, r26
4d8: 99 27 eor r25, r25
}
return string_len;
}
4da: 08 95 ret
4dc: 80 e0 ldi r24, 0x00 ; 0
4de: 90 e0 ldi r25, 0x00 ; 0
4e0: 08 95 ret
000004e2 <PutAscii>:
void put_string(const unsigned char * str)
{
unsigned char i;
unsigned char len;
len=strlen(str);
for(i=0; i<len; i++)
{
PutChar(*str++);
}
}
void PutAscii(unsigned char hex_data)
{
4e2: 1f 93 push r17
4e4: 18 2f mov r17, r24
unsigned char temp;
temp = (hex_data & 0xf0) >> 4;
4e6: 82 95 swap r24
4e8: 8f 70 andi r24, 0x0F ; 15
if(temp<10) temp += 0x30;
4ea: 8a 30 cpi r24, 0x0A ; 10
4ec: 48 f4 brcc .+18 ; 0x500 <PutAscii+0x1e>
4ee: 80 5d subi r24, 0xD0 ; 208
else temp += 55;
PutChar(temp);
4f0: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
temp = hex_data & 0x0f;
4f4: 81 2f mov r24, r17
4f6: 8f 70 andi r24, 0x0F ; 15
if(temp<10) temp += 0x30;
4f8: 8a 30 cpi r24, 0x0A ; 10
4fa: 48 f4 brcc .+18 ; 0x50e <PutAscii+0x2c>
4fc: 80 5d subi r24, 0xD0 ; 208
4fe: 08 c0 rjmp .+16 ; 0x510 <PutAscii+0x2e>
500: 89 5c subi r24, 0xC9 ; 201
502: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
506: 81 2f mov r24, r17
508: 8f 70 andi r24, 0x0F ; 15
50a: 8a 30 cpi r24, 0x0A ; 10
50c: b8 f3 brcs .-18 ; 0x4fc <PutAscii+0x1a>
else temp += 55;
50e: 89 5c subi r24, 0xC9 ; 201
PutChar(temp);
510: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
514: 1f 91 pop r17
516: 08 95 ret
00000518 <put_string>:
518: 0f 93 push r16
51a: 1f 93 push r17
51c: cf 93 push r28
51e: df 93 push r29
520: dc 01 movw r26, r24
522: fc 01 movw r30, r24
524: 01 90 ld r0, Z+
526: 00 20 and r0, r0
528: e9 f7 brne .-6 ; 0x524 <put_string+0xc>
52a: 31 97 sbiw r30, 0x01 ; 1
52c: e8 1b sub r30, r24
52e: f9 0b sbc r31, r25
530: 8e 2f mov r24, r30
532: ee 23 and r30, r30
534: 69 f0 breq .+26 ; 0x550 <put_string+0x38>
536: ed 01 movw r28, r26
538: 81 50 subi r24, 0x01 ; 1
53a: 8d 01 movw r16, r26
53c: 08 0f add r16, r24
53e: 11 1d adc r17, r1
540: 0f 5f subi r16, 0xFF ; 255
542: 1f 4f sbci r17, 0xFF ; 255
544: 89 91 ld r24, Y+
546: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
54a: c0 17 cp r28, r16
54c: d1 07 cpc r29, r17
54e: d1 f7 brne .-12 ; 0x544 <put_string+0x2c>
550: df 91 pop r29
552: cf 91 pop r28
554: 1f 91 pop r17
556: 0f 91 pop r16
558: 08 95 ret
0000055a <timer0_task>:
55a: 80 91 d6 02 lds r24, 0x02D6
55e: 90 91 d7 02 lds r25, 0x02D7
562: c2 97 sbiw r24, 0x32 ; 50
564: 40 f0 brcs .+16 ; 0x576 <timer0_task+0x1c>
566: 10 92 d7 02 sts 0x02D7, r1
56a: 10 92 d6 02 sts 0x02D6, r1
56e: 80 91 c6 02 lds r24, 0x02C6
572: 8f 3f cpi r24, 0xFF ; 255
574: 09 f0 breq .+2 ; 0x578 <timer0_task+0x1e>
576: 08 95 ret
578: 80 e2 ldi r24, 0x20 ; 32
57a: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
57e: 80 e2 ldi r24, 0x20 ; 32
580: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
584: 80 e2 ldi r24, 0x20 ; 32
586: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
58a: 80 e2 ldi r24, 0x20 ; 32
58c: 0e 94 ca 01 call 0x394 ; 0x394 <PutChar>
590: 8b e1 ldi r24, 0x1B ; 27
592: 91 e0 ldi r25, 0x01 ; 1
594: 0e 94 8c 02 call 0x518 ; 0x518 <put_string>
598: 0e 94 85 01 call 0x30a ; 0x30a <ReadChan>
59c: 0e 94 71 02 call 0x4e2 ; 0x4e2 <PutAscii>
5a0: 0e 94 5a 02 call 0x4b4 ; 0x4b4 <PutEnter>
5a4: 10 92 c6 02 sts 0x02C6, r1
5a8: 08 95 ret
000005aa <Check_UART_Int>:
5aa: 80 91 d8 02 lds r24, 0x02D8
5ae: 8f 3f cpi r24, 0xFF ; 255
5b0: 09 f0 breq .+2 ; 0x5b4 <Check_UART_Int+0xa>
5b2: 08 95 ret
5b4: 8a e0 ldi r24, 0x0A ; 10
5b6: 91 e0 ldi r25, 0x01 ; 1
5b8: 0e 94 8c 02 call 0x518 ; 0x518 <put_string>
5bc: 80 91 d4 02 lds r24, 0x02D4
5c0: 0e 94 71 02 call 0x4e2 ; 0x4e2 <PutAscii>
5c4: 80 91 d4 02 lds r24, 0x02D4
5c8: 0e 94 4b 01 call 0x296 ; 0x296 <SetChan>
5cc: 10 92 d8 02 sts 0x02D8, r1
5d0: 08 95 ret
000005d2 <main>:
}
int main(void)
{
5d2: 10 92 d7 02 sts 0x02D7, r1
5d6: 10 92 d6 02 sts 0x02D6, r1
timer0_counter = 0;
channel = 0;
5da: 10 92 d4 02 sts 0x02D4, r1
port_init();
5de: 0e 94 ad 01 call 0x35a ; 0x35a <port_init>
Timer0Init();
5e2: 0e 94 b6 01 call 0x36c ; 0x36c <Timer0Init>
UartInit();
5e6: 0e 94 bc 01 call 0x378 ; 0x378 <UartInit>
TIMSK = (1<<TOIE0);
5ea: 81 e0 ldi r24, 0x01 ; 1
5ec: 87 bf out 0x37, r24 ; 55
sei();
5ee: 78 94 sei
put_string(start_string);
5f0: 80 e0 ldi r24, 0x00 ; 0
5f2: 91 e0 ldi r25, 0x01 ; 1
5f4: 0e 94 8c 02 call 0x518 ; 0x518 <put_string>
CLEAR_FLAG(channel_change_byte_flag);
5f8: 10 92 d8 02 sts 0x02D8, r1
CLEAR_FLAG(channel_busy_byte_flag);
5fc: 10 92 c6 02 sts 0x02C6, r1
channel = 0;
600: 10 92 d4 02 sts 0x02D4, r1
calc_divider(channel);
604: 80 91 d4 02 lds r24, 0x02D4
608: 0e 94 91 00 call 0x122 ; 0x122 <calc_divider>
put_string(current_channel_string);
60c: 8a e0 ldi r24, 0x0A ; 10
60e: 91 e0 ldi r25, 0x01 ; 1
610: 0e 94 8c 02 call 0x518 ; 0x518 <put_string>
PutAscii(channel);
614: 80 91 d4 02 lds r24, 0x02D4
618: 0e 94 71 02 call 0x4e2 ; 0x4e2 <PutAscii>
SetChan(channel);
61c: 80 91 d4 02 lds r24, 0x02D4
620: 0e 94 4b 01 call 0x296 ; 0x296 <SetChan>
PutEnter();
624: 0e 94 5a 02 call 0x4b4 ; 0x4b4 <PutEnter>
while(1)
{
timer0_task();
628: 0e 94 ad 02 call 0x55a ; 0x55a <timer0_task>
Check_UART_Int();
62c: 0e 94 d5 02 call 0x5aa ; 0x5aa <Check_UART_Int>
630: fb cf rjmp .-10 ; 0x628 <main+0x56>
00000632 <__udivmodsi4>:
632: a1 e2 ldi r26, 0x21 ; 33
634: 1a 2e mov r1, r26
636: aa 1b sub r26, r26
638: bb 1b sub r27, r27
63a: fd 01 movw r30, r26
63c: 0d c0 rjmp .+26 ; 0x658 <__udivmodsi4_ep>
0000063e <__udivmodsi4_loop>:
63e: aa 1f adc r26, r26
640: bb 1f adc r27, r27
642: ee 1f adc r30, r30
644: ff 1f adc r31, r31
646: a2 17 cp r26, r18
648: b3 07 cpc r27, r19
64a: e4 07 cpc r30, r20
64c: f5 07 cpc r31, r21
64e: 20 f0 brcs .+8 ; 0x658 <__udivmodsi4_ep>
650: a2 1b sub r26, r18
652: b3 0b sbc r27, r19
654: e4 0b sbc r30, r20
656: f5 0b sbc r31, r21
00000658 <__udivmodsi4_ep>:
658: 66 1f adc r22, r22
65a: 77 1f adc r23, r23
65c: 88 1f adc r24, r24
65e: 99 1f adc r25, r25
660: 1a 94 dec r1
662: 69 f7 brne .-38 ; 0x63e <__udivmodsi4_loop>
664: 60 95 com r22
666: 70 95 com r23
668: 80 95 com r24
66a: 90 95 com r25
66c: 9b 01 movw r18, r22
66e: ac 01 movw r20, r24
670: bd 01 movw r22, r26
672: cf 01 movw r24, r30
674: 08 95 ret
00000676 <_exit>:
676: ff cf rjmp .-2 ; 0x676 <_exit>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -