📄 main.lss
字号:
438: 60 e0 ldi r22, 0x00 ; 0
43a: 8c e3 ldi r24, 0x3C ; 60
43c: b7 de rcall .-658 ; 0x1ac
LCD_write_char((temp/10)%10 + 0x30 );
43e: 1a e0 ldi r17, 0x0A ; 10
440: 80 2f mov r24, r16
442: 61 2f mov r22, r17
444: dc d0 rcall .+440 ; 0x5fe
446: db d0 rcall .+438 ; 0x5fe
448: 89 2f mov r24, r25
44a: 80 5d subi r24, 0xD0 ; 208
44c: 6c de rcall .-808 ; 0x126
LCD_write_char(temp%10 + 0x30 );
44e: 80 2f mov r24, r16
450: 61 2f mov r22, r17
452: d5 d0 rcall .+426 ; 0x5fe
454: 89 2f mov r24, r25
456: 80 5d subi r24, 0xD0 ; 208
458: 66 de rcall .-820 ; 0x126
45a: 1f 91 pop r17
45c: 0f 91 pop r16
45e: 08 95 ret
00000460 <init>:
}
void init(void)
{
DDRB = 0XFF;
460: 9f ef ldi r25, 0xFF ; 255
462: 97 bb out 0x17, r25 ; 23
PORTB = 0XFF;
464: 98 bb out 0x18, r25 ; 24
DDRD = 0B11100000;
466: 80 ee ldi r24, 0xE0 ; 224
468: 81 bb out 0x11, r24 ; 17
PORTD = 0XFF;
46a: 92 bb out 0x12, r25 ; 18
DDRC = 0B00000000;
46c: 14 ba out 0x14, r1 ; 20
PORTC = 0Xff; // IO init
46e: 95 bb out 0x15, r25 ; 21
delay_nms(100);
470: 84 e6 ldi r24, 0x64 ; 100
472: 90 e0 ldi r25, 0x00 ; 0
474: 06 de rcall .-1012 ; 0x82
//TWI
TWBR = 12;
476: 8c e0 ldi r24, 0x0C ; 12
478: 80 b9 out 0x00, r24 ; 0
TWCR = (1<<TWEN); //SEND STOP SIGNAL
47a: 84 e0 ldi r24, 0x04 ; 4
47c: 86 bf out 0x36, r24 ; 54
OSCCAL=0x9d; // 8M系统内部时钟校准
47e: 8d e9 ldi r24, 0x9D ; 157
480: 81 bf out 0x31, r24 ; 49
//设置MCU的I/O口
DDRB |= LCD_RST | LCD_DC | LCD_CE | SPI_MOSI | SPI_CLK;
482: 87 b3 in r24, 0x17 ; 23
484: 8d 63 ori r24, 0x3D ; 61
486: 87 bb out 0x17, r24 ; 23
SPSR |= (1<<SPI2X); // 设置SPI时钟倍速
488: 70 9a sbi 0x0e, 0 ; 14
SPCR |= (1<<SPE)|(1<<MSTR); // 使能SPI接口,主机模式,4M时钟
48a: 8d b1 in r24, 0x0d ; 13
48c: 80 65 ori r24, 0x50 ; 80
48e: 8d b9 out 0x0d, r24 ; 13
LCD_init(); //初始化液晶
490: 22 de rcall .-956 ; 0xd6
492: 08 95 ret
00000494 <main>:
}
//////////////////////////////////////////////////////////////////
int main(void)
{
494: cf e5 ldi r28, 0x5F ; 95
496: d4 e0 ldi r29, 0x04 ; 4
498: de bf out 0x3e, r29 ; 62
49a: cd bf out 0x3d, r28 ; 61
init();
49c: e1 df rcall .-62 ; 0x460
senddata[0] = 0b01101111; //load 100MHz pll
49e: 2f e6 ldi r18, 0x6F ; 111
4a0: 20 93 ea 02 sts 0x02EA, r18
senddata[1] = 0b10010011; // away's low side injection
4a4: 93 e9 ldi r25, 0x93 ; 147
4a6: 90 93 eb 02 sts 0x02EB, r25
senddata[2] = 0b00100000;
4aa: 80 e2 ldi r24, 0x20 ; 32
4ac: 80 93 ec 02 sts 0x02EC, r24
senddata[3] = 0b10010000;
4b0: 80 e9 ldi r24, 0x90 ; 144
4b2: 80 93 ed 02 sts 0x02ED, r24
senddata[4] = 0b00000000;
4b6: 10 92 ee 02 sts 0x02EE, r1
readdata[0] = senddata[0];
4ba: 20 93 ef 02 sts 0x02EF, r18
readdata[1] = senddata[1];
4be: 90 93 f0 02 sts 0x02F0, r25
LCD_write_english_string(0,0,"FM STEREO" );
4c2: 41 e9 ldi r20, 0x91 ; 145
4c4: 52 e0 ldi r21, 0x02 ; 2
4c6: 60 91 ee 02 lds r22, 0x02EE
4ca: 86 2f mov r24, r22
4cc: 6f de rcall .-802 ; 0x1ac
//LCD_write_english_string(0,5," stereo" );
LCD_write_english_string(0,2," 99.1Mhz" );
4ce: 4b e9 ldi r20, 0x9B ; 155
4d0: 52 e0 ldi r21, 0x02 ; 2
4d2: 62 e0 ldi r22, 0x02 ; 2
4d4: 80 e0 ldi r24, 0x00 ; 0
4d6: 6a de rcall .-812 ; 0x1ac
show_frequency();
4d8: d6 de rcall .-596 ; 0x286
LCD_write_inverse_string(0,5," UP ");
4da: 45 ea ldi r20, 0xA5 ; 165
4dc: 52 e0 ldi r21, 0x02 ; 2
4de: 65 e0 ldi r22, 0x05 ; 5
4e0: 80 e0 ldi r24, 0x00 ; 0
4e2: 73 de rcall .-794 ; 0x1ca
LCD_write_inverse_string(48,5," DOWN ");
4e4: 4c ea ldi r20, 0xAC ; 172
4e6: 52 e0 ldi r21, 0x02 ; 2
4e8: 65 e0 ldi r22, 0x05 ; 5
4ea: 80 e3 ldi r24, 0x30 ; 48
4ec: 6e de rcall .-804 ; 0x1ca
while(1)
{
if ( bit_is_clear( PIND,3))
4ee: 83 99 sbic 0x10, 3 ; 16
4f0: 1c c0 rjmp .+56 ; 0x52a
{
delay_nms(20);
4f2: 84 e1 ldi r24, 0x14 ; 20
4f4: 90 e0 ldi r25, 0x00 ; 0
4f6: c5 dd rcall .-1142 ; 0x82
if ( bit_is_clear( PIND,3))
4f8: 83 99 sbic 0x10, 3 ; 16
4fa: 17 c0 rjmp .+46 ; 0x52a
{
loop_until_bit_is_set(PIND, 3);
4fc: 83 9b sbis 0x10, 3 ; 16
4fe: fe cf rjmp .-4 ; 0x4fc
LCD_write_english_string(0,4,"KEY1 press" );
500: 43 eb ldi r20, 0xB3 ; 179
502: 52 e0 ldi r21, 0x02 ; 2
504: 64 e0 ldi r22, 0x04 ; 4
506: 80 e0 ldi r24, 0x00 ; 0
508: 51 de rcall .-862 ; 0x1ac
senddata[2] &= 0x7f; // set search down
50a: 80 91 ec 02 lds r24, 0x02EC
50e: 8f 77 andi r24, 0x7F ; 127
510: 80 93 ec 02 sts 0x02EC, r24
set5767();
514: 7c de rcall .-776 ; 0x20e
LCD_write_english_string(0,4,"searching down" );
516: 4e eb ldi r20, 0xBE ; 190
518: 52 e0 ldi r21, 0x02 ; 2
51a: 64 e0 ldi r22, 0x04 ; 4
51c: 80 e0 ldi r24, 0x00 ; 0
51e: 46 de rcall .-884 ; 0x1ac
search_up = 0;
520: 10 92 e8 02 sts 0x02E8, r1
search = 1;
524: 81 e0 ldi r24, 0x01 ; 1
526: 80 93 e9 02 sts 0x02E9, r24
}
}
if ( bit_is_clear( PIND,2))
52a: 82 99 sbic 0x10, 2 ; 16
52c: 1c c0 rjmp .+56 ; 0x566
{
delay_nms(20);
52e: 84 e1 ldi r24, 0x14 ; 20
530: 90 e0 ldi r25, 0x00 ; 0
532: a7 dd rcall .-1202 ; 0x82
if ( bit_is_clear( PIND,2))
534: 82 99 sbic 0x10, 2 ; 16
536: 17 c0 rjmp .+46 ; 0x566
{
loop_until_bit_is_set(PIND, 2);
538: 82 9b sbis 0x10, 2 ; 16
53a: fe cf rjmp .-4 ; 0x538
LCD_write_english_string(0,4,"KEY2 press" );
53c: 4d ec ldi r20, 0xCD ; 205
53e: 52 e0 ldi r21, 0x02 ; 2
540: 64 e0 ldi r22, 0x04 ; 4
542: 80 e0 ldi r24, 0x00 ; 0
544: 33 de rcall .-922 ; 0x1ac
senddata[2] |= 0x80; // set search up
546: 80 91 ec 02 lds r24, 0x02EC
54a: 80 68 ori r24, 0x80 ; 128
54c: 80 93 ec 02 sts 0x02EC, r24
set5767();
550: 5e de rcall .-836 ; 0x20e
LCD_write_english_string(0,4,"searching up ");
552: 48 ed ldi r20, 0xD8 ; 216
554: 52 e0 ldi r21, 0x02 ; 2
556: 64 e0 ldi r22, 0x04 ; 4
558: 80 e0 ldi r24, 0x00 ; 0
55a: 28 de rcall .-944 ; 0x1ac
search_up = 1;
55c: 81 e0 ldi r24, 0x01 ; 1
55e: 80 93 e8 02 sts 0x02E8, r24
search = 1;
562: 80 93 e9 02 sts 0x02E9, r24
}
}
if ( search )
566: 80 91 e9 02 lds r24, 0x02E9
56a: 88 23 and r24, r24
56c: 09 f4 brne .+2 ; 0x570
56e: bf cf rjmp .-130 ; 0x4ee
{
read5767();
570: 6c de rcall .-808 ; 0x24a
if ( readdata[0] & 0x40 ) //reach band end
572: 80 91 ef 02 lds r24, 0x02EF
576: 86 ff sbrs r24, 6
578: 10 c0 rjmp .+32 ; 0x59a
{
if ( search_up )
57a: 80 91 e8 02 lds r24, 0x02E8
57e: 88 23 and r24, r24
580: 29 f0 breq .+10 ; 0x58c
{
senddata[0] = 0b01101001; // load 88Mhz pll
582: 89 e6 ldi r24, 0x69 ; 105
584: 80 93 ea 02 sts 0x02EA, r24
senddata[1] = 0b11011010;
588: 8a ed ldi r24, 0xDA ; 218
58a: 04 c0 rjmp .+8 ; 0x594
set5767();
}
else
{
senddata[0] = 0b01110011; // load 108Mhz pll
58c: 83 e7 ldi r24, 0x73 ; 115
58e: 80 93 ea 02 sts 0x02EA, r24
senddata[1] = 0b01100100;
592: 84 e6 ldi r24, 0x64 ; 100
594: 80 93 eb 02 sts 0x02EB, r24
set5767();
598: 3a de rcall .-908 ; 0x20e
}
}
if ( readdata[0] & 0x80) //has been found a station
59a: 80 91 ef 02 lds r24, 0x02EF
59e: 87 ff sbrs r24, 7
5a0: a6 cf rjmp .-180 ; 0x4ee
{
show_frequency();
5a2: 71 de rcall .-798 ; 0x286
show_rx_power();
5a4: 41 df rcall .-382 ; 0x428
senddata[0] = ((readdata[0] & 0x3f) |0x40);
5a6: 80 91 ef 02 lds r24, 0x02EF
5aa: 8f 73 andi r24, 0x3F ; 63
5ac: 80 64 ori r24, 0x40 ; 64
5ae: 80 93 ea 02 sts 0x02EA, r24
senddata[1] = readdata[1]; //record the pll
5b2: 80 91 f0 02 lds r24, 0x02F0
5b6: 80 93 eb 02 sts 0x02EB, r24
search = 0;
5ba: 10 92 e9 02 sts 0x02E9, r1
5be: 97 cf rjmp .-210 ; 0x4ee
000005c0 <__mulsi3>:
5c0: 62 9f mul r22, r18
5c2: d0 01 movw r26, r0
5c4: 73 9f mul r23, r19
5c6: f0 01 movw r30, r0
5c8: 82 9f mul r24, r18
5ca: e0 0d add r30, r0
5cc: f1 1d adc r31, r1
5ce: 64 9f mul r22, r20
5d0: e0 0d add r30, r0
5d2: f1 1d adc r31, r1
5d4: 92 9f mul r25, r18
5d6: f0 0d add r31, r0
5d8: 83 9f mul r24, r19
5da: f0 0d add r31, r0
5dc: 74 9f mul r23, r20
5de: f0 0d add r31, r0
5e0: 65 9f mul r22, r21
5e2: f0 0d add r31, r0
5e4: 99 27 eor r25, r25
5e6: 72 9f mul r23, r18
5e8: b0 0d add r27, r0
5ea: e1 1d adc r30, r1
5ec: f9 1f adc r31, r25
5ee: 63 9f mul r22, r19
5f0: b0 0d add r27, r0
5f2: e1 1d adc r30, r1
5f4: f9 1f adc r31, r25
5f6: bd 01 movw r22, r26
5f8: cf 01 movw r24, r30
5fa: 11 24 eor r1, r1
5fc: 08 95 ret
000005fe <__udivmodqi4>:
5fe: 99 1b sub r25, r25
600: 79 e0 ldi r23, 0x09 ; 9
602: 04 c0 rjmp .+8 ; 0x60c
00000604 <__udivmodqi4_loop>:
604: 99 1f adc r25, r25
606: 96 17 cp r25, r22
608: 08 f0 brcs .+2 ; 0x60c
60a: 96 1b sub r25, r22
0000060c <__udivmodqi4_ep>:
60c: 88 1f adc r24, r24
60e: 7a 95 dec r23
610: c9 f7 brne .-14 ; 0x604
612: 80 95 com r24
614: 08 95 ret
00000616 <__udivmodsi4>:
616: a1 e2 ldi r26, 0x21 ; 33
618: 1a 2e mov r1, r26
61a: aa 1b sub r26, r26
61c: bb 1b sub r27, r27
61e: fd 01 movw r30, r26
620: 0d c0 rjmp .+26 ; 0x63c
00000622 <__udivmodsi4_loop>:
622: aa 1f adc r26, r26
624: bb 1f adc r27, r27
626: ee 1f adc r30, r30
628: ff 1f adc r31, r31
62a: a2 17 cp r26, r18
62c: b3 07 cpc r27, r19
62e: e4 07 cpc r30, r20
630: f5 07 cpc r31, r21
632: 20 f0 brcs .+8 ; 0x63c
634: a2 1b sub r26, r18
636: b3 0b sbc r27, r19
638: e4 0b sbc r30, r20
63a: f5 0b sbc r31, r21
0000063c <__udivmodsi4_ep>:
63c: 66 1f adc r22, r22
63e: 77 1f adc r23, r23
640: 88 1f adc r24, r24
642: 99 1f adc r25, r25
644: 1a 94 dec r1
646: 69 f7 brne .-38 ; 0x622
648: 60 95 com r22
64a: 70 95 com r23
64c: 80 95 com r24
64e: 90 95 com r25
650: 9b 01 movw r18, r22
652: ac 01 movw r20, r24
654: bd 01 movw r22, r26
656: cf 01 movw r24, r30
658: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -