Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

Наиболее вероятно, что запрос поступит в момент, когда центральный процессор уже начал, но еще не завершил исполнение очередной команды. В большинстве случаев исполнение текущей команды будет завершено, в счетчике PC будет сформирован адрес следующей команды основной программы, и только затем МК начнет процедуру перехода к подпрограмме прерывания. В отличие о других, МК семейства 68HC12/HCS12 обладают рядом специфических команд, время исполнения которых значительно превышает время исполнения традиционных команд ассемблера. К таким командам относятся инструкции нечеткой логики REV, REVW, WAV, которые могут потребовать для своего выполнения несколько сот циклов центрального процессора. Поэтому, при возникновении запроса, исполнение этих команд будет прервано с сохранением промежуточных результатов. Завершение исполнения инструкции произойдет после выполнения подпрограммы прерывания. Центральный процессор МК семейства 68HC12/HCS12 оснащен двухступенчатым конвейером команд. Это означает, что во время исполнения текущей команды регистры конвейера команд хранят выбранные из памяти коды двух следующих команд. Когда запрос на прерывание поступает, нормальный порядок исполнения команд фоновой программы нарушается. Поэтому хранящиеся в конвейере команд коды становятся бесполезными, и конвейер автоматически очищается. После этого в счетчике команд автоматически восстанавливается адрес первой не исполненной команды фоновой программы, к которой МК должен будет вернуться после прерывания. Далее содержимое программного счетчика PC и других регистров центрального процессора сохраняется в стеке. Последовательность загрузки в стек следующая (рис. 4.22): старший байт счетчика команд PCH, младший байт счетчика команд PCL, старший YH и младший YL байты индексного регистра Y, старший XH и младший XL байты индексного регистра X, аккумулятор B, аккумулятор A, регистр признаков CCR. Важно, что это сохранение выполняется микроконтроллером автоматически, никаких команд в подпрограмме прерывания для этого не требуется.

Адрес ячейки памятиСодержимое ячейки стека
Указатель стека – 2Старший байт адреса возврата; младший байт адреса возврата
Указатель стека – 4Старший байт регистра Y; младший байт регистра Y
Указатель стека – 6Старший байт регистра X; младший байт регистра X
Указатель стека – 8Аккумулятор B; Аккумулятор A
Указатель стека – 9Регистр состояния CCR 

Рис. 4.22. Последовательность загрузки регистров центрального процессора в стек

После того, как регистры будут сохранены в стеке, МК автоматически устанавливает глобальную маску прерывания I в 1, запрещая тем самым другие маскируемые прерывания. Бит маски внешнего прерывания по входу   также устанавливается в 1.

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

По завершении исполнения подпрограммы прерывания, МК восстанавливает регистры центрального процессора из стека, включая программный счетчик PC, сбрасывает биты масок I и X в регистре CCR. Таким образом, в МК восстанавливается состояние центрального процессора, которое было до исполнения подпрограммы прерывания. И процесс выполнения фоновой программы возобновляется. В исходном тексте подпрограммы прерывания для ее корректного завершения записывается команда возврата из прерывания RTI. Именно эта команда реализует действия по восстановлению регистров из стека и сбросу масок прерывания. Обратите внимание, в начале подпрограммы прерывания для выгрузки регистров в стек и установки масок I и X не требуется команд. А для выполнения обратных действий программист должен воспользоваться командой RTI. При написании программы на Си подпрограмма прерывания оформляется как функция. При этом если объявлено, что функция является подпрограммой прерывания, то команда ассемблера RTI подставляется в исходный текст автоматически. Мы рассмотрим процесс составления исходного текста программы с прерываниями на Си в следующем параграфе.

Вопросы для самопроверки

1. В приведенном списке перечислены действия МК в процессе перехода к подпрограмме прерывания. Укажите, какие действия выполняются аппаратными средствами МК, а какие требуют написания соответствующего кода в управляющей программе.

• Инициализация таблицы векторов прерываний (программист);

• Инициализация указателя стека (программист);

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных