scanner.asm

来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· 汇编 代码 · 共 3,856 行 · 第 1/5 页

ASM
3,856 行
字号
;>>>> 		      		serialPortOutput1byte(Day);
	BLKD	_Day+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	49
;>>>> 		      		serialPortOutput1byte(Hour);
	BLKD	_Hour+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	50
;>>>> 		      		serialPortOutput1byte(Minute);
	BLKD	_Minute+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	51
;>>>> 		      		serialPortOutput1byte(Second);	//send out time
	BLKD	_Second+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	52
;>>>> 		      		if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L154
	.line	54
;>>>> 		      			serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	55
;>>>> 		      			serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L149
L154:
	.line	57
;>>>> 		      		else 	serialPortOutput1byte(ec&0xff);//sendout ec						
	ADDK	3338
	ANDK	255
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L149:
	.line	59
;>>>> 			for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid		      		
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L158
L156:
	LAC	* ,AR0
	ADLK	_currUid+0,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_lastUid+0,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L156
	B	L158
L138:
	.line	61
;>>>> 	      	else if( num_card >= 2)  //exist card
	ZALS	* 
	SUBK	2
	BLZ	L158
	.line	63
;>>>> 	      		getBufferTime();
	CALL	_getBufferTime,AR1
	.line	64
;>>>> 	      		for(i=0;i<num_card;i++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	* 
	BGEZ	L158
	MAR	* ,AR1
L160:
	.line	66
;>>>> 	      			serialPortOutput1byte(deviceAddr);	//sen out addr
	BLKD	_deviceAddr+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	67
;>>>> 	      			for(j=0;j<8;j++)
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L163
	MAR	*-
L162:
	.line	69
;>>>> 	      				serialPortOutput1byte(labeldata[i*10+3+j]);
;>>>> 	      			}	// senout uid
	LT	*+
	MPYK	10
	PAC
	ADDK	3
	RSXM
	ADLK	_labeldata+0,0
	ADD	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	67
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*-
	SUBK	8
	BLZ	L162
L163:
	.line	71
;>>>> 	      			if(sc == 0x0d0a)
	LDPK	_sc
	LAC	_sc
	SUBK	3338
	BNZ	L164
	.line	73
;>>>> 	      				serialPortOutput1byte(sc>>8);
	RSXM
	LAC	_sc,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	74
;>>>> 	      				serialPortOutput1byte(sc&0xff);
	LACK	255
	LDPK	_sc
	AND	_sc
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L165
L164:
	.line	76
;>>>> 	      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L165:
	.line	77
;>>>> 	      			serialPortOutput1byte(Day);
	BLKD	_Day+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	78
;>>>> 	      			serialPortOutput1byte(Hour);
	BLKD	_Hour+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	79
;>>>> 	      			serialPortOutput1byte(Minute);
	BLKD	_Minute+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	80
;>>>> 	      			serialPortOutput1byte(Second);	//send out time
	BLKD	_Second+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	81
;>>>> 	      			if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L166
	.line	83
;>>>> 	      				serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	84
;>>>> 	      				serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L167
L166:
	.line	86
;>>>> 	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> 	      	else
;>>>> 	      	{;}	//error
	ADDK	3338
	ANDK	255
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L167:
	.line	64
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	* ,AR1
	BLZ	L160
L158:
EPI0_7:
	.line	91
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	467,000000000H,4

	.sym	_db,_db,32,3,0

	.func	469
;>>>> 	static void db(void)
;>>>> 			uchar i,j,m,k;   
******************************************************
* FUNCTION DEF : _db
******************************************************
_db:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,7
	LAR	AR0,*0+,AR2

	.sym	_i,1,12,1,16
	.sym	_j,2,12,1,16
	.sym	_m,3,12,1,16
	.sym	_k,4,12,1,16
	.sym	_flags,5,12,1,16
	.sym	_num_card,6,12,1,16
	.line	4
;>>>> 			uchar flags = 0;
;>>>> 			uchar num_card;	
	LACK	0
	LARK	AR2,5
	MAR	*0+
	SACL	* ,AR1
	.line	7
;>>>> 			myInvOut();       	
	CALL	_myInvOut
	.line	8
;>>>> 	      	num_card = labeldata[0]; 
	MAR	* ,AR2
	LARK	AR2,6
	MAR	*0+
	BLKD	#_labeldata,* 
	.line	9
;>>>> 	      	if(num_card != 0)bReadTag = 1;     			     		
	LAC	* 
	BZ	L168
	LACK	1
	LDPK	_bReadTag
	SACL	_bReadTag
L168:
	.line	10
;>>>> 			if( num_card == 1)
	LAC	* 
	SUBK	1
	BNZ	L169
	.line	12
;>>>> 	      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];	//copy uid to current UID       		
	LACK	0
	SBRK	5
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L171
L170:
	LAC	* ,AR0
	ADLK	_labeldata+3,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_currUid+0,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L170
L171:
	.line	13
;>>>> 		      	if(compareUid()==0 )				// same uid
	CALL	_compareUid,AR1
	BNZ	L172
	.line	15
;>>>> 			      	if(trigger == 0)			// single read
	LDPK	_trigger
	LAC	_trigger
	BNZ	L185
	.line	17
;>>>> 				        viccdata[0] = 15;     		//len
	LACK	15
	LDPK	_viccdata
	SACL	_viccdata
	.line	18
;>>>> 				        flags = ISOFlagsSys&0xfb;	// not inventory
	LACK	251
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	SACL	* 
	.line	19
;>>>> 		        		flags |= 0x20;			// address_flag	,no security
	ORK	32
	SACL	* 
	.line	20
;>>>> 		        		if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作 			        
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L174
	LACK	64
	OR	* 
	SACL	* 
L174:
	.line	21
;>>>> 				      	viccdata[1] = flags;     	//flags
	BLDD	* ,#_viccdata+1
	.line	22
;>>>> 				      	viccdata[2] = 0x23;		//cmd
	LACK	35
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	23
;>>>> 				      	for(j=0;j<8;j++)		// copy uid
	LACK	0
	SBRK	3
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L176
L175:
	.line	25
;>>>> 				      		viccdata[3+j] = labeldata[10-j];			      		
	LALK	_labeldata+10
	SUB	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_viccdata+3,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	23
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L175
L176:
	.line	27
;>>>> 				      	viccdata[11] = db_adr;		//start addr
	LDPK	_db_adr
	BLDD	_db_adr,#_viccdata+11
	.line	28
;>>>> 				      	viccdata[12] = (db_n+1);		// length
	LAC	_db_n
	ADDK	1
	LDPK	_viccdata+12
	SACL	_viccdata+12
	.line	29
;>>>> 				      	wr_crc_send(); 
	CALL	_wr_crc_send,AR1
	.line	31
;>>>> 			      		ISOMode = ISOModeSys&0xe7;	//read ,all			      		
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	32
;>>>> 			      		m = sendISOCmd(ISOMode);
	SACL	*+
	CALL	_sendISOCmd
	MAR	*-,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	33
;>>>> 			      		CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	35
;>>>> 	      				if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L177
	.line	37
;>>>> 	      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
	LACK	0
	MAR	*+
	SACL	* ,AR0
	LDPK	_db_n
	ZALS	_db_n
	ADDK	1
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BGEZ	L180
L178:
	.line	38
;>>>> 	      						serialPortOutput1byte(viccdata[2+k]); 
;>>>> 	      				else	//不含有块状态信息
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	37
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	LDPK	_db_n
	ZALS	_db_n
	ADDK	1
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BLZ	L178
	B	L180
L177:
	.line	42
;>>>> 	      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
	LACK	0
	MAR	*+
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BLEZ	L180
L181:
	.line	43
;>>>> 	      						serialPortOutput1byte(viccdata[2+k]);
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	42
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BGZ	L181
L180:
	.line	46
;>>>> 			      		if(ec == 0x0d0a)
	LAC	_ec
	SUBK	3338
	BNZ	L183
	.line	48
;>>>> 			      			serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	49
;>>>> 			      			serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L185
L183:
	.line	51
;>>>> 			      		else 	serialPortOutput1byte(ec&0xff);//sendout ec      					      	
;>>>> 			else	//different uid
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L185
L172:
	.line	56
;>>>> 					viccdata[0] = 15;     			//len
	LACK	15
	LDPK	_viccdata
	SACL	_viccdata
	.line	57
;>>>> 					flags = ISOFlagsSys&0xfb;		// not inventory
	LACK	251
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	SACL	* 
	.line	58
;>>>> 		        	flags |= 0x20;				// address_flag	,no security
	ORK	32
	SACL	* 
	.line	59
;>>>> 		        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作 
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L186
	LACK	64
	OR	* 
	SACL	* 
L186:
	.line	60
;>>>> 					viccdata[1] = flags;     		//flags
	BLDD	* ,#_viccdata+1
	.line	61
;>>>> 					viccdata[2] = 0x23;			//cmd
	LACK	35
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	62
;>>>> 					for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid			  	
	LACK	0
	SBRK	3
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L188
L187:
	LALK	_labeldata+10
	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	L187
L188:
	.line	63
;>>>> 					viccdata[11] = db_adr;			//start addr
	LDPK	_db_adr
	BLDD	_db_adr,#_viccdata+11
	.line	64
;>>>> 					viccdata[12] = (db_n+1);		// length
	LAC	_db_n
	ADDK	1
	LDPK	_viccdata+12
	SACL	_viccdata+12
	.line	65
;>>>> 					wr_crc_send();                           
	CALL	_wr_crc_send,AR1
	.line	67
;>>>> 			      	ISOMode = ISOModeSys&0xe7;	//read ,all			      
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	68
;>>>> 			      	m = sendISOCmd(ISOMode);
	SACL	*+
	CALL	_sendISOCmd
	MAR	*-,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	69
;>>>> 	      			CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	70
;>>>> 	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L189
	.line	72
;>>>> 	      				for(k=0;k<(db_n+1)*5;k++)	//send out block data
	LACK	0
	MAR	*+
	SACL	* ,AR0
	LDPK	_db_n
	ZALS	_db_n
	ADDK	1
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BGEZ	L192
L190:
	.line	73
;>>>> 	      					serialPortOutput1byte(viccdata[2+k]); 
;>>>> 	      			else	//不含有块状态信息
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	72
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	LDPK	_db_n
	ZALS	_db_n
	ADDK	1
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BLZ	L190
	B	L192
L189:
	.line	77
;>>>> 	      				for(k=0;k<(db_n+1)*4;k++)	//send out block data
	LACK	0
	MAR	*+
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BLEZ	L192
L193:
	.line	78
;>>>> 	      					serialPortOutput1byte(viccdata[2+k]);
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	77
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BGZ	L193
L192:
	.line	81
;>>>> 			      	if(ec == 0x0d0a)
	LAC	_ec
	SUBK	3338
	BNZ	L195
	.line	83
;>>>> 			      		serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	84
;>>>> 			      		serialPortOutput1byte(ec&0xff);
	LACK	255

⌨️ 快捷键说明

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