⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bu2624.s

📁 sunplus spca514 cdmp3 源码
💻 S
📖 第 1 页 / 共 2 页
字号:
	ori R24,16
	sts _In_Cdata+1,R25
	sts _In_Cdata,R24
L56:
	.dbline 277
;    	}
L49:
	.dbline 278
;     send_cmd_to_bu2624();
	xcall _send_cmd_to_bu2624
	.dbline 280
; 	#ifdef SGJM_RDS
; 	rds_init();
	xcall _rds_init
	.dbline -2
	.dbline 285
; 	//rds_data.syc_flag = 0;
; 	//rds_status = 0;
; 	//rds_step = SEARCH_SYC_STEP;
; 	#endif
; }
L47:
	.dbline 0 ; func end
	ret
	.dbfunc s change_freq_value _change_freq_value fI
	.even
_change_freq_value::
	.dbline -1
	.dbline 288
; 
; void  change_freq_value(void)
; {
	.dbline 289
; 	if(amfm_flag)
	lds R2,_amfm_flag
	tst R2
	brne X0
	xjmp L60
X0:
	.dbline 290
;     {
	.dbline 291
;         if(search_dir)
	lds R2,_search_dir
	tst R2
	breq L62
	.dbline 292
;         {
	.dbline 293
;   	        if(freq < AMreq_MAX)
	lds R25,_freq+1
	lds R24,_freq
	cpi R24,75
	ldi R30,6
	cpc R25,R30
	brsh L64
	.dbline 294
;   	        	freq +=AMreq_STEP;
	adiw R24,9
	sts _freq+1,R25
	sts _freq,R24
	xjmp L63
L64:
	.dbline 296
;   	        else
;   	        {	
	.dbline 297
;   	            freq = AMreq_MIN;
	ldi R24,522
	ldi R25,2
	sts _freq+1,R25
	sts _freq,R24
	.dbline 298
;   	        }
	.dbline 299
;   	    }
	xjmp L63
L62:
	.dbline 301
;         else
;         {
	.dbline 302
;             if(freq > AMreq_MIN)
	ldi R24,522
	ldi R25,2
	lds R3,_freq+1
	lds R2,_freq
	cp R24,R2
	cpc R25,R3
	brsh L66
	.dbline 303
;             	freq -= AMreq_STEP;
	movw R24,R2
	sbiw R24,9
	sts _freq+1,R25
	sts _freq,R24
	xjmp L67
L66:
	.dbline 305
;             else
;             	freq = AMreq_MAX;
	ldi R24,1611
	ldi R25,6
	sts _freq+1,R25
	sts _freq,R24
L67:
	.dbline 306
;         }
L63:
	.dbline 307
;         In_Pdata = ((freq+IF_AM)/AMreq_STEP)<<4;
	ldi R18,9
	ldi R19,0
	lds R17,_freq+1
	lds R16,_freq
	subi R16,62  ; offset = 450
	sbci R17,254
	xcall div16u
	movw R2,R16
	lsl R2
	rol R3
	lsl R2
	rol R3
	lsl R2
	rol R3
	lsl R2
	rol R3
	sts _In_Pdata+1,R3
	sts _In_Pdata,R2
	.dbline 308
;     }
	xjmp L61
L60:
	.dbline 310
;     else
;     {
	.dbline 311
; 		if(search_dir)   //++
	lds R2,_search_dir
	tst R2
	breq L68
	.dbline 312
;         {
	.dbline 313
;         	if(freq <FMreq_MAX)
	lds R25,_freq+1
	lds R24,_freq
	cpi R24,48
	ldi R30,42
	cpc R25,R30
	brsh L70
	.dbline 314
;         		freq += FMreq_STEP;
	adiw R24,5
	sts _freq+1,R25
	sts _freq,R24
	xjmp L69
L70:
	.dbline 316
;         	else 
;   	            freq = FMreq_MIN;
	ldi R24,8750
	ldi R25,34
	sts _freq+1,R25
	sts _freq,R24
	.dbline 317
; 		}
	xjmp L69
L68:
	.dbline 319
;         else
;         {
	.dbline 320
;             if(freq > FMreq_MIN)
	ldi R24,8750
	ldi R25,34
	lds R3,_freq+1
	lds R2,_freq
	cp R24,R2
	cpc R25,R3
	brsh L72
	.dbline 321
;            		freq -= FMreq_STEP;
	movw R24,R2
	sbiw R24,5
	sts _freq+1,R25
	sts _freq,R24
	xjmp L73
L72:
	.dbline 323
;            	else 
;    	           	freq = FMreq_MAX;
	ldi R24,10800
	ldi R25,42
	sts _freq+1,R25
	sts _freq,R24
L73:
	.dbline 324
;   	    }
L69:
	.dbline 325
	ldi R18,5
	ldi R19,0
	lds R17,_freq+1
	lds R16,_freq
	subi R16,210  ; offset = 1070
	sbci R17,251
	xcall div16u
	sts _In_Pdata+1,R17
	sts _In_Pdata,R16
	.dbline 326
L61:
	.dbline -2
	.dbline 327
;         In_Pdata = (freq+IF_FM)/5;
; 	}
; }
L59:
	.dbline 0 ; func end
	ret
	.dbfunc s tuner_handsearch _tuner_handsearch fI
	.even
