📄 serint.c
字号:
#include <STC516.H>
#include "serint.h"
extern void SerInitialize()
{
SerFlags=0;
FlagTransIdle=1;
FlagCvtInCR=1;
RR_iHead=RR_iTail=RR_cLev=RR_cMax=0;
TR_iHead=TR_iTail=TR_cLev=TR_cMax=0;
UnGotCh=-1;
TCON&=0x3F;
TMOD&=0x0F;
TMOD|=0x20;
SCON=0x50;
PCON|=0x00;
TH1=TL1=0xFA;
TR1=1;
ES=1;
}
extern void SerInt() interrupt 4
{
if(RI)
{
if(RR_cLev<INRINGSIZE)
{
RRing[RR_iHead]=SBUF;
RR_iHead++;
RR_cLev++;
if(RR_iHead==INRINGSIZE)
RR_iHead=0;
}
RI=0;
}
if(TI)
{
if(TR_cLev)
{
SBUF=TRing[TR_iTail];
TR_cLev--;
TR_iTail++;
if(TR_iTail==OUTRINGSIZE)
TR_iTail=0;
}
else FlagTransIdle=1;
TI=0;
}
}
extern void ptch(int TransChar)
{
ptc(TransChar);
if(TransChar=='\n')
ptc('\r');
}
extern void ptc(int TransChar)
{
while(TR_cLev>=OUTRINGSIZE);
ES=0;
TRing[TR_iHead]=TransChar;
TR_iHead++;
TR_cLev++;
if(TR_iHead==OUTRINGSIZE)
TR_iHead=0;
if(FlagTransIdle)
{
FlagTransIdle=0;
TI=1;
}
ES=1;
}
extern int ckch()
{
return(RR_cLev);
}
extern void SerWaitOutDone()
{
while(TR_cLev);
while(!FlagTransIdle);
}
extern void SerFlushIn()
{
ES=0;
RR_iTail=0;
RR_iHead=0;
RR_cLev=0;
ES=1;
}
extern int gtch()
{
int RetVal;
ES=0;
if(RR_cLev)
{
RetVal=RRing[RR_iTail];
if(RetVal=='\r')
RetVal='\n';
RR_iTail++;
RR_cLev--;
if(RR_iTail==INRINGSIZE)
RR_iTail=0;
}
else RetVal=-1;
ES=1;
return(RetVal);
}
extern void ptstr(char *pstring)
{
while(*pstring)
{
ptch(*pstring);
pstring++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -