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

📄 key.asm

📁 DSP部分功能测试 串口
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include key.c C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.if C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.asm C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.tmp 
	.port
	.bss	_ucinput,14,1
	.file	"key.c"
	.globl	_port4000
	.globl	_ucinput
	.globl	_keyscan
	.text

	.sym	_keyscan,_keyscan,36,2,0
	.globl	_keyscan

	.func	16
;>>>> 	int keyscan()
;>>>> 		int key_code,i;
******************************************************
* FUNCTION DEF : _keyscan
******************************************************
_keyscan:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_key_code,1,4,1,16
	.sym	_i,2,4,1,16
	.line	4
;>>>> 		key_code = 0xffff;
	LARK	AR2,1
	MAR	*0+
	SPLK	#-1,* ,AR0
	.line	5
;>>>> 		key_code = INPUT ;
	IN	* ,04000h
	LAC	* ,AR2
	SACL	* 
	.line	6
;>>>> 		if((key_code & 0x33ff) != 0x33ff)
	LACK	13311
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	13311
	BZ	L1
	.line	8
;>>>> 			delay(0x1f);
	LACK	31
	SACL	*+
	CALL	_delay
	MAR	*-
L1:
	.line	10
;>>>> 		key_code = INPUT;
;>>>> 	//	if(key_code != 0xffff)
	MAR	* ,AR0
	IN	* ,04000h
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	.line	13
;>>>> 			for(i=0;i<14;i++)
	LACK	0
	SACL	* 
	SSXM
	LAC	* 
	SUBK	14
	BGEZ	L3
L2:
	.line	15
;>>>> 				if(!((key_code>>i) & 0x0001))
	LAC	*-,AR0
	CMPL
	SACL	* 
	LT	* ,AR2
	LACT	* 
	ANDK	1,15
	ANDK	0FFFFh,15
	SFL
	BNZ	L4
	.line	16
;>>>> 					ucinput[i] = 0x1;
;>>>> 				else 
	MAR	*+
	LAC	* ,AR0
	RSXM
	ADLK	_ucinput+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	1
	SACL	* 
	B	L5
L4:
	.line	18
;>>>> 					ucinput[i] = 0x0;
	MAR	*+
	LAC	* ,AR0
	RSXM
	ADLK	_ucinput+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* 
L5:
	.line	13
	MAR	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	14
	BLZ	L2
L3:
	.line	23
;>>>> 		return(key_code);
	MAR	*-
	LAC	* 
EPI0_1:
	.line	24
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	39,000000000H,3

	.sym	_keyserve,_keyserve,36,2,0
	.globl	_keyserve

	.func	46
;>>>> 	int keyserve()
;>>>> 		int key_code,i;
******************************************************
* FUNCTION DEF : _keyserve
******************************************************
_keyserve:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+

	.sym	_key_code,1,4,1,16
	.sym	_i,2,4,1,16
	.line	4
;>>>> 		key_code = ~keyscan();
	CALL	_keyscan
	CMPL
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	.line	5
;>>>> 		for(i=0;i<14;i++)
;>>>> 		switch(key_code)
;>>>> 			case 0x0001 :
;>>>> 				//I0.0	
	LACK	0
	SACL	* 
	SSXM
	LAC	* 
	SUBK	14
	BGEZ	L8
L6:
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	* 
	SUBK	14
	BLZ	L6
	.line	15
;>>>> 			break;
;>>>> 			case 0x0002 :
;>>>> 				//I0.1
	.line	21
;>>>> 			break;
;>>>> 			case 0x0004 :
;>>>> 				//I0.2
	.line	27
;>>>> 			break;
;>>>> 			case 0x0008 :
;>>>> 				//I0.3
	.line	33
;>>>> 			break;
;>>>> 			case 0x0010 :
;>>>> 				//I0.4
	.line	39
;>>>> 			break;
;>>>> 			case 0x0020 :
;>>>> 				//I0.5
	.line	45
;>>>> 			break;
;>>>> 			case 0x0040 :
;>>>> 				//I0.6
	.line	51
;>>>> 			break;
;>>>> 			case 0x0080 :
;>>>> 				//I0.7
	.line	57
;>>>> 			break;
;>>>> 			case 0x0100 :
	.line	62
;>>>> 			break;
;>>>> 			default :
;>>>> 			;
L8:
	.line	9
	MAR	*-
	LAC	* 
	SUBK	1
	BZ	L10
	SUBK	1
	BZ	L10
	SUBK	2
	BZ	L10
	SUBK	4
	BZ	L10
	SUBK	8
	BZ	L10
	SUBK	16
	BZ	L10
	SUBK	32
	BZ	L10
	SUBK	64
	BZ	L10
	SUBK	128
L10:
EPI0_2:
	.line	70
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	115,000000000H,3

	.sym	_ucinput,_ucinput,60,2,224,,14
	.globl	_ucinput
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	_delay
	.end

⌨️ 快捷键说明

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