回答:
正直なところ、私はさまざまな周波数とそれらを使用する理由を説明するのに何時間も費やすことができましたが、誰かがすでに持っています!
http://en.wikipedia.org/wiki/Crystal_oscillator_frequencies
この表にはUART列があり、どのUART周波数が適切に分割されるかを示します。
また、周波数が特定の通信システムの標準水晶である場合も通知します。
直感的に、私は自分のアプリケーションのために働く最も遅い結晶を使用します。クロックドリフトが少なくなり、回路トレースは一般的に低い周波数でより適切に動作します。
余談ですが、数ミリ秒ごとに実行したい場合は、次のように実行できます。
Fosc = 25MHz.
T=1/Fosc = 40ns;
1ms/40ns = 25000 cycles/ms;
0xFFFF-25000=0x9E57;
on overflow TMR1: //assuming TMR1 is 16 bit and counts every clock cycle
doEveryMillisecond;
incrementMillisecondTimer;
TMR1 = 0x9E57;
どのマイクロを使用しているかはわかりませんが、MPLABにはイベントの所要時間を測定するユーティリティがあるため、TMR1のリセット値を調整して、オーバーヘッドや不正確なクロックに対処できます。クリスタルは、これが本番環境では実行できないほど十分に異なる場合があります...よくわかりません。