Ув. пользователи MCS-51
Много лет применял инициализацию скорости UART.
Потерял 2 дня для адаптации к SiLabs C8051F064 (читать Datasheet было лень)
Оказалось, инициализация по-умолчанию НЕ соответствует "классике" Intel MCS-51
For classic MCS-51:
Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*12); //if(SMOD==1) K=2; else K=1;
T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*32); //K=1;
For SiLabs C8051Fxx:
Th1=(signed char)(K*Osc_Freq)/(Baud_Rate*32*N); //N=1,4,12,48(SysCLC) or N=8(ExtCLC)
T2 =(signed word)(K*Osc_Freq)/(Baud_Rate*16*N); //N=1,2,12(SysCLC) or N=8(ExtCLC);
Готового FAQ по отличиям инициализации скорости UART для разных MCU-51 не нашел.
Предлагаю поделиться грустным опытом