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

📄 buffer.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.line	44
;>>>> 							else		pcdata[3] = 0x94;
	LACK	148
	LDPK	_pcdata+3
	SACL	_pcdata+3
L75:
	.line	45
;>>>> 							pcdata[4] = c_tr_data;
	LDPK	_c_tr_data
	BLDD	_c_tr_data,#_pcdata+4
	.line	46
;>>>> 							pcdata[5] = buffer[0];
	LDPK	_buffer
	BLDD	_buffer,#_pcdata+5
	.line	47
;>>>> 							for(i=0;i<buffer[0]*(2+(c_db_n+1)*5);i++)
	LACK	0
	MAR	*-
	SACL	* 
	B	L77
L76:
	.line	49
;>>>> 								pcdata[6+i] = buffer[1+i];
	LAC	* ,AR0
	ADLK	_buffer+1,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_pcdata+6,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	47
	LAC	* 
	ADDK	1
	SACL	* 
L77:
	LDPK	_c_db_n
	ZALS	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*
	PAC
	ADDK	2
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	ZALS	* 
	SPAC
	BLZ	L76
	.line	51
;>>>> 							wr_crc_resp();	
	CALL	_wr_crc_resp,AR1
	.line	53
;>>>> 						break;
;>>>> 						case 0x03:
	B	L64
L78:
	.line	56
;>>>> 							len = buffer[0]*(1+8+2+(c_db_n+1)*5)+6+2;
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	11
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR0
	.line	57
;>>>> 							pcdata[0] = 6+buffer[0]*(9+2+(c_db_n+1)*5)+2;
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	11
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LDPK	_pcdata
	SACL	_pcdata
	.line	58
;>>>> 							pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	59
;>>>> 							pcdata[2] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	60
;>>>> 							if(len<=0xff)pcdata[3] = OK;
	ZALS	* 
	SUBK	255
	BGZ	L79
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	B	L80
L79:
	.line	61
;>>>> 							else		pcdata[3] = 0x94;
	LACK	148
	LDPK	_pcdata+3
	SACL	_pcdata+3
L80:
	.line	62
;>>>> 							pcdata[4] = c_tr_data;
	LDPK	_c_tr_data
	BLDD	_c_tr_data,#_pcdata+4
	.line	63
;>>>> 							pcdata[5] = buffer[0];
	LDPK	_buffer
	BLDD	_buffer,#_pcdata+5
	.line	64
;>>>> 							for(i=0;i<buffer[0]*(9+2+(c_db_n+1)*5);i++)
	LACK	0
	MAR	*-
	SACL	* 
	B	L82
L81:
	.line	66
;>>>> 								pcdata[6+i] = buffer[1+i];
	LAC	* ,AR0
	ADLK	_buffer+1,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_pcdata+6,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	64
	LAC	* 
	ADDK	1
	SACL	* 
L82:
	LDPK	_c_db_n
	ZALS	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*
	PAC
	ADDK	11
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	ZALS	* 
	SPAC
	BLZ	L81
	.line	68
;>>>> 							wr_crc_resp();						
	CALL	_wr_crc_resp,AR1
	.line	70
;>>>> 						break;
;>>>> 						case 0x21:
	B	L64
L83:
	.line	73
;>>>> 							pcdata[0] = 6+buffer[0]*(9+4)+2;
	LDPK	_buffer
	LT	_buffer
	MPYK	13
	PAC
	ADDK	8
	LDPK	_pcdata
	SACL	_pcdata
	.line	74
;>>>> 							pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	75
;>>>> 							pcdata[2] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	76
;>>>> 							pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	77
;>>>> 							pcdata[4] = c_tr_data;
	LDPK	_c_tr_data
	BLDD	_c_tr_data,#_pcdata+4
	.line	78
;>>>> 							pcdata[5] = buffer[0];
	LDPK	_buffer
	BLDD	_buffer,#_pcdata+5
	.line	79
;>>>> 							for(i=0;i<buffer[0]*(9+4);i++)
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR0
	LT	_buffer
	LACK	13
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BGEZ	L85
L84:
	.line	81
;>>>> 								pcdata[6+i] = buffer[1+i];
	LAC	* ,AR0
	ADLK	_buffer+1,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_pcdata+6,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	79
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	LDPK	_buffer
	LT	_buffer
	LACK	13
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BLZ	L84
L85:
	.line	83
;>>>> 							wr_crc_resp();
	CALL	_wr_crc_resp,AR1
	.line	85
