📄 bu2624.lis
字号:
.module bu2624.c
.area eeprom(rom, con, rel)
.area data(ram, con, rel)
.area text(rom, con, rel)
0000 .dbfile D:\avrmcu\AT980\bu2624\bu2624.c
0000 .dbfunc s soft_delay _soft_delay fI
; i -> R16
.even
0000 _soft_delay::
0000 .dbline -1
0000 .dbline 75
; //Use SANYO LC72130 PLL Frequency Synthesizer //dzh 2001/03/23
; #include "..\main.h"
; #include "..\bu1923\bu1923.h"
; #define BU2624
; //#define TEST_IF
; #ifdef BU2624
; #include <iom163.h>
; #include "bu2624.h"
; #include "..\io.h"
; #pragma data:eeprom
; NV_SETTINGS gps;
; #pragma data:data
; unsigned char search_dir;
; extern void MCU_mute(void);
; #ifdef SGJM_RDS
; extern unsigned char rds_status;
; extern unsigned char rds_display_type;
; extern unsigned char display_type;
; extern unsigned char rds_step,pty_is_searching;
; extern RDS_DATA_STRUCT rds_data;
; extern unsigned char rds_dis_string[65];
; #endif
; unsigned char rdelay20ms;
; extern unsigned char g_ui_tmp_msg_cnt;
; #ifdef TTY
; extern BOOL key_is_pressed;
; #endif
; #define AM_BAND 1
; static unsigned int dataout0;
; static unsigned char dataout1;
; static unsigned int In_Pdata;
; static unsigned int In_Cdata;
; unsigned int radio_count;
; extern unsigned char muted;
; unsigned char radio_is_muted;
; //unsigned int FMreq_DIVIDER;
; #include <eeprom.h>
; unsigned char autosrch_step;
; unsigned char search_ok;
; /*0--search is not ok
; 1-- search a station
; 2-- full search end;
; */
; //unsigned char radio_delay200ms;
; unsigned char is_autosearching;
; unsigned char is_stereo;
; unsigned char station_no;
; unsigned char amfm_flag;
; //unsigned char ok_count;
; //unsigned char unok_count;
; //#define FM_SHIFT 1
; unsigned int freq;
; //unsigned long Ifcount;//Ifcount1;
; void mute_radio(void);
; //extern unsigned char radio_station_changed;
; //unsigned char station_num;
; #define IF_FM 1070
; #define IF_AM 450
;
; #define IF_CENTER 160
; #define IFM_MIN (IF_FM*160-480+IF_CENTER)
; #define IFM_MAX (IF_FM*160+480+IF_CENTER)
;
; #define IAM_MIN (IF_AM*16-64)
; #define IAM_MAX (IF_AM*16+64)
;
; //void ps_restore_amfm();
; //void ps_restore_station();
; //void use_addr_as_io(void);
; void switch_fmam(void);
; #ifdef TTY
; extern void wait_key_pressed(void);
; #endif
; void soft_delay(void)
; {
0000 .dbline 77
; register unsigned char i;
; for(i=0;i<30;i++)
0000 0027 clr R16
0002 01C0 xjmp L6
0004 L3:
0004 .dbline 78
0004 .dbline 79
0004 L4:
0004 .dbline 77
0004 0395 inc R16
0006 L6:
0006 .dbline 77
0006 0E31 cpi R16,30
0008 E8F3 brlo L3
000A .dbline -2
000A .dbline 80
; {
; }
; }
000A L2:
000A .dbline 0 ; func end
000A 0895 ret
000C .dbsym r i 16 c
000C .dbfunc s init_radio _init_radio fI
.even
000C _init_radio::
000C 2297 sbiw R28,2
000E .dbline -1
000E .dbline 83
;
; void init_radio(void) //default MONO out
; {
000E .dbline 92
;
; //register unsigned char addr;
; //set_dout_in();
; //radio_stb_lo();
; //radio_clk_hi();
; //AMreq_STEP = radio_country[gps->ps_radio_standard].AM_step;
; //FMreq_STEP = radio_country[gps->ps_radio_standard].FM_step;
; //unsigned int *addr;
; radio_is_muted = 1;
000E 81E0 ldi R24,1
0010 80930800 sts _radio_is_muted,R24
0014 .dbline 93
; mute_radio();
0014 82D0 xcall _mute_radio
0016 .dbline 94
; delay_ms(100);
0016 04E6 ldi R16,100
0018 10E0 ldi R17,0
001A 0E940000 xcall _delay_ms
001E .dbline 95
; amfm_flag=EEPROMread((int)&(gps.ps_amfm_flag));
001E 00E0 ldi R16,<_gps
0020 10E0 ldi R17,>_gps
0022 0E940000 xcall _EEPROMread
0026 1801 movw R2,R16
0028 20920200 sts _amfm_flag,R2
002C .dbline 96
; if(amfm_flag)
002C 2220 tst R2
002E E9F0 breq L8
0030 .dbline 97
; {
0030 .dbline 98
; station_no = EEPROMread((int)&(gps.ps_am_no));
0030 00E0 ldi R16,<_gps+3
0032 10E0 ldi R17,>_gps+3
0034 0E940000 xcall _EEPROMread
0038 1801 movw R2,R16
003A 20920300 sts _station_no,R2
003E .dbline 99
; if(station_no>=MAX_AM_STATION)
003E 822D mov R24,R2
0040 8431 cpi R24,20
0042 40F0 brlo L11
0044 .dbline 100
; {
0044 .dbline 101
; station_no = 0;
0044 2224 clr R2
0046 20920300 sts _station_no,R2
004A .dbline 102
; EEPROMwrite((int)&(gps.ps_am_no),0);
004A 2227 clr R18
004C 00E0 ldi R16,<_gps+3
004E 10E0 ldi R17,>_gps+3
0050 0E940000 xcall _EEPROMwrite
0054 .dbline 103
0054 L11:
0054 .dbline 103
; };
0054 .dbline 104
; EEPROM_READ((int)&gps.ps_amfre,freq);
0054 82E0 ldi R24,2
0056 90E0 ldi R25,0
0058 8883 std y+0,R24
005A 9983 std y+1,R25
005C 20E0 ldi R18,<_freq
005E 30E0 ldi R19,>_freq
0060 00E0 ldi R16,<_gps+6
0062 10E0 ldi R17,>_gps+6
0064 0E940000 xcall _EEPROMReadBytes
0068 .dbline 106
; //station_no = gps.ps_am_no;
; }
0068 1CC0 xjmp L9
006A L8:
006A .dbline 108
; else
; {
006A .dbline 109
; station_no = EEPROMread((int)&(gps.ps_fm_no));
006A 00E0 ldi R16,<_gps+2
006C 10E0 ldi R17,>_gps+2
006E 0E940000 xcall _EEPROMread
0072 1801 movw R2,R16
0074 20920300 sts _station_no,R2
0078 .dbline 110
; if(station_no>=MAX_FM_STATION)
0078 822D mov R24,R2
007A 8E31 cpi R24,30
007C 40F0 brlo L16
007E .dbline 111
; {
007E .dbline 112
; station_no = 0;
007E 2224 clr R2
0080 20920300 sts _station_no,R2
0084 .dbline 113
; EEPROMwrite((int)&(gps.ps_fm_no),0);
0084 2227 clr R18
0086 00E0 ldi R16,<_gps+2
0088 10E0 ldi R17,>_gps+2
008A 0E940000 xcall _EEPROMwrite
008E .dbline 114
008E L16:
008E .dbline 114
; };
008E .dbline 116
; //*addr = &gps.ps_fm_station[station_no];
; EEPROM_READ((int)&gps.ps_fmfre,freq);
008E 82E0 ldi R24,2
0090 90E0 ldi R25,0
0092 8883 std y+0,R24
0094 9983 std y+1,R25
0096 20E0 ldi R18,<_freq
0098 30E0 ldi R19,>_freq
009A 00E0 ldi R16,<_gps+4
009C 10E0 ldi R17,>_gps+4
009E 0E940000 xcall _EEPROMReadBytes
00A2 .dbline 117
; }
00A2 L9:
00A2 .dbline 123
; // AMreq_MIN = radio_country[gps->ps_radio_standard].AM_start;
; // AMreq_MAX = radio_country[gps->ps_radio_standard].AM_end;
; // FMreq_MIN = radio_country[gps->ps_radio_standard].FM_start;
; // FMreq_MAX = radio_country[gps->ps_radio_standard].FM_end;
;
; is_autosearching = 0;
00A2 2224 clr R2
00A4 20920500 sts _is_autosearching,R2
00A8 .dbline 124
; switch_fmam();
00A8 AFD0 xcall _switch_fmam
00AA .dbline 125
; delay_ms(100);
00AA 04E6 ldi R16,100
00AC 10E0 ldi R17,0
00AE 0E940000 xcall _delay_ms
00B2 .dbline 126
; radio_is_muted = 0;
00B2 2224 clr R2
00B4 20920800 sts _radio_is_muted,R2
00B8 .dbline 127
; mute_radio();
00B8 30D0 xcall _mute_radio
00BA .dbline 130
;
; #ifdef SGJM_RDS
; rds_init();
00BA 0E940000 xcall _rds_init
00BE .dbline 131
; pty_is_searching = 0;
00BE 2224 clr R2
00C0 20920000 sts _pty_is_searching,R2
00C4 .dbline -2
00C4 .dbline 134
; #endif
;
; }
00C4 L7:
00C4 2296 adiw R28,2
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbfunc s send_word_to_bu2624 _send_word_to_bu2624 fI
; i -> R20
; data1 -> R22,R23
.even
00C8 _send_word_to_bu2624::
00C8 0E940000 xcall push_gset2
00CC B801 movw R22,R16
00CE .dbline -1
00CE .dbline 137
;
; void send_word_to_bu2624( unsigned int data1)
; {
00CE .dbline 140
; char i;
;
; for( i=0; i<16; i++)
00CE 4427 clr R20
00D0 10C0 xjmp L24
00D2 L21:
00D2 .dbline 141
; {
00D2 .dbline 142
; radio_clk_lo();
00D2 9498 CBI 0x12,4
00D4 .dbline 143
; if( data1 & 0x01)
00D4 CB01 movw R24,R22
00D6 8170 andi R24,1
00D8 9070 andi R25,0
00DA 8030 cpi R24,0
00DC 8907 cpc R24,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -