www.pudn.com > pppcode.rar > commdrv.c


/****************************************************************************** 
File Name : CommDrv.c 
Author : Rene Trenado 
Location : Motorola Applications Lab, Baja California 
Date Created : July 2000 
Current Revision : 0.0 
Notes : This file contains the code to drive the serial port 
*******************************************************************************/ 
#include "CommDrv.h" 
static void CommDrvDefaultProc (register BYTE value); 
static void (* EvtProcedure) (register BYTE value) = CommDrvDefaultProc; 
/*********************************************************************** 
Function : CommDrvDefaultProc 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
static void CommDrvDefaultProc (BYTE value) { 
	 
} 
/*********************************************************************** 
Function : UseDefaultCommProc 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void UseDefaultCommProc (void) { 
	DisableInterrupts; 
	EvtProcedure = CommDrvDefaultProc; 
	EnableInterrupts; 
} 
/*********************************************************************** 
Function : OpenComm 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void OpenComm (register BYTE BaudRate) { 
	IP=0x10; 
	IE=0x90; 
	TMOD=0x20; 
	SCON=0x50; 
	TH1=TL1=0xF3; 
	switch(BaudRate){ 
		case 2://2 for 4800 
			PCON|=0x80; 
			break; 
		case 1://1 for 2400 
			PCON&=0x7F; 
			break; 
	} 
	TR1=1; 
} 
/*********************************************************************** 
Function : CloseComm 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void CloseComm (void) { 
	DisableInterrupts; 
} 
/*********************************************************************** 
Function : AssignCommEventProc 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void CommEventProc (EventProc Proc) { 
	DisableInterrupts; // Disable Interrupts 
	EvtProcedure = Proc; // Install service handler 
	EnableInterrupts; // Enable interrupts 
} 
/*********************************************************************** 
Function : WriteComm 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void WriteComm (BYTE c) { 
	SBUF = c; // Write char to SCI data register 
	while (!TI); // Wait until character gets transmited 
	TI=0; 
} 
/*********************************************************************** 
Function : ReadComm 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
BYTE ReadComm (void) { 
	while (!RI); 
	RI=0; 
	return SBUF; 
} 
/*********************************************************************** 
Function : WriteCommStr 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void WriteCommStr (char* string) { 
	while (*string) { 
		SBUF = *string++; 
		while (!TI); 
		TI=0; 
	} 
} 
/*********************************************************************** 
Function : CommRx 
Parameters : 
Date : July 2000 
Desc : 
***********************************************************************/ 
void UartRxISR (void) interrupt 4 { 
	RI=0; // acknowledge this IRQ 
	EvtProcedure (SBUF); // Fordward the character to a service routine 
}