DataRate = Timer20verflowRate / 16,
где TimerOverflowRate — скорость переполнения таймера 1 или 2, SMOD = О или 1 — значение бита SMOD в регистре PCON, обеспечивающий удвоение скорости обмена данными через последовательный порт. Вторая возможность реализуется только для последовательного порта 0.
Преобразуем первое выражение, чтобы получить значение скорости переполнения для таймера! (в Гц):
Timer1OverflowRate = 32*DataRate / ( 1 + SMOD ) Период переполнения таймера 1 при этом составит (в секундах): Timed OverflowPeriod = ( 1 + SMOD ) / ( 32*DataRate )
Количество тактов, которое требуется для получения данного периода, равно:
Timer1Overflow/Cycles = ( 1 + SMOD )*ClockFrequency / ( 32*DataRate ),
где ClockFrequency -• тактовая частота микроконтроллера. Значение TimerlOverflowCycles необходимо загрузить в таймер I, чтобы получить требуемую скорость обмена DataRate. Таким образом, если требуется обеспечить скорость обмена 9600 бод, а микроконтроллер 80С320 работает на частоте 12 МГц, то полагая SMOD = 0, получаем:
Timer1OverflowCycles = 12 МГц / ( 32 * 9600 бод ) = 39,063.