📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_display_type::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s display_type _display_type c
_led_val::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s led_val _led_val c
_tick_flag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s tick_flag _tick_flag c
_key_buff::
.blkb 2
.area idata
.word 65535
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s key_buff _key_buff i
_dvd_key::
.blkb 2
.area idata
.word 65535
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s dvd_key _dvd_key i
_g_ui_tmp_msg_cnt::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s g_ui_tmp_msg_cnt _g_ui_tmp_msg_cnt c
_work_mode::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbsym s work_mode _work_mode c
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.dbfunc s get_uicc_key _get_uicc_key fI
; j -> <dead>
; i -> R20
; key -> R16,R17
.even
_get_uicc_key::
xcall push_gset1
.dbline -1
.dbline 34
; #include <macros.h>
; #include <iom163.h>
; #include <eeprom.h>
; #include "..\bu2624\bu2624.h"
; #include "..\main.h"
; #include "..\key.h"
; #include "..\uicc_def.h"
; #include "..\io.h"
; #include "..\key_lut.h"
; #define SLEEP_TIME_TAG 30
; #define SLEEP_MAX_CNT 4
; extern NV_SETTINGS gps;
; extern unsigned int info;
; extern unsigned char amfm_flag;
; unsigned char display_type=0,g_avtv;
; extern unsigned char radio_is_muted, rds_display_type;
; extern unsigned int g_ui_timing_cnt;
; unsigned char led_val=0;
; extern unsigned int g_vfd_grid_buffer[];
; //unsigned char display_default_type = 0;
; unsigned char tick_flag=0;
; unsigned int key_buff=0xffff;
; unsigned char uicc_code,last_key;
; unsigned int dvd_key=0xffff;
; unsigned char g_ui_tmp_msg_cnt=0;
; extern unsigned char repeat,muted;
; extern unsigned char Mchvol,Bassvol,Treblevol,Balanceval,Loudnessval;
; extern unsigned char Cchvol,SWchvol,Schvol;
; extern unsigned char is_autosearching;
; unsigned char work_mode=0,work_mode1;
; extern unsigned char *err_msg;
; extern const UI_KEY_MAP key_map[];
; unsigned char get_uicc_key(unsigned int key)
; {
.dbline 36
; unsigned char i,j;
; for(i=0;i<MAX_KEY_CNT;i++)
clr R20
xjmp L5
L2:
.dbline 37
; if(key_map[i].input_key == key)
ldi R24,3
mul R24,R20
movw R30,R0
ldi R24,<_key_map
ldi R25,>_key_map
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
cp R30,R16
cpc R31,R17
brne L6
.dbline 38
; {
.dbline 39
; return key_map[i].uicc_key;
ldi R24,3
mul R24,R20
movw R30,R0
ldi R24,<_key_map+2
ldi R25,>_key_map+2
add R30,R24
adc R31,R25
lpm R16,Z
clr R17
xjmp L1
L6:
L3:
.dbline 36
inc R20
L5:
.dbline 36
cpi R20,44
brlo L2
.dbline 41
; }
; return 0xff;
ldi R16,255
ldi R17,0
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l j 1 c
.dbsym r i 20 c
.dbsym r key 16 i
.dbfunc s DEC_power _DEC_power fI
; val -> R20
.even
_DEC_power::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 44
; }
; void DEC_power(unsigned char val)
; {
.dbline 45
; if(val)
tst R20
breq L10
.dbline 46
; led_val |= 0x10;
lds R24,_led_val
ori R24,16
sts _led_val,R24
xjmp L11
L10:
.dbline 48
; else
; led_val &= 0x0f;
lds R24,_led_val
andi R24,15
sts _led_val,R24
L11:
.dbline 49
; VFD_LL_RefreshLED(led_val);
lds R16,_led_val
clr R17
xcall _VFD_LL_RefreshLED
.dbline -2
.dbline 50
; }
L9:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r val 20 c
.dbfunc s Set_AVTV _Set_AVTV fI
.even
_Set_AVTV::
.dbline -1
.dbline 52
; void Set_AVTV(void)
; {
.dbline 53
; if(g_avtv)
lds R2,_g_avtv
tst R2
breq L13
.dbline 54
; Set_TV();
SBI 0x15,2
xjmp L14
L13:
.dbline 56
CBI 0x15,2
L14:
.dbline -2
.dbline 57
; else
; Set_AV();
; }
L12:
.dbline 0 ; func end
ret
.dbfunc s ui_input_handler _ui_input_handler fI
.area func_lit(rom, con, rel)
L52:
.word `L31
.word `L34
.word `L40
.word `L37
.word `L43
.word `L46
.word `L49
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.area func_lit(rom, con, rel)
L78:
.word `L57
.word `L60
.word `L66
.word `L63
.word `L69
.word `L72
.word `L75
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
.area func_lit(rom, con, rel)
L92:
.word `L88
.word `L89
.word `L90
.word `L91
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\AT980\main.c
; tmp -> R20,R21
.even
_ui_input_handler::
xcall push_gset2
.dbline -1
.dbline 59
; void ui_input_handler(void)
; {
.dbline 61
; unsigned int tmp;
; if(work_mode == POWER_OFF_MODE)
lds R24,_work_mode
cpi R24,5
brne L16
.dbline 62
; {
.dbline 63
; if(uicc_code== UICC_POWER)
lds R24,_uicc_code
cpi R24,170
breq X5
xjmp L17
X5:
.dbline 64
; {
.dbline 65
; g_avtv = 0;
clr R2
sts _g_avtv,R2
.dbline 66
; Set_AV();
CBI 0x15,2
.dbline 67
; work_mode = work_mode1;
lds R2,_work_mode1
sts _work_mode,R2
.dbline 68
; work_mode_convert();
xcall _work_mode_convert
.dbline 69
; led_val &= 0x1e;
lds R24,_led_val
andi R24,30
sts _led_val,R24
.dbline 74
;
; // delay_ms(100);
; // muted = 0;
; //MCU_mute();
; }
.dbline 76
; else
; {
.dbline 81
; #ifdef CLOCK_STANDBY
; clock_operator();
; #endif
;
; };
.dbline 81
.dbline 82
; }
xjmp L17
L16:
.dbline 84
; else
; {
.dbline 85
; switch(uicc_code)
lds R20,_uicc_code
clr R21
cpi R20,53
ldi R30,0
cpc R21,R30
brne X6
xjmp L79
X6:
ldi R24,53
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L119
L118:
cpi R20,37
ldi R30,0
cpc R21,R30
brne X7
xjmp L95
X7:
cpi R20,38
ldi R30,0
cpc R21,R30
brne X8
xjmp L94
X8:
cpi R20,39
ldi R30,0
cpc R21,R30
brne X9
xjmp L93
X9:
ldi R24,39
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L121
L120:
cpi R20,31
ldi R30,0
cpc R21,R30
brne X10
xjmp L108
X10:
xjmp L20
L121:
cpi R20,45
ldi R30,0
cpc R21,R30
brne X11
xjmp L24
X11:
xjmp L20
L119:
cpi R20,131
ldi R30,0
cpc R21,R30
brne X12
xjmp L96
X12:
ldi R24,131
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L123
L122:
cpi R20,58
ldi R30,0
cpc R21,R30
brne X13
xjmp L101
X13:
xjmp L20
L123:
cpi R20,157
ldi R30,0
cpc R21,R30
breq L27
cpi R20,158
ldi R30,0
cpc R21,R30
brne X14
xjmp L53
X14:
cpi R20,157
ldi R30,0
cpc R21,R30
brge X15
xjmp L20
X15:
L124:
cpi R20,170
ldi R30,0
cpc R21,R30
breq L23
xjmp L20
X0:
.dbline 86
; {
L23:
.dbline 89
; case UICC_POWER:
; #ifndef TEST_KEY
; g_ui_timing_cnt = 0;
clr R2
clr R3
sts _g_ui_timing_cnt+1,R3
sts _g_ui_timing_cnt,R2
.dbline 90
; work_mode1=work_mode;
lds R2,_work_mode
sts _work_mode1,R2
.dbline 91
; work_mode = POWER_OFF_MODE;
ldi R24,5
sts _work_mode,R24
.dbline 92
; work_mode_convert();
xcall _work_mode_convert
.dbline 93
; muted = 1;
ldi R24,1
sts _muted,R24
.dbline 94
; MCU_mute();
xcall _MCU_mute
.dbline 96
; #endif
; break;
xjmp L21
L24:
.dbline 98
; case UICC_WORK_MODE:
; work_mode++;
lds R24,_work_mode
subi R24,255 ; addi 1
sts _work_mode,R24
.dbline 103
; #ifdef AV3_EXIST
; if(work_mode >4)
; #else
; #ifdef NO_AV2
; if(work_mode>2)
ldi R24,2
lds R2,_work_mode
cp R24,R2
brsh L25
.dbline 108
; #else
; if(work_mode>3)
; #endif
; #endif
; work_mode = 0;
clr R2
sts _work_mode,R2
L25:
.dbline 109
; work_mode_convert();
xcall _work_mode_convert
.dbline 110
; break;
xjmp L21
L27:
.dbline 168
; /*
; case UICC_DVD:
; if(work_mode!=DVD_MODE)
; {
; work_mode = DVD_MODE;
; work_mode_convert();
; };
; break;
; case UICC_AV1:
; if(work_mode!=AV1_MODE)
; {
; work_mode = AV1_MODE;
; work_mode_convert();
; };
; break;
; case UICC_AV2:
; if(work_mode!=AV2_MODE)
; {
; work_mode = AV2_MODE;
; work_mode_convert();
; }
; break;
; case UICC_AV3:
; if(work_mode!=AV3_MODE)
; {
; work_mode = AV3_MODE;
; work_mode_convert();
; };
; break;
; case UICC_AM:
; EEPROMwrite((int)&(gps.ps_amfm_flag),1);
; if(work_mode!=TUNER_MODE)
; {
; work_mode = TUNER_MODE;
; work_mode_convert();
; }
; else
; {
; if(!amfm_flag)
; work_mode_convert();
; }
; break;
; case UICC_FM:
; EEPROMwrite((int)&(gps.ps_amfm_flag),0);
; if(work_mode!=TUNER_MODE)
; {
; work_mode = TUNER_MODE;
; work_mode_convert();
; }
; else
; {
; if(amfm_flag)
; work_mode_convert();
; }
; break;
; */
; case UICC_VOLUME_UP:
; g_ui_tmp_msg_cnt = 20;
ldi R24,20
sts _g_ui_tmp_msg_cnt,R24
.dbline 169
; switch(display_type)
lds R20,_display_type
clr R21
cpi R20,5
ldi R30,0
cpc R21,R30
brge X16
xjmp L28
X16:
ldi R24,11
ldi R25,0
cp R24,R20
cpc R25,R21
brge X17
xjmp L28
X17:
ldi R24,<L52
ldi R25,>L52
movw R30,R20
sbiw R30,5
lsl R30
rol R31
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
ijmp
X1:
.dbline 170
; {
L31:
.dbline 172
; case DISPLAY_VOL:
; if(Mchvol < 60)
lds R24,_Mchvol
cpi R24,60
brsh L32
.dbline 173
; {
.dbline 174
; Mchvol++;
subi R24,255 ; addi 1
sts _Mchvol,R24
.dbline 175
; pt2320_vol();
xcall _pt2320_vol
.dbline 176
L32:
.dbline 176
; };
.dbline 177
; dvd_key = D_VOLUME_KEY|Mchvol;
lds R24,_Mchvol
clr R25
ori R25,241
sts _dvd_key+1,R25
sts _dvd_key,R24
.dbline 178
; break;
xjmp L29
L34:
.dbline 181
; #ifndef NO_SIX_CHANNEL_OUTPUT
; case DISPLAY_SVOL:
; if(Schvol<15)
lds R24,_Schvol
cpi R24,15
brsh L35
.dbline 182
; {
.dbline 183
; Schvol++;
subi R24,255 ; addi 1
sts _Schvol,R24
.dbline 184
; pt2320_Sch();
xcall _pt2320_Sch
.dbline 185
L35:
.dbline 185
; };
.dbline 186
; dvd_key = D_SURR_VOL_KEY|Schvol;
lds R24,_Schvol
clr R25
ori R25,242
sts _dvd_key+1,R25
sts _dvd_key,R24
.dbline 187
; break;
xjmp L29
L37:
.dbline 189
; case DISPLAY_SWVOL:
; if(SWchvol<15)
lds R24,_SWchvol
cpi R24,15
brsh L38
.dbline 190
; {
.dbline 191
; SWchvol++;
subi R24,255 ; addi 1
sts _SWchvol,R24
.dbline 192
; pt2320_SWch();
xcall _pt2320_SWch
.dbline 193
L38:
.dbline 193
; };
.dbline 194
; dvd_key = D_SW_VOL_KEY|SWchvol;
lds R24,_SWchvol
clr R25
ori R25,244
sts _dvd_key+1,R25
sts _dvd_key,R24
.dbline 195
; break;
xjmp L29
L40:
.dbline 197
; case DISPLAY_CVOL:
; if(Cchvol<15)
lds R24,_Cchvol
cpi R24,15
brsh L41
.dbline 198
; {
.dbline 199
; Cchvol++;
subi R24,255 ; addi 1
sts _Cchvol,R24
.dbline 200
; pt2320_Cch();
xcall _pt2320_Cch
.dbline 201
L41:
.dbline 201
; };
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -