www.pudn.com > EMReader.rar > Serial.c
#include "Common.h"
#define SCOMBUFNUM 20
BYTE SComReceBuf[SCOMBUFNUM];
BYTE SComReceHead,SComReceTail;
SComm() interrupt 4 using 3
{
ES = 0;
if(RI == 1)
{
RI = 0;
SComReceBuf[SComReceTail] = SBUF;
SComReceTail++;
if(SComReceTail == SCOMBUFNUM) SComReceTail = 0;
}
ES = 1;
}
void SerialInit()
{
TMOD &= 0x0f;
TMOD |= 0x20;
SCON = 0x50;
PCON &= 0x7f;
TH1 = 0xf3; // 1200 bps
TL1 = 0xf3;
TR1 = 1;
SComReceHead = 0;
SComReceTail = 0;
PS = 0;
ES = 1;
}
void SerialSend(BYTE SendCode)
{
// TB8 = 1; // for multi slaver
SBUF = SendCode;
while(TI == 0) ;
TI = 0;
}
BOOL SerialRece(BYTE *SBuf)
{
if(SComReceHead == SComReceTail) return FALSE;
*SBuf = SComReceBuf[SComReceHead];
SComReceHead++;
if(SComReceHead == SCOMBUFNUM) SComReceHead = 0;
return TRUE;
}