Студопедия — Краткие сведения из теории. Программирование микросхемы таймера 8253 / 8254
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Краткие сведения из теории. Программирование микросхемы таймера 8253 / 8254






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

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

 

    Часы  
                                   
Канал 0           Задвижка   Счетчик   Прерывание таймера BIOS
             
                          Ворота (всегда открыты)
Канал 1           Задвижка   Счетчик   Обновление памяти
             
            Ворота (всегда открыты)
Канал 2           Задвижка   Счетчик  
               
  Ворота        
Интерфейс с периферией              
Порт В                            
                          Выходной сигнал    
                          динамика  
Порт С                            
                                   
                                   

 

Рис. 1. Микросхема таймера 8253 / 8254

 

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

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

§ Канал 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, 19318 млн. раз в секунду (даже на АТ, где системные часы идут быстрее, микросхема таймера получает сигнал с частотой 1, 19 МГц). Поскольку максимальное число, которое может храниться в 16 битах, равно 65535 и поскольку это число делится на частоту импульсов от часов, равную 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 следует выполнить три основных шага. После того, как третий шаг завершен, запрограммированный канал немедленно начинает функционировать по новой программе.

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

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

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

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

 

Низкий уровень

 

В данном примере канал 0 программируется на другое значение, а не на установленное BIOS при старте. Причина изменения установки состоит в том, чтобы поменять интервал изменения счетчика времени суток на величину, большую, чем 18, 2 раза в секунду. Частота обновления счетчика изменяется, например, на 1000 раз в секунду с целью проведения точных лабораторных измерений. Значение задвижки должно быть 1193 (1193180 тактов в секунду/1000). Перед дисковыми операциями оригинальное значение задвижки должно быть восстановлено, поскольку канал 0 используется для синхронизации дисковых операций. Максимально возможное значение – 65535 тактов часов между импульсами от канала – может быть достигнуто засылкой 0 в регистр задвижки (0 немедленно превращается в 65535 при уменьшении на единицу).

 

; ---установка регистров ввода/вывода  
COM_REG EQU 43h ; адрес командного регистра
CHAN_2 EQU 42h ; адрес канала 2
mov al, 00110110b ; установка битов для канала 2
out COMMAND_REG, al ; засылка в командный регистр
; ---посылка счетчика в задвижку  
movax, 1193 ; счетчик для 100 импульсов/с
out CHAN_2, al ; посылка младшего байта
mov al, ah ; готовим для посылки старший байт
out CHAN_2, al ; посылка старшего байта

 

Установка/чтение времени

 

При старте MS-DOS запрашивает у пользователя текущее время. Введенное значение помещается в 4 байта, содержащие счетчик времени суток (начиная с 0040: 006С, младший байт хранится первым). Сначала оно преобразуется в форму, в которой подсчитывается время суток, т.е. время преобразуется в число восемнадцатых долей секунды, прошедших с полуночи. Это число постоянно обновляется 18, 2 раза в секунду прерыванием таймера. Когда появляется очередной запрос на время, текущее значение счетчика времени суток преобразуется обратно в привычный формат часы-минуты-секунды. Если при старте не было введено значение, то счетчик устанавливается в ноль, как будто сейчас полночь. Компьютеры снабженные микросхемой календаря-часов, могут автоматически устанавливать счетчик времени суток.

 

Средний уровень

 

MS-DOS предоставляет прерывания для чтения и установки времени, производя необходимые преобразования между значением счетчика времени суток и часами-минутами-секундами. Время выдается с точностью до 1/100 секунды, но поскольку счетчик времени суток обновляется с частотой в пять раз меньшей, показания сотых секунд очень приближенные. Функция 2c h прерывания 21 hвыдает время, а функция 2d h устанавливает его. В обоих случаях ch содержит часы (от 0 до 23, где 0 соответствует полночи), cl – минуты (от 0 до 59), dh – секунды (от 0 до 59) и dl – сотые доли секунд (от 0 до 99).

Кроме того, при получении времени функцией 2c h al содержит номер дня недели (0 = воскресенье). Значение дня будет верным, только если была установлена дата. DOS вычисляет номер дня недели по дате. Отметим также, что при установке времени функцией 2d h al отмечает правильность введенного значения времени (0 = правильно, ff = неправильно).

; ---установка времени  
mov ch, HOURS ; вводим значение времени
mov ch, MINUTES  
mov dh, SECONDS  
mov dl, HUNDREDTHS  
mov ah, 2dh ; номер функции установки времени
int 21h ; устанавливаем время
cmp ah, 0FFh ; проверяем правильность значения
je ERROR ; переход на обработку ошибки
; ---получение времени  
mov ah, 2ch ; номер функции получения времени
int 21h ; получаем время
mov DAY_OF_WEEK, ah ; получаем день недели из ah

 

Низкий уровень

 

Если вы изменили скорость импульсов канала 1 микросхемы 8253 для специальных приложений, то необходимо написать свою процедуру декодирования показаний счетчика времени суток. BIOS позволяет диапазон значений счетчика от 0 до 1, 573 миллиона и это может быть изменено только путем изменения прерывания таймера. Поэтому часы, реально показывающие сотые доли секунды, не могут работать 24 часа без специально написанной программы. Отметим также, что байт 0040: 0070 устанавливается в ноль при старте, а затем увеличивается на 1 (не больше) по ходу часов.

 







Дата добавления: 2014-11-10; просмотров: 844. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

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

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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

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

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия