применительно к портам ввода-вывода.
На языке ТурбоПаскаль для обращения к портам применяется спе-
циальная языковая конструкция Port[<адрес_порта>:word],обладающая
всеми свойствами массива значений типа byte,индексируемого по ад-
ресу порта в пределах 0..65535 (в десятичной системе) или
O..FFFF (в шестнадцатиричной). Ниже приведён пример использования
конструкции Port:
var x,y:byte;
var a:word;
begin
a:=$300;
x:=Port[a]; {чтение из порта с адресом a}
y:=1;
Port[$303]:=y {запись в порт с адресом 303H}
Port[$302]:=32+16 {
end;
4. СРЕДСТВА ИЗМЕРЕНИЯ ВРЕМЕНИ В ПЭВМ
4.1.Назначение и функции таймера ПЭВМ
Для контроля текущего времени и измерения временных интервалов
ПЭВМ имеет специальное устройство, называемое таймером[4]. Таймер
состоит из трёх идентичных независимых блоков, называемых канала-
ми. Канал 0 используется непосредственно для организации подсчёта
текущего времени, а также для синхронизации дисковых операций.
Канал 1 управляет процессом регенерации оперативной памяти. Канал
2 используется для генерации звуковых сигналов.
Вход каждого канала таймера связан с генератором тактовых им-
пульсов ПЭВМ, при этом частота импульсов, подаваемых на вход тай-
мера Fвх постоянна и равна 1193180 Гц для всех типов ПЭВМ IBM. На
выходе канала таймера также формируется последовательность им-
пульсов,частота которой Fвых зависит от значения D, записанного в
специальный 16-разрядный регистр "задержки" канала в соответствии
с выражением:
Fвых = Fвх/D
Таким образом таймер осуществляет "деление" входной тактовой
частоты, реализуемое при помощи счётчика тактовых импульсов. Пер-
воначально в регистр счётчика помещается число D, которое затем
уменьшается на единицу каждый раз, когда импульс от тактового ге-
нератора пропускается через канал. Когда значение счётчика дости-
гает нуля, канал таймера изменяет уровень выходного сигнала на
противоположный и вновь загружает в счётчик число D, после чего
процесс повторяется.
Настройка каналов таймера на требуемую выходную частоту осу-
ществляется программным путём при обращении к специальным портам
таймера(40H-42H).Обычно настройка производится автоматически при
загрузке операционной системы, для чего имеются специальные про-
цедуры базовой системы ввода-вывода (BIOS) ПЭВМ. При этом в ре-
гистр задвижки канала 0, используемого для подсчёта текущего вре-
мени, записывается число D=65535(FFFFH), обеспечивающее значение
выходной частоты Fвых = 18.2 Гц.
Следует отметить, что таймер работает независимо от ЦП, оказы-
вая, в то же время, постоянное воздействие на ЦП через систему
аппаратных прерываний. Механизм прерываний лежит в основе метода
подсчета текущего времени, используемого в ПЭВМ. Метод иллюстри-
руется схемой, приведённой на рис.2.
.
-------------¬
¦ Генератор ¦
¦ тактовых ¦
¦ импульсов ¦
L-----T-------
¦
¦ Fвх=119380 Гц
¦
------+------¬
¦ Таймер ¦
¦ (канал 0) ¦
L-----T-------
¦
¦ Fвых=18.2 Гц
¦
------+------¬
¦ Контроллер ¦
¦ прерываний ¦
L-----T-------
¦
¦ IRQ 0
¦
------+------¬
¦ Центральный¦
¦ процессор ¦
L-----T-------
¦
¦ INT 8
¦
------+------¬
¦ Программа ¦
¦ обработки ¦
¦ прерывания ¦
¦ INT8 ¦
L-----T-------
¦
¦
¦
------+------¬
¦СчТB=СчТB+1 ¦
L-------------
Рис.2. Последовательность операций при подсчете текущего
времени
.
Импульсы с выхода канала 0 таймера поступают на контроллер
прерываний ПЭВМ, который вырабатывает сигналы прерывания с кодом
IRQ0,соответствующим прерыванию от таймера. Прерывания возникают
18.2 раза в секунду, т.е. приблизительно каждые 55мс. ЦП, получив
прерывание, приостанавливает работу и передаёт управление специ-
альной программе обработки прерывания от таймера INT8 в BIOS.
Программа обработки увеличивает на 1 значение 4-байтового счётчи-
ка текущего времени(СчТВ), хранящегося в памяти по адресу
0040Н:006CН.
Анализируя содержимое счётчика в различные моменты времени,
можно измерять временные интервалы и определять текущее время су-
ток.Например, если известны значения СчТВ n1 и n2, полученные в
моменты t1 и t2, то величину интервала dt=t2-t1 можно вычислить
по формуле:
dt=(n2 - n1)/18.2 (3.1)
Обычно при загрузке операционной системы СчТВ обнуляется (ска-
занное относится к ПЭВМ типа XT, не имеющим часов реального
времeни с автономным источником питания), что соответствует уста-
новке текущего времени 0час 0мин 0.0сек или, как принято обозна-
чать в DOS: 00:00:00.00. Максимальное значение, которое может со-
держать счетчик, соответствует 23:59:59.99 и равно
((23*60+59)*60+59)*18.2+99=1573039
Любое значение СчТВ в интервале 0..1573039 может интерпретироваться
как текущее время суток после выполнения соответствующих арифмети-
ческих преобразований, для чего имеются необходимые программные
средства как в DOS, так и в системах программирования (см. п.
4.2).Следует отметить, что программа обработки прерывания от тай-
мера INT8 обеспечивает автоматический сброс значения СчТВ в ноль
при достижении максимального значения.
4.2.Программные средства для работы с таймером ПВЭМ
Программное прерывание DOS INT21H содержит две функции,
обеспечивающие чтение и установку текущего времени суток и выпол-
няющие необходимые преобразования между значениями СчТВ и часа-
ми-минутами-секундами. Время выдаётся с точностью до 0.01 секун-
ды, но поскольку счётчик времени обновляется с частотой в 5 раз
меньше, то показание сотых долей секунды весьма приблизительное.
Функция 2CH выдаёт, а функция 2DH -устанавливает время. В обоих
случаях используются одни и те же регистры процессора:
AH - номер функции;
CH - часы(от 0 до 23);
CL - минуты(от 0 до 59);
DH - секунды(от 0 до 59);
DL - сотые доли секунды(от 0 до 99).
Функция установки текущего времени производит запись в СчТВ
числа, соответствующего заданным значениям параметров CH...DL.
Язык командного процессора MS DOS содержит встроенную команду
time, обеспечивающую чтение и установку текущего времени суток в
диалоговом режиме с использованием формата DOS.В ПЭВМ, не имеющих
часов с автономным питанием, рекомендуется выполнять команду time
перед началом каждого сеанса работы.
Системы программирования на языках высокого уровня(Паскаль,
Бейсик, Си) содержат собственные процедуры чтения и установки те-
кущего времени и, кроме того, содержат дополнительные возможности
по измерению времени.
В системе Турбо Паскаль 5.5 для установки и чтения текущего
времени предназначены процедуры SetTime и GetTime модуля DOS:
SetTime(var Hour,Minute,Second,Sec100:word)
GetTime(var Hour,Minute,Second,Sec100:word),
где Hour -часы, Minute -минуты, Second -секунды, Sec100 -сотые
доли секунды.
Рассмотренные выше программные средства можно использовать
для измерения временных интервалов. При этом, однако, если
нужно оценить интервал в несколько секунд, потребуется отсле-
живать изменение сразу трeх переменных (Hour,Minute,Second).
Поэтому, в данном случае, целесообразно было бы располагать
одной переменной времени, а именно значением СчТВ. В Турбо
Паскале имеется возможность непосредственно прочитать содержи-
мое СчТВ из памяти с использованием конструкции MemL. Напри-
мер:
var TimeCount: longint;
. . .
TimeCount:=MemL[$0040 : $006C];
В этом случае оценка временных интервалов сводится к простому
расчeту по формуле (3.1).
5. Контрольные вопросы
1. Назовите основные функциональные блоки контроллера pro411B.
2. Каковы режимы функционирования АЦП?
3. Что такое цикл опроса, и от каких факторов зависит его деятельность?
4. Что такое ошибка набегания?
5. Каким образом определяется готовность АЦП к считыванию кода преобразованного напряжения?
6. Объясните используемый принцип управления работ ЦАП.
7. От каких факторов зависит быстродействие программы вывода данных через ЦАП?
8. Каков механизм организации контроля текущего времени в ПЭВМ?
9. Назовите способы определения длительности временных интервалов в ПЭВМ. Каково точность измерения?
6. Список литературы.
1. Краус М., Кучбах Э., Вошми О. Г. Сбор данных в управляющих вычислительных системах: М.: Мир, 1987.-294 с.
2. Блок 12-битного АЦП для компьютеров IBM PC XT/AT: -Научно-производственное предприятие proТЕСТ: Варшава, 1990.
3. Микропроцессоры: в 3 кн. Кн. 25 средства сопряжения. Контролирующие и информационно-управляющие системы:/ В. Д. Вернер, И. В. Воробьёв, А. В. Горячев и др.; под ред Л. Н. Преснухина.-Мн. Выш. шк. ;1987 -303 с.
4. Джордайн Р. Справочник программиста персональных компьютеров типа IBM PC XT/AT: - М. Финансы и статистика, 1991 - 544 с.
_