📄 baudandveridet.c
字号:
////////////////////////////////////////////////////////////////////////
// 模 块 名:波特率和校验位的自动识别
// 版 本:-----------------------
// 程序设计:张清华
// 日 期:-----------------------
////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------//
//1:在串行中断程序中,如果正确接收到数据帧,把BaudFlag设置成检测到的波特率位置, //
// 表示正确接受,不需要检测波特率 //
//2:发生串口中断即设置有无数据标识位DataFlag=1, 表示有串口中断来 // //
//3:在两秒钟内没有数据显示"no-dAt",把BaudFlag设置默认值7,表示波特率可能有误 //
// 并把DataFlag=0; //
//4:在两秒钟内没有数据显示"no-dAt"之前加条件判断语句,如果BaudFlag==7,且DataFlag=1 //
// 则需要检测波特率 //
//if((BaudFlag==7)&&(DataFlag=1)) //
//{ //
// //循环检测 //
//} //
//----------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------//
///////////////////////////////////////////////////////////////
///名称:dl_ms(x)
///功能:软件延迟
//////////////////////////////////////////////////////////////
void dl_ms(unsigned int n)//延迟1ms
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
////////////////////////////////////////////////////////////////////
// 名称:BaudVeriDet(void)
// 功能:波特率和校验自动识别
////////////////////////////////////////////////////////////////////
typedef struct
{
unsigned char BaudTH1;//波特率初值
unsigned char BaudSMOD;//SMOD设置
}baudreg;
//f==11.0592
const baudreg baudregs[5]=
{
{0xE8,0x00},//baud1200
{0xF4,0x00},//baud2400
{0xFA,0x00},//baud4800
{0xFD,0x00},//baud9600
{0xFD,0x80}//baud19200
};
unsigned char BaudFlag;//波特率匹配,用来存储baudregs中已匹配波特率的位置
unsigned char i;
BaudFlag=3;//默认值为3
unsigned char VeriFlag;//校验标识
//波特率识别
void BaudVeriDet(void)
{
if((BaudFlag==7)&&(DataFlag==1))
{
for(i=0;i<5;i++)
{
TH1=baudregs[i].BaudTH1;
PCON=baudregs[i].BaudSMOD;
ACC=SBUF;
BaudFlag=i;
VeriFlag=P;
dl_ms(1000);//延迟1s,要大于数据帧发送频率
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -