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

📄 para.src

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 SRC
📖 第 1 页 / 共 3 页
字号:
	MOV  	DPTR,#i?042
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	A
	MOV  	R5,A
	LCALL	_FlashWrByte
;             }
			; SOURCE LINE # 114
;         }
			; SOURCE LINE # 115
;     }
			; SOURCE LINE # 116
?C0009:
	MOV  	DPTR,#i?042+01H
	MOVX 	A,@DPTR
	ADD  	A,#02H
	MOVX 	@DPTR,A
	MOV  	DPTR,#i?042
	MOVX 	A,@DPTR
	ADDC 	A,#00H
	MOVX 	@DPTR,A
	LJMP 	?C0007
?C0008:
;     
;     // check redo flag
;     if(fRedo)
			; SOURCE LINE # 119
	JNB  	fRedo?046,?C0016
;         return -1;
			; SOURCE LINE # 120
?C0069:
	MOV  	R6,#0FFH
	MOV  	R7,#0FFH
	RET  	
?C0016:
;     
;     // copy parameters to new sector and erase old one
;     // and update start address
;     if(StartAddr == ParaStart+2)
			; SOURCE LINE # 124
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#02H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	MOV  	DPTR,#StartAddr?045
	MOVX 	A,@DPTR
	XRL  	A,R6
	JNZ  	?C0054
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,R7
?C0054:
	JNZ  	?C0017
;     {
			; SOURCE LINE # 125
;         ParaCopy(1);
			; SOURCE LINE # 126
	SETB 	?ParaCopy?BIT
	LCALL	ParaCopy
;         StartAddr = ParaStart + SECTOR_SIZE + 2;
			; SOURCE LINE # 127
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#082H
;     }
			; SOURCE LINE # 128
	SJMP 	?C0067
?C0017:
;     else
;     {
			; SOURCE LINE # 130
;         ParaCopy(0);
			; SOURCE LINE # 131
	CLR  	?ParaCopy?BIT
	LCALL	ParaCopy
;         StartAddr = ParaStart + 2;
			; SOURCE LINE # 132
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#02H
?C0067:
	MOV  	R6,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	DPTR,#StartAddr?045
	MOVX 	@DPTR,A
	INC  	DPTR
	XCH  	A,R6
	MOVX 	@DPTR,A
;     }
			; SOURCE LINE # 133
?C0018:
;     
;     // update redo flag
;     fRedo = 1;
			; SOURCE LINE # 136
	SETB 	fRedo?046
;     // again
;     goto Redo;
			; SOURCE LINE # 138
	LJMP 	?_ParaWrite?Redo
; END OF _ParaWrite

; }
; 
; // read a pafameter value
; // para: parameter to be read
; // return: positive value for reading, -1 for error
; int ParaRead(unsigned char para)

	RSEG  ?PR?_ParaRead?PARA
_ParaRead:
	USING	0
			; SOURCE LINE # 144
	MOV  	DPTR,#para?147
	MOV  	A,R7
	MOVX 	@DPTR,A
