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

📄 comm.src

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	MOV  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R4
	MOVX 	@DPTR,A
	MOV  	R6,A
	INC  	DPTR
	MOV  	A,R5
	MOVX 	@DPTR,A
	MOV  	R7,A
; {
			; SOURCE LINE # 62
; 	unsigned char data lrc;
; 	unsigned char data exbuf[3];
; 	int i;
; 	
; 	exbuf[0] = 0x02;
			; SOURCE LINE # 67
	MOV  	exbuf?149,#02H
; 	hex2bcd(len, exbuf+1);
			; SOURCE LINE # 68
	MOV  	R3,#00H
	MOV  	R2,#HIGH (exbuf?149+01H)
	MOV  	R1,#LOW (exbuf?149+01H)
	LCALL	_hex2bcd
; 	lrc = exbuf[1] ^ exbuf[2] ^ 0x03;
			; SOURCE LINE # 69
	MOV  	A,exbuf?149+01H
	XRL  	A,exbuf?149+02H
	XRL  	A,#03H
	MOV  	lrc?148,A
; 	
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 71
;---- Variable 'i?150' assigned to Register 'R6/R7' ----
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
?C0013:
	SETB 	C
	MOV  	DPTR,#len?147+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	A,R6
	XRL  	A,#080H
	MOV  	R0,A
	MOV  	DPTR,#len?147
	MOVX 	A,@DPTR
	XRL  	A,#080H
	SUBB 	A,R0
	JC   	?C0014
; 	{
			; SOURCE LINE # 72
; 	    if(InvPack)
			; SOURCE LINE # 73
	JNB  	InvPack,?C0016
; 	        buf[i] ^= 0xff;
			; SOURCE LINE # 74
	MOV  	DPTR,#buf?146
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,R7
	MOV  	R1,A
	MOV  	A,R2
	ADDC 	A,R6
	MOV  	R2,A
	LCALL	?C?CLDPTR
	CPL  	A
	LCALL	?C?CSTPTR
?C0016:
; 	        
; 	    lrc ^= buf[i];
			; SOURCE LINE # 76
	MOV  	DPTR,#buf?146
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,R7
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
	XRL  	lrc?148,A
; 	}
			; SOURCE LINE # 77
	INC  	R7
	CJNE 	R7,#00H,?C0039
	INC  	R6
?C0039:
	SJMP 	?C0013
?C0014:
; 	
;     ComWrite(exbuf, 3);
			; SOURCE LINE # 79
	MOV  	R3,#00H
	MOV  	R2,#HIGH (exbuf?149)
	MOV  	R1,#LOW (exbuf?149)
	MOV  	R5,#03H
	MOV  	R4,#00H
	LCALL	_ComWrite
;     ComWrite(buf, len);
			; SOURCE LINE # 80
	MOV  	DPTR,#buf?146
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	LCALL	_ComWrite
;     ComWrite("\x03", 1);
			; SOURCE LINE # 81
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_0)
	MOV  	R1,#LOW (?SC_0)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_ComWrite
;     ComWrite(&lrc, 1);
			; SOURCE LINE # 82
	MOV  	R3,#00H
	MOV  	R2,#HIGH (lrc?148)
	MOV  	R1,#LOW (lrc?148)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LJMP 	_ComWrite
; END OF _CommSendNotWaitAck

; }
; 
; unsigned int CommRead(unsigned char *buf, int maxlen)

	RSEG  ?PR?_CommRead?COMM
_CommRead:
	USING	0
			; SOURCE LINE # 85
	MOV  	DPTR,#buf?251
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R4
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R5
	MOVX 	@DPTR,A
