scanner.asm

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

ASM
3,856 行
字号
;>>>> 	    	for(i=0;i<num_card;i++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	* 
	BGEZ	L102
	MAR	*-
L104:
	.line	63
;>>>> 	      		for(j=0;j<8;j++)
	LACK	0
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L107
	MAR	*-
L106:
	.line	65
;>>>> 	      			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	63
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*-
	SUBK	8
	BLZ	L106
L107:
	.line	67
;>>>> 	      		if(sc == 0x0d0a)
	LDPK	_sc
	LAC	_sc
	SUBK	3338
	BNZ	L108
	.line	69
;>>>> 	      			serialPortOutput1byte(sc>>8);
	RSXM
	LAC	_sc,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	70
;>>>> 	      			serialPortOutput1byte(sc&0xff);
	LACK	255
	LDPK	_sc
	AND	_sc
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L109
L108:
	.line	72
;>>>> 	      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L109:
	.line	73
;>>>> 	      		serialPortOutput1byte(Day);
	BLKD	_Day+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	74
;>>>> 	      		serialPortOutput1byte(Hour);
	BLKD	_Hour+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	75
;>>>> 	      		serialPortOutput1byte(Minute);
	BLKD	_Minute+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	76
;>>>> 	      		serialPortOutput1byte(Second);	//send out time
	BLKD	_Second+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	77
;>>>> 	      		if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L110
	.line	79
;>>>> 	      			serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	80
;>>>> 	      			serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L111
L110:
	.line	82
;>>>> 	      		else 	serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> 	    else
;>>>> 	    {;}	//error
	ADDK	3338
	ANDK	255
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L111:
	.line	61
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	*-
	BLZ	L104
L102:
EPI0_5:
	.line	87
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	318,000000000H,4

	.sym	_snrComPrefix,_snrComPrefix,32,3,0

	.func	319
;>>>> 	static void snrComPrefix(void)
;>>>> 			uchar i,j;
;>>>> 			uchar num_card;	
******************************************************
* FUNCTION DEF : _snrComPrefix
******************************************************
_snrComPrefix:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+

	.sym	_i,1,12,1,16
	.sym	_j,2,12,1,16
	.sym	_num_card,3,12,1,16
	.line	6
;>>>> 			myInvOut();      	
	CALL	_myInvOut
	.line	7
;>>>> 	      	num_card = labeldata[0];
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	BLKD	#_labeldata,* 
	.line	8
;>>>> 	      	if(num_card != 0)bReadTag = 1;
	LAC	* 
	BZ	L112
	LACK	1
	LDPK	_bReadTag
	SACL	_bReadTag
L112:
	.line	9
;>>>> 	      	if( num_card == 1)
	LAC	* 
	SUBK	1
	BNZ	L113
	.line	11
;>>>> 	      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID       		
	LACK	0
	SBRK	2
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L115
L114:
	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	L114
L115:
	.line	12
;>>>> 		      	if(compareUid()==0 )	// same uid
	CALL	_compareUid,AR1
	BNZ	L116
	.line	14
;>>>> 			      	if(trigger == 0)// single read
	LDPK	_trigger
	LAC	_trigger
	BNZ	L122
	.line	16
;>>>> 						serialPortOutput1byte(deviceAddr);	//sen out addr      				
	BLKD	_deviceAddr+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	17
;>>>> 		      			for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L119
L118:
	LAC	* ,AR0
	ADLK	_labeldata+3,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L118
L119:
	.line	18
;>>>> 		      			if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L120
	.line	20
;>>>> 		      				serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	21
;>>>> 		      				serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L122
L120:
	.line	23
;>>>> 		      			else 	serialPortOutput1byte(ec&0xff);	// send ec	      	
;>>>> 			else	//different uid
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L122
L116:
	.line	28
;>>>> 				serialPortOutput1byte(deviceAddr);	//sen out addr      			
	BLKD	_deviceAddr+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	29
;>>>> 		      		for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L124
L123:
	LAC	* ,AR0
	ADLK	_labeldata+3,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L123
L124:
	.line	30
;>>>> 		      		if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L125
	.line	32
;>>>> 		      			serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	33
;>>>> 		      			serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L122
L125:
	.line	35
;>>>> 		      		else 	serialPortOutput1byte(ec&0xff);	// send ec					
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L122:
	.line	37
;>>>> 			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	L129
L127:
	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	L127
	B	L129
L113:
	.line	39
;>>>> 	      	else if( num_card >= 2 )//exist card
	ZALS	* 
	SUBK	2
	BLZ	L129
	.line	41
;>>>> 	      		for(i=0;i<num_card;i++)
	LACK	0
	SBRK	2
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	* 
	BGEZ	L129
	MAR	* ,AR1
L131:
	.line	43
;>>>> 	      			serialPortOutput1byte(deviceAddr);	//sen out addr
	BLKD	_deviceAddr+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	44
;>>>> 	      			for(j=0;j<8;j++)
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L134
	MAR	*-
L133:
	.line	46
;>>>> 	      				serialPortOutput1byte(labeldata[i*10+3+j]);
	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	44
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	*-
	SUBK	8
	BLZ	L133
L134:
	.line	48
;>>>> 	      			if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L135
	.line	50
;>>>> 	      				serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	51
;>>>> 	      				serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L136
L135:
	.line	53
;>>>> 	      			else 	serialPortOutput1byte(ec&0xff);	// send ec
;>>>> 	      	else
;>>>> 	      	{;}	//error
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L136:
	.line	41
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	ADRK	2
	SUBS	* ,AR1
	BLZ	L131
L129:
EPI0_6:
	.line	58
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	376,000000000H,4

	.sym	_snrTimeComPrefix,_snrTimeComPrefix,32,3,0

	.func	377
;>>>> 	static void snrTimeComPrefix(void)
;>>>> 			uchar i,j;
;>>>> 			uchar num_card;	
******************************************************
* FUNCTION DEF : _snrTimeComPrefix
******************************************************
_snrTimeComPrefix:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+

	.sym	_i,1,12,1,16
	.sym	_j,2,12,1,16
	.sym	_num_card,3,12,1,16
	.line	6
;>>>> 			myInvOut();      	
	CALL	_myInvOut
	.line	7
;>>>> 	      	num_card = labeldata[0];
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	BLKD	#_labeldata,* 
	.line	8
;>>>> 	      	if(num_card != 0)bReadTag = 1;
	LAC	* 
	BZ	L137
	LACK	1
	LDPK	_bReadTag
	SACL	_bReadTag
L137:
	.line	9
;>>>> 	      	if( num_card == 1)
	LAC	* 
	SUBK	1
	BNZ	L138
	.line	11
;>>>> 	      		for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID 
	LACK	0
	SBRK	2
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L140
L139:
	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	L139
L140:
	.line	12
;>>>> 		      	if(compareUid()==0 )	// same uid
	CALL	_compareUid,AR1
	BNZ	L141
	.line	14
;>>>> 			      	if(trigger == 0)// single read
	LDPK	_trigger
	LAC	_trigger
	BNZ	L149
	.line	16
;>>>> 			      		getBufferTime();
	CALL	_getBufferTime
	.line	17
;>>>> 				      	serialPortOutput1byte(deviceAddr);	//sen out addr	      			
	BLKD	_deviceAddr+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	18
;>>>> 		      			for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L144
L143:
	LAC	* ,AR0
	ADLK	_labeldata+3,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L143
L144:
	.line	19
;>>>> 		      			if(sc == 0x0d0a)
	LDPK	_sc
	LAC	_sc
	SUBK	3338
	BNZ	L145
	.line	21
;>>>> 		      				serialPortOutput1byte(sc>>8);
	RSXM
	LAC	_sc,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	22
;>>>> 		      				serialPortOutput1byte(sc&0xff);
	LACK	255
	LDPK	_sc
	AND	_sc
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L146
L145:
	.line	24
;>>>> 		      			else 	serialPortOutput1byte(sc&0xff);//send out sc
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L146:
	.line	25
;>>>> 		      			serialPortOutput1byte(Day);
	BLKD	_Day+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	26
;>>>> 		      			serialPortOutput1byte(Hour);
	BLKD	_Hour+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	27
;>>>> 		      			serialPortOutput1byte(Minute);
	BLKD	_Minute+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	28
;>>>> 		      			serialPortOutput1byte(Second);	//send out time
	BLKD	_Second+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	29
;>>>> 		      			if(ec == 0x0d0a)
	LDPK	_ec
	LAC	_ec
	SUBK	3338
	BNZ	L147
	.line	31
;>>>> 		      				serialPortOutput1byte(ec>>8);
	RSXM
	LAC	_ec,7
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	32
;>>>> 		      				serialPortOutput1byte(ec&0xff);
	LACK	255
	LDPK	_ec
	AND	_ec
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L149
L147:
	.line	34
;>>>> 		      			else 	serialPortOutput1byte(ec&0xff);//sendout ec				      	
;>>>> 			else	//different uid
	ADDK	3338
	ANDK	255
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L149
L141:
	.line	39
;>>>> 					getBufferTime();
	CALL	_getBufferTime
	.line	40
;>>>> 					serialPortOutput1byte(deviceAddr);	//sen out addr	      		
	BLKD	_deviceAddr+0,*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	.line	41
;>>>> 		      		for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L151
L150:
	LAC	* ,AR0
	ADLK	_labeldata+3,0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	BLZ	L150
L151:
	.line	42
;>>>> 		      		if(sc == 0x0d0a)
	LDPK	_sc
	LAC	_sc
	SUBK	3338
	BNZ	L152
	.line	44
;>>>> 		      			serialPortOutput1byte(sc>>8);
	RSXM
	LAC	_sc,7
	MAR	* ,AR1
	SACH	*+,1
	CALL	_serialPortOutput1byte
	MAR	*-
	.line	45
;>>>> 		      			serialPortOutput1byte(sc&0xff);
	LACK	255
	LDPK	_sc
	AND	_sc
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
	B	L153
L152:
	.line	47
;>>>> 		      		else 	serialPortOutput1byte(sc&0xff);//send out sc
	ADDK	3338
	ANDK	255
	MAR	* ,AR1
	SACL	*+
	CALL	_serialPortOutput1byte
	MAR	*-
L153:
	.line	48

⌨️ 快捷键说明

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