mfrc500.src

来自「mifarea卡程序mifarea卡程序mifarea卡程序」· SRC 代码 · 共 2,801 行 · 第 1/5 页

SRC
2,801
字号
			; SOURCE LINE # 97
	MOV  	R5,#09H
	MOV  	R7,#02AH
	LCALL	_WriteIO
;             WriteIO(RegTimerReload,0xff);
			; SOURCE LINE # 98
	MOV  	R5,#0FFH
?C0371:
;             break;
			; SOURCE LINE # 99
	SJMP 	?C0375
;         case 5:
			; SOURCE LINE # 100
?C0010:
;             WriteIO(RegTimerClock,0x0b);
			; SOURCE LINE # 101
	MOV  	R5,#0BH
	MOV  	R7,#02AH
	LCALL	_WriteIO
;             WriteIO(RegTimerReload,0xff);
			; SOURCE LINE # 102
	MOV  	R5,#0FFH
?C0372:
;             break;
			; SOURCE LINE # 103
	SJMP 	?C0375
;         case 6:
			; SOURCE LINE # 104
?C0011:
;             WriteIO(RegTimerClock,0x0d);
			; SOURCE LINE # 105
	MOV  	R5,#0DH
	MOV  	R7,#02AH
	LCALL	_WriteIO
;             WriteIO(RegTimerReload,0xff);
			; SOURCE LINE # 106
	MOV  	R5,#0FFH
?C0373:
;             break;
			; SOURCE LINE # 107
	SJMP 	?C0375
;         case 7:
			; SOURCE LINE # 108
?C0012:
;             WriteIO(RegTimerClock,0x0f);
			; SOURCE LINE # 109
	MOV  	R5,#0FH
	MOV  	R7,#02AH
	LCALL	_WriteIO
;             WriteIO(RegTimerReload,0xff);
			; SOURCE LINE # 110
	MOV  	R5,#0FFH
?C0374:
;             break;
			; SOURCE LINE # 111
	SJMP 	?C0375
;         default:
			; SOURCE LINE # 112
?C0013:
;             WriteIO(RegTimerClock,0x07);
			; SOURCE LINE # 113
	MOV  	R5,#07H
	MOV  	R7,#02AH
	LCALL	_WriteIO
;             WriteIO(RegTimerReload,tmoLength);
			; SOURCE LINE # 114
	MOV  	DPTR,#tmoLength?447
	MOVX 	A,@DPTR
	MOV  	R5,A
?C0375:
	MOV  	R7,#02CH
	LCALL	_WriteIO
;             break;
			; SOURCE LINE # 115
;     }
			; SOURCE LINE # 116
; }
			; SOURCE LINE # 117
?C0014:
	RET  	
; END OF _M500PcdSetTmo

; 
; /****************************
;  * excute mfrc500 command   *
;  ****************************/
; #if 1
; uchar M500PcdCmd(uchar cmdcode, uchar* send, uchar* rcv, MfCmdInfo *info)

	RSEG  ?PR?_M500PcdCmd?MFRC500
L?0391:
	USING	0
	MOV  	R0,#LOW (SndBuffer+02H)
	MOV  	R4,#HIGH (SndBuffer+02H)
	MOV  	R5,#01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	R6,#00H
	MOV  	R7,#04H
	LCALL	?C?COPY
	MOV  	DPTR,#SndBuffer+03H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#SndBuffer+02H
	MOVX 	A,@DPTR
	XRL  	A,R7
	MOV  	R7,A
	MOV  	DPTR,#SndBuffer+04H
	MOVX 	A,@DPTR
	XRL  	A,R7
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,R7
	INC  	DPTR
	MOVX 	@DPTR,A
	MOV  	A,#07H
L?0392:
	MOV  	DPTR,#MInfo+03H
L?0393:
	MOVX 	@DPTR,A
L?0394:
	MOV  	DPTR,#?_M500PcdCmd?BYTE+04H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (RcvBuffer)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (RcvBuffer)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (MInfo)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (MInfo)
	MOVX 	@DPTR,A
	MOV  	R3,#01H
L?0395:
	MOV  	R2,#HIGH (SndBuffer)
	MOV  	R1,#LOW (SndBuffer)
	MOV  	R7,#01EH
_M500PcdCmd:
	USING	0
			; SOURCE LINE # 123
	MOV  	DPTR,#cmdcode?548
	MOV  	A,R7
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
; {
			; SOURCE LINE # 124
;     uchar  data tmpStatus;
;     uchar  data lastBits;
;     uchar  data status    = MI_OK;
			; SOURCE LINE # 127
	CLR  	A
	MOV  	status?554,A
;     uchar  data irqEn     = 0x00;
			; SOURCE LINE # 128
	MOV  	irqEn?555,A
;     uchar  data waitFor   = 0x00;
			; SOURCE LINE # 129
	MOV  	waitFor?556,A
;     uint   data starttime;
; 
;     WriteIO(RegInterruptEn,0x7F);   // disable all interrupts
			; SOURCE LINE # 132
	MOV  	R5,#07FH
	MOV  	R7,#06H
	LCALL	_WriteIO
;     WriteIO(RegInterruptRq,0x7F);   // reset interrupt requests
			; SOURCE LINE # 133
	MOV  	R5,#07FH
	MOV  	R7,#07H
	LCALL	_WriteIO
;     WriteIO(RegCommand,PCD_IDLE);   // terminate probably running command
			; SOURCE LINE # 134
	CLR  	A
	MOV  	R5,A
	MOV  	R7,#01H
	LCALL	_WriteIO
; 
;     FlushFIFO();                    // flush FIFO buffer
			; SOURCE LINE # 136
	LCALL	FlushFIFO
; 
;     // save info structures to module pointers
;     MpIsrInfo = info;
			; SOURCE LINE # 139
	MOV  	DPTR,#info?551
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#MpIsrInfo
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;     MpIsrOut  = send;
			; SOURCE LINE # 140
	MOV  	DPTR,#send?549
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#MpIsrOut
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;     MpIsrIn   = rcv;
			; SOURCE LINE # 141
	MOV  	DPTR,#rcv?550
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#MpIsrIn
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
; 
;     info->irqSource = 0x0; // reset interrupt flags
			; SOURCE LINE # 143
	MOV  	DPTR,#info?551
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#07H
	CLR  	A
	LCALL	?C?CSTOPTR
;     
;     enableme();
			; SOURCE LINE # 145
	SETB 	EX0
; 
;     // depending on the command code, appropriate interrupts are enabled (irqEn)
;     // and the commit interrupt is choosen (waitFor).
;     switch(cmdcode)
			; SOURCE LINE # 149
	MOV  	DPTR,#cmdcode?548
	MOVX 	A,@DPTR
	LCALL	?C?CCASE
	DW   	?C0016
	DB   	00H
	DW   	?C0017
	DB   	01H
	DW   	?C0018
	DB   	03H
	DW   	?C0025
	DB   	07H
	DW   	?C0025
	DB   	0BH
	DW   	?C0025
	DB   	0CH
	DW   	?C0022
	DB   	012H
	DW   	?C0023
	DB   	014H
	DW   	?C0024
	DB   	016H
	DW   	?C0025
	DB   	019H
	DW   	?C0025
	DB   	01AH
	DW   	?C0027
	DB   	01EH
	DW   	00H
	DW   	?C0028
;     {
			; SOURCE LINE # 150
;         case PCD_IDLE:                   // nothing else required
			; SOURCE LINE # 151
?C0016:
;             irqEn = 0x00;
			; SOURCE LINE # 152
	CLR  	A
	MOV  	irqEn?555,A
;             waitFor = 0x00;
			; SOURCE LINE # 153
	MOV  	waitFor?556,A
;             break;
			; SOURCE LINE # 154
	SJMP 	?C0015
; 
;         case PCD_WRITEE2:                // LoAlert and TxIRq
			; SOURCE LINE # 156
?C0017:
;             irqEn = 0x11;
			; SOURCE LINE # 157
;             waitFor = 0x10;
			; SOURCE LINE # 158
;             break;
			; SOURCE LINE # 159
	SJMP 	?C0376
; 
;         case PCD_READE2:                 // HiAlert, LoAlert and IdleIRq
			; SOURCE LINE # 161
?C0018:
;             irqEn = 0x07;
			; SOURCE LINE # 162
	MOV  	irqEn?555,#07H
;             waitFor = 0x04;
			; SOURCE LINE # 163
;             break;
			; SOURCE LINE # 164
	SJMP 	?C0382
; 
;         case PCD_LOADCONFIG:             // IdleIRq and LoAlert 
			; SOURCE LINE # 166
;         case PCD_LOADKEYE2:              // IdleIRq and LoAlert 
			; SOURCE LINE # 167
;         case PCD_AUTHENT1:               // IdleIRq and LoAlert 
			; SOURCE LINE # 168
;             irqEn = 0x05;
;             waitFor = 0x04;
;             break;
; 
;         case PCD_CALCCRC:                // LoAlert and TxIRq
			; SOURCE LINE # 173
?C0022:
;             irqEn = 0x11;
			; SOURCE LINE # 174
?C0376:
	MOV  	irqEn?555,#011H
;             waitFor = 0x10;
			; SOURCE LINE # 175
	MOV  	waitFor?556,#010H
;             break;
			; SOURCE LINE # 176
	SJMP 	?C0015
; 
;         case PCD_AUTHENT2:               // IdleIRq
			; SOURCE LINE # 178
?C0023:
;             irqEn = 0x04;
			; SOURCE LINE # 179
	MOV  	irqEn?555,#04H
;             waitFor = 0x04;
			; SOURCE LINE # 180
?C0378:
;             break;
			; SOURCE LINE # 181
	SJMP 	?C0382
; 
;         case PCD_RECEIVE:                // HiAlert and IdleIRq
			; SOURCE LINE # 183
?C0024:
;             info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4);      ////////////////
			; SOURCE LINE # 184
	MOV  	R7,#0FH
	LCALL	_ReadIO
	MOV  	A,R7
	SWAP 	A
	ANL  	A,#0FH
	MOV  	R7,A
	CLR  	C
	CLR  	A
	SUBB 	A,R7
	MOV  	R7,A
	CLR  	A
	SUBB 	A,#00H
	MOV  	R6,A
	MOV  	DPTR,#info?551
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#05H
	MOV  	A,R6
	MOV  	B,R7
	LCALL	?C?ISTOPTR
;             irqEn = 0x06;
			; SOURCE LINE # 185
	MOV  	irqEn?555,#06H
;             waitFor = 0x04;
			; SOURCE LINE # 186
?C0379:
;             break;
			; SOURCE LINE # 187
	SJMP 	?C0382
; 
;         case PCD_LOADKEY:                // IdleIRq
			; SOURCE LINE # 189
?C0025:
;             irqEn = 0x05;
			; SOURCE LINE # 190
	MOV  	irqEn?555,#05H
;             waitFor = 0x04;
			; SOURCE LINE # 191
?C0380:
;             break;
			; SOURCE LINE # 192
	SJMP 	?C0382
; 
;         case PCD_TRANSMIT:               // LoAlert and IdleIRq
			; SOURCE LINE # 194
;             irqEn = 0x05;
;             waitFor = 0x04;
;             break;
; 
;         case PCD_TRANSCEIVE:             // TxIrq, RxIrq, IdleIRq and LoAlert
			; SOURCE LINE # 199
?C0027:
;             info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4); //////////////
			; SOURCE LINE # 200
	MOV  	R7,#0FH
	LCALL	_ReadIO
	MOV  	A,R7
	SWAP 	A
	ANL  	A,#0FH
	MOV  	R7,A
	CLR  	C
	CLR  	A
	SUBB 	A,R7
	MOV  	R7,A
	CLR  	A
	SUBB 	A,#00H
	MOV  	R6,A
	MOV  	DPTR,#info?551
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#05H
	MOV  	A,R6
	MOV  	B,R7
	LCALL	?C?ISTOPTR
