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

📄 uart.src

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	MOV  	R6,OBufPutIdx
	INC  	OBufPutIdx
	MOV  	A,#LOW (OutputBuf)
	ADD  	A,R6
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (OutputBuf)
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
; 	
; 	#if (OBUF_SIZE != 256)
;    		if(OBufPutIdx==OBUF_SIZE)
			; SOURCE LINE # 157
	MOV  	A,OBufPutIdx
	CJNE 	A,#010H,?C0019
;    		    OBufPutIdx=0;
			; SOURCE LINE # 158
	CLR  	A
	MOV  	OBufPutIdx,A
?C0019:
; 	#endif
; 
; 	if(!SbufWorking)
			; SOURCE LINE # 161
	JB   	SbufWorking,?C0020
; 	{
			; SOURCE LINE # 162
; 		SbufWorking = 1;
			; SOURCE LINE # 163
	SETB 	SbufWorking
; 		StartSend();
			; SOURCE LINE # 164
	SETB 	TI
; 	}
			; SOURCE LINE # 165
?C0020:
; 	LeaveCrtcl();
			; SOURCE LINE # 166
	SETB 	ES
;   	
;    	return 1;
			; SOURCE LINE # 168
	SETB 	C
; }
			; SOURCE LINE # 169
?C0017:
	RET  	
; END OF _PutOutputData

; 
; void ComOpen(unsigned long clk, unsigned long baudrate)

	RSEG  ?PR?_ComOpen?UART
_ComOpen:
	USING	0
			; SOURCE LINE # 171
	MOV  	DPTR,#clk?542
	LCALL	?C?LSTXDATA
; {	
			; SOURCE LINE # 172
; 	unsigned char tmp;
; 	
; 	if(baudrate >= 9000)
			; SOURCE LINE # 175
	CLR  	A
	MOV  	R7,#028H
	MOV  	R6,#023H
	MOV  	R5,A
	MOV  	R4,A
	MOV  	DPTR,#baudrate?543
	MOVX 	A,@DPTR
	MOV  	R0,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R3,A
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0021
; 	{
			; SOURCE LINE # 176
; 	    PCON |= SMOD_;
			; SOURCE LINE # 177
	ORL  	PCON,#080H
; 	    tmp = (clk >> 4) / baudrate;
			; SOURCE LINE # 178
	MOV  	DPTR,#clk?542
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R0,#04H
; 	}
			; SOURCE LINE # 179
	SJMP 	?C0052
?C0021:
; 	else
; 	{
			; SOURCE LINE # 181
; 	    PCON &= ~SMOD_;
			; SOURCE LINE # 182
	ANL  	PCON,#07FH
; 	    tmp = (clk >> 5) / baudrate;
			; SOURCE LINE # 183
	MOV  	DPTR,#clk?542
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R0,#05H
?C0052:
	LCALL	?C?ULSHR
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R0,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R3,A
	LCALL	?C?ULDIV
	MOV  	DPTR,#tmp?544
	MOV  	A,R7
	MOVX 	@DPTR,A
; 	}
			; SOURCE LINE # 184
?C0022:
; 	    
;     SetIntPri(SIO_VECTOR, 1);
			; SOURCE LINE # 186
	MOV  	R5,#01H
	MOV  	R7,#04H
	LCALL	_SetIntPri
;     
; 	TI = RI = 0;
			; SOURCE LINE # 188
	CLR  	RI
	CLR  	TI
; 	SCON = 	0x50;
			; SOURCE LINE # 189
	MOV  	SCON,#050H
;   	TMOD &= 0x0F;
			; SOURCE LINE # 190
	ANL  	TMOD,#0FH
;   	TMOD |=	0x20;
			; SOURCE LINE # 191
	ORL  	TMOD,#020H
;   	TR1 = 1;
			; SOURCE LINE # 192
	SETB 	TR1
;   	TH1 = 256 - tmp;
			; SOURCE LINE # 193
	MOV  	DPTR,#tmp?544
	MOVX 	A,@DPTR
	CPL  	A
	INC  	A
	MOV  	TH1,A
;   	enable();
			; SOURCE LINE # 194
	SETB 	EA
;   	ES=1;
			; SOURCE LINE # 195
	SETB 	ES
; }
			; SOURCE LINE # 196
	RET  	
; END OF _ComOpen

; 
; unsigned int ComWrite( unsigned char *buf, unsigned int len )

	RSEG  ?PR?_ComWrite?UART
_ComWrite:
	USING	0
			; SOURCE LINE # 198
	MOV  	DPTR,#buf?645
	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 # 199
; 	unsigned int i;
; 	unsigned int starttime;
; 	
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 203
	CLR  	A
	INC  	DPTR
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0024:
	MOV  	DPTR,#len?646
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	DPTR,#i?647+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#i?647
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JNC  	?C0025
; 	{
			; SOURCE LINE # 204
;     	starttime = GetTickCount();
			; SOURCE LINE # 205
	LCALL	GetTickCount
	MOV  	DPTR,#starttime?648
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
?C0027:
; 		while( !PutOutputData(buf[i]) )
			; SOURCE LINE # 206
	MOV  	DPTR,#buf?645
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#i?647
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPL,A
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	LCALL	_PutOutputData
	JC   	?C0026
; 		{
			; SOURCE LINE # 207
; 			if(OutputOutTime==0 || (GetTickCount() - starttime >= OutputOutTime))
			; SOURCE LINE # 208
	MOV  	DPTR,#OutputOutTime
	MOVX 	A,@DPTR
	JNZ  	?C0047
	INC  	DPTR
	MOVX 	A,@DPTR
?C0047:
	JZ   	?C0053
	LCALL	GetTickCount
	MOV  	DPTR,#starttime?648
	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
	SETB 	C
	MOV  	DPTR,#OutputOutTime+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#OutputOutTime
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JNC  	?C0027
?C0030:
; 			    return i;
			; SOURCE LINE # 209
	SJMP 	?C0053
; 		}
			; SOURCE LINE # 210
; 	}
			; SOURCE LINE # 211
?C0026:
	MOV  	DPTR,#i?647+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0024
	MOV  	DPTR,#i?647
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0048:
	SJMP 	?C0024
?C0025:
; 	return i;
			; SOURCE LINE # 212
?C0053:
	MOV  	DPTR,#i?647
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
; }
			; SOURCE LINE # 213
?C0031:
	RET  	
; END OF _ComWrite

; 
; unsigned int ComRead( unsigned char *buf, unsigned int len )

	RSEG  ?PR?_ComRead?UART
_ComRead:
	USING	0
			; SOURCE LINE # 215
	MOV  	DPTR,#buf?749
	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 # 216
; 	unsigned int i;
; 	unsigned int starttime;
; 	int tmp;
; 
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 221
	CLR  	A
	INC  	DPTR
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0032:
	MOV  	DPTR,#len?750
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	DPTR,#i?751+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#i?751
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JNC  	?C0033
; 	{
			; SOURCE LINE # 222
;     	starttime = GetTickCount();
			; SOURCE LINE # 223
	LCALL	GetTickCount
	MOV  	DPTR,#starttime?752
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
?C0035:
; 		while((tmp = GetInputData()) < 0)
			; SOURCE LINE # 224
	LCALL	GetInputData
	MOV  	DPTR,#tmp?753
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
	CLR  	C
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JNC  	?C0036
; 		{
			; SOURCE LINE # 225
; 			if(InputOutTime==0 || (GetTickCount() - starttime >= InputOutTime))
			; SOURCE LINE # 226
	MOV  	DPTR,#InputOutTime
	MOVX 	A,@DPTR
	JNZ  	?C0049
	INC  	DPTR
	MOVX 	A,@DPTR
?C0049:
	JZ   	?C0054
	LCALL	GetTickCount
	MOV  	DPTR,#starttime?752
	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
	SETB 	C
	MOV  	DPTR,#InputOutTime+01H
	MOVX 	A,@DPTR
	SUBB 	A,R7
	MOV  	DPTR,#InputOutTime
	MOVX 	A,@DPTR
	SUBB 	A,R6
	JNC  	?C0035
?C0038:
; 				return i;
			; SOURCE LINE # 227
	SJMP 	?C0054
; 		}
			; SOURCE LINE # 228
?C0036:
; 		buf[i] = (unsigned char)tmp;
			; SOURCE LINE # 229
	MOV  	DPTR,#tmp?753
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#buf?749
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPTR,#i?751
	MOVX 	A,@DPTR
	MOV  	R4,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPL,A
	MOV  	DPH,R4
	MOV  	A,R7
	LCALL	?C?CSTOPTR
; 	}
			; SOURCE LINE # 230
	MOV  	DPTR,#i?751+01H
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	JNZ  	?C0050
	MOV  	DPTR,#i?751
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
?C0050:
	LJMP 	?C0032
?C0033:
; 	return i;
			; SOURCE LINE # 231
?C0054:
	MOV  	DPTR,#i?751
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
; }
			; SOURCE LINE # 232
?C0039:
	RET  	
; END OF _ComRead

; 
; void ComSetTimeOut(unsigned int iouttime, unsigned int oouttime)

	RSEG  ?PR?_ComSetTimeOut?UART
_ComSetTimeOut:
	USING	0
			; SOURCE LINE # 234
;---- Variable 'oouttime?855' assigned to Register 'R4/R5' ----
;---- Variable 'iouttime?854' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 235
; 	InputOutTime=iouttime;
			; SOURCE LINE # 236
	MOV  	DPTR,#InputOutTime
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
; 	OutputOutTime=oouttime;
			; SOURCE LINE # 237
	XCH  	A,R7
	MOV  	A,R5
	XCH  	A,R7
	INC  	DPTR
	MOV  	A,R4
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
; }
			; SOURCE LINE # 238
	RET  	
; END OF _ComSetTimeOut

; 
; unsigned int ComIBufBytesTell( void )

	RSEG  ?PR?ComIBufBytesTell?UART
ComIBufBytesTell:
	USING	0
			; SOURCE LINE # 240
;---- Variable 'ii?956' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 241
; 	unsigned int ii;
; 
; 	if(IBufPutIdx>=IBufGetIdx)
			; SOURCE LINE # 244
	MOV  	A,IBufPutIdx
	CLR  	C
	SUBB 	A,IBufGetIdx
	JC   	?C0041
; 	{
			; SOURCE LINE # 245
; 		ii=(unsigned int)(IBufPutIdx-IBufGetIdx);
			; SOURCE LINE # 246
	MOV  	A,IBufPutIdx
	SUBB 	A,IBufGetIdx
	MOV  	R7,A
	CLR  	A
	SUBB 	A,#00H
	MOV  	R6,A
; 	}
			; SOURCE LINE # 247
	SJMP 	?C0042
?C0041:
; 	else
; 	{
			; SOURCE LINE # 249
; 		ii=(unsigned int)(BUF_SIZE-IBufGetIdx+IBufPutIdx);
			; SOURCE LINE # 250
	CLR  	C
	MOV  	A,#020H
	SUBB 	A,IBufGetIdx
	MOV  	R7,A
	CLR  	A
	SUBB 	A,#00H
	MOV  	R6,A
	MOV  	R4,#00H
	MOV  	A,R7
	ADD  	A,IBufPutIdx
	MOV  	R7,A
	MOV  	A,R4
	ADDC 	A,R6
	MOV  	R6,A
; 	}
			; SOURCE LINE # 251
?C0042:
; 	return ii;
			; SOURCE LINE # 252
; }
			; SOURCE LINE # 253
?C0043:
	RET  	
; END OF ComIBufBytesTell

; 
; void ComClear( unsigned char flag )

	RSEG  ?PR?_ComClear?UART
_ComClear:
			; SOURCE LINE # 255
;---- Variable 'flag?1057' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 256
; 	if( flag & 0x01 ) IBufGetIdx = IBufPutIdx;
			; SOURCE LINE # 257
	MOV  	A,R7
	JNB  	ACC.0,?C0044
	MOV  	IBufGetIdx,IBufPutIdx
?C0044:
; 	if( flag & 0x02 ) OBufGetIdx = OBufPutIdx;
			; SOURCE LINE # 258
	MOV  	A,R7
	JNB  	ACC.1,?C0046
	MOV  	OBufGetIdx,OBufPutIdx
; }
			; SOURCE LINE # 259
?C0046:
	RET  	
; END OF _ComClear

	END

⌨️ 快捷键说明

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