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

📄 tc.src

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 SRC
📖 第 1 页 / 共 4 页
字号:
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
?C0155:
;                     return 1;
			; SOURCE LINE # 337
	LJMP 	?C0163
;                 }
			; SOURCE LINE # 338
?C0070:
;                 Sle4442WriteMainMem(cmd[2], cmd[3]);
			; SOURCE LINE # 339
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#02H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	MOV  	DPTR,#03H
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	LCALL	_Sle4442WriteMainMem
;                 cmd[0] = SUCCESS;
			; SOURCE LINE # 340
?C0137:
;                 return 1;
			; SOURCE LINE # 341
	LJMP 	?C0164
; 
;             case CMD_SLE_RD_PMEM:       // UDP: NULL
			; SOURCE LINE # 343
?C0071:
;                 if(len != 2)
			; SOURCE LINE # 344
	MOV  	DPTR,#len?142
	MOVX 	A,@DPTR
	JNZ  	?C0114
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#02H
?C0114:
	MOV  	DPTR,#cmd?141
	JZ   	?C0072
;                 {
			; SOURCE LINE # 345
;                     cmd[0] = ERRORCMDLEN;
			; SOURCE LINE # 346
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
?C0156:
;                     return 1;
			; SOURCE LINE # 347
	LJMP 	?C0163
;                 }
			; SOURCE LINE # 348
?C0072:
;                 Sle4442ReadProtectMem(cmd+1);
			; SOURCE LINE # 349
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,#01H
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
	LCALL	_Sle4442ReadProtectMem
;                 cmd[0] = SUCCESS;
			; SOURCE LINE # 350
;                 return 5;
			; SOURCE LINE # 351
	SJMP 	?C0159
; 
;             case CMD_SLE_UPD_PMEM:      // UDP: address + data
			; SOURCE LINE # 353
?C0073:
;                 if(len != 4)
			; SOURCE LINE # 354
	MOV  	DPTR,#len?142
	MOVX 	A,@DPTR
	JNZ  	?C0115
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#04H
?C0115:
	MOV  	DPTR,#cmd?141
	JZ   	?C0074
;                 {
			; SOURCE LINE # 355
;                     cmd[0] = ERRORCMDLEN;
			; SOURCE LINE # 356
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
?C0158:
;                     return 1;
			; SOURCE LINE # 357
	LJMP 	?C0163
;                 }
			; SOURCE LINE # 358
?C0074:
;                 Sle4442WriteProtectMem(cmd[2], cmd[3]);
			; SOURCE LINE # 359
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#02H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	MOV  	DPTR,#03H
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	LCALL	_Sle4442WriteProtectMem
;                 cmd[0] = SUCCESS;
			; SOURCE LINE # 360
?C0157:
;                 return 1;
			; SOURCE LINE # 361
	LJMP 	?C0164
; 
;             case CMD_SLE_RD_SMEM:       // UDP: NULL
			; SOURCE LINE # 363
?C0075:
;                 if(len != 2)
			; SOURCE LINE # 364
	MOV  	DPTR,#len?142
	MOVX 	A,@DPTR
	JNZ  	?C0116
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#02H
?C0116:
	MOV  	DPTR,#cmd?141
	JZ   	?C0076
;                 {
			; SOURCE LINE # 365
;                     cmd[0] = ERRORCMDLEN;
			; SOURCE LINE # 366
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
?C0160:
;                     return 1;
			; SOURCE LINE # 367
	SJMP 	?C0163
;                 }
			; SOURCE LINE # 368
?C0076:
;                 Sle4442ReadSecurityMem(cmd+1);
			; SOURCE LINE # 369
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,#01H
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
	LCALL	_Sle4442ReadSecurityMem
;                 cmd[0] = SUCCESS;
			; SOURCE LINE # 370
?C0159:
	MOV  	DPTR,#cmd?141
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	CLR  	A
	LCALL	?C?CSTPTR
;                 return 5;
			; SOURCE LINE # 371
	MOV  	R6,A
	MOV  	R7,#05H
	RET  	
; 
;             case CMD_SLE_UPD_SMEM:      // UDP: address + data
			; SOURCE LINE # 373
