|
В начало
Лабораторная работа.
Изучение работы последовательного
порта в МК Цель работы: 1.
Ознакомление
с некоторыми применениями канала последовательного ввода/вывода в
микроконтроллере. 2.
Изучение
вопросов программирования и применения канала последовательного ввода/вывода в
основных режимах его работы. Общие сведения
ОЭВМ осуществляет обмен
информацией с внешними устройствами в последовательном коде с помощью
высокоскоростного порта последовательной передачи информации, который может
работать в четырех режимах: сдвиговый регистр; 8-разрядный универсальный асинхронный
приемопередатчик (УАПП) с переменной скоростью обмена; 9-разрядный УАПП с фиксированной скоростью
обмена; 9-разрядный УАПП с переменной скоростью обмена. Обмен данными
осуществляется через 8-разрядный регистр специального
назначения SBUF. При передаче байт данных, подлежащий выводу в последовательном
коде, должен быть записан в SBUF. При приеме данные из последовательного кода
преобразуются в параллельный и в виде байта информации
записываются в SBUF. После приема или передачи очередного байта информации
автоматически устанавливается запрос на прерывание в блок обслуживания
прерываний. Выбор режимов работы и контроль последовательного порта
производится путем установки или опроса соответствующих битов в регистре
специального назначения SCON. Обмен с внешними устройствами осуществляется
через два внешних вывода порта 3: TXD и RXD. Последовательный порт
является дуплексным, то есть он позволяет работать на выдачу и на прием
информации. Порт позволяет начинать прием нового байта до того, как из
приемного регистра считан предыдущий байт (однако если первый байт еще не
считан к тому моменту, когда закончится прием второго байта, один из байтов
будет потерян). Регистры приема/выдачи информации последовательного порта
адресуются как один регистр специального назначения
SBUF, несмотря на то, что физически они разделены. Регистр
специального назначения SCON используется для задания режима работы последовательного
порта. В нем находятся флаги состояния, кроме того в
него записывается 9-й бит данных (RB8). В табл.5.1 приведены название и назначение битов регистра SCON. Таблица 5.1 -------T-------T-----------------------------------------------¬
¦
Бит ¦Позиция¦ Название и назначение ¦ +------+-------+-----------------------------------------------+
¦
SM0 ¦SCON.7 ¦ Флаги выбоpа pежима pаботы Унивеpсального ¦ ¦
SM1 ¦SCON.6 ¦ Асинхpонного Пpиемо-пеpедатчика
(УАПП). ¦ ¦ ¦ ¦
Устанавливаются/сбpасываются
пpогpаммно.
¦ ¦ ¦ ¦
----T---T------------------------------------¬¦ ¦ ¦ ¦
¦SM0¦SM1¦ Режим pаботы ¦¦ ¦ ¦ ¦
+---+---+------------------------------------+¦ ¦ ¦ ¦ ¦ 0 ¦ 0 ¦ Сдвиговый pегистp
pасшиpения ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ ввода/вывода. ¦¦ ¦ ¦ ¦
+---+---+------------------------------------+¦ ¦ ¦ ¦ ¦ 0 ¦ 1 ¦ 8-pазpядный УАПП ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ Пеpеменная
скоpость пеpедачи. ¦¦ ¦ ¦ ¦
+---+---+------------------------------------+¦ ¦ ¦ ¦ ¦ 1 ¦ 0 ¦ 9-pазpядный УАПП ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ Фиксиpованная
скоpость пеpедачи. ¦¦ ¦ ¦ ¦
+---+---+------------------------------------+¦ ¦ ¦ ¦ ¦ 1 ¦ 1 ¦ 9-pазpядный УАПП ¦¦ ¦ ¦ ¦ ¦ ¦ ¦ Пеpеменная
скоpость пеpедачи. ¦¦ ¦ ¦ ¦
L---+---+-------------------------------------¦ +------+-------+-----------------------------------------------+
¦
SM2 ¦SCON.5 ¦ Бит упpавления pежимом УАПП.
Устанавливается ¦ ¦ ¦ ¦ пpогpаммно для запpета
пpиема кодов, для
¦ ¦ ¦ ¦ котоpых бит 8 pавен
0. ¦ +------+-------+-----------------------------------------------+
¦
REN ¦SCON.4 ¦ Флаг pазpешения пpиема.
Устанавливается/ ¦ ¦ ¦ ¦ сбpасывается пpогpаммно
для pазpешения/
¦ ¦ ¦ ¦ запpета пpиема
данных. ¦ +------+-------+-----------------------------------------------+
¦
TB8 ¦SCON.3 ¦ Бит 8 в pежиме пеpедачи.
Устанавливается/ ¦ ¦ ¦ ¦ сбpасывается пpогpаммно для
задания ¦ ¦ ¦ ¦ состояния
9-го pазpяда данных в
9-pазpядном ¦ ¦ ¦ ¦ УАПП. ¦ +------+-------+-----------------------------------------------+
¦
RB8 ¦SCON.2 ¦ Бит 8 в pежиме пpиема.
Устанавливается/ ¦ ¦ ¦ ¦ сбpасывается аппаpатно.
Опpеделяет состояние ¦ ¦ ¦ ¦ 9-го pазpяда данных в 9-pазpядном
УАПП. ¦ +------+-------+-----------------------------------------------+
¦ TI
¦SCON.1 ¦ Флаг пpеpывания
от пеpедатчика. ¦ ¦ ¦ ¦
Устанавливается аппаpатно,
когда байт данных ¦ ¦ ¦ ¦ пеpедан. Сбpасывается пpогpаммно
после ¦ ¦ ¦ ¦ обнаpужения пpеpывания. ¦ +------+-------+-----------------------------------------------+
¦ RI
¦SCON.0 ¦ Флаг пpеpывания
от пpиемника.
¦ ¦ ¦ ¦
Устанавливается аппаpатно,
когда байт данных ¦ ¦ ¦ ¦ пpинят. Сбpасывается пpогpаммно
после ¦ ¦ ¦ ¦ обслуживания
пpеpывания. ¦ L------+-------+------------------------------------------------ Последовательный
порт может работать в одном из четырех режимов: Режим 0. Последовательная
информация передается и принимается через вывод RXD 8-битными посылками. Через
вывод TXD выводятся тактовые импульсы. В данном режиме последовательный
порт работает как сдвиговый регистр, то
есть информация записывается/считывается
последовательно, синхронно с тактовыми импульсами. Скорость обмена фиксирована
и составляет 1/12 частоты внешнего тактового генератора. Процесс передачи
начинается, когда выполнена любая команда, использующая регистр SBUF в качестве
приемника операнда. Сигнал "запись в SBUF" устанавливает единицу в
9-ом бите передающего сдвигового регистра и сообщает блоку управления ТХ о
начале передачи. Сигнал SEND разрешает передачу данных из сдвигового регистра
на линию порта Р3.0 и также разрешает прохождение тактовых импульсов на линии
порта Р3.1. Тактовый сигнал имеет низкий уровень в течение частей 3, 4 и 5
каждого машинного цикла и имеет высокий уровень в течение частей 6, 1 и 2. В
фазе 2 части 6 каждого машинного цикла, когда сигнал SEND имеет активный
уровень, содержимое сдвигового регистра передачи сдвигается на одну позицию
вправо. По мере передачи, при сдвиге информационных битов в регистре передачи
вправо, слева на место "ушедших" битов записываются нули. Когда
старший бит байта данных находится в выходной позиции сдвигового регистра,
единица, которая была предварительно записана в 9-й позиции, находится слева от него и все позиции, находящиеся слева от единицы, содержат
нули. Это условие устанавливает блок управления ТХ для выполнения последнего
сдвига. Затем сбрасывается сигнал SEND и устанавливается флаг пpеpывания TI в регистре
специального назначения SCON. Оба последних события происходят в Фазе 1 части 1
десятого машинного цикла, считая от поступления сигнала "запись в
SBUF". Прием информации начинается при установке флагов REN=1 и RI=0 в
регистре SCON. В фазе 2 Части 6 следующего машинного цикла блок управления RX
записывает в приемный сдвиговый регистр число 11111110В и в следующей фазе
активизирует сигнал REC. Сигнал REC разрешает прохождение тактовых импульсов на
линии порта Р3.1. Тактовый сигнал изменяет свои уровни
в Фазе 1 части 4 и в Ф.2 ч.6 каждого машинного цикла от начала приема. В ф.2
ч.6 каждого машинного цикла, когда сигнал REC активизирован, содержимое
сдвигового регистра приема сдвигается влево на одну позицию. При этом данные
поступающие справа являются данными, считанными с линии порта Р3.0 в Ф.2 ч.5 того же машинного цикла. По мере поступления битов
данных справа, предварительно записанные биты сдвигаются влево. Когда 0,
предварительно записанный в крайнюю пpавую
позицию, достигнет самой левой позиции в сдвиговом регистре, произойдет
установка блока управления RX для выполнения последнего сдвига и загрузки
регистра SBUF. В ф.1 ч.1 десятого машинного цикла, после начала приема,
сбрасывается сигнал REC и устанавливается флаг прерывания RI в регистре SCON. Режим 1. В обмене участвуют 10
бит, которые либо передаются (через TXD) либо принимаются (через RXD) в такой
последовательности: старт-бит (логический "0"), 8 бит данных (младший
бит первым) и стоп-бит (логическая "1"). При
приеме стоп бит заносится в разряд RB8 регистра SCON. Скорость обмена задается
пользователем. Для упpавления
скоростью обмена используется таймер/счетчик 1. Передача начинается, когда
выполнена какая-либо команда, использующая регистр SBUF в качестве приемника
операнда. После появления сигнала "запись в SBUF", в 9-й бит
передающего сдвигового регистра загpужается
"1" и устанавливается запрос на передачу в блоке управления TX.
Фактически передача начинается в Ф.1 ч.1 первого машинного цикла. Процесс
передачи синхронизируется 16-ти разрядным счетчиком-делителем. Передача данных
начинается с установки сигнала SEND. После установки SEND происходит выдача
старт-бита на выход TXD. После выдачи старт бита устанавливается сигнал DATA,
который разрешает передачу данных. По мере сдвига битов данных в регистре
передачи вправо, слева на их места записываются нули. Когда старший бит байта
данных устанавливается в разряде вывода регистра сдвига, единица, которая была
предварительно записана в 9-ом разряде, устанавливается слева от него, а все
позиции слева от единицы содержат нули. Это условие приводит к установке
блока управления TX для выполнения последнего
сдвига и затем к сбросу сигнала SEND и установке флага запроса на прерывание
TI. Прием начинается после обнаружения перепада из "1" в
"0" на входе RXD. Для этого вход RXD опрашивается 16 раз, какая бы
скорость обмена ни была установлена. Когда перепад обнаружен, счетчик -
делитель на 16 немедленно сбрасывается и во входной сдвиговый регистр
записывается число 1FFH. Шестнадцать состояний счетчика делят время прохождения
каждого бита на 16. На 7-ом, 8-ом и 9-ом состоянии счетчика при прохождении
каждого бита, детектор битов счиывает состояние входа
RXD. Величина, записываемая в сдвиговый регистр, является превалирующей
величиной в 2-х выборках из 3-х. Это сделано для минимизации ошибок при приеме.
Если величина, поступившая в течение времени прохождения 1-го бита, не является
нулем, то схема приема сбpасывается
в исходное состояние и блок управления настраивается на обнаружение следующего
перехода из "1" в "0". Это сделано для исключения фальш-старта. В случае получения корректного старт-бита, он
поступает в сдвиговый регистр и происходит прием оставшейся группы данных. По
мере поступления битов данных справа (в сдвиговый регистр), предварительно
записанные единицы сдвигаются влево. Когда старт-бит достигает самой левой
позиции в сдвиговом регистре (который в режиме 1 является 9-ти битовым), блок
управления RX устанавливается для осуществления последнего сдвига, загрузки
SBUF и RB8 и установки RI. Загрузка SBUF, RB8 и установка RI произойдет только
в том случае, если во время конечного сдвига выполнены следующие условия: 1. RI=0 2. либо SM=0 (регистр SCON), либо полученный
стоп-бит =1. Если какое-либо из 2-х
условий не будет выполнено, то полученная группа данных будет потеряна. Если
оба условия выполнены, стоп-бит поступит в RB8, восемь бит данных - в регистр
SBUF и установится флаг RI. В это время (независимо от того выполнены вышеуказанные
условия или нет) блок управления устанавливается для
обнаружения перехода из "1" в "0" на входе RXD. Скорость
обмена данными в режиме 1 переменная и задается с помощью таймера/счетчика 1, пpичем опpеделяется
скоpость обмена по следующей формуле: Скорость обмена =
(скорость переполнения таймера/счетчика
1)/n где n=32, если SMOD=0 (SMOD - старший бит
регистра специального назначения PCON); n=16, если SMOD=1. Например, если таймер/счетчик 1 используется в
режиме автоперезагрузки (TMOD.5=1, TMOD.4=0), он
должен быть запущен, а прерывания по переполнению должны быть запрещены
(IE.3=0). Тогда скорость обмена зависит от величины, перезагружаемой в таймер. Скорость переполнения
таймера равна: V=(скорость счета
таймера)/[256-(TH1)]. Для обеспечения
медленной скорости обмена таймер/счетчик 1 может быть использован в режиме 1
(TMOD.5=0, TMOD.4=1) в качестве 16-ти разрядного счетчика. Тогда должны быть
разрешены запросы на прерывание по переполнению (IE.3=1), и программным способом
должна обеспечиваться перезагрузка таймера. В любом случае, если разряд С/Т в регистре TMOD для таймера/счетчика 1 установлен в 0,
то скорость счета таймера/счетчика составляет 1/12 частоты внешнего тактового
генератора. Если С/Т=1, то скорость счета задается
внешним генератором, подключаемым к входу Т1 микросхемы. Режимы 2 и 3. Одиннадцать бит
передаются (через TXD) и принимаются (через RXD) в следующей
последовательности: старт-бит (логический "0"), восемь бит данных
(младший бит первым), программируемый 9-й бит данных и стоп-бит (логическая "1"). В режиме передачи 9-й бит данных
(размещается в разряде ТВ8) может иметь значение "0" или
"1". В режиме приема 9-й бит данных поступает в разряд RB8 регистра
SCON. Скорость обмена в режиме 2 составляет 1/64 или 1/32 от частоты внешнего
тактового генератора и зависит от состояния бита SMOD (старший бит в регистре
специального назначения PCON).Если SMOD=0 (устанавливается по сбросу ОЭВМ), то
скорость обмена составляет 1/64 частоты внешнего тактового генератора. Если
SMOD=1, то скорость обмена составляет 1/32 частоты тактового генератора. В
режиме 3 скорость обмена переменная и задается с помощью таймера/счетчика 1 также, как и в режиме 1. Функциональная схема порта в
режимах 2 и 3 пpедставлена
на pис.5.3, а временные диаграммы обмена - на pис.5.5. Приемная часть является
такой же, как в режиме 1. Передающая часть отличается от режима 1 только наличием
9-го бита в сдвиговом регистре паредачи. Передача начинается
после выполнения какой-либо команды, использующей регистр SBUF в качестве
приемника операнда. После поступления сигнала "запись в SBUF", бит
ТВ8 регистра SCON загружается в девятый разряд сдвигового регистра передачи и
устанавливается запрос на передачу в блоке управления ТХ. Процесс передачи,
также как в режиме 1, синхронизируется 16 - разрядным счетчиком-делителем.
Передача данных начинается с установки сигнала SEND. После этого происходит
передача старт-бита на выход TXD. Далее устанавливается сигнал DATA, который
разрешает передачу данных из сдвигового регистpа на вывод TXD. После первого сдвига в 9-й разряд
сдвигового регистра записывается "1" (стоп-бит). По мере сдвига битов
данных вправо, на их место записываются нули. Когда бит ТВ8 находится в выходном разряде сдвигового
регистра, стоп-бит находится слева от него, и все позиции левее стоп-бита
заполнены нулями. В результате этого блок управления ТХ устанавливается для
последнего сдвига, последующего сброса сигнала SEND и установки флага
прерывания TI. Прием начинается после
обнаружения перепада из "1" в "0" на входе RXD. Процесс
приема данных в режимах 2 и 3 аналогичен приему в режиме 1. Девятый бит данных
при приеме записывается в разряд RB8 регистра SCON. Задание 1. Составить программу, обеспечивающую вывод массива
символьной информации, хранящегося в ВПД (внешняя память данных) через канал
последовательного ввода/вывода с использованием сигналов квитирования
(готовность передатчика, готовность приемника). Для формирования сигналов
квитирования использовать линии порта P1.
Скорость вывода - 1200 бод. 2. Составить программу, обеспечивающую ввод массива
символьной информации через канал последовательного ввода/вывода с
использованием сигналов квитирования (готовность передатчика, готовность
приемника) и запись его в ВПД. Для формирования сигналов квитирования
использовать линии порта P1. Скорость
ввода - 2400 бод. 3. Составить программу, обеспечивающую ввод массива
символьной информации через канал последовательного ввода/вывода с использованием
механизма прерываний последовательного порта и запись его в ВПД. В качестве фоновой использовать любую циклическую программу. Содержание отчета
1.
Представить структурную схему блока последовательного интерфейса и прерываний. 2.
Представить алгоритмы и программы для выполненных заданий. 3.
Представить выводы по выполненным заданиям. |
|