; {
			; SOURCE LINE # 86
;     unsigned char ctrl;
;     unsigned int len, i;
;     unsigned char packlen[2];
;     
;     if(ComIBufBytesTell() == 0)
			; SOURCE LINE # 91
	LCALL	ComIBufBytesTell
	MOV  	A,R7
	ORL  	A,R6
	JNZ  	?C0018
;         return 0;
			; SOURCE LINE # 92
	MOV  	R6,A
	MOV  	R7,A
	RET  	
?C0018:
;     //////////////////////////////////////////////////////
;     // 通讯层的解包,不需要更改                         //
;     if(ComRead(&ctrl, 1) < 1)                           //
			; SOURCE LINE # 95
	MOV  	R3,#01H
	MOV  	R2,#HIGH (ctrl?253)
	MOV  	R1,#LOW (ctrl?253)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_ComRead
	CLR  	C
	MOV  	A,R7
	SUBB 	A,#01H
	MOV  	A,R6
	SUBB 	A,#00H
	JNC  	?C0020
;         return 0;               //stx                   //
			; SOURCE LINE # 96
	LJMP 	?C0049
?C0020:
;     if(ctrl != STX)                                     //
			; SOURCE LINE # 97
	MOV  	DPTR,#ctrl?253
	MOVX 	A,@DPTR
	XRL  	A,#02H
	JZ   	?C0021
;         return 0;                                       //
			; SOURCE LINE # 98
?C0042:
	LJMP 	?C0049
?C0021:
;     if(ComRead(packlen, 2) < 2)                         //
			; SOURCE LINE # 99
	MOV  	R3,#01H
	MOV  	R2,#HIGH (packlen?256)
	MOV  	R1,#LOW (packlen?256)
	MOV  	R5,#02H
	MOV  	R4,#00H
	LCALL	_ComRead
	CLR  	C
	MOV  	A,R7
	SUBB 	A,#02H
	MOV  	A,R6
	SUBB 	A,#00H
	JNC  	?C0022
;         return 0;               //len1, len2            //
			; SOURCE LINE # 100
?C0043:
	LJMP 	?C0049
?C0022:
;     len = bcd2hex(packlen);                             //
			; SOURCE LINE # 101
	MOV  	R3,#01H
	MOV  	R2,#HIGH (packlen?256)
	MOV  	R1,#LOW (packlen?256)
	LCALL	_bcd2hex
	MOV  	DPTR,#len?254
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     if(len > maxlen)                                    //
			; SOURCE LINE # 102
	CLR  	C
	MOV  	DPTR,#maxlen?252+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#maxlen?252
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JNC  	?C0023
;         return 0;               // too max len          //
			; SOURCE LINE # 103
?C0044:
	LJMP 	?C0049
?C0023:
;     if(ComRead(buf, len) < len)                         //
			; SOURCE LINE # 104
	MOV  	DPTR,#buf?251
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#len?254
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	LCALL	_ComRead
	SETB 	C
	MOV  	DPTR,#len?254+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#len?254
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JC   	?C0024
;         return 0;               //package + etx + lrc   //
			; SOURCE LINE # 105
?C0045:
	LJMP 	?C0049
?C0024:
;     if(ComRead(&ctrl, 1) < 1)
			; SOURCE LINE # 106
	MOV  	R3,#01H
	MOV  	R2,#HIGH (ctrl?253)
	MOV  	R1,#LOW (ctrl?253)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_ComRead
	CLR  	C
	MOV  	A,R7
	SUBB 	A,#01H
	MOV  	A,R6
	SUBB 	A,#00H
	JNC  	?C0025
;         return 0;
			; SOURCE LINE # 107
?C0046:
	LJMP 	?C0049
?C0025:
;     if(ctrl != ETX)
			; SOURCE LINE # 108
	MOV  	DPTR,#ctrl?253
	MOVX 	A,@DPTR
	XRL  	A,#03H
	JZ   	?C0026
;         return 0;
			; SOURCE LINE # 109
?C0047:
	LJMP 	?C0049
?C0026:
;     if(ComRead(&ctrl, 1) < 1)   // read lrc
			; SOURCE LINE # 110
	MOV  	R3,#01H
	MOV  	R2,#HIGH (ctrl?253)
	MOV  	R1,#LOW (ctrl?253)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_ComRead
	CLR  	C
	MOV  	A,R7
	SUBB 	A,#01H
	MOV  	A,R6
	SUBB 	A,#00H
	JNC  	?C0027
;         return 0;
			; SOURCE LINE # 111
?C0048:
	SJMP 	?C0049
?C0027:
;     ctrl ^= packlen[0] ^ packlen[1] ^ ETX;
			; SOURCE LINE # 112
	MOV  	DPTR,#ctrl?253
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#packlen?256+01H
	MOVX 	A,@DPTR
	MOV  	R6,A
	MOV  	DPTR,#packlen?256
	MOVX 	A,@DPTR
	XRL  	A,R6
	XRL  	A,#03H
	MOV  	R6,A
	MOV  	A,R7
	XRL  	A,R6
	MOV  	DPTR,#ctrl?253
	MOVX 	@DPTR,A
;     for(i=0; i<len; i++)
			; SOURCE LINE # 113
	CLR  	A
	MOV  	DPTR,#i?255
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0028:
	MOV  	DPTR,#len?254
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	C
	SUBB 	A,R7
	MOV  	A,R4
	SUBB 	A,R6
	JNC  	?C0029
;         ctrl ^= buf[i];
			; SOURCE LINE # 114
	MOV  	DPTR,#ctrl?253
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#buf?251
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,R5
	MOV  	DPH,R4
	LCALL	?C?CLDOPTR
	MOV  	R6,A
	MOV  	A,R7
	XRL  	A,R6
	MOV  	DPTR,#ctrl?253
	MOVX 	@DPTR,A
	MOV  	DPTR,#i?255+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0028
	MOV  	DPTR,#i?255
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0040:
	SJMP 	?C0028
?C0029:
;     if(ctrl != 0)
			; SOURCE LINE # 115
	MOV  	DPTR,#ctrl?253
	MOVX 	A,@DPTR
	JZ   	?C0031
;     {                                                   //
			; SOURCE LINE # 116
;         ComWrite("\x15", 1);    // nak                  //
			; SOURCE LINE # 117
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_2)
	MOV  	R1,#LOW (?SC_2)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_ComWrite
;         return 0;                                       //
			; SOURCE LINE # 118
?C0049:
	CLR  	A
	MOV  	R6,A
	MOV  	R7,A
	RET  	
;     }                                                   //
			; SOURCE LINE # 119
