В начало

Лабораторная работа.

Изучение работы последовательного порта в МК

 

Цель работы:

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. Представить выводы по выполненным заданиям.

 


iTunes Gift Card (Россия) 5000 рублей
iTunes Gift Card (Россия) 5000 рублей


Titan Quest: Anniversary Edition
Titan Quest: Anniversary Edition


85 VISA VIRTUAL (RUS BANK)
85 VISA VIRTUAL (RUS BANK)