📄 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
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -