📄 bu1923a.s
字号:
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 + -