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

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

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

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

Наиболее гибким и удобным для построения диспетчера представляется режим 1, схема функционирования которого и содержание управляющего регистра таймера TMOD представлены на рис.5.1.Здесь в регистре TMOD определен режим таймера Т/С0, система не ограничиваетпользователя в выборе допустимого режима Т/С1.Если в подпрограмме обработки прерываний перезагружать старший и младший регистры таймера, мы сможем гибко регулировать время малого тика (время прерывания таймера), абольшой тик будет отсчитываться после 256 прерываний (малых тиков).В ячейках с адресами 24h и 25h будем хранить начальные значение старшего имладшего байта TH0 и TL0 таймера счетчика Т/С0.

Таймер счетчик начинает считать от16-и разрядного числа, заданного регистрами 24h и 25h и, как только переполнится, возникнет прерывание и запустится подпрограмма его обработки. В подпрограмме обработкиэтого прерывания снова установим начальное значение счетного регистра таймера и обработаем флаги прерываний в соответствии с заданными задержками квантов.53В микроконтроллерах семейства MCS-51 - автовекторная система прерываний. Закаждым источником прерываний закреплен свой вектор – адрес в младшей зоне памятипрограмм.Затаймером Т/С0закреплен вектор0Bh.

При наступлении прерывания микроконтроллер заканчивает выполнениеочереднойкоманды и записывает в стек содержимое счетчика команд, атам всегда содержится адресследующей коРис. 5.1. Функциональная схема работы и состояние регистра режимовманды, которуютаймера TMOD для проектируемого диспетчера процессов.следует выполнить. Это нужно,чтобы после обработки прерывания вернутся к выполнению основной программы. Затем всчетчик команд заносится вектор наступившего прерывания. МК обращается в памятьпрограмм по этому адресу, считывает и выполняет приведенную там команду.Ячейка с адресом 26h – регистр управления очередью квантов. Квант запускается из пультовой петли диспетчера, если установлены его статус и флаг.

Анализ состоянийквантов (очередность запуска) будем вести по двум стратегиям:1) приоритетный запуск, начинается анализ с нулевого кванта (самого приоритетного) и заканчивается седьмым.2) круговой запуск, если выполнялся, например, пятый квант, после его выполнения и возврата в диспетчер первым анализироваться будут условия запускашестого, седьмого, нулевого, первого и т.д.Бит 26.0 (нулевой бит ячейки 26h) – бит круговой очереди в диспетчере.

Если онсброшен в 0 – приоритетный запуск, если установлен в 1 – круговой.Для стека микроконтроллера выделим зону памяти в 28 байтов с адреса 64h и до конца резидентной памяти данных. Стек используется микроконтроллером при вызове подпрограмм. Так же программисты используют стек для передачи в подпрограммы параметров – значений. Длина стека в 28 байтов, скорее всего, не будет ограничивать программиста.

При необходимости программист может изменить значение указателя стека.Распределение оперативной памяти микроконтроллера с диспетчером процессов показано в таблице 5.4. Затонированы зоны системных переменных диспетчера. Программист должен использовать их в соответствии с предписанными диспетчером правилами.Остальные программист волен использовать по своему усмотрению.54Таблица 5.4.Распределение резидентной памяти микроконтроллера под диспетчер задачАдресСодержимое ячейки памятиR0 … R7 пользователя00h..07hR0..R7 таймера – задержки 0-го..7-го кванта в тиках08h..0Fh15 свободных байтов пользователя (второй и третий банки регистров)10…1Fh20h Статусы квантов SPR7SPR6SPR5SPR4SPR3SPR2SPR1SPR021h Флаги квантовFPR7 FPR6 FPR5 FPR4 FPR3 FPR2 FPR1 FPR022h Размерность заR_PR7 R_PR6 R_PR5 R_PR4 R_PR3 R_PR2 R_PR1 R_PR0держек квантов23h24h25h26h24h..63h64h..7FhСчетный регистр числа малых тиковРегистр значения старшего байта TH0 счетчика ТС0Регистр значения младшего байта TL0 счетчика ТС0Регистр типа очереди квантовБайты пользователяСтек системы и пользователяЗапускаются синхрокванты из пультовой петли диспетчера, куда и передают управление после своего завершения.

В синхрокванте пользователь должен декларировать необходимость следующего запуска, устанавливая бит статуса запуска SPR0…SPR7 для каждого из восьми синхроквантов. Если квант перезапускать во времени не нужно, пользователь должен очистить соответствующий бит статуса.Задержка на перезапуск синхрокванта задается пользователем как число быстрыхили медленных тиков в пределах от 1 до 255 в переменных ожидания wait0…wait7.В первом банке регистров МК будем хранить задержки квантов.

Задержка устанавливается пользователем и затем уменьшается с каждым тиком таймером. Использование набора регистров первого банка позволит использовать подразумеваемую адресациюи сократить время анализа состояния задержек, т.е. время работы подпрограммы обработки прерываний таймера Т/C0.08h (R0) – задержка времени нулевого кванта (wait0).09h (R1) – задержка времени первого кванта (wait1).0Ah (R2) – задержка времени второго кванта (wait2).0Bh (R3) – задержка времени третьего кванта (wait3).0Ch (R4) – задержка времени четвертого кванта (wait4).0Dh (R5) – задержка времени пятого кванта (wait5).0Eh (R6) – задержка времени кванта (wait6).0Fh (R7) – задержка времени кванта (wait7).Программно-аппаратный таймер диспетчера уменьшает в соответствии с реальнымвременем переменные wait, и, как только они обнулятся, устанавливает соответствующийфлаг запуска квантов FPR0…FPR7.

Запускаться синхрокванты будут из пультовой петлидиспетчера.Разработка текста программыПосле распределения переменных приступим к написанию текста программы диспетчера. Исходный текст программы на языке Ассемблер имеет определенный формат. Каждаякоманда представляет собой строку четырехзвенной конструкции:МЕТКА - ОПЕРАЦИЯ - ОПЕРАНДЫ – КОММЕНТАРИЙ.МЕТКА.

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

В качестве символических имен и меток нельзяиспользовать мнемокоды команд псевдокоманды и операторы ассемблера, а также мнемонические обозначения регистров и других внутренних блоков МК.55ОПЕРАЦИЯ. В поле операции записывается мнемоническое обозначение командыМК или псевдокоманды ассемблера, которое является сокращением полного английского наименования выполняемого действия.ОПЕРАНДЫ.

В этом поле определяются операнды, участвующие в операции.Звенья разделены между собой произвольным числом пробелов.Команды языка Ассемблер могут быть без операндов, одно или двухоперандными.Операнды разделяются запятой. Операнд может быть задан непосредственно или в виде егоадреса (прямого или косвенного). Непосредственный операнд представляет собой число илисимволическое имя с обязательным указанием префикса непосредственного операнда (#).Прямой адрес операнда может быть задан мнемоническим обозначением, числом или символическим именем.

Указанием на косвенную адресацию служит префикс @.Используемые в качестве операндов символические адреса и метки должны быть определены, а числа представлены с указанием системы счисления. Для этого применяют суффикс - букву, стоящую после числа: В - для двоичной, Q - восьмеричной, Н - шестнадцатеричной, D – для десятичной систем счисления. Если суффикс не указан, принимается десятичная система счисления.КОММЕНТАРИЙ. Поле комментария используется для текстового или символического пояснения логической организации прикладной программы.

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

Ниже приведен начальный фрагмент программы диспетчера. По нулевому адресу установлена команда перехода к стартовой ячейке диспетчера, по адресу 0Вh (адресу вектора прерываний таймера Т/C0)– команда перехода к подпрограмме обработки его прерывания.ORG 0LJMP 2Bh; переход к входу в программу диспетчераORG 0ВhLJMP TIMER; переход к подпрограмме обработки прерывания таймера Т/C0ORG 2Вh; вход в диспетчер и системная настройка МКMOV SP,#64h; установка указателя на стек диспетчераMOV 24h,#0FCh ; установка значения старшего байта для регистра таймераMOV 25h,#82h; установка значения младшего байта для регистра таймераMOV TH0,24h; запись значения в старший байт регистра таймераMOV TL0,25h; запись значения в младший байт регистра таймераMOV TMOD,#11h ; установка 1-го режима Т/C0MOV TCON,#10h ; запуск таймера Т/C0MOV IE,#82h; разрешение прерываний от таймера счетчикаCLR A; очистка аккумулятораMOV 20h,A; очистка ячейки статусов квантовMOV 21h,A; очистка ячейки флагов квантовMOV 26h,A; очистка ячейки управления очередью квантовLCALL 0162h; переход к начальной настройке пользователяДля повышения точности отсчета времени с учетом разброса частоты тактового резонатора МК, значения младшего и старшего байта для регистра таймера следует откорректировать индивидуально.

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

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

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