Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (1041592), страница 8
Текст из файла (страница 8)
Обозначение разрядов регистра IPпоказано в таблице на рис. 3.12, а их назначение указано ниже.Бит PX0 - установка уровня приоритета прерывания от внешнего источника INT0.Бит PT0 - установка уровня приоритета прерывания от Т/С0.Бит РХ1 - установка уровня приоритета прерывания от внешнего источника INT1.Бит РТ1 - установка уровня приоритета прерывания от Т/С1.Бит PS - установка уровня приоритета прерывания от последовательного порта.Запрос на прерывание формируется при установленном флаге источника прерываний.Опрос флагов идет в каждом машинном цикле МК. На рис.
3.13 показана схема организациипрерываний. Флаги источников прерываний расположены в регистрах TCON и SCON. На рисункедля большей наглядности они подштрихованы.Флаги внешних прерываний IE0 и IE1 формируются по уровню или по спаду сигнала на соответствующем выводе INT. Для установки того илииного условия служат биты IТ0 и IТ1. При установке этих битов в единицу формируется прерывание по низкому уровню сигнала на INT, в ноль –по спаду сигнала на INT. Флаги внешних прерываний после входа в подпрограмму обработкипрерывания аппаратно снимаются. Однако, еслиустановлено прерывание по уровню и после выхода из подпрограммы обслуживания флаг не былснят, прерывание инициируется вторично.Прерывания от таймеров/счетчиков вызываются установкой флагов TF0 и TF1 регистраTCON, которые устанавливаются при переполнениисоответствующихрегистровтаймеРис. 3.13.
Схема организации прерыров/счетчиков. Очистка флагов TF0 и TF1 произваний.водится внутренней аппаратурой МК при переходе к подпрограмме обслуживания прерывания.Прерывание от последовательного порта вызывается установкой флага прерыванияприемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, RI и TI сбрасываются только программным путем. Обычно это делают впределах подпрограммы обработки прерывания, где определяется, какому из флагов RI илиTI соответствует прерывание.Все флаги прерывания (IE0, IEl, TF0, TF1, RI, TI), могут быть программно установленыили сброшены с тем же результатом, что и в случае их аппаратной установки или сброса.
Т.е.прерывания могут программно вызываться или ожидающие обслуживания прерывания могутпрограммно ликвидироваться. Кроме того, прерывания по INT0, INT1 могут вызываться программной установкой Р3.2=0 и Р3.3=0.Прерывания могут быть разрешены или запрещены битами регистра разрешения прерываний IE, после сброса МК регистр IE обнуляется и все прерывания запрещены. Флагипрерываний устанавливаются независимо от того, запрещены они или разрешены.Структура приоритетов прерываний является двухступенчатой (рис.
3.13), сначалауровень приоритета (высокий – низкий), затем порядок опроса в пределах приоритета. Опросфлагов источников прерываний идет в два цикла в порядке, показанном на рисунке. Каждому источнику прерывания может быть индивидуально присвоен один из двух уровней приоритета: высокий или низкий. Выполняется это установкой (высокий уровень приоритета)или сбросом (низкий уровень приоритета) соответствующего бита в регистре приоритетовпрерываний IP.
Программа обработки прерывания с низким уровнем приоритета может бытьпрервана другим запросом прерывания с высоким уровнем приоритета, но не может быть26прервана запросом прерывания с низким уровнем. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания ниот одного из источников.Задержка в реакции на прерывание составляет от трех до семи машинных циклов.Она складывается из времени на завершение текущей команды и времени на выполнение аппаратной команды на переход к требуемому вектору прерывания.По адресу вектора прерывания программист должен разместить команду перехода наподпрограмму обслуживания прерывания LJMP Subroutine.
Именно LJMP Subroutine, а неLCALL Subroutine. Тогда со стеком и возвратом в основную программу все будет в порядке.Подпрограмма обслуживания прерывания продолжается до выполнения команды RETI.Команда RETI восстанавливает состояние логики прерывания и загружает в счетчик команд PCадрес возврата из двух верхних ячеек стека.Система команд МКСистема команд МК содержит 111 команд, содержащих один, два или три байта и выполняемых за один (64 команды), два или четыре (умножение, деление) машинных цикла. Причастоте тактового генератора, равной 12 МГц, одноцикловые команда выполняются за 1 мкс,двуцикловые — за 2 мкс и т.д.Каждая команда состоит из ее кода, занимающего один байт.
В коде команд зашита информация о предписанном действии и способе адресации операндов. Если используется подразумеваемая адресация, код содержит и сведения о операндах, поэтому дополнительные байты ненужны. В других случаях в одном – двух дополнительных байтах команды содержатся сведенияоб операндах, либо сам операнд (непосредственная адресация).Хотя МК и восьмиразрядный, в нем реализована побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (PC).Синтаксис большинства команд ассемблерного языка МК состоит из мнемоническогообозначения функции, вслед за которым идут операнды, указывающие методы адресации и типы данных.
Различные типы данных или режимы адресации определяются установленнымиоперандами, а не изменениями мнемонических обозначений. Например, аббревиатура "MOV"(переместить) используется восемнадцатью различными командами для обработки трех типовданных (битов, байтов, адресов) в различных адресных пространствах. Всего в ассемблере МКнасчитывается 42 различных мнемоники, которые при комбинации с различными способами адресации и составляют 111 команд.Все команды удобно поделить на пять групп: 1) арифметические команды; 2) логические команды с байтовыми переменными; 3) команды пересылки данных; 4) команды работыс битами (команды битового процессора); 5) команды ветвления программ и передачиуправления. Таблицы с кодами команд и пояснениями их выполнения приведены вПРИЛОЖЕНИИ 1.Арифметические команды.
В наборе команд МК есть операции сложения, сложенияс учетом флага переноса, вычитания с заемом, инкрементирования, декрементирования,сравнения, десятичной коррекции, умножения и деления.В АЛУ производятся действия над целыми числами без знака. В двуоперандных операциях: сложение (ADD), сложение с переносом (ADDC) и вычитание с заемом (SUBB) аккумулятор является первым операндом и принимает результат операции. Вторым операндом можетбыть рабочий регистр выбранного банка рабочих регистров, регистр внутренней памяти данных с косвенно-регистровой и прямой адресацией или байт непосредственных данных. Указанные операции влияют на флаги: переполнения, переноса, промежуточного переноса и флагчетности в слове состояния процессора (PSW).Команды сложения и вычитания выполняются за один машинный цикл, только умножение MUL AB и деление DIV AB выполняются за четыре машинных цикла.
При операцииумножения содержимое аккумулятора А умножается на содержимое регистра В и результат27размещается следующим образом: младший байт в регистре В, старший — в регистре А. Вслучае выполнения операции деления целое от деления помещается в аккумулятор А, остатокот деления — в регистр В.Использование разряда переноса в операциях сложения (ADDC) и вычитания(SUBB)позволяет организовать обработку длинных целых, т.е.обрабатывать переменные, занимающие два и более байта.Выполнение операций сложения и вычитания с учетом знака может быть осуществлено с помощью программного управления флагом переполнения (OV) регистра PSW.Флаг промежуточного переноса (АС) обеспечивает выполнение арифметических операций в двоично-десятичном коде.
Операции инкрементирования и декрементирования нафлаги не влияют.Логические команды с байтовыми переменными. Система команд МК позволяетреализовать логические операции: "И", "ИЛИ", "ИСКЛЮЧАЮЩЕЕ ИЛИ" на регистреаккумуляторе (А) и байте-источнике. Вторым операндом (байтом-источником) при этом может быть рабочий регистр в выбранном банке рабочих регистров; регистр внутреннего ОЗУ,адресуемый с помощью косвенно-регистровой адресации; прямо адресуемые ячейки внутреннего ОЗУ и регистры специального назначения; непосредственная величина.