?C0031:
;     ComWrite("\x06", 1);        // ack                  //
			; SOURCE LINE # 120
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_4)
	MOV  	R1,#LOW (?SC_4)
	MOV  	R5,#01H
	MOV  	R4,#00H
	LCALL	_ComWrite
;     // 通讯解包完成                                     //
;     //////////////////////////////////////////////////////
; 
;     if(InvPack)
			; SOURCE LINE # 124
	JNB  	InvPack,?C0032
;     {
			; SOURCE LINE # 125
;         for(i=0; i<len; i++)
			; SOURCE LINE # 126
	CLR  	A
	MOV  	DPTR,#i?255
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0033:
	MOV  	DPTR,#len?254
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	CLR  	C
	SUBB 	A,R7
	MOV  	A,R4
	SUBB 	A,R6
	JNC  	?C0032
;             buf[i] ^= 0xff;
			; SOURCE LINE # 127
	MOV  	DPTR,#buf?251
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,R5
	MOV  	R1,A
	MOV  	A,R2
	ADDC 	A,R4
	MOV  	R2,A
	LCALL	?C?CLDPTR
	CPL  	A
	LCALL	?C?CSTPTR
	MOV  	DPTR,#i?255+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0033
	MOV  	DPTR,#i?255
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0041:
	SJMP 	?C0033
;     }
			; SOURCE LINE # 128
?C0032:
;     
;     return len;
			; SOURCE LINE # 130
	MOV  	DPTR,#len?254
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
; }
			; SOURCE LINE # 131
?C0019:
	RET  	
; END OF _CommRead

; 
; void CommUseDbg(bit fusedbg)

	RSEG  ?PR?CommUseDbg?COMM
CommUseDbg:
			; SOURCE LINE # 133
; {
			; SOURCE LINE # 134
;     UseDebug = fusedbg;
			; SOURCE LINE # 135
	MOV  	C,fusedbg?357
	MOV  	UseDebug,C
; }
			; SOURCE LINE # 136
	RET  	
; END OF CommUseDbg

	END

⌨️ 快捷键说明

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