📄 bu2624.lis
字号:
039E A9F0 breq L68
03A0 .dbline 312
; {
03A0 .dbline 313
; if(freq <FMreq_MAX)
03A0 90910100 lds R25,_freq+1
03A4 80910000 lds R24,_freq
03A8 8033 cpi R24,48
03AA EAE2 ldi R30,42
03AC 9E07 cpc R25,R30
03AE 30F4 brsh L70
03B0 .dbline 314
; freq += FMreq_STEP;
03B0 0596 adiw R24,5
03B2 90930100 sts _freq+1,R25
03B6 80930000 sts _freq,R24
03BA 1DC0 xjmp L69
03BC L70:
03BC .dbline 316
; else
; freq = FMreq_MIN;
03BC 8EE2 ldi R24,8750
03BE 92E2 ldi R25,34
03C0 90930100 sts _freq+1,R25
03C4 80930000 sts _freq,R24
03C8 .dbline 317
; }
03C8 16C0 xjmp L69
03CA L68:
03CA .dbline 319
; else
; {
03CA .dbline 320
; if(freq > FMreq_MIN)
03CA 8EE2 ldi R24,8750
03CC 92E2 ldi R25,34
03CE 30900100 lds R3,_freq+1
03D2 20900000 lds R2,_freq
03D6 8215 cp R24,R2
03D8 9305 cpc R25,R3
03DA 38F4 brsh L72
03DC .dbline 321
; freq -= FMreq_STEP;
03DC C101 movw R24,R2
03DE 0597 sbiw R24,5
03E0 90930100 sts _freq+1,R25
03E4 80930000 sts _freq,R24
03E8 06C0 xjmp L73
03EA L72:
03EA .dbline 323
; else
; freq = FMreq_MAX;
03EA 80E3 ldi R24,10800
03EC 9AE2 ldi R25,42
03EE 90930100 sts _freq+1,R25
03F2 80930000 sts _freq,R24
03F6 L73:
03F6 .dbline 324
; }
03F6 L69:
03F6 .dbline 325
03F6 25E0 ldi R18,5
03F8 30E0 ldi R19,0
03FA 10910100 lds R17,_freq+1
03FE 00910000 lds R16,_freq
0402 025D subi R16,210 ; offset = 1070
0404 1B4F sbci R17,251
0406 0E940000 xcall div16u
040A 10930E00 sts _In_Pdata+1,R17
040E 00930D00 sts _In_Pdata,R16
0412 .dbline 326
0412 L61:
0412 .dbline -2
0412 .dbline 327
; In_Pdata = (freq+IF_FM)/5;
; }
; }
0412 L59:
0412 .dbline 0 ; func end
0412 0895 ret
0414 .dbfunc s tuner_handsearch _tuner_handsearch fI
.even
0414 _tuner_handsearch::
0414 .dbline -1
0414 .dbline 330
;
; void tuner_handsearch()
; {
0414 .dbline 331
; radio_is_muted = 1;
0414 81E0 ldi R24,1
0416 80930800 sts _radio_is_muted,R24
041A .dbline 332
; mute_radio();
041A 7FDE xcall _mute_radio
041C .dbline 333
; is_autosearching = 0;
041C 2224 clr R2
041E 20920500 sts _is_autosearching,R2
0422 .dbline 334
; change_freq_value();
0422 6EDF xcall _change_freq_value
0424 .dbline 335
; send_cmd_to_bu2624();
0424 6BDE xcall _send_cmd_to_bu2624
0426 .dbline 337
; #ifdef SGJM_RDS
; rds_init();
0426 0E940000 xcall _rds_init
042A .dbline 338
; display_type = DIS_FREQUENCY;
042A 2224 clr R2
042C 20920000 sts _display_type,R2
0430 .dbline 339
; g_ui_tmp_msg_cnt = 10;
0430 8AE0 ldi R24,10
0432 80930000 sts _g_ui_tmp_msg_cnt,R24
0436 .dbline 342
; #endif
;
; delay_ms(100);
0436 04E6 ldi R16,100
0438 10E0 ldi R17,0
043A 0E940000 xcall _delay_ms
043E .dbline 343
; radio_is_muted =0;
043E 2224 clr R2
0440 20920800 sts _radio_is_muted,R2
0444 .dbline 344
; mute_radio();
0444 6ADE xcall _mute_radio
0446 .dbline -2
0446 .dbline 345
; }
0446 L74:
0446 .dbline 0 ; func end
0446 0895 ret
0448 .dbfunc s tuner_autosearch _tuner_autosearch fI
.area func_lit(rom, con, rel)
0000 L109:
0000 7602 .word `L85
0002 8002 .word `L86
0004 9702 .word `L89
0006 A202 .word `L92
0008 2403 .word `L108
.area text(rom, con, rel)
0448 .dbfile D:\avrmcu\AT980\bu2624\bu2624.c
; Ifcount -> y+0
.even
0448 _tuner_autosearch::
0448 0E940000 xcall push_gset3
044C 2497 sbiw R28,4
044E .dbline -1
044E .dbline 348
;
; void tuner_autosearch(void)
; {
044E .dbline 351
; //char i;
; unsigned long Ifcount;
; if(search_ok )
044E 20900600 lds R2,_search_ok
0452 2220 tst R2
0454 69F1 breq L76
0456 .dbline 352
; {
0456 .dbline 353
; if(is_autosearching)
0456 20900500 lds R2,_is_autosearching
045A 2220 tst R2
045C 09F4 brne X2
045E FCC0 xjmp L75
0460 X2:
0460 .dbline 354
; {
0460 .dbline 355
; is_autosearching = 0;
0460 2224 clr R2
0462 20920500 sts _is_autosearching,R2
0466 .dbline 356
; save_fre();
0466 0E940000 xcall _save_fre
046A .dbline 365
; /*if(amfm_flag)
; {
; In_Pdata =((freq+IF_AM)/AMreq_STEP)<<4;
; }
; else
; {
; In_Pdata = (freq+IF_FM)/5;
; }*/
; Enable_SD_OUT();// In_Cdata &= (~(COUNTER_START | IF_COUNTER_16MS)); //set cte = 0
046A 90910C00 lds R25,_In_Cdata+1
046E 80910B00 lds R24,_In_Cdata
0472 8F77 andi R24,127
0474 9F7B andi R25,191
0476 90930C00 sts _In_Cdata+1,R25
047A 80930B00 sts _In_Cdata,R24
047E .dbline 366
; Disable_IF_OUT();//In_Cdata |= P1_IF_NOOUT;
047E 8260 ori R24,2
0480 90930C00 sts _In_Cdata+1,R25
0484 80930B00 sts _In_Cdata,R24
0488 .dbline 367
; send_cmd_to_bu2624();
0488 39DE xcall _send_cmd_to_bu2624
048A .dbline 368
; radio_is_muted = 0;
048A 2224 clr R2
048C 20920800 sts _radio_is_muted,R2
0490 .dbline 370
;
; if(!amfm_flag)
0490 20900200 lds R2,_amfm_flag
0494 2220 tst R2
0496 09F4 brne L80
0498 .dbline 371
; switch_audio_channel();
0498 9EDE xcall _switch_audio_channel
049A L80:
049A .dbline 372
; delay_ms(100);
049A 04E6 ldi R16,100
049C 10E0 ldi R17,0
049E 0E940000 xcall _delay_ms
04A2 .dbline 373
; mute_radio();
04A2 3BDE xcall _mute_radio
04A4 .dbline 376
; //station_num = 1;
; #ifdef SGJM_RDS
; rds_init();
04A4 0E940000 xcall _rds_init
04A8 .dbline 380
; //rds_status = 0;
; //rds_data.syc_flag = 0;
; //rds_step = SEARCH_SYC_STEP;
; g_ui_tmp_msg_cnt = 10;
04A8 8AE0 ldi R24,10
04AA 80930000 sts _g_ui_tmp_msg_cnt,R24
04AE .dbline 384
; // if(pty_is_searching==2)
; // pty_search_delay = 67;
; #endif
; }
04AE .dbline 385
; return;
04AE D4C0 xjmp L75
04B0 L76:
04B0 .dbline 387
; }
; rdelay20ms--;
04B0 80911200 lds R24,_rdelay20ms
04B4 8150 subi R24,1
04B6 80931200 sts _rdelay20ms,R24
04BA .dbline 388
; switch(autosrch_step)
04BA A0900700 lds R10,_autosrch_step
04BE BB24 clr R11
04C0 80E0 ldi R24,0
04C2 90E0 ldi R25,0
04C4 A816 cp R10,R24
04C6 B906 cpc R11,R25
04C8 0CF4 brge X3
04CA C6C0 xjmp L82
04CC X3:
04CC 84E0 ldi R24,4
04CE 8A15 cp R24,R10
04D0 9B05 cpc R25,R11
04D2 0CF4 brge X4
04D4 C1C0 xjmp L82
04D6 X4:
04D6 80E0 ldi R24,<L109
04D8 90E0 ldi R25,>L109
04DA F501 movw R30,R10
04DC EE0F lsl R30
04DE FF1F rol R31
04E0 E80F add R30,R24
04E2 F91F adc R31,R25
04E4 0590 lpm R0,Z+
04E6 1490 lpm R1,Z
04E8 F001 movw R30,R0
04EA 0994 ijmp
04EC X1:
04EC .dbline 389
; {
04EC L85:
04EC .dbline 392
; case AUTOSRCH_STEP1:
; //printf("step 1\n");
; switch_fmam();
04EC 8DDE xcall _switch_fmam
04EE .dbline 393
; autosrch_step ++;
04EE 80910700 lds R24,_autosrch_step
04F2 8F5F subi R24,255 ; addi 1
04F4 80930700 sts _autosrch_step,R24
04F8 .dbline 394
; rdelay20ms = 2;
04F8 82E0 ldi R24,2
04FA 80931200 sts _rdelay20ms,R24
04FE .dbline 396
; //if(!ok_count) radio_delay200ms =2;
; break;
04FE ACC0 xjmp L83
0500 L86:
0500 .dbline 400
;
; case AUTOSRCH_STEP2:
; //step interval 20ms
; if(rdelay20ms) break;
0500 20901200 lds R2,_rdelay20ms
0504 2220 tst R2
0506 09F0 breq L87
0508 .dbline 400
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -