📄 bu2624.lis
字号:
01DE 90910C00 lds R25,_In_Cdata+1
01E2 80910B00 lds R24,_In_Cdata
01E6 8F7E andi R24,239
01E8 90930C00 sts _In_Cdata+1,R25
01EC 80930B00 sts _In_Cdata,R24
01F0 .dbline 235
; }
01F0 09C0 xjmp L46
01F2 L45:
01F2 .dbline 237
; else
; {
01F2 .dbline 238
; Set_Mono();//In_Cdata |= P4_MONO;
01F2 90910C00 lds R25,_In_Cdata+1
01F6 80910B00 lds R24,_In_Cdata
01FA 8061 ori R24,16
01FC 90930C00 sts _In_Cdata+1,R25
0200 80930B00 sts _In_Cdata,R24
0204 .dbline 239
; }
0204 L46:
0204 .dbline 240
; send_cmd_to_bu2624();
0204 7BDF xcall _send_cmd_to_bu2624
0206 .dbline -2
0206 .dbline 241
; }
0206 L44:
0206 .dbline 0 ; func end
0206 0895 ret
0208 .dbfunc s switch_fmam _switch_fmam fI
.even
0208 _switch_fmam::
0208 .dbline -1
0208 .dbline 244
;
; void switch_fmam(void)
; {
0208 .dbline 246
; //unsigned char i;
; radio_is_muted = 1;
0208 81E0 ldi R24,1
020A 80930800 sts _radio_is_muted,R24
020E .dbline 247
; if(amfm_flag)
020E 20900200 lds R2,_amfm_flag
0212 2220 tst R2
0214 A9F1 breq L48
0216 .dbline 248
; {
0216 .dbline 249
; if((freq < AMreq_MIN)||(freq > AMreq_MAX))
0216 90910100 lds R25,_freq+1
021A 80910000 lds R24,_freq
021E 8A30 cpi R24,10
0220 E2E0 ldi R30,2
0222 9E07 cpc R25,R30
0224 48F0 brlo L52
0226 8BE4 ldi R24,1611
0228 96E0 ldi R25,6
022A 30900100 lds R3,_freq+1
022E 20900000 lds R2,_freq
0232 8215 cp R24,R2
0234 9305 cpc R25,R3
0236 30F4 brsh L50
0238 L52:
0238 .dbline 250
; freq = AMreq_MIN;
0238 8AE0 ldi R24,522
023A 92E0 ldi R25,2
023C 90930100 sts _freq+1,R25
0240 80930000 sts _freq,R24
0244 L50:
0244 .dbline 261
;
; /* switch(AMreq_STEP)
; {
; case 9:
; Rfreq = Rfreq_009KHZ;
; break;
; case 10:
; Rfreq = Rfreq_010KHZ;
; break;
; };*/
; In_Cdata = P0_AM | P4_MONO | P3_MUTE | Rfreq_009KHZ| AMIN | IF2 | IF_COUNTER_8MS;
0244 81E1 ldi R24,11537
0246 9DE2 ldi R25,45
0248 90930C00 sts _In_Cdata+1,R25
024C 80930B00 sts _In_Cdata,R24
0250 .dbline 264
; //AM:IF_OUT: MUTE ON : MONO:PLL OPERATION: RESET COUNT
; //:PLL :AMIN : PS=1:IF2:8MS: TS
; In_Pdata = ((freq+IF_AM)/AMreq_STEP)<<4;
0250 29E0 ldi R18,9
0252 30E0 ldi R19,0
0254 10910100 lds R17,_freq+1
0258 00910000 lds R16,_freq
025C 0E53 subi R16,62 ; offset = 450
025E 1E4F sbci R17,254
0260 0E940000 xcall div16u
0264 1801 movw R2,R16
0266 220C lsl R2
0268 331C rol R3
026A 220C lsl R2
026C 331C rol R3
026E 220C lsl R2
0270 331C rol R3
0272 220C lsl R2
0274 331C rol R3
0276 30920E00 sts _In_Pdata+1,R3
027A 20920D00 sts _In_Pdata,R2
027E .dbline 266
; //is_stereo = 0;
; }
027E 3CC0 xjmp L49
0280 L48:
0280 .dbline 268
; else
; {
0280 .dbline 269
; if((freq < FMreq_MIN)||(freq > FMreq_MAX))
0280 90910100 lds R25,_freq+1
0284 80910000 lds R24,_freq
0288 8E32 cpi R24,46
028A E2E2 ldi R30,34
028C 9E07 cpc R25,R30
028E 48F0 brlo L55
0290 80E3 ldi R24,10800
0292 9AE2 ldi R25,42
0294 30900100 lds R3,_freq+1
0298 20900000 lds R2,_freq
029C 8215 cp R24,R2
029E 9305 cpc R25,R3
02A0 30F4 brsh L53
02A2 L55:
02A2 .dbline 270
; freq = FMreq_MIN;
02A2 8EE2 ldi R24,8750
02A4 92E2 ldi R25,34
02A6 90930100 sts _freq+1,R25
02AA 80930000 sts _freq,R24
02AE L53:
02AE .dbline 272
; //In_Cdata = 0;
; In_Cdata =(unsigned int) (P0_FM |P3_MUTE| Rfreq_025KHZ | FMIN | IF2 | IF_COUNTER_8MS);
02AE 80E0 ldi R24,8192
02B0 90E2 ldi R25,32
02B2 90930C00 sts _In_Cdata+1,R25
02B6 80930B00 sts _In_Cdata,R24
02BA .dbline 274
; //FM:IF_OUT:PLL OPERATE:RESET COUNT:PLL: FMIN:PS=X: 16MS
; In_Pdata = ((freq+IF_FM)/5);
02BA 25E0 ldi R18,5
02BC 30E0 ldi R19,0
02BE 10910100 lds R17,_freq+1
02C2 00910000 lds R16,_freq
02C6 025D subi R16,210 ; offset = 1070
02C8 1B4F sbci R17,251
02CA 0E940000 xcall div16u
02CE 10930E00 sts _In_Pdata+1,R17
02D2 00930D00 sts _In_Pdata,R16
02D6 .dbline 276
02D6 20900400 lds R2,_is_stereo
02DA 2220 tst R2
02DC 21F0 breq L58
02DE 20900500 lds R2,_is_autosearching
02E2 2220 tst R2
02E4 49F0 breq L56
02E6 L58:
02E6 .dbline 276
;
; if(!is_stereo || is_autosearching) In_Cdata |= P4_MONO;
02E6 90910C00 lds R25,_In_Cdata+1
02EA 80910B00 lds R24,_In_Cdata
02EE 8061 ori R24,16
02F0 90930C00 sts _In_Cdata+1,R25
02F4 80930B00 sts _In_Cdata,R24
02F8 L56:
02F8 .dbline 277
; }
02F8 L49:
02F8 .dbline 278
; send_cmd_to_bu2624();
02F8 01DF xcall _send_cmd_to_bu2624
02FA .dbline 280
; #ifdef SGJM_RDS
; rds_init();
02FA 0E940000 xcall _rds_init
02FE .dbline -2
02FE .dbline 285
; //rds_data.syc_flag = 0;
; //rds_status = 0;
; //rds_step = SEARCH_SYC_STEP;
; #endif
; }
02FE L47:
02FE .dbline 0 ; func end
02FE 0895 ret
0300 .dbfunc s change_freq_value _change_freq_value fI
.even
0300 _change_freq_value::
0300 .dbline -1
0300 .dbline 288
;
; void change_freq_value(void)
; {
0300 .dbline 289
; if(amfm_flag)
0300 20900200 lds R2,_amfm_flag
0304 2220 tst R2
0306 09F4 brne X0
0308 47C0 xjmp L60
030A X0:
030A .dbline 290
; {
030A .dbline 291
; if(search_dir)
030A 20901300 lds R2,_search_dir
030E 2220 tst R2
0310 A9F0 breq L62
0312 .dbline 292
; {
0312 .dbline 293
; if(freq < AMreq_MAX)
0312 90910100 lds R25,_freq+1
0316 80910000 lds R24,_freq
031A 8B34 cpi R24,75
031C E6E0 ldi R30,6
031E 9E07 cpc R25,R30
0320 30F4 brsh L64
0322 .dbline 294
; freq +=AMreq_STEP;
0322 0996 adiw R24,9
0324 90930100 sts _freq+1,R25
0328 80930000 sts _freq,R24
032C 1DC0 xjmp L63
032E L64:
032E .dbline 296
; else
; {
032E .dbline 297
; freq = AMreq_MIN;
032E 8AE0 ldi R24,522
0330 92E0 ldi R25,2
0332 90930100 sts _freq+1,R25
0336 80930000 sts _freq,R24
033A .dbline 298
; }
033A .dbline 299
; }
033A 16C0 xjmp L63
033C L62:
033C .dbline 301
; else
; {
033C .dbline 302
; if(freq > AMreq_MIN)
033C 8AE0 ldi R24,522
033E 92E0 ldi R25,2
0340 30900100 lds R3,_freq+1
0344 20900000 lds R2,_freq
0348 8215 cp R24,R2
034A 9305 cpc R25,R3
034C 38F4 brsh L66
034E .dbline 303
; freq -= AMreq_STEP;
034E C101 movw R24,R2
0350 0997 sbiw R24,9
0352 90930100 sts _freq+1,R25
0356 80930000 sts _freq,R24
035A 06C0 xjmp L67
035C L66:
035C .dbline 305
; else
; freq = AMreq_MAX;
035C 8BE4 ldi R24,1611
035E 96E0 ldi R25,6
0360 90930100 sts _freq+1,R25
0364 80930000 sts _freq,R24
0368 L67:
0368 .dbline 306
; }
0368 L63:
0368 .dbline 307
; In_Pdata = ((freq+IF_AM)/AMreq_STEP)<<4;
0368 29E0 ldi R18,9
036A 30E0 ldi R19,0
036C 10910100 lds R17,_freq+1
0370 00910000 lds R16,_freq
0374 0E53 subi R16,62 ; offset = 450
0376 1E4F sbci R17,254
0378 0E940000 xcall div16u
037C 1801 movw R2,R16
037E 220C lsl R2
0380 331C rol R3
0382 220C lsl R2
0384 331C rol R3
0386 220C lsl R2
0388 331C rol R3
038A 220C lsl R2
038C 331C rol R3
038E 30920E00 sts _In_Pdata+1,R3
0392 20920D00 sts _In_Pdata,R2
0396 .dbline 308
; }
0396 3DC0 xjmp L61
0398 L60:
0398 .dbline 310
; else
; {
0398 .dbline 311
; if(search_dir) //++
0398 20901300 lds R2,_search_dir
039C 2220 tst R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -