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

📄 serial.src

📁 串口程序
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	MOVX 	@DPTR,A
?C0008:
;                 if(t==outRxBuf) return;                 //RxBuf Full
			; SOURCE LINE # 87
	MOV  	DPTR,#outRxBuf
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	PUSH 	AR3
	PUSH 	AR2
	PUSH 	AR1
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	POP  	DPL
	POP  	DPH
	POP  	ACC
	XRL  	A,R3
	JNZ  	?C0031
	MOV  	A,R1
	XRL  	A,DPL
	JNZ  	?C0031
	MOV  	A,R2
	XRL  	A,DPH
?C0031:
	JZ   	?C0005
?C0009:
;                 *inRxBuf=SBUF;
			; SOURCE LINE # 88
	MOV  	DPTR,#inRxBuf
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,SBUF
	LCALL	?C?CSTPTR
;                 inRxBuf=t;
			; SOURCE LINE # 89
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#inRxBuf
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;         }
			; SOURCE LINE # 90
; }
			; SOURCE LINE # 91
?C0005:
	MOV  	DPTR,#03H
	LJMP 	?C?ADDXBP
; END OF _?serial

; 
; 
; 
; void PrintChar(unsigned char ch) reentrant//显示字符

	RSEG  ?PR?_?PrintChar?SERIAL
_?PrintChar:
	USING	0
			; SOURCE LINE # 95
	MOV  	DPTR,#0FFFFH
	LCALL	?C?ADDXBP
	MOV  	A,R7
	MOVX 	@DPTR,A
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
; {
;         unsigned char *t;
; 
;         //ES=0;
; //入临界区
; 		OS_ENTER_CRITICAL();
			; SOURCE LINE # 101
	CLR  	EA
;         t=inTxBuf;t++;
			; SOURCE LINE # 102
	MOV  	DPTR,#inTxBuf
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R2,AR6
	MOV  	R1,A
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?IILDX
;         if(t==TxBuf+LenTxBuf) t=TxBuf;
			; SOURCE LINE # 103
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,#01H
	MOV  	DPTR,#TxBuf+07D0H
	XRL  	A,R3
	JNZ  	?C0032
	MOV  	A,R1
	XRL  	A,DPL
	JNZ  	?C0032
	MOV  	A,R2
	XRL  	A,DPH
?C0032:
	JNZ  	?C0010
	MOV  	R3,#01H
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (TxBuf)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (TxBuf)
	MOVX 	@DPTR,A
?C0010:
;         if(t==outTxBuf) {/*ES=1;*/
			; SOURCE LINE # 104
	MOV  	DPTR,#outTxBuf
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	PUSH 	AR3
	PUSH 	AR2
	PUSH 	AR1
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	POP  	DPL
	POP  	DPH
	POP  	ACC
	XRL  	A,R3
	JNZ  	?C0033
	MOV  	A,R1
	XRL  	A,DPL
	JNZ  	?C0033
	MOV  	A,R2
	XRL  	A,DPH
?C0033:
	JNZ  	?C0011
; //出临界区
; 		OS_EXIT_CRITICAL();
			; SOURCE LINE # 106
	SETB 	EA
	SJMP 	?C0012
;         return;}                  //TxBuf Full
			; SOURCE LINE # 107
?C0011:
;         *inTxBuf=ch;
			; SOURCE LINE # 108
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	MOV  	DPL,R7
	MOV  	DPH,R6
	MOVX 	@DPTR,A
;         inTxBuf=t;
			; SOURCE LINE # 109
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#inTxBuf
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
;         //ES=1;
; //出临界区
; 		OS_EXIT_CRITICAL();
			; SOURCE LINE # 112
	SETB 	EA
;         if(TIflag){		
			; SOURCE LINE # 113
	MOV  	DPTR,#TIflag
	MOVX 	A,@DPTR
	JZ   	?C0012
;                 TIflag=0;
			; SOURCE LINE # 114
	CLR  	A
	MOVX 	@DPTR,A
;                 TI=1;
			; SOURCE LINE # 115
	SETB 	TI
;         }
			; SOURCE LINE # 116
; }
			; SOURCE LINE # 117
?C0012:
	MOV  	DPTR,#04H
	LJMP 	?C?ADDXBP
; END OF _?PrintChar

; 
; 
; 
; void PrintStr(unsigned char *str) reentrant//显示字符串

	RSEG  ?PR?_?PrintStr?SERIAL
_?PrintStr:
	USING	0
			; SOURCE LINE # 121
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
	MOV  	DPTR,#0FFFCH
	LCALL	?C?ADDXBP
; {
;         int i;
;         unsigned char j;
;         unsigned char ch;
; 	
;         //EA=0;
; //入临界区
; 		OS_ENTER_CRITICAL();
			; SOURCE LINE # 129
	CLR  	EA
;         for(i=0;i<MaxLenStr;i++){
			; SOURCE LINE # 130
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0014:
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	SUBB 	A,#064H
	MOV  	A,R6
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	$ + 5H
	LJMP 	?C0015
;                 ch=*(str+i);
			; SOURCE LINE # 131
	MOV  	DPTR,#04H
	LCALL	?C?XBPOFF
	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
	MOV  	R7,A
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOV  	A,R7
	MOVX 	@DPTR,A
;                 if(ch=='\0') break;
			; SOURCE LINE # 132
	JZ   	?C0015
?C0017:
;                 else if(ch=='\n'){PrintChar(10);PrintChar(13);} 
			; SOURCE LINE # 133
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	CJNE 	A,#0AH,?C0019
	MOV  	R7,#0AH
	LCALL	_?PrintChar
	MOV  	R7,#0DH
	LCALL	_?PrintChar
	SJMP 	?C0016
?C0019:
;                 else if(ch=='\t'){
			; SOURCE LINE # 134
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	CJNE 	A,#09H,?C0021
;                         for(j=0;j<TABNum;j++)
			; SOURCE LINE # 135
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	INC  	DPTR
	CLR  	A
	MOVX 	@DPTR,A
?C0022:
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	CLR  	C
	SUBB 	A,#04H
	JNC  	?C0016
;                                 PrintChar(' ');
			; SOURCE LINE # 136
	MOV  	R7,#020H
	LCALL	_?PrintChar
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0022
;                 }
			; SOURCE LINE # 137
?C0021:
;                 else PrintChar(ch);
			; SOURCE LINE # 138
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_?PrintChar
;         }
			; SOURCE LINE # 139
?C0016:
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?IILDX
	LJMP 	?C0014
?C0015:
;         //EA=1;
; //出临界区
; 		OS_EXIT_CRITICAL();
			; SOURCE LINE # 142
	SETB 	EA
; }
			; SOURCE LINE # 143
	MOV  	DPTR,#07H
	LJMP 	?C?ADDXBP
; END OF _?PrintStr

; 
; void clrscr() reentrant//清屏

	RSEG  ?PR?_?clrscr?SERIAL
_?clrscr:
	USING	0
			; SOURCE LINE # 145
; {        
;         PrintStr("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");//25个回车换行清屏幕。
			; SOURCE LINE # 147
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_0)
	MOV  	R1,#LOW (?SC_0)
	LJMP 	_?PrintStr
; END OF _?clrscr

	END

⌨️ 快捷键说明

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