;>>>> 						break;
;>>>> 						case 0x22:
	B	L64
L86:
	.line	88
;>>>> 							len = buffer[0]*(2+(c_db_n+1)*5+4)+6+2;											
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	6
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR0
	.line	90
;>>>> 							pcdata[0] = 6+buffer[0]*(2+(c_db_n+1)*5+4)+2;
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	6
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LDPK	_pcdata
	SACL	_pcdata
	.line	91
;>>>> 							pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	92
;>>>> 							pcdata[2] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	93
;>>>> 							if(len<=0xff)pcdata[3] = OK;
	ZALS	* 
	SUBK	255
	BGZ	L87
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	B	L88
L87:
	.line	94
;>>>> 							else		pcdata[3] = 0x94;	
	LACK	148
	LDPK	_pcdata+3
	SACL	_pcdata+3
L88:
	.line	95
;>>>> 							pcdata[4] = c_tr_data;
	LDPK	_c_tr_data
	BLDD	_c_tr_data,#_pcdata+4
	.line	96
;>>>> 							pcdata[5] = buffer[0];
	LDPK	_buffer
	BLDD	_buffer,#_pcdata+5
	.line	97
;>>>> 							for(i=0;i<buffer[0]*(2+(c_db_n+1)*5+4);i++)
	LACK	0
	MAR	*-
	SACL	* 
	B	L90
L89:
	.line	99
;>>>> 								pcdata[6+i] = buffer[1+i];
	LAC	* ,AR0
	ADLK	_buffer+1,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_pcdata+6,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	97
	LAC	* 
	ADDK	1
	SACL	* 
L90:
	LDPK	_c_db_n
	ZALS	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*
	PAC
	ADDK	6
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	ZALS	* 
	SPAC
	BLZ	L89
	.line	101
;>>>> 							wr_crc_resp();										
	CALL	_wr_crc_resp,AR1
	.line	103
;>>>> 						break;
;>>>> 						case 0x23:
	B	L64
L91:
	.line	106
;>>>> 							len = buffer[0]*(1+8+2+(c_db_n+1)*5+4)+6+2;	
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	15
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR0
	.line	107
;>>>> 							pcdata[0] = 6+buffer[0]*(9+2+(c_db_n+1)*5+4)+2;
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	15
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LDPK	_pcdata
	SACL	_pcdata
	.line	108
;>>>> 							pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	109
;>>>> 							pcdata[2] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	110
;>>>> 							if(len<=0xff)pcdata[3] = OK;
	ZALS	* 
	SUBK	255
	BGZ	L92
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	B	L93
L92:
	.line	111
;>>>> 							else		pcdata[3] = 0x94;
	LACK	148
	LDPK	_pcdata+3
	SACL	_pcdata+3
L93:
	.line	112
;>>>> 							pcdata[4] = c_tr_data;
	LDPK	_c_tr_data
	BLDD	_c_tr_data,#_pcdata+4
	.line	113
;>>>> 							pcdata[5] = buffer[0];
	LDPK	_buffer
	BLDD	_buffer,#_pcdata+5
	.line	114
;>>>> 							for(i=0;i<buffer[0]*(9+2+(c_db_n+1)*5+4);i++)
	LACK	0
	MAR	*-
	SACL	* 
	B	L95
L94:
	.line	116
;>>>> 								pcdata[6+i] = buffer[1+i];
	LAC	* ,AR0
	ADLK	_buffer+1,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_pcdata+6,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	114
	LAC	* 
	ADDK	1
	SACL	* 
L95:
	LDPK	_c_db_n
	ZALS	_c_db_n
	ADDK	1
	MAR	* ,AR0
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*
	PAC
	ADDK	15
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	ZALS	* 
	SPAC
	BLZ	L94
	.line	118
;>>>> 							wr_crc_resp();						
	CALL	_wr_crc_resp,AR1
	.line	120
;>>>> 						break;
;>>>> 			else
	B	L64
L68:
	.line	20
	LDPK	_c_tr_data
	ZALS	_c_tr_data
	SUBK	1
	BZ	L69
	SUBK	1
	BZ	L73
	SUBK	1
	BZ	L78
	SUBK	30
	BZ	L83
	SUBK	1
	BZ	L86
	SUBK	1
	BZ	L91
	B	L64
L65:
	.line	126
;>>>> 				pcdata[0] = 6;
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	127
;>>>> 				pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	128
;>>>> 				pcdata[2] = 0x32;
	LACK	50
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	129
;>>>> 				pcdata[3] = 0x92;					
	LACK	146
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	130
;>>>> 				wr_crc_resp();
	CALL	_wr_crc_resp
L64:
EPI0_7:
	.line	133
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	443,000000000H,3

	.sym	_clearBufferData,_clearBufferData,32,3,0

	.func	444
;>>>> 	static void clearBufferData()
;>>>> 		uchar i;
******************************************************
* FUNCTION DEF : _clearBufferData
******************************************************
_clearBufferData:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_i,1,12,1,16
	.line	4
;>>>> 		if( (bufferInitFlag == 1) && (bufferReadFlag == 1) )
	LDPK	_bufferInitFlag
	LAC	_bufferInitFlag
	SUBK	1
	BNZ	L97
	LAC	_bufferReadFlag
	SUBK	1
	BNZ	L97
	.line	6
;>>>> 			for(i=0;i<BuffLen;i++){buffer[i] = 0;}
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	511
	BGEZ	L99
L98:
	LAC	* ,AR0
	ADLK	_buffer+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	511
	BLZ	L98
L99:
	.line	7
;>>>> 			bufferClrFlag = 1;
	LACK	1
	LDPK	_bufferClrFlag
	SACL	_bufferClrFlag
	.line	8
;>>>> 			bufferReadFlag = 0;
	LACK	0
	SACL	_bufferReadFlag
	.line	10
;>>>> 			if(pcdata[1] == deviceAddr)
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L101
	.line	12
;>>>> 				pcdata[0] = 6;
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	13
;>>>> 				pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	14
;>>>> 				pcdata[2] = 0x32;
	LACK	50
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	15
;>>>> 				pcdata[3] = OK;					
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	16
;>>>> 				wr_crc_resp();
;>>>> 		else
	CALL	_wr_crc_resp,AR1
	B	L101
L97:
	.line	21
;>>>> 			if(pcdata[1] == deviceAddr)
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L101
	.line	23
;>>>> 				pcdata[0] = 6;
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	24
;>>>> 				pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	25
;>>>> 				pcdata[2] = 0x32;
	LACK	50
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	26
;>>>> 				pcdata[3] = 0x92;					
	LACK	146
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	27
;>>>> 				wr_crc_resp();
	CALL	_wr_crc_resp
L101:
EPI0_8:
	.line	30
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	473,000000000H,2

	.sym	_serialNum,_serialNum,32,3,0

	.func	474
;>>>> 	static void serialNum( )
;>>>> 		uchar i,j;
;>>>> 	   	uchar num_card;   	
******************************************************
* FUNCTION DEF : _serialNum
******************************************************
_serialNum:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+

	.sym	_i,1,12,1,16
	.sym	_j,2,12,1,16
	.sym	_num_card,3,12,1,16
	.line	6
;>>>> 	    myInvOut();	
	CALL	_myInvOut
	.line	7
;>>>> 	    num_card = labeldata[0];     		
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	BLKD	#_labeldata,* 
	.line	8
;>>>> 		if( num_card != 0 )
	LAC	* 
	BZ	L103
	.line	10
;>>>> 			if(buffer[0] >= 0x0b) {return;}	
	LDPK	_buffer
	ZALS	_buffer
	SUBK	11
	BGEZ	EPI0_9
	.line	11
;>>>> 		    buffer[0] += num_card;	        
	ADDK	11
	ADD	* 
	SACL	_buffer
	.line	12
;>>>> 		    for(i=0;i<num_card;i++)
	LACK	0
	SBRK	2
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	* 
	BGEZ	EPI0_9
L105:
	.line	14
;>>>> 		       	buffer[(buffer[0]-num_card+i)*9 + 1] = 0x03;	//tr-type
	LDPK	_buffer
	LAC	_buffer
	SUB	* 
	SBRK	2
	ADD	*+,AR0
	SACL	* 
	LT	* 
	MPYK	9
	PAC
	ADLK	_buffer+1,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	3
	SACL	* ,AR2
	.line	15
;>>>> 		       	for(j=0;j<8;j++)
	LACK	0
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L108
	MAR	*-
	RSXM ;;;
L107:
	.line	17
;>>>> 		       		buffer[(buffer[0]-num_card+i)*9+2+j] = labeldata[i*10+3+j];	// copy uid
	LT	*+
	MPYK	10
	PAC
	ADDK	3
	ADLK	_labeldata+0,0
	ADD	*+,AR0
	SACL	* 
	LAR	AR3,* ,AR2

⌨️ 快捷键说明

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