_tuner_handsearch::
	.dbline -1
	.dbline 330
; 
; void   tuner_handsearch()
; {
	.dbline 331
; 	radio_is_muted = 1;
	ldi R24,1
	sts _radio_is_muted,R24
	.dbline 332
; 	mute_radio();
	xcall _mute_radio
	.dbline 333
; 	is_autosearching = 0;
	clr R2
	sts _is_autosearching,R2
	.dbline 334
; 	change_freq_value();
	xcall _change_freq_value
	.dbline 335
; 	send_cmd_to_bu2624();
	xcall _send_cmd_to_bu2624
	.dbline 337
; 	#ifdef SGJM_RDS
; 	rds_init();
	xcall _rds_init
	.dbline 338
; 	display_type = DIS_FREQUENCY;
	clr R2
	sts _display_type,R2
	.dbline 339
; 	g_ui_tmp_msg_cnt = 10;
	ldi R24,10
	sts _g_ui_tmp_msg_cnt,R24
	.dbline 342
; 	#endif
; 	
; 	delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 343
; 	radio_is_muted =0;
	clr R2
	sts _radio_is_muted,R2
	.dbline 344
;    	mute_radio();
	xcall _mute_radio
	.dbline -2
	.dbline 345
; }
L74:
	.dbline 0 ; func end
	ret
	.dbfunc s tuner_autosearch _tuner_autosearch fI
	.area func_lit(rom, con, rel)
