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