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

📄 buffer.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	SUBK	5
	BGZ	L34
	.line	40
;>>>> 							bufferModeSelect();
	CALL	_bufferModeSelect,AR1
L34:
	.line	41
;>>>> 						if(buffer[0] >= 1)	// tag read
	LDPK	_buffer
	LAC	_buffer
	BZ	L33
	.line	43
;>>>> 							OptOutput1(1);	//opt ouput high
	MAR	* ,AR1
	LACK	1
	SACL	*+
	CALL	_OptOutput1
	MAR	*-,AR2
	.line	44
;>>>> 							masterUpEdge = 0x00;	//clear master up edge flag
	LACK	0
	LARK	AR2,8
	MAR	*0+
	SACL	* 
	.line	45
;>>>> 							if( (c_sync&0x80) == 0x80 ) //RFOFF
	LACK	128
	LDPK	_c_sync
	AND	_c_sync
	SUBK	128
	BNZ	L36
	.line	47
;>>>> 								setX9c503ToLowest();	// close RF
	CALL	_setX9c503ToLowest,AR1
	.line	48
;>>>> 								RFoffFlag = 0xaa;						
	LACK	170
	LDPK	_RFoffFlag
	SACL	_RFoffFlag
L36:
	.line	50
;>>>> 							syncTimeoutFlag = 0x01;									
	LACK	1
	SACL	_syncTimeoutFlag
L33:
	.line	53
;>>>> 					masterLast = masterCurrent;
;>>>> 				else 	// first time access
	MAR	* ,AR2
	LARK	AR2,7
	MAR	*0+
	LAC	*-
	SACL	* 
	B	L41
L31:
	.line	57
;>>>> 					if(buffer[0] <= 5)	
	LDPK	_buffer
	ZALS	_buffer
	SUBK	5
	BGZ	L38
	.line	58
;>>>> 						bufferModeSelect();					
	CALL	_bufferModeSelect,AR1
L38:
	.line	59
;>>>> 					if(buffer[0] >= 1)	// tag read
	LDPK	_buffer
	LAC	_buffer
	BZ	L41
	.line	61
;>>>> 						OptOutput1(1);	//opt ouput high
	MAR	* ,AR1
	LACK	1
	SACL	*+
	CALL	_OptOutput1
	MAR	*-
	.line	62
;>>>> 						masterFirst = 0xaa;
	LACK	170
	LDPK	_masterFirst
	SACL	_masterFirst
	.line	63
;>>>> 						if( (c_sync&0x80) == 0x80 ) //RFOFF
	LACK	128
	AND	_c_sync
	SUBK	128
	BNZ	L40
	.line	65
;>>>> 							setX9c503ToLowest();	// close RF	
	CALL	_setX9c503ToLowest
	.line	66
;>>>> 							RFoffFlag = 0xaa;
	LACK	170
	LDPK	_RFoffFlag
	SACL	_RFoffFlag
L40:
	.line	68
;>>>> 						syncTimeoutFlag = 0x01;							
;>>>> 			else	// slave mode
	LACK	1
	SACL	_syncTimeoutFlag
	B	L41
L30:
	.line	74
;>>>> 				syncTimeoutFlag_out = 1;
	LACK	1
	SACL	_syncTimeoutFlag_out
	.line	75
;>>>> 				slaveCurrent = OpticInput3()&0x01;
	CALL	_OpticInput3,AR1
	ANDK	1
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	SACL	* 
	.line	76
;>>>> 				if( (slaveCurrent != slaveLast)&&(slaveCurrent == 0x01)||(timeOutCome == 0xaa) )
	LAC	*-
	SUB	* 
	BZ	LL11
	MAR	*+
	LAC	* 
	SUBK	1
	BZ	LL10
LL11:
	LDPK	_timeOutCome
	LAC	_timeOutCome
	SUBK	170
	BNZ	L42
LL10:
	.line	78
;>>>> 					syncTimeoutFlag_out = 0;
	LACK	0
	LDPK	_syncTimeoutFlag_out
	SACL	_syncTimeoutFlag_out
	.line	79
;>>>> 					slaveUpEdge = 0xaa;	//up edge come
	LACK	170
	LARK	AR2,5
	MAR	*0+
	SACL	* ,AR1
	.line	80
;>>>> 					timeOutCome = 0x00;
;>>>> 					//if( RFoffFlag == 0xaa )
	LACK	0
	SACL	_timeOutCome
	.line	83
;>>>> 						RFoffFlag = 0x00;					
	SACL	_RFoffFlag
	.line	84
;>>>> 						adjustX9c503(1,globalLevel);	// open RF
	BLKD	_globalLevel+0,*+
	LACK	1
	SACL	*+
	CALL	_adjustX9c503
	SBRK	2
L42:
	.line	87
;>>>> 				if( (slaveUpEdge == 0xaa) || (timeOutCome == 0xaa) )
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	SUBK	170
	BZ	LL12
	LDPK	_timeOutCome
	LAC	_timeOutCome
	SUBK	170
	BNZ	L43
LL12:
	.line	89
;>>>> 					timeOutCome = 0x00;
	LACK	0
	LDPK	_timeOutCome
	SACL	_timeOutCome
	.line	90
;>>>> 					if(buffer[0] <= 5)				
	LDPK	_buffer
	ZALS	_buffer
	SUBK	5
	BGZ	L44
	.line	91
;>>>> 						bufferModeSelect();
	CALL	_bufferModeSelect,AR1
L44:
	.line	92
;>>>> 					if(buffer[0] >= 1)	// tag read
	LDPK	_buffer
	LAC	_buffer
	BZ	L43
	.line	94
;>>>> 						OptOutput1(1);	//opt ouput high
	MAR	* ,AR1
	LACK	1
	SACL	*+
	CALL	_OptOutput1
	MAR	*-,AR2
	.line	95
;>>>> 						slaveUpEdge = 0x00;	//clear slave up edge flag
	LACK	0
	LARK	AR2,5
	MAR	*0+
	SACL	* 
	.line	96
;>>>> 						if( (c_sync&0x80) == 0x80 ) //RFOFF
	LACK	128
	LDPK	_c_sync
	AND	_c_sync
	SUBK	128
	BNZ	L46
	.line	98
;>>>> 							setX9c503ToLowest();	// close RF
	CALL	_setX9c503ToLowest,AR1
	.line	99
;>>>> 							RFoffFlag = 0xaa;						
	LACK	170
	LDPK	_RFoffFlag
	SACL	_RFoffFlag
L46:
	.line	101
;>>>> 						syncTimeoutFlag = 0x01;									
	LACK	1
	SACL	_syncTimeoutFlag
L43:
	.line	104
;>>>> 				slaveLast = slaveCurrent;
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	LAC	*-
	SACL	* 
L41:
	.line	107
;>>>> 			if( (syncTimeoutCounter>=1) && (syncTimeoutFlag == 1) )
	LDPK	_syncTimeoutCounter
	LAC	_syncTimeoutCounter
	BZ	L47
	LAC	_syncTimeoutFlag
	SUBK	1
	BNZ	L47
	.line	109
;>>>> 				syncTimeoutFlag = 0x00;
	LACK	0
	SACL	_syncTimeoutFlag
	.line	110
;>>>> 				syncTimeoutCounter = 0x00;
	SACL	_syncTimeoutCounter
	.line	111
;>>>> 				OptOutput1(0);	//opt ouput low
	MAR	* ,AR1
	SACL	*+
	CALL	_OptOutput1
	MAR	*-
L47:
	.line	114
;>>>> 			if( (syncTimeoutCounter_out >= c_sync_timeout) && (syncTimeoutFlag_out == 1) )
	LDPK	_syncTimeoutCounter_out
	ZALS	_syncTimeoutCounter_out
	SUBS	_c_sync_timeout
	BLZ	L49
	LAC	_syncTimeoutFlag_out
	SUBK	1
	BNZ	L49
	.line	116
;>>>> 				syncTimeoutCounter_out = 0;
	LACK	0
	SACL	_syncTimeoutCounter_out
	.line	117
;>>>> 				syncTimeoutFlag_out = 0;
	SACL	_syncTimeoutFlag_out
	.line	118
;>>>> 				timeOutCome = 0xaa;
	LACK	170
	SACL	_timeOutCome
	.line	119
;>>>> 				pcdata[1] = 0xaa;
	LDPK	_pcdata+1
	SACL	_pcdata+1
	.line	120
;>>>> 				initializeBuffer();	//init to clr buffer
;>>>> 		else
	CALL	_initializeBuffer,AR1
	B	L49
L29:
	.line	125
;>>>> 			bufferModeSelect();
	CALL	_bufferModeSelect,AR1
L49:
EPI0_3:
	.line	127
	MAR	* ,AR1
	SBRK	10
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	259,000000000H,9

	.sect	".cinit"
	.word	1,_bufferReadCouner
	.word	0

	.sym	_bufferReadCouner,_bufferReadCouner,12,2,16
	.globl	_bufferReadCouner
	.text

	.sym	_bufferModeSelect,_bufferModeSelect,32,3,0

	.func	261
;>>>> 	static void bufferModeSelect()
******************************************************
* FUNCTION DEF : _bufferModeSelect
******************************************************
_bufferModeSelect:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 		if( bufferReadCouner >= c_valid_time)
;>>>> 			switch(c_tr_data)
	LDPK	_bufferReadCouner
	ZALS	_bufferReadCouner
	SUBS	_c_valid_time
	BLZ	L50
	B	L51
L52:
	.line	7
;>>>> 				case 0x01:{serialNum( ); 	break;}	//  serial number
	CALL	_serialNum,AR1
	B	L53
L54:
	.line	8
;>>>> 				case 0x02:{db();			break;}
	CALL	_db,AR1
	B	L53
L55:
	.line	9
;>>>> 				case 0x03:{serialNumDb();	break;}	// serial number,datablock	
	CALL	_serialNumDb,AR1
	B	L53
L56:
	.line	10
;>>>> 				case 0x21:{serialNumTimer();break;}	// timer,serial number
	CALL	_serialNumTimer,AR1
	B	L53
L57:
	.line	11
;>>>> 				case 0x22:{dbTimer();		break;}
	CALL	_dbTimer,AR1
	B	L53
L58:
	.line	12
;>>>> 				case 0x23:{serialDbTimer();	break;}	// datablock,serial number,timer		
	CALL	_serialDbTimer,AR1
	B	L53
L59:
	.line	13
;>>>> 				default:  {serialNum();		break;}		
	CALL	_serialNum,AR1
	B	L53
L51:
	.line	5
	ZALS	_c_tr_data
	SUBK	1
	BZ	L52
	SUBK	1
	BZ	L54
	SUBK	1
	BZ	L55
	SUBK	30
	BZ	L56
	SUBK	1
	BZ	L57
	SUBK	1
	BZ	L58
	B	L59
L53:
	.line	15
;>>>> 			bufferReadCouner = 0;
	LACK	0
	LDPK	_bufferReadCouner
	SACL	_bufferReadCouner
L50:
EPI0_4:
	.line	17
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	277,000000000H,1

	.sym	_readDataBuffInfor,_readDataBuffInfor,32,3,0

	.func	278
;>>>> 	static void readDataBuffInfor( )
******************************************************
* FUNCTION DEF : _readDataBuffInfor
******************************************************
_readDataBuffInfor:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 		if(pcdata[1] == deviceAddr)
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L60
	.line	5
;>>>> 			pcdata[0] = 12;
	LACK	12
	LDPK	_pcdata
	SACL	_pcdata
	.line	6
;>>>> 			pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	7
;>>>> 			pcdata[2] = 0x31;
	LACK	49
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	8
;>>>> 			pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	9
;>>>> 			pcdata[4] = 0x04;
	LACK	4
	LDPK	_pcdata+4
	SACL	_pcdata+4
	.line	10
;>>>> 			pcdata[5] = 0x3c;		 	
	LACK	60
	LDPK	_pcdata+5
	SACL	_pcdata+5
	.line	11
;>>>> 			pcdata[6] = 0x00;
	LACK	0
	LDPK	_pcdata+6
	SACL	_pcdata+6
	.line	12
;>>>> 			pcdata[7] = 0x01;
	LACK	1
	LDPK	_pcdata+7
	SACL	_pcdata+7
	.line	13
;>>>> 			pcdata[8] = 0x00;
	LACK	0
	LDPK	_pcdata+8
	SACL	_pcdata+8
	.line	14
;>>>> 			pcdata[9] = 0x01;		
	LACK	1
	LDPK	_pcdata+9
	SACL	_pcdata+9
	.line	15
;>>>> 			wr_crc_resp();
	CALL	_wr_crc_resp
L60:
EPI0_5:
	.line	17
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	294,000000000H,1

	.sym	_initializeBuffer,_initializeBuffer,32,3,0

	.func	295
;>>>> 	static void initializeBuffer()
;>>>> 		uint i;
******************************************************
* FUNCTION DEF : _initializeBuffer
******************************************************
_initializeBuffer:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.line	4
;>>>> 		bufferInitFlag = 1;
	LACK	1
	LDPK	_bufferInitFlag
	SACL	_bufferInitFlag
	.line	5
