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

Вектор Номер Адресная функция

Листинг 13.1. Программа Терминатор (TERM.С). | Алгоритм 13.2. Алгоритм Уклонения. | Алгоритм 13.3. Шаблоны со случайным выбором. | Листинг 13.2. Муха (FLY.C). | Листинг 13.3. Одинокая муха. (DFLY.C). | Листинг 13.4. Умная «Муха» (BFLY.C). | Состояние Существо 3: Хныкалка | Алгоритм 13.6. Использование плотности вероятностей в выборе состояния. | Алгоритм 13.7. Путь наружу. | Последовательный порт Базовый адрес порта |


Читайте также:
  1. Amp;. 2 ОБЩИЕ И СПЕЦИФИЧЕСКИЕ ЗАКОНОМЕРНОСТИ РАЗВИТИЯ ЛИЧНОСТИ 'НОРМАЛЬНОГО И УМСТВЕННО ОТСТАЛОГО РЕБЕНКА
  2. IV. Перепишите и переведите предложения, обращая внимание на употребление герундия в разных функциях.
  3. IV. Перепишите и переведите предложения, обращая внимание на употребление герундия в разных функциях.
  4. X. Прочитайте и переведите предложения, обращая внимание на употребление инфинитива в различных функциях.
  5. XIV. Прочитайте и переведите предложения, обращая внимание на употребление Participle I в разных функциях.
  6. XV. Прочитайте и переведите предложения, обращая внимание на употребление Participle II в разных функциях.
  7. А.В. Дружинин о творчестве Пушкина и Гоголя в связи с закономерностями развития современной литературы.

0х0В 0x002C-0x002F RS-232 порт 1

0х0С 0х0030-0х0033 RS-232 порт 2

Все что нам нужно сделать для установки нового ISR, это использовать функцию Си _dos_getvect(), чтобы запомнить прежнее значение вектора, и _dos_setvect(), чтобы инсталлировать наш собственный ISR на место старого. Далее, с приходом прерывания (то есть когда получен символ), будет вызываться наша процедура. Звучит это великолепно, но что она будет делать?

Наш ISR должен выполнять только одну задачу — получить символ из регистра приемного буфера (RBR) и поместить его в программный буфер. Чтобы основная программа могла брать поступающие символы по мере надобности, мы должны буферизировать ввод. С этой мыслью создадим буфер с перезаписью и установим его размер равным 128 байтам, хотя, вообще-то, его длина может быть любой.

Алгоритм буферизации работает так. Полученный из RBR следующие символ помещается в буфер в текущую позицию. Далее текущий индекс буфера инкрементируется. Когда позиция записи в буфере доходит до конца, она перемещается к началу. Как вы понимаете, при этом данные, которые были записаны ранее, окажутся перекрыты. Надеюсь, что до того, как это произойдет основная программа успеет прочитать символы из буфера и обработать полученные данные. Рисунок 14.3 поясняет принцип работы буфера с перезаписью.

Мы должны обсудить еще одну тонкость, прежде чем закончим разговор об ISR. Непосредственно перед выходом из процедуры обработки прерывания необходимо сообщить PIC'y о ее завершении. Для этого в конец процедуры нужно вставить команду записи в порт 20h значения 20h. Если этого не сделать, произойдет сбой системы. Но это — между прочим, ибо пока вы используете функции Си, об этом не стоит беспокоиться. Вот если бы вы решили писать программы исключительно на ассемблере, то вопрос правильного завершения прерываний оказался бы весьма актуален и мы обсудили бы его более подробно. Но давайте пока остановимся на Си.

Листинг 14.1 показывает операции с ISR.

 


Дата добавления: 2015-07-12; просмотров: 106 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Штырьковый разъем| Листинг 14.1. Операция ISR.

mybiblioteka.su - 2015-2024 год. (0.008 сек.)