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; 
}