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

📄 main.s

📁 sunplus spca514 cdmp3 源码
💻 S
📖 第 1 页 / 共 3 页
字号:
	.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 + -