Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп_лекц_МПТ_4.doc
Скачиваний:
425
Добавлен:
23.11.2018
Размер:
2.18 Mб
Скачать

10.3. Примеры программирования таймера

Пример 1. Составить программу инициализации ПИТ, имеющего адрес 40H. Установить счетчик СТ0 в режим 5 и загрузить в него число 1513Н. Установить счетчик СТ1 в режим 1 и загрузить в него число 06Н. Счет производить в двоичном коде.

800 3E 3A MVI A, 3AH; A CW=0011 1010B=3AH

802 D3 43 OUT 43H ; (A) Регистр CW ПИТ

804 3E 52 MVI A, 52H; A CW=0101 0010B=52H

806 D3 43 OUT 43H ; (A) Регистр CW ПИТ

808 3E 13 MVI A, 13H; A мл. байт DW СТ0

80A D3 40 OUT 40H ; (A) СТ0

80C 3E 15 MVI A, 15H; A ст. байт DW СТ0

80E D3 40 OUT 40H ; (A) СТ0

810 3E 06 MVI A, 06H; A мл. байт DW СТ1

812 D3 41 OUT 41H ; (A) СТ1

Пример 2. Составить программу чтения содержимого счетчика СТ0 в регистровую пару HL на ходу, без остановки его работы. Адрес ПИТ - 40H, счет производить в двоично-десятичном коде.

800 3E 00 MVI A, 0000 XXX1B; A CW “Защелкивание”

802 D3 43 OUT 43H ; (A) Регистр CW ПИТ

804 DB 40 IN 40H ; A (мл. байт СТ0)

806 6F MOV L, A ; (A) L

807 DB 40 IN 40H ; A (ст. байт СТ0)

809 67 MOV H, A ; (A) H

10.4. Организация счета времени и событий в мс

Программируемый интервальный таймер является устройством широкого назначения. На его основе могут быть построены разнообразные времязадающие устройства, имеющие общесистемное значение: системные часы, тактовые генераторы скорости передачи последовательных данных, средства контроля за длительностью обращения к системной магистрали, средства измерения длительности импульсных сигналов, генераторы звуковых сигналов и т.п.

Для реализации счета (измерения) времени на базе таймера на его входы CLK подают импульсные сигналы, частота Fsysclk которых известна и стабильна. Это обычно одна из системных частот, например, системная частота шины, формируемая в компьютере с высокой точностью.

Подсчитывая число n импульсов за измеряемый временной интервал Tи,, можно определить его длительность как .

Осуществляя в таймере деление частоты Fsysclk на заданный коэффициент, можно получить генератор меток реального времени для построения системных часов и сервиса реального времени, в функции которого входит управление выполнением последовательности заданий в строгом соответствии со временем.

Например, системные часы компьютера устроены следующим образом /38/. В качестве генератора меток реального времени используется счетчик СТ0 программируемого таймера с базовым адресом 40. На вход CLK этого счетчика подается системная частота Fsysclk=1,19318 МГц, на вход GATE подается напряжение логической 1, а выход OUT используется в качестве сигнала запроса на прерывание высшего приоритета IRQ0. Такая схема обеспечивает своевременную обработку меток реального времени через систему прерываний. Счетчик СТ0 запрограммирован для работы в режиме 3 и формирует запросы на прерывание на IRQ0 с частотой 18,2 Гц. По каждому запросу запускается программа обработки прерывания с вектором прерывания 08h, по которой инкрементируется текущее значение 4-х байтовой переменной, располагающейся в области памяти по адресу 0000:046Сh (счетчик системных часов). Программа ведет счет астрономического времени в формате «часы, минуты, секунды, доли секунды». Начальное время записывается в область памяти астрономического времени при включении компьютера из энергонезависимых часов реального времени. Кроме этого в программу обработки прерывания включен вызов некоторой программы с вектором прерывания 1Ch. В исходном виде эта программа «пустая» и содержит лишь команду возврата IRET, т.е. обработчик прерывания INT 1Ch ничего не делает.. Но при необходимости на вектор прерывания 1Сh может быть установлена некоторая пользовательская программа, функционирующая синхронно с астрономическими часами.

Для получения текущего времени необходимо прочитать текущее значение 4-х байтовой переменной, располагающейся в области памяти по адресу 0000:046Сh (счетчик системных часов).

Системные часы являются основой для построения сервиса реального времени, в функции которого входит управление выполнением последовательности заданий в строгом соответствии со временем. Сервис реального времени сверяет текущее время с временем начала обслуживания и при достижении последнего осуществляет запуск процедуры обслуживания. Для этого удобно применять программируемый таймер, у которого вход CLK одного из счетчиков, работающего в режиме 0, подключается к выходу OUT генератора меток реального времени, а выход используется в качестве запроса прерывания, но более низкого уровня, чем IRQ0. Таким образом сервис реального времени является системной процедурой, в функции которой входит запуск обслуживания очередного запроса из очереди и установка нового интервала ожидания до начала обслуживания следующего запроса.

Организация счета событий от счета времени отличается тем, что вместо времязадающего генератора на вход таймера подают сигналы с датчиков событий, например, импульсных датчиков перемещения, рельсовой педали,, фиксирующей прохождение колесной пары, фотоэлементов, фиксирующих изделия, сходящие с конвейера и т.п. Если таймер запрограммирован для работы в режиме 0, то считывая последовательно во времени состояние его счетчиков, можно подсчитать число событий на том или ином объекте управления.