У меня есть устройство, которое непрерывно отправляет данные через 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;
}