L109:
	.word `L85
	.word `L86
	.word `L89
	.word `L92
	.word `L108
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\bu2624\bu2624.c
;        Ifcount -> y+0
	.even
_tuner_autosearch::
	xcall push_gset3
	sbiw R28,4
	.dbline -1
	.dbline 348
; 
; void tuner_autosearch(void)
; {
	.dbline 351
; 	//char i;
;     unsigned long Ifcount;
;     if(search_ok )
	lds R2,_search_ok
	tst R2
	breq L76
	.dbline 352
; 	{
	.dbline 353
; 		if(is_autosearching)
	lds R2,_is_autosearching
	tst R2
	brne X2
	xjmp L75
X2:
	.dbline 354
; 		{
	.dbline 355
; 			is_autosearching = 0;
	clr R2
	sts _is_autosearching,R2
	.dbline 356
; 		  	save_fre();
	xcall _save_fre
	.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
	lds R25,_In_Cdata+1
	lds R24,_In_Cdata
	andi R24,127
	andi R25,191
	sts _In_Cdata+1,R25
	sts _In_Cdata,R24
	.dbline 366
;           	Disable_IF_OUT();//In_Cdata |= P1_IF_NOOUT;
	ori R24,2
	sts _In_Cdata+1,R25
	sts _In_Cdata,R24
	.dbline 367
;           	send_cmd_to_bu2624();
	xcall _send_cmd_to_bu2624
	.dbline 368
;           	radio_is_muted = 0;
	clr R2
	sts _radio_is_muted,R2
	.dbline 370
;            
;           	if(!amfm_flag)
	lds R2,_amfm_flag
	tst R2
	brne L80
	.dbline 371
;           		switch_audio_channel();
	xcall _switch_audio_channel
L80:
	.dbline 372
;             delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 373
; 			mute_radio();
	xcall _mute_radio
	.dbline 376
;           //station_num = 1;
;   	  		#ifdef SGJM_RDS
;   	  		rds_init();
	xcall _rds_init
	.dbline 380
; 			//rds_status  = 0;
;   	  		//rds_data.syc_flag = 0;
;   	  		//rds_step = SEARCH_SYC_STEP;
;   	  		g_ui_tmp_msg_cnt = 10;
	ldi R24,10
	sts _g_ui_tmp_msg_cnt,R24
	.dbline 384
; 		//	if(pty_is_searching==2)
;   	  	//		pty_search_delay = 67;
;   	  		#endif
;   	  	}
	.dbline 385
;   	  	return;
	xjmp L75
L76:
	.dbline 387
;   	}
;   	rdelay20ms--;
	lds R24,_rdelay20ms
	subi R24,1
	sts _rdelay20ms,R24
	.dbline 388
;    	switch(autosrch_step)
	lds R10,_autosrch_step
	clr R11
	ldi R24,0
	ldi R25,0
	cp R10,R24
	cpc R11,R25
	brge X3
	xjmp L82
X3:
	ldi R24,4
	cp R24,R10
	cpc R25,R11
	brge X4
	xjmp L82
X4:
	ldi R24,<L109
	ldi R25,>L109
	movw R30,R10
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X1:
	.dbline 389
;     {
L85:
	.dbline 392
;       	case AUTOSRCH_STEP1:
; 			//printf("step 1\n");
;             switch_fmam(); 
	xcall _switch_fmam
	.dbline 393
;             autosrch_step ++;
	lds R24,_autosrch_step
	subi R24,255	; addi 1
	sts _autosrch_step,R24
	.dbline 394
; 			rdelay20ms = 2;
	ldi R24,2
	sts _rdelay20ms,R24
	.dbline 396
;             //if(!ok_count) radio_delay200ms =2;
;             break;
	xjmp L83
L86:
	.dbline 400
;             
;     	case AUTOSRCH_STEP2:
;     	        //step interval 20ms
;     	    if(rdelay20ms) break;
	lds R2,_rdelay20ms
	tst R2
	breq L87
	.dbline 400
	xjmp L83
L87:
	.dbline 401
;             In_Cdata |= (COUNTER_START|IF_COUNTER_16MS) ;                        //set cte = 1
	lds R25,_In_Cdata+1
	lds R24,_In_Cdata
	ori R24,128
	ori R25,64
	sts _In_Cdata+1,R25
	sts _In_Cdata,R24
	.dbline 402
;             send_cmd_to_bu2624();
	xcall _send_cmd_to_bu2624
	.dbline 403
;             autosrch_step = AUTOSRCH_STEP3;
	ldi R24,2
	sts _autosrch_step,R24
	.dbline 404
;             rdelay20ms = 10;
	ldi R24,10
	sts _rdelay20ms,R24
	.dbline 406
;         
;             break;
	xjmp L83
L89:
	.dbline 409
;             
;       case AUTOSRCH_STEP3:
;             if (radio_dout()&& rdelay20ms) 
	sbis 0x10,7
	rjmp L90
	lds R2,_rdelay20ms
	tst R2
	breq L90
	.dbline 410
;             {
	.dbline 411
;              	break;
	xjmp L83
L90:
	.dbline 414
;             }
;             else
;             {
	.dbline 415
;             	autosrch_step = AUTOSRCH_STEP4;
	ldi R24,3
	sts _autosrch_step,R24
	.dbline 416
;             }
	.dbline 417
;             break;
	xjmp L83
L92:
	.dbline 420
;                 
;       case AUTOSRCH_STEP4:
;           	read_data_from_bu2624();
	xcall _read_data_from_bu2624
	.dbline 421
; 	       	Ifcount = ((((unsigned long)dataout1) <<16) | (unsigned long)dataout0) & 0x0fffff;
	lds R3,_dataout0+1
	lds R2,_dataout0
	clr R4
	clr R5
	lds R6,_dataout1
	clr R7
	clr R8
	clr R9
	mov R8,R6
	mov R9,R7
	clr R6
	clr R7
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	ldi R16,<L93
	ldi R17,>L93
	xcall lpm32
	and R6,R16
	and R7,R17
	and R8,R18
	and R9,R19
	movw R30,R28
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 422
; 	    	if((dataout1 & 0xc0)) //&& !wait_station_200ms)
	lds R24,_dataout1
	andi R24,192
	tst R24
	breq L94
	.dbline 423
; 	 		{
	.dbline 424
; 	       		autosrch_step = AUTOSRCH_STEP5;
	ldi R24,4
	sts _autosrch_step,R24
	.dbline 426
; 	       		//break;
; 	       	}
	xjmp L83
L94:
	.dbline 428
; 			else
; 	       	{
	.dbline 430
;            	
;               	if(amfm_flag)
	lds R2,_amfm_flag
	tst R2
	breq L96
	.dbline 431
;                	{	
	.dbline 432
;                    	if((Ifcount >= IAM_MIN) && (Ifcount <=IAM_MAX)) 	
	ldi R16,<L100
	ldi R17,>L100
	xcall lpm32
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlo L98
	ldi R16,<L101
	ldi R17,>L101
	xcall lpm32
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R16,R2
	cpc R17,R3
	cpc R18,R4
	cpc R19,R5
	brlo L98
	.dbline 433
;                    	{
	.dbline 434
;                           search_ok = 1;
	ldi R24,1
	sts _search_ok,R24
	.dbline 436
;                           #ifdef SGJM_RDS
;                         	rds_status = 0;
	clr R2
	sts _rds_status,R2
	.dbline 437
;                         	pty_search_delay = 67;
	ldi R24,67
	sts _rds_dis_string+2,R24
	.dbline 439
;                          #endif
;                      }
	xjmp L83
L98:
	.dbline 441
;                 	else
;                 	{
	.dbline 445
;                 		#ifdef TEST_IF
; 	       					is_autosearching = 0;
; 	       				#else
;                 			autosrch_step = AUTOSRCH_STEP5;                          
	ldi R24,4
	sts _autosrch_step,R24
	.dbline 448
; 				       	#endif	
; 				       		//break;
;                 	  }
	.dbline 449
;                 }
	xjmp L83
L96:
	.dbline 451
;                 else
;                 {
	.dbline 453
;                  	
;                    	if((Ifcount >= IFM_MIN)&&(Ifcount  <= IFM_MAX))//) && (170700--171700)) 	
	ldi R16,<L105
	ldi R17,>L105
	xcall lpm32
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	brlo L103
	ldi R16,<L106
	ldi R17,>L106
	xcall lpm32
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R16,R2
	cpc R17,R3
	cpc R18,R4
	cpc R19,R5
	brlo L103
	.dbline 454
;                    	{
	.dbline 456
;                         
;                          search_ok = 1;
	ldi R24,1
	sts _search_ok,R24
	.dbline 458
;                           #ifdef SGJM_RDS
;                         	rds_status = 0;
	clr R2
	sts _rds_status,R2
	.dbline 459
;                         	pty_search_delay = 67;
	ldi R24,67
	sts _rds_dis_string+2,R24
	.dbline 461
;                          #endif
;                       }
	xjmp L83
L103:
	.dbline 463
;                       else
;                       {
	.dbline 467
;                         #ifdef TEST_IF
; 	       					is_autosearching = 0;
; 	       				#else
; 						 	autosrch_step=AUTOSRCH_STEP5;
	ldi R24,4
	sts _autosrch_step,R24
	.dbline 469
;                         #endif
;                         };
	.dbline 469
	.dbline 470
;                     }
	.dbline 471
;               }
	.dbline 472
;               break;
	xjmp L83
L108:
	.dbline 474
;     	case AUTOSRCH_STEP5:
;  			radio_is_muted = 1;
	ldi R24,1
	sts _radio_is_muted,R24
	.dbline 475
; 			mute_radio();
	xcall _mute_radio
	.dbline 476
;     		change_freq_value();
	xcall _change_freq_value
	.dbline 477
;      		autosrch_step = AUTOSRCH_STEP1;
	clr R2
	sts _autosrch_step,R2
	.dbline 478
;     		break;
L82:
L83:
	.dbline -2
	.dbline 480
;     }  //switch
; }
L75:
	adiw R28,4
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym l Ifcount 0 l
	.area bss(ram, con, rel)
	.dbfile D:\avrmcu\AT980\bu2624\bu2624.c
_freq::
	.blkb 2
	.dbsym s freq _freq i
_amfm_flag::
	.blkb 1
	.dbsym s amfm_flag _amfm_flag c
_station_no::
	.blkb 1
	.dbsym s station_no _station_no c
_is_stereo::
	.blkb 1
	.dbsym s is_stereo _is_stereo c
_is_autosearching::
	.blkb 1
	.dbsym s is_autosearching _is_autosearching c
_search_ok::
	.blkb 1
	.dbsym s search_ok _search_ok c
_autosrch_step::
	.blkb 1
	.dbsym s autosrch_step _autosrch_step c
_radio_is_muted::
	.blkb 1
	.dbsym s radio_is_muted _radio_is_muted c
_radio_count::
	.blkb 2
	.dbsym s radio_count _radio_count i
_In_Cdata:
	.blkb 2
	.dbsym s In_Cdata _In_Cdata i
_In_Pdata:
	.blkb 2
	.dbsym s In_Pdata _In_Pdata i
_dataout1:
	.blkb 1
	.dbsym s dataout1 _dataout1 c
_dataout0:
	.blkb 2
	.dbsym s dataout0 _dataout0 i
_rdelay20ms::
	.blkb 1
	.dbsym s rdelay20ms _rdelay20ms c
_search_dir::
	.blkb 1
	.dbsym s search_dir _search_dir c
_gps::
	.blkb 108
	.dbsym s gps _gps X
	.area lit(rom, con, rel)
L106:
	.word 40768,2
L105:
	.word 39808,2
L101:
	.word 7264,0
L100:
	.word 7136,0
L93:
	.word 65535,15

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -