Курс лекций. - Микропроцессоры


Последовательный порт MCS-51 - часть 8


Рисунок 7. Схема обмена информацией между двумя микроконтроллерами по последовательному порту.

В первом режиме работы, также как и в нулевом для передачи байта через последовательный порт достаточно скопировать его в буфер данных SBUF. Единственное отличие заключается в том, что, кроме настройки регистра SCON, необходимо настроить таймер для задания скорости передачи информации по последовательному порту. При приёме байта по последовательному порту приём начинается только после обнаружения стартового бита.

В качестве примера работы с последовательным портом приведём подпрограмму инициализации последовательного порта для работы в асинхронном режиме на скорости 9600 бит/с. Настройка режима работы последовательного порта в этой программе производится записью двоичной константы в регистр управления SCON. Выбор конкретных значений бит двоичной константы подробно приводится в комментариях к программе.

Так как для последовательного порта требуется таймер, то, кроме настройки последовательного порта, при помощи регистра выбора режима работы таймеров TMOD настраивается таймер T1. Эта настройка тоже производится при помощи записи двоичной константы.

Скорость работы последовательного порта настраивается записью константы 0FDh в старший байт таймера T1.

;********************************************************************************************************************************* ;НАСТРОЙКА ПОСЛЕДОВАТЕЛЬНОГО ПОРТА ;********************************************************************************************************************************* ;Настроить режим работы последовательного порта----------------------------------------------------------------------------------- mov SCON,#01110000b ;настроить последовательный порт на первый режим работы ;|||||||| ;|||||||+-------Обнулить флаг приёмника RI ;||||||+--------Обнулить флаг передатчика TI ;|||||+---------Обнулить девятый бит приёмника RB8 ;||||+----------Обнулить девятый бит передатчика TB8 ;|||+-----------Разрешить работу приёмника ;||+------------Проверять ошибку кадра (приём нулевого бита на месте стоп-бита) ;++-------------Включить асинхронный режим работы последовательного порта ;Настроить режим работы таймера T1 ---------------------------------------------------------------------------------------------- anl TMOD,#00001111b ;Подготовить таймер T1 к настройке (таймер T0 не трогать!) orl TMOD,#00100000b ;перевести таймер T1 вo второй режим работы (таймер T0 не трогать!) ;|||| ;||++--------------Перевести таймер T1 в режим автозагрузки ;|+----------------Синхронизироваться от внутреннего генератора ;+-----------------Запретить управление таймером от ножки INT1 ;Настроить таймер на генерацию 3-x микросекундного интервала времени-------------------------------------------------------------- mov TH0, #fdh ;Загрузить старший байт таймера mov TL0, #fdh ;Загрузить младший байт таймера setb TR1 ;Включить таймер 1 ;********************************************************************************************************************************* ;РАБОТА С ПОСЛЕДОВАТЕЛЬНЫМ ПОРТОМ ;********************************************************************************************************************************* JNB RI, $ ;Подождать окончания приёма байта по последовательному порту MOV A, SBUF ;и скопировать его в аккумулятор

Рисунок 8.


Начало  Назад  Вперед



Книжный магазин