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

📄 wiegand.src

📁 c8051f310xmodembootloader.rar
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	LCALL	?C?COPY
; 	   if(odd_parity(wie))	   //end
			; SOURCE LINE # 126
	MOV  	DPTR,#wie?243
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_odd_parity
	JNC  	?C0032
; 	     
; 		  {
			; SOURCE LINE # 128
; 		    if(chanl1==CHANL_DIN)
			; SOURCE LINE # 129
	MOV  	DPTR,#chanl1?244
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0033
; 		    {
			; SOURCE LINE # 130
; 		     D1IN=1;
			; SOURCE LINE # 131
; 		     delayus(90);	       //50us脉冲宽度
			; SOURCE LINE # 132
	LCALL	L?0096
; 		     D1IN=0;
			; SOURCE LINE # 133
	CLR  	D1IN
; 			}
			; SOURCE LINE # 134
	RET  	
?C0033:
; 			else
; 			{
			; SOURCE LINE # 136
; 			 D1OUT=1;
			; SOURCE LINE # 137
	SETB 	D1OUT
; 		     delayus(90);	       //50us脉冲宽度
			; SOURCE LINE # 138
	LCALL	L?0098
; 		     D1OUT=0;
			; SOURCE LINE # 139
	CLR  	D1OUT
; 			}
			; SOURCE LINE # 140
; 		  }
			; SOURCE LINE # 141
	RET  	
?C0032:
; 		else
; 		  {
			; SOURCE LINE # 143
; 		    if(chanl1==CHANL_DIN)
			; SOURCE LINE # 144
	MOV  	DPTR,#chanl1?244
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0036
; 			{
			; SOURCE LINE # 145
; 		     D0IN=1;
			; SOURCE LINE # 146
	SETB 	D0IN
; 		     delayus(90);
			; SOURCE LINE # 147
	LCALL	L?0098
; 		     D0IN=0;
			; SOURCE LINE # 148
	CLR  	D0IN
; 			}
			; SOURCE LINE # 149
	RET  	
?C0036:
; 			else
; 			{
			; SOURCE LINE # 151
; 			 D0OUT=1;
			; SOURCE LINE # 152
	SETB 	D0OUT
; 		     delayus(90);
			; SOURCE LINE # 153
	LCALL	L?0098
; 		     D0OUT=0;
			; SOURCE LINE # 154
	CLR  	D0OUT
; 			}	  
			; SOURCE LINE # 155
; 		  }
			; SOURCE LINE # 156
; 	 }
			; SOURCE LINE # 157
; 	 break;
			; SOURCE LINE # 158
; 
;    default:
			; SOURCE LINE # 160
;       break;
			; SOURCE LINE # 161
; 	       	  
;   }
			; SOURCE LINE # 163
;   
; }
			; SOURCE LINE # 165
?C0039:
	RET  	
; END OF _wiegandout

; /***************************************************************************************
; **函数功能:wiegand data out
; **入参:    wie
; **返回值:	无
; **作者:	jerkoh
; **日期:	2009-06-16
; **说明:	无
; ***************************************************************************************/
; void wiedataout(unsigned char k,unsigned char chanl2)

	RSEG  ?PR?_wiedataout?WIEGAND
L?0099:
	USING	0
L?0100:
	MOV  	DPTR,#chanl1?244
	MOVX 	A,@DPTR
	MOV  	R5,A
_wiedataout:
	USING	0
			; SOURCE LINE # 174
	MOV  	DPTR,#chanl2?349
	MOV  	A,R5
	MOVX 	@DPTR,A
;---- Variable 'k?348' assigned to Register 'R1' ----
	MOV  	R1,AR7
; {
			; SOURCE LINE # 175
;   unsigned char i;
; 
;   for(i=0;i<8;i++)
			; SOURCE LINE # 178
;---- Variable 'i?350' assigned to Register 'R3' ----
	CLR  	A
	MOV  	R3,A
?C0040:
; 	   {
			; SOURCE LINE # 179
; 		if(wiebuf[k]&0x80)
			; SOURCE LINE # 180
	MOV  	A,#LOW (wiebuf)
	ADD  	A,R1
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	JNB  	ACC.7,?C0043
; 		  {
			; SOURCE LINE # 181
; 		   if(chanl2==CHANL_DIN)
			; SOURCE LINE # 182
	MOV  	DPTR,#chanl2?349
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0044
; 		   {
			; SOURCE LINE # 183
; 		    D1IN=1;
			; SOURCE LINE # 184
; 		    delayus(90);	     //50us脉冲宽度
			; SOURCE LINE # 185
	LCALL	L?0097
; 		    D1IN=0;
			; SOURCE LINE # 186
	CLR  	D1IN
; 		   }
			; SOURCE LINE # 187
	SJMP 	?C0095
?C0044:
; 		   else
; 		   {
			; SOURCE LINE # 189
; 		    D1OUT=1;
			; SOURCE LINE # 190
	SETB 	D1OUT
; 		    delayus(90);	     //50us脉冲宽度
			; SOURCE LINE # 191
	LCALL	L?0098
; 		    D1OUT=0;
			; SOURCE LINE # 192
	CLR  	D1OUT
; 		   }
			; SOURCE LINE # 193
?C0045:
; 		   delayms(2);		 //2ms脉冲间隔
			; SOURCE LINE # 194
; 		   wiebuf[k]<<=1;
			; SOURCE LINE # 195
; 		  }
			; SOURCE LINE # 196
	SJMP 	?C0095
?C0043:
; 		else
; 		  {
			; SOURCE LINE # 198
; 		   if(chanl2==CHANL_DIN)
			; SOURCE LINE # 199
	MOV  	DPTR,#chanl2?349
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0047
; 		   {
			; SOURCE LINE # 200
; 		    D0IN=1;
			; SOURCE LINE # 201
	SETB 	D0IN
; 		    delayus(90);
			; SOURCE LINE # 202
	LCALL	L?0098
; 		    D0IN=0;
			; SOURCE LINE # 203
	CLR  	D0IN
; 		   }
			; SOURCE LINE # 204
	SJMP 	?C0048
?C0047:
; 		   else
; 		   {
			; SOURCE LINE # 206
; 		    D0OUT=1;
			; SOURCE LINE # 207
	SETB 	D0OUT
; 		    delayus(90);
			; SOURCE LINE # 208
	LCALL	L?0098
; 		    D0OUT=0;
			; SOURCE LINE # 209
	CLR  	D0OUT
; 		   }
			; SOURCE LINE # 210
?C0048:
; 		   delayms(2);
			; SOURCE LINE # 211
?C0095:
	MOV  	R7,#02H
	MOV  	R6,#00H
	LCALL	_delayms
; 		   wiebuf[k]<<=1;
			; SOURCE LINE # 212
	MOV  	A,#LOW (wiebuf)
	ADD  	A,R1
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	ADD  	A,ACC
	MOVX 	@DPTR,A
; 		  }
			; SOURCE LINE # 213
; 	   }  
			; SOURCE LINE # 214
?C0042:
	INC  	R3
	MOV  	A,R3
	XRL  	A,#08H
	JNZ  	?C0040
; }
			; SOURCE LINE # 215
?C0049:
	RET  	
; END OF _wiedataout

; /***************************************************************************************
; **函数功能:Even_Parity	   偶检验  前12bits or 前16bits
; **入参:    wiebuf, wieformat
; **返回值:	bit
; **作者:	jerkoh
; **日期:	2009-06-16
; **说明:	无
; ***************************************************************************************/
; bit even_parity(unsigned char wieformat)

	RSEG  ?PR?_even_parity?WIEGAND
_even_parity:
	USING	0
			; SOURCE LINE # 224
;---- Variable 'i?452' assigned to Register 'R6' ----
;---- Variable 'j?453' assigned to Register 'R5' ----
;---- Variable 'wieformat?451' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 225
;   unsigned char i,j;
;   bit opt;
; 
;   if(wieformat==26)
			; SOURCE LINE # 229
	MOV  	A,R7
	XRL  	A,#01AH
	JNZ  	?C0050
;    {
			; SOURCE LINE # 230
; 	for(i=0,j=0;i<8;i++)
			; SOURCE LINE # 231
	MOV  	R6,A
	MOV  	R5,A
?C0051:
; 	  {   
			; SOURCE LINE # 232
;         if(wiebuf[3]&0x80)
			; SOURCE LINE # 233
	MOV  	DPTR,#wiebuf+03H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0054
; 		  {
			; SOURCE LINE # 234
; 		   j++;
			; SOURCE LINE # 235
	INC  	R5
; 		  }
			; SOURCE LINE # 236
?C0054:
; 		 wiebuf[3]<<=1;
			; SOURCE LINE # 237
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+03H
	MOVX 	@DPTR,A
; 	  }
			; SOURCE LINE # 238
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#08H,?C0051
?C0052:
;     for(i=0;i<4;i++)
			; SOURCE LINE # 239
	CLR  	A
	MOV  	R6,A
?C0055:
; 	  {
			; SOURCE LINE # 240
; 	    if(wiebuf[4]&0x80)
			; SOURCE LINE # 241
	MOV  	DPTR,#wiebuf+04H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0058
; 		  {
			; SOURCE LINE # 242
; 		   j++;
			; SOURCE LINE # 243
	INC  	R5
; 		  }
			; SOURCE LINE # 244
?C0058:
; 		  wiebuf[4]<<=1;
			; SOURCE LINE # 245
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+04H
	MOVX 	@DPTR,A
; 	  } 
			; SOURCE LINE # 246
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#04H,?C0055
	SJMP 	?C0059
;    }
			; SOURCE LINE # 247
?C0050:
;    else		  //34
; 	{
			; SOURCE LINE # 249
; 	  for(i=0,j=0;i<8;i++)
			; SOURCE LINE # 250
	CLR  	A
	MOV  	R6,A
	MOV  	R5,A
?C0060:
; 	  {   
			; SOURCE LINE # 251
;         if(wiebuf[2]&0x80)
			; SOURCE LINE # 252
	MOV  	DPTR,#wiebuf+02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0063
; 		  {
			; SOURCE LINE # 253
; 		   j++;
			; SOURCE LINE # 254
	INC  	R5
; 		  }
			; SOURCE LINE # 255
?C0063:
; 		   wiebuf[2]<<=1;
			; SOURCE LINE # 256
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+02H
	MOVX 	@DPTR,A
; 	  }
			; SOURCE LINE # 257
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#08H,?C0060
?C0061:
;     for(i=0;i<8;i++)
			; SOURCE LINE # 258
	CLR  	A
	MOV  	R6,A
?C0064:
; 	  {
			; SOURCE LINE # 259
; 	    if(wiebuf[3]&0x80)
			; SOURCE LINE # 260
	MOV  	DPTR,#wiebuf+03H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0067
; 		  {
			; SOURCE LINE # 261
; 		   j++;
			; SOURCE LINE # 262
	INC  	R5
; 		  }
			; SOURCE LINE # 263
?C0067:
; 		  wiebuf[3]<<=1;
			; SOURCE LINE # 264
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+03H
	MOVX 	@DPTR,A
; 	  } 
			; SOURCE LINE # 265
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#08H,?C0064
; 
; 
; 	}
			; SOURCE LINE # 268
?C0059:
; 
; 
; 
;    if((j&0x01)==0x01) opt=1;   
			; SOURCE LINE # 272
	MOV  	A,R5
	JNB  	ACC.0,?C0068
	SETB 	opt?454
	SJMP 	?C0069
?C0068:
;    else opt=0;   
			; SOURCE LINE # 273
	CLR  	opt?454
?C0069:
;    return(opt);   
			; SOURCE LINE # 274
	MOV  	C,opt?454
; 
;    
; }
			; SOURCE LINE # 277
?C0070:
	RET  	
; END OF _even_parity

; 
; 
; /***************************************************************************************
; **函数功能:Odd_Parity     奇检验  后12bits or 后16bits
; **入参:    wiebuf,	wieformat
; **返回值:	bit
; **作者:	jerkoh
; **日期:	2009-06-16
; **说明:	无
; ***************************************************************************************/
; bit odd_parity(unsigned char wieformat)

	RSEG  ?PR?_odd_parity?WIEGAND
_odd_parity:
	USING	0
			; SOURCE LINE # 288
;---- Variable 'i?556' assigned to Register 'R6' ----
;---- Variable 'j?557' assigned to Register 'R5' ----
;---- Variable 'wieformat?555' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 289
;   unsigned char i,j;
;   bit opt;
; 
;   if(wieformat==26)
			; SOURCE LINE # 293
	MOV  	A,R7
	XRL  	A,#01AH
	JNZ  	?C0071
;    {
			; SOURCE LINE # 294
; 	wiebuf[4]<<=4; //先左移4位
			; SOURCE LINE # 295
	MOV  	DPTR,#wiebuf+04H
	MOVX 	A,@DPTR
	SWAP 	A
	ANL  	A,#0F0H
	MOVX 	@DPTR,A
; 
; 	for(i=0,j=0;i<4;i++)
			; SOURCE LINE # 297
	CLR  	A
	MOV  	R6,A
	MOV  	R5,A
?C0072:
; 	  {   
			; SOURCE LINE # 298
;         if(wiebuf[4]&0x80)
			; SOURCE LINE # 299
	MOV  	DPTR,#wiebuf+04H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0075
; 		  {
			; SOURCE LINE # 300
; 		   j++;
			; SOURCE LINE # 301
	INC  	R5
; 		  }
			; SOURCE LINE # 302
?C0075:
; 		  wiebuf[4]<<=1;
			; SOURCE LINE # 303
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+04H
	MOVX 	@DPTR,A
; 	  }
			; SOURCE LINE # 304
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#04H,?C0072
?C0073:
;     for(i=0;i<8;i++)
			; SOURCE LINE # 305
	CLR  	A
	MOV  	R6,A
?C0076:
; 	  {
			; SOURCE LINE # 306
; 	    if(wiebuf[5]&0x80)
			; SOURCE LINE # 307
	MOV  	DPTR,#wiebuf+05H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0079
; 		  {
			; SOURCE LINE # 308
; 		   j++;
			; SOURCE LINE # 309
	INC  	R5
; 		  }
			; SOURCE LINE # 310
?C0079:
; 		   wiebuf[5]<<=1;
			; SOURCE LINE # 311
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+05H
	MOVX 	@DPTR,A
; 	  } 
			; SOURCE LINE # 312
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#08H,?C0076
	SJMP 	?C0080
;    }
			; SOURCE LINE # 313
?C0071:
;    else		       //34
; 	{
			; SOURCE LINE # 315
; 	  for(i=0,j=0;i<8;i++)
			; SOURCE LINE # 316
	CLR  	A
	MOV  	R6,A
	MOV  	R5,A
?C0081:
; 	  {   
			; SOURCE LINE # 317
;         if(wiebuf[4]&0x80)
			; SOURCE LINE # 318
	MOV  	DPTR,#wiebuf+04H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0084
; 		  {
			; SOURCE LINE # 319
; 		   j++; 
			; SOURCE LINE # 320
	INC  	R5
; 		  }
			; SOURCE LINE # 321
?C0084:
; 		  wiebuf[4]<<=1;
			; SOURCE LINE # 322
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+04H
	MOVX 	@DPTR,A
; 	  }
			; SOURCE LINE # 323
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#08H,?C0081
?C0082:
;     for(i=0;i<8;i++)
			; SOURCE LINE # 324
	CLR  	A
	MOV  	R6,A
?C0085:
; 	  {
			; SOURCE LINE # 325
; 	    if(wiebuf[5]&0x80)
			; SOURCE LINE # 326
	MOV  	DPTR,#wiebuf+05H
	MOVX 	A,@DPTR
	MOV  	R7,A
	JNB  	ACC.7,?C0088
; 		  {
			; SOURCE LINE # 327
; 		   j++;
			; SOURCE LINE # 328
	INC  	R5
; 		  }
			; SOURCE LINE # 329
?C0088:
; 		  wiebuf[5]<<=1;
			; SOURCE LINE # 330
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	DPTR,#wiebuf+05H
	MOVX 	@DPTR,A
; 	  } 
			; SOURCE LINE # 331
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#08H,?C0085
; 
; 
; 	}
			; SOURCE LINE # 334
?C0080:
; 
; 
; 
;    if((j&0x01)==0x01) opt=0;   
			; SOURCE LINE # 338
	MOV  	A,R5
	JNB  	ACC.0,?C0089
	CLR  	opt?558
	SJMP 	?C0090
?C0089:
;    else opt=1;   
			; SOURCE LINE # 339
	SETB 	opt?558
?C0090:
;    return(opt);   
			; SOURCE LINE # 340
	MOV  	C,opt?558
; 
; 
; 
; }
			; SOURCE LINE # 344
?C0091:
	RET  	
; END OF _odd_parity

	END

⌨️ 快捷键说明

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