Разработка программной и аппаратной поддержки к методическим указаниям Программирование микроконтроллеров
Категория реферата: Рефераты по информатике, программированию
Теги реферата: сочинения по русскому языку, культурология
Добавил(а) на сайт: Случевский.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Рис. 1.4. Структура АЛУ.
АЛУ обычно работает только с положительными целыми числами. Однако при выполнении вычитания получаются отрицательные числа, если вычитаемое больше уменьшаемого. Для представления отрицательных чисел используется дополнительный код – «дополнение до двух». Это необходимо учитывать при знакомстве с работой АЛУ.
Вместо вычитания одного числа из другого, происходит добавление отрицательного числа:
А – В = А + (-В), где отрицательное число (-В) представляется в дополнительном коде.
Чтобы получить дополнительный код отрицательного двоичного числа, необходимо инвертировать значение каждого бита, а затем прибавить единицу:
-В = ( В ^ 0хff ) + 1, где ^ - операция «исключительное или».
Сложность АЛУ во многом определяет сложность всего МК в целом. Часто над созданием АЛУ работает группа разработчиков, сравнимая по составу с той, которая работает над остальной частью микропроцессора или микроконтроллера. От того, как работает АЛУ, зависит функционирование процессора, входящего в состав МК, а значит и всего МК в целом.
1.2.4. Подпрограммы и функции
При вызове подпрограммы или функции требуется сохранить содержимое СК
для того, чтобы команда возврата могла вернуть управление исходной
программе. Это может выполняться автоматически путем сохранения адреса
возврата в сетке. При возврате к исходной программе адрес извлекается из
стека и загружается в СК. Вызов функции может быть реализован в МК, не
имеющих стека, путем использования индексного регистра для эмуляции стека.
Если нельзя непосредственно загрузить в стек содержимое СК, то адрес
возврата к исходной программе можно сохранить в эмулированном стеке.
Иногда приходится передавать функции некоторые параметры. Один из самых эффективных и часто встречаемых способов передачи параметров в функцию – это поместить их в стек перед вызовом функции. В подпрограмме можно загрузить индексный регистр значения указателя стека и таким образом получить доступ к параметрам.
Другим способом передачи параметров является их сохранение в регистрах процессора или в памяти данных в качестве специальных переменных. Передача параметров через регистры сокращает число регистров, доступных при выполнении функции. Сохранение же параметров в виде специальных переменных уменьшает объем памяти, доступной для использования программой. Данное ограничение может быть весьма существенно для МК. Обычно значения возвращаемых параметров загружаются в регистры процессора, т.к. это наиболее быстрый и эффективный способ передачи данных.
Прерывания.
Прерывание – это запуск специальной подпрограммы (называемой
«обработчиком прерывания» или «программой обслуживания прерывания»), который вызывается сигналом аппаратуры. На время выполнения этой
подпрограммы реализация текущей программы останавливается(см. рис.1.5).
Термин «запрос на прерывание» (interrupt request) используется потому, что
иногда программа отказывается подтвердить прерывание и выполнить обработчик
прерывания немедленно.
Рис. 1.5. Выполнение прерываний.
МК может не реагировать на прерывания, пока не завершится выполнение текущей задачи – этот реализуется путем запрещения (маскирования) обслуживания запроса прерывания. После решения задачи возможен один из двух вариантов: сброс маски и разрешение обслуживания прерывания, что приведет к вызову обработчика прерывания, или анализ значения битов, указывающих на поступление запросов прерывания и непосредственное выполнение программы обслуживания без вызова обработчика прерывания. Такой метод обработки прерывания используется, когда требуется обеспечить заданное время выполнения основной программы, так как любое пребывание может нарушить реализацию необходимого интерфейса.
Обработчик всегда обеспечивает следующую последовательность действий:
1. Сохранить содержимое регистров контекста.
2. Сбросить контроллер прерываний и оборудование, вызвавшее запрос.
3. Обработать данные.
4. Восстановить содержимое регистров контекста.
5. Вернуться к прерванной программе.
Регистры контекста – это регистры, определяющие текущее состояние выполнения основной программы. Обычно к их относят СК, регистры состояния и аккумулятор. Другие регистры МК, такие как индексные регистры, могут быть использованы в процессе обработки прерывания, поэтому их содержимое также необходимо сохранить. Все остальные регистры являются специфическими для конкретного типа МК и его применения.
После сброса в исходное состояние контроллер прерываний готов воспринимать следующий запрос, а оборудование, вызывающее прерывание, готово посылать запрос, когда возникают соответствующие причины. Если поступит новый запрос прерывания, то регистр маскирования прерываний процессора предотвратит обработку прерывания, но регистр состояния прерываний зафиксирует этот запрос, который будет ожидать своего обслуживания. После завершения обслуживания текущего прерывания маска прерывание будет сброшена, и вновь поступивший запрос поступит на обработку.
Вложенные прерывания сложны некоторым типам МК, которые не имеют стека. Эти прерывания так же могут вызывать проблемы, связанные с переполнением стека.
Иногда МК может быстро отреагировать на запрос прерывания, приняв необходимые данные, которые будут потом использованы после решения текущей задачи. Это реализуется путем сохранения поступивших данных в массиве памяти и последующей их обработки, когда выполнение исходной программы буде завершено. Такой способ обслуживания является хорошим компромиссом между немедленной полной обработкой прерывания, которая может потребовать много времени, и игнорированием прерывания, что может привести к потере информации о событии, вызвавшем прерывание.
При обработке прерывания содержимое регистра состояния обычно (но не всегда) автоматически сохраняется вместе с содержимым СК перед обработкой прерывания. Это избавляет от необходимость сохранять его в памяти программными средствами с помощью команды пересылки, а затем восстанавливать при возврате к исходной программе. Однако такое автоматическое сохранение реализуется не во всех типах МК.
Рекомендуем скачать другие рефераты по теме: социальная работа реферат, изложение язык.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата