📄 com.h
字号:
#ifndef _com_h_
#define _com_h_
#include<string.h>
/*-----STC89C52 专用-----*/
sfr WDT = 0xE1;
#define _CLRWDT_ {WDT = 0x36;}
sbit CtrlCom485 = P1^1; // 485 发送接收控制脚
#define BAUD_1200 0xE8 // 波特率为1200
#define BAUD_2400 0xF4 // 波特率为2400
#define BAUD_4800 0xFA // 波特率为4800
#define BAUD_9600 0xFD // 波特率为9600
#define BAUD_14400 0xFE // 波特率为14400
#define SERIAL_BUF_LEN 4 // 串口缓冲个数
unsigned char SerialBuf[SERIAL_BUF_LEN];
/********************************************************
**名称:InitSerial()
**功能:串口初始化
**输入:无
**返回:无
**说明:无
********************************************************/
void InitSerial(void)
{
TMOD = 0x20; // T1 方式2
PCON=0x00; // PCON=00H,SMOD=0 PD = PCON.2 = 1 进入掉电模式
TH1 = TL1 = BAUD_9600; // BAUD: 9600
SCON = 0x50; // 串行通信方式1 REN=1 允许接收
ET1 = 0; // 不允许中断
TR1 = 1; // 开启定时器1
IE = 0; // 关闭所有中断允许位
memset(&SerialBuf, 0x00, SERIAL_BUF_LEN); // 初始化SerialBuf[SERIAL_BUF_LEN]
}
/********************************************************
**名称:SendByte()
**功能:串口发送一个字节
**输入:ucData
**返回:无
**说明:无
********************************************************/
void SendByte(unsigned char ucData)
{
SBUF = ucData;
while(!TI)
{
_CLRWDT_;
}
TI = 0;
}
/********************************************************
**名称:TransmitEnable()
**功能:485 发送允许
**输入:无
**返回:无
**说明:无
********************************************************/
void TransmitEnable(void)
{
CtrlCom485 = 1;
}
/********************************************************
**名称:ReceiveEnable()
**功能:485 接收允许
**输入:无
**返回:无
**说明:无
********************************************************/
void ReceiveEnable(void)
{
CtrlCom485 = 0;
}
/********************************************************
**名称:SendMsg()
**功能:串口发送字符串
**输入:*ucBuf→输入缓冲; ucNum→发送个数
**返回:无
**说明:无
********************************************************/
void SendMsg(unsigned char *ucBuf, unsigned char ucNum)
{
TransmitEnable();
while (ucNum != 0)
{
SBUF = *ucBuf;
while (!TI)
{
_CLRWDT_;
}
TI = 0;
ucBuf++;
ucNum--;
}
ReceiveEnable();
}
/********************************************************
**名称:Csum()
**功能:校验码的计算
**输入:*pucCmd→输入缓冲; ucNum→个数
**返回:无
**说明:无
********************************************************/
/*unsigned char Csum(unsigned char *pucCmd, unsigned char ucNum)
{
unsigned char i;
unsigned char ucSum = 0;
unsigned char *p = (unsigned char *)pucCmd;
for (i=0; i<ucNum; i++)
{
ucSum += *p++;
}
return ucSum;
}*/
/********************************************************
**名称:SconInit()
**功能:串口中断
**输入:无
**返回:无
**说明:无
********************************************************/
/*void SconInit(void) interrupt 4 using 1
{
unsigned char ptr = 0;
unsigned int uiTimes = 0;
EA = 0;
if (RI)
{
SerialBuf[ptr++] = SBUF;
RI = 0;
while(ptr<4)
{
uiTimes = 200;
while ((RI == 0) && (uiTimes != 0))
{
uiTimes --;
}
if (uiTimes == 0)
{
break;
}
else
{
SerialBuf[ptr++] = SBUF;
RI = 0;
}
}
//SendMsg(SerialBuf,4);
if (ptr==4 && SerialBuf[0]==0xAE && SerialBuf[1] == 0xEA)
{
ucTemp = SerialBuf[2];
ucFlag = SerialBuf[3];
.........
}
}
memset(SerialBuf, 0x00, SERIAL_BUF_LEN);
EA = 1;
}*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -