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

📄 protocol.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
******************************************************
* FUNCTION DEF : _wr_crc_send
******************************************************
_wr_crc_send:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_m,1,14,1,16
	.sym	_len,2,12,1,16
	.line	5
;>>>> 	   	len = viccdata[0];     
	LARK	AR2,2
	MAR	*0+
	BLKD	#_viccdata,* 
	.line	6
;>>>> 	   	len -= 3;
	LAC	* 
	SUBK	3
	SACL	* 
	.line	7
;>>>> 	   	m = crc16Calculate(viccdata+1,len);      //
	LAC	* ,AR1
	SACL	*+
	LALK	_viccdata+1
	SACL	*+
	CALL	_crc16Calculate
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	.line	8
;>>>> 	   	len ++;
	LAC	* 
	ADDK	1
	SACL	*-
	.line	9
;>>>> 	   	viccdata[len++] = m&0x00ff;             //crc_low
	LACK	255
	AND	*+,AR1
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	*-,AR0
	SUBK	1
	ADLK	_viccdata+0,0
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* ,AR2
	.line	10
;>>>> 	   	viccdata[len] = m>>8;                 //crc_high
	RSXM
	LAC	*+,7,AR1
	SACH	* ,1,AR2
	LAC	* ,AR0
	ADLK	_viccdata+0,0
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* ,AR1
EPI0_6:
	.line	11
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	126,000000000H,3

	.sect	".cinit"
	.word	IS1,_curSlot
	.long	0
IS1	.set	2

	.sym	_curSlot,_curSlot,63,3,512,,16
	.word	IS2,_curSlot1
	.long	0
IS2	.set	2

	.sym	_curSlot1,_curSlot1,63,3,512,,16
	.word	IS3,_collFlag0
	.word	0
IS3	.set	1

	.sym	_collFlag0,_collFlag0,60,3,256,,16
	.word	IS4,_collFlag1
	.word	0
IS4	.set	1

	.sym	_collFlag1,_collFlag1,60,3,256,,16
	.text

	.sym	_invStayQuiet,_invStayQuiet,32,2,0
	.globl	_invStayQuiet

	.func	141
;>>>> 	void invStayQuiet()
******************************************************
* FUNCTION DEF : _invStayQuiet
******************************************************
_invStayQuiet:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+,AR2

	.sym	_flags,1,12,1,16
	.sym	_i,2,12,1,16
	.sym	_m,3,12,1,16
	.sym	_num,4,12,1,16
	.line	3
;>>>> 		uchar flags = 0;
;>>>> 		uchar i,m,num;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	6
;>>>> 		num = invUid[0];
	ADRK	3
	BLKD	#_invUid,* 
	.line	7
;>>>> 		if(num>0)	//keep quiet 
	LAC	* 
	BZ	L11
	.line	9
;>>>> 			for(m=0;m<num;m++)
	LACK	0
	MAR	*-
	SACL	* 
	ZALS	*+
	SUBS	* 
	BGEZ	L11
	SBRK	3
L12:
	.line	11
;>>>> 				flags = ISOFlagsSys|0x0020;		//address_flag 
	LACK	32
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
	.line	12
;>>>> 			    viccdata[0] = 0x0d;             //len
	LACK	13
	LDPK	_viccdata
	SACL	_viccdata
	.line	13
;>>>> 			    viccdata[1] = flags;         	//flags
	BLDD	*+,#_viccdata+1
	.line	14
;>>>> 			    viccdata[2] = Stay_quit_cmd;	//cmd
	LACK	2
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	15
;>>>> 			    for(i=0;i<8;i++) { viccdata[3+i] = invUid[m*8+8-i]; }//copy uid
	LACK	0
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L15
	MAR	*+
	RSXM ;;;
L14:
	LAC	*-,3
	ADDK	8
	ADLK	_invUid+0,0
	SUB	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_viccdata+3,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBK	8
	BLZ	L14
L15:
	.line	16
;>>>> 			    wr_crc_send();      
	CALL	_wr_crc_send,AR1
	.line	18
;>>>> 			    ISOMode = ISOModeSys;		   
	LDPK	_ISOModeSys
	BLDD	_ISOModeSys,#_ISOMode
	.line	19
;>>>> 			    sendISOCmd();
	CALL	_sendISOCmd
	.line	20
;>>>> 			    CS_RAM_1;	
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	9
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*+
	SUBS	* 
	SBRK	3
	BLZ	L12
L11:
	.line	23
;>>>> 		for(i=0;i<145;i++)
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	145
	BGEZ	L17
L16:
	.line	24
;>>>> 			invUid[i] = 0;	// clr to 0  	
	LAC	* ,AR0
	ADLK	_invUid+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	.line	23
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	145
	BLZ	L16
L17:
EPI0_7:
	.line	25
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	165,000000000H,5

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

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

	.sym	_myInvOut,_myInvOut,32,2,0
	.globl	_myInvOut

	.func	167
;>>>> 	void myInvOut()
;>>>> 		int i,ii,m,j,slotCounter,num_card;
******************************************************
* FUNCTION DEF : _myInvOut
******************************************************
_myInvOut:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,10
	LAR	AR0,*0+,AR2

	.sym	_i,1,4,1,16
	.sym	_ii,2,4,1,16
	.sym	_m,3,4,1,16
	.sym	_j,4,4,1,16
	.sym	_slotCounter,5,4,1,16
	.sym	_num_card,6,4,1,16
	.sym	_flags,7,12,1,16
	.line	4
;>>>> 		uchar flags =0; 
	LACK	0
	LARK	AR2,7
	MAR	*0+
	SACL	* 
	.line	6
;>>>> 		labeldata[0]=0;	
	LDPK	_labeldata
	SACL	_labeldata
	.line	7
;>>>> 		invUid[0] = 0;
;>>>> 	/////////////////////////////1///////////////////////////////		
	LDPK	_invUid
	SACL	_invUid
	.line	9
;>>>> 		for(slotCounter=0;slotCounter<16;slotCounter++)
	SBRK	2
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BGEZ	L19
	ADRK	2
L18:
	.line	11
;>>>> 			flags = ISOFlagsSys | 0x0004;	//inventory_flag
	LACK	4
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
	.line	12
;>>>> 			viccdata[0] = 0x06;             //len
	LACK	6
	LDPK	_viccdata
	SACL	_viccdata
	.line	13
;>>>> 			viccdata[1] = flags;            //flags
	BLDD	* ,#_viccdata+1,AR1
	.line	14
;>>>> 			viccdata[2] = 0x01;        		//cmd
	LACK	1
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	15
;>>>> 			viccdata[3] = 0;                //mask length		
	LACK	0
	LDPK	_viccdata+3
	SACL	_viccdata+3
	.line	16
;>>>> 			wr_crc_send();					//without optional afi	
	CALL	_wr_crc_send
	.line	18
;>>>> 			ISOMode = ISOModeSys&0xe7;      //read all,read,wr_op	
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	19
;>>>> 			if(slotCounter!=0)ISOMode |= 0x80;	//next slot		
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	BZ	L20
	LACK	128
	OR	_ISOMode
	SACL	_ISOMode
L20:
	.line	20
;>>>> 			m = sendISOCmd();  
	CALL	_sendISOCmd,AR1
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	21
;>>>> 			CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	23
;>>>> 			if(viccdata[0] == 1)globalErrFlag = 0xff;	// iso error
	LDPK	_viccdata
	LAC	_viccdata
	SUBK	1
	BNZ	L21
	LACK	255
	LDPK	_globalErrFlag
	SACL	_globalErrFlag
L21:
	.line	25
;>>>> 			if(m==2)	{collFlag0[slotCounter]=0xaa;}	//collision flag		
	LAC	* 
	SUBK	2
	BNZ	L22
	ADRK	2
	LAC	* ,AR0
	ADLK	_collFlag0+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	170
	SACL	* 
	B	L23
L22:
	.line	26
;>>>> 			else if(m==1)
	LAC	* 
	SUBK	1
	BNZ	L23
	.line	28
;>>>> 				labeldata[0] += 1;
	LDPK	_labeldata
	LAC	_labeldata
	ADDK	1
	SACL	_labeldata
	.line	29
;>>>> 				invUid[0] += 1;
	LDPK	_invUid
	LAC	_invUid
	ADDK	1
	SACL	_invUid
	.line	30
;>>>> 				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	31
;>>>> 				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	32
;>>>> 				for(j=0;j<8;j++)
	LACK	0
	SACL	* 
	SSXM
	LAC	* 
	SUBK	8
	BGEZ	L23
	MAR	* ,AR0
L25:
	.line	34
;>>>> 					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	35
;>>>> 					invUid[ (invUid[0]-1)*8+1+j ] = viccdata[10-j];
	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	32
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* ,AR0
	SUBK	8
	BLZ	L25
L23:
	.line	9
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	ADRK	2
	BLZ	L18
L19:
	.line	39
;>>>> 		invStayQuiet();
;>>>> 	/////////////////////////////2//////////////////////////////////////
	CALL	_invStayQuiet,AR1
	.line	41
;>>>> 		for(i=0;i<16;i++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BGEZ	L28
L27:
	.line	43
;>>>> 			if(collFlag0[i] == 0xaa)
	LAC	* ,AR0
	ADLK	_collFlag0+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* 
	SUBK	170
	BNZ	L29
	.line	45
;>>>> 				collFlag0[i] = 0x0;					// clr collision flag			
	MAR	* ,AR2
	LAC	* ,AR0
	ADLK	_collFlag0+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	.line	46
;>>>> 				for(slotCounter=0;slotCounter<16;slotCounter++)
	ADRK	4
	SACL	* 
	SSXM
	LAC	* 
	SUBK	16
	BGEZ	L31
	ADRK	2
L30:
	.line	48
;>>>> 					flags = ISOFlagsSys|0x04;	//inventory_flag
	LACK	4
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
	.line	49
;>>>> 					viccdata[0] = 0x07;         	//len
	LACK	7
	LDPK	_viccdata
	SACL	_viccdata
	.line	50
;>>>> 					viccdata[1] = flags;            //flags
	BLDD	* ,#_viccdata+1
	.line	51
;>>>> 					viccdata[2] = 0x01;        		//cmd
	LACK	1
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	52
;>>>> 					viccdata[3] = 0x04;				//mask length
	LACK	4
	LDPK	_viccdata+3
	SACL	_viccdata+3
	.line	53
;>>>> 					viccdata[4] = i;                //mask value				
	SBRK	6
	BLDD	* ,#_viccdata+4,AR1
	.line	54
;>>>> 					wr_crc_send();					//without optional afi		
	CALL	_wr_crc_send
	.line	56
;>>>> 					ISOMode = ISOModeSys&0xe7; 		//read all,read,wr_op	
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	57
;>>>> 					if(slotCounter!=0)ISOMode |= 0x80;	//next slot				
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	BZ	L32
	LACK	128
	OR	_ISOMode
	SACL	_ISOMode
L32:
	.line	58
;>>>> 					m = sendISOCmd();
	CALL	_sendISOCmd,AR1
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	59
;>>>> 					CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	61
;>>>> 					if(viccdata[0] == 1)globalErrFlag = 0xff;	// iso error
	LDPK	_viccdata
	LAC	_viccdata
	SUBK	1
	BNZ	L33
	LACK	255
	LDPK	_globalErrFlag
	SACL	_globalErrFlag
L33:
	.line	63
;>>>> 					if(m==2){collFlag1[i] = 0xaa;curSlot[slotCounter] = (slotCounter<<4) | i;}				
	LAC	* 
	SUBK	2
	BNZ	L34
	SBRK	2
	LAC	* ,AR0
	ADLK	_collFlag1+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	170
	SACL	* ,AR2
	ADRK	4
	LAC	* ,4
	SBRK	4
	OR	* ,AR1
	SACL	* 
	SSXM
	LAC	* ,AR2
	ADRK	7
	SACL	*+
	SACH	* 
	SBRK	4
	LAC	* ,1,AR0
	ADLK	_curSlot+0,0
	SACL	* 
	LAR	AR3,* ,AR2
	ADRK	3
	ZALS	*+
	ADDH	* ,AR3
	SACL	*+
	SACH	*-
	B	L35
L34:
	.line	64
;>>>> 					else if(m==1)
	LAC	* 
	SUBK	1
	BNZ	L35
	.line	66
;>>>> 						labeldata[0] += 1;
	LDPK	_labeldata
	LAC	_labeldata
	ADDK	1
	SACL	_labeldata
	.line	67
;>>>> 						invUid[0] += 1;
	LDPK	_invUid
	LAC	_invUid
	ADDK	1
	SACL	_invUid
	.line	68
;>>>> 						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	69
;>>>> 						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	70
;>>>> 						for(j=0;j<8;j++)
	LACK	0
	SACL	* 
	SSXM
	LAC	* 
	SUBK	8
	BGEZ	L35
	MAR	* ,AR0
L37:
	.line	72
;>>>> 							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

⌨️ 快捷键说明

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