scanner.asm

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

ASM
3,856 行
字号
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L185
L195:
	.line	86
;>>>> 			      	else 	serialPortOutput1byte(ec&0xff);//sendout ec						
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L185:
	.line	88
;>>>> 			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	L199
L197:
	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	L197
	B	L199
L169:
	.line	90
;>>>> 	      	else if( num_card >= 2)  //exist card
	ZALS	* 
	SUBK	2
	BLZ	L199
	.line	92
;>>>> 		        flags = ISOFlagsSys&0xfb;	// not inventory
	LACK	251
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	MAR	*-
	SACL	* 
	.line	93
;>>>> 		        flags |= 0x20;	// address_flag	,no security
	ORK	32
	SACL	* 
	.line	94
;>>>> 		        if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L201
	LACK	64
	OR	* 
	SACL	* 
L201:
	.line	95
;>>>> 		        for(i=0;i<num_card;i++)	// read multiple blocks
	LACK	0
	SBRK	4
	SACL	* 
	ZALS	* 
	ADRK	5
	SUBS	* 
	BGEZ	L199
	MAR	*-
L202:
	.line	97
;>>>> 		        	viccdata[0] = 15;     	//len	        	
	LACK	15
	LDPK	_viccdata
	SACL	_viccdata
	.line	98
;>>>> 		      		viccdata[1] = flags;    //flags
	BLDD	* ,#_viccdata+1
	.line	99
;>>>> 		      		viccdata[2] = 0x23;	//cmd
	LACK	35
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	100
;>>>> 		      		for(j=0;j<8;j++)	// copy uid
	LACK	0
	SBRK	3
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L205
	MAR	*-
	RSXM ;;;
L204:
	.line	102
;>>>> 		      			viccdata[3+j] = labeldata[i*10+10-j];	      			
	LT	*+
	MPYK	10
	PAC
	ADDK	10
	ADLK	_labeldata+0,0
	SUB	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_viccdata+3,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	100
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*-
	SUBK	8
	BLZ	L204
L205:
	.line	104
;>>>> 		      		viccdata[11] = db_adr;	//start addr
	LDPK	_db_adr
	BLDD	_db_adr,#_viccdata+11
	.line	105
;>>>> 		      		viccdata[12] = (db_n+1);// length
	LAC	_db_n
	ADDK	1
	LDPK	_viccdata+12
	SACL	_viccdata+12
	.line	106
;>>>> 		      		wr_crc_send();                                                    
	CALL	_wr_crc_send,AR1
	.line	108
;>>>> 	      			ISOMode = ISOModeSys&0xe7;	//read ,all      		
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	109
;>>>> 	      			m = sendISOCmd(ISOMode);
	SACL	*+
	CALL	_sendISOCmd
	MAR	*-,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	110
;>>>> 	      			CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	111
;>>>> 	      			if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L206
	.line	113
;>>>> 	      				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	L209
L207:
	.line	114
;>>>> 	      					serialPortOutput1byte(viccdata[2+k]); 
;>>>> 	      			else	//不含有块状态信息
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	113
	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	L207
	B	L209
L206:
	.line	118
;>>>> 	      				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	L209
L210:
	.line	119
;>>>> 	      					serialPortOutput1byte(viccdata[2+k]);
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	118
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BGZ	L210
L209:
	.line	122
;>>>> 	      			if(ec == 0x0d0a)
	LAC	_ec
	SUBK	3338
	BNZ	L212
	.line	124
;>>>> 	      				serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	125
;>>>> 	      				serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L213
L212:
	.line	127
;>>>> 	      			else 	serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> 	      	else
;>>>> 	      	{;}	//error	       
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L213:
	.line	95
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	ADRK	5
	SUBS	*-
	BLZ	L202
L199:
EPI0_8:
	.line	132
	MAR	* ,AR1
	SBRK	8
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	600,000000000H,7

	.sym	_dbTime,_dbTime,32,3,0

	.func	601
;>>>> 	static void dbTime(void)
;>>>> 			uchar i,j,m,k;   
******************************************************
* FUNCTION DEF : _dbTime
******************************************************
_dbTime:
	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	L214
	LACK	1
	LDPK	_bReadTag
	SACL	_bReadTag
L214:
	.line	10
;>>>> 			if( num_card == 1)
	LAC	* 
	SUBK	1
	BNZ	L215
	.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	L217
L216:
	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	L216
L217:
	.line	13
;>>>> 		      	if(compareUid()==0 )	// same uid
	CALL	_compareUid,AR1
	BNZ	L218
	.line	15
;>>>> 			      	if(trigger == 0)// single read
	LDPK	_trigger
	LAC	_trigger
	BNZ	L233
	.line	17
;>>>> 			      		flags = ISOFlagsSys&0xfb;	// not inventory
	LACK	251
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	SACL	* 
	.line	18
;>>>> 		       		 	flags |= 0x20;	// address_flag	,no security
	ORK	32
	SACL	* 
	.line	19
;>>>> 		       		 	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作	        		
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L220
	LACK	64
	OR	* 
	SACL	* 
L220:
	.line	20
;>>>> 			      		viccdata[0] = 15;     //len
	LACK	15
	LDPK	_viccdata
	SACL	_viccdata
	.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++)viccdata[3+j] = labeldata[10-j];	// copy uid
	LACK	0
	SBRK	3
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L222
L221:
	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	L221
L222:
	.line	25
;>>>> 		      			viccdata[11] = db_adr;	//start addr
	LDPK	_db_adr
	BLDD	_db_adr,#_viccdata+11
	.line	26
;>>>> 		      			viccdata[12] = (db_n+1);		// length
	LAC	_db_n
	ADDK	1
	LDPK	_viccdata+12
	SACL	_viccdata+12
	.line	27
;>>>> 		      			wr_crc_send();  
	CALL	_wr_crc_send,AR1
	.line	29
;>>>> 	      				ISOMode = ISOModeSys&0xe7;	//read ,all	      			
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	30
;>>>> 	      				m = sendISOCmd(ISOMode);
	SACL	*+
	CALL	_sendISOCmd
	MAR	*-,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* ,AR1
	.line	31
;>>>> 	      				CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	32
;>>>> 	      				getBufferTime();
	CALL	_getBufferTime
	.line	34
;>>>> 	      				if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L223
	.line	36
;>>>> 	      					for(k=0;k<(db_n+1)*5;k++)	//send out block data
	LACK	0
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	SACL	* ,AR0
	LDPK	_db_n
	ZALS	_db_n
	ADDK	1
	SACL	* 
	LT	* 
	LACK	5
	SACL	*
	MPYU	*,AR2
	ZALS	* 
	SPAC
	BGEZ	L226
L224:
	.line	37
;>>>> 	      						serialPortOutput1byte(viccdata[2+k]); 
;>>>> 	      				else	//不含有块状态信息
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	36
	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	L224
	B	L226
L223:
	.line	41
;>>>> 	      					for(k=0;k<(db_n+1)*4;k++)	//send out block data
	LACK	0
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BLEZ	L226
L227:
	.line	42
;>>>> 	      						serialPortOutput1byte(viccdata[2+k]);
	LAC	* ,AR0
	ADLK	_viccdata+2,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	41
	LARK	AR2,4
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	RSXM
	LDPK	_db_n
	LAC	_db_n,2
	ADDK	4
	ANDK	0FFFFh
	SUBS	* 
	BGZ	L227
L226:
	.line	45
;>>>> 	      				if(sc == 0x0d0a)
	LAC	_sc
	SUBK	3338
	BNZ	L229
	.line	47
;>>>> 		      				serialPortOutput1byte(sc>>8);
	RSXM
	LAC	_sc,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	48
;>>>> 		      				serialPortOutput1byte(sc&0xff);
	LACK	255
	LDPK	_sc
	AND	_sc
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L230
L229:
	.line	50
;>>>> 		      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L230:
	.line	51
;>>>> 		      			serialPortOutput1byte(Day);
	BLKD	_Day+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	52
;>>>> 		      			serialPortOutput1byte(Hour);
	BLKD	_Hour+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	53
;>>>> 		      			serialPortOutput1byte(Minute);
	BLKD	_Minute+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	54
;>>>> 		      			serialPortOutput1byte(Second);	//send out time	
	BLKD	_Second+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	55
;>>>> 		      			if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L231
	.line	57
;>>>> 		      				serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	58
;>>>> 		      				serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L233
L231:
	.line	60
;>>>> 		      			else 	serialPortOutput1byte(ec&0xff);//sendout ec     	
;>>>> 			else	//different uid
	ADDK	3338
	ANDK	255
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L233
L218:
	.line	65
;>>>> 				viccdata[0] = 15;     //len
	LACK	15
	LDPK	_viccdata
	SACL	_viccdata
	.line	66
;>>>> 				flags = ISOFlagsSys&0xfb;	// not inventory
	LACK	251
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	SACL	* 
	.line	67
;>>>> 		        	flags |= 0x20;	// address_flag	,no security
	ORK	32
	SACL	* 
	.line	68
;>>>> 		        	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L234
	LACK	64
	OR	* 
	SACL	* 
L234:
	.line	69
;>>>> 		      		viccdata[1] = flags;     //flags
	BLDD	* ,#_viccdata+1
	.line	70
;>>>> 		      		viccdata[2] = 0x23;	//cmd
	LACK	35
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	71
;>>>> 		      		for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j];	// copy uid
	LACK	0
	SBRK	3
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L236
L235:
	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	L235
L236:
	.line	73
;>>>> 		      		viccdata[11] = db_adr;	//start addr
	LDPK	_db_adr
	BLDD	_db_adr,#_viccdata+11
	.line	74
;>>>> 		      		viccdata[12] = (db_n+1);	// length
	LAC	_db_n
	ADDK	1
	LDPK	_viccdata+12
	SACL	_viccdata+12
	.line	75
;>>>> 		      		wr_crc_send();          
	CALL	_wr_crc_send,AR1
	.line	77
;>>>> 	      			ISOMode = ISOModeSys&0xe7;	//read ,all	      			
	LACK	231
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	LDPK	_ISOMode
	SAC

⌨️ 快捷键说明

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