- •Системное программирование
- •Контрольные вопросы
- •2. Программная модель микропроцессора 8086
- •2.1. Представление информации
- •2.2. Регистры микропроцессора
- •2.3. Формат машинной команды
- •2.4. Способы задания операндов команды
- •Контрольные вопросы
- •3. Основные понятия языка ассемблера
- •3.1. Предложения
- •3.2. Директивы определения данных
- •3.3. Выражения
- •Контрольные вопросы
- •4. Сегментированная модель памяти
- •4.1. Сегментирование адресов
- •4.2. Директивы сегментации
- •4.3. Общая структура программы
- •4.4. Модели памяти
- •Контрольные вопросы
- •5. Основные группы команд
- •5.1. Соглашению по описанию команд
- •5.2. Команды пересылки данных
- •5.3. Арифметические команды
- •5.4. Логические команды
- •5.5. Команды переходов
- •5.6. Команды организации циклов
- •5.7. Команды обработки строк
- •5.8. Стековые команды
- •5.9. Команды ввода-вывода
- •5.10. Команды прерываний
- •5.11. Команды управления микропроцессором
- •Контрольные вопросы
- •6. Подпрограммы
- •Контрольные вопросы
- •7. Разработка одномодульной программы
- •7.1. Трансляция и компоновка программы
- •7.2. Отладка программы
- •Контрольные вопросы
- •8. Разработка многомодульных программ
- •8.1. Принципы разработки модулей
- •8.2. Расширенное применение директивы сегментации
- •9. Упражнения
- •Контрольные вопросы
- •Программирование микропроцессорных устройств
- •10. Программирование системного таймера
- •10.1. Описание таймера-счетчика 8254
- •10.2. Режимы работы таймера
- •10.3. Структура регистров таймера
- •10.4. Упражнения
- •Контрольные вопросы
- •11. Программирование контроллера прерываний
- •11.1. Механизм обработки прерываний
- •11.2. Типы прерываний
- •11.3. Приоритеты прерываний
- •11.4. Контроллер прерываний 8259
- •11.5. Идентификация прерываний
- •11.6. Прерывания bios и ms-dos
- •11.7. Упражнения
- •Контрольные вопросы
- •12. Программирование параллельного порта
- •12.1. Интерфейс Centronics
- •12.2. Работа с параллельным портом на низком уровне
- •12.3. Стандартные средства работы с параллельным портом
- •12.4. Упражнения
- •Контрольные вопросы
- •13. Программирование последовательного порта
- •13.1. Основы последовательной передачи данных
- •13.2. Последовательный интерфейс rs-232c
- •13.3. Универсальный асинхронный приемо-передатчик 8250
- •13.4. Порты асинхронного адаптера
- •13.5. Стандартные средства программирования последовательного порта
- •13.6. Упражнения
- •Контрольные вопросы
- •Литература
- •141 Кафедра Вычислительной Техники и Программирования Московского Государственного Открытого Университета
10.2. Режимы работы таймера
Рассмотрим существующие режимы работы таймера. Всего доступно шесть режимов. В табл. 78 приведено их краткое описание.
Табл. 78. Группы режимов работы таймера.
№ |
Тип режима |
Описание |
0,4 |
Однократное выполнение функций. |
По сигналу CLK содержимое регистра делителя записывается в регистр счетчика. Для повторения выполнения функции необходима новая загрузка регистра делителя. |
1,5 |
Работа с перезапуском. |
По фронту сигнала GATE регистр счетчика перезаписывается, даже если текущая операция не была завершена. |
2,3 |
Работа с автозагрузкой. |
Регистр счетчика автоматически перезаписывается после завершения счета. |
Режим 0. Прерывание по таймеру. После выбора данного режима выход OUT счетчика будет низким (рис. 32). Уровень будет оставаться таким после загрузки регистра счетчика значением CNTR, и когда он начнет отсчет. Когда значение счетчика достигнет нулевого значения TC, выход OUT станет высоким, и будет оставаться таким до момента задания нового режима работы или делителя.
После достижения TC значение счетчика продолжит уменьшаться. Перезапись регистра счетчика в течение его работы приведет к следующему: запись LSB остановит отсчет, а запись MSB приведет к отсчетам уже по новому значению.
Рис. 32. Счетчик выполняет останов по заданному значению.
Режим 1. Ждущий мультивибратор. Первоначально выход OUT высокий (рис. 33). По переднему фронту сигнала GATE выход станет низким, и будет оставаться таким до наступления нулевого значения TC. По его достижении выход OUT вновь станет высоким. Значение счетчика может быть получено без влияния на продолжительность одиночного импульса.
Рис. 33. Счетчик в режиме программируемого мультивибратора.
Режим 2. Генератор уровня. Данный режим и режим 3 используются для создания программируемых импульсных генераторов и генераторов прямоугольных импульсов (меандра) (рис. 34). Низкий уровень на входе GATE приведет к высокому уровню OUT, а высокий уровень GATE инициирует запуск счетчика. Период между импульсами на выходе OUT определяется заданным значением счетчика. Выход счетчика остается низким в течение импульса CLK. Перезагрузка счетчика новым значением отразится на периоде, следующим за текущим.
Рис. 34. Счетчик в режиме генератора уровня.
Режим 3. Генератор меандра. Данный режим во многом схож с предыдущим (рис. 35). Однако при поступлении очередного импульса CLK значение счетчика уменьшается на две единицы. Выход OUT остается высоким в течение первой половины отсчетов (при четном начальном значении счетчика) и низким на второй половине. По достижении значения TC выход OUT инвертируется, счетчик перезагружается, и процесс повторяется заново.
Рис. 35. Счетчик в режиме генератора прямоугольных импульсов.
При нечетном начальном значении счетчика и высоком уровне OUT (после загрузки счетчика) первый импульс CLK уменьшит значение счетчика на единицу, а последующие импульсы CLK будут уменьшать значение на две единицы. Когда счетчик достигнет TC, он перезагрузится. Теперь первый импульс CLK уменьшит значение счетчика на 3 единицы, а все последующие вновь на две единицы. Таким образом, при нечетном начальном значении счетчика выход OUT будет иметь высокий уровень на (N+1)/2 отсчетах и низкий на (N-1)/2 отсчетах. В последующих примерах будет использоваться именно этот режим.
Режим 4. Программно-запускаемый одновибратор. После установки режима выход OUT высокий (рис. 36). Когда число полностью загружено в счетчик канала и на управляющий вход GATE подан высокий уровень, начнется счет. По достижении значения TC, выход OUT станет низким на период одного импульса CLK. Если перезагрузка счетчика произведена в течение отсчета, новое значение будет загружено при следующем импульсе CLK. При низком уровне сигнала GATE процесс отсчета приостанавливается.
Рис. 36 Счетчик в режиме программного строба.
Режим 5. Аппаратно-запускаемый одновибратор. Работа канала в этом режиме аналогична работе в режиме 4 с той лишь разницей, что счетчик канала после загрузки начинает счет только по переднему фронту входного сигнала GATE (рис. 37). Кроме того, если во время счета на управляющем входе снова появится передний фронт сигнала, то счет будет начат заново. По достижении значения TC, выход становится низким на период одного импульса CLK.
Рис. 37. Счетчик в режиме аппаратного строба.