📄 serial.src
字号:
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 + -