Главная » Просмотр файлов » Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров

Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (1041592), страница 18

Файл №1041592 Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров) 18 страницаРябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (1041592) страница 182017-12-26СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 18)

Здесь задана длительность тика в 1 мкс для резонатора с частотой 11МГц. После сброса МК все его порты установлены в состояние единицы и все прерывания56запрещены. В системной настройке мы разрешили только прерывания от нулевого таймерасчетчика. В подпрограмме начальной настройки пользователя, которая должна размещаться садреса 162h, можно провести установку выводов портов в состояние, адекватно определяющее начальное состояние объекта управления, определить начальное состояние квантов пользователя и используемых в них переменных, разрешить нужные прерывания и их приоритеты, настроить приемо-передатчик и т.п.Далее за начальной настройкой следует так называемая «пультовая петля» диспетчерапроцессов. Она ведет очередь квантов с жестким или круговым приоритетом.

При жестком приоритете, при одновременном выполнении условий запуска ((FPR)*(SPR)=1), предпочтение отдается кванту с минимальным номером. При круговом приоритете предпочтение отдается кванту, следующему за только что выполненным, и далее по кругу пультовой петли. Обычно круговой приоритет выбирают в случаях, когда есть опасность постоянного захвата процессорного времени каким либо из квантов. Начальный фрагмент пультовой петли приведен ниже.ORG 4Fh; анализ состояния нулевого квантаPR0:JNB 21h.0h,PR1; если флаг нулевого кванта не установлен, переход к PR1JNB 20h.0h,PR1; если статус нулевого кванта не установлен, переход к PR1CLR 21h.0h; иначе очистить флаг квантаLCALL 149h; запустить нулевой квантJNB 26h.0h,PR0; если очередь квантов на круговая, переход в начало петлиPR1:JNB 21h.1h,PR2; анализ состояния первого кванта и так далееПодобным образом анализируется состояние всех восьми квантов.

Заканчиваетсяпультовая петля безусловным переходом на метку PR0.Обсудим, как запускать квант? Где он будет находится в памяти, диспетчер знать неможет, ведь кванты пользователя «накладываются» на готовый отлаженный универсальныйдиспетчер, который хранится в неизменяемой части памяти программ. В то же время, команда вызова подпрограммы кванта пользователя LCALL требует указания конкретного адреса ее начала.Для вызова подпрограмм с изменяемым адресом начала используют таблицу привязки, схожую по организации с таблицей векторов прерываний. Эту таблицу размещаютв изменяемой части памяти программ.

Состоит она из 8-и триад байтов. В триаду для каждого кванта после его создания вписывается переход на уже известный адрес его начала,как это показано для первого кванта. При совместной трансляции квантов пользователя сдиспетчером процессов в таблицу привязки могут быть вписаны символические адреса(названия) квантов пользователя.;------------------------векторы пользователя-------------------------ORG 149hLJMP NAME0;-------имя кванта0--------------ORG 14ChLJMP NAME1;-------имя кванта1------------------------------------------------------------------------------------------------------ORG 15EhLJMP NAME7;------- имя кванта7-------------ORG 162hLJMP USERSTART ;-------имя начальной настройки пользователя---Приступим к разработке программы прерываний таймера-счетчика.

Она запускается с каждым тиком таймера и должна анализировать, не окончилась ли задержка каждогоиз восьми квантов. Задержка для квантов может отсчитываться в малых или больших тиках в зависимости от состояния соответствующих битов регистра размерности задержек,расположенного в ячейке памяти с адресом 22h. Большой тик содержит 256 малых.Подпрограмма прерывания состоит из четырех основных частей. Первая, вводная57часть запрещает все другие прерывания на время ее выполнения.

Затем, сохраняет в стекесостояние основной программы, чтобы в нее можно было без проблем вернуться и определяет, не окончился ли вместе с малым и большой тик:TIMER: CLR EA; запретить прерыванияPUSH PSW; сохранить в стеке слово состояния процессораPUSH ACC; сохранить в стеке аккумуляторSETB RS0; задать первый банк регистров МКMOV TH0,24h; восстановить в счетном регистре таймераMOV TL0,25h; начальные значенияDJNZ 23h,FL0; если счетный регистр малых тиков не ноль, переход к FL0.Именно последняя команда этого фрагмента определяет, какой тик произошел,большой или малый. При большом тике будет выполняться следующая команда подпрограммы, при малом – последует переход к метке FL0. Опишем обработку большого тика, которая начинается с анализа задержки нулевого кванта.DJNZ R0,FH1; уменьшить задержку кванта 0 и переход к FН1, если не 0SETB 21h.0h; если задержка обнулена, установить флаг кванта 0FH1:DJNZ R1,FH2; уменьшить задержку кванта 1 и переход к FН2, если не 0SETB 21h.1h; если задержка обнулена, установить флаг кванта 1 и т.д.Если тик малый, будет выполняться часть подпрограммы, помеченная флагом FL0,уменьшающая на единицу задержки времени, заданные только в малых тиках и выставляющая флаги тех квантов, у которых задержка окончилась.