?C0077:
;                 if(len != 4)
			; SOURCE LINE # 374
	MOV  	DPTR,#len?142
	MOVX 	A,@DPTR
	JNZ  	?C0117
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#04H
?C0117:
	MOV  	DPTR,#cmd?141
	JZ   	?C0078
;                 {
			; SOURCE LINE # 375
;                     cmd[0] = ERRORCMDLEN;
			; SOURCE LINE # 376
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
?C0162:
;                     return 1;
			; SOURCE LINE # 377
	SJMP 	?C0163
;                 }
			; SOURCE LINE # 378
?C0078:
;                 Sle4442WriteSecurityMem(cmd[2], cmd[3]);
			; SOURCE LINE # 379
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#02H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	MOV  	DPTR,#03H
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	LCALL	_Sle4442WriteSecurityMem
;                 cmd[0] = SUCCESS;
			; SOURCE LINE # 380
?C0161:
;                 return 1;
			; SOURCE LINE # 381
	SJMP 	?C0164
; 
;             case CMD_SLE_VERIFY:        // UDP: address + data
			; SOURCE LINE # 383
?C0079:
;                 if(len != 4)
			; SOURCE LINE # 384
	MOV  	DPTR,#len?142
	MOVX 	A,@DPTR
	JNZ  	?C0118
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#04H
?C0118:
	MOV  	DPTR,#cmd?141
	JZ   	?C0080
;                 {
			; SOURCE LINE # 385
;                     cmd[0] = ERRORCMDLEN;
			; SOURCE LINE # 386
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
?C0163:
	MOV  	A,#03H
;                     return 1;
			; SOURCE LINE # 387
	SJMP 	?C0166
;                 }
			; SOURCE LINE # 388
?C0080:
;                 Sle4442Verify(cmd[2], cmd[3]);
			; SOURCE LINE # 389
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#02H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	MOV  	DPTR,#03H
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	LCALL	_Sle4442Verify
;                 cmd[0] = SUCCESS;
			; SOURCE LINE # 390
?C0164:
	MOV  	DPTR,#cmd?141
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	CLR  	A
	LCALL	?C?CSTPTR
;                 return 1;
			; SOURCE LINE # 391
	MOV  	R6,A
	MOV  	R7,#01H
	RET  	
; 
;             case CMD_SLE_CMD:           // UDP: to be defined
			; SOURCE LINE # 393
; 
;             default:
			; SOURCE LINE # 395
?C0082:
;                 cmd[0] = ERRORCMD;
			; SOURCE LINE # 396
	MOV  	DPTR,#cmd?141
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,#02H
?C0165:
;                 return 1;
			; SOURCE LINE # 397
	SJMP 	?C0166
;         }
			; SOURCE LINE # 398
;     }
			; SOURCE LINE # 399
?C0018:
;     else
;     {
			; SOURCE LINE # 401
;         cmd[0] = ERRORCMD;
			; SOURCE LINE # 402
	MOV  	DPTR,#cmd?141
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,#02H
?C0166:
	LCALL	?C?CSTPTR
;         return 1;
			; SOURCE LINE # 403
	MOV  	R6,#00H
	MOV  	R7,#01H
;     }
			; SOURCE LINE # 404
; }
			; SOURCE LINE # 405
?C0007:
	RET  	
; END OF _TcCommand

; 
; // check if a card is inserted into the slot and beep and led
; // and send notice to host
; void CardSlot(void)

	RSEG  ?PR?CardSlot?TC
CardSlot:
	USING	0
			; SOURCE LINE # 409
; {
			; SOURCE LINE # 410
;     static bit fCardIn = 0;
;     unsigned char buf[3];
;     static unsigned char cnt = 0;
; 
;     // todo: check overload
;     if(IccUserOverLoad())
			; SOURCE LINE # 416
	LCALL	IccUserOverLoad
	JNC  	?C0084
;     {
			; SOURCE LINE # 417
;         // todo: notice host ?
;         // power off
;         IccUserPower(0);
			; SOURCE LINE # 420
	CLR  	?IccUserPower?BIT
	LCALL	IccUserPower
;         // eject card
;         IccUserEject();
			; SOURCE LINE # 422
	LCALL	IccUserEject
;         // beep
;         beep(10, 5);
			; SOURCE LINE # 424
	MOV  	R5,#05H
	MOV  	R7,#0AH
	LCALL	_beep
;         // notice host
;         #ifdef TCOVERLOAD
;         buf[0] = TCOVERLOAD;
			; SOURCE LINE # 427
	MOV  	DPTR,#buf?246
	MOV  	A,#0FDH
	MOVX 	@DPTR,A
;         CommSend(buf, 1);
			; SOURCE LINE # 428
	MOV  	R3,#01H
	MOV  	R2,#HIGH (buf?246)
	MOV  	R1,#LOW (buf?246)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_CommSend
;         #endif
;     }
			; SOURCE LINE # 430
?C0084:
; 
;     if(IccUserTest())
			; SOURCE LINE # 432
	LCALL	IccUserTest
	JNC  	?C0085
;     {
			; SOURCE LINE # 433
;         if(!fCardIn)
			; SOURCE LINE # 434
	JNB  	fCardIn?245,$ + 6H
	LJMP 	?C0093
;         {
			; SOURCE LINE # 435
;             fCardIn = 1;
			; SOURCE LINE # 436
	SETB 	fCardIn?245
;             // starttime = GetTickCount();
; 
;             if(fTCBeep)
			; SOURCE LINE # 439
	JNB  	fTCBeep,?C0087
;             {
			; SOURCE LINE # 440
;                 beep(2, 10);
			; SOURCE LINE # 441
	MOV  	R5,#0AH
	MOV  	R7,#02H
	LCALL	_beep
;             }
			; SOURCE LINE # 442
?C0087:
; 
;             CardLed(0, 1);
			; SOURCE LINE # 444
	CLR  	?CardLed?BIT
	SETB 	?CardLed?BIT+01H
	LCALL	CardLed
; 
;             // 通知主机有卡
;             if(fNotice)
			; SOURCE LINE # 447
	JB   	fNotice,$ + 6H
	LJMP 	?C0093
;             {
			; SOURCE LINE # 448
;                 buf[0] = TCARD;
			; SOURCE LINE # 449
	MOV  	DPTR,#buf?246
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
;                 buf[1] = 1;
			; SOURCE LINE # 450
	INC  	DPTR
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 
;                 if(!fStopOnACK)
			; SOURCE LINE # 452
	JB   	fStopOnACK,?C0089
;                 {
			; SOURCE LINE # 453
;                     CommSendNotWaitAck(buf, 2);       ///////////////////////////////////////////
			; SOURCE LINE # 454
	MOV  	R3,A
	MOV  	R2,#HIGH (buf?246)
	MOV  	R1,#LOW (buf?246)
	MOV  	R5,#02H
	MOV  	R4,#00H
	LCALL	_CommSendNotWaitAck
;                     WaitCmdTime = GetTickCount();
			; SOURCE LINE # 455
	LCALL	GetTickCount
	MOV  	DPTR,#WaitCmdTime
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;                     fWaitCmd = 1;
			; SOURCE LINE # 456
	SETB 	fWaitCmd
;                 }
			; SOURCE LINE # 457
	SJMP 	?C0093
?C0089:
;                 else if(!CommSend(buf, 2))
			; SOURCE LINE # 458
	MOV  	R3,#01H
	MOV  	R2,#HIGH (buf?246)
	MOV  	R1,#LOW (buf?246)
	MOV  	R5,#02H
	MOV  	R4,#00H
	LCALL	_CommSend
	JC   	?C0093
;                 {
			; SOURCE LINE # 459
;                     fCardIn = 0;
			; SOURCE LINE # 460
	CLR  	fCardIn?245
;                     CardLed(0, 0);
			; SOURCE LINE # 461
	CLR  	?CardLed?BIT
	CLR  	?CardLed?BIT+01H
	LCALL	CardLed
;                     cnt ++;
			; SOURCE LINE # 462
	MOV  	DPTR,#cnt?247
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
; 
;                     // if 3 times host no response, eject card
;                     if(cnt > 3)
			; SOURCE LINE # 465
	MOVX 	A,@DPTR
	SETB 	C
	SUBB 	A,#03H
	JC   	?C0093
;                     {
			; SOURCE LINE # 466
;                         IccUserEject();
			; SOURCE LINE # 467
	LCALL	IccUserEject
;                         beep(3, 25);
			; SOURCE LINE # 468
	MOV  	R5,#019H
	MOV  	R7,#03H
	LCALL	_beep
;                     }
			; SOURCE LINE # 469
;                 }
			; SOURCE LINE # 470
;             }
			; SOURCE LINE # 471
;         }
			; SOURCE LINE # 472
;     }
			; SOURCE LINE # 473
	SJMP 	?C0093
?C0085:
;     else
;     {
			; SOURCE LINE # 475
;         cnt = 0;
			; SOURCE LINE # 476
	CLR  	A
	MOV  	DPTR,#cnt?247
	MOVX 	@DPTR,A
;         if(fCardIn)
			; SOURCE LINE # 477
	JNB  	fCardIn?245,?C0093
;         {
			; SOURCE LINE # 478
;             fCardIn = 0;
			; SOURCE LINE # 479
	CLR  	fCardIn?245
; 
;             if(fTCBeep)
			; SOURCE LINE # 481
	JNB  	fTCBeep,?C0095
;             {
			; SOURCE LINE # 482
;                 beep(1, 40);
			; SOURCE LINE # 483
	MOV  	R5,#028H
	MOV  	R7,#01H
	LCALL	_beep
;             }
			; SOURCE LINE # 484
?C0095:
; 
;             CardLed(0, 0);
			; SOURCE LINE # 486
	CLR  	?CardLed?BIT
	CLR  	?CardLed?BIT+01H
	LCALL	CardLed
; 
;             if(fNotice)
			; SOURCE LINE # 488
	JNB  	fNotice,?C0093
;             {
			; SOURCE LINE # 489
;                 buf[0] = TCARD;
			; SOURCE LINE # 490
	MOV  	DPTR,#buf?246
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
;                 buf[1] = 0;
			; SOURCE LINE # 491
	CLR  	A
	INC  	DPTR
	MOVX 	@DPTR,A
; 
;                 #if 1
;                 CommSendNotWaitAck(buf, 2); //////////////////////////////////////
			; SOURCE LINE # 494
	MOV  	R3,#01H
	MOV  	R2,#HIGH (buf?246)
	MOV  	R1,#LOW (buf?246)
	MOV  	R5,#02H
	MOV  	R4,A
	LCALL	_CommSendNotWaitAck
;                 #else
;                 CommSend(buf, 2);
;                 #endif
;             }
			; SOURCE LINE # 498
;         }
			; SOURCE LINE # 499
;     }
			; SOURCE LINE # 500
?C0093:
; 
;     if(fWaitCmd)
			; SOURCE LINE # 502
	JNB  	fWaitCmd,?C0099
;     {
			; SOURCE LINE # 503
;         if(GetTickCount() - WaitCmdTime >= 1000)
			; SOURCE LINE # 504
	LCALL	GetTickCount
	MOV  	DPTR,#WaitCmdTime
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	C
	MOV  	A,R7
	SUBB 	A,R5
	MOV  	R7,A
	MOV  	A,R6
	SUBB 	A,R4
	MOV  	R6,A
	CLR  	C
	MOV  	A,R7
	SUBB 	A,#0E8H
	MOV  	A,R6
	SUBB 	A,#03H
	JC   	?C0099
;         {
			; SOURCE LINE # 505
;             fCardIn = 0;
			; SOURCE LINE # 506
	CLR  	fCardIn?245
;             fWaitCmd = 0;
			; SOURCE LINE # 507
	CLR  	fWaitCmd
;             IccUserEject();
			; SOURCE LINE # 508
	LCALL	IccUserEject
;             beep(3, 25);
			; SOURCE LINE # 509
	MOV  	R5,#019H
	MOV  	R7,#03H
	LCALL	_beep
;         }
			; SOURCE LINE # 510
;     }
			; SOURCE LINE # 511
; }
			; SOURCE LINE # 512
?C0099:
	RET  	
; END OF CardSlot

	END

⌨️ 快捷键说明

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