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

📄 lcd.asm

📁 TI公司的DSP(LF2407A)编写的有霍尔位置传感器的无刷直流电机控制程序,内含子程序说明
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	.line	9
;>>>> 	  PBDATDIR=PBDATDIR&0x00FF;				        //IOPB口为输入
	LARK	AR3,28826
	LACK	255
	AND	* 
	SACL	* ,AR2
	.line	10
;>>>> 	  if(E==1)  PADATDIR=0x0FF18;           		//E1=1
	LARK	AR2,-3+LF7
	MAR	*0+
	LAC	* 
	SUBK	1
	BNZ	L29
	MAR	* ,AR3
	SBRK	2
	SPLK	#-232,* 
	B	L30
L29:
	.line	11
;>>>> 	    else    PADATDIR=0x0FF20;					//E1=0
	MAR	* ,AR3
	SBRK	2
	SPLK	#-224,* 
L30:
	.line	12
;>>>> 	   PFDATDIR=(PFDATDIR|0x0018)&0x0fffb;// LCD_RW = 1;
;>>>> 						//LCD_DI = 0;
;>>>> 						//LCD_E = 1;
	LACK	24
	SBRK	2
	OR	* 
	ANDK	65531
	SACL	* ,AR2
	.line	15
;>>>> 		for(i=0; i<2; i++){}
	LACK	0
	ADRK	5-LF7
	SACL	* 
	LAC	* 
	SUBK	2
	BGEZ	L32
L31:
	LAC	* 
	ADDK	1
	SACL	* 
	LAC	* 
	SUBK	2
	BLZ	L31
L32:
	.line	16
;>>>> 		PFDATDIR=PFDATDIR&0x0FFef; 			    	//LCD_E = 0;
	LARK	AR3,28822
	LACK	65519
	MAR	* ,AR3
	AND	* 
	SACL	* 
	.line	17
;>>>> 	     E1FLAG=PBDATDIR&0x0020;				    // 读液晶状态
	LACK	32
	ADRK	4
	AND	* ,AR2
	MAR	*-
	SACL	* 
	.line	18
;>>>> 	      if(E1FLAG==0x0020) break;  		        //如液晶关闭,则退出循环
	LAC	* 
	SUBK	32
	BZ	L28
	.line	20
	SBRK	4-LF7
	B	L27
L28:
EPI0_7:
	.line	21
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	180,000000000H,3

	.sym	_LCD1INIT,_LCD1INIT,32,2,0
	.globl	_LCD1INIT

	.func	184
;>>>> 	void LCD1INIT(int E)
******************************************************
* FUNCTION DEF : _LCD1INIT
******************************************************
_LCD1INIT:

LF8	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR2

	.sym	_E,-3+LF8,4,9,16
	.line	2
	.line	3
;>>>> 	  DISOFF1(E);						              //关显示E1
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	CALL	_DISOFF1
	MAR	*-,AR2
	.line	4
;>>>> 	  TRANS1(0x0A4,E);					              //不静态显示驱动
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	164
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	5
;>>>> 	  TRANS1(0x0A9,E);					              //占空比为1/32
	MAR	* ,AR2
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	169
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	6
;>>>> 	  TRANS1(0x0E2,E);					              //复位
	MAR	* ,AR2
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	226
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	7
;>>>> 	  TRANS1(0x0A0,E);					              //ADC选择正常输出
	MAR	* ,AR2
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	160
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	8
;>>>> 	  CLEAR1(E);						              //清屏
	MAR	* ,AR2
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	CALL	_CLEAR1
	MAR	*-,AR2
	.line	9
;>>>> 	  DISP1(E);					    	              //开显示
	LARK	AR2,-3+LF8
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	CALL	_DISP1
	MAR	*-
EPI0_8:
	.line	11
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	194,000000000H,1

	.sym	_DISPLAY1,_DISPLAY1,36,2,0
	.globl	_DISPLAY1

	.func	198
;>>>> 	DISPLAY1(n,m,E,PAGADD,Yaddress)
;>>>> 	int  n,PAGADD,Yaddress,E;	                 	 // 定义所需要的局部变量 
******************************************************
* FUNCTION DEF : _DISPLAY1
******************************************************
_DISPLAY1:

LF9	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_n,-3+LF9,4,9,16
	.sym	_m,-4+LF9,4,9,16
	.sym	_E,-5+LF9,4,9,16
	.sym	_PAGADD,-6+LF9,4,9,16
	.sym	_Yaddress,-7+LF9,4,9,16
	.sym	_K,1,4,1,16
	.sym	_TEMP,2,2,1,16
	.line	3
;>>>> 	  int K;
;>>>> 	  char TEMP;
	.line	6
;>>>> 	  TRANS1(0x0C0,E);				                 // 从第0行开始显示 
	LARK	AR2,-5+LF9
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	192
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	7
;>>>> 	  TRANS1(PAGADD,E);				                 // 送需要显示的页地址 
	MAR	* ,AR2
	LARK	AR2,-5+LF9
	MAR	*0+
	LAC	*-,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	8
;>>>> 	  n=n*m;
	MAR	* ,AR2
	LARK	AR2,-4+LF9
	MAR	*0+
	LT	*+
	MPY	* 
	SPL	* 
	.line	9
;>>>> 	  for(K=0;K<m;K++,Yaddress++)
	LACK	0
	ADRK	4-LF9
	SACL	* 
	LAC	* 
	SBRK	5-LF9
	SUB	* 
	BGEZ	L35
	ADRK	5-LF9
	SSXM ;;;
L34:
	.line	11
;>>>> 	    TEMP=table1[K+n];
	LAC	* 
	RSXM
	ADLK	_table1+0,0
	SSXM
	SBRK	4-LF9
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	ADRK	5-LF9
	SACL	* 
	.line	12
;>>>> 	    WRITE1(TEMP,Yaddress,E);	                 // 送需要显示的数据字节 
	SBRK	7-LF9
	LAC	* ,AR1
	SACL	*+,AR2
	SBRK	2
	LAC	* ,AR1
	SACL	*+,AR2
	ADRK	9-LF9
	LAC	* ,AR1
	SACL	*+
	CALL	_WRITE1
	SBRK	3
	.line	9
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SBRK	8-LF9
	LAC	* 
	ADDK	1
	SACL	* 
	ADRK	8-LF9
	LAC	* 
	SBRK	5-LF9
	SUB	* 
	ADRK	5-LF9
	BLZ	L34
L35:
EPI0_9:
	.line	14
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	211,000000000H,3

	.sym	_DISPLAY2,_DISPLAY2,36,2,0
	.globl	_DISPLAY2

	.func	215
;>>>> 	DISPLAY2(n,m,E,PAGADD,Yaddress)
;>>>> 	int  n,PAGADD,Yaddress,E;	                  	// 定义所需要的局部变量 
******************************************************
* FUNCTION DEF : _DISPLAY2
******************************************************
_DISPLAY2:

LF10	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_n,-3+LF10,4,9,16
	.sym	_m,-4+LF10,4,9,16
	.sym	_E,-5+LF10,4,9,16
	.sym	_PAGADD,-6+LF10,4,9,16
	.sym	_Yaddress,-7+LF10,4,9,16
	.sym	_K,1,4,1,16
	.sym	_TEMP,2,2,1,16
	.line	3
;>>>> 	  int K;
;>>>> 	  char TEMP;
	.line	6
;>>>> 	  TRANS1(0x0C0,E);				                // 从第0行开始显示 
	LARK	AR2,-5+LF10
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	192
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	7
;>>>> 	  TRANS1(PAGADD,E);				                // 送需要显示的页地址 
	MAR	* ,AR2
	LARK	AR2,-5+LF10
	MAR	*0+
	LAC	*-,AR1
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_TRANS1
	SBRK	2
	.line	8
;>>>> 	  n=n*m;
	MAR	* ,AR2
	LARK	AR2,-4+LF10
	MAR	*0+
	LT	*+
	MPY	* 
	SPL	* 
	.line	9
;>>>> 	  for(K=0;K<m;K++,Yaddress++)
	LACK	0
	ADRK	4-LF10
	SACL	* 
	LAC	* 
	SBRK	5-LF10
	SUB	* 
	BGEZ	L37
	ADRK	5-LF10
	SSXM ;;;
L36:
	.line	11
;>>>> 	    TEMP=table2[K+n];
	LAC	* 
	RSXM
	ADLK	_table2+0,0
	SSXM
	SBRK	4-LF10
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	ADRK	5-LF10
	SACL	* 
	.line	12
;>>>> 	    WRITE1(TEMP,Yaddress,E);	                // 送需要显示的数据字节 
	SBRK	7-LF10
	LAC	* ,AR1
	SACL	*+,AR2
	SBRK	2
	LAC	* ,AR1
	SACL	*+,AR2
	ADRK	9-LF10
	LAC	* ,AR1
	SACL	*+
	CALL	_WRITE1
	SBRK	3
	.line	9
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SBRK	8-LF10
	LAC	* 
	ADDK	1
	SACL	* 
	ADRK	8-LF10
	LAC	* 
	SBRK	5-LF10
	SUB	* 
	ADRK	5-LF10
	BLZ	L36
L37:
EPI0_10:
	.line	14
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	228,000000000H,3

	.sym	_LCD_INIT,_LCD_INIT,32,2,0
	.globl	_LCD_INIT

	.func	230
;>>>> 	void LCD_INIT()
******************************************************
* FUNCTION DEF : _LCD_INIT
******************************************************
_LCD_INIT:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 	  	LCDIOinit();
	CALL	_LCDIOinit
	.line	4
;>>>> 	    LCD1INIT(1);					             // LCD的E1边初始化 
	LACK	1
	SACL	*+
	CALL	_LCD1INIT
	MAR	*-
	.line	5
;>>>> 	    LCD1INIT(2);					             // LCD的E2边初始化 
;>>>> 	    //com=PFDATDIR;
	LACK	2
	SACL	*+
	CALL	_LCD1INIT
	MAR	*-
EPI0_11:
	.line	7
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	236,000000000H,1

	.sym	_LCD_disp1,_LCD_disp1,32,2,0
	.globl	_LCD_disp1

	.func	239
;>>>> 	void LCD_disp1()
******************************************************
* FUNCTION DEF : _LCD_disp1
******************************************************
_LCD_disp1:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 		LCD_INIT();
;>>>> 	//显示电流给定值Iref
	CALL	_LCD_INIT
	.line	6
;>>>> 		DISPLAY1(0,8,1,0xB8,0x40);//I
	LACK	64
	SACL	*+
	LACK	184
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	0
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	7
;>>>> 	    DISPLAY1(2,8,1,0xB8,0x48);//r 
	LACK	72
	SACL	*+
	LACK	184
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	2
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	8
;>>>> 	    DISPLAY1(3,8,1,0xB8,0x50);//e 
	LACK	80
	SACL	*+
	LACK	184
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	3
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	9
;>>>> 	    DISPLAY1(4,8,1,0xB8,0x58);//f 
;>>>> 	//显示电流反馈值Ifb
	LACK	88
	SACL	*+
	LACK	184
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	4
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	11
;>>>> 		DISPLAY1(0,8,2,0xB8,0x40);//I
	LACK	64
	SACL	*+
	LACK	184
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	0
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	12
;>>>> 	    DISPLAY1(4,8,2,0xB8,0x48);//f
	LACK	72
	SACL	*+
	LACK	184
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	4
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	13
;>>>> 	    DISPLAY1(5,8,2,0xB8,0x50);//b
;>>>> 	//显示转速给定值Vref
	LACK	80
	SACL	*+
	LACK	184
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	5
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	15
;>>>> 		DISPLAY1(1,8,1,0xBa,0x40);//V
	LACK	64
	SACL	*+
	LACK	186
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	1
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	16
;>>>> 	    DISPLAY1(2,8,1,0xBa,0x48);//r 
	LACK	72
	SACL	*+
	LACK	186
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	2
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	17
;>>>> 	    DISPLAY1(3,8,1,0xBa,0x50);//e 
	LACK	80
	SACL	*+
	LACK	186
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	3
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	18
;>>>> 	    DISPLAY1(4,8,1,0xBa,0x58);//f 
;>>>> 	//显示电流反馈值Ifb
	LACK	88
	SACL	*+
	LACK	186
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	4
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	20
;>>>> 		DISPLAY1(1,8,2,0xBa,0x40);//V
	LACK	64
	SACL	*+
	LACK	186
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	1
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	21
;>>>> 	    DISPLAY1(4,8,2,0xBa,0x48);//f
	LACK	72
	SACL	*+
	LACK	186
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	4
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	22
;>>>> 	    DISPLAY1(5,8,2,0xBa,0x50);//b
;>>>> 	//显示PWM频率fpwm
	LACK	80
	SACL	*+
	LACK	186
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	5
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	24
;>>>> 		DISPLAY1(4,8,1,0xBc,0x40);//f
	LACK	64
	SACL	*+
	LACK	188
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	4
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	25
;>>>> 		DISPLAY1(7,8,1,0xBc,0x48);//p
	LACK	72
	SACL	*+
	LACK	188
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	7
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	26
;>>>> 		DISPLAY1(8,8,1,0xBc,0x50);//w
	LACK	80
	SACL	*+
	LACK	188
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	27
;>>>> 		DISPLAY1(9,8,1,0xBc,0x58);//m
;>>>> 	//显示PWM占空比Dpwm
	LACK	88
	SACL	*+
	LACK	188
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	9
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	29
;>>>> 		DISPLAY1(6,8,2,0xBc,0x40);//D
	LACK	64
	SACL	*+
	LACK	188
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	6
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	30
;>>>> 		DISPLAY1(7,8,2,0xBc,0x48);//p
	LACK	72
	SACL	*+
	LACK	188
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	7
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	31
;>>>> 		DISPLAY1(8,8,2,0xBc,0x50);//w
	LACK	80
	SACL	*+
	LACK	188
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	32
;>>>> 		DISPLAY1(9,8,2,0xBc,0x58);//m
;>>>> 	//显示换向的状态,0~5中的一个.St
	LACK	88
	SACL	*+
	LACK	188
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	9
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	34
;>>>> 		DISPLAY1(10,8,1,0xBe,0x40);//H
	LACK	64
	SACL	*+
	LACK	190
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	10
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	35
;>>>> 		DISPLAY1(11,8,1,0xBe,0x48);//S
	LACK	72
	SACL	*+
	LACK	190
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	11
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	36
;>>>> 	    DISPLAY1(12,8,1,0xBe,0x50);//t
;>>>> 	//显示霍尔换向表,6个Hmap
	LACK	80
	SACL	*+
	LACK	190
	SACL	*+
	LACK	1
	SACL	*+
	LACK	8
	SACL	*+
	LACK	12
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	38
;>>>> 		DISPLAY1(10,8,2,0xBe,0x40);//H
	LACK	64
	SACL	*+
	LACK	190
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	10
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	39
;>>>> 		DISPLAY1(9,8,2,0xBe,0x48);//m
	LACK	72
	SACL	*+
	LACK	190
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	9
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	40
;>>>> 	    DISPLAY1(13,8,2,0xBe,0x50);//a
	LACK	80
	SACL	*+
	LACK	190
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	13
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
	.line	41
;>>>> 	    DISPLAY1(14,8,2,0xBe,0x58);//p
	LACK	88
	SACL	*+
	LACK	190
	SACL	*+
	LACK	2
	SACL	*+
	LACK	8
	SACL	*+
	LACK	14
	SACL	*+
	CALL	_DISPLAY1
	SBRK	5
EPI0_12:
	.line	43
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	281,000000000H,1
	.end

⌨️ 快捷键说明

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