Baud_TH1
Расчет значения перезагружаемого таймера 1 в режиме генерации тактовых импульсов для модуля UART в процессорах семейства MCS-51
Александр Бельченко
13 сентября 2004
Небольшая утилита Baud_TH1 помогает рассчитать значение для перезагружаемого таймера 1 в процессорах семейства MCS-51, когда этот таймер используется для генерации тактовых мпульсов для модуля UART.
Процедура инициализации модуля UART в этом случае выглядит примерно так:
void uart_init (unsigned char value_th1)
{
PCON |= 0x80; // удвоенная скорость
SCON = 0x50; // режим 1: 8-битный UART, приемник разрешен
TMOD |= 0x20; // таймер 1 режим 2: 8-битный перезагружаемый таймер
TH1 = value_th1; // перезагружаемое значение таймера
TR1 = 1; // запуск таймера 1
ES = 1; // разрешить прерывания от UART
}
Значение value_th1 задает скорость работы UART. Для весьма распространненого кварца 11,0592 МГц набор этих значений для стандартного ряда скоростей известен. Для облегчения подбора значений value_th1 при нестандартных комбинациях частоты кварца и предварительного делителя таймера можно воспользоваться утилитой baud_th1. Утилита показывает расчитанное значение для таймера и получаемую при этом относительную ошибку. Для обеспечения нормальной связи между устройствами ошибка не должна превышать 5%.
Файлы
Утилита
Baud_TH1 (13 КБ).
Исходный текст
Baud_TH1.c