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

📄 bu1923a.s

📁 sunplus spca514 cdmp3 源码
💻 S
📖 第 1 页 / 共 3 页
字号:
; 				rds_step = SEARCH_SYC_STEP;
	ldi R24,1
	sts _rds_step,R24
	.dbline 195
; 			break;
	xjmp L28
L49:
	.dbline 198
; 		case SYC_C_STEP:
; 		case SYC_C1_STEP:
; 			if((temp_syc_word == C_SYC_WORD)||(temp_syc_word == C1_SYC_WORD))
	cpi R16,92
	ldi R30,2
	cpc R17,R30
	breq L52
	cpi R16,204
	ldi R30,3
	cpc R17,R30
	brne L50
L52:
	.dbline 199
; 			{
	.dbline 200
; 				bit_count = 0;
	clr R2
	sts _bit_count,R2
	.dbline 201
; 				rds_step = SYC_D_STEP;
	ldi R24,6
	sts _rds_step,R24
	.dbline 202
; 				if(temp_syc_word == C_SYC_WORD)
	cpi R16,92
	ldi R30,2
	cpc R17,R30
	brne L53
	.dbline 203
; 					c_word_val = C_OFF_WORD;
	ldi R24,616
	ldi R25,2
	sts _c_word_val+1,R25
	sts _c_word_val,R24
	xjmp L28
L53:
	.dbline 205
; 				else
; 					c_word_val = C1_OFF_WORD;
	ldi R24,848
	ldi R25,3
	sts _c_word_val+1,R25
	sts _c_word_val,R24
	.dbline 207
; 				//rds_data.syc_flag = 1;
; 			}
	xjmp L28
L50:
	.dbline 209
; 			else
; 				rds_step = SEARCH_SYC_STEP;
	ldi R24,1
	sts _rds_step,R24
	.dbline 210
; 			break;
	xjmp L28
L55:
	.dbline 212
; 		case SYC_D_STEP:
; 			if(temp_syc_word == D_SYC_WORD)
	cpi R16,88
	ldi R30,2
	cpc R17,R30
	brne L56
	.dbline 213
; 			{
	.dbline 214
; 				bit_count = 0;
	clr R2
	sts _bit_count,R2
	.dbline 215
; 				rds_step = FULL_SYCA_STEP;
	ldi R24,7
	sts _rds_step,R24
	.dbline 216
; 				rds_data.syc_flag = 1;
	ldi R24,1
	sts _rds_data+10,R24
	.dbline 218
; 				//rds_data.err_flag = 0;
; 			}
	xjmp L28
L56:
	.dbline 220
; 			else
; 				rds_step = SEARCH_SYC_STEP;
	ldi R24,1
	sts _rds_step,R24
	.dbline 221
; 			break;
L27:
L28:
	.dbline -2
	.dbline 223
; 	}
; }
L22:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r p 20 pi
	.dbsym r temp_syc_word 16 i
	.dbsym r i 22 c
	.dbfunc s get_rds_block _get_rds_block fI
	.area func_lit(rom, con, rel)
L112:
	.word `L70
	.word `L75
	.word `L81
	.word `L87
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\bu1923\bu1923a.c
	.even
_get_rds_block::
	xcall push_gset3
	.dbline -1
	.dbline 226
; 
; void get_rds_block(void)
; {	
	.dbline 228
; 	
; 	if(bit_count==0)
	lds R2,_bit_count
	tst R2
	brne L61
	.dbline 229
; 	{
	.dbline 230
; 		syndrome_reg = 0;
	clr R2
	clr R3
	sts _syndrome_reg+1,R3
	sts _syndrome_reg,R2
	.dbline 231
; 	}
L61:
	.dbline 233
; 	
; 	if(rds_bit_buffer&0x1)
	ldi R16,<L16
	ldi R17,>L16
	xcall lpm32
	lds R5,_rds_bit_buffer+2+1
	lds R4,_rds_bit_buffer+2
	lds R3,_rds_bit_buffer+1
	lds R2,_rds_bit_buffer
	and R2,R16
	and R3,R17
	and R4,R18
	and R5,R19
	ldi R16,<L11
	ldi R17,>L11
	xcall lpm32
	cp R2,R16
	cpc R3,R17
	cpc R4,R18
	cpc R5,R19
	breq L63
	.dbline 234
; 		syndrome_reg ^= matrix_H[bit_count];
	ldi R24,<_matrix_H
	ldi R25,>_matrix_H
	lds R30,_bit_count
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	lds R3,_syndrome_reg+1
	lds R2,_syndrome_reg
	eor R2,R30
	eor R3,R31
	sts _syndrome_reg+1,R3
	sts _syndrome_reg,R2
L63:
	.dbline 236
; 	
; 	bit_count++;
	lds R24,_bit_count
	subi R24,255	; addi 1
	sts _bit_count,R24
	.dbline 248
; 	/*if(bit_count>16)
; 	{
; 	}
; 	if(bit_count<=16)
; 	{
; 	};
; 	if(bit_count=16)
; 	{
; 		off_word_bit = 0x200;
; 	};*/
; 	
; 	if(bit_count==26)
	cpi R24,26
	breq X8
	xjmp L65
X8:
	.dbline 249
; 	{
	.dbline 250
; 		bit_count = 0;
	clr R2
	sts _bit_count,R2
	.dbline 251
; 		buffer_reg = (rds_bit_buffer>>10);
	ldi R24,10
	ldi R25,0
	lds R5,_rds_bit_buffer+2+1
	lds R4,_rds_bit_buffer+2
	lds R3,_rds_bit_buffer+1
	lds R2,_rds_bit_buffer
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsr32
	sts _buffer_reg+1,R17
	sts _buffer_reg,R16
	sts _buffer_reg+2+1,R19
	sts _buffer_reg+2,R18
	.dbline 252
; 		rds_bit_buffer = 0;
	ldi R16,<L11
	ldi R17,>L11
	xcall lpm32
	sts _rds_bit_buffer+1,R17
	sts _rds_bit_buffer,R16
	sts _rds_bit_buffer+2+1,R19
	sts _rds_bit_buffer+2,R18
	.dbline 254
; 		//error check;
; 		switch(rds_step)
	lds R10,_rds_step
	clr R11
	ldi R24,7
	ldi R25,0
	cp R10,R24
	cpc R11,R25
	brge X9
	xjmp L67
X9:
	ldi R24,10
	cp R24,R10
	cpc R25,R11
	brge X10
	xjmp L67
X10:
	ldi R24,<L112
	ldi R25,>L112
	movw R30,R10
	sbiw R30,7
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X7:
	.dbline 255
; 		{
L70:
	.dbline 257
; 			case FULL_SYCA_STEP:
; 				if(syndrome_reg!=A_SYC_WORD)
	lds R25,_syndrome_reg+1
	lds R24,_syndrome_reg
	cpi R24,216
	ldi R30,3
	cpc R25,R30
	breq L71
	.dbline 258
; 				{
	.dbline 260
; 					//rds_data.err_flag |= A_WORD_ERR;
; 					rds_data.word_err_count++;
	lds R24,_rds_data+9
	subi R24,255	; addi 1
	sts _rds_data+9,R24
	.dbline 261
; 				}
	xjmp L72
L71:
	.dbline 263
; 				else
; 				{
	.dbline 264
; 					rds_data.A_word = (unsigned int)buffer_reg;
	lds R3,_buffer_reg+1
	lds R2,_buffer_reg
	sts _rds_data+1,R3
	sts _rds_data,R2
	.dbline 265
; 					rds_data.err_flag |= A_WORD_UPDATE;
	lds R24,_rds_data+11
	ori R24,16
	sts _rds_data+11,R24
	.dbline 266
L72:
	.dbline 266
; 				};
	.dbline 267
; 				rds_step = FULL_SYCB_STEP;	
	ldi R24,8
	sts _rds_step,R24
	.dbline 268
; 				break;
	xjmp L68
L75:
	.dbline 270
; 			case FULL_SYCB_STEP:
; 				if(syndrome_reg!=B_SYC_WORD)
	lds R25,_syndrome_reg+1
	lds R24,_syndrome_reg
	cpi R24,212
	ldi R30,3
	cpc R25,R30
	breq L76
	.dbline 271
; 				{
	.dbline 273
; 					//rds_data.err_flag |= B_WORD_ERR;
; 					rds_data.word_err_count++;
	lds R24,_rds_data+9
	subi R24,255	; addi 1
	sts _rds_data+9,R24
	.dbline 274
; 				}
	xjmp L77
L76:
	.dbline 276
; 				else
; 				{
	.dbline 277
; 					rds_data.B_word = (unsigned int)buffer_reg;
	lds R3,_buffer_reg+1
	lds R2,_buffer_reg
	sts _rds_data+2+1,R3
	sts _rds_data+2,R2
	.dbline 278
; 					rds_data.err_flag |= B_WORD_UPDATE;
	lds R24,_rds_data+11
	ori R24,32
	sts _rds_data+11,R24
	.dbline 279
; 				}
L77:
	.dbline 280
; 				rds_step = FULL_SYCC_STEP;	
	ldi R24,9
	sts _rds_step,R24
	.dbline 281
; 				break;
	xjmp L68
L81:
	.dbline 283
; 			case FULL_SYCC_STEP:
; 				if((syndrome_reg!=C_SYC_WORD)&&(syndrome_reg!=C1_SYC_WORD))
	lds R25,_syndrome_reg+1
	lds R24,_syndrome_reg
	cpi R24,92
	ldi R30,2
	cpc R25,R30
	breq L82
	cpi R24,204
	ldi R30,3
	cpc R25,R30
	breq L82
	.dbline 284
; 				{
	.dbline 286
; 					//rds_data.err_flag |=  C_WORD_ERR;
; 					rds_data.word_err_count++;
	lds R24,_rds_data+9
	subi R24,255	; addi 1
	sts _rds_data+9,R24
	.dbline 287
; 				}
	xjmp L83
L82:
	.dbline 289
; 				else
; 				{
	.dbline 290
; 					rds_data.C_word = (unsigned int)buffer_reg;
	lds R3,_buffer_reg+1
	lds R2,_buffer_reg
	sts _rds_data+4+1,R3
	sts _rds_data+4,R2
	.dbline 291
; 					rds_data.err_flag |= C_WORD_UPDATE;
	lds R24,_rds_data+11
	ori R24,64
	sts _rds_data+11,R24
	.dbline 292
; 				}
L83:
	.dbline 293
; 				rds_step = FULL_SYCD_STEP;	
	ldi R24,10
	sts _rds_step,R24
	.dbline 294
; 				break;
	xjmp L68
L87:
	.dbline 296
; 			case FULL_SYCD_STEP:
; 				if(syndrome_reg!=D_SYC_WORD)
	lds R25,_syndrome_reg+1
	lds R24,_syndrome_reg
	cpi R24,88
	ldi R30,2
	cpc R25,R30
	breq L88
	.dbline 297
; 				{
	.dbline 299
; 					//rds_data.err_flag |= D_WORD_ERR;
; 					rds_data.word_err_count++;
	lds R24,_rds_data+9
	subi R24,255	; addi 1
	sts _rds_data+9,R24
	.dbline 300
; 					rds_data.err_flag = 0;
	clr R2
	sts _rds_data+11,R2
	.dbline 301
; 				}
	xjmp L89
L88:
	.dbline 303
; 				else
; 				{
	.dbline 304
; 					rds_data.D_word = (unsigned int)buffer_reg;
	lds R3,_buffer_reg+1
	lds R2,_buffer_reg
	sts _rds_data+6+1,R3
	sts _rds_data+6,R2
	.dbline 305
; 					rds_data.err_flag |= D_WORD_UPDATE;
	lds R24,_rds_data+11
	ori R24,128
	sts _rds_data+11,R24
	.dbline 306
L89:
	.dbline 306
; 				};
	.dbline 307
; 				rds_step = FULL_SYCA_STEP;	
	ldi R24,7
	sts _rds_step,R24
	.dbline 309
; 				
; 				rds_data.block_count++;
	lds R24,_rds_data+8
	subi R24,255	; addi 1
	sts _rds_data+8,R24
	.dbline 313
; 				//if(rds_data.err_flag&0x0f)
; 					//rds_data.word_err_count++;
; 				//STORE RDS_BLOCK TO RDS BLOCK BUFFER
; 				rds_buffer0_flag = rds_data.err_flag;
	lds R2,_rds_data+11
	sts _rds_buffer0_flag,R2
	.dbline 314
; 				rds_buffer[0] = rds_data.A_word;
	lds R3,_rds_data+1
	lds R2,_rds_data
	sts _rds_buffer+1,R3
	sts _rds_buffer,R2
	.dbline 315
; 				rds_buffer[1] = rds_data.B_word;
	lds R3,_rds_data+2+1
	lds R2,_rds_data+2
	sts _rds_buffer+2+1,R3
	sts _rds_buffer+2,R2
	.dbline 316
; 				rds_buffer[2] = rds_data.C_word;
	lds R3,_rds_data+4+1
	lds R2,_rds_data+4
	sts _rds_buffer+4+1,R3
	sts _rds_buffer+4,R2
	.dbline 317
; 				rds_buffer[3] = rds_data.D_word;
	lds R3,_rds_data+6+1
	lds R2,_rds_data+6
	sts _rds_buffer+6+1,R3
	sts _rds_buffer+6,R2
	.dbline 319
; 				//CLEAR ERR_FLAG 
; 				rds_data.err_flag = 0;
	clr R2
	sts _rds_data+11,R2
	.dbline 322
; 			
; 				//Judge if losing syndrome; if yes,restart syndrome detecting
; 				if(rds_data.block_count>=30)
	cpi R24,30
	brlo L68
	.dbline 323
; 				{
	.dbline 324
; 					if(rds_data.word_err_count>20)
	ldi R24,20
	lds R2,_rds_data+9
	cp R24,R2
	brsh L106
	.dbline 325
; 					{
	.dbline 326
; 						rds_step = SEARCH_SYC_STEP;  //restart search syc word
	ldi R24,1
	sts _rds_step,R24
	.dbline 327
; 						rds_data.syc_flag = 0;
	clr R2
	sts _rds_data+10,R2
	.dbline 328
; 						rds_status = 0;
	sts _rds_status,R2
	.dbline 329
; 						bit_count = 0;
	sts _bit_count,R2
	.dbline 330
; 						syndrome_reg = 0;
	clr R3
	sts _syndrome_reg+1,R3
	sts _syndrome_reg,R2
	.dbline 331
L106:
	.dbline 331
; 					};
	.dbline 332
; 					rds_data.word_err_count = 0;
	clr R2
	sts _rds_data+9,R2
	.dbline 333
; 					rds_data.block_count = 0;
	sts _rds_data+8,R2
	.dbline 334
; 				};
	.dbline 334
	.dbline 336
; 	
; 				break;
L67:
L68:
	.dbline 338
	.dbline 339
L65:
	.dbline -2
	.dbline 341
; 
; 		};
; 	}
; 
; }
L60:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbfunc s rds_handler _rds_handler fI
	.area func_lit(rom, con, rel)
L227:
	.word `L140
	.word `L156
	.word `L158
	.word `L188
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\bu1923\bu1923a.c
;    temp_buffer -> y+0
;              i -> R20
; temp_buffer0_flag -> R22
	.even
_rds_handler::
	xcall push_gset2
	sbiw R28,8
	.dbline -1
	.dbline 345
; 
; 
; void rds_handler(void)
; {
	.dbline 358
;     register unsigned char temp_buffer0_flag;
; 	unsigned int temp_buffer[4];
; 	register unsigned char i;
; 	
; 	//if(rds_delay)
; 	//{
; 		//rds_delay--;
; 		//if(!rds_delay)
; 			//rds_status = 0;
; 	//};
; 
; 	//printf("rds handler\n");
; 	if(pty_is_searching==2)
	lds R24,_pty_is_searching
	cpi R24,2
	brne L114
	.dbline 359
; 	{
	.dbline 360
; 		if(search_ok)
	lds R2,_search_ok
	tst R2
	breq L116
	.dbline 361
; 		{
	.dbline 362
; 			if(pty_search_delay)
	lds R2,_rds_dis_string+2
	tst R2
	breq L118
	.dbline 363
; 			{
	.dbline 364
; 				if((rds_status&PTY_EXIST)&&(pty_dis_type == pty_search_type))
	lds R2,_rds_status
	sbrs R2,1
	rjmp L121
	lds R2,_rds_dis_string+1
	lds R3,_rds_dis_string
	cp R3,R2
	brne L121
	.dbline 365
; 				{
	.dbline 366
; 					pty_is_searching = 0;
	clr R2
	sts _pty_is_searching,R2
	.dbline 368
; 					//pty_search_delay = 0;
; 					return;
	xjmp L113
L121:
	.dbline 369
; 				};
	.dbline 370
; 				pty_search_delay--;
	lds R24,_rds_dis_string+2
	subi R24,1

⌨️ 快捷键说明

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