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