Помощь в написании студенческих работ
Антистрессовый сервис

Программирование микросхемы таймера 8253 / 8254

РефератПомощь в написанииУзнать стоимостьмоей работы

Микросхема таймера 8253 предоставляет разработчикам оборудования 6 режимов работы для каждого канала. Программисты обычно ограничиваются третьим режимом как для канала 0 при синхронизации, так и для канала 2 при синхронизации или генерации звука. В этом режиме, как только регистр задвижки получает число, он немедленно загружает копию в регистр счетчика. Когда значение в счетчике достигает нуля… Читать ещё >

Программирование микросхемы таймера 8253 / 8254 (реферат, курсовая, диплом, контрольная)

Каждый из трех каналов микросхемы таймера 8253 (8254 для АТ) состоит из трех регистров. Доступ к каждой группе из трех регистров осуществляется через один порт; номера портов от 40h до 42h соответствуют каналам 0 — 2. Порт связан с 8-битовым регистром ввода/вывода, который посылает и принимает данные для этого канала.

Когда канал запрограммирован, через этот порт посылается 2-байтовое значение, сначала младший байт. Это число передается в 16-битовый регистр задвижки (latch register), который хранит его и из которого копия помещается в 16-битовый регистр счетчика. В регистре счетчика число уменьшается на единицу каждый раз, когда импульс от системных часов пропускается через канал. Когда значение этого числа достигает нуля, канал выдает выходной сигнал и затем новая копия содержимого регистра задвижки передвигается в регистр счетчика, после чего процесс повторяется. Чем меньше число в регистре счетчика, тем быстрее ритм. Все три канала всегда активны: процессор не включает и не выключает их. Текущее значение любого из регистров счетчика может быть прочитано в любой момент времени, что не влияет на счет.

Каждый канал имеет две входные и одну выходную линии. Выходная линия выводит импульсы, возникающие в результате подсчета. Назначение этих сигналов варьируется в зависимости от типа IBM PC.

Канал 0 используется системными часами времени суток. Он устанавливается BIOS при старте таким образом, что выдает импульсы приблизительно 18,2 раза в секунду. 4-байтовый счетчик этих импульсов хранится в памяти по адресу 0040:006С (младший байт хранится первым). Каждый импульс инициирует прерывание таймера (вектор 8) и именно это прерывание увеличивает показание счетчика. Это аппаратное прерывание, поэтому оно обрабатывается всегда независимо от того, чем занят процессор, если только разрешены аппаратные прерывания. Выходная линия используется также для синхронизации некоторых дисковых операций, поэтому если вы изменили ее значение, то вам необходимо восстановить первоначальное значение перед обращением к диску.

Канал 1 управляет обновлением памяти на всех машинах, кроме PCjr, поэтому его лучше не трогать. Выходная линия этого канала связана с микросхемой прямого доступа к памяти и ее импульс заставляет микросхему DMA обновить всю память. На PCjr канал 1 служит для преобразования входных данных с клавиатуры из последовательной в параллельную форму. PCjr не использует микросхему прямого доступа к памяти. По этой причине, когда он вместо этого прогоняет данные через процессор, прерывание от таймера заблокировано. Канал 1 используется для подсчета заблокированных импульсов часов времени суток с тем, чтобы можно было обновить значение счетчика после завершения дисковых операций.

Канал 2 связан с динамиком компьютера и производит простые прямоугольные импульсы для генерации звука. Программисты имеют больше возможностей управлять вторым каналом, чем остальными. Простые звуки могут генерироваться одновременно с другими программными операциями, а более сложные звуковые эффекты могут быть достигнуты за счет использования процессора. Канал 2 может быть отсоединен от громкоговорителя и использован для синхронизации. Выходная линия канала 2 связана с динамиком компьютера. Однако динамик не будет генерировать звук до определенных установок микросхемы интерфейса с периферией 8255.

Две входные линии для каждого канала состоят из линии часов, передающей сигнал от микросхемы системных часов, и линии, называемой воротами (gate), которая включает и выключает сигнал от часов. Ворота всегда открыты для сигналов часов по каналам 0 и 1. Однако они могут быть закрыты для канала 2, что позволяет производить некоторые специальные манипуляции со звуком. Ворота закрываются установкой младшего бита порта с адресом 61h, который является регистром микросхемы 8255; сброс этого бита снова открывает ворота. Аналогично выходу канала 2, бит 1 порта 61h связан с динамиком и также может использоваться для генерации звука.

Микросхема таймера может применяться непосредственно для временных операций, но это редко бывает удобным. Ввод с часов производится 1,19 318 млн. раз в секунду (даже на АТ, где системные часы идут быстрее, микросхема таймера получает сигнал с частотой 1,19 МГц). Поскольку максимальное число, которое может храниться в 16 битах, равно 65 535 и поскольку это число делится на частоту импульсов от часов, равную 18,2, то максимально возможный интервал между импульсами равен приблизительно 1/12 с. Поэтому в большинстве временных операций используется счетчик времени суток BIOS. Для подсчета времени читается значение времени суток и сравнивается с некоторым значением (которое запоминалось ранее) для определения числа импульсов, прошедших с того момента. Счетчик времени суток может быть использован для операций в реальном времени.

Микросхема таймера 8253 предоставляет разработчикам оборудования 6 режимов работы для каждого канала. Программисты обычно ограничиваются третьим режимом как для канала 0 при синхронизации, так и для канала 2 при синхронизации или генерации звука. В этом режиме, как только регистр задвижки получает число, он немедленно загружает копию в регистр счетчика. Когда значение в счетчике достигает нуля, регистр задвижки мгновенно перезагружает счетчик и т. д. В течение первой половины отсчета выходная линия включена, а в течение второй — выключена. В результате получаются прямоугольные волны, которые одинаково пригодны как для генерации звука, так и для подсчета.

Способом загрузки чисел в канал управляет 8-битовый командный регистр. Адрес порта для этого регистра равен 43h. Командному регистру передается байт, который сообщает, какой канал программировать и в каком режиме. Должны быть переданы также один или оба байта регистра задвижки. Этот байт показывает также, будет ли число в двоичной или BCD (двоичнодесятичной) форме. Значение битов этого регистра следующее:

бит 0.

  • 3−1
  • 5−4
  • 7−6

если 0, двоичные данные, иначе BCD.

номер режима 1 — 5 (000 — 101).

тип операции:

  • 00 = передать значение счетчика в задвижку
  • 01 = читать/писать только старший байт
  • 10 = читать/писать только младший байт
  • 11 = читать/писать старший байт, потом младший

номер программируемого канала, 0 — 2 (00 — 10).

программирование звучание микросхема Для программирования микросхемы 8253 следует выполнить три основных шага. После того, как третий шаг завершен, запрограммированный канал немедленно начинает функционировать по новой программе.

Послать в командный регистр (43h) байт, представляющий цепочку битов, которые выбирают канал, статус чтения/записи, режим операции и форму представления чисел.

Для канала 2 надо разрешить сигнал от часов, установив в 1 бит 0 порта с адресом 61h. Когда бит 1 этого регистра установлен в 1, канал 2 управляет динамиком.

Вычислить значение счетчика от 0 до 65 535, поместить его в ax и послать сначала младший, а затем старший байт в регистр ввода/ вывода канала (40h — 42h).

Каналы микросхемы 8253 работают постоянно. По этой причине программы всегда должны восстанавливать начальные установки регистров 8253 перед завершением. В частности, если при завершении программы генерируется звук, то он будет продолжаться даже после того, как MS-DOS получит управление и загрузит другую программу.

Показать весь текст
Заполнить форму текущей работой