порта. Назначение битов регистра управления приведены в табл. 8. Бит 5 используется только двунаправленными портами.
ПРОГРАММИРОВАНИЕ ИНТЕРФЕЙСА
Для разработки прикладных программ необходимо выбрать язык программирования. Если требуется несложная, быстрая и компактная программа, которая не содержит сложных вычислительных операций, то для ее написания лучше выбирать язык низкого уровня (язык ассемблера). Язык ассемблера относится к группе машинно-ориентированных языков, т. е. каждому семейству микропроцессоров соответствует свой язык.
Язык высокого уровня следует выбирать, если необходимо производить сложные вычисления, или в случае, если высокое быстродействие программы не требуется. Объектные коды, полученные в результате трансляции программ, написанных на языке высокого уровня, обычно занимают в памяти ЭВМ намного больше места и исполняются медленнее в сравнении с программами на ассемблере. Часто применяется подход, когда критичные к быстродействию части программы пишутся на ассемблере, а вычислительные процедуры — на языке высокого уровня, например, на Паскале или Си.
Рассмотрим работу с регистрами интерфейса CENTRONICS на языке PASCAL или ассемблере:
ПАСКАЛЬ:
Port[$378]:=х
АССЕМБЛЕР 8086:
mov a1,х
mov dx,378h
out dx,a1
X — число типа "byte" (0..255). Например, при посылке 170 (dec) = 10101010 (bin) на линии D0-D7 единичный сигнал будет присутствовать на выводах Dl, D3, D5, D7 (обозначение выводов начинается с D0). Число 170 останется на выводах разъёма до тех пор, пока Вы не перешлёте туда же другое число (это может сделать и другая программа) или не выключите компьютер. Заметьте, что адрес порта в команде задан в шестнадцатиричном (hex) виде, а посылка — в десятичном (dec). Если вместо Паскаль-команды
Вы примените
где d — переменная, то переменная примет значение последнего посланного в порт байта или, при переходе в режим приёма, значение байта, поданного на порт внешним устройством.
Пример чтения статус-регистра на языке Pascal:
В переменной d после выполнения программы будет отображено состояние порта. Допустим, переменная вернула значение 126 (dec). В двоичном (bin) виде оно выглядит как 01111110. Младшие (правые) три бита (нулевой, первый и второй) не используются, и почти равны 1, 1 и 0. Третий бит — 1, значит на ERROR высокий уровень. Та же ситуация на SELECT, PAPER END, ACK и BUSY (не забывайте, что сигнал BUSY является инвертированным).
Приведем пример фрагмента программы, которая считывает байт с линий данных D0-D7:
Port[$37А]:=32; {32 "включает" единицу в пятом}
d:=Port[$378]; {бите, переводя порт в режим ввода}
Как видно из приведенных примеров, программирование LPT-порта является весьма простой задачей, что позволяет в значительной степени облегчить работу разработчика программного обеспечения устройств с обсуждаемым интерфейсом.
СПИСОК КОНТРОЛЬНЫХ ВОПРОСОВ
1. Для чего предназначен параллельный интерфейс Centronics?
2. Что представляет собой адаптер LPT-порта?
3. Перечислите основные параметры интерфейса Centronics?
4. Какие основные сигналы используются обсуждаемым интерфейсом для обеспечения передачи данных от компьютера к периферийному устройству?
5. Опишите стандартный протокол обмена данными через интерфейс Centronics.
6. Перечислите режимы обмена данными через LPT-порт согласно спецификации IEEE 1284.
7. Как осуществляется двунаправленный обмен данными через LPT-порт?
8. Какими электрическими параметрами обладает LPT-порт, выполненный согласно спецификации IEEE 1284?
9. Как осуществляется работа с LPT-портом на низком уровне?
10. Какие функции выполняет регистр данных?
11. Перечислите биты регистра состояния стандартного LPT-порта и укажите их назначение.
12. Перечислите биты регистра управления стандартного LPT-порта и укажите их назначение.
13. Как осуществляется программирование регистров интерфейса с использованием языка Паскаль?
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ:
1. Гук М. Аппаратные средства IBM PC. Энциклопедия — СПб: Питер Ком, 1999.
2. Е.П. Бененсон, И.М. Витенберг, В.В. Мельников и др. Печатающие устройства персональных ЭВМ: Справочник/Под ред. И.М. Витенберга. — М.: Радио и связь, 1992.
3. Р. Браун, Дж. Кайл. Справочник по прерываниям IBM PC: В 2-х томах: Т.1. Пер. с англ. — М.: Мир, 1994.
4. Данкан Р. Профессиональная работа в MS-DOS: Пер. с англ.-М.: Мир, 1993.
5. В.Н. Пильщиков. Программирование на языке ассемблера IBM PC. — М.: Диалог — МИФИ, 1997.
6. Фролов А.В., Фролов Г.В. Аппаратное обеспечение IBM PC: В 2-х ч.: — М.: Диалог-МИФИ", 1998.
7. Мячев А.А. Интерфейсы средств вычислительной техники: Справочник, -М.: Радио и связь, 1992.
Измерение температуры датчиком DS1820
(thermo.karelia.ru)
Схема собрана на микроконтроллере [71] Atmel AT90S2313. На рисунках — принципиальная схема и внешний вид устройства. В качестве измерителя использован цифровой датчик фирмы Dallas Semiconductor — DS1820.
Датчик температуры DS1820 производства фирмы Dallas Semiconductors имеет малую погрешность измерений только в диапазоне от 0 до 70°. Для того, чтобы узнать, чему соответствуют его показания, скажем, при -30°, нужно построить градуировочную кривую. В документации, сопутствующей DS1820, приведен следующий график зависимости ошибки измерителя от реальной температуры.
Красная линия на нем отображает отклонение от истинного значения температуры для нашей партии датчиков. Для того чтобы программно скорректировать показания измерителей, нужно данную кривую выразить в математической форме, т. е. аппроксимировать ее полиномом. В данном случае был использован степенной ряд. Коэффициенты при степенях иксов были подобраны с помощью MS Excel (модуль "поиск решения"). На графике синяя линия соответствует полиному третьей степени, уравнение которого написано под ним. Таким образом, полученные данные с измерителя каждый раз поправляются на ту или иную величину с учетом именно этой формулы.
Тотклон. = -0.027 — 0.01889*Т + 0.0008159*Т2 - 0.00000749*Т3
Отнимая от значений измерителя величину поправки, получаем истинное значение температуры. Т. е.
Тистин. = Т — Тотклон., или
Тистин. = 0.027 + 1.01889*Т — 0.0008159*Т2 + 0.00000749*Т3
Источники стабильного тока и их применение
П. Иванов, С. Семушин
Независимо от конструктивного исполнения любой источник тока состоит из одних и тех же функциональных узлов (рис. 1). Это первичный источник питания, регулирующий элемент, датчик тока и нагрузка. В большинстве конструкций используется также цепь обратной связи, соединяющая датчик тока с регулирующим элементом. Ток в нагрузке устанавливается изменением параметров цепи обратной связи или датчика тока [1–3].
Если ток