Разработка программы деления многобайтных чисел
Заказать уникальную курсовую работу- 38 38 страниц
- 7 + 7 источников
- Добавлена 17.08.2022
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1. Функциональная и принципиальная работа микроконтроллеров и программная среда
1.2. Ядро ………………………………………………………..9
1.3. Оперативная память………………………………………..11
1.4. Flash-память ………………………………………………..11
1.5. EPROM - память данных ………………………………….11
1.6. Модуль управления частотой и энергопотреблением ….. 12
1.7. Порты ввода-вывода ……………………………………….12
1.8. Аналого-цифровой и обратный преобразователи ……….15
1.9 Таймеры ……………………………………………………..16
1.10 Кварцевый резонатор……………………………………... 18
1.11. Прочая переферия ………………………………………...18
1.12. Интерфейсы коммуникации …………………………….. 19
1.13 Интерфейсы программирования…………………………..25
1.14. Инструменты для реализации практической части……..27
Заключение…………………………………………………………………….31
Источники ……………………………………………………………………..32
Последний лист курсового проекта…………………………………………..33
2. Реализация
2.1.Программа………………………………………………..…..34
2.3. Результаты работы……….…………………………………..37
Для организации COM порта и передачи любых данных на компьютер.Организация устройств ввода — мышка, клавиатура, джойстик, какие-то новые устройства ввода.USB audio устройство — ваше устройство может проигрывать звук с компьютера или получать его.Mass storage device — внешний диск — ваше устройство может давать доступ к флеш карте или внутренним данным, сразу представляя их в виде файлов.USB OTG — вы можете подключать к вашему устройству флешки и другие накопители, звуковые карты и другие устройства также как к компьютеру.Безусловно это очень удобный и мощный интерфейс, и самое главное, требующий минимальных внешних компонент. Если у вас планируется тесное взаимодействие с компьютером, то следует выбирать МК, который имеет эту периферию. Единственный минус USB интерфейса - сложность программирования обмена данных по этому протоколу.DMAДанная аббревиатура переводится как прямой доступ к памяти. Представим, что нам необходимо получить данные с одного интерфейса, например UART, и отправить их на другой интерфейс, например SPI. Здесь необходимо прочитать данные из регистра UART и перевести их одномоментно в регистр SPI. При этом МК будет занять выполнением этой программы. Вот для того, чтобы разгрузить МК от выполнения таких операций, и была разработана периферия DMA. С помощью этого модуля возможно копирование одной области памяти в другую по событию. Набор событий очень большой. Использование данной периферии очень сильно разгружает процессор, особенно при передаче больших массивов данных. Примеры применения DMA:Копирование буфера в периферию, даже с побайтным разделением.Копирование данных, полученных, с ADC или другой периферии, сразу в ячейку памяти.Передача изображения на экран из буфера.Получение данных с периферии с наполнением кольцевого буфера.Копирование одного массива памяти в другой.Если планируется работа с большими массивами данных, или есть необходимость в быстрой обработке сигналов без участия прерываний, то наличие DMA незаменимо.1.13. Интерфейсы программированияДля разработки программы для МК используется персональный компьютер. Чтобы передать полученную программу (прошивку) на МК необходим специальный прибор — программатор. А для его работы, МК должен иметь специальный интерфейс программирования. Когда вы разрабатываете сложную программу, часто необходимо видеть, что содержится в переменных, как работает программа, какие условия выполняются. Тут на помощь приходит специальный прибор — отладчик и соответственно интерфейс отладки.Если вы решили работать с определенным видом МК, вы должны будете приобрести или сделать самостоятельно, как минимум программатор, а ещё лучше отладчик.Наличие схем таких приборов или их низкая стоимость, снижает порог вхождения в данную группу МК. Прежде чем приобретать микроконтроллер, вам надо озаботится о том как вы будете его программировать.Производители стараются сделать процесс загрузки прошивки более универсальным. В микроконтроллеры в специальную область памяти встраиваются мини программы Bootloader, загрузчики прошивки. Они работают по широко распространненым универсальным интерфейсам. Сами используемые это:UART — последовательный интерфейс.USB.CAN шина, есть МК которые можно прошивать по CAN шине, очень удобно для обновления прошивки в машине, в труднодоступных устройствах.Если имеется возможность, нужно планировать и использовать возможность загрузки прошивки в устройство по стандартным интерфейсам.Самые распространённые интерфейсы отладки:JTAG — используется 5 сигнальных линий, AVR, многие ARM МК.SWIM — используется одна сигнальная линия, только МК STM8, иногда нужен RESET, если планируется программировать МК в спящем режиме.SWD — общий протокол для ARM микроконтроллеров, использует 2 линии.ICSP для МК PIC — PICKIT — свой протокол, свой прибор. Использует 3 линии.ISP — программатор по порту SPI. Используется в AVR. Используется 4 линии.Тут перечислены не все интерфейсы, и общее правило простое — под каждый микроконтроллер нужен свой программатор отладчик.1.14. Инструменты для реализации практической частиОриентир для выполнения практической части падает на PICL6X7XX - семейство дешевых, высокоэффективных, 8-разрядных КМОП микроконтроллеров со встроенным аналого-цифровым (analog-todigital (A/D)) преобразователем. Среди микроконтроллеров PICl бСХХ данное семейство занимает среднее положение [2].Все микроконтроллеры PIC 16/17 используют RISC структуру процессорного ядра. Семейство микроконтроллеров PIC16СХХ имеет расширенные возможности ядра, стек глубиной восемь уровней и множество внутренних и внешних прерываний.Гарвардская архитектура с отдельными шинами команд и данных позволяет одновременно передавать 14-разрядные команды и 8-разрядные данные. Двухкомандный конвейер позволяет выполнять все команды за один машинный цикл кроме команд ветвления программы которые выполняются за два цикла. Микроконтроллеры имеют уменьшенную систему команд (всего 35 команд). Высокая эффективность достигается использованием новшеств архитектуры и большого набора дополнительных регистров.Микроконтроллеры семейства PIC16СХХ no сравнению с другими 8-разрядными микроконтроллерами такого же класса позволяют уменьшить программу 2:1 и увеличить быстродействие 4:1 и идеально подходит для дешевых приложений, требующих аналоговый интерфейс.Микроконтроллеры имеют память данных (RАМ) размером от 36 до 368 байт, память программ от 512 до 8192 слова и от 13 до 33 контактов ввода - вывода (I/O). Кроме того, микроконтроллеры содержат различные наборы периферийных устройств, таких как: 8- и 16-разрядные таймеры, быстродействующий аналого-цифровой преобразователь с 8-, 10- или 12-разрядным разрешением и мультиплексированными входными каналами, модули сравнения накопления и широтно импульсной модуляции (ШИМ) (CaptL1re/Compare/PWМ), синхронный последовательный порт, который может функционировать как трехпроводный последовательный периферийный интерфейс (SPI) или двухпроводная шина (I2C), универсальный синхронно-асинхронный приемопередатчик (USART) и параллельный ведомый порт (PSP).Кроме того в состав новых микроконтроллеров могут входить: встроенный генератор тактовых импульсов 4 МГц; усовершенствованная схема ШИМ (модуль ЕССР), позволяющая управлять силовыми ключами, мостовой схемой (4 канала), полумостовой схемой (2 канала) или одноканальной схемой с 10-разрядным разрешением на частоте 20 кГц; котроллер USB с 64 байтовой двухпортовой буферной памятью, поддерживающий протокол версии 1.1. Эти микроконтроллеры удобны для построения компьютерной периферии. Практическая реализация скрипта выполнена для микроконтроллера PIC16f874A, характеристики которого даны в специализированной документации.Также для реализации скрипта была использована среда MPLAB.MPLAB — интегрированная среда разработки, представляющая собой набор программных продуктов, предназначенная для облегчения процесса создания, редактирования и отладки программ для микроконтроллеров семейства PIC, производимых компанией Microchip Technology. Среда разработки состоит из отдельных приложений, связанных друг с другом, и включает в себя компилятор с языка ассемблер, текстовый редактор, программный симулятор и средства работы над проектами [3].В современных электронных системах управления и прогнозирования, особенно сложных и расширенных, очень важную роль играют фундаментальные вычислительные скрипты, которые выполняют непосредственно математические расчеты математической модели реализованных программ. Для обеспечения высокой их скорости, низкого байтового объема и надежности, оптимальное решение для их реализации - ассемблер - нативный машинный код, который не требует ни компиляции, ни интерпретации, благодаря чему уже на начальным этапе выигрывает у высокоуровневых языков программирования. Поэтому падение выбора именно на этот язык видится разумным.Язык ассемблер — это машинно-ориентированный язык программированиянизкого уровня. Представляет собой систему обозначений, используемую для представления в удобно читаемой форме программ, записанных в машинном коде. Его команды прямо соответствуют отдельным командам машины или их последовательностям. Является существенно платформо-зависимым: языки ассемблера для различных аппаратных платформ несовместимы, хотя могут быть в целом подобны [4].ЗаключениеВ данной работе представлен теоретический материал касательно работы с микроконтроллерами и на ее основе выбран микроконтроллер модели PIC16f874A. В качестве среды разработки выбрана среда MPLAB от Microchip technology. В качестве языка реализации взят язык ассемблер. В результате реализована программа деления двух многобайтовых чисел, значения которых задаются в коде, и выводится частное этой операции в виде целого числа и его остатка. Код программы а также результаты ее работы продемонстрированы в части 2.ИсточникиОсновы микропроцессорной техники, А.Н. Краснов.Микроконтроллеры PIC 16X7XX, Ульрих В. А.MPLab IDE, Интегрированная среда разработки для микроконтроллеров PICmicro, Голембиовский Ю.М.Программирование на Ассемблере для PIC, Т. НосовСистема команд микроконтроллера PIC16F8ххх, Голембиовский Ю.М.PIC16F87XA Data Sheetmicrochip.comПОСЛЕДНИЙ ЛИСТ КУРСОВОГО ПРОЕКТАКурсовой проект выполнен мной самостоятельно. Все использованные в проекте материалы и концепции из опубликованной научной литературы и других источников имеют ссылки на них.«__»____________ _____ г._________________________ _____________________________ (подпись) (Ф.И.О.)Практическая часть2.1. ПрограммаКод реализованной программы деления многобайтных чисел для микроконтроллера PIC16f874A выглядит так:.include ‘p16f874a.inc.’; подключение символьного описания регистров__CONFIG _HS_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF ; конфигурация микроконтроллера; 2-х байтные числаd1 = .10009d2 = .1000; переменныеcblock 0x20cL, cHoL, oHtL, tHdL, dHiendcORG 0x000; начало главной программыStart:; загрузка делимогоmovlw d1 >> 8movwf tH; старший байтmovlw d1movwf tL; младший байт; загрузка делителяmovlw d2 >> 8movwf dH; старший байтmovlw d2movwf dL; младший байт; обнуление результатаclrf cHclrf cL; запись счетчика циклаmovlw .16movwf iclrf oH; обнуление остаткаclrf oL; цикл деления M1:bcf STATUS, C; сброс переносаrlf tLrlf tH; сдвиг делимогоrlf oLrlf oH; сдвиг остаткаbtfsc STATUS, C; пропуск перехода, если нет переноса (C = 0)goto M2; переход на M2 (вычитание)call sub16; вычитаем делитель из остатка btfss STATUS, C; пропустить, если перенос (остаток >= делителя)call add16; восстановление остаткаgoto M3; переход на сдвигM2:call sub16; вычитаем делитель из остатка bsf STATUS, C; флаг C = 1M3:rlf cLrlf cH; сдвиг частногоdecfsz i; цикл по счетчику igoto M1; переход, на M1goto $; зациклить; п/п вычитания двухбайтных чиселsub16:; вычитаем мл. байтыmovf dL, W; W = dL (мл. байт делителя)subwf oL; oL = oL - W = oL - dL; вычитаем старшие байты с учетом переносаmovf dH, W; W = dH (ст. байт делителя)btfss STATUS, C; пропустить, если перенос (oL >= dL)incf dH, W; иначе, W = dH + 1subwf oH; oH = oH - Wreturn; возврат из п/п; п/п сложения двухбайтных чиселadd16:; складываем мл. байтыmovf dL, W; W = dL (мл. байт делителя)addwf oL; oL = oL + W = oL + dL; складываем ст. байты с учетом переносаmovf dH, W; W = dH (ст. байт делителя)btfsc STATUS, C; пропустить, если нет переносаincf dH, W; иначе, W = dH + 1addwf oH; oH = oH + Wbcf STATUS, C; сброс переносаreturn; возврат из п/пENDПрограмма загружает два многобайтовых числа (делимое и делитель) и производит с ними операцию деления на байтовом уровне, и выводит полученный ответ в виде целого числа и его остатка.2.2. Результаты выполнения программыРисунок 1 – Перед делением tL = 10009 (делимое), dL = 1000 (делитель)Рисунок 2 – После деления cL = 10 (частное), oL = 9 (остаток)Рисунок 1 – Перед делением tL = 10009 (делимое), dL = 1000 (делитель)Рисунок 2 – После деления cL = 10 (частное), oL = 9 (остаток)
2. Микроконтроллеры PIC 16X7XX, Ульрих В. А.
3. MPLab IDE, Интегрированная среда разработки для микроконтроллеров PICmicro, Голембиовский Ю.М.
4. Программирование на Ассемблере для PIC, Т. Носов
5. Система команд микроконтроллера PIC16F8ххх, Голембиовский Ю.М.
6. PIC16F87XA Data Sheet
7. microchip.com
Вопрос-ответ:
Каким образом происходит функциональная и принципиальная работа микроконтроллеров и программная среда?
Микроконтроллеры выполняют функцию управления различными устройствами, выполняющими конкретные задачи. Они работают на основе программной среды, которая позволяет программисту разрабатывать и загружать программы на микроконтроллер. Программная среда предоставляет инструменты для написания и отладки программ, а также управления микроконтроллером во время его работы.
Какое ядро используется в микроконтроллерах?
В микроконтроллерах используется специальное ядро, которое является основой для выполнения команд и операций. Ядро обеспечивает базовую функциональность микроконтроллера, включая выполнение арифметических операций, управление памятью и взаимодействие с периферийными устройствами.
Какую роль играет оперативная память в работе микроконтроллеров?
Оперативная память использовается для хранения временных данных и программ, которые выполняются микроконтроллером. Она позволяет микроконтроллеру быстро обрабатывать данные и выполнять различные операции в режиме реального времени.
Зачем нужна Flash память в микроконтроллерах?
Flash память используется для хранения программного кода и других постоянных данных. Она позволяет микроконтроллеру загружать программу при включении и выполнять ее во время работы. Flash память также обеспечивает возможность перезаписи программного кода и обновления программы без необходимости замены микроконтроллера.
Как работает модуль управления частотой и энергопотреблением в микроконтроллерах?
Модуль управления частотой и энергопотреблением позволяет микроконтроллеру регулировать свою частоту работы в зависимости от текущей нагрузки и требований. Он также позволяет микроконтроллеру переходить в низкопотребляющий режим, когда он не выполняет никаких операций, чтобы сэкономить энергию и увеличить время работы от батареи.
Какие функции выполняют микроконтроллеры?
Микроконтроллеры выполняют функции управления и контроля в различных электронных устройствах. Они способны выполнять операции обработки данных, управлять вводом-выводом, обеспечивать коммуникацию с другими устройствами и многое другое.
Каким образом микроконтроллеры работают с оперативной памятью?
Микроконтроллеры имеют встроенную оперативную память, которая используется для временного хранения данных и программ. Оперативная память обеспечивает быстрый доступ к данным и может быть перезаписана в процессе работы микроконтроллера.
Что такое Flash память и как она используется в микроконтроллерах?
Flash память - это тип неволатильной памяти, используемой для хранения программного кода и данных в микроконтроллерах. Она позволяет записывать и перезаписывать информацию без использования внешнего источника питания и поэтому часто используется для обновления программного обеспечения микроконтроллера.
Как микроконтроллеры управляют частотой и энергопотреблением?
Микроконтроллеры имеют встроенный модуль управления частотой и энергопотреблением, который позволяет регулировать рабочую частоту и энергопотребление при работе. Это позволяет оптимизировать энергопотребление и продлить время автономной работы устройств.
Какие функции выполняют порты ввода-вывода в микроконтроллерах?
Порты ввода-вывода представляют собой интерфейсы, через которые микроконтроллеры могут взаимодействовать с внешними устройствами. Они служат для подключения и управления различными устройствами ввода и вывода, такими как сенсоры, дисплеи, клавиатуры и другие.