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

📄 keys1s8.asm

📁 TI公司的DSP(LF2407A)编写的有霍尔位置传感器的无刷直流电机控制程序,内含子程序说明
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -i../src -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include keys1s8.c C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.if C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.asm C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.tmp 
	.port
	.file	"keys1s8.c"
	.file	"../src\regs240x.h"
	.globl	_portffff
	.globl	_portff0f
	.globl	_port0
	.globl	_port1
	.globl	_port2
	.globl	_port3
	.globl	_port4
	.file	"keys1s8.c"
	.text

	.sym	_KeysIOinit,_KeysIOinit,32,2,0
	.globl	_KeysIOinit

	.func	3
;>>>> 	void KeysIOinit()
******************************************************
* FUNCTION DEF : _KeysIOinit
******************************************************
_KeysIOinit:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 	    MCRA=MCRA&0x00c7;		     	// IOPA3,IOPA4,IOPA5,IOPB端口配置为一般的I/O功能,	TMS320LF240x的
;>>>> 	                                    // 端口均为8位,MCRA为16位因此控制了IOPA和IOPB的设置
	LARK	AR3,28816
	LACK	199
	AND	* 
	SACL	* 
	.line	5
;>>>> 	    PBDATDIR=0x00FF;	     		// IOPB端口设置为输入方式 
	LACK	255
	ADRK	10
	SACL	* 
	.line	6
;>>>> 	    PADATDIR=PADATDIR|0x0FF38;		
	LACK	65336
	SBRK	2
	OR	* 
	SACL	* 
	.line	7
;>>>> 		PADATDIR=PADATDIR&0x0FF00;      //IOPA3,IOPA4,IOPA5 设置为输出方式,且LEDCLK=1
	LACK	65280
	AND	* 
	SACL	* 
	.line	8
;>>>> 	    PADATDIR=PADATDIR|0x0FF10;      // IOPA3,IOPA4,IOPA5 设置为输出方式,选通KEYC;
	LACK	65296
	OR	* 
	SACL	* ,AR1
EPI0_1:
	.line	9
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	11,000000000H,1

	.sym	_Keys1s8,_Keys1s8,36,2,0
	.globl	_Keys1s8

	.func	13
;>>>> 	int Keys1s8(void)
******************************************************
* FUNCTION DEF : _Keys1s8
******************************************************
_Keys1s8:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_i,1,15,1,32
	.line	3
;>>>> 	    unsigned long int i = 0;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	* ,AR1
	.line	4
;>>>> 	    KeysIOinit();	    // I/O初始化子程序	
	CALL	_KeysIOinit
	.line	6
;>>>> 	    for (i=0; i<10; i++){}               //延时
;>>>> 	//判是否按下键
	LACK	0
	MAR	* ,AR2
	MAR	*-
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	10
	SPAC
	BNC	L2
	BZ	L2
	MAR	*-
L1:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	10
	SPAC
	BZ	$+4
	BC	L1
L2:
	.line	8
;>>>> 	    if ((PBDATDIR&0x00FF)!=0x00ff)
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	255
	BZ	L3
	.line	10
;>>>> 	    	for (i=0; i<1000; i++){}        //延时消抖
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L5
	BZ	L5
	MAR	*-
L4:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L4
L5:
	.line	12
;>>>> 	        if ((PBDATDIR&0x00FF)==0x00FE)
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	254
	BNZ	L6
	.line	14
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00FE) //判S1是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	254
	BNZ	L8
	MAR	* ,AR2
L7:
	.line	15
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L10
	BZ	L10
	MAR	*-
L9:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L9
L10:
	.line	14
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	254
	BZ	L7
L8:
	.line	16
;>>>> 				return (1);	  //若按下,返回1		      
	LACK	1
	B	EPI0_2
L6:
	.line	18
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x00Fd)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	253
	BNZ	L11
	.line	20
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00Fd) //判S2是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	253
	BNZ	L13
	MAR	* ,AR2
L12:
	.line	21
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L15
	BZ	L15
	MAR	*-
L14:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L14
L15:
	.line	20
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	253
	BZ	L12
L13:
	.line	22
;>>>> 				return (2);	  //若按下,返回2		      
	LACK	2
	B	EPI0_2
L11:
	.line	24
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x00Fb)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	251
	BNZ	L16
	.line	26
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00Fb) //判S3是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	251
	BNZ	L18
	MAR	* ,AR2
L17:
	.line	27
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L20
	BZ	L20
	MAR	*-
L19:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L19
L20:
	.line	26
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	251
	BZ	L17
L18:
	.line	28
;>>>> 				return (3);	  //若按下,返回3		      
	LACK	3
	B	EPI0_2
L16:
	.line	30
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x00F7)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	247
	BNZ	L21
	.line	32
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00F7) //判S4是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	247
	BNZ	L23
	MAR	* ,AR2
L22:
	.line	33
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L25
	BZ	L25
	MAR	*-
L24:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L24
L25:
	.line	32
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	247
	BZ	L22
L23:
	.line	34
;>>>> 				return (4);	  //若按下,返回4	      
	LACK	4
	B	EPI0_2
L21:
	.line	36
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x00eF)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	239
	BNZ	L26
	.line	38
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00EF) //判S5是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	239
	BNZ	L28
	MAR	* ,AR2
L27:
	.line	39
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L30
	BZ	L30
	MAR	*-
L29:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L29
L30:
	.line	38
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	239
	BZ	L27
L28:
	.line	40
;>>>> 				return (5);	  //若按下,返回5		      
	LACK	5
	B	EPI0_2
L26:
	.line	42
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x00dF)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	223
	BNZ	L31
	.line	44
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00dF) //判S6是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	223
	BNZ	L33
	MAR	* ,AR2
L32:
	.line	45
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L35
	BZ	L35
	MAR	*-
L34:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L34
L35:
	.line	44
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	223
	BZ	L32
L33:
	.line	46
;>>>> 				return (6);	  //若按下,返回6		      
	LACK	6
	B	EPI0_2
L31:
	.line	48
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x00bF)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	191
	BNZ	L36
	.line	50
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x00bF) //判S7是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	191
	BNZ	L38
	MAR	* ,AR2
L37:
	.line	51
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L40
	BZ	L40
	MAR	*-
L39:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L39
L40:
	.line	50
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	191
	BZ	L37
L38:
	.line	52
;>>>> 				return (7);	  //若按下,返回7	      
	LACK	7
	B	EPI0_2
L36:
	.line	54
;>>>> 	    	if ((PBDATDIR&0x00FF)==0x007F)
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	127
	BNZ	L3
	.line	56
;>>>> 	    		while ((PBDATDIR&0x00FF)==0x007F) //判S8是否送开
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	LAC	* 
	SUBK	127
	BNZ	L43
	MAR	* ,AR2
L42:
	.line	57
;>>>> 					for (i=0; i<1000; i++){}     
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	1000
	SPAC
	BNC	L45
	BZ	L45
	MAR	*-
L44:
	ZALS	*+
	ADDH	*-
	ADDK	1
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	*-
	LACK	1000
	SPAC
	BZ	$+4
	BC	L44
L45:
	.line	56
	LARK	AR3,28826
	LACK	255
	MAR	* ,AR3
	AND	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	SUBK	127
	BZ	L42
L43:
	.line	58
;>>>> 				return (8);	  //若按下,返回8	      
	LACK	8
	B	EPI0_2
L3:
	.line	62
;>>>> 	   return (0);
	LACK	0
EPI0_2:
	.line	63
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	75,000000000H,3
	.end

⌨️ 快捷键说明

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