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

📄 bu1923a.s

📁 sunplus spca514 cdmp3 源码
💻 S
📖 第 1 页 / 共 3 页
字号:
	sts _rds_dis_string+2,R24
	.dbline 372
; 			//	printf("pty=");debug_out_wx(pty_search_delay);printf("\n");
; 				if(!pty_search_delay)
	mov R2,R24
	tst R2
	brne L119
	.dbline 373
; 				{
	.dbline 374
; 					search_ok = 0;
	clr R2
	sts _search_ok,R2
	.dbline 376
; 					//search_dir = 1;
; 					is_autosearching = 1;
	ldi R24,1
	sts _is_autosearching,R24
	.dbline 377
; 					autosrch_step = AUTOSRCH_STEP5;
	ldi R24,4
	sts _autosrch_step,R24
	.dbline 378
; 				};
	.dbline 378
	.dbline 379
; 			}
	xjmp L119
L118:
	.dbline 381
; 			else
; 			{
	.dbline 383
; 			//	printf("kkk\n");
; 				pty_search_delay = 67;
	ldi R24,67
	sts _rds_dis_string+2,R24
	.dbline 384
; 			}
L119:
	.dbline 385
; 		}
L116:
	.dbline 386
; 	}
L114:
	.dbline 387
; 	CLI();
	cli
	.dbline 388
; 	if(rds_buffer0_flag&BD_WORD_UPDATE)
	lds R24,_rds_buffer0_flag
	andi R24,160
	tst R24
	breq L129
	.dbline 389
; 	{
	.dbline 390
; 		temp_buffer0_flag = rds_buffer0_flag;
	lds R22,_rds_buffer0_flag
	.dbline 391
; 		temp_buffer[0] = rds_buffer[0];
	lds R3,_rds_buffer+1
	lds R2,_rds_buffer
	std y+0,R2
	std y+1,R3
	.dbline 392
; 		temp_buffer[1] = rds_buffer[1];
	lds R3,_rds_buffer+2+1
	lds R2,_rds_buffer+2
	std y+2,R2
	std y+3,R3
	.dbline 393
; 		temp_buffer[2] = rds_buffer[2];
	lds R3,_rds_buffer+4+1
	lds R2,_rds_buffer+4
	std y+4,R2
	std y+5,R3
	.dbline 394
; 		temp_buffer[3] = rds_buffer[3];
	lds R3,_rds_buffer+6+1
	lds R2,_rds_buffer+6
	std y+6,R2
	std y+7,R3
	.dbline 395
; 		rds_buffer0_flag = 0;
	clr R2
	sts _rds_buffer0_flag,R2
	.dbline 396
; 	}
	xjmp L130
L129:
	.dbline 398
; 	else
; 	{
	.dbline 399
; 		SEI();
	sei
	.dbline 400
; 		return;
	xjmp L113
L130:
	.dbline 401
; 	};
	.dbline 402
; 	SEI();
	sei
	.dbline 404
; 	//printf("get_a_block=");debug_out_wx(temp_buffer[0]);printf("\n");
; 	rds_delay = 60;
	ldi R24,60
	sts _rds_delay,R24
	.dbline 405
; 	switch(rds_display_type)
	lds R20,_rds_display_type
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brge X12
	xjmp L137
X12:
	ldi R24,4
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brge X13
	xjmp L137
X13:
	ldi R24,<L227
	ldi R25,>L227
	movw R30,R20
	sbiw R30,1
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X11:
	.dbline 406
; 	{
L140:
	.dbline 409
; 		case DIS_PS_NAME:
; 			//printf("DIS_PS_NAME\n");	
; 			if((high_byte(temp_buffer,1)&0xf0)==0)  //if((temp_buffer[1]&0xf000)==0)  //GROUP 0
	ldd R24,y+3
	andi R24,240
	tst R24
	breq X14
	xjmp L138
X14:
	.dbline 410
; 			{
	.dbline 411
; 				rds_status = PS_NAME_EXIST;
	ldi R24,1
	sts _rds_status,R24
	.dbline 413
; 					//printf("is 0 group\n");
; 				i = low_byte(temp_buffer,1)&0x03;//((unsigned char)temp_buffer[1])&0x03;
	ldd R20,y+2
	andi R20,3
	.dbline 416
; 					//printf("temp_buffer[2]=");debug_out_wx(temp_buffer[2]);printf("\n");
; 					//printf("temp_buffer[4]=");debug_out_wx(temp_buffer[4]);printf("\n");
; 				i <<=1;
	lsl R20
	.dbline 417
; 				rds_dis_buffer[i] = high_byte(temp_buffer,3);//(unsigned char) (temp_buffer[3]>>8);
	ldi R24,<_rds_dis_buffer
	ldi R25,>_rds_dis_buffer
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+7
	std z+0,R2
	.dbline 418
; 				i++;
	inc R20
	.dbline 419
; 				rds_dis_buffer[i] = low_byte(temp_buffer,3);
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+6
	std z+0,R2
	.dbline 421
; 				//if(i<2)
; 				rds_dis_control |=(1<<i);
	ldi R16,1
	mov R17,R20
	xcall lsl8
	lds R2,_rds_dis_control
	or R2,R16
	sts _rds_dis_control,R2
	.dbline 425
; 				//else
; 					//rds_dis_control |=(1<<i);
; 					//printf("rds_display_contr=");debug_out_wx(rds_dis_control);printf("\n");	
; 				if((rds_dis_control==0xaa)&&(i>6))
	mov R24,R2
	cpi R24,170
	breq X15
	xjmp L138
X15:
	ldi R24,6
	cp R24,R20
	brlo X16
	xjmp L138
X16:
	.dbline 426
; 				{
	.dbline 428
; 					
; 					for(i=0;i<8;i++)
	clr R20
	xjmp L154
L151:
	.dbline 429
	.dbline 430
	ldi R24,<_rds_dis_buffer
	ldi R25,>_rds_dis_buffer
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_rds_dis_string
	ldi R25,>_rds_dis_string
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 431
L152:
	.dbline 428
	inc R20
L154:
	.dbline 428
	cpi R20,8
	brlo L151
	.dbline 432
; 					{
; 						rds_dis_string[i] = rds_dis_buffer[i];
; 					}
; 					rds_dis_string[8] = '\0';
	clr R2
	sts _rds_dis_string+8,R2
	.dbline 433
; 					rds_dis_control = 0;	
	sts _rds_dis_control,R2
	.dbline 435
; 						//printf(rds_dis_string);
; 				};
	.dbline 435
	.dbline 437
; 				
; 			}
	.dbline 438
; 			break;
	xjmp L138
L156:
	.dbline 440
; 		case DIS_PTY: //ALL_GROUP
; 			pty_dis_type = ((unsigned char)(temp_buffer[1]>>5))&0x1f;
	ldi R18,5
	ldi R19,0
	ldd R16,y+2
	ldd R17,y+3
	xcall lsr16
	movw R24,R16
	andi R24,31
	sts _rds_dis_string,R24
	.dbline 441
; 			rds_status = PTY_EXIST;
	ldi R24,2
	sts _rds_status,R24
	.dbline 443
; 			//pty_dis_type = temp_val&0x1f;
; 			break;
	xjmp L138
L158:
	.dbline 445
; 		case DIS_RT:
; 			if((high_byte(temp_buffer,1)&0xf0)==0x20) //GROUP 2 A/B
	ldd R24,y+3
	andi R24,240
	cpi R24,32
	breq X17
	xjmp L138
X17:
	.dbline 446
; 			{
	.dbline 448
; 			   
; 				rds_dis_buffer[0] = high_byte(temp_buffer,1)&0xf8;
	ldd R24,y+3
	andi R24,248
	sts _rds_dis_buffer,R24
	.dbline 449
; 				if(rds_dis_buffer[0]!=rds_dis_buffer[1])
	lds R2,_rds_dis_buffer+1
	mov R3,R24
	cp R3,R2
	breq L165
	.dbline 450
; 				{
	.dbline 451
; 					rds_dis_buffer[1]=rds_dis_buffer[0];
	mov R2,R3
	sts _rds_dis_buffer+1,R2
	.dbline 452
; 					rds_dis_buffer[2] = 0;
	clr R2
	sts _rds_dis_buffer+2,R2
	.dbline 453
; 					for(i = 0;i<65;i++)
	clr R20
	xjmp L173
L170:
	.dbline 454
	ldi R24,<_rds_dis_string
	ldi R25,>_rds_dis_string
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,13
	std z+0,R24
L171:
	.dbline 453
	inc R20
L173:
	.dbline 453
	cpi R20,65
	brlo L170
	.dbline 455
L165:
	.dbline 455
; 						rds_dis_string[i] = 0x0d;
; 				};
	.dbline 456
; 				rds_status = RT_EXIST;
	ldi R24,4
	sts _rds_status,R24
	.dbline 457
; 				i =(low_byte(temp_buffer,1)&0x0f);
	ldd R20,y+2
	andi R20,15
	.dbline 459
; 				
; 				if(high_byte(temp_buffer,1)&0x08)  //B VERSION
	ldd R2,y+3
	sbrs R2,3
	rjmp L175
	.dbline 460
; 				{
	.dbline 461
; 					i <<= 1;
	lsl R20
	.dbline 462
; 					rds_dis_string[i]=high_byte(temp_buffer,3);
	ldi R24,<_rds_dis_string
	ldi R25,>_rds_dis_string
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+7
	std z+0,R2
	.dbline 463
; 					i++;
	inc R20
	.dbline 464
; 					rds_dis_string[i]=low_byte(temp_buffer,3);
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+6
	std z+0,R2
	.dbline 465
; 				}
	xjmp L138
L175:
	.dbline 467
; 				else   //A VERSION
; 				{
	.dbline 468
; 				    i <<= 2;
	lsl R20
	lsl R20
	.dbline 469
; 					rds_dis_string[i]=high_byte(temp_buffer,2);
	ldi R24,<_rds_dis_string
	ldi R25,>_rds_dis_string
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+5
	std z+0,R2
	.dbline 470
; 					i++;
	inc R20
	.dbline 471
; 					rds_dis_string[i]=low_byte(temp_buffer,2);
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+4
	std z+0,R2
	.dbline 472
; 					i++;
	inc R20
	.dbline 473
; 					rds_dis_string[i]=high_byte(temp_buffer,3);
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+7
	std z+0,R2
	.dbline 474
; 					i++;
	inc R20
	.dbline 475
; 					rds_dis_string[i]=low_byte(temp_buffer,3);
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,y+6
	std z+0,R2
	.dbline 478
; 		
; 
; 				};
	.dbline 478
	.dbline 479
; 			};
	.dbline 479
	.dbline 480
; 			break;
	xjmp L138
L188:
	.dbline 482
; 		case DIS_CT:
; 			if((high_byte(temp_buffer,1)&0xf8)==0x40) //(temp_buffer[1]&0xf800)==0x4000 //GROUP 4A
	ldd R24,y+3
	andi R24,248
	cpi R24,64
	breq X18
	xjmp L138
X18:
	.dbline 483
; 			{
	.dbline 484
; 				if(temp_buffer0_flag&C_WORD_UPDATE)  //B\C\D
	sbrs R22,6
	rjmp L138
	.dbline 485
; 				{
	.dbline 486
; 					rds_status = CT_EXIST;
	ldi R24,8
	sts _rds_status,R24
	.dbline 487
; 					rds_dis_buffer[1] = (unsigned char)((temp_buffer[3]&0x0fc0)>>6); //minute
	ldi R18,6
	ldi R19,0
	ldd R16,y+6
	ldd R17,y+7
	andi R16,192
	andi R17,15
	xcall lsr16
	sts _rds_dis_buffer+1,R16
	.dbline 488
; 					i = (high_byte(temp_buffer,3)&0x0f0)>>4;
	ldd R20,y+7
	andi R20,240
	swap R20
	andi R20,#0x0F
	.dbline 490
; 
; 					rds_dis_buffer[2] =((((low_byte(temp_buffer,2)&0x01)<<4)|i)<<1); // half hour
	ldd R24,y+4
	andi R24,1
	andi R24,#0x0F
	swap R24
	or R24,R20
	lsl R24
	sts _rds_dis_buffer+2,R24
	.dbline 492
; 					//rds_dis_buffer[2] <<= 1; //half hour
; 					rds_dis_buffer[3] = (low_byte(temp_buffer,3)&0x1f); //local offer half hour
	ldd R24,y+6
	andi R24,31
	sts _rds_dis_buffer+3,R24
	.dbline 493
; 					if(low_byte(temp_buffer,3)&0x20)
	ldd R2,y+6
	sbrs R2,5
	rjmp L203
	.dbline 494
; 					{
	.dbline 495
; 						if(rds_dis_buffer[2] >= rds_dis_buffer[3])
	mov R2,R24
	lds R3,_rds_dis_buffer+2
	cp R3,R2
	brlo L206
	.dbline 496
; 							rds_dis_buffer[2] -= rds_dis_buffer[3];
	sub R3,R2
	sts _rds_dis_buffer+2,R3
	xjmp L204
L206:
	.dbline 498
; 						else
; 							rds_dis_buffer[2] =((48+rds_dis_buffer[2])-rds_dis_buffer[3]);
	lds R2,_rds_dis_buffer+3
	lds R24,_rds_dis_buffer+2
	subi R24,208	; addi 48
	sub R24,R2
	sts _rds_dis_buffer+2,R24
	.dbline 499
; 					}
	xjmp L204
L203:
	.dbline 501
; 					else
; 					{
	.dbline 502
; 						rds_dis_buffer[2] += rds_dis_buffer[3];
	lds R2,_rds_dis_buffer+3
	lds R3,_rds_dis_buffer+2
	add R3,R2
	sts _rds_dis_buffer+2,R3
	.dbline 503
L204:
	.dbline 503
; 					};
	.dbline 504
; 					rds_dis_string[0] = rds_dis_buffer[2] >>1;  //hour
	lds R2,_rds_dis_buffer+2
	lsr R2
	sts _rds_dis_string,R2
	.dbline 505
; 					if(rds_dis_buffer[2]&0x01)
	lds R2,_rds_dis_buffer+2
	sbrs R2,0
	rjmp L218
	.dbline 506
; 					  rds_dis_buffer[1] += 30;  //minute
	lds R24,_rds_dis_buffer+1
	subi R24,226	; addi 30
	sts _rds_dis_buffer+1,R24
L218:
	.dbline 507
; 					rds_dis_string[1] = rds_dis_buffer[1]%60;  //minute
	ldi R17,60
	lds R16,_rds_dis_buffer+1
	xcall mod8u
	sts _rds_dis_string+1,R16
	.dbline 508
; 					if(rds_dis_buffer[1] >= 60)
	lds R24,_rds_dis_buffer+1
	cpi R24,60
	brlo L224
	.dbline 509
; 						rds_dis_string[0]++;  //hour+1;
	lds R24,_rds_dis_string
	subi R24,255	; addi 1
	sts _rds_dis_string,R24
L224:
	.dbline 510
; 					rds_dis_string[0] %= 24;
	ldi R17,24
	lds R16,_rds_dis_string
	xcall mod8u
	sts _rds_dis_string,R16
	.dbline 511
; 				}
	.dbline 512
; 			};
	.dbline 512
	.dbline 513
; 			break;
L137:
L138:
	.dbline 514
; 	};
	.dbline -2
	.dbline 516
; 	//
; }
L113:
	adiw R28,8
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l temp_buffer 0 A[8:4]i
	.dbsym r i 20 c
	.dbsym r temp_buffer0_flag 22 c
	.area bss(ram, con, rel)
	.dbfile D:\avrmcu\AT980\bu1923\bu1923a.c
_rds_delay::
	.blkb 1
	.dbsym s rds_delay _rds_delay c
_rds_data::
	.blkb 12
	.dbsym s rds_data _rds_data X
_bit_count:
	.blkb 1
	.dbsym s bit_count _bit_count c
_syndrome_reg:
	.blkb 2
	.dbsym s syndrome_reg _syndrome_reg i
_buffer_reg:
	.blkb 4
	.dbsym s buffer_reg _buffer_reg l
_rds_buffer::
	.blkb 8
	.dbsym s rds_buffer _rds_buffer A[8:4]i
_rds_buffer0_flag::
	.blkb 1
	.dbsym s rds_buffer0_flag _rds_buffer0_flag c
_rds_dis_control::
	.blkb 1
	.dbsym s rds_dis_control _rds_dis_control c
_rds_dis_string::
	.blkb 65
	.dbsym s rds_dis_string _rds_dis_string A[65:65]c
_rds_dis_buffer::
	.blkb 10
	.dbsym s rds_dis_buffer _rds_dis_buffer A[10:10]c
_rds_bit_buffer::
	.blkb 4
	.dbsym s rds_bit_buffer _rds_bit_buffer l
	.area lit(rom, con, rel)
L16:
	.word 1,0
L11:
	.word 0,0

⌨️ 快捷键说明

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