;>>>> 		bufferClrFlag = 0;
	LACK	0
	SACL	_bufferClrFlag
	.line	6
;>>>> 		bufferReadFlag = 0;
	SACL	_bufferReadFlag
	.line	7
;>>>> 		for(i=0;i<BuffLen;i++)buffer[i]=0;	//init to clr buffer
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	511
	BGEZ	L62
L61:
	LAC	* ,AR0
	ADLK	_buffer+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	511
	BLZ	L61
L62:
	.line	8
;>>>> 		if(pcdata[1] == deviceAddr)
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L63
	.line	10
;>>>> 			pcdata[0] = 6;
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	11
;>>>> 			pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	12
;>>>> 			pcdata[2] = 0x33;
	LACK	51
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	13
;>>>> 			pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	14
;>>>> 			wr_crc_resp();
	CALL	_wr_crc_resp,AR1
L63:
EPI0_6:
	.line	16
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	310,000000000H,2

	.sym	_readBufferData,_readBufferData,32,3,0

	.func	311
;>>>> 	static void readBufferData()
;>>>> 		uint i;
;>>>> 		uchar len;
******************************************************
* FUNCTION DEF : _readBufferData
******************************************************
_readBufferData:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+

	.sym	_i,1,14,1,16
	.sym	_len,2,12,1,16
	.line	5
;>>>> 		if(pcdata[1] == deviceAddr)
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L64
	.line	7
;>>>> 			if( (bufferInitFlag == 1) && (bufferClrFlag == 0) )
	LDPK	_bufferInitFlag
	LAC	_bufferInitFlag
	SUBK	1
	BNZ	L65
	LAC	_bufferClrFlag
	BNZ	L65
	.line	9
;>>>> 				bufferReadFlag = 1;
	LACK	1
	SACL	_bufferReadFlag
	.line	10
;>>>> 				if(buffer[0] == 0x00)
	LDPK	_buffer
	LAC	_buffer
	BNZ	L68
	.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] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	15
;>>>> 					pcdata[3] = 0x01;	//no tag
	LACK	1
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	16
;>>>> 					wr_crc_resp();
;>>>> 				else
;>>>> 					switch(c_tr_data)
;>>>> 						case 0x01:
	CALL	_wr_crc_resp
	B	L64
L69:
	.line	24
;>>>> 							pcdata[0] = 6+buffer[0]*9+2;
	LDPK	_buffer
	LT	_buffer
	MPYK	9
	PAC
	ADDK	8
	LDPK	_pcdata
	SACL	_pcdata
	.line	25
;>>>> 							pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	26
;>>>> 							pcdata[2] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	27
;>>>> 							pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	28
;>>>> 							pcdata[4] = c_tr_data;
	LDPK	_c_tr_data
	BLDD	_c_tr_data,#_pcdata+4
	.line	29
;>>>> 							pcdata[5] = buffer[0];
	LDPK	_buffer
	BLDD	_buffer,#_pcdata+5
	.line	30
;>>>> 							for(i=0;i<buffer[0]*9;i++)
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR0
	LT	_buffer
	LACK	9
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BGEZ	L71
L70:
	.line	32
;>>>> 								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	30
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	LDPK	_buffer
	LT	_buffer
	LACK	9
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BLZ	L70
L71:
	.line	34
;>>>> 							wr_crc_resp();
	CALL	_wr_crc_resp,AR1
	.line	36
;>>>> 						break;
;>>>> 						case 0x02:
	B	L64
L73:
	.line	39
;>>>> 							len = buffer[0]*(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	2
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR0
	.line	40
;>>>> 							pcdata[0] = 6+buffer[0]*(2+(c_db_n+1)*5)+2;
	LDPK	_c_db_n
	LAC	_c_db_n
	ADDK	1
	SACL	* 
	LT	* 
	MPYK	5
	PAC
	ADDK	2
	SACL	* 
	LDPK	_buffer
	LT	_buffer
	MPYU	* ,AR2
	PAC
	ADDK	8
	LDPK	_pcdata
	SACL	_pcdata
	.line	41
;>>>> 							pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	42
;>>>> 							pcdata[2] = 0x21;
	LACK	33
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	43
;>>>> 							if(len<=0xff)pcdata[3] = OK;
	ZALS	* 
	SUBK	255
	BGZ	L74
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	B	L75
L74:

⌨️ 快捷键说明

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