uart - 8051 UART 自动波特率
问题描述
我有一个通过 UART 连续发送数据的设备。我接收数据到80C32处理器的串口,波特率为9600。如何自动检测波特率,这样我就不用每次都改变TH1的值换一个新的波特率。串口初始化函数:
void initSerial()
{
TMOD&=0x0F;
TMOD|=0x20;
SCON=0xD0;
TH1=0xFD;
TR1 = 1;
}
void serial(void) interrupt 4
{
if(RI)
{
el=SBUF;
RI=0;
switch(el)
{
case 0x41:
pom=1; // start of communication
tmp=0;
tail=0;
break;
case 0x42:
tmp=1; // end of communication
pom=0;
break;
default:
if(pom==1 && tmp==0) // write in buffer
{
buff[tail]=el;
tail++;
if(tail==20)
tail=0;
}
else if(pom==0 && tmp==1)
{
buff[tail]=el;
tail++;
buff[tail]='\0';
}
break;
}
}
// RI=0;
}
解决方案
推荐阅读
- c# - SecurityProtocolType.Tls12 在 Windows 10 上不起作用
- spring - Spring Security 中的“记住我”
- ruby-on-rails - 为 Ruby on Rails 建模文件夹结构的最佳方法
- javascript - 使用 node.js 将 MongoDB 数据传递到 .ejs
- r - 选择性地阻止 R 加载特定的命名空间
- sqlite - SQLite Join 查询返回不存在的数据
- html-email - 我有自定义域和 Firebase 托管,是否可以接收自定义邮件?
- angular - Angular——理解英雄之旅的handleError函数
- php - PHP正则表达式忽略字符组
- r - 从具有开始/结束日期的行创建年序列行的数据框