ЛЕКЦИИ ПО ТСАУ
.pdfПример программного прерывания: Определение наличия сопроцессора.
Program Intr_copr; uses Dos; Var R: registers;
Begin Intr($11, R);
If (R.AX and 2)<>0 then Writeln (‗Есть сопроцессор‘) else Writeln(‗Сопроцессор отсутствует‘); end. Для обращения к функциям DOS используется процедура Procedure MSDOS (var Regs: registers);, которая соответствует функции Intr с номером типа $21.
Пример. Получить версию операционной системы.
Uses WinDOS, winCRT; Var R:TRegisters;
Begin R.AH=$30; MSDOS(R);
Writeln(‗Версия ОС=‘, R.AL, ‗:‘, R.AH); End.
6
Лекция № 8. Программируемые интервальные таймеры-счетчики
Программируемые интервальные таймеры-счетчики (ПИТ) предназначены для:
Для синхронизации компонентов автоматизированной системы во времени.
Для формирования временных интервалов.
Измерения длительности импульсов, частоты или периода сигнала.
Деление частоты сигнала.
Для подсчета числа событий.
Практически все ПИТ используют ТТЛ логику. Уровни ТТЛ: низкий – 0 В, высокий – 5 В. Обобщенная функциональная схема ПИТ включает:
CLK Регистр |
OUT |
GATE Счетчика
Рис. 8.1 Обобщенная функциональная схема ПИТ CLK – вход импульсов синхронизации. При появлении фронта импульса на входе CLK, счетчик увеличивает или уменьшает содержимое регистра счетчика. В регистр счетчика можно записать некоторое число, которое называется константа пересчета и счетчик будет считать, начиная с этого значения. Содержимое регистра счетчика всегда отражает число импульсов, поступивших на вход
CLK.
GATE – входные ворота, служит для управления счетом. Если на входе GATE = 1, счет разрешен, если GATE=0, счет запрещен.
Выход OUT – переключается в зависимости от выбранного режима работы. Если содержимое регистра счетчика увеличивается при каждом импульсе на входе CLK, то выход переключается при достижении максимального значения. Максимальное значение называется Terminal count. Если содержимое счетчика уменьшается при каждом импульсе на входе CLK, то выход OUT переключается, когда содержимое счетчика достигнет нуля. Это значение также называется Terminal Count. Выход OUT подключается к элементам автоматизированной системы для синхронизации действий.
Основные характеристики счетчиков-таймеров:
1.Разрешение - определяется числом бит в регистре счетчика. Эта характеристика говорит, до какого максимального значения счетчик может считать. Современные счетчики могут содержать 16-48 двоичных разрядов.
2.Максимальная тактовая частота - определяет максимальную скорость, с которой можно переключать вход CLK. При большей максимальной тактовой частоте счетчик может считать быстрее. Максимальные частоты счета: 1’100 МГц.
8.1 Интервальные таймеры-счетчики Intel 8253, Intel 8254
Эти таймеры программно-совместимы и отличаются быстродействием.
Технические характеристики:
1. Число независимых каналов – 3;
1
2.Число режимов работ канала – 6;
3.Разрешение каждого канала – 16 бит;
4.Содержимое регистра счетчика уменьшается с каждым импульсом на входе CLK. Terminal count наступает когда содержимое счетчика становится равным нулю;
5.Максимальная тактовая частота на входе CLK: Intel 8253 – 2 МГц, Intel 8254 – 8 МГц;
6.Формат счета импульсов – двоичный или двоично-десятичный;
7.КМОП-технология, напряжение питания - 3’6 В, корпус по DIP-технологии, содержит 24 вывода.
Схема включения программируемого интервального таймера-счетчика к автоматизированной системе
Рис. 8.2. Функциональный состав и схема включения ПИТ к АС
2
Выводы (рис. 9.2.) D7 D0 двунаправленные трехстабильные линии данных Служит для приема управляющей информации от процессора и передачи статусной информации в процессор.
пВыводы RD , WR - входы сигналов управления чтения, записи. В машинах семейства IBM PC
подключаются к
IOR , IOW . Вывод CS - выбор кристалла, подключается в шине адреса посредством дешифратора адреса.
Когда CS =1, линии D7 D0 переходят в состояние высокого импеданса, не разрешая чтение
и запись; если CS =0, регистры таймера доступны для чтения или записи.
Выводы A0 , A1 - адресные входы (4 адреса на магистрали).
Каналы счетчика таймера подключаются к внешним сигналам с помощью трех линий: CLK, GATE, OUT.
Выводы CLK [0, 1, 2] входы тактовых сигналов. Отрицательный фронт сигнала на входе CLK приводит к уменьшению содержимого счетного элемента.
Выводы GATE [0, 1, 2] управляющие входы служит для запуска, останова или перезапуска счета в соответствии с установленным режимом работы.
Выводы OUT [0, 1, 2] выходы счетчиков переключаются в зависимости от выбранного режима работы при достижении состояния Terminal Count – конец счета.
8.2 Состав и назначение регистров каналов таймера
Карта программно доступных регистров таймера
Регистр |
|
Разряд |
Тип |
Относительный адрес |
||
|
ность |
доступа |
Канал 0 |
Канал 1 |
Канал 2 |
|
Входной регистр счетчика |
CR |
16 |
запись |
0 |
1 |
2 |
Выходной регистр счетчика OL |
16 |
чтение |
0 |
1 |
2 |
|
Выходной регистр состояния SL |
8 |
чтение |
0 |
1 |
2 |
|
Регистр управляющего байта CBR |
8 |
запись |
3 |
3 |
3 |
|
Управление:
CBR (Control Byte Register) – регистр управляющего байта. 8 разрядов, относительный адрес – 3 для любого канала, номер канала должен задаваться в формате управляющего байта.
Состояние:
SR (Status Register) – внутренний регистр состояния, процессору не доступен, хранит режим работы канала (состояние выхода OUT, состояние счетчика).
SL (Status Latch) – выходной регистр состояния. Предназначен для чтения состояния таймера и имеется только в Intel 8254. Информация из SR может записываться в SL по команде процессора.
Счет:
3
CR (Count Register) входной регистр счетчика. Предназначен для хранения начального значения счетчика канала, т.е. константы пересчета. 16 – разрядный, доступен ЦП для записи. Содержимое CR может записываться в счетный элемент CE, если это необходимо в текущем режиме работы. CE (Counter Element) счетный элемент. Его содержимое уменьшается с каждым импульсом на входе CLK, если GATE = 1. ЦП не доступен. При достижении СЕ состояния Terminal Count, в зависимости от режима работы таймера, тем или иным способом изменяется выход OUT.
OL (Output Latch) – выходной регистр счетчика, всегда доступен ЦП для чтения. Может использоваться для запоминания содержимого CE без остановки счета.
8.3 Форматы регистров таймера
CBR – определяет формат счета, режим работы канала, порядок загрузки констант во входной регистр счетчика и порядок чтения содержимого CE из OL.
Формат регистра управляющего байта (CBR).
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
SC |
|
RW |
MODE |
BCD |
|||
BCD – определяет формат счета: если BCD=1, то двоично-десятичный формат; если BCD=0, то двоичный формат. В двоичном формате константа задается в диапазоне 0-65535, в двоичнодесятичном константа задается в диапазоне 0-9999. Значения константы N=0: в двоичном формате соответствует 65536 (216), в двоично-десятичном формате: 1000 (104). MODE – определяет режим работы канала:
000
Режим 0 - прерывания по окончании счета.
001 Режим 1 - аппаратно-перезапускаемый одновибратор.
X10
Режим 2 – импульсный генератор частоты.
X11 Режим 3 – генератор меандра.
100
Режим 4 – программно-запускаемый одновибратор.
101 Режим 5 – аппаратно-запускаемый одновибратор.
RW – порядок загрузки констант во входной регистр счетчика и порядок чтения счетного элемента из OL (выходного регистра счетчика).
00 |
|
Команда фиксации счетного элемента в выходном регистре счетчика. |
|||||
01 |
|
Константа задана только младшим байтом (запись/чтение только младшего байта). |
|||||
10 |
|
Константа задана только старшим байтом (запись/чтение только старшего байта). |
|||||
11 |
|
Запись/чтение сначала младшего, затем старшего байта. |
|||||
SC – определяет номер канала или команду чтения состояния таймера. |
|||||||
00 |
|
Канал 0 |
|
|
|
|
|
01 |
|
Канал 1 |
|
|
|
|
|
10 |
|
Канал 2 |
|
|
|
|
|
11 |
|
Чтение состояния таймера |
|||||
Команда фиксации содержимого счетного элемента в выходном регистре. |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
SC |
|
0 0 (RW) |
X |
X |
X |
X |
|
4
Фиксация содержимого счетного элемента в выходном регистре счетчика.
Команда чтения состояния таймера: |
|
|
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 1 |
|
Count |
Status |
CNT2 |
CNT1 |
CNT0 |
0 |
Команда может быть выполнена только в Intel 8254. Команда позволяет выполнить для одного, нескольких или всех каналов следующие действия:
1.Фиксация содержимого счетного элемента в выходном регистре счетчика.
2.Запись содержимого внутреннего регистра состояния в выходной регистр состояния. Count – защелкивать или нет выходные регистры счетчика (0 – да, 1 – нет).
Status - защелкивать или нет статусные регистры счетчика (0 – да, 1 – нет).
CNT2, CNT1, CNT0 – определяет номера каналов, в которых необходимо выполнить данную операцию.
Например: 11001110 – защелкивание выходного регистра счетчика и статусного регистра по всем каналам.
Формат выходного регистра состояния (SL)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
OUT |
Count |
RW |
|
|
|
CD |
|
Бит OUT определяет состояние выхода OUT.
Count – определяет состояние счетчика. Если 0, то выходной регистр счетчика сопровождает счетный элемент. Если 1, то неопределенное состояние (например, когда счет в этом канале не осуществляется).
RW, MODE, BCD – соответствуют битам, которые задаются в формате управляющего бита.
8.4 Программируемые режимы работы таймера
Делятся на 3 группы по правилам загрузки константы пересчета содержимым входного регистра счетчика.
1 группа режимов.
Режимы 0, 4 – однократное выполнение функций. При GATE = 1 константа из входного регистра счетчика передается в счетный элемент по первому тактовому импульсу на входе CLK, при последующих импульсах происходит уменьшение содержимого счетного элемента. Если во время счета установить GATE=0, это приведет к остановке счета. Новый положительный сигнал на входе GATE разрешает продолжение счета. По окончании счета выполнение действий заканчивается. При необходимости повторения функции необходимо новое программирование, т.е. загрузка новой константы пересчета. Если во время счета загружается новая константа пересчета во входной регистр счетчика, она заносится в счетный элемент на следующем такте CLK и счет продолжается с нового значения.
Режим 0 – прерывание по завершению счета. Сразу после загрузки управляющего байта, на выходе OUT устанавливается низкий уровень, GATE = 1 – разрешение счета.
Первый тактовый импульс на входе CLK загружает счетный элемент из входного регистра счетчика, остальные импульсы подсчитываются. Сигнал OUT удерживается в 0 на (N 1) T clk .
5
Загрузка CBR, загрузка |
|
|
|
|
OUT |
|
(N1+1)*TCLK |
|
|
|
+1)*TCLK |
|
|||||
|
|
|
|
|
||||
|
|
|
|
|
|
одно вибратор. |
||
Сразу после загрузки |
|
выходе OUT устанавливается сигнал высокого |
||||||
уровня. |
|
|
|
|
|
|
||
Высокий уровень |
|
|
|
счет. |
|
|
||
Первый тактовый |
|
|
элемент CE |
|
из входного регистра |
|||
счѐтчика CR и только второй |
|
|
счет. |
|
|
|||
На выходе OUT через N |
|
|
|
|
|
нулевого уровня на |
||
время одного периода тактовой |
|
|
|
|
|
|
||
Загрузка CBR, загрузка |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||
GATE=1 |
(N+1)*TCLK |
|
|
|
|
|||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
2 группа режимов. |
|
|
|
|
|
|
|
|
|||
Для них характерна |
|
запрограммированных |
|
функций |
|||||||
без |
|
|
|
|
|
|
|
|
|||
Загруженная константа |
входном |
CR, а ее передача в |
|||||||||
счетный элемент CE |
фронту |
от завершения счета. |
|||||||||
После загрузки |
на выходе |
|
высокий |
||||||||
уровень сигнала OUT=1. |
|
|
|
|
|
|
|
|
|||
Загрузка константы в |
выполнится |
|
фронте сигнала |
||||||||
на входе GATE ↑. |
↑ приводит к загрузке счетного элемента CE из |
||||||||||
Каждый фронт сигнала |
|||||||||||
входного регистра CR. |
|
|
|
|
|
|
|
|
|||
Режим 1 – аппаратно- |
. |
|
|
|
|
|
|
|
|||
При загрузке |
элемент ( |
GATE) на выходе OUT |
|||||||||
устанавливается сигнал |
|
|
|
|
*N, |
который изменяется по |
|||||
окончании счета. |
|
|
|
|
|
|
|
|
|||
|
GATE |
|
GATE |
|
|
|
|||||
|
|
|
N*TCLK |
|
|
|
|
|
|
|
|
|
|
|
N |
*TCLK |
|
|
|
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
Режим 5 – аппаратно- |
|
|
|
|
|
|
|
|
|||
Загрузка константы в |
|
при положительном фронте сигнала на |
|||||||||
входе GATE ↑. |
|
|
|
|
|
|
|
|
|||
На выходе OUT после |
|
сигнал нулевого уровня на время |
|||||||||
одного периода TCLK. |
|
|
|
|
|
|
|
|
|||
GATE
6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TCLK |
|
|
|
|
TCLK |
|
|
||
пересчета |
|
|
|
|
|
|
(N)*TCLK |
|
|
|
|
|
(N)*TCLK |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
3 группа режимов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Режимы с |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Здесь входной |
|
|
|
|
|
|
автоматически переписывается в счетный элемент CE |
|||||||||||||||
после завершения |
|
|
|
|
|
|
используются для |
создания импульсных генераторов и |
|||||||||||||||
генераторов меандра. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
После записи |
|
|
|
|
|
|
OUT |
|
уровень. |
|||||||||||||
|
При GATE=1 |
|
|
|
|
|
|
|
|
|
импульсы: |
|
|
|
|
|
|
||||||
|
|
TOUT = |
|
|
|
|
|
|
соответственно, периодом |
||||||||||||||
|
|
|
|
|
|
|
|
= TOUT/TCLK= TOUT* |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
При подаче |
|
|
|
|
|
|
|
|
|
|
и на |
|
устанавливается напряжение |
|||||||||
высокого уровня. |
|
|
|
|
|
|
|
|
|
|
с |
|
значения счета. |
||||||||||
|
Если |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
Перезагрузка |
|
|
|
|
|
|
не влияет на |
. |
|
|
|
|
||||||||||
|
Новый счет |
|
|
|
|
|
|
предыдущего. |
|
|
|
|
|
|
|||||||||
|
Внимание. Так |
|
|
|
|
|
|
= TOUT / TCLK – |
|
целое число, на выходе OUT |
|||||||||||||
можно установить |
|
|
|
|
|
|
кратные FCLK, или периоды TOUT, кратные TCLK. Если N |
||||||||||||||||
округляется, то |
|
|
|
|
|
|
|
|
|
частотой. |
|
|
|
|
|
|
|||||||
Режим 2 - |
. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
На выходе |
|
|
|
|
|
|
= FCLK/N устанавливается нулевой потенциал на время |
|||||||||||||||
одного периода TCLK, |
|
|
|
|
|
|
константа: |
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
clk |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
Tout |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
В момент |
|
|
|
|
|
|
|
|
|
|
в низкий уровень |
|||||||||||
|
|
|
|
|
|
|
|
|
|
= 1 сигнал |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
на один такт TCLK. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Режим 3 – генератор |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
На выходе OUT |
|
|
|
|
|
|
с длительностью полупериодов, равной: |
||||||||||||||||
|
— Tout += Tout |
|
|
|
|
|
|
N; |
|
|
|
|
|
|
|||||||||
|
— Tout += Tclk |
|
|
|
|
|
|
N: для |
|
и |
|||||||||||||
|
— Tout – = Tclk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
T |
|
|
|
|
|
|
OUT |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Содержимое |
в этом режиме уменьшается на 2 с каждым импульсом |
|
Tclk. |
|
|
Состояние TC |
за один период генератора. |
– 1, для режимов 2,3 |
|
для режимов |
|
составляют – 2.
7
Максимальные значения N счетчика для всех режимов равны 0, что соответствует значению 65536, или 10000 в зависимости от формата счета.
8
