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

📄 protocol.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	RSXM
	ADLK	_labeldata+0,0
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LALK	_viccdata+10
	SUB	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	* ,AR3
	SACL	* ,AR2
	.line	73
;>>>> 							invUid[ (invUid[0]-1)*8+1+j ] = viccdata[10-j];										
;>>>> 					else {;}		
	LDPK	_invUid
	LAC	_invUid,3
	SUBK	7
	ADLK	_invUid+0,0
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LALK	_viccdata+10
	SUB	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	* ,AR3
	SACL	* ,AR2
	.line	70
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* ,AR0
	SUBK	8
	BLZ	L37
L35:
	.line	46
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	ADRK	2
	BLZ	L30
L31:
	.line	78
;>>>> 				invStayQuiet();
;>>>> 	/////////////////////////3/////////////////////////////////////////////////
	CALL	_invStayQuiet,AR1
	.line	80
;>>>> 				for(ii=0;ii<16;ii++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BGEZ	L29
L39:
	.line	82
;>>>> 					if(collFlag1[ii] == 0xaa)			
	LAC	* ,AR0
	ADLK	_collFlag1+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* 
	SUBK	170
	BNZ	L41
	.line	84
;>>>> 						collFlag1[ii] = 0x0;					
	MAR	* ,AR2
	LAC	* ,AR0
	ADLK	_collFlag1+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	.line	85
;>>>> 						for(slotCounter=0;slotCounter<16;slotCounter++)
	ADRK	3
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BGEZ	L41
	ADRK	2
L42:
	.line	87
;>>>> 							flags = ISOFlagsSys | 0x0004;	//inventory_flag
	LACK	4
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
	.line	88
;>>>> 							viccdata[0] = 0x07;          	//len
	LACK	7
	LDPK	_viccdata
	SACL	_viccdata
	.line	89
;>>>> 							viccdata[1] = flags; 			//flags
	BLDD	* ,#_viccdata+1
	.line	90
;>>>> 							viccdata[2] = 0x01;        		//cmd
	LACK	1
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	91
;>>>> 							viccdata[3] = 0x04;				//mask length
	LACK	4
	LDPK	_viccdata+3
	SACL	_viccdata+3
	.line	92
;>>>> 							viccdata[4] = curSlot[ii];      //mask value				
	SBRK	5
	LAC	* ,1,AR0
	ADLK	_curSlot+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	BLDD	* ,#_viccdata+4,AR1
	.line	93
;>>>> 							wr_crc_send();					//without optional afi		
	CALL	_wr_crc_send
	.line	95
;>>>> 							ISOMode = ISOModeSys&0xe7;		//read all,read,wr_op	
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	96
;>>>> 							if(slotCounter!=0)ISOMode |= 0x80;	//next slot						
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	BZ	L44
	LACK	128
	OR	_ISOMode
	SACL	_ISOMode
L44:
	.line	97
;>>>> 							m = sendISOCmd();
	CALL	_sendISOCmd,AR1
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	98
;>>>> 							CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	100
;>>>> 							if(viccdata[0] == 1)globalErrFlag = 0xff;	// iso error
	LDPK	_viccdata
	LAC	_viccdata
	SUBK	1
	BNZ	L45
	LACK	255
	LDPK	_globalErrFlag
	SACL	_globalErrFlag
L45:
	.line	102
;>>>> 							if(m==2){collFlag1[i] = 0xaa;curSlot1[slotCounter] = (ii<<8) | curSlot[ii];}				
	LAC	* 
	SUBK	2
	BNZ	L46
	SBRK	2
	LAC	* ,AR0
	ADLK	_collFlag1+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	170
	SACL	* ,AR2
	ADRK	4
	LAC	* ,1,AR0
	ADLK	_curSlot1+0,0
	SACL	* 
	LAR	AR3,* ,AR2
	SBRK	3
	LAC	* ,1,AR0
	ADLK	_curSlot+0,0
	SACL	* 
	LAR	AR4,* ,AR2
	LAC	* ,8,AR1
	SACL	* 
	SSXM
	LAC	* ,AR0
	SACH	*,AR4
	OR	*+,AR3
	SACL	*+,AR0
	ZALS	*,AR4
	OR	*-,AR3
	SACL	*-,AR4
	B	L47
L46:
	.line	103
;>>>> 							else if(m==1)
	LAC	* 
	SUBK	1
	BNZ	L47
	.line	105
;>>>> 								labeldata[0] += 1;
	LDPK	_labeldata
	LAC	_labeldata
	ADDK	1
	SACL	_labeldata
	.line	106
;>>>> 								invUid[0] += 1;
	LDPK	_invUid
	LAC	_invUid
	ADDK	1
	SACL	_invUid
	.line	107
;>>>> 								labeldata[ (labeldata[0]-1)*10 + 1 ] = 0x03;	//tr-type
	LDPK	_labeldata
	LAC	_labeldata
	SUBK	1
	MAR	*+,AR0
	SACL	* 
	LT	* 
	MPYK	10
	PAC
	ADLK	_labeldata+1,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	3
	SACL	* ,AR0
	.line	108
;>>>> 								labeldata[ (labeldata[0]-1)*10 + 2 ] = viccdata[2];//dsfid
	LAC	_labeldata
	SUBK	1
	SACL	* 
	LT	* 
	MPYK	10
	PAC
	ADLK	_labeldata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	BLKD	#_viccdata+2,* ,AR2
	.line	109
;>>>> 								for(j=0;j<8;j++)
	LACK	0
	SACL	* 
	SSXM
	LAC	* 
	SUBK	8
	BGEZ	L47
	MAR	* ,AR0
L49:
	.line	111
;>>>> 									labeldata[ (labeldata[0]-1)*10+3+j ] = viccdata[10-j];//uid								
	LDPK	_labeldata
	LAC	_labeldata
	SUBK	1
	SACL	* 
	LT	* ,AR2
	MPYK	10
	PAC
	ADDK	3
	RSXM
	ADLK	_labeldata+0,0
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LALK	_viccdata+10
	SUB	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	* ,AR3
	SACL	* ,AR2
	.line	112
;>>>> 									invUid[ (invUid[0]-1)*8+1+j ] = viccdata[10-j];						
;>>>> 							else {;}		
;>>>> 						//invStayQuiet();
;>>>> 	///////////////////////////////////4//////////////////////////////////////////////////////							
;>>>> 	/////////////////////////////////////	
	LDPK	_invUid
	LAC	_invUid,3
	SUBK	7
	ADLK	_invUid+0,0
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LALK	_viccdata+10
	SUB	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR4
	LAC	* ,AR3
	SACL	* ,AR2
	.line	109
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* ,AR0
	SUBK	8
	BLZ	L49
L47:
	.line	85
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	ADRK	2
	BLZ	L42
L41:
	.line	80
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BLZ	L39
L29:
	.line	41
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BLZ	L27
L28:
	.line	124
;>>>> 		viccdata[0] = 5;
	LACK	5
	LDPK	_viccdata
	SACL	_viccdata
	.line	125
;>>>> 		viccdata[1] = ISOFlagsSys;
	LDPK	_ISOFlagsSys
	BLDD	_ISOFlagsSys,#_viccdata+1
	.line	126
;>>>> 	    viccdata[2] = Reset_rdy_cmd;
	LACK	38
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	127
;>>>> 	    wr_crc_send();
	CALL	_wr_crc_send,AR1
	.line	128
;>>>> 	    ISOMode = ISOModeSys;	    
	LDPK	_ISOModeSys
	BLDD	_ISOModeSys,#_ISOMode
	.line	129
;>>>> 		sendISOCmd();	// active all cards    
	CALL	_sendISOCmd
	.line	130
;>>>> 		CS_RAM_1;	
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
EPI0_8:
	.line	131
	SBRK	11
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	297,000000000H,10

	.sym	_inventory_pro,_inventory_pro,32,2,0
	.globl	_inventory_pro

	.func	298
;>>>> 	void inventory_pro(void)
;>>>> 	   	uchar i,j;           
;>>>> 	   	uchar addr,num_card;
;>>>> 	   	uint m;    	
******************************************************
* FUNCTION DEF : _inventory_pro
******************************************************
_inventory_pro:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,6
	LAR	AR0,*0+,AR2

	.sym	_i,1,12,1,16
	.sym	_j,2,12,1,16
	.sym	_addr,3,12,1,16
	.sym	_num_card,4,12,1,16
	.sym	_m,5,14,1,16
	.line	7
;>>>> 	   	addr = pcdata[1];   	
	LARK	AR2,3
	MAR	*0+
	BLKD	#_pcdata+1,* 
	.line	9
;>>>> 	   	if(pcdata[1] == deviceAddr)	//本机地址执行
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L51
	.line	11
;>>>> 	   		myInvOut();
	CALL	_myInvOut,AR1
	.line	12
;>>>> 	   		if(m==0){resp_no_trns(); }	 //没有标签返回 
;>>>> 		      	else
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	BNZ	L52
	CALL	_resp_no_trns,AR1
	B	L51
L52:
	.line	15
;>>>> 		      		if( labeldata[0]!=0 )
	LDPK	_labeldata
	LAC	_labeldata
	BZ	L54
	.line	17
;>>>> 		      			num_card = labeldata[0]; 
	MAR	*-
	SACL	* 
	.line	18
;>>>> 		      			pcdata[0] = 5+num_card*10+2;
	LT	* 
	MPYK	10
	PAC
	ADDK	7
	LDPK	_pcdata
	SACL	_pcdata
	.line	19
;>>>> 		      			pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	20
;>>>> 		      			pcdata[2] = 0xb0;
	LACK	176
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	21
;>>>> 		      			if(pcdata[0]<=0xff)pcdata[3] = OK;
	LDPK	_pcdata
	ZALS	_pcdata
	SUBK	255
	BGZ	L55
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	B	L56
L55:
	.line	22
;>>>> 		      			else		pcdata[3] = 0x94;	//more data	      			
	LACK	148
	LDPK	_pcdata+3
	SACL	_pcdata+3
L56:
	.line	23
;>>>> 		      			pcdata[4] = num_card;
	BLDD	* ,#_pcdata+4
	.line	24
;>>>> 		      			for(i=0;i<num_card;i++)
	LACK	0
	SBRK	3
	SACL	* 
	ZALS	* 
	ADRK	3
	SUBS	* 
	BGEZ	L58
	SBRK	3
L57:
	.line	26
;>>>> 		      				pcdata[10*i+5] = labeldata[10*i+1];
	LT	* ,AR0
	MPYK	10
	PAC
	ADLK	_labeldata+1,0
	SACL	* 
	LAR	AR3,* ,AR2
	LT	* ,AR0
	MPYK	10
	PAC
	ADLK	_pcdata+5,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	27
;>>>> 		      				pcdata[10*i+6] = labeldata[10*i+2];
	LT	* ,AR0
	MPYK	10
	PAC
	ADLK	_labeldata+2,0
	SACL	* 
	LAR	AR3,* ,AR2
	LT	*+,AR0
	MPYK	10
	PAC
	ADLK	_pcdata+6,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	28
;>>>> 		      				for(j=0;j<8;j++)
	LACK	0
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L60
	MAR	*-
	RSXM ;;;
L59:
	.line	30
;>>>> 		      					pcdata[10*i+7+j] = labeldata[10*i+3+j];
	LT	*+
	MPYK	10
	PAC
	ADDK	3
	ADLK	_labeldata+0,0
	ADD	*-,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LT	*+
	MPYK	10
	PAC
	ADDK	7
	ADLK	_pcdata+0,0
	ADD	* ,AR0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	28
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*-
	SUBK	8
	BLZ	L59
L60:
	.line	24
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	ADRK	3
	SUBS	* 
	SBRK	3
	BLZ	L57
L58:
	.line	33
;>>>> 		      			wr_crc_resp();                  //返回ISO执行数据	      				
	CALL	_wr_crc_resp,AR1
	B	L51
L54:
	.line	35
;>>>> 		      		else if(viccdata[0]==1)resp_iso_err();	//ISO错误返回            			
	LDPK	_viccdata
	LAC	_viccdata
	SUBK	1
	BNZ	L62
	CALL	_resp_iso_err,AR1
	B	L51
L62:
	.line	36
;>>>> 		            else	resp_no_trns();              	//没有标签返回
	CALL	_resp_no_trns,AR1
L51:
EPI0_9:
	.line	39
	MAR	* ,AR1
	SBRK	7
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	336,000000000H,6

	.sym	_stay_quiet_pro,_stay_quiet_pro,32,2,0
	.globl	_stay_quiet_pro

	.func	338
;>>>> 	void stay_quiet_pro(void)
;>>>> 	   	uchar i,j,addr;
;>>>> 	   	uchar flags;
******************************************************
* FUNCTION DEF : _stay_quiet_pro
******************************************************
_stay_quiet_pro:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+,AR2

	.sym	_i,1,12,1,16
	.sym	_j,2,12,1,16
	.sym	_addr,3,12,1,16
	.sym	_flags,4,12,1,16
	.line	6
;>>>> 	   	i = pcdata[4] & 0x07;
	LACK	7
	LDPK	_pcdata+4
	AND	_pcdata+4
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	7
;>>>> 	   	if(i == 0x01)                 		//ADDRED 模式
	LAC	* 
	SUBK	1
	BNZ	L63
	.line	9
;>>>> 	      	flags = ISOFlagsSys|0x0020;		//address_flag      		
	LACK	32
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	ADRK	3
	SACL	* 
	.line	11
;>>>> 	      	viccdata[0] = 0x0d;             //len
	LACK	13
	LDPK	_viccdata
	SACL	_viccdata
	.line	12
;>>>> 	      	viccdata[1] = flags;         	//flags
	BLDD	* ,#_viccdata+1
	.line	13
;>>>> 	      	viccdata[2] = Stay_quit_cmd;	//cmd
	LACK	2
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	14
;>>>> 	      	for(i=3,j=12;i<11;) { viccdata[i++] = pcdata[j--]; }
	LACK	3
	SBRK	3
	SACL	*+
	LACK	12
	SACL	*-
	ZALS	* 
	SUBK	11
	BGEZ	L65
	MAR	*+
L64:
	LAC	* 
	SUBK	1
	SACL	*-,AR0
	ADDK	1
	ADLK	_pcdata+0,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	SUBK	1
	ADLK	_viccdata+0,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	ZALS	*+
	SUBK	11
	BLZ	L64
L65:
	.line	15
;>>>> 	      	wr_crc_send();      
	CALL	_wr_crc_send,AR1
	.line	17
;>>>> 	      	ISOMode = ISOModeSys;      	
	LDPK	_ISOModeSys
	BLDD	_ISOModeSys,#_ISOMode
	.line	18
;>>>> 	      	sendISOCmd();		//本机地址执行 
	CALL	_sendISOCmd
	.line	19
;>>>> 	      	CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	21
;>>>> 	      	if(pcdata[1] == deviceAddr)	//本机地址返回
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L67
	.line	23
;>>>> 	      		pcdata[0] = 6;
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	24
;>>>> 	      		pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1

⌨️ 快捷键说明

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