На рисунке внизу приведены условное
обозначение ППИ и одна из возможных схем
его включения в микропроцессорную
систему. PPI имеет три двунаправленных 8-ми
битных канала связи с внешними устройствами,
называемых обычно портами - PA,PB,PC. Порт PC
отличается от остальных тем, что его можно
"расчленить" на два независимых 4-х битных
порта - старшую половину D7..D4 и младшую D3..D0.
ППИ, называемый иногда параллельным интерфейсом
(IOP), подключается к шине данных с помощью
двунаправленных тристабильных
выводов D7..D0. Входы A1,A0 осуществляют выбор одного
из четырех каналов обмена данными: трех портов
PA,PB,PC или внутреннего регистра
управления/состояния (РУС или CSR - Control and Status Register).
A1 | A0 | КАНАЛ |
0 | 0 | PA |
0 | 1 | PB |
1 | 0 | PC |
1 | 1 | CSR |
PPI переводится в рабочее состояние активным значением сигнала на инверсном входе "выбор микросхемы" (Chip Select, Crystall Select, CS) ~CS = 0, снимаемым с выхода дешифратора адреса ( на рисунке приведен неполный дешифратор - элемент И-НЕ). Логический ноль на выходе элемента И-НЕ появится, если ВСЕ сигналы на его входах равны "1" (A7=A6=A5=A4=1). Так как выбор того или иного канала производится с помощью входов A1,A0 подключенных к аналогичным линиям шины адреса (ША), то с учетом входов дешифратора возможны следующие комбинации сигналов на ША.
ЛИНИИ ШИНЫ АДРЕСА | КАНАЛ/ПОРТ | АДРЕС (HEX) | |||||||
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | ||
1 | 1 | 1 | 1 | x | x | 0 | 0 | PA | F0 |
1 | 1 | 1 | 1 | x | x | 0 | 1 | PB | F1 |
1 | 1 | 1 | 1 | x | x | 1 | 0 | PC | F2 |
1 | 1 | 1 | 1 | x | x | 1 | 1 | CSR | F3 |
Линии A3,A2 шины адреса в схеме не задействованы, поэтому их значения в таблице обозначены (x - Don't Care Bits). При вычислении 16-ного адреса программист в качестве значения этих бит может подставлять любые значения, в том числе нули, как это и сделано в таблице. Например, для порта PB двоичный код 1111xx01 = 11110001(BIN) = F1(HEX).
Обмен байтами данных между МП (CPU) и внешними устройствами (ВУ), подключенными к портам PPI может производиться по командам ассемблера IN..... и OUT.... например : in al,XX и out XX,al.
Выполнение команд IN и OUT производится в два этапа (без учета тактов и циклов, зависящих от конкретной архитектуры микропроцессора). Пример : выполнение инструкций IN AL,0F1h и OUT 0F1h,AL.
Тип операций выполняемых PPI (режим работы) зависит от информации записанной в его регистр управления. Эта информация называется управляющим байтом или иногда приказом. Подробная информация по режимам приведена, например в справочнике : Микропроцессоры и микроЭВМ, под редакцией Хвощ С.Т. Ниже приведен формат байта управления в одном из наиболее популярных режимов - режиме "0", о чем свидетельствуют нули в битах D6,D5,D2:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | PA | PCh | 0 | PB | PCl |
Биты PA,PB,PCh,PCl определяют направление передачи данных через порты ( если порт настроен, например, на вывод, то ввести данные через него в МП командой IN не удастся !).
Если один из перечисленных четырех битов установлен (в него записана 1), то соответствующий порт будет настроен на ввод (МП <----- ВУ), если бит сброшен (в него записан 0), то порт будет настроен на вывод ( МП -----> ВУ).
Ниже на рисунке приведен пример подключения
двух внешних устройств, в качестве которых выступают ЦАП
и АЦП. Аналого-цифровой
преобразователь последовательных
приближений (наиболее распространенный в
микропроцессорных системах) подключен цифровыми
выходами к порту PA ( может быть и другой порт).
Вход сброса/запуска R подключен к одной из линий
порта PC (на рисунке PC0), а выход готовности
преобразователя соединен с линией PC7. ЦАП входами
связан с портом PB.
Как это видно из рисунка порт PA должен быть настроен на ввод кода пропорционального входному напряжению Uвх, а порт PB - на вывод кода. Поэтому бит D4 (PA) управляющего
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 1 | PCh | 0 | 0 | PCl |
байта должен быть установлен, а бит D1(PB) - сброшен. Далее обращаем внимание, что линия PC0 ( а вместе с ней и вся младшая половина порта PCl) должна быть настроена на вывод, а линия PC7(PCh) - на ввод, поэтому окончательно управляющий байт для приведенного ВАРИАНТА подключения АЦП и ЦАП будет выглядеть следующим образом:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 98 |
Теперь приведем типовые фрагменты программы управления работой ЦАП и АЦП, с учетом временных диаграмм АЦП.
Преобразователь активизируется при поступлении импульса R = 1 ( происходит обнуление регистров). Отрицательным перепадом сигнала R запускается процесс преобразования и через время Tпреобр. новый код появляется на выходах преобразователя. В этот момент на выходе готовности АЦП появляется сигнал ~RDY = 0, свидетельствующий об окончании очередного цикла пребразования.
; ++++++++ подготовка PPI к работе ++++++++
mov al,98h ; запись управляющего байта 98 out 0f3h,al; в регистр управления с адресом F3 ...........
; ++++++++ запуск АЦП и считывание кода ++++++++
mov al,01 ; формирование на линии PC0 out 0f2h,al; импульса запуска (R = 1) mov al,00 ; преобразователя out 0f2h,al; (R = 0) w: in al,0f2h ; ввести в аккумулятор (AL) байт из порта PC test al,80h; отселектировать бит готовности PC7 (маска 80h), jnz w ; если он не равен нулю - повторить ввод снова, in al,0f0h ; если АЦП готов (~RDY=0), то ввести код из порта PA ...........; с адресом F0 (выход АЦП) в аккумулятор.
; терерь код напряжения, например, можно вывести на дисплей и т.д.
; ++++++++ вывод кода в ЦАП ++++++++
mov al,XXh ; запись в аккумулятор требуемого значения XX out 0f1h,al; и вывод его на ЦАП через порт PB с адресом F1. ...........
Содержит три независимых
шестнадцатиразрядных синхронных вычитающих счетчика CTi с синхронной
загрузкой кода На
рисунке внизу приведена типичная схема
включения ПИТ в микропроцессорную систему. Левая
часть схемы тождественна предыдущей
схеме подключения ППИ за исключением того, что
в качестве дешифратора
используется популярная м/с ИД7.
Назначение выводов счетчиков: CLKi - вход сигнала тактовой частоты. G(ATE)i - вход управления запуском/остановом счета. OUTi - выход сигнала.
Входы A1,A0 осуществляют выбор одного из трех счетчиков или регистра управления.
A1 | A0 | СЧЕТЧИК / РЕГИСТР УПРАВЛЕНИЯ |
0 | 0 | CT0 |
0 | 1 | CT1 |
1 | 0 | CT2 |
1 | 1 | CSR |
Остальные выводы выполняют функции, аналогичные функциям других микросхем этого комплекта.
В приведенной конкретной схеме вход Chip Select соединен с 0-м выходом дешифратора адреса. В соответствии с логикой работы DC при обращении CPU к PIT на управляющих входах OE должны быть активные уровни: A7=1,A6=A5=0. На адресных входах дешифратора для активизации 0-го выхода должен быть помещен двоичный код A4=A2=A1=0. С учетом приведенных ранее битов A1,A0 таймер имеет следующие адреса:
ЛИНИИ ШИНЫ АДРЕСА | СЧЕТЧИК / РЕГИСТР УПРАВЛЕНИЯ | АДРЕС (HEX) | |||||||
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | ||
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | CT0 | 80 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | CT1 | 81 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | CT2 | 82 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | CSR | 83 |
Установка режима работы каждого счетчика производится программно путем записи байта управления и начального значения коэффициента деления Ni (модуля счета). Формат управляющего байта представлен ниже.
D7 | D6 | D5 | D4 | D3 | D2 | D1 |
D0 |
D7 | D6 | Номер счетчика | Способ загрузки Ni в счетчик | D5 | D4 | |
0 | 0 | Счетчик 0 (CT0) | Фиксация Ni | 0 | 0 | |
0 | 1 | Счетчик 1 (CT1) | Загрузка Ni одним младшим байтом | 0 | 1 | |
1 | 0 | Счетчик 2 (CT2) | Загрузка Ni одним старшим байтом | 1 | 0 | |
1 | 1 | Запрет | Загрузка Ni двумя байтами | 1 | 1 |
D3 | D2 | D1 | Формат записи Ni в счетчик | D0 | ||
0 | 0 | 0 | Режим 0 | Запись Ni двоичным кодом | 0 | |
0 | 0 | 1 | Режим 1 | Запись Ni двоично-десятичным кодом | 1 | |
x | 1 | 0 | Режим 2 | |||
x | 1 | 1 | Режим 3 | |||
1 | 0 | 0 | Режим 4 | |||
1 | 0 | 1 | Режим 5 |
Два старших бита D7,D6 байта управления определяют номер регистра управления соответствующего счетчика.
Биты D5,D4 задают способ записи модуля счета Ni i-го счетчика.
Если 3 <= Ni <=255, то коэффициент деления i-го счетчика МОЖНО программно загрузить одним младшим байтом, старший байт значение, которого равно 0 будет записан таймером в счетчик автоматически (D5=0,D4=1).]
Если 256 <= Ni <216 и кратно 256, то коэффициент деления i-го счетчика МОЖНО программно загрузить одним старшим байтом, младший байт значение, которого равно 0 будет записан таймером в счетчик автоматически (D5=1,D4=0).
И наконец, если 256 < Ni <216 и не кратно 256, то коэффициент деления i-го счетчика НУЖНО загружать двумя байтами (D5=1,D4=1).
Биты D3,D2,D1 определяют форму выходного сигнала. В режимах 0,2,3,4 счет разрешается при GATE=1 и останавливается при GATE=0. В режимах 1 и 5 для начала счета на вход GATE необходимо подать положительный перепад.
Режим 0. Программируемая задержка времени. На выходе OUTi формируется положительный перепад через время Tвых = Tвх * (Ni + 1). Tвх - период повторения импульсов на входе CLKi.
Режим 1. Генератор одиночного импульса заданной длительности. Длительность отрицательного импульса определяется следующим соотношением: Tвых = Tвх * Ni.
Режим 2. Генератор периодической последовательности импульсов со скважностью Q>2. Частота следования импульсов на выходе счетчика: Fвых = Fвх / Ni. Fвых = 1 / Tвых и Fвх = 1 / Tвх. Скважность - отношение периода повторения к длительности импульса ( Tвых/Tи).
Режим 3. Генератор периодической последовательности импульсов со скважностью Q=2 (меандр). Частота следования импульсов на выходе счетчика такая же, как и во втором режиме.
Режимы 4 и 5. Программно и аппаратно управляемый строб-импульс. В режиме 4 формируется короткий импульс длительностью Tвх с задержкой Tвых = Tвх*(N +1). А в режиме 5 формируется такой же импульс с задержкой Tвых = Tвх*N.
Бит D0 регламентирует формат записи кода Ni в счетчик. Если D0=0, загружаемый код трактуется счетчиком, как двоичный - в противном случае, как двоично-десятичный.
10.2.1 ПРИМЕР ИСПОЛЬЗОВАНИЯ PIT
На рисунке внизу приведена одна из множества схем применения ПИТ в качестве таймера с программируемой длительностью временного интервала T1, подачей звуковых отметок с периодом T2 и сигнализацией с частотой F0 спустя время T1.
Исходные данные для проектирования:
1.Длительность интервала временной задержки T1 = 15сек.
2.Частота входного сигнала Fclk = 2МГц.
3.Частота звуковых отметок F2 = 1Гц.
4.Частота сигнала F0 = 100Гц.
Необходимо для каждого счетчика вычислить коэффициенты деления Ni и управляющие байты.
Счетчик CT0. Биты управляющего байта D7,D6 = 00 для счетчика CT0. Для формирования на его выходе сигнала с частотой 100Гц подходят режимы 2 и 3. Однако в режиме 2 высокая скважность Q импульсов (длительность импульса мала по сравнению с периодом повторения) снижает мощность сигнала в Q/2 раз. Поэтому выбираем режим 3 и биты D3,D2,D1 = x11 = (011 или 111). Коэффициент деления CT0 в режиме 3 N0 = 2000000Гц / 100Гц = 20000(DEC) = 4E20(HEX). Так как 256 < N0(20000) <216 и не делится на 256, то загрузка кода N0 в счетчик должна производиться двумя байтами 4E и 20. Следовательно биты D5,D4 = 11. Осталось найти значение бита D0. Двоично-десятичным кодом значение N0 = 20000 (пять десятичных цифр) невозможно загрузить в 16-ти битовый счетчик (четыре полубайта - четыре десятичных цифры), поэтому D0 = 0 (загрузка N0 в двоичном коде). Таким образом управляющий байт для CT0 будет равен 36(3E):
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код |
0 | 0 | 1 | 1 | 0 | 1 | 1 |
0 | 36 |
0 | 0 | 1 | 1 | 1 | 1 | 1 |
0 | 3E |
Счетчик CT2. Биты управляющего байта счетчика CT2 D7,D6 = 10. Для формирования на его выходе сигнала с частотой 1Гц также подходят режимы 2 и 3. Однако, в режиме 3 при скважности Q=2 пьезокерамические пластины верхнего динамика будут издавать звук при каждом перепаде на выходе CT2, т.е. отметки времени будут звучать с двойной частотой, что естественно не планировалось. Поэтому выбираем режим 2 и биты управляющего байта D3,D2,D1 = x10 = (010 или 110). Модуль счета N2 счетчика CT2 равен F0 / F2 = 100(DEC) = 64(HEX) и находится в пределах 3<=N2<=255. Из этого следует, что N2 можно записать в счетчик одним младшим байтом, т.е. биты D5,D4 = 01. Однобайтовое значение N2 содержит две тетрады, в которых невозможно разместить три десятичных цифры, поэтому запись N2 должна производиться не двоично-десятичным кодом, а двоичным и бит D0 = 0. Суммируя сказанное получим два возможных значения управляющего байта CT2.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код |
1 | 0 | 0 | 1 | 0 | 1 | 0 |
0 | 94 |
0 | 0 | 1 | 1 | 1 | 1 | 0 |
0 | 9C |
Счетчик CT1. Биты управляющего байта счетчика CT2 D7,D6 = 01. Временная задержка на его выходе может быть сформирована режимами 0 или 1. В режиме 1 требуется запуск счетчика положительным перепадом на входе GATE. В режиме 0 для работы счетчика на этом входе должен быть сигнал GATE1 = 1, а биты D3,D2,D1 = 000. Коэффициент деления в режиме 0: N1 = (T1 / T2) - 1 = 15/1 -1 = 14(DEC) = E(HEX). Это число также может быть загружено в CT1 одним младшим байтом, поэтому биты D5,D4 = 01. Модуль счета N1 = 14 можно записать, либо шестнадцатиричным кодом 0E(00001110 BIN), либо двоично-десятичным кодом 14(00010100 BCD). Это число (временная задержка) является тем параметром, который потребитель самостоятельно вводит в таймер и знание шестнадцатиричной системы счисления не входит в круг его обязанностей. Поэтому разработчику таймера желательно предусмотреть установку пользователем числа N1 десятичными цифрами и следовательно бит D0 управляющего байта равен 1. Окончательно, управляющий байт для CT1 будет равен:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | HEX код |
0 | 1 | 0 | 1 | 0 | 0 | 0 |
1 | 51 |
Программа запуска приведенной схемы таймера:
;#### подготовка счетчиков
таймера к работе в выбранных режимах
mov al,51h; загрузка управляющего байта CT1
out 83h,al; по адресу 83
mov al,9ch ; загрузка управляющего байта CT2
out 83h,al; по адресу 83
mov al,3eh ; загрузка управляющего байта CT0
out 83h,al; по адресу 83
;#### запись коэффициентов деления Ni в
счетчики
;#### в режимах 0,2,3 счетчики при записи в них
последнего
;#### (единственного) байта Ni начинают счет
импульсов CLKi
mov al,14h ; запись N1=14(BCD !) в счетчик CT1
out 81h,al; по адресу 81
mov al,64h ; запись N2=100(DEC) в счетчик CT2
out 82h,al; по адресу 82
mov al,20h ; запись младшего байта
N0=20000(DEC)=4e20(HEX)
out 80h,al; в счетчик CT0 по адресу 80
mov al,4eh ; а теперь - старшего байта N0
out 80h,al; по тому же адресу
;#### таймер начал отсчет времени.
Программируемый связной интерфейс или универсальный (синхронно-)асинхронный приемо-передатчик (У(С)АПП или U(S)ART) предназначен для организации обмена данными между МП и удаленными ВУ в последовательном формате. По этой причине УСАПП называют также последовательным интерфейсом (IOS).В качестве передатчика УСАПП преобразует параллельный код в последовательный и отправляет его в линию связи, а в качестве приемника осуществляет обратное преобразование. УСАПП может обмениваться данными с удаленными устройствами в симплексном (движение информации в одном направлении) , полудуплексном (информация передается и принимается в обоих направлениях, но поочередно) и дуплексном режимах (обмен данными в обоих направлениях одновременно).
На рисунке приведено упрощенное условное обозначение УСАПП, схема его включения в микропроцессорную систему и типичная последовательность бит на входе приемника или выходе передатчика в асинхронном режиме работы. Микропроцессор на схеме не показан. Счетчик CT0 таймера (мог быть и другой) обеспечивает требуемую скорость обмена данными.
Назначение некоторых выводов: TxD - выход передатчика, RxD - вход приемника, CLK - вход частоты синхронизации, TxC - вход синхросигнала передатчика, RxC - вход синхросигнала приемника, ~CTS - инверсный вход готовности приемника терминала (удаленного устройства или модема). В простых системах связи вход ~CTS можно жестко связать с "землей", уведомляя передатчик, что приемник "всегда готов", а его действительная готовность к приему - это забота программиста! Если используется стандартный протокол связи, например RS-232C, то вход ~CTS должен быть отсоединен от нулевого провода. C/~D - функциональный вход "управление/данные". Если C/~D = 0 , то МП и УСАПП обмениваются байтом данных, если C/~D = 1, то происходит запись байта управления или чтение байта состояния. Назначение остальных выводов PCI аналогично назначению соответствующих выводов PPI. Приведенных на рисунке выводов достаточно для реализации связи с не очень удаленными объектами, например с компъютером или с другими МП.
Из приведенного рисунка нетрудно вычислить адреса PCI. Для нулевого выхода дешифратора, подключенного к входу таймеру "выбор микросхемы"адреса уже найдены. Активизация инверсного входа ~CS УСАПП производится подачей сигналов A4,A3,A2 = 111(BIN) = 7(DEC) и разрешающих работу дешифратора сигналов A7,A6,A5 = 100(BIN). В таблице приведены два из четырех возможных адресов PCI (A1 = 0).
ЛИНИИ ШИНЫ АДРЕСА | ДАННЫЕ / РЕГИСТР УПРАВЛЕНИЯ (CSR) | АДРЕС (HEX) | |||||||
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | ||
1 | 0 | 0 | 1 | 1 | 1 | x | 0 | Адрес порта данных | 9С |
1 | 0 | 0 | 1 | 1 | 1 | x | 1 | Адрес порта CSR | 9D |
Одним из наиболее распространенных режимов работы УСАПП является асинхронный режим. В этом режиме каждый передаваемый символ (кадр) содержит следующие поля:
обязательный стартовый бит, на рисунке обозначен ST, всегда равен нулю,
5..8 информационных бит,
необязательный бит контроля четности/нечетности PB,
1..2 стоп-бита SP.
Кадры следуют непрерывно или отделяются паузами. Инфомационные биты передаются начиная со старших разрядов. На рисунке передается/принимается код 01011001, а не 10011010.
УСАПП программируется записью в него байта управления, который может быть двух типов:
инструкция режима,
команда управления.
ФОРМАТ ИНСТРУКЦИИ РЕЖИМА
Инструкция режима задает режим синхронизации, формат данных, скорость обмена, необходимость контроля. Ниже в таблице приведен формат инструкции режима.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D7 | D6 | Число стоп-бит | Вид контроля | D5 | D4 | |
0 | 0 | Запрет | Нет контроля | 0 | 0 | |
0 | 1 | 1 стоп-бит | Контроль нечетности | 0 | 1 | |
1 | 0 | "полтора" стоп-бита | Нет контроля | 1 | 0 | |
1 | 1 | 2 стоп-бита | Контроль четности | 1 | 1 |
D3 | D2 | Число информационных бит | Частота синхронизации | D1 | D0 | |
0 | 0 | 5 | fTxC(RxC) / 1 | 0 | 1 | |
0 | 1 | 6 | fTxC(RxC) / 16 | 1 | 0 | |
1 | 0 | 7 | fTxC(RxC) / 64 | 1 | 1 | |
1 | 1 | 8 |
Биты D7,D6 определяют число стоп-бит в каждом кадре, причем "полтора бита" обозначают длительность в полтора тактовых интервала. Обычно для экономии времени используется один стоп-бит.
Длительность тактового интервала (fTxC(RxC)/x)-1сек задают биты D1,D0. Частота fTxC или fRxC - частота сигнала на одноименных входах TxC и RxC приемопередатчика должна быть меньше или равной fCLK/(4.5). Внутри УСАПП может быть дополнительно поделена в 16 или 64 раза. Частота fTxC(RxC)/x определяет скорость передачи в Бодах (baud) или битах в секунду (bps). Для УСАПП обе скорости совпадают. В асинхронном режиме комбинация D1,D0 = 01 недопустима. Максимальную скорость обмена данными нетрудно вычислить. Пусть fCLKmax = 2МГц, тогда fTxC(RxC) = fCLK/4.5 =444444,44Гц. В асинхронном режиме дополнительный коэффициент деления должен быть не менее 16-ти (см. инструкцию режима). Поэтому максимальная скорость обмена равна 444444,44Гц / 16 = 27777 бит в секунду.
Число информационных бит в кадре определяется битами D3,D2 инструкции режима.
Биты D5,D4 задают вид контроля за правильностью передачи. Если производится контроль четности, то УСАПП-передатчик вычисляет "сумму по модулю два" информационных бит и полученный бит суммы вставляет в передаваемый кадр в качестве бита контроля четности. УСАПП-приемник снова вычисляет сумму "сумму по модулю два" информационных бит и если значение принятого и вычисленного бита контроля совпадают - делается вывод об отсутствии искажений при передаче по линии связи. Этот метод позволяет выявлять только нечетное число искажений бит информации и самого бита контроля, поэтому обычно контроль четности/нечетности не применяется и длина кадра уменьшается на один тактовый интервал. В современных устройствах связи применяются более сложные методы контроля за правильностью передачи (CRC-контроль, передача с подтверждением приема и др.).
ФОРМАТ КОМАНДЫ УПРАВЛЕНИЯ
Ниже в таблице приведены некоторые биты команды управления.
Разряд | Обозначение | НАЗНАЧЕНИЕ КОМАНДЫ |
D0 | TxEN | Разрешение работы УСАПП в качестве передатчика, D0=1 |
D2 | RxEN |
Разрешение работы УСАПП в качестве приемника, D2=1 |
D4 | ER | Сброс в ''0" флагов ошибок, D4=1 |
D6 | RESET | Программный сброс УСАПП в исходное состояние, D6=1 |
ФОРМАТ БАЙТА СОСТОЯНИЯ
В процессе работы можно осуществлять контроль за работой УСАПП путем чтения байта его состояния. Ниже в таблице приведены некоторые наиболее употребительные в асинхронном режиме биты состояния УСАПП.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
FE | OE | PE | RxRDY | TxRDY |
Биты D5,D4,D3, называемые также флагами, устанавливаются/сбрасываются приемником УСАПП сигнализируя:
PE=1 (Parity Error), если УСАПП зафиксировал ошибку при контроле четности/нечетности,
OE=1(Overrun Error), если была попытка считать в микропрцессор передаваемый из линии в приемник код, до завершения его полной передачи,
FE=1(Frame Error), если приемник не обнаружил стоп-бит(ы).
Бит RxRDY (Готовность приемника), если RxRDY=0, то приемник еще не преобразовал последовательный код в параллельный и считывать его в микропроцессор бессмысленно.
Бит TxRDY (Готовность передатчика) - если TxRDY=0, то передатчик еще не преобразовал параллельный код в последовательный и загрузка следующего кода из МП в передатчик исказит текущее передаваемое значение.
Ниже приводится фрагмент программы
передачи массива байтов, хранящихся в памяти.Начальный
адрес массива символов - 8007(HEX). Передается 8
байтов: fd,87,9c,88,40,55,8a,b8. Адреса таймера 80,83 и УСАПП
9c,9d были получены ранее. Коэффициент деления
частоты fCLK(N0=5)>4.5.
;#### настройка и запуск делителя частоты mov al,1eh; CT0,1 мл.байт, режим 3, код BIN out 83h,al; вывод байта упр. 1e в порт 83 mov al,5 ; коэфф. деления частоты Fclk N0=5 out 80h,al; и запись его в CT0 по адресу 80 ;#### настройка УСАПП ........... mov al,40h;программный сброс D6=1 out 9dh,al; mov al,0cfh;инструкция режима: 2 стоп-бита, out 9dh,al ;нет контроля,8 инф. бит, fTxC(RxC) / 64 mov al,01h;разрешение передачи TxEN=1 out 9dh,al;
;#### передача массива символов
mov cl, 8; число передаваемых символов mov bx,8007h; начальный адрес блока nxt: mov al,[bx]; переслать текущий байт в AL out 9ch,al; и вывести его в УСАПП wt: in al,9dh; чтение байта состояния shr al,1; символ передан в линию? (TxRDY=1?), jnc wt; если нет,то подождать, inc bx; если да, перейти к адресу след. байта dec cl; переданы все байты? jnz nxt; если нет,то повторить вывод след. байта ........; если да,то выйти из цикла.
РАЗДЕЛ В СТАДИИ ОФОРМЛЕНИЯ !