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

📄 serial.src

📁 本人于2005年初开始准备将&micro C/OS-II嵌入式实时操作系统移植到8051单片机上
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	LCALL	?C?CSTPTR
	MOV  	DPTR,#outRxBuf+01H
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?IILDX
;         if(outRxBuf==RxBuf+LenRxBuf) outRxBuf=RxBuf;
			; SOURCE LINE # 129
	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
	MOV  	A,#01H
	MOV  	DPTR,#RxBuf+032H
	XRL  	A,R3
	JNZ  	?C0180
	MOV  	A,R1
	XRL  	A,DPL
	JNZ  	?C0180
	MOV  	A,R2
	XRL  	A,DPH
?C0180:
	JNZ  	?C0012
	MOV  	R3,#01H
	MOV  	DPTR,#outRxBuf
	INC  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (RxBuf)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (RxBuf)
	MOVX 	@DPTR,A
?C0012:
;         //ES=1;        
;         return 1;
			; SOURCE LINE # 131
	SETB 	C
; }
			; SOURCE LINE # 132
?C0011:
	PUSH 	PSW
	MOV  	DPTR,#03H
	LCALL	?C?ADDXBP
	POP  	PSW
	RET  	
; END OF _?yygetch

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

	RSEG  ?PR?_?PrintChar?SERIAL
L?0209:
	USING	0
	MOV  	DPTR,#09H
	LCALL	?C?XBPOFF
	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
	LCALL	?C?ULDIV
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	LCALL	?C?LSTXDATA
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	INC  	DPTR
	INC  	DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	ADD  	A,#030H
	MOV  	R7,A
_?PrintChar:
	USING	0
			; SOURCE LINE # 134
	MOV  	DPTR,#0FFFFH
	LCALL	?C?ADDXBP
	MOV  	A,R7
	MOVX 	@DPTR,A
	MOV  	DPTR,#0FFFDH
	LCALL	?C?ADDXBP
; {
;         unsigned char *t;
; 
;         //ES=0;
; //入临界区
; #pragma ASM
;     PUSH IE;
	  PUSH IE;
;     CLR EA;
	  CLR EA;
; #pragma ENDASM
;         t=inTxBuf;t++;
			; SOURCE LINE # 144
	MOV  	DPTR,#inTxBuf
	MOVX 	A,@DPTR
	MOV  	R1,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	XCH  	A,R1
	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 # 145
	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  	?C0181
	MOV  	A,R1
	XRL  	A,DPL
	JNZ  	?C0181
	MOV  	A,R2
	XRL  	A,DPH
?C0181:
	JNZ  	?C0013
	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
?C0013:
;         if(t==outTxBuf) {/*ES=1;*/
			; SOURCE LINE # 146
	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  	?C0182
	MOV  	A,R1
	XRL  	A,DPL
	JNZ  	?C0182
	MOV  	A,R2
	XRL  	A,DPH
?C0182:
	JNZ  	?C0014
; //出临界区
; #pragma ASM
;     POP IE;
	  POP IE;
	SJMP 	?C0015
; #pragma ENDASM
;         return;}                  //TxBuf Full
			; SOURCE LINE # 151
?C0014:
;         *inTxBuf=ch;
			; SOURCE LINE # 152
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#inTxBuf
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	A,R7
	LCALL	?C?CSTPTR
;         inTxBuf=t;
			; SOURCE LINE # 153
	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,#inTxBuf
	XCH  	A,R1
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;         //ES=1;
; //出临界区
; #pragma ASM
;     POP IE;
	  POP IE;
; #pragma ENDASM
;         if(TIflag){		
			; SOURCE LINE # 159
	JNB  	TIflag,?C0015
;                 TIflag=0;
			; SOURCE LINE # 160
	CLR  	TIflag
;                 TI=1;
			; SOURCE LINE # 161
	SETB 	TI
;         }
			; SOURCE LINE # 162
; }
			; SOURCE LINE # 163
?C0015:
	MOV  	DPTR,#04H
	LJMP 	?C?ADDXBP
; END OF _?PrintChar

; 
; void PrintCh(unsigned char ch) reentrant//内部使用,不建议用户看到。

	RSEG  ?PR?_?PrintCh?SERIAL
_?PrintCh:
	USING	0
			; SOURCE LINE # 165
	MOV  	DPTR,#0FFFFH
	LCALL	?C?ADDXBP
	MOV  	A,R7
	MOVX 	@DPTR,A
; {
;         if(ch>=0&&ch<=9) ch=ch+'0';
			; SOURCE LINE # 167
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	SUBB 	A,#00H
	JC   	?C0017
	MOV  	A,R7
	SETB 	C
	SUBB 	A,#09H
	JNC  	?C0017
	MOVX 	A,@DPTR
	ADD  	A,#030H
	MOVX 	@DPTR,A
	SJMP 	?C0018
?C0017:
;         else ch=ch+'A'-10;
			; SOURCE LINE # 168
	MOV  	A,R7
	ADD  	A,#037H
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	@DPTR,A
?C0018:
;         PrintChar(ch);
			; SOURCE LINE # 169
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_?PrintChar
; }
			; SOURCE LINE # 170
	MOV  	DPTR,#01H
	LJMP 	?C?ADDXBP
; END OF _?PrintCh

; 
; void insidePrintByte(unsigned char Byte) reentrant//内部使用,以十六进制格式显示1个字节数据

	RSEG  ?PR?_?insidePrintByte?SERIAL
L?0214:
	USING	0
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R7,A
_?insidePrintByte:
	USING	0
			; SOURCE LINE # 172
	MOV  	DPTR,#0FFFFH
	LCALL	?C?ADDXBP
	MOV  	A,R7
	MOVX 	@DPTR,A
	MOV  	DPTR,#0FFFFH
	LCALL	?C?ADDXBP
; {
;         unsigned char c;
;         c=Byte;
			; SOURCE LINE # 175
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	@DPTR,A
;         c=c>>4;        
			; SOURCE LINE # 176
	MOVX 	A,@DPTR
	SWAP 	A
	ANL  	A,#0FH
	MOVX 	@DPTR,A
;         PrintCh(c);
			; SOURCE LINE # 177
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_?PrintCh
;         c=Byte;c=c&0x0F;PrintCh(c);        
			; SOURCE LINE # 178
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	@DPTR,A
	MOVX 	A,@DPTR
	ANL  	A,#0FH
	MOVX 	@DPTR,A
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_?PrintCh
; }
			; SOURCE LINE # 179
	MOV  	DPTR,#02H
	LJMP 	?C?ADDXBP
; END OF _?insidePrintByte

; 
; void PrintByte(unsigned char Byte) reentrant//以十六进制格式显示1个字节数据

	RSEG  ?PR?_?PrintByte?SERIAL
_?PrintByte:
	USING	0
			; SOURCE LINE # 181
	MOV  	DPTR,#0FFFFH
	LCALL	?C?ADDXBP
	MOV  	A,R7
	MOVX 	@DPTR,A
; {
;         //EA=0;
; //入临界区
; #pragma ASM
;     PUSH IE;
	  PUSH IE;
;     CLR EA;
	  CLR EA;
; #pragma ENDASM
;         insidePrintByte(Byte);                
			; SOURCE LINE # 189
	LCALL	L?0214
;         //EA=1;
; //出临界区
; #pragma ASM
;     POP IE;
	  POP IE;
; #pragma ENDASM
; }
			; SOURCE LINE # 195
	MOV  	DPTR,#01H
	LJMP 	?C?ADDXBP
; END OF _?PrintByte

; 
; void insidePrintWord(unsigned int Word) reentrant//内部使用,以十六进制格式显示1个字数据

	RSEG  ?PR?_?insidePrintWord?SERIAL
_?insidePrintWord:
	USING	0
			; SOURCE LINE # 197
	MOV  	DPTR,#0FFFEH
	LCALL	?C?ADDXBP
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
; {	        
;         insidePrintByte(Word>>8);
			; SOURCE LINE # 199
	LCALL	L?0214
;         insidePrintByte(Word&0xFF);                        
			; SOURCE LINE # 200
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_?insidePrintByte
; }
			; SOURCE LINE # 201
	MOV  	DPTR,#02H
	LJMP 	?C?ADDXBP
; END OF _?insidePrintWord

; 
; void PrintWord(unsigned int Word) reentrant//以十六进制格式显示1个字数据

	RSEG  ?PR?_?PrintWord?SERIAL
L?0213:
	USING	0
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
_?PrintWord:
	USING	0
			; SOURCE LINE # 203
	MOV  	DPTR,#0FFFEH
	LCALL	?C?ADDXBP
	MOV  	A,R6
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
; {	
;         //EA=0;
; //入临界区
; #pragma ASM
;     PUSH IE;
	  PUSH IE;
;     CLR EA;
	  CLR EA;
; #pragma ENDASM
;         insidePrintWord(Word);
			; SOURCE LINE # 211
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_?insidePrintWord
;         //EA=1;
; //出临界区
; #pragma ASM
;     POP IE;
	  POP IE;
; #pragma ENDASM
; }
			; SOURCE LINE # 217
	MOV  	DPTR,#02H
	LJMP 	?C?ADDXBP
; END OF _?PrintWord

; 
; void PrintLong(unsigned long LongWord) reentrant//以十六进制格式显示1个长字数据

	RSEG  ?PR?_?PrintLong?SERIAL
L?0212:
	USING	0
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	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
_?PrintLong:
	USING	0
			; SOURCE LINE # 219
	MOV  	DPTR,#0FFFCH
	LCALL	?C?ADDXBP
	LCALL	?C?LSTXDATA
; {
;         //EA=0;
; //入临界区
; #pragma ASM
;     PUSH IE;
	  PUSH IE;
;     CLR EA;
	  CLR EA;
; #pragma ENDASM
;         insidePrintWord(LongWord>>16);
			; SOURCE LINE # 227
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	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,#010H
	LCALL	?C?ULSHR
	LCALL	_?insidePrintWord
;         insidePrintWord(LongWord&0xFFFF);
			; SOURCE LINE # 228
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	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
	LCALL	_?insidePrintWord
;         //EA=1;
; //出临界区
; #pragma ASM
;     POP IE;
	  POP IE;
; #pragma ENDASM
; }
			; SOURCE LINE # 234
	MOV  	DPTR,#04H
	LJMP 	?C?ADDXBP
; END OF _?PrintLong

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

	RSEG  ?PR?_?PrintStr?SERIAL
_?PrintStr:
	USING	0
			; SOURCE LINE # 236
	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;
; //入临界区
; #pragma ASM
;     PUSH IE;
	  PUSH IE;
;     CLR EA;
	  CLR EA;
; #pragma ENDASM
;         for(i=0;i<MaxLenStr;i++){
			; SOURCE LINE # 248
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H
	CLR  	A
	MOVX 	@DPTR,A
	INC  	DPTR
	MOVX 	@DPTR,A
?C0025:
	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 	?C0026
;                 ch=*(str+i);
			; SOURCE LINE # 249
	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 # 250
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	MOV  	R7,A
	JZ   	?C0026
?C0028:
;                 else if(ch=='\n'){PrintChar(10);PrintChar(13);} 
			; SOURCE LINE # 251
	MOV  	A,R7
	CJNE 	A,#0AH,?C0030
	MOV  	R7,#0AH
	LCALL	_?PrintChar
	MOV  	R7,#0DH
	SJMP 	?C0183
?C0030:
;                 else if(ch=='\t'){
			; SOURCE LINE # 252
	MOV  	DPTR,#03H
	LCALL	?C?XBPOFF
	MOVX 	A,@DPTR
	CJNE 	A,#09H,?C0032
;                         for(j=0;j<TABNum;j++)
			; SOURCE LINE # 253
	MOV  	DPH,?C_XBP
	MOV  	DPL,?C_XBP+01H

⌨️ 快捷键说明

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