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

📄 vfd.s

📁 sunplus spca514 cdmp3 源码
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module vfd.c
	.area lit(rom, con, rel)
_num_xlate:
	.word 12579
	.word 258
	.word 12483
	.word 8643
	.word 482
	.word 8673
	.word 12769
	.word 259
	.word 12771
	.word 8675
	.dbfile D:\avrmcu\AT980\AT980\vfd.c
	.dbsym s num_xlate _num_xlate A[20:10]i
_num_xlate_left:
	.word 15232
	.word 2304
	.word 13696
	.word 11648
	.word 3840
	.word 11904
	.word 16000
	.word 2432
	.word 16256
	.word 12160
	.dbsym s num_xlate_left _num_xlate_left A[20:10]i
_num_xlate_right:
	.word 119
	.word 18
	.word 107
	.word 91
	.word 30
	.word 93
	.word 125
	.word 19
	.word 127
	.word 95
	.dbsym s num_xlate_right _num_xlate_right A[20:10]i
_vfd_alpha:
	.word 4579
	.word 12768
	.word 12321
	.word 12738
	.word 12513
	.word 4321
	.word 12705
	.word 4578
	.word 1032
	.word 0
	.word 1560
	.word 12320
	.word 4406
	.word 4902
	.word 12579
	.word 4323
	.word 0
	.word 4835
	.word 8673
	.word 1033
	.word 12578
	.word 6192
	.word 6946
	.word 2580
	.word 1044
	.word 10257
	.dbsym s vfd_alpha _vfd_alpha A[52:26]i
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\AT980\vfd.c
	.dbfunc s num_trans _num_trans fI
;            num -> R16
	.even
_num_trans::
	.dbline -1
	.dbline 246
; #include "..\main.h"
; #include "..\io.h"
; #include <iom163.h>
; #ifdef SGJM_RDS
; #include "..\bu1923\bu1923.h"
; #endif
; #define VFD_BUFFER_SIZE			12
; unsigned int g_vfd_grid_buffer[VFD_BUFFER_SIZE];
; #ifdef MORE_THAN_16SEGMENT
; unsigned char g_vfd_grid_ext_buffer[VFD_BUFFER_SIZE];
; #endif
; extern unsigned char display_type,work_mode,led_val;
; extern unsigned int key_buff;
; unsigned int g_ui_timing_cnt;
; 
; #define VFD_LED_MIN     0x0001
; #define VFD_LED_M       0x0002
; #define VFD_LED_SEC		0x0004
; #define VFD_LED_CH		0x0008
; #define VFD_LED_DB		0x0010
; #define VFD_LED_AUTO	0x0020
; #define VFD_LED_CINEMA	0x4000  //cinema dsp
; #define VFD_LED_SLEEP	0x8000
; 
; #define VFD_LED_PLUS	0x4000
; #define VFD_LED_SUB		0x8000
; #define VFD_LED_KHZ		0x4000
; #define VFD_LED_MHZ		0x8000
; #define VFD_LED_COL 	0x4000
; #define VFD_LED_DP		0x8000
; #define VFD_LED_MEMORY	0x4000
; #define VFD_LED_FM	    0x4000
; #define VFD_LED_AM		0x8000
; #define VFD_LED_MUTE	0x4000
; #define VFD_LED_STEREO	0x4000
; #define VFD_LED_TAPE2	0x4000
; #define VFD_LED_SURROUND	0x0001
; #define VFD_LED_EQ		0x0002
; #define VFD_LED_MIC		0x0004
; #define VFD_LED_PRO		0x0008
; #define VFD_LED_DOLBY   0x0010
; #define VFD_LED_AC3		0x0020
; #define VFD_LED_SRS     0x0040
; #define VFD_LED_KEYCON  0x0080
; 
; #define VA				0x0001
; #define VB				0x0002
; #define VH				0x0004
; #define VJ				0x0008
; #define	VK				0x0010
; #define VF				0x0020
; #define VG				0x0040
; #define VM				0x0080
; #define VC				0x0100
; #define VN				0x0200
; #define VP				0x0400
; #define	VR				0x0800
; #define VE				0x1000
; #define VD				0x2000
; 
; #define VFD_digit_zero	VA|VB|VC|VD|VE|VF
; #define VFD_digit_one	VB|VC
; #define VFD_digit_two	VA|VB|VG|VM|VE|VD
; #define VFD_digit_three	VA|VB|VC|VD|VG|VM
; #define VFD_digit_four	VF|VG|VB|VC|VM
; #define VFD_digit_five	VA|VF|VG|VC|VD|VM
; #define VFD_digit_six	VA|VF|VG|VC|VD|VE|VM
; #define VFD_digit_seven	VA|VB|VC
; #define VFD_digit_eight	VA|VB|VC|VD|VE|VF|VG|VM
; #define VFD_digit_nine	VA|VB|VC|VD|VF|VG|VM
; 
; 
; /* VFD Alphabetic Characters */
; 
; #define VFD_alpha_A	VA|VB|VC|VF|VE|VG|VM
; #define VFD_alpha_B	VF|VG|VE|VD|VC|VM
; #define VFD_alpha_C	VA|VF|VE|VD
; #define VFD_alpha_D	VB|VG|VE|VD|VC|VM
; #define VFD_alpha_E	VA|VF|VE|VG|VD|VM
; #define VFD_alpha_F	VA|VF|VG|VE|VM
; #define VFD_alpha_G	VA|VF|VE|VD|VC|VM
; #define VFD_alpha_H	VF|VE|VB|VC|VG|VM
; #define VFD_alpha_I	VJ|VP
; #define VFD_alpha_J	0x0000
; #define VFD_alpha_K	VJ|VP|VK|VN
; #define VFD_alpha_L	VF|VE|VD
; #define VFD_alpha_M	VB|VC|VE|VF|VH|VK
; #define VFD_alpha_N	VF|VE|VH|VN|VB|VC
; #define VFD_alpha_O	VA|VB|VC|VD|VE|VF
; #define VFD_alpha_P	VA|VB|VG|VF|VE|VM
; #define VFD_alpha_R	VA|VB|VG|VF|VE|VM|VN
; #define VFD_alpha_S	VA|VF|VG|VC|VD|VM
; #define VFD_alpha_T	VA|VJ|VP
; #define VFD_alpha_U	VF|VE|VD|VC|VB
; #define VFD_alpha_V	VF|VE|VR|VK
; #define VFD_alpha_W	VF|VE|VR|VN|VC|VB
; #define VFD_alpha_X	VH|VK|VR|VN
; #define VFD_alpha_Y	VH|VK|VP
; #define VFD_alpha_Z	VA|VK|VR|VD
; 
; #define VFD_alpha_aster VH|VJ|VK|VG|VM|VR|VP|VN
; #define VFD_alpha_DASH VD
; #define VFD_alpha_MINUS VG|VM
; #define VFD_alpha_PLUS VJ|VP|VG|VM
; 
; 
; #define LA 0x0080
; #define LB 0x0100
; #define LC 0x0800
; #define LD 0x2000
; #define LE 0x1000
; #define LF 0x0200
; #define LG 0x0400
; 
; #define RA 0x0001
; #define RB 0x0002
; #define RC 0x0010
; #define RD 0x0040
; #define RE 0x0020
; #define RF 0x0004
; #define RG 0x0008
; 
; #define VFD_digit_right_zero	RA|RB|RC|RD|RE|RF
; #define VFD_digit_right_one	RB|RC
; #define VFD_digit_right_two	RA|RB|RG|RE|RD
; #define VFD_digit_right_three	RA|RB|RC|RD|RG
; #define VFD_digit_right_four	RF|RG|RB|RC
; #define VFD_digit_right_five	RA|RF|RG|RC|RD
; #define VFD_digit_right_six	RA|RF|RG|RC|RD|RE
; #define VFD_digit_right_seven	RA|RB|RC
; #define VFD_digit_right_eight	RA|RB|RC|RD|RE|RF|RG
; #define VFD_digit_right_nine	RA|RB|RC|RD|RF|RG
; 
; #define VFD_digit_left_zero	LA|LB|LC|LD|LE|LF
; #define VFD_digit_left_one	LB|LC
; #define VFD_digit_left_two	LA|LB|LG|LE|LD
; #define VFD_digit_left_three	LA|LB|LC|LD|LG
; #define VFD_digit_left_four	LF|LG|LB|LC
; #define VFD_digit_left_five	LA|LF|LG|LC|LD
; #define VFD_digit_left_six	LA|LF|LG|LC|LD|LE
; #define VFD_digit_left_seven	LA|LB|LC
; #define VFD_digit_left_eight	LA|LB|LC|LD|LE|LF|LG
; #define VFD_digit_left_nine	LA|LB|LC|LD|LF|LG
; 
; 
; #define MAX_LETTER	8
; 
; #define	G1	0x00
; #define	G2	0x01
; #define	G3	0x02
; #define	G4	0x03
; #define	G5	0x04
; #define	G6	0x05
; #define	G7	0x06
; #define	G8	0x07
; #define	G9	0x08
; #define	G10	0x09
; #define	G11	0x0a
; 
; const static unsigned int num_xlate[10] = 
; {
; 	VFD_digit_zero,
; 	VFD_digit_one,	    
; 	VFD_digit_two,		
; 	VFD_digit_three,
; 	VFD_digit_four,	
; 	VFD_digit_five,	
; 	VFD_digit_six,		
; 	VFD_digit_seven,
; 	VFD_digit_eight,	
; 	VFD_digit_nine
; };
; const static unsigned int num_xlate_left[10] = {
; 	VFD_digit_left_zero,
; 	VFD_digit_left_one,	    
; 	VFD_digit_left_two,		
; 	VFD_digit_left_three,
; 	VFD_digit_left_four,	
; 	VFD_digit_left_five,	
; 	VFD_digit_left_six,		
; 	VFD_digit_left_seven,
; 	VFD_digit_left_eight,	
; 	VFD_digit_left_nine
; };
; 
; const static unsigned num_xlate_right[10] = {
; 	VFD_digit_right_zero,
; 	VFD_digit_right_one,	    
; 	VFD_digit_right_two,		
; 	VFD_digit_right_three,
; 	VFD_digit_right_four,	
; 	VFD_digit_right_five,	
; 	VFD_digit_right_six,		
; 	VFD_digit_right_seven,
; 	VFD_digit_right_eight,	
; 	VFD_digit_right_nine
; };	
; 
; 
; 
; const static unsigned int vfd_alpha[] = {
; VFD_alpha_A,
; VFD_alpha_B,
; VFD_alpha_C,	
; VFD_alpha_D,	
; VFD_alpha_E,	
; VFD_alpha_F,	
; VFD_alpha_G,	
; VFD_alpha_H,	
; VFD_alpha_I,	
; VFD_alpha_J,
; VFD_alpha_K,
; VFD_alpha_L,
; VFD_alpha_M,
; VFD_alpha_N,	
; VFD_alpha_O,	
; VFD_alpha_P,	
; 0x0000,
; VFD_alpha_R,	
; VFD_alpha_S,	
; VFD_alpha_T,	
; VFD_alpha_U,	
; VFD_alpha_V,	
; VFD_alpha_W,	
; VFD_alpha_X,	
; VFD_alpha_Y,	
; VFD_alpha_Z,	
; };
; unsigned char Set_String(unsigned char *str);
; extern unsigned char Mchvol,Bassvol,Treblevol,Balanceval,Loudnessval;
; unsigned char *err_msg,blink_time;
; extern unsigned int radio_count,freq;
; extern unsigned char is_autosearching;
; extern unsigned char amfm_flag,g_ui_tmp_msg_cnt,station_no;
; #ifdef SGJM_RDS
; extern unsigned char rds_status;
; extern unsigned char pty_is_searching;
; extern unsigned char rds_dis_buffer[65];
; extern unsigned char rds_dis_string[65];
; extern unsigned char rds_display_type;
; #endif
; extern unsigned char muted;
; unsigned int info;
; extern unsigned char hm_flag,time_val[];
; unsigned int num_trans(unsigned char num)
; {
	.dbline 247
;   return num_xlate[num];
	ldi R24,<_num_xlate
	ldi R25,>_num_xlate
	mov R30,R16
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R16,Z+
	lpm R17,Z
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r num 16 c
	.dbfunc s display_digit _display_digit fI
;             r2 -> R20
;              r -> R22
;            num -> R10,R11
	.even
_display_digit::
	xcall push_gset3
	movw R10,R16
	.dbline -1
	.dbline 250
; }
; void display_digit(unsigned int num)
; {
	.dbline 252
;   unsigned char r,r2;
;   r = 2;
	ldi R22,2
L4:
	.dbline 254
;   do
;   {
	.dbline 255
;   			r2 = num%10;
	ldi R18,10
	ldi R19,0
	movw R16,R10
	xcall mod16u
	movw R20,R16
	.dbline 256
;   			num /= 10;
	ldi R18,10
	ldi R19,0
	movw R16,R10
	xcall div16u
	movw R10,R16
	.dbline 257
;   			g_vfd_grid_buffer[r] = num_trans(r2);
	mov R16,R20
	xcall _num_trans
	movw R2,R16
	ldi R24,<_g_vfd_grid_buffer
	ldi R25,>_g_vfd_grid_buffer
	mov R30,R22
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	std z+1,R3
	.dbline 258
;   			r++;
	inc R22
	.dbline 259
L5:
	.dbline 259
;   }while(num);
	tst R10
	brne L4
	tst R11
	brne L4
	.dbline -2
	.dbline 260
; }
L3:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r r2 20 c
	.dbsym r r 22 c
	.dbsym r num 10 i
	.dbfunc s tuner_display _tuner_display fI
	.area func_lit(rom, con, rel)
L125:
	.word `L14
	.word `L30
	.word `L34
	.word `L95
	.word `L106
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\AT980\vfd.c
	.area func_lit(rom, con, rel)
L94:
	.word `L59
	.word `L61
	.word `L63
	.word `L65
	.word `L67
	.word `L69
	.word `L71
	.word `L73
	.word `L75
	.word `L77
	.word `L79
	.word `L81
	.word `L83
	.word `L85
	.word `L87
	.word `L89
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L55
	.word `L91
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\AT980\vfd.c
;              r -> R22
;             r2 -> R20
	.even
_tuner_display::
	xcall push_gset2
	.dbline -1
	.dbline 263
; 
; void tuner_display(void)
; {
	.dbline 267
; 
;   unsigned char r,r2;
;   
;   switch(display_type)
	lds R20,_display_type
	clr R21
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge X2
	xjmp L8
X2:
	ldi R24,4
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L124
	ldi R24,<L125
	ldi R25,>L125
	movw R30,R20
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
L124:
	cpi R20,14
	ldi R30,0
	cpc R21,R30
	brne X3
	xjmp L116
X3:
	cpi R20,15
	ldi R30,0
	cpc R21,R30
	breq L11
	xjmp L8
X0:
	.dbline 268
;   {
L11:
	.dbline 272
; 
; 	case DISPLAY_DIGIT:
; 
;   		if(blink_time<3) 
	lds R24,_blink_time
	cpi R24,3
	brlo X4
	xjmp L9
X4:
	.dbline 273
;   		  display_digit(radio_count);
	lds R17,_radio_count+1
	lds R16,_radio_count
	xcall _display_digit
	.dbline 274
; 		break;
	xjmp L9
L14:
	.dbline 278
; 
; 	case DIS_FREQUENCY:
; 		
; 		display_digit(freq);
	lds R17,_freq+1
	lds R16,_freq
	xcall _display_digit
	.dbline 279
; 		if(g_ui_tmp_msg_cnt)
	lds R2,_g_ui_tmp_msg_cnt
	tst R2
	breq L15
	.dbline 280
;   		{
	.dbline 281
;   			r = station_no;
	lds R22,_station_no
	.dbline 282
; 			r++;
	inc R22
	.dbline 283
; 			r2 =r/10;
	ldi R17,10
	mov R16,R22
	xcall div8u
	mov R20,R16
	.dbline 284
; 			g_vfd_grid_buffer[9] = num_trans(r2);
	xcall _num_trans
	movw R2,R16
	sts _g_vfd_grid_buffer+18+1,R3
	sts _g_vfd_grid_buffer+18,R2
	.dbline 285
;   			r2 =r%10;
	ldi R17,10
	mov R16,R22
	xcall mod8u
	mov R20,R16
	.dbline 286
;   			g_vfd_grid_buffer[8] = num_trans(r2);
	xcall _num_trans
	movw R2,R16
	sts _g_vfd_grid_buffer+16+1,R3
	sts _g_vfd_grid_buffer+16,R2
	.dbline 287
;   		}
	xjmp L16
L15:
	.dbline 289
;   		else
;   		{
	.dbline 290
;   			if(amfm_flag)
	lds R2,_amfm_flag
	tst R2
	breq L19
	.dbline 291
;   			{
	.dbline 292
;   				g_vfd_grid_buffer[9] = VFD_alpha_A;
	ldi R24,4579
	ldi R25,17
	sts _g_vfd_grid_buffer+18+1,R25
	sts _g_vfd_grid_buffer+18,R24
	.dbline 293
;   				g_vfd_grid_buffer[8] = VFD_alpha_M;
	ldi R24,54
	sts _g_vfd_grid_buffer+16+1,R25
	sts _g_vfd_grid_buffer+16,R24
	.dbline 295
;   				
; 			}
	xjmp L20
L19:
	.dbline 297
;   			else
;   			{
	.dbline 298
;   				g_vfd_grid_buffer[9] = VFD_alpha_F;
	ldi R24,4321
	ldi R25,16
	sts _g_vfd_grid_buffer+18+1,R25
	sts _g_vfd_grid_buffer+18,R24
	.dbline 299
; 				g_vfd_grid_buffer[8] = VFD_alpha_M;
	ldi R24,4406
	ldi R25,17
	sts _g_vfd_grid_buffer+16+1,R25
	sts _g_vfd_grid_buffer+16,R24
	.dbline 301
L20:
	.dbline 301
;   				
; 			};
	.dbline 302
L16:
	.dbline 302
;   		};
	.dbline 303
; 		if(amfm_flag)
	lds R2,_amfm_flag
	tst R2
	breq L25
	.dbline 304
; 		  g_vfd_grid_buffer[2] |= VFD_LED_KHZ;
	lds R25,_g_vfd_grid_buffer+4+1
	lds R24,_g_vfd_grid_buffer+4
	ori R25,64
	sts _g_vfd_grid_buffer+4+1,R25
	sts _g_vfd_grid_buffer+4,R24
	xjmp L9
L25:
	.dbline 306
; 		else
; 		{
	.dbline 307
; 		 	g_vfd_grid_buffer[2] |= VFD_LED_MHZ;
	lds R25,_g_vfd_grid_buffer+4+1
	lds R24,_g_vfd_grid_buffer+4
	ori R25,128
	sts _g_vfd_grid_buffer+4+1,R25
	sts _g_vfd_grid_buffer+4,R24
	.dbline 308
;   			g_vfd_grid_buffer[3] |= VFD_LED_DP;
	lds R25,_g_vfd_grid_buffer+6+1
	lds R24,_g_vfd_grid_buffer+6
	ori R25,128
	sts _g_vfd_grid_buffer+6+1,R25
	sts _g_vfd_grid_buffer+6,R24
	.dbline 309
;   		};
	.dbline 309
	.dbline 310
; 		break;
	xjmp L9
L30:
	.dbline 314
; 	#ifdef SGJM_RDS
; 	case DIS_PS_NAME:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -