📄 si4700.lss
字号:
//clear seek bit
error_ind = OperationSi4700_2w(WRITE,&(si4700_channel_seek_stop[0]), 1);
4ee: 41 e0 ldi r20, 0x01 ; 1
4f0: be 01 movw r22, r28
4f2: 6e 5d subi r22, 0xDE ; 222
4f4: 7f 4f sbci r23, 0xFF ; 255
4f6: 80 e2 ldi r24, 0x20 ; 32
4f8: c4 dd rcall .-1144 ; 0x82 <OperationSi4700_2w>
if(error_ind)
4fa: 88 23 and r24, r24
4fc: 99 f4 brne .+38 ; 0x524 <Si4700_Channel_Seek_DOWN+0x88>
return 1;
//wait STC=0
do
{
error_ind = OperationSi4700_2w(READ,&(si4700_reg_data[0]), 1);
4fe: 41 e0 ldi r20, 0x01 ; 1
500: be 01 movw r22, r28
502: 6f 5f subi r22, 0xFF ; 255
504: 7f 4f sbci r23, 0xFF ; 255
506: 81 e2 ldi r24, 0x21 ; 33
508: bc dd rcall .-1160 ; 0x82 <OperationSi4700_2w>
if(error_ind)
50a: 88 23 and r24, r24
50c: 59 f4 brne .+22 ; 0x524 <Si4700_Channel_Seek_DOWN+0x88>
return 1;
loop_counter++;
}
50e: 89 81 ldd r24, Y+1 ; 0x01
510: 86 fd sbrc r24, 6
512: f5 cf rjmp .-22 ; 0x4fe <Si4700_Channel_Seek_DOWN+0x62>
while((si4700_reg_data[0]&0x40) != 0);
//while(((si4700_reg_data[0]&0x40) != 0) && (loop_counter < 0xff));
loop_counter = 0;
//you can read REG0A&0B for channel number or RSSI here
error_ind = OperationSi4700_2w(READ,&(si4700_reg_data[0]), 4);
514: 44 e0 ldi r20, 0x04 ; 4
516: be 01 movw r22, r28
518: 6f 5f subi r22, 0xFF ; 255
51a: 7f 4f sbci r23, 0xFF ; 255
51c: 81 e2 ldi r24, 0x21 ; 33
51e: b1 dd rcall .-1182 ; 0x82 <OperationSi4700_2w>
if(error_ind)
520: 88 23 and r24, r24
522: 29 f0 breq .+10 ; 0x52e <Si4700_Channel_Seek_DOWN+0x92>
524: 21 e0 ldi r18, 0x01 ; 1
526: 30 e0 ldi r19, 0x00 ; 0
528: 40 e0 ldi r20, 0x00 ; 0
52a: 50 e0 ldi r21, 0x00 ; 0
52c: 2c c0 rjmp .+88 ; 0x586 <Si4700_Channel_Seek_DOWN+0xea>
return 1;
frq=(((UINT32)si4700_reg_data[2]<<8)|(UINT32)si4700_reg_data[3])&0x03ff;
52e: 8b 81 ldd r24, Y+3 ; 0x03
530: 99 27 eor r25, r25
532: aa 27 eor r26, r26
534: bb 27 eor r27, r27
536: 22 27 eor r18, r18
538: 38 2f mov r19, r24
53a: 49 2f mov r20, r25
53c: 5a 2f mov r21, r26
53e: 8c 81 ldd r24, Y+4 ; 0x04
540: 99 27 eor r25, r25
542: aa 27 eor r26, r26
544: bb 27 eor r27, r27
546: 28 2b or r18, r24
548: 39 2b or r19, r25
54a: 4a 2b or r20, r26
54c: 5b 2b or r21, r27
54e: 33 70 andi r19, 0x03 ; 3
550: 40 70 andi r20, 0x00 ; 0
552: 50 70 andi r21, 0x00 ; 0
return frq*g_space+g_bandl;
554: 80 91 61 00 lds r24, 0x0061
558: e8 2e mov r14, r24
55a: ff 24 eor r15, r15
55c: 00 27 eor r16, r16
55e: 11 27 eor r17, r17
560: ca 01 movw r24, r20
562: b9 01 movw r22, r18
564: a8 01 movw r20, r16
566: 97 01 movw r18, r14
568: c6 d1 rcall .+908 ; 0x8f6 <__mulsi3>
56a: 9b 01 movw r18, r22
56c: ac 01 movw r20, r24
56e: 80 91 66 00 lds r24, 0x0066
572: 90 91 67 00 lds r25, 0x0067
576: a0 91 68 00 lds r26, 0x0068
57a: b0 91 69 00 lds r27, 0x0069
57e: 28 0f add r18, r24
580: 39 1f adc r19, r25
582: 4a 1f adc r20, r26
584: 5b 1f adc r21, r27
//return seek_error;
}
586: ca 01 movw r24, r20
588: b9 01 movw r22, r18
58a: a2 96 adiw r28, 0x22 ; 34
58c: 0f b6 in r0, 0x3f ; 63
58e: f8 94 cli
590: de bf out 0x3e, r29 ; 62
592: 0f be out 0x3f, r0 ; 63
594: cd bf out 0x3d, r28 ; 61
596: df 91 pop r29
598: cf 91 pop r28
59a: 1f 91 pop r17
59c: 0f 91 pop r16
59e: ff 90 pop r15
5a0: ef 90 pop r14
5a2: 08 95 ret
000005a4 <Si4700_mute_en>:
void Si4700_mute_en(void){
5a4: cf 93 push r28
5a6: df 93 push r29
5a8: cd b7 in r28, 0x3d ; 61
5aa: de b7 in r29, 0x3e ; 62
5ac: 21 97 sbiw r28, 0x01 ; 1
5ae: 0f b6 in r0, 0x3f ; 63
5b0: f8 94 cli
5b2: de bf out 0x3e, r29 ; 62
5b4: 0f be out 0x3f, r0 ; 63
5b6: cd bf out 0x3d, r28 ; 61
unsigned char si4700_mute_data[1]={0x00};
5b8: 19 82 std Y+1, r1 ; 0x01
OperationSi4700_2w(WRITE,si4700_mute_data, 1);
5ba: 41 e0 ldi r20, 0x01 ; 1
5bc: be 01 movw r22, r28
5be: 6f 5f subi r22, 0xFF ; 255
5c0: 7f 4f sbci r23, 0xFF ; 255
5c2: 80 e2 ldi r24, 0x20 ; 32
5c4: 5e dd rcall .-1348 ; 0x82 <OperationSi4700_2w>
5c6: 21 96 adiw r28, 0x01 ; 1
5c8: 0f b6 in r0, 0x3f ; 63
5ca: f8 94 cli
5cc: de bf out 0x3e, r29 ; 62
5ce: 0f be out 0x3f, r0 ; 63
5d0: cd bf out 0x3d, r28 ; 61
5d2: df 91 pop r29
5d4: cf 91 pop r28
5d6: 08 95 ret
000005d8 <Si4700_mute_dis>:
}
void Si4700_mute_dis(void){
5d8: cf 93 push r28
5da: df 93 push r29
5dc: cd b7 in r28, 0x3d ; 61
5de: de b7 in r29, 0x3e ; 62
5e0: 21 97 sbiw r28, 0x01 ; 1
5e2: 0f b6 in r0, 0x3f ; 63
5e4: f8 94 cli
5e6: de bf out 0x3e, r29 ; 62
5e8: 0f be out 0x3f, r0 ; 63
5ea: cd bf out 0x3d, r28 ; 61
unsigned char si4700_mute_data[1]={0x40};
5ec: 80 e4 ldi r24, 0x40 ; 64
5ee: 89 83 std Y+1, r24 ; 0x01
OperationSi4700_2w(WRITE,si4700_mute_data, 1);
5f0: 41 e0 ldi r20, 0x01 ; 1
5f2: be 01 movw r22, r28
5f4: 6f 5f subi r22, 0xFF ; 255
5f6: 7f 4f sbci r23, 0xFF ; 255
5f8: 80 e2 ldi r24, 0x20 ; 32
5fa: 43 dd rcall .-1402 ; 0x82 <OperationSi4700_2w>
5fc: 21 96 adiw r28, 0x01 ; 1
5fe: 0f b6 in r0, 0x3f ; 63
600: f8 94 cli
602: de bf out 0x3e, r29 ; 62
604: 0f be out 0x3f, r0 ; 63
606: cd bf out 0x3d, r28 ; 61
608: df 91 pop r29
60a: cf 91 pop r28
60c: 08 95 ret
0000060e <Si4700_vol_up>:
}
void Si4700_vol_up(void){
60e: cf 93 push r28
610: df 93 push r29
612: cd b7 in r28, 0x3d ; 61
614: de b7 in r29, 0x3e ; 62
616: 28 97 sbiw r28, 0x08 ; 8
618: 0f b6 in r0, 0x3f ; 63
61a: f8 94 cli
61c: de bf out 0x3e, r29 ; 62
61e: 0f be out 0x3f, r0 ; 63
620: cd bf out 0x3d, r28 ; 61
unsigned char si4700_vol_data[] = {0x40,0x01,0x00,0x00,0x90,0x04,0x0c,0x1f};
622: de 01 movw r26, r28
624: 11 96 adiw r26, 0x01 ; 1
626: e9 e7 ldi r30, 0x79 ; 121
628: f0 e0 ldi r31, 0x00 ; 0
62a: 88 e0 ldi r24, 0x08 ; 8
62c: 01 90 ld r0, Z+
62e: 0d 92 st X+, r0
630: 81 50 subi r24, 0x01 ; 1
632: e1 f7 brne .-8 ; 0x62c <Si4700_vol_up+0x1e>
g_vol_level++;
634: 80 91 60 00 lds r24, 0x0060
638: 8f 5f subi r24, 0xFF ; 255
63a: 80 93 60 00 sts 0x0060, r24
if(g_vol_level<0||g_vol_level>15)
63e: 80 31 cpi r24, 0x10 ; 16
640: 20 f0 brcs .+8 ; 0x64a <Si4700_vol_up+0x3c>
g_vol_level=15;
642: 8f e0 ldi r24, 0x0F ; 15
644: 80 93 60 00 sts 0x0060, r24
648: 08 c0 rjmp .+16 ; 0x65a <Si4700_vol_up+0x4c>
else{
si4700_vol_data[7]=g_vol_level|0x10;
64a: 80 61 ori r24, 0x10 ; 16
64c: 88 87 std Y+8, r24 ; 0x08
OperationSi4700_2w(WRITE,si4700_vol_data, 8);
64e: 48 e0 ldi r20, 0x08 ; 8
650: be 01 movw r22, r28
652: 6f 5f subi r22, 0xFF ; 255
654: 7f 4f sbci r23, 0xFF ; 255
656: 80 e2 ldi r24, 0x20 ; 32
658: 14 dd rcall .-1496 ; 0x82 <OperationSi4700_2w>
65a: 28 96 adiw r28, 0x08 ; 8
65c: 0f b6 in r0, 0x3f ; 63
65e: f8 94 cli
660: de bf out 0x3e, r29 ; 62
662: 0f be out 0x3f, r0 ; 63
664: cd bf out 0x3d, r28 ; 61
666: df 91 pop r29
668: cf 91 pop r28
66a: 08 95 ret
0000066c <Si4700_vol_down>:
}
}
void Si4700_vol_down(void){
66c: cf 93 push r28
66e: df 93 push r29
670: cd b7 in r28, 0x3d ; 61
672: de b7 in r29, 0x3e ; 62
674: 28 97 sbiw r28, 0x08 ; 8
676: 0f b6 in r0, 0x3f ; 63
678: f8 94 cli
67a: de bf out 0x3e, r29 ; 62
67c: 0f be out 0x3f, r0 ; 63
67e: cd bf out 0x3d, r28 ; 61
unsigned char si4700_vol_data[] = {0x40,0x01,0x00,0x00,0x90,0x04,0x0c,0x1f};
680: de 01 movw r26, r28
682: 11 96 adiw r26, 0x01 ; 1
684: e9 e7 ldi r30, 0x79 ; 121
686: f0 e0 ldi r31, 0x00 ; 0
688: 98 e0 ldi r25, 0x08 ; 8
68a: 01 90 ld r0, Z+
68c: 0d 92 st X+, r0
68e: 91 50 subi r25, 0x01 ; 1
690: e1 f7 brne .-8 ; 0x68a <Si4700_vol_down+0x1e>
g_vol_level--;
692: 80 91 60 00 lds r24, 0x0060
696: 81 50 subi r24, 0x01 ; 1
698: 80 93 60 00 sts 0x0060, r24
if(g_vol_level<0||g_vol_level>15)
69c: 80 31 cpi r24, 0x10 ; 16
69e: 18 f0 brcs .+6 ; 0x6a6 <Si4700_vol_down+0x3a>
g_vol_level=0;
6a0: 90 93 60 00 sts 0x0060, r25
6a4: 08 c0 rjmp .+16 ; 0x6b6 <Si4700_vol_down+0x4a>
else{
si4700_vol_data[7]=g_vol_level|0x10;
6a6: 80 61 ori r24, 0x10 ; 16
6a8: 88 87 std Y+8, r24 ; 0x08
OperationSi4700_2w(WRITE,si4700_vol_data, 8);
6aa: 48 e0 ldi r20, 0x08 ; 8
6ac: be 01 movw r22, r28
6ae: 6f 5f subi r22, 0xFF ; 255
6b0: 7f 4f sbci r23, 0xFF ; 255
6b2: 80 e2 ldi r24, 0x20 ; 32
6b4: e6 dc rcall .-1588 ; 0x82 <OperationSi4700_2w>
6b6: 28 96 adiw r28, 0x08 ; 8
6b8: 0f b6 in r0, 0x3f ; 63
6ba: f8 94 cli
6bc: de bf out 0x3e, r29 ; 62
6be: 0f be out 0x3f, r0 ; 63
6c0: cd bf out 0x3d, r28 ; 61
6c2: df 91 pop r29
6c4: cf 91 pop r28
6c6: 08 95 ret
000006c8 <ini_uart>:
}
}
void ini_uart(uint16_t m_baud)//m_baud=207时,bode=4800 f=8M //12,9600,1//25,4800,1
{
6c8: 9c 01 movw r18, r24
UBRRH = (uint8_t)(m_baud>>8);
6ca: 89 2f mov r24, r25
6cc: 99 27 eor r25, r25
6ce: 80 bd out 0x20, r24 ; 32
UBRRL = (uint8_t)m_baud;
6d0: 29 b9 out 0x09, r18 ; 9
UCSRA = (1<<U2X);
6d2: 82 e0 ldi r24, 0x02 ; 2
6d4: 8b b9 out 0x0b, r24 ; 11
/* 设置帧格式: 8 个数据位, 1 个停止位*/
UCSRC = (1<<URSEL)|(3<<UCSZ0);
6d6: 86 e8 ldi r24, 0x86 ; 134
6d8: 80 bd out 0x20, r24 ; 32
/* 接收器与发送器终端使能,接收器与发送器使能*/
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//|(1<<TXCIE);
6da: 88 e9 ldi r24, 0x98 ; 152
6dc: 8a b9 out 0x0a, r24 ; 10
6de: 08 95 ret
000006e0 <__vector_11>:
/*禁用终端
cli();*/
}
SIGNAL(SIG_UART_RECV){
6e0: 1f 92 push r1
6e2: 0f 92 push r0
6e4: 0f b6 in r0, 0x3f ; 63
6e6: 0f 92 push r0
6e8: 11 24 eor r1, r1
6ea: 8f 93 push r24
com_buf=UDR;
6ec: 8c b1 in r24, 0x0c ; 12
6ee: 80 93 82 00 sts 0x0082, r24
while(!(UCSRA & (1<<UDRE)));//等待发送缓冲器为空
6f2: 5d 9b sbis 0x0b, 5 ; 11
6f4: fe cf rjmp .-4 ; 0x6f2 <__vector_11+0x12>
UDR=com_buf;
6f6: 80 91 82 00 lds r24, 0x0082
6fa: 8c b9 out 0x0c, r24 ; 12
6fc: 8f 91 pop r24
6fe: 0f 90 pop r0
700: 0f be out 0x3f, r0 ; 63
702: 0f 90 pop r0
704: 1f 90 pop r1
706: 18 95 reti
00000708 <main>:
}
int main(){
708: cd e5 ldi r28, 0x5D ; 93
70a: d4 e0 ldi r29, 0x04 ; 4
70c: de bf out 0x3e, r29 ; 62
70e: cd bf out 0x3d, r28 ; 61
//UINT8 txt[14],i;
UINT32 frq;
UINT8 reg[2];
UINT16 i;
ini_uart(12);//9600/1M
710: 8c e0 ldi r24, 0x0C ; 12
712: 90 e0 ldi r25, 0x00 ; 0
714: d9 df rcall .-78 ; 0x6c8 <ini_uart>
sei();
716: 78 94 sei
UDR=0xaa;
718: 8a ea ldi r24, 0xAA ; 170
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -