📄 radio.s
字号:
.dbline 380
; if(amfm_flag)
lds R2,_amfm_flag
tst R2
breq L151
.dbline 381
; {
.dbline 382
; if(radio_count>MAX_AM_STATION)
ldi R24,20
ldi R25,0
lds R3,_radio_count+1
lds R2,_radio_count
cp R24,R2
cpc R25,R3
brsh L152
.dbline 383
; radio_count = 1;
ldi R24,1
sts _radio_count+1,R25
sts _radio_count,R24
.dbline 385
;
; }
xjmp L152
L151:
.dbline 387
; else
; {
.dbline 388
; if(radio_count>MAX_FM_STATION)
ldi R24,30
ldi R25,0
lds R3,_radio_count+1
lds R2,_radio_count
cp R24,R2
cpc R25,R3
brsh L155
.dbline 389
; radio_count = 1;
ldi R24,1
sts _radio_count+1,R25
sts _radio_count,R24
L155:
.dbline 391
;
; }
L152:
.dbline 392
; g_ui_tmp_msg_cnt = 20;
ldi R24,20
sts _g_ui_tmp_msg_cnt,R24
.dbline 395
;
; //store_bit = 0;
; }
xjmp L26
L149:
.dbline 397
; else
; {
.dbline 398
; if(radio_count!=0)
lds R3,_radio_count+1
lds R2,_radio_count
tst R2
brne X13
tst R3
brne X14
xjmp L157
X14:
X13:
.dbline 399
; {
.dbline 400
; station_no=radio_count-1;
movw R24,R2
sbiw R24,1
sts _station_no,R24
.dbline 401
; if(amfm_flag)
lds R2,_amfm_flag
tst R2
breq L159
.dbline 402
; {
.dbline 403
; EEPROM_WRITE((int)&gps.ps_am_station[station_no],freq);
ldi R24,2
ldi R25,0
std y+0,R24
std y+1,R25
ldi R18,<_freq
ldi R19,>_freq
ldi R24,<_gps+68
ldi R25,>_gps+68
lds R16,_station_no
clr R17
lsl R16
rol R17
add R16,R24
adc R17,R25
xcall _EEPROMWriteBytes
.dbline 404
; EEPROMwrite((int)&gps.ps_am_no,station_no);
lds R18,_station_no
ldi R16,<_gps+3
ldi R17,>_gps+3
xcall _EEPROMwrite
.dbline 405
; }
xjmp L160
L159:
.dbline 407
; else
; {
.dbline 408
; EEPROM_WRITE((int)&gps.ps_fm_station[station_no],freq);
ldi R24,2
ldi R25,0
std y+0,R24
std y+1,R25
ldi R18,<_freq
ldi R19,>_freq
ldi R24,<_gps+8
ldi R25,>_gps+8
lds R16,_station_no
clr R17
lsl R16
rol R17
add R16,R24
adc R17,R25
xcall _EEPROMWriteBytes
.dbline 409
; EEPROMwrite((int)&gps.ps_fm_no,station_no);
lds R18,_station_no
ldi R16,<_gps+2
ldi R17,>_gps+2
xcall _EEPROMwrite
.dbline 411
;
; }
L160:
.dbline 412
L157:
.dbline 412
; };
.dbline 413
; g_ui_tmp_msg_cnt=1;
ldi R24,1
sts _g_ui_tmp_msg_cnt,R24
.dbline 414
; }
.dbline 415
; break;
xjmp L26
L165:
.dbline 427
;
; case RD_9:
; case RD_8:
; case RD_7:
; case RD_6:
; case RD_5:
; case RD_4:
; case RD_3:
; case RD_2:
; case RD_1:
; case RD_0:
; g_ui_tmp_msg_cnt = 20 ; //30s
ldi R24,20
sts _g_ui_tmp_msg_cnt,R24
.dbline 428
; if((display_type != DISPLAY_DIGIT)&&(display_type!=RADIO_STORE)) //first
lds R24,_display_type
cpi R24,15
breq L166
cpi R24,14
breq L166
.dbline 429
; {
.dbline 430
; display_type = DISPLAY_DIGIT;
ldi R24,15
sts _display_type,R24
.dbline 431
; radio_count = 0;
clr R2
clr R3
sts _radio_count+1,R3
sts _radio_count,R2
.dbline 432
L166:
.dbline 432
; };
.dbline 433
; if(radio_count >= 6000) break;
lds R25,_radio_count+1
lds R24,_radio_count
cpi R24,112
ldi R30,23
cpc R25,R30
brlo L168
.dbline 433
xjmp L26
L168:
.dbline 434
; radio_count *= 10;
lds R19,_radio_count+1
lds R18,_radio_count
ldi R16,10
ldi R17,0
xcall empy16s
sts _radio_count+1,R17
sts _radio_count,R16
.dbline 435
; radio_count += (uicc_code-RD_0);
lds R24,_uicc_code
clr R25
sbiw R24,1
movw R2,R16
add R2,R24
adc R3,R25
sts _radio_count+1,R3
sts _radio_count,R2
.dbline 437
;
; if(display_type == RADIO_STORE)
lds R24,_display_type
cpi R24,14
breq X15
xjmp L26
X15:
.dbline 438
; {
.dbline 439
; if(amfm_flag)
lds R2,_amfm_flag
tst R2
breq L172
.dbline 440
; {
.dbline 441
; if(radio_count > MAX_AM_STATION)
ldi R24,20
ldi R25,0
lds R3,_radio_count+1
lds R2,_radio_count
cp R24,R2
cpc R25,R3
brlo X16
xjmp L26
X16:
.dbline 442
; radio_count = radio_count / 10;
ldi R18,10
ldi R19,0
movw R16,R2
xcall div16u
sts _radio_count+1,R17
sts _radio_count,R16
.dbline 443
; }
xjmp L26
L172:
.dbline 445
; else
; {
.dbline 446
; if(radio_count > MAX_FM_STATION)
ldi R24,30
ldi R25,0
lds R3,_radio_count+1
lds R2,_radio_count
cp R24,R2
cpc R25,R3
brlo X17
xjmp L26
X17:
.dbline 447
; radio_count = radio_count / 10;
ldi R18,10
ldi R19,0
movw R16,R2
xcall div16u
sts _radio_count+1,R17
sts _radio_count,R16
.dbline 448
; }
.dbline 449
; }
.dbline 450
; break;
xjmp L26
L178:
.dbline 452
; case RD_CLEAR:
; if(display_type==RADIO_STORE)
lds R24,_display_type
cpi R24,14
brne L179
.dbline 453
; radio_count = 0;
clr R2
clr R3
sts _radio_count+1,R3
sts _radio_count,R2
xjmp L180
L179:
.dbline 455
; else
; radio_count /= 10;
ldi R18,10
ldi R19,0
lds R17,_radio_count+1
lds R16,_radio_count
xcall div16u
sts _radio_count+1,R17
sts _radio_count,R16
L180:
.dbline 456
; g_ui_tmp_msg_cnt = 20;
ldi R24,20
sts _g_ui_tmp_msg_cnt,R24
.dbline 457
; break;
xjmp L26
L181:
.dbline 460
; case RD_ENTER:
; //is_autosearching = 0;
; if(display_type != DISPLAY_DIGIT) break;
lds R24,_display_type
cpi R24,15
breq L182
.dbline 460
xjmp L26
L182:
.dbline 462
;
; if((radio_count>=AMreq_MIN)&&(radio_count<=AMreq_MAX))
lds R25,_radio_count+1
lds R24,_radio_count
cpi R24,10
ldi R30,2
cpc R25,R30
brsh X18
xjmp L184
X18:
ldi R24,1611
ldi R25,6
lds R3,_radio_count+1
lds R2,_radio_count
cp R24,R2
cpc R25,R3
brlo L184
.dbline 463
; {
.dbline 464
; amfm_flag = 1;
ldi R24,1
sts _amfm_flag,R24
.dbline 465
; freq = radio_count;
sts _freq+1,R3
sts _freq,R2
.dbline 466
; station_no = find_station_no();
xcall _find_station_no
movw R2,R16
sts _station_no,R2
.dbline 467
; if(station_no!=255)
mov R24,R2
cpi R24,255
breq L186
.dbline 468
; {
.dbline 469
; EEPROMwrite((int)&(gps.ps_am_no),station_no);
mov R18,R2
ldi R16,<_gps+3
ldi R17,>_gps+3
xcall _EEPROMwrite
.dbline 470
L186:
.dbline 470
; };
.dbline 472
; #ifdef SGJM_RDS
; close_rds();
xcall _close_rds
.dbline 473
; rds_display_type = 0;
clr R2
sts _rds_display_type,R2
.dbline 475
; #endif
; radio_is_muted = 1;
ldi R24,1
sts _radio_is_muted,R24
.dbline 476
; mute_radio();
xcall _mute_radio
.dbline 477
; delay_ms(500);
ldi R16,500
ldi R17,1
xcall _delay_ms
.dbline 478
; switch_fmam();
xcall _switch_fmam
.dbline 479
; delay_ms(500);
ldi R16,500
ldi R17,1
xcall _delay_ms
.dbline 480
; radio_is_muted =0;
clr R2
sts _radio_is_muted,R2
.dbline 481
; mute_radio();
xcall _mute_radio
.dbline 482
; save_fre();
xcall _save_fre
.dbline 483
; EEPROMwrite((int)&(gps.ps_amfm_flag),amfm_flag);
lds R18,_amfm_flag
ldi R16,<_gps
ldi R17,>_gps
xcall _EEPROMwrite
.dbline 484
; }
xjmp L185
L184:
.dbline 485
; else if((radio_count>=FMreq_MIN)&&(radio_count<=FMreq_MAX))
lds R25,_radio_count+1
lds R24,_radio_count
cpi R24,46
ldi R30,34
cpc R25,R30
brsh X19
xjmp L189
X19:
ldi R24,10800
ldi R25,42
lds R3,_radio_count+1
lds R2,_radio_count
cp R24,R2
cpc R25,R3
brlo L189
.dbline 486
; {
.dbline 487
; amfm_flag = 0;
clr R2
sts _amfm_flag,R2
.dbline 488
; freq = radio_count;
lds R3,_radio_count+1
lds R2,_radio_count
sts _freq+1,R3
sts _freq,R2
.dbline 490
;
; station_no = find_station_no();
xcall _find_station_no
movw R2,R16
sts _station_no,R2
.dbline 491
; if(station_no!=255)
mov R24,R2
cpi R24,255
breq L191
.dbline 492
; {
.dbline 493
; EEPROMwrite((int)&(gps.ps_fm_no),station_no);
mov R18,R2
ldi R16,<_gps+2
ldi R17,>_gps+2
xcall _EEPROMwrite
.dbline 494
L191:
.dbline 494
; };
.dbline 495
; radio_is_muted = 1;
ldi R24,1
sts _radio_is_muted,R24
.dbline 496
; mute_radio();
xcall _mute_radio
.dbline 497
; delay_ms(500);
ldi R16,500
ldi R17,1
xcall _delay_ms
.dbline 498
; switch_fmam();
xcall _switch_fmam
.dbline 499
; delay_ms(500);
ldi R16,500
ldi R17,1
xcall _delay_ms
.dbline 500
; radio_is_muted = 0;
clr R2
sts _radio_is_muted,R2
.dbline 501
; mute_radio();
xcall _mute_radio
.dbline 502
; save_fre();
xcall _save_fre
.dbline 503
; EEPROMwrite((int)&(gps.ps_amfm_flag),amfm_flag);
lds R18,_amfm_flag
ldi R16,<_gps
ldi R17,>_gps
xcall _EEPROMwrite
.dbline 504
; }
xjmp L190
L189:
.dbline 506
; else
; {
.dbline 507
; if(radio_count!=0)
lds R3,_radio_count+1
lds R2,_radio_count
tst R2
brne X20
tst R3
brne X21
xjmp L194
X21:
X20:
.dbline 508
; {
.dbline 509
; radio_count--;
movw R24,R2
sbiw R24,1
sts _radio_count+1,R25
sts _radio_count,R24
.dbline 510
; if(amfm_flag)
lds R2,_amfm_flag
tst R2
breq L196
.dbline 511
; {
.dbline 512
; if(radio_count < MAX_AM_STATION)
cpi R24,20
ldi R30,0
cpc R25,R30
brlo X22
xjmp L197
X22:
.dbline 513
; {
.dbline 514
; station_no = radio_count;
movw R2,R24
sts _station_no,R2
.dbline 515
; EEPROMwrite((int)&(gps.ps_am_no),station_no);
mov R18,R2
ldi R16,<_gps+3
ldi R17,>_gps+3
xcall _EEPROMwrite
.dbline 516
; EEPROM_READ((int)&gps.ps_am_station[station_no],freq);
ldi R24,2
ldi R25,0
std y+0,R24
std y+1,R25
ldi R18,<_freq
ldi R19,>_freq
ldi R24,<_gps+68
ldi R25,>_gps+68
lds R16,_station_no
clr R17
lsl R16
rol R17
add R16,R24
adc R17,R25
xcall _EEPROMReadBytes
.dbline 517
; save_fre();
xcall _save_fre
.dbline 518
; init_radio();
xcall _init_radio
.dbline 519
; }
.dbline 526
; /*else
; {
; display_type = RADIO_ERR_MENU;
; g_ui_tmp_msg_cnt = 20;
; };*/
;
; }
xjmp L197
L196:
.dbline 528
; else
; {
.dbline 529
; if(radio_count < MAX_FM_STATION)
lds R25,_radio_count+1
lds R24,_radio_count
cpi R24,30
ldi R30,0
cpc R25,R30
brsh L202
.dbline 530
; {
.dbline 531
; station_no = radio_count;
movw R2,R24
sts _station_no,R2
.dbline 532
; EEPROMwrite((int)&(gps.ps_fm_no),station_no);
mov R18,R2
ldi R16,<_gps+2
ldi R17,>_gps+2
xcall _EEPROMwrite
.dbline 533
; EEPROM_READ((int)&gps.ps_fm_station[station_no],freq);
ldi R24,2
ldi R25,0
std y+0,R24
std y+1,R25
ldi R18,<_freq
ldi R19,>_freq
ldi R24,<_gps+8
ldi R25,>_gps+8
lds R16,_station_no
clr R17
lsl R16
rol R17
add R16,R24
adc R17,R25
xcall _EEPROMReadBytes
.dbline 534
; save_fre();
xcall _save_fre
.dbline 535
; init_radio();
xcall _init_radio
.dbline 537
;
; }
L202:
.dbline 543
; /*else
; {
; radio_menu_id = RADIO_ERR_MENU;
; g_ui_tmp_msg_cnt = 20;
; };*/
; }
L197:
.dbline 545
;
; }
L194:
.dbline 546
; }
L190:
L185:
.dbline 547
; g_ui_tmp_msg_cnt = 1;
ldi R24,1
sts _g_ui_tmp_msg_cnt,R24
.dbline 548
; break;
L25:
L26:
.dbline -2
.dbline 551
;
; }
; }
L24:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.area bss(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
_store_bit::
.blkb 1
.dbsym s store_bit _store_bit c
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
L54:
.blkb 7
.area idata
.byte 32,32,'F,'R,'E,'Q,0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
L52:
.blkb 6
.area idata
.byte 32,32,32,'C,'T,0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
L50:
.blkb 6
.area idata
.byte 32,32,32,'R,'T,0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
L48:
.blkb 6
.area idata
.byte 32,32,'P,'T,'Y,0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
L46:
.blkb 8
.area idata
.byte 'P,'S,32,'N,'A,'M,'E,0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\bu2624\radio.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -