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

📄 fp_lut.s

📁 sunplus spca514 cdmp3 源码
💻 S
字号:
	.module fp_lut.c
	.area data(ram, con, rel)
_repeat::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
	.dbsym s repeat _repeat c
	.area lit(rom, con, rel)
_repeat_key::
	.word 2
	.word 0
	.dbsym s repeat_key _repeat_key A[4:2]i
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
	.dbfunc s is_repeat_ui_key _is_repeat_ui_key fI
;              i -> R20
;          value -> R16,R17
	.even
_is_repeat_ui_key::
	xcall push_gset1
	.dbline -1
	.dbline 15
; #include "nec_fp.h"
; #include "key.h"
; #include "main.h"
; extern unsigned char work_mode;
; extern unsigned char p_keycode[BYTES_USED_TO_SCANKEY];
; extern unsigned int key_buff,dvd_key;
; unsigned char  repeat=0;
; #define REPEAT_DELAY 3
; #define REPEAT_KEY_CNT  2
; const unsigned int repeat_key[REPEAT_KEY_CNT]=
; {
;  IRKC_VOLUME_UP,IRKC_VOLUME_DOWN
; };
; unsigned char is_repeat_ui_key(unsigned int value)
; {
	.dbline 17
;  unsigned char i;
;  for(i=0;i<REPEAT_KEY_CNT;i++)
	clr R20
	xjmp L5
L2:
	.dbline 18
;  {
	.dbline 19
;   if(value==repeat_key[i])
	ldi R24,<_repeat_key
	ldi R25,>_repeat_key
	mov R30,R20
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	cp R16,R30
	cpc R17,R31
	brne L6
	.dbline 20
;     return 1;
	ldi R16,1
	ldi R17,0
	xjmp L1
L6:
	.dbline 21
L3:
	.dbline 17
	inc R20
L5:
	.dbline 17
	cpi R20,2
	brlo L2
	.dbline 22
;  }
;  return 0;  						 
	clr R16
	clr R17
	.dbline -2
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r value 16 i
	.area data(ram, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
L9:
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
L10:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
L11:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
	.area text(rom, con, rel)
	.dbfile D:\avrmcu\AT980\fp_lut.c
	.dbfunc s fp_key_scan2 _fp_key_scan2 fI
	.dbsym s longkeyflag L11 c
	.dbsym s key_time L10 c
	.dbsym s LastFPKey L9 i
;     Fp_KeyCode -> R20,R21
;              i -> R22,R23
	.even
_fp_key_scan2::
	xcall push_gset2
	.dbline -1
	.dbline 26
; }
; 
; void fp_key_scan2(void)
; {
	.dbline 29
; 	unsigned int i;
; 	static unsigned int  LastFPKey= 0;
; 	unsigned int  Fp_KeyCode = 0;
	clr R20
	clr R21
	.dbline 33
; 	static unsigned char key_time=0,longkeyflag=0;
; 	
; 	
; 	VFD_LL_ReadKeyScan();
	xcall _VFD_LL_ReadKeyScan
	.dbline 34
; 	Fp_KeyCode = 0;
	.dbline 35
; 	for (i=0; i<BYTES_USED_TO_SCANKEY; i++)	
	clr R22
	clr R23
	xjmp L15
L12:
	.dbline 36
; 		if (p_keycode[i])  
	ldi R24,<_p_keycode
	ldi R25,>_p_keycode
	movw R30,R22
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	breq L16
	.dbline 37
; 			Fp_KeyCode = ((unsigned int)p_keycode[i] |(i+1)<<8);
	movw R30,R22
	add R30,R24
	adc R31,R25
	ldd R20,z+0
	clr R21
	movw R24,R22
	adiw R24,1
	mov R25,R24
	clr R24
	or R20,R24
	or R21,R25
L16:
L13:
	.dbline 35
	subi R22,255  ; offset = 1
	sbci R23,255
L15:
	.dbline 35
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brlo L12
	.dbline 39
; 
; 	if(Fp_KeyCode==272) Fp_KeyCode = 0;
	cpi R20,16
	ldi R30,1
	cpc R21,R30
	brne L18
	.dbline 39
	clr R20
	clr R21
L18:
	.dbline 40
; 	if(Fp_KeyCode ==0)
	cpi R20,0
	cpc R20,R21
	brne L20
	.dbline 41
; 	{
	.dbline 42
; 		repeat = 0;
	clr R2
	sts _repeat,R2
	.dbline 45
; 		//Fp_KeyCode =LastFPKey;//temp_FpKey;
; 		//LastFPKey = 0;
; 		if(work_mode<2)
	lds R24,_work_mode
	cpi R24,2
	brsh L22
	.dbline 46
; 		{
	.dbline 47
; 		 if((LastFPKey == FPKC_NEXT)||(LastFPKey == FPKC_PREV))
	lds R25,L9+1
	lds R24,L9
	cpi R24,32
	ldi R30,1
	cpc R25,R30
	breq L26
	cpi R24,48
	ldi R30,1
	cpc R25,R30
	brne L24
L26:
	.dbline 48
; 		 {
	.dbline 49
; 		  if(longkeyflag)
	lds R2,L11
	tst R2
	breq L27
	.dbline 50
; 		  {
	.dbline 51
; 		    longkeyflag = 0;
	clr R2
	sts L11,R2
	.dbline 52
; 			if(work_mode==DVD_MODE)
	lds R2,_work_mode
	tst R2
	brne L28
	.dbline 53
; 			  Fp_KeyCode = FPKC_STOPSERACH;
	ldi R20,600
	ldi R21,2
	.dbline 54
; 		  }
	xjmp L28
L27:
	.dbline 56
; 		  else
; 		  {
	.dbline 57
; 			Fp_KeyCode = LastFPKey;
	lds R21,L9+1
	lds R20,L9
	.dbline 58
; 		  }
L28:
	.dbline 59
; 		 }
L24:
	.dbline 60
; 		}
L22:
	.dbline 62
; 		
; 		LastFPKey = 0;
	clr R2
	clr R3
	sts L9+1,R3
	sts L9,R2
	.dbline 64
; 	
; 	}
	xjmp L21
L20:
	.dbline 65
; 	else if (LastFPKey == Fp_KeyCode)
	lds R3,L9+1
	lds R2,L9
	cp R2,R20
	cpc R3,R21
	breq X0
	xjmp L31
X0:
	.dbline 66
; 	{
	.dbline 68
; 			/*Not send eject or power key again if it's not released*/
; 		if(is_repeat_ui_key(Fp_KeyCode))
	movw R16,R20
	xcall _is_repeat_ui_key
	movw R2,R16
	tst R2
	breq L33
	.dbline 69
; 		{
	.dbline 70
; 			repeat = repeat%REPEAT_DELAY;
	ldi R17,3
	lds R16,_repeat
	xcall mod8u
	sts _repeat,R16
	.dbline 71
; 			if (repeat != 0)
	mov R2,R16
	tst R2
	breq L34
	.dbline 72
; 				Fp_KeyCode = 0;
	clr R20
	clr R21
	.dbline 73
; 		}
	xjmp L34
L33:
	.dbline 75
; 		else
; 			Fp_KeyCode = 0;
	clr R20
	clr R21
L34:
	.dbline 78
; 		
; 	
; 		if(work_mode <2)
	lds R24,_work_mode
	cpi R24,2
	brlo X1
	xjmp L32
X1:
	.dbline 79
; 		{
	.dbline 80
; 			if(key_time>50)
	ldi R24,50
	lds R2,L10
	cp R24,R2
	brsh L39
	.dbline 81
; 			{
	.dbline 82
; 				if(!longkeyflag)
	lds R2,L11
	tst R2
	brne L32
	.dbline 83
; 				{
	.dbline 84
; 					if(LastFPKey == FPKC_PREV)
	lds R25,L9+1
	lds R24,L9
	cpi R24,48
	ldi R30,1
	cpc R25,R30
	brne L43
	.dbline 85
; 					{
	.dbline 86
; 						Fp_KeyCode = FPKC_TUNING_DOWN;
	ldi R20,606
	ldi R21,2
	.dbline 87
; 					}
	xjmp L44
L43:
	.dbline 88
; 					else if(LastFPKey == FPKC_NEXT)
	lds R25,L9+1
	lds R24,L9
	cpi R24,32
	ldi R30,1
	cpc R25,R30
	brne L45
	.dbline 89
; 					{
	.dbline 90
; 						Fp_KeyCode = FPKC_TUNING_UP;
	ldi R20,605
	ldi R21,2
	.dbline 91
; 					}
L45:
L44:
	.dbline 92
; 					longkeyflag = 1;
	ldi R24,1
	sts L11,R24
	.dbline 93
; 				}
	.dbline 95
; 			
; 			}
	xjmp L32
L39:
	.dbline 97
; 			else
; 			 key_time++;
	lds R24,L10
	subi R24,255	; addi 1
	sts L10,R24
	.dbline 99
; 			
; 		}
	.dbline 101
; 		
; 	}
	xjmp L32
L31:
	.dbline 103
; 	else
; 	{
	.dbline 104
; 		repeat = 0;
	clr R2
	sts _repeat,R2
	.dbline 105
; 		longkeyflag = 0;
	sts L11,R2
	.dbline 106
; 		key_time = 0;
	sts L10,R2
	.dbline 108
; 		//if(Fp_keyCode!=
; 		LastFPKey = Fp_KeyCode;
	sts L9+1,R21
	sts L9,R20
	.dbline 109
; 		if((work_mode<2)&&((LastFPKey == FPKC_NEXT)||(LastFPKey == FPKC_PREV)))
	lds R24,_work_mode
	cpi R24,2
	brsh L47
	movw R24,R20
	cpi R24,32
	ldi R30,1
	cpc R25,R30
	breq L49
	cpi R24,48
	ldi R30,1
	cpc R25,R30
	brne L47
L49:
	.dbline 110
; 			Fp_KeyCode = 0;
	clr R20
	clr R21
L47:
	.dbline 111
; 	}
L32:
L21:
	.dbline 113
	cpi R20,0
	cpc R20,R21
	breq L50
	.dbline 114
	.dbline 115
	sts _key_buff+1,R21
	sts _key_buff,R20
	.dbline 116
L50:
	.dbline -2
	.dbline 117
;    
;    	if(Fp_KeyCode!=0)
; 	{
; 	  key_buff = Fp_KeyCode;
; 	}
; }
L8:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Fp_KeyCode 20 i
	.dbsym r i 22 i

⌨️ 快捷键说明

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