Далее приведен один извосьми сходных фрагментов этой части, описывающий декремент и последующий анализзадержки нулевого кванта.FL0:JB 22h.0h,FL1; если задержка кванта - в больших тиках, переход к FL1DJNZ R0,FL1; иначе уменьшить задержку и переход к FL1, если не нольSETB 21h.0h; если задержка обнулена, установить флаг кванта 0FL1:JB 22h.1h,FL2; и т.д.Завершающая, четвертая часть обеспечивает правильный возврат из прерывания.ENDTM: POP ACC; восстановить аккумуляторPOP PSW; и слово состояния процессораSETB EA; разрешить прерыванияRETI;возврат из прерыванияПодпрограмма, если посмотреть на ее полный текст, может показаться громоздкойи неуклюжей.

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

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

Пользователь диспетчера может произвольно выбирать имена своей стартовой программы и квантов. Для привязки к диспетчеру он долженвписать эти имена в соответствующие зоны таблицы привязки и далее описать свои процессы (кванты) как подпрограммы в соответствии с правилами языка Ассемблер.Пример разработки программного обеспечения локального микроконтроллера, которое будет выполняться под управлением рассмотренного диспетчера процессов, приведенв следующем разделе главы 5, а полный текст программного обеспечения - в ПРИЛОЖЕНИИ 2.58Таблица 5.5.Распределение памяти программ МК под диспетчер процессовАдрес0000h0003h – 0025h002Bh – 0048h004Ah004Fh – 00BFh00D0h – 0141h0149h – 0164h0149h014Ch014Fh0152h0155h0158h015Bh015Eh0162h0165h и далееНаименование программы или зоны памятиНачальный пуск системыЗона векторов прерываний MKНачальная системная настройка МКЗапуск начальной настройки МК пользователем по адресу 0162hПультовая петля диспетчера задачПодпрограмма прерываний таймераЗона векторов системных прерываний для пользователяПереход к кванту пользователя с нулевым приоритетом LJMP NAME0Переход к кванту пользователя с первым приоритетом LJMP NAME1Переход к кванту пользователя со вторым приоритетом LJMP NAME2Переход к кванту пользователя с третьим приоритетом LJMP NAME3Переход к кванту пользователя с четвертым приоритетом LJMP NAME4Переход к кванту пользователя с пятым приоритетом LJMP NAME5Переход к кванту пользователя с шестым приоритетом LJMP NAME6Переход к кванту пользователя с седьмым приоритетом LJMP NAME7Переход к подпрограмме начальной настройки STARTСтартовая программа и кванты пользователяПри практическом использовании текста диспетчера процессов, если пользоватьсясвободно распространяемым сейчас ассемблером A8051.EXE и линковщиком XLINK.EXEпод DOS, следует набирать текст в кодировке DOS.

Как это сделать и как транслировать илинковать программу, будет проиллюстрировано в следующем разделе, где рассмотреноиспользование диспетчера для написания программы управления шаговым двигателем.Контрольные вопросы.1. Назначение и состав диспетчера процессов. Переменные окружения синхрокванта и управление ими.2. Функции и настройка таймера счетчика микроконтроллера при использованиидиспетчера потоков. Почему выбран первый режим?3.

Рассчитайте максимальную задержку кванта при малом «тике» в 2 мс.4. Механизм запуска кванта и управление им.595.3. Пример разработки программного обеспечения.Аппаратное построение контроллера для управления шаговымдвигателемКонтроллер должен управлять вращением шагового двигателя с переменной скоростью в ту или иную сторону. Пульт управления, содержит четыре кнопки К1..К4. Однакнопка запускает, а при повторном нажатии останавливает ШД.

Вторая реверсирует еговращение. При нажатии и удерживании третьей кнопки двигатель ускоряет свое вращение. Четвертая аналогичным способом задает замедление. Обеспечить необходимый алгоритм работы должно программное обеспечение контроллера.Прежде всего, рассмотрим объект управления. Шаговый двигатель (ШД) - это электрическая машина, позволяющая преобразовывать импульсы управления в угловые илилинейные перемещения фиксированной величины. шаговые двигатели по типу движениябывают двух видов: поступательные и вращательные. По конструкции ШД вращательногодвижения представляют собой многофазные синхронные двигатели с явно выраженнымиполюсами, рассчитанные на работу в широком диапазоне частот управляющих импульсов,включая нулевую (фиксацию ротора при питании фазной обмотки постоянным током).ШД различаются, прежде всего, числом фаз и типом магнитной системы. Большинствоконструкций ШД имеет от двух до шести фаз.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6358
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее