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

📄 sci.asm

📁 DSP部分功能测试 串口
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	LACK	255
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	20
;>>>> 			DIE_L;
	LARK	AR3,28826
	LACK	65531
	AND	* 
	SACL	* ,AR1
	.line	21
;>>>> 			delay(0xff);
	LACK	255
	SACL	*+
	CALL	_delay
	MAR	*-
	.line	22
;>>>> 			enable_int();
	CALL	_enable_int
	.line	23
;>>>> 			Len_RecChar = 0;
	LACK	0
	LDPK	_Len_RecChar
	SACL	_Len_RecChar
	.line	24
;>>>> 			read_flag = 0;
;>>>> 	//	*PBDATDIR=*PBDATDIR | 0xffff;
;>>>> 	//	data_to_send=0x005a;
;>>>> 	//	*SCITXBUF=data_to_send;
;>>>> 	//	while ( * SCICTL2 & 0x0040 == 0x0040) ;
;>>>> 	//	*PBDATDIR=*PBDATDIR & 0xfffb;
;>>>> 	//	while((*SCIRXST&0x0040)==0x0000);
;>>>> 	//	data_received= *SCIRXBUF;
;>>>> 	//	if(data_received!=0x005a)return(0);
;>>>> 	//	return(1);
	LDPK	_read_flag
	SACL	_read_flag
L10:
	.line	39
;>>>> 		return(0);
	LACK	0
EPI0_5:
	.line	40
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	149,000000000H,3

	.sym	_UartRec,_UartRec,32,2,0
	.globl	_UartRec

	.func	154
;>>>> 	void UartRec()
;>>>> 		unsigned char ch;
******************************************************
* FUNCTION DEF : _UartRec
******************************************************
_UartRec:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR3

	.sym	_ch,1,12,1,16
	.line	6
;>>>> 		ch =  *SCIRXBUF;
	LARK	AR3,28759
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	7
;>>>> 		if(read_flag==0)
	LDPK	_read_flag
	LAC	_read_flag
	BNZ	L13
	.line	9
;>>>> 			if(ch == 0x05)
	LAC	* 
	SUBK	5
	BNZ	L14
	.line	11
;>>>> 				uiRecNum = 0;
	LACK	0
	LDPK	_uiRecNum
	SACL	_uiRecNum
	.line	12
;>>>> 				Len_RecChar = 0;
	SACL	_Len_RecChar
L14:
	.line	14
;>>>> 			if(ch == EOT || uiRecNum>=INBUF_LEN)  //接收结束,收到0X0A
;>>>> 			//	disable_int();
	LAC	* 
	SUBK	10
	BZ	LL8
	SSXM
	LDPK	_uiRecNum
	LAC	_uiRecNum
	SUBK	20
	BLZ	L15
LL8:
	.line	17
;>>>> 				read_flag = 1;
	LACK	1
	LDPK	_read_flag
	SACL	_read_flag
	.line	18
;>>>> 				SciRecBuf[uiRecNum++] = ch;
	LDPK	_uiRecNum
	LAC	_uiRecNum
	ADDK	1
	SACL	_uiRecNum
	SUBK	1
	ADLK	_SciRecBuf+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR2
	SSXM
	LAC	* ,AR4
	SACL	* 
	.line	19
;>>>> 				Len_RecChar = uiRecNum;
	BLKD	#_uiRecNum,_Len_RecChar
	.line	20
;>>>> 				uiRecNum=0;
;>>>> 			else
	LACK	0
	SACL	_uiRecNum
	B	L13
L15:
	.line	25
;>>>> 				if (ch > 127 ) //if1
	ZALS	* 
	SUBK	127
	BLEZ	L17
	.line	27
;>>>> 					uiRecNum = 0 ; 
	LACK	0
	SACL	_uiRecNum
	.line	28
;>>>> 					SciRecBuf[uiRecNum] = ch; 
;>>>> 				else 
	ADLK	_SciRecBuf+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR2
	LAC	* ,AR4
	SACL	* 
	B	L13
L17:
	.line	32
;>>>> 					SciRecBuf[uiRecNum] = ch; 
	ADDK	127
	MAR	* ,AR1
	SACL	* ,AR0
	LAC	_uiRecNum
	RSXM
	ADLK	_SciRecBuf+0,0
	SACL	* 
	LAR	AR4,* ,AR1
	LAC	* ,AR4
	SACL	* 
	.line	33
;>>>> 					uiRecNum++; 
;>>>> 				//	Len_RecChar++;
;>>>> 				} //endif1
;>>>> 			}//endif
;>>>> 		}//endif !read_flag
	LAC	_uiRecNum
	ADDK	1
	SACL	_uiRecNum
L13:
	.line	39
;>>>> 		*IFR = 0x0001;
	LARK	AR4,6
	LACK	1
	MAR	* ,AR4
	SACL	* 
	.line	40
;>>>> 		delay(0xf);
;>>>> 	//	enable_int();
	ADRK	9
	MAR	* ,AR1
	SAR	AR4,*+
	CALL	_delay
	MAR	*-
EPI0_6:
	.line	43
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	196,000000000H,2

	.sym	_chkxor,_chkxor,44,2,0
	.globl	_chkxor

	.func	208
;>>>> 	uchar chkxor(char *p,uint a,uint n)
******************************************************
* FUNCTION DEF : _chkxor
******************************************************
_chkxor:

LF7	.set	0

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

	.sym	_p,-3+LF7,18,9,16
	.sym	_a,-4+LF7,14,9,16
	.sym	_n,-5+LF7,14,9,16
	.sym	_i,1,14,1,16
	.sym	_checkxor,2,12,1,16
	.line	2
;>>>> 		uint i;
;>>>> 		uchar checkxor;
	.line	5
;>>>> 		i=0;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	.line	6
;>>>> 		checkxor=0;
	SACL	*-
	.line	7
;>>>> 		for(i=0;i<n;i++)
	SACL	* 
	ZALS	* 
	SBRK	6-LF7
	SUBS	* 
	BGEZ	L20
	MAR	*+
L19:
	.line	9
;>>>> 			checkxor ^= p[a+i];
	LAC	*+
	ADD	* 
	ADRK	4-LF7
	ADD	*+,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	XOR	* 
	SACL	*-
	.line	7
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	6-LF7
	SUBS	*+
	BLZ	L19
L20:
	.line	12
;>>>> 		return (checkxor);
	LARK	AR2,2
	MAR	*0+
	ZALS	* 
EPI0_7:
	.line	13
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	220,000000000H,3

	.sym	_chksum,_chksum,44,2,0
	.globl	_chksum

	.func	222
;>>>> 	uchar chksum(char *p,uint a,uint n)
******************************************************
* FUNCTION DEF : _chksum
******************************************************
_chksum:

LF8	.set	0

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

	.sym	_p,-3+LF8,18,9,16
	.sym	_a,-4+LF8,14,9,16
	.sym	_n,-5+LF8,14,9,16
	.sym	_i,1,14,1,16
	.sym	_checksum,2,12,1,16
	.line	2
;>>>> 		uint i;
;>>>> 		uchar checksum;
	.line	5
;>>>> 		i=0;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	.line	6
;>>>> 		checksum=0;
	SACL	*-
	.line	7
;>>>> 		for(i=0;i<n;i++)
	SACL	* 
	ZALS	* 
	SBRK	6-LF8
	SUBS	* 
	BGEZ	L22
	MAR	*+
L21:
	.line	9
;>>>> 			checksum += p[a+i];
	LAC	*+
	ADD	* 
	ADRK	4-LF8
	ADD	*+,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	ADD	* 
	SACL	*-
	.line	7
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SBRK	6-LF8
	SUBS	*+
	BLZ	L21
L22:
	.line	12
;>>>> 		return checksum;
	LARK	AR2,2
	MAR	*0+
	ZALS	* 
EPI0_8:
	.line	13
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	234,000000000H,3

	.sym	_SendSci,_SendSci,46,2,0
	.globl	_SendSci

	.func	272
;>>>> 	uint SendSci(unsigned char dsp_ad,uchar para,ulong uldata,uint n)
******************************************************
* FUNCTION DEF : _SendSci
******************************************************
_SendSci:

LF9	.set	0

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

	.sym	_dsp_ad,-3+LF9,12,9,16
	.sym	_para,-4+LF9,12,9,16
	.sym	_uldata,-6+LF9,15,9,32
	.sym	_n,-7+LF9,14,9,16
	.sym	_i,1,14,1,16
	.sym	_checks,2,12,1,16
	.sym	_OutBuf,3,50,1,320,,20
	.line	2
;>>>> 		uint i;
;>>>> 		uchar checks;
;>>>> 		char  OutBuf[20];
	.line	6
;>>>> 		i=0;
;>>>> 	//	uchar chksum = 0x3A;	
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	8
;>>>> 		if(uldata % 65536 > 0x7fff)
	SBRK	7-LF9
	ZALS	* 
	ANDK	65535
	ADRK	29-LF9
	SACL	*+
	SACH	*-
	LT	*+
	MPYK	1
	LPH	* 
	LACK	32767
	SPAC
	BC	L23
	.line	10
;>>>> 			uldata = ~(uint)uldata + 1;
	SBRK	30-LF9
	ZALS	* 
	CMPL
	ADDK	1
	ANDK	0FFFFh
	SACL	*+
	SACH	* 
	.line	11
;>>>> 			uldata_fh = 0x2d;
;>>>> 		else
	LACK	45
	LDPK	_uldata_fh
	SACL	_uldata_fh
	B	L24
L23:
	.line	15
;>>>> 			uldata_fh = 0x30;
	LACK	48
	LDPK	_uldata_fh
	SACL	_uldata_fh
L24:
	.line	18
;>>>> 		i = ltoascii((long)dsp_ad,OutBuf,2);
;>>>> 	//	i += ltoascii((long)ucSq,OutBuf+i,1);
;>>>> 	//	i += ltoascii((long)para,OutBuf+i,1);
	MAR	* ,AR1
	LACK	2
	SACL	*+,AR3
	LARK	AR3,3
	MAR	*0+,AR1
	SAR	AR3,*+,AR2
	LARK	AR2,-3+LF9
	MAR	*0+
	ZALS	* ,AR1
	SACL	*+
	SACH	*+
	CALL	_ltoascii
	SBRK	4
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	21
;>>>> 		i += ltoascii((long)uldata,OutBuf+i,10);
	LACK	10
	SACL	*+,AR0
	SAR	AR0,*
	LAC	* ,AR2
	ADD	* ,AR1
	ADDK	3
	SACL	*+,AR2
	SBRK	7-LF9
	ZALS	*+
	ADDH	* ,AR1
	SACL	*+
	SACH	*+
	CALL	_ltoascii
	SBRK	4
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	ADD	* 
	SACL	* 
	.line	28
;>>>> 		if(uldata_fh == 0x2d)
	SSXM
	LDPK	_uldata_fh
	LAC	_uldata_fh
	SUBK	45
	BNZ	L25
	.line	30
;>>>> 			OutBuf[5] = 0x2d;
	LACK	45
	ADRK	7
	SACL	* 
L25:
	.line	33
;>>>> 		checks = chkxor(OutBuf,0,i);
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	0
	SACL	*+,AR3
	LARK	AR3,3
	MAR	*0+,AR1
	SAR	AR3,*+
	CALL	_chkxor
	SBRK	3
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	34
;>>>> 		checks = checks ^ para;
	SBRK	6-LF9
	XOR	* 
	ADRK	6-LF9
	SACL	* 
	.line	35
;>>>> 		checks = checks ^ ucSq;
	LDPK	_ucSq
	XOR	_ucSq
	SACL	* ,AR1
	.line	37
;>>>> 		ltofascii((long)(checks),OutBuf,2);
	LACK	2
	SACL	*+,AR3
	LARK	AR3,3
	MAR	*0+,AR1
	SAR	AR3,*+,AR2
	ZALS	* ,AR1
	SACL	*+
	SACH	*+
	CALL	_ltofascii
	SBRK	4
	.line	39
;>>>> 		send_char_com(0x02);//STX
	LACK	2
	SACL	*+
	CALL	_send_char_com
	MAR	*-
	.line	40
;>>>> 		send_num_com(dsp_ad,2); //dsp_ad
	LACK	2
	SACL	*+,AR2
	LARK	AR2,-3+LF9
	MAR	*0+
	ZALS	* ,AR1
	SACL	*+
	SACH	*+
	CALL	_send_num_com
	SBRK	3
	.line	41
;>>>> 		send_char_com(ucSq); //SQ
	BLKD	_ucSq+0,*+
	CALL	_send_char_com
	MAR	*-,AR2
	.line	42
;>>>> 		send_char_com(para); //C or M
	LARK	AR2,-4+LF9
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	CALL	_send_char_com
	MAR	*-
	.line	43
;>>>> 		send_char_com(uldata_fh);
	BLKD	_uldata_fh+0,*+
	CALL	_send_char_com
	MAR	*-,AR2
	.line	44
;>>>> 		send_num_com(uldata,n-1); //the num of pulse
	LARK	AR2,-7+LF9
	MAR	*0+
	LAC	*+,AR1
	SUBK	1
	SACL	*+,AR2
	ZALS	*+
	ADDH	* ,AR1
	SACL	*+
	SACH	*+
	CALL	_send_num_com
	SBRK	3
	.line	45
;>>>> 		send_char_com(0x03); //ETX
	LACK	3
	SACL	*+
	CALL	_send_char_com
	MAR	*-
	.line	46
;>>>> 		send_string_com(OutBuf,2);//checksum
;>>>> 	//	send_string_com(p, 16); //(plc_ad + para + 要发

⌨️ 快捷键说明

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