; {
			; SOURCE LINE # 145
;     unsigned int i;
;     unsigned int StartAddr;
;     unsigned char oldpara;
;     
;     // find which sector is in use now
;     if(FlashRdByte(ParaStart+1) == H_USING)
			; SOURCE LINE # 151
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#01H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	CJNE 	R7,#0F0H,?C0019
;         StartAddr = ParaStart + 2;
			; SOURCE LINE # 152
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#02H
	SJMP 	?C0070
?C0019:
;     else if(FlashRdByte(ParaStart+SECTOR_SIZE+1) == H_USING)
			; SOURCE LINE # 153
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#081H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	CJNE 	R7,#0F0H,?C0021
;         StartAddr = ParaStart + SECTOR_SIZE + 2;
			; SOURCE LINE # 154
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#082H
?C0070:
	MOV  	R6,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	DPTR,#StartAddr?149
	MOVX 	@DPTR,A
	INC  	DPTR
	XCH  	A,R6
	MOVX 	@DPTR,A
	SJMP 	?C0020
?C0021:
;     else
;         return -1;
			; SOURCE LINE # 156
	SJMP 	?C0072
?C0020:
; 
;     // search parameter
;     for(i=StartAddr; i<StartAddr+SECTOR_SIZE-2; i+=2)
			; SOURCE LINE # 159
	MOV  	DPTR,#StartAddr?149
	MOVX 	A,@DPTR
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#i?148
	XCH  	A,R7
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
?C0024:
	MOV  	DPTR,#StartAddr?149+01H
	MOVX 	A,@DPTR
	ADD  	A,#07EH
	MOV  	R5,A
	MOV  	DPTR,#StartAddr?149
	MOVX 	A,@DPTR
	ADDC 	A,#00H
	MOV  	R4,A
	MOV  	DPTR,#i?148
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	SUBB 	A,R5
	MOV  	A,R6
	SUBB 	A,R4
	JNC  	?C0025
;     {
			; SOURCE LINE # 160
;         oldpara = FlashRdByte(i);
			; SOURCE LINE # 161
	LCALL	_FlashRdByte
	MOV  	DPTR,#oldpara?150
	MOV  	A,R7
	MOVX 	@DPTR,A
;         if(oldpara == para)
			; SOURCE LINE # 162
	MOV  	DPTR,#para?147
	MOVX 	A,@DPTR
	XRL  	A,R7
	JNZ  	?C0027
;             return FlashRdByte(i+1);
			; SOURCE LINE # 163
	MOV  	DPTR,#i?148+01H
	MOVX 	A,@DPTR
	ADD  	A,#01H
	MOV  	R7,A
	MOV  	DPTR,#i?148
	MOVX 	A,@DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	MOV  	R6,#00H
	RET  	
?C0027:
;         else if(oldpara == PARA_EMPTY)
			; SOURCE LINE # 164
	MOV  	DPTR,#oldpara?150
	MOVX 	A,@DPTR
	CJNE 	A,#0FFH,?C0026
;             return -1;
			; SOURCE LINE # 165
?C0071:
	SJMP 	?C0072
;     }
			; SOURCE LINE # 166
?C0026:
	MOV  	DPTR,#i?148+01H
	MOVX 	A,@DPTR
	ADD  	A,#02H
	MOVX 	@DPTR,A
	MOV  	DPTR,#i?148
	MOVX 	A,@DPTR
	ADDC 	A,#00H
	MOVX 	@DPTR,A
	SJMP 	?C0024
?C0025:
;     
;     return -1;
			; SOURCE LINE # 168
?C0072:
	MOV  	R6,#0FFH
	MOV  	R7,#0FFH
; }
			; SOURCE LINE # 169
?C0023:
	RET  	
; END OF _ParaRead

; 
; // parameter sector initialize
; // return: <2 for exist, >=2 for new formated
; unsigned char ParaMemInit(void)

	RSEG  ?PR?ParaMemInit?PARA
ParaMemInit:
	USING	0
			; SOURCE LINE # 173
; {
			; SOURCE LINE # 174
;     unsigned int s0head, s0flag;
;     unsigned int s1head, s1flag;
;     unsigned char ch = 0;
			; SOURCE LINE # 177
	CLR  	A
	MOV  	DPTR,#ch?255
	MOVX 	@DPTR,A
;     
;     ComWrite("Mem initializing...\r\n", 21);
			; SOURCE LINE # 179
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_0)
	MOV  	R1,#LOW (?SC_0)
	MOV  	R5,#015H
	MOV  	R4,A
	LCALL	_ComWrite
;     
;     s0head = FlashRdByte(ParaStart);
			; SOURCE LINE # 181
	MOV  	DPTR,#ParaStart
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	LCALL	_FlashRdByte
	MOV  	DPTR,#s0head?251
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     s0flag = FlashRdByte(ParaStart+1);
			; SOURCE LINE # 182
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#01H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	MOV  	DPTR,#s0flag?252
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     s1head = FlashRdByte(ParaStart+SECTOR_SIZE);
			; SOURCE LINE # 183
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#080H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	MOV  	DPTR,#s1head?253
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     s1flag = FlashRdByte(ParaStart+SECTOR_SIZE+1);
			; SOURCE LINE # 184
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#081H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	MOV  	DPTR,#s1flag?254
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;     
;     checkhead:
			; SOURCE LINE # 186
?ParaMemInit?checkhead:
;     // check sector 0
;     if(s0head != PARA_HEAD)
			; SOURCE LINE # 188
	MOV  	DPTR,#s0head?251
	MOVX 	A,@DPTR
	JNZ  	?C0055
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#055H
?C0055:
	JZ   	?C0031
;     {
			; SOURCE LINE # 189
;         FlashErSector(ParaStart);
			; SOURCE LINE # 190
	MOV  	DPTR,#ParaStart
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	LCALL	_FlashErSector
;         FlashWrByte(ParaStart, PARA_HEAD);
			; SOURCE LINE # 191
	MOV  	DPTR,#ParaStart
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	MOV  	R5,#055H
	LCALL	_FlashWrByte
;         s0flag = FlashRdByte(ParaStart+1);
			; SOURCE LINE # 192
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#01H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	MOV  	DPTR,#s0flag?252
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;         ch ++;
			; SOURCE LINE # 193
	MOV  	DPTR,#ch?255
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
;         ComWrite("S0 empty.\r\n", 11);
			; SOURCE LINE # 194
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_22)
	MOV  	R1,#LOW (?SC_22)
	MOV  	R5,#0BH
	MOV  	R4,#00H
	LCALL	_ComWrite
;     }
			; SOURCE LINE # 195
?C0031:
;     
;     // check sector 1
;     if(s1head != PARA_HEAD)
			; SOURCE LINE # 198
	MOV  	DPTR,#s1head?253
	MOVX 	A,@DPTR
	JNZ  	?C0056
	INC  	DPTR
	MOVX 	A,@DPTR
	XRL  	A,#055H
?C0056:
	JZ   	?C0032
;     {
			; SOURCE LINE # 199
;         FlashErSector(ParaStart+SECTOR_SIZE);
			; SOURCE LINE # 200
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#080H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashErSector
;         FlashWrByte(ParaStart+SECTOR_SIZE, PARA_HEAD);
			; SOURCE LINE # 201
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#080H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	MOV  	R5,#055H
	LCALL	_FlashWrByte
;         s1flag = FlashRdByte(ParaStart+SECTOR_SIZE+1);
			; SOURCE LINE # 202
	MOV  	DPTR,#ParaStart
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	ADD  	A,#081H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	LCALL	_FlashRdByte
	MOV  	DPTR,#s1flag?254
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;         ch ++;
			; SOURCE LINE # 203
	INC  	DPTR
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
;         ComWrite("S1 empty.\r\n", 11);
			; SOURCE LINE # 204
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_34)
	MOV  	R1,#LOW (?SC_34)
	MOV  	R5,#0BH
	MOV  	R4,#00H
	LCALL	_ComWrite
;     }
			; SOURCE LINE # 205
?C0032:
;     
;     // deside which sector is to be used
;     if((s0flag == H_EMPTY) && (s1flag == H_EMPTY))
			; SOURCE LINE # 208
	MOV  	DPTR,#s0flag?252
	MOVX 	A,@DPTR
	JNZ  	?C0057
	INC  	DPTR
	MOVX 	A,@DPTR
	CPL  	A
?C0057:
	JNZ  	?C0033
	MOV  	DPTR,#s1flag?254
	MOVX 	A,@DPTR
	JNZ  	?C0058
	INC  	DPTR
	MOVX 	A,@DPTR
	CPL  	A
?C0058:
	JNZ  	?C0033
;     {
			; SOURCE LINE # 209
;         FlashWrByte(ParaStart+1, H_USING);
			; SOURCE LINE # 210
	MOV  	DPTR,#ParaStart
	INC  	A
	MOVC 	A,@A+DPTR
	ADD  	A,#01H
	MOV  	R7,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADDC 	A,#00H
	MOV  	R6,A
	MOV  	R5,#0F0H
	LCALL	_FlashWrByte
;         ch += 2;
			; SOURCE LINE # 211
	MOV  	DPTR,#ch?255
	MOVX 	A,@DPTR
	ADD  	A,#02H
	MOVX 	@DPTR,A
;         ComWrite("Both empty, use S0.\r\n", 21);
			; SOURCE LINE # 212
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_46)
	MOV  	R1,#LOW (?SC_46)
	MOV  	R5,#015H
;     }
			; SOURCE LINE # 213
	SJMP 	?C0074
?C0033:
;     else if((s0flag == H_ERASED) && (s1flag == H_COPYING))
			; SOURCE LINE # 214
	MOV  	DPTR,#s0flag?252
	MOVX 	A,@DPTR
	JNZ  	?C0059
	INC  	DPTR
	MOVX 	A,@DPTR
?C0059:
	JNZ  	?C0035
	MOV  	DPTR,#s1flag?254

⌨️ 快捷键说明

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