;             irqEn = 0x3d;   //0x1D;
			; SOURCE LINE # 201
	MOV  	irqEn?555,#03DH
;             waitFor = 0x04;
			; SOURCE LINE # 202
?C0382:
	MOV  	waitFor?556,#04H
;             break;
			; SOURCE LINE # 203
	SJMP 	?C0015
; 
;         default:
			; SOURCE LINE # 205
?C0028:
;             status = MI_UNKNOWN_COMMAND;
			; SOURCE LINE # 206
	MOV  	status?554,#0FH
; 		  	break;
			; SOURCE LINE # 207
;     }
			; SOURCE LINE # 208
?C0015:
; 
;     if (status == MI_OK)
			; SOURCE LINE # 210
	MOV  	A,status?554
	JZ   	$ + 5H
	LJMP 	?C0029
;     {
			; SOURCE LINE # 211
;         irqEn |= 0x20;
			; SOURCE LINE # 212
	ORL  	irqEn?555,#020H
;         waitFor |= 0x20;
			; SOURCE LINE # 213
	ORL  	waitFor?556,#020H
;         WriteIO(RegInterruptEn,irqEn | 0x80);   // enable interrupt
			; SOURCE LINE # 214
	MOV  	A,irqEn?555
	ORL  	A,#080H
	MOV  	R5,A
	MOV  	R7,#06H
	LCALL	_WriteIO
; 
;         WriteIO(RegCommand,cmdcode);            // send command
			; SOURCE LINE # 216
	MOV  	DPTR,#cmdcode?548
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	R7,#01H
	LCALL	_WriteIO
;         starttime = GetTickCount();
			; SOURCE LINE # 217
	LCALL	GetTickCount
	MOV  	starttime?557,R6
	MOV  	starttime?557+01H,R7
?C0030:
; 
;         while (!((MpIsrInfo->irqSource & waitFor)
			; SOURCE LINE # 219
	MOV  	DPTR,#MpIsrInfo
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#07H
	LCALL	?C?CLDOPTR
	ANL  	A,waitFor?556
	JNZ  	?C0031
	LCALL	GetTickCount
	CLR  	C
	MOV  	A,R7
	SUBB 	A,starttime?557+01H
	MOV  	R7,A
	MOV  	A,R6
	SUBB 	A,starttime?557

⌨️ 快捷键说明

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