Программирование на ассемблере для pic самоучитель: В. Тимофеев MPASM. Как правильно оформлять программы на ассемблере для PIC-контроллеров. (пособие для начинающих)

Содержание

Алехин В.А. Микроконтроллеры PIC. Основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus.

Микроконтроллеры PIC

Микроконтроллеры PIC
Основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus

Электроника и микропроцессорная техника являются фундаментальной основой производства современного оборудования, технических систем управления, роботов, информационно-измерительных устройств, разнообразных бытовых приборов. Изучение и практическое освоение методов проектирования электронных устройств с микроконтроллерами является актуальной и сложной задачей, требующей использования разнообразных современных программных средств. Изучение микроконтроллеров интересует многих разработчиков и любителей электроники. В 2016 году в издательстве «Горячая линия-Телеком» вышла моя книга «Микроконтроллеры PIC. Основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus». Цель этой книги помочь любому студенту, инженеру или начинающему любителю электроники быстро перейти к созданию собственных проектов и устройств на микроконтроллерах. Для получения практических навыков книга содержит 15 лабораторных работ с листингами программ, схемами моделей и подробным описанием выполнения заданий. Подробное содержание этой книги посмотрите на сайте издательства В.А. Алехин. Микроконтроллеры PIC

Электротехника и электроника. Лабораторный практикум

В среде MPLAB IDE v.8.92 Вы изучите программирование на языках ассемблера и Си. Чтобы облегчить программирование на Си сопряжения микроконтроллеров внешними периферийными устройствами , Вы будете изучать среду mikroC PRO for PIC v.6.5.0 компании MikroElektronika. Этот мощный инструмент разработки программ для PIC микроконтроллеров относится к языкам высокого уровня. Составленную и отлаженную в MPLAB IDE или mikroC программу Вы научитесь испытавать в моделях микроконтроллерных устройств, используя интерактивные программные среды TINA 9 и Proteus.

Тем, кто не знаком со схемотехническим моделированием электрических цепей и электронных схем в программе TINA, будет полезно изучить это по моей книге В.А. Алехин. Электротехника и электроника. Компьютерный лабораторный практикум в среде TINA

Электротехника, электроника и смемотехника в обрачной среде TINACloud. Лабораторный практикум

Моя новая книга вышла из печати в январе 2017 года и будет полезна тем, кто хочет работать на ноутбуках и планшетах в любое время и в любом месте, где есть Интернет В.А. Алехин. Электротехника, электроника и схемотехника. Лабораторный практикум в облачной среде схемотехнического проектирования TINACloud

Примеры моделирования микроконтроллеров
Лабораторная работа №8. Применение памяти EEPROM и косвенной адресации

Моделирование в программе TINA

Лабораторная работа №12. Исследование модели системы безопасности с клавиатурой и дисплеем
Моделирование в программе Proteus

Когда Вы научитесь самостоятельно набирать программы, Вы сможете загрузить и использовать готовые листинги программ из книги. Листинги написаны как файлы *txt и открывать их первоначально следует в программе Notepad++.

  • Программы для практикума по микроконтроллерам
  • Надеюсь, что Вы будете с увлечением работать в программах TINA, MPLAB IDE, mikroC, Proteus, так как каждая задача содержит элементы творчества и доставляет удовольствие от успешного решения.

    Желаю успехов!
    В.А. Алехин
    Доктор технических наук,
    профессор кафедры вычислительной техники
    Российского технологического университета
    (РТУ — МИРЭА)

    Введение в программирование на языке PIC на ассемблере

    1. Зачем учить сборку
    2. Наш первый языковой код для сборки PIC
    3. Рассекая код
    4. CBLOCK
    5. Смена банков
    6. Задержка подпрограммы
    7. Резюме

    Большинству людей снятся кошмары о программировании на ассемблере PIC, а некоторые говорят, что это пустая трата времени. Я испытал это оба, поэтому я согласен. PIC можно программировать гораздо проще, используя языки высокого уровня, такие как C и Basic. Тем не менее, изучение кода на ассемблере поможет вам узнать больше о внутреннем оборудовании микроконтроллера. Это, в свою очередь, позволяет адаптировать программы в соответствии с вашими намерениями. Во встроенных системах, где производительность критична, а код зависит от оборудования, это очень важно. Этот учебник поможет вам начать изучение программирования на ассемблере PIC.

    Зачем учить сборку

    Языки высокого уровня часто имеют дополнительные заголовки, которые занимают место в памяти программы. В программировании микроконтроллера важно экономить место на программе, так как вам нужно работать только с несколькими. Возьмем эту простую программу мигания светодиодов, написанную на XC8, например:

    Этот код при компиляции и сборке создает 182-байтовый шестнадцатеричный файл. Теперь возьмите этот код сборки PIC, который делает то же самое, что и код выше:

    Шестнадцатеричный файл для этого кода составляет 163 байта. Разница в 19 байтов в программировании микроконтроллера уже значительна!

    Наш первый языковой код для сборки PIC

    В качестве введения в программирование сборки PIC мы будем использовать PIC16F84A , микроконтроллер архитектуры x14 от Microchip. Это чип, который мы представили в предыдущая статья , PIC1684A, имеющий только несколько регистров для работы, хорош для начинающих программировать микроконтроллеры.

    Мы еще раз посмотрим на код сборки, размещенный выше:

    Одна вещь, которую вам нужно понять, это то, что ассемблерный код обрабатывается построчно. Скорость обработки строки — это цикл команд микроконтроллера. Время цикла инструкции дается как:

    Где fosc — тактовая частота генератора. Это говорит нам о том, что цикл команд зависит от значения используемого вами кварцевого генератора. Значение общего кварцевого генератора составляет 4 МГц, поэтому:

    Мы вернемся к этому позже.

    Сэкономьте до 50% на избранных наборах для разработки микрочипов

    Рассекая код

    В программировании на ассемблере важно предоставлять комментарии к коду, чтобы его было легче отслеживать. Комментарии в сборке начинаются с точки с запятой, например:

    Есть несколько комментариев к программе сборки выше.

    Первая значимая строка в программе

    Это говорит ассемблеру добавить файл включения для этого конкретного микроконтроллера. Каждый микроконтроллер имеет свой собственный файл включения, который можно найти в папке C: \ Program Files (x86) \ Microchip \ MPASM Suite . Включаемый файл позволяет вызывать имя регистра, а не его адрес.

    Программирование микроконтроллера в сборке фокусируется на манипулировании регистрами. Вот регистры PIC16F84A:

    По ходу этого урока мы узнаем функцию каждого показанного регистра.

    Следующие значимые строки в программе

    Это дает вектор сброса для кода. Вектор сброса указывает, какая часть программы будет выполняться первой. Здесь эта часть с надписью START. Другой используемый вектор — INT_VECT или вектор прерывания. Этот вектор обсуждается в учебник по прерыванию ,

    Откройте файл P16F84A.INC и проверьте его содержимое. Постарайтесь ничего не менять внутри, если только вы не знаете, что делаете.

    CBLOCK

    Линии,

    используйте CBLOCK сборка оперативная. Это присваивает псевдонимы COUNT1 и COUNT2 регистрам общего назначения с адресами 0Ch и 0Dh соответственно. Если вы посмотрите на карту регистрационных файлов PIC16F84A выше, эти адреса являются частью SRAM и не имеют конкретных имен. Это означает, что мы можем использовать их так, как нам нравится. Регистры COUNT1 и COUNT2 будут использоваться для нашей подпрограммы задержки.

    Смена банков

    Фактическое выполнение программы начинается на линии,

    Команда BSF обозначает «регистр набора битов f», где следующим оператором является регистр f и бит, связанный с этим регистром. Посмотреть остальные набор инструкций , Для приведенного выше, регистр f является регистром STATUS:

    Бит RP0 называется битом выбора банка регистра. PIC16F84A группирует свои регистры в два банка. Давайте снова посмотрим на карту регистров устройства:

    Прежде чем вы сможете манипулировать конкретным регистром, вы должны сначала обратиться в банк, где он находится. Это делается путем очистки (обнулить) или установки (обнулить) бита RP0. Обратите внимание, что некоторые регистры, включая регистр STATUS, расположены в обоих банках, что означает, что вам не нужно переключать банки для доступа к ним.

    Так почему же мы установили бит RP0? Это потому, что следующие строки,

    использует регистр TRISB, который расположен в банке 1.

    Оперативный MOVLW означает «переместить буквенное значение в регистр W». Регистр W — это регистр общего назначения, который действует как временное хранилище при перемещении значений из регистра в регистр.

    Оперативный MOVWF означает «переместить содержимое W в TRISB». Это означает, что после этих двух строк регистр TRISB теперь имеет значение 0xFE .

    Так почему же это значение для TRISB? Сначала мы обсудим функцию регистра TRISB.

    ТРИС это сокращение от трех государств . Это описывает характеристики портов микроконтроллера, означая, что порт может быть (1) входом, (2) выходом или (3) висящим слева. PIC16F84A имеет два порта: PORTA и PORTB. Это означает, что есть также два регистра TRIS: TRISA и TRISB. Ноль в любом бите TRIS делает соответствующий бит PORT выводом . И наоборот, единица в любом бите TRIS делает соответствующий бит PORT входным .

    Для нашего примера значение TRISB равно 0xFE :

    Вы видите, что только бит 0 низок или очищен. Это соответствует PORTB.0 или RB0, становящимся выходным контактом, а остальные — входными контактами. Например, если вы хотите сделать выходные выводы PORTB. 0 и PORTB.1, а остальные — входными, то ваш TRISB будет:

    который 0xFC в шестнадцатеричном значении.

    Следующая строка:

    просто возвращает нас к банку 0, потому что следующие строки:

    предполагает использование регистра PORTB, который находится в банке 0.

    Код операции BSF означает «бит установлен f». Строка BSF PORTB, 0 устанавливает нулевой бит регистра PORTB. Помните, что регистр PORTB связан с физическими выводами RB. Поэтому, когда установлен PORTB.0, вывод RB0 высокий.

    Строка BCF PORTB, 0 делает противоположность только что обсужденной команде. Это сделает вывод RB0 низким.

    Задержка подпрограммы

    Между командами bsf и bcf находится вызов подпрограммы задержки, который находится в конце кода:

    Зачем нужна эта рутина? Как упоминалось выше, каждая строка обрабатывается со скоростью 1 микросекунда для кварцевого генератора 4 МГц. Если подпрограмма задержки отсутствует, время между высоким и низким значениями RB0 будет всего 1 микросекунда! Мигание светодиода будет слишком быстрым, чтобы увидеть его в реальном времени.

    Оперативный DECFSZ , используемый в подпрограмме задержки, является сокращением от «декремент f пропустить, если ноль». Он будет уменьшать COUNT1, пока не достигнет нуля, а затем пропустит следующую строку. Если COUNT1 по-прежнему не равен нулю, программа обработает цикл, как указано в инструкции «goto loop1». Число «1» рядом с COUNT1 означает, что результат уменьшения помещен в COUNT1. Другое возможное значение здесь — «0», которое поместит результат уменьшения в регистр W.

    Кстати, COUNT1 имеет начальное значение 0xFF или 255. Это значение по умолчанию для неиспользуемых регистров. Это означает, что цикл будет продолжаться в течение 255 циклов команд!

    Как только COUNT1 достигнет нуля, он выйдет из цикла и перейдет к строке DECFSZ COUNT2, 1 . Это уменьшит COUNT2, но вы увидите, что следующая строка указывает программе на loop1! Это означает, что COUNT1 будет уменьшаться снова и снова, пока не достигнет нуля. После этого COUNT2 (теперь со значением 254) будет уменьшен, и цикл продолжается.

    В общем, для выполнения этой процедуры потребуется 255 x 255 циклов команд. Это эквивалентно 65 мс времени ожидания.

    Резюме

    Наша первая программа на языке ассемблера PIC теперь может быть обобщена сверху вниз:

    • Укажите метку START в качестве первой строки в программе (строки 3 и 4)
    • Зарегистрируйте COUNT1 и COUNT2 в качестве переменных для подпрограммы задержки (от 8 до 11)
    • Перейдите к банку 1 и установите RB0 в качестве выхода, а затем вернитесь к банку 0 (строки с 16 по 19)
    • Установите RB0, подождите 65 мс (с помощью подпрограммы задержки в строках с 22 по 23)
    • и затем очистите его, затем снова подождите 65 мс (строки с 24 по 25)
    • Вернитесь к той части программы с меткой «main», эффективно зацикливая код (строка 26).
    • Запуск подпрограммы задержки (строка 28)
    • Конец программы (строка 35)

    Это оно! Я предлагаю вам попробовать приведенный выше код и использовать схему, предоставленную на Эта статья , Получайте удовольствие от написания кода на ассемблере PIC!

    Далее >> Вход / Выход с микроконтроллерами PIC

    Так почему же мы установили бит RP0?
    Так почему же это значение для TRISB?

    прошивка — программирование микроконтроллеров pic на ассемблере

    Ну, поле микроконтроллеров довольно велико. У вас есть несколько брендов, каждый из которых обладает полным набором контроллеров с разной степенью мощности, сложностью и способностью.

    Тем не менее, способ начать работу с большинством микроконтроллеров — это прочитать руководство производителей. В отличие от «нормального» программирования, когда большинство программистов придерживаются стандартов, правил и передовых методов и схем и т. Д. Программирование микроконтроллеров по-прежнему выполняется в значительной степени, поскольку программирование было выполнено в начале 1980-х годов: прочитав руководство по контроллеру, воспроизведя примеры и оттуда.

    Например, manuals Microchip превосходны. Они также имеют очень хорошее community и предоставляют некоторые библиотеки со стандартными функциями, которые вы могли бы использовать (например, математика, ввод-вывод, последовательный ввод-вывод с использованием двух контактов и т. Д.). Многие люди, работающие с ПОС, довольно открыты и обычно делятся своим исходным кодом, если считают, что это может быть полезно кому-то другому.

    Перед тем, как начать, вам нужно сделать несколько вариантов. Первый — это какой язык вы собираетесь использовать. У вас есть три варианта:

    1. Assembly: Большинство производителей предоставляют бесплатные или довольно дешевые комплекты для разработки своих микроконтроллеров (для краткости MCU). Это самый мощный вариант, и тот, который вы должны использовать, если вам удобно. Это также научит вас многому о компьютерах в целом.
    2. Что-то еще: если вы предпочитаете использовать что-то вроде C, вам придется заплатить немало денег за компилятор (хотя для некоторых устройств есть хотя бы один вариант с открытым исходным кодом ), и вам нужно рассмотреть код, создаваемый языками высокого уровня, обычно занимает много места / памяти в устройстве. Кроме того, в зависимости от стандартной библиотеки вы в конечном итоге сами программируете достаточное количество функций.
    3. Базовый / Pascal-подобный язык: некоторые MCU поставляются с базовым / Pascal-подобным интерпретатором. Это здорово начать делать некоторые «игрушечные» проекты и получать представление о том, как это работает.

    Затем вы должны решить, какое устройство вы хотите использовать. Цены на единицу сильно различаются в зависимости от производителя, будь то PROM, EPROM, EEPROM, сколько памяти у него есть, сколько у нее памяти, сколько программируемых контактов и т. Д.

    Моя рекомендация для стартеров:

    1. Попробуйте найти бесплатную «горелку» в Интернете, если вы хотите испытать острые ощущения от программирования своих MCU, используя что-то, что вы создали . Есть много доступных там, просто Google для «простой горелки PIC» или аналогичного. Если это не является обязательным требованием, вы можете купить горелку, но это будет стоить вам справедливой суммы денег.
    2. Возьмите одну версию микроконтроллера EEPROM, которую вы думаете, что собираетесь использовать больше всего. Это избавит вас от необходимости выбрасывать аппаратные средства стоимостью 5 долларов только потому, что у вас есть ошибка в коде.
    3. Купите кучу версии PROM MCU. Они дешевы, и они вам понадобятся. И как только вы начнете, вы захотите поместить MCU повсюду .
    4. Узнайте, как использовать эмулятор. Большинство SDK поставляются с эмулятором, который вы можете использовать для тестирования своих идей, прежде чем передавать их в PROM.
    5. Найдите себе простой и интересный первый проект. Я должен подчеркнуть ПРОСТОЙ
      . Если вы попытаетесь найти способ контролировать свою микроволновую печь с помощью пульта дистанционного управления сразу, будьте готовы к длительному обучению.

    Ну, надеюсь, это поможет вам! Если вам нужна дополнительная информация, я за углом, просто свист! 🙂

    Список ресурсов для изучения Ассемблера

    Список материалов для изучения Ассамблера:


    Для начала
    ru.wikipedia.org/wiki/Ассемблер — ассемблер (не тоже самое, что «язык ассемблера», хотя эти понятия почти слились) в википедии
    ru. wikipedia.org/wiki/Язык_ассемблера — язык ассемблера там же
    bitfry.narod.ru/00.htm — дневники чайника, довольно простые и интересные уроки для начинающих
    www.scribd.com/doc/267365/A-Beginners-Course-In-Assembly-Language — книга об основах ассемблера на английском языке
    Programming from the Ground Up — несложная книга на английском языке. Рекомендация megabrain
    www.osinavi.ru/asm/ — учебник по Ассемблеру «для квалифицированных чайников»
    habrahabr.ru/hub/asm/ — блог, в котором, надеюсь, будет много статей об ассемблере

    Ресурсы
    wasm.ru — наверное, самый крупный русскоязычный ресурс по Ассемблеру. Огромное количество статей, живой форум, новости
    cracklab.ru — огромный ресурс по исследованию/крэкингу программ
    www.insidepro.com/rus/doc.shtml — огромнейшее собрание статей Криса Касперски
    programmersclub.ru/assembler/ — курс asm&&win32
    www.proklondike.com/books/assembler.html — мини-библиотека книг по ассемблеру
    wiki.conus.info/ — большое количество заметок о reverse engineering на русском языке для начинающих и тех кто хочет научиться понимать создаваемый C/C++ компиляторами код
    www. nf-team.org/drmad/zf/zf1/zf1_006.htm — пособие начинающей технокрысы или как писать вирусы

    Книги

    Нортон П., Соухе Д. «Язык ассемблера для IBM PC»

    Григорьев В. Л. «Микропроцессор i486. Архитектура и программирование.»

    Нортон П., Уилтон Р. «IBM PC и PS/2.руководство по программированию» — описана работа с прерываниями и простыми железками

    Англоязычные ресурсы

    asm.sourceforge.net/ — Ассемблер под Linux
    orangejuiceliberationfront.com/intel-assembler-on-mac-os-x/ — Ассемблер под Mac
    blogs.conus.info/ — Различные заметки о reverse engineering, security research, Oracle RDBMS internals, и т.д…
    msdn.microsoft.com — огромная база знаний по технологиям Windows от Microsoft
    www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html — мануалы по Intel’овским инструкциям
    developer.amd.com/documentation/guides/Pages/default.aspx#manuals — аналогичные доки для AMD
    www.gnu.org/s/gdb/documentation/ — GDB Manual
    www. securitytube.net/groups?operation=view&groupId=6 — видеокурс Windows Assembly Language Megaprimer
    www.securitytube.net/groups?operation=view&groupId=5 — видеокурс Assembly Language Megaprimer for Linux
    alexfru.narod.ru/emiscdocs.html — подборка доков из теплых ламповых времен
    www.agner.org/optimize/ — Software optimization resources
    x86asm.net/ — x86-x64 manuals
    www.ctyme.com/rbrown.htm — Ralf Brown Interrupt List with over 9000 linked pages and 350 indexes making the process of searching much easier

    Инструменты

    www.masm32.com/ — MASM32 SDK
    flatassembler.net/ — flat assembler (FASM)
    www.nasm.us/ — The Netwide Assembler (NASM)
    www.ollydbg.de/ — OllyDbg, отладчик для Windows
    www.hex-rays.com/products/ida/index.shtml — IDA — интерактивный дизассемблер и отладчик
    www.idapro.ru/ — русская страница IDA
    research.microsoft.com/en-us/projects/detours/ — Библиотека от Microsoft Research для инъекции Dll и перехвата управления на себя
    conus. info/gt/ — отладчик командной строки для выполнения простых отладочных задач

    Программинг микроконтроллеров

    habrahabr.ru/hub/controllers/ — тематический блог на хабре, с количеством постов несколько большим, чем в блоге по ассемблеру
    programmators.ru/ — сайт по контроллерам семейства PIC
    myrobot.ru/stepbystep/ — сайт роботостроения, по ссылке статьи о микроконтроллерах AVR
    www.123avr.com/07.htm — МК AVR
    easyelectronics.ru/category/avr-uchebnyj-kurs — AVR

    Прочее

    zx.pk.ru/ — форум ZX Spectrum
    bbs.pediy.com/ — форум по reverse engineering на китайском языке . Чтобы можно было понять о чем речь, можно воспользоваться кнопкой «перевести» в хроме
    old-dos.ru/ — крупнейший в Рунете архив старых программ

    Источник: http://habrahabr.ru/post/131971/

    comments powered by HyperComments

    Разработчику







    Описание устройств, переводы даташитов, алгоритмы, программы для PIC-контроллеров.


    1. 29.03.08 — Описание использования модуля ССР в PIC контроллере в режиме шим.
    2. Здесь вы можно найти описание устройств, переводы даташитов и технические решение применяемые нашей компанией в своих изделиях.
    3. Часто возникает необходимость фильтровать помехи на цифровых входах контроллера. Как это сделать по проще читайте на странице Фильтр.
    4. ИК — дистанционное управление. Описание системы кодировки RC-6. Построение алгоритмов декодирования описание пультов с кодировкой RC-6.
    5. Описание эффективных программ извлечения квадратного корня из 32 и 16 битных чисел для микроконтроллеров серии PIC18
    6. Описание, схема, гербер файлы, прошивка — все для изготовления терморегулятора CG2080 для системы отопления «теплые полы».
    7. Схема и описание циклического 5 канального таймера с терморегулятором.
    8. Описание и алгоритмы работы с индикаторами TIC5231, TIC8148, TIC15. Примеры программ для PIC-контроллеров.
    9. Описание простого контроллера бегущих огней на PIC16F628A. Схема и программа на ассемблере прилагаются.
    10. LM317 в стабилизаторе тока для светодиодов.
    11. Простой терморегулятор с датчиком температуры DS18B20.
    12. Простой светорегулятор для RGB — светодиодов.

    Переводы выполнены в любительском варианте «Для себя». Только чтоб можно было разобраться, поэтому советы принимаются, а претензии нет!

    Примеры программ из личных разработок. Разработчик Геннадий Чернов Email: [email protected]


    Сайты которые стоит посетить.

    для перевода «не русских» сайтов рекомендую


     


     


    Для получения дополнительной информации используйте:

    MAGETEX
    Ukraine
    Телефон: +380-50-575-98-63
    Факс: +380-50-575-98-63
    E-mail: [email protected]
     

    Самоучитель по программированию pic контроллеров для начинающих

    Итак, вы решили научиться программировать pic-контроллеры. Для начала поговорим о том, что вам для работы с этими контроллерами понадобится.

    Контроллер работает по определённой программе, которая должна как-то в него попасть. Обычно программу в машинных кодах, готовую для записи в контроллер, называют прошивкой. Следовательно нужно какое-то устройство, которое будет записывать (на сленге обычно говорят заливать или прошивать) программу в контроллер. Такое устройство называется программатор. Подробнее о программаторах и заливке программы мы поговорим позднее, в последней части нашей эпопеи (когда уже будет что заливать), а пока давайте по-порядку — как нам эту программу написать.

    Программа для контроллера — это, как я уже сказал, набор машинных кодов, записанный в файле с расширением «hex» (здесь можно почитать про формат *.hex), который и нужно заливать в контроллер с помощью программатора. Никакого другого языка контроллер не понимает. Следовательно, нужна специальная программа, которая будет переводить текст программы, написанный на каком-либо языке программирования, в машинные коды. Наиболее удобными в этом плане являются интегрированные среды разработки (IDE — integrated development environment), поскольку они могут не только осуществлять перевод текста программы в машинный код, но и производить симуляцию её работы. Причём симуляцию можно проводить пошагово, при этом можно наблюдать состояние регистров или даже менять их состояние по своему желанию. Короче, интегрированные среды помимо, собственно, компиляции (перевода в машинные коды) предоставляют отличные возможности для отладки программы.

    IDE, как и программаторов, существует много. Лично я пользуюсь MPLAB и вам рекомендую, по той простой причине, что MPLAB — это IDE от самого производителя PIC-контроллеров — фирмы Microchip, поэтому имеет отличную поддержку (в том числе на русском языке, что особенно приятно). С официального сайта Microchip можно скачать и сам этот пакет, и подробное описание по работе с ним. Если не нашли или ломает искать — ссылки для скачивания здесь, правда это уже не самая свежая версия.

    В описании на русском языке про всё рассказано: от установки и настройки до удаления. В большинстве случаев вся установка заключается в том, чтобы запустить setup и ответить на пару вопросов, типа куда ставить драйверы и тому подобное, от себя лишь добавлю, что во избежание глюков ставить пакет надо в такую папку, чтобы в пути были только английские буквы (а не в какую-нибудь, типа C:ПрограммыPICMPLAB). Вообще, кириллицу в путях к файлам или в названиях файлов лучше не использовать, иначе возможны глюки.

    MPLAB позволяет писать программы на двух языках: СИ и Ассемблер. Интернет просто ломится от разборок СИ-шников и ассемблерщиков, которые с пеной у рта доказывают друг другу, какой язык лучше. Я отношу себя к ассемблерщикам, поэтому, естественно, расскажу почему лучше именно Ассемблер.

    Ассемблер представляет собой набор элементарных команд, выполняемых контроллером. Каждая команда трактуется в машинный код совершенно однозначно, а результат её выполнения и время выполнения всегда одинаковы. То есть, если вы имеете листинг на ассемблере, то вы можете совершенно точно сказать, что делает контроллер в каждый момент времени и каким именно образом достигается нужный результат.

    Программа на языке СИ (да и вообще на любом языке высокого уровня) — это уже набор команд не контроллера, а соответствующего языка. При компиляции каждая такая команда заменяется набором команд для контроллера, но каким именно набором команд она заменяется, — этого вы уже не знаете, это знает только разработчик языка программирования. Соответственно, невозможно понять, каким именно образом контроллер выполняет желаемое действие.

    Короче говоря, в случае с языком высокого уровня вы изучаете как какой-то дядя обозвал свои способы реализации необходимых вам функций и по каким правилам их надо записывать. В данном случае можно провести следующую аналогию: вы хотите поговорить с китайцем, но вам говорят: «Китайский слишком сложный язык, но есть один дядя в Болгарии, который 20 лет жил в Китае и отлично его выучил. А болгарский язык с русским очень похожи и русскому человеку он интуитивно понятен, так что выучите болгарский, а уж дядя переведёт.»

    В случае с ассемблером, вы изучаете сам контроллер и правила, по которым надо разговаривать с контроллером. При этом контроллер имеет всего-то несколько десятков команд, которые умещаются на одном листке и их легко можно окинуть одним взглядом.

    Надеюсь, к этому моменту вы уже сделали выбор языка программирования, так что пойдём дальше.

    Что нужно сделать в MPLAB, чтобы получить желанную прошивку? Как я уже сказал — подробности читайте в руководстве к IDE MPLAB, оно на русском и там всё понятно (если не понятно — идём на форум), я же только кратко перечислю самое основное и дам некоторые рекомендации.

    Итак, мы установили MPLAB, хотим написать в нём программу для контроллера и получить готовую прошивку.

    Сначала нужно создать проект. Для каждого проекта рекомендую заводить отдельную папку, потому что, во-первых, в проект может входить несколько файлов, а, во-вторых, сам MPLAB создаст ещё несколько вспомогательных файлов (*. lst, *.err, *.cod, *.bkx). Если несколько проектов будут в одной папке, то легко можно запутаться какие файлы к какому проекту относятся. Короче, создаём для проекта новую папку, потом запускаем MPLAB и выбираем меню Project -> New Project…

    В появившемся окошке, в проводнике справа, выбираем нашу папку, в левой части (в поле под надписью File Name) пишем название будущего проекта, например my1.pjt (не забываем указать расширение), и жмём ОК.

    Появляется окно с названием Edit Project. Это менеджер проекта, в котором указываются параметры проекта (какие файлы и библиотеки нужно подключить к проекту, какой будет использоваться камень, будет ли использоваться симуляция и многое другое). Находим поле ввода с названием Development Mode. Справа от этого поля есть кнопочка Change… Нажимаем.

    Открывается окошко с названием Development Mode, в котором мы видим кучу вкладок. На вкладке Tools ставим галочку рядом с MPLAB SIM Simulator (грех для отладки симулятором не пользоваться), в поле ввода Processor выбираем контроллер, с которым мы будем работать. На вкладке Clock указываем какая у нас будет частота генератора. Жмём ОК. На ошибку и предупреждение не обращаем внимания, это просто нам говорят, что пока не могут создать .hex (ну правильно, у нас пока и программы нет) и что при изменении настроек надо заново перекомпилировать проект (так мы ещё вообще ни разу не компилировали).

    В поле ввода Language Tool Suite выбираем Microchip.

    Нажимаем кнопку с названием Add Node… В появившемся окне, в проводнике справа выбираем папку проекта, в поле ввода слева пишем как будет называться файл с текстом программы на ассемблере, например my1.asm (не забываем указывать расширение), и жмём ОК. Всё, теперь мы подключили к проекту файл my1.asm (указали, что текст программы будет в этом файле).

    На этом с Edit project заканчиваем, — нажимаем ОК.

    Теперь нужно, собственно, создать файл с текстом программы (в менеджере проекта мы просто указали, что текст будет в таком-то файле, но фактически этот файл ещё не создан). Для этого идём в меню File и выбираем пункт New. Откроется окошко редактора с названием Untitled1. Выбираем меню File -> Save As…, в проводнике справа указываем папку проекта, в поле ввода File Name пишем название файла, которое мы указали в менеджере проекта, то есть в нашем примере это будет my1.asm. Если всё сделано правильно, то название окошка редактора поменяется с Untitled1 на путьmy1.asm.

    Вот и всё! Теперь осталось только набрать в окошке редактора текст программы, скомпилировать проект (меню Project->Build All) и, если в программе нет ошибок (что с первого раза бывает очень редко), то в папке проекта появится готовая прошивка (файл с расширением hex), которую можно заливать в контроллер.

    Введение

    PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты.

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

    Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

    Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

    • Характеристики миниатюрного PIC контроллера PIC12F629
    • Интегрированная среда разработки MPLAB IDE
    • Подключение Matlab/Simulink к MPLAB
    • Подключение программатора PIC-KIT3

    Характеристики миниатюрного PIC-контроллера

    Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

    Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].

    • Архитектура: RISC
    • Напряжение питания VDD: от 2,0В до 5,5В ( >path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:

    4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

    Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.

    Рис. 16. Выбор типа контроллера в блоке Master модели.

    5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters . В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.

    Рис. 17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

    6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.

    Рис. 18. Запуск компилятора Simulink модели.

    В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).

    Рис. 19. Результаты компиляции модели.

    Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:

    Управление компиляцией Simulink моделей из среды MPLAB

    Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

    1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
    2. Запустите MPLAB.
    3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.

    4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

    5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
    В результате создаётся проект MPLAB:

    со скриптами модели на языке Си.

    6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).

    Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
    Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

    Подключение программатора PIC-KIT3

    Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).

    Рис. 21. Перечень программаторов для прошивки микроконтроллера.

    Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).

    Рис. 22. Информация об установленном драйвере программатора PIC-KIT3.

    Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.

    Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

    Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].

    Рис. 24. Выводы PGM PIC контроллеров.

    Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

    Желтый — Красный — Состояние программатора
    Вкл — Выкл — Подключен к USB линии
    Вкл — Вкл — Взаимодействие с MPLAB
    Мигает — Включен постоянно — Прошивка микроконтроллера

    Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

    При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

    Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use

    Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8. 92.

    Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.

    Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

    Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.

    Рис. 27. Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

    Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].

    Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.

    Заключение

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

    Введение

    PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты.

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

    Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

    Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

    • Характеристики миниатюрного PIC контроллера PIC12F629
    • Интегрированная среда разработки MPLAB IDE
    • Подключение Matlab/Simulink к MPLAB
    • Подключение программатора PIC-KIT3

    Характеристики миниатюрного PIC-контроллера

    Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

    Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].

    • Архитектура: RISC
    • Напряжение питания VDD: от 2,0В до 5,5В ( >path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:

    4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

    Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.

    Рис. 16. Выбор типа контроллера в блоке Master модели.

    5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters . В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.

    Рис. 17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

    6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.

    Рис. 18. Запуск компилятора Simulink модели.

    В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).

    Рис. 19. Результаты компиляции модели.

    Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:

    Управление компиляцией Simulink моделей из среды MPLAB

    Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

    1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
    2. Запустите MPLAB.
    3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.

    4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

    5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
    В результате создаётся проект MPLAB:

    со скриптами модели на языке Си.

    6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).

    Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
    Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

    Подключение программатора PIC-KIT3

    Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).

    Рис. 21. Перечень программаторов для прошивки микроконтроллера.

    Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).

    Рис. 22. Информация об установленном драйвере программатора PIC-KIT3.

    Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.

    Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

    Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].

    Рис. 24. Выводы PGM PIC контроллеров.

    Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

    Желтый — Красный — Состояние программатора
    Вкл — Выкл — Подключен к USB линии
    Вкл — Вкл — Взаимодействие с MPLAB
    Мигает — Включен постоянно — Прошивка микроконтроллера

    Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

    При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

    Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use

    Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8. 92.

    Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.

    Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

    Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.

    Рис. 27. Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

    Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].

    Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.

    Заключение

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

    PIC Assembly Tutorial 1 — Introduction to Assembly Programming. — [Brads Electronic Projects]

    Добро пожаловать в первую часть руководств по сборке PIC.

    Этот набор руководств основан на постоянно популярных микроконтроллерах PIC16F628A и PIC16F648A. Мы будем программировать на ассемблере по ряду причин:

    • Assembly — это очень весело, а
    • Вы можете получить отличное понимание того, как работает микроконтроллер, благодаря работе с языком низкого уровня.

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

    Одна из первых вещей, на которую вы захотите взглянуть, — это набор команд. Во всех обучающих материалах, которые вы будете изучать, будет использоваться микроконтроллер pic16f628a или pic16f648a. Они дешевы, очень распространены в большинстве магазинов электроники и имеют много памяти и портов ввода-вывода для всех различных руководств, которые мы будем выполнять.

    Вы можете скачать техническое описание здесь

    Когда вы откроете его, вы захотите перейти к странице с номером «112». Эта страница содержит красивую таблицу для печати, в которой рассказывается, каковы все инструкции для этого микроконтроллера (и что они делают). Рекомендуется распечатать ее и держать рядом с собой во время программирования. Если вы прокрутите страницу вниз со страницы 112, вы увидите, что она дает вам более подробную информацию о том, что делают эти инструкции, и примеры того, как их использовать — так что не стесняйтесь немного посмотреть и там.

    Вам также необходимо загрузить себе копию MPLAB IDE — это бесплатное программное обеспечение, которое можно загрузить с веб-сайта микрочипов www.microchip.com

    Что касается аппаратного обеспечения, вам нужно будет получить себе микроконтроллер. Либо 16f628a, либо 16f648a.

    Вам также понадобится программист (я лично использую pickit2, который стоит около 30 долларов). Pickit2 великолепен, потому что вы можете программировать свой чип, пока он еще находится в цепи.Также вы можете подавать питание на вашу схему через программатор pickit2. Итак, когда вы работаете с цепью, вы нажимаете кнопку программы, как только она запрограммирована, вы нажимаете кнопку питания, и схема включается!

    Вам понадобится макет электроники и несколько перемычек. Если вам нужны очень дешевые перемычки, просто купите кабель LAN длиной 1 метр, затем выньте все провода изнутри кабеля, разрежьте их. на различную короткую длину, и тогда у вас есть множество проводов примерно за 1 доллар.

    Хорошо, теперь, когда у нас было небольшое представление, пора перейти к делу.

    Откройте MPLAB IDE и дождитесь полной загрузки. После загрузки нажмите «Project», затем «Project Wizard». Вам будет представлена ​​приветственная страница, нажмите «NEXT». Теперь вам нужно выбрать микроконтроллер, который вы будете программировать. Просто используйте раскрывающийся список и найдите либо 16f628a, либо 16f648a (в зависимости от того, что вы используете) после выбора, нажмите « ДАЛЕЕ », на следующей странице вас спросят, какой набор инструментов использовать, он будет автоматически выбран в соответствии с тем, что мы хотим, поэтому просто нажмите ‘ NEXT ‘Теперь он попросит вас создать новый файл проекта.Нажмите «BROWSE» («ПРОСМОТРЕТЬ»). Теперь вы получите окно «Сохранить как». Я рекомендую создать папку с названием «микроконтроллеры» в папке «Мои документы». откройте папку микроконтроллеров (или как вы ее называете, а затем сохраните файл проекта как 16f628a или 16f648a (какой бы чип вы ни использовали), затем нажмите «ДАЛЕЕ». На четвертом шаге вас спросят, хотите ли вы включить какие-либо файлы в свой проект. Об этом не нужно беспокоиться, поэтому просто нажмите «ДАЛЕЕ»

    Наконец, откроется сводная страница. Нажмите «ЗАВЕРШИТЬ», и теперь вы закончили настройку MPLAB для нашего конкретного микроконтроллера!

    причина, теперь вам нужно выйти из MPLAB IDE перед открытием файла (я не знаю почему, но у вас есть проблемы, если вы этого не сделаете), поэтому выйдите из MPLAB, нет необходимости сохранять рабочее пространство.Снова откройте MPLAB IDE, и мы готовы открыть наш шаблон!

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

    либо щелкните ссылку правой кнопкой мыши и сохраните шаблон, либо просто щелкните ссылку, чтобы открыть ее в браузере, а затем вы можете скопировать и вставить текст в MPLA IDE

    ПРИМЕЧАНИЕ: MPLAB IDE не будет отображаться полностью различные цвета и правильное форматирование, пока вы не сохраните файл в формате. asm, вы должны сами ввести расширение при первом сохранении файла в MPLAB IDE.

    В этот раз вам стоит взглянуть на шаблон. Мы будем использовать этот шаблон во всех уроках, и все, что мы будем делать, это добавлять к нему. Шаблон в основном настраивает микроконтроллер, готовый для нашего кода.

    Каждый раз, когда вы видите точку с запятой; Я имею в виду, что все, что следует после этого, — это просто некоторые комментарии. Это означает, что при сборке (или компиляции вашего кода) MPLAB игнорирует комментарии.I.E. это не часть кода, а просто удобный способ написания комментариев, чтобы вы знали, что на самом деле делает код.

    Ну вот и все для вводного руководства.

    Язык ассемблера, часть 1 (микроконтроллер PIC)

    Сейчас мы пишем программы с увлечением геями, начиная с темы 3. Для ясности эти списки были написаны в удобочитаемой форме. Таким образом, инструкции были представлены в виде короткой мнемоники, такой как return вместо 00000000001000b; регистры файлов имеют аналогичные имена, например INTCON; строки были помечены, а комментарии прилагались. Такие символические изображения предназначены только для потребления человеком.

    С помощью набора команд устройства, см. Раздел A, можно выполнить перевод из удобочитаемой символьной формы в машиночитаемую двоичную форму. Это не особенно сложно для такого устройства, как PIC, которое имеет сокращенный набор инструкций (RISC) и несколько режимов адресации. Однако это медленный и утомительный процесс, особенно когда кодируются программы большой длины. Кроме того, он подвержен ошибкам и его трудно поддерживать, когда нужно внести изменения.

    Компьютеры умеют делать скучные вещи быстро и точно; и перевод из символьного в машинный код определенно попадает в эту категорию. Здесь мы кратко рассмотрим различные программные пакеты, которые помогают в этом процессе перевода.

    После прочтения этой темы вы получите:

    • Знать, что такое язык уровня ассемблера и как он соотносится с машинным кодом.

    • Оцените преимущества символьного представления над машиночитаемым кодом.

    • Разберитесь в функциях ассемблера.

    • Поймите разницу между абсолютной и перемещаемой сборкой.

    • Понять роль компоновщика.

    • Оцените процесс перевода и определения местоположения программы на языке ассемблера в абсолютный машинный код.

    • Понять структуру файла машинного кода и роль программы-загрузчика.

    • Разберитесь в роли симулятора.

    • Оцените использование интегрированной среды разработки для автоматизации взаимодействия различных программных инструментов, необходимых для преобразования исходного кода в запрограммированное устройство MCU.

    Суть процесса конвертации представлена ​​на рис. 8.1. Здесь программа подготавливается ручным человеком в символической форме, переваривается компьютером и выводится в машиночитаемой форме. Конечно, это простое утверждение противоречит более сложному процессу, и мы хотим изучить его достаточно подробно, чтобы помочь вам в написании ваших программ.

    Рис. 8.1 Преобразование исходного кода уровня сборки в машинный код.

    Как правило, различные компьютерные пакеты для переводчиков и служебных программ написаны и продаются многими компаниями, производящими программное обеспечение, и поэтому фактические детали и процедуры для различных коммерческих продуктов несколько отличаются.В конкретном случае устройств PIC MCU Microchip Technology Inc. в соответствии с политикой всегда предоставляла свои программные инструменты на уровне сборки бесплатно, что является большим фактором их популярности. По этой причине коммерческое программное обеспечение PIC относительно редко, и то, что есть, обычно соответствует синтаксису Microchip. По этой причине мы проиллюстрируем эту тему с помощью набора инструментов компьютерного кодирования Microchip.

    Использование компьютера для перевода кода из более удобных для пользователя форм (известных как исходный код) в удобный двоичный код (известный как объектный код или машинный код, и загрузка его в память началась в конце 1940-х годов для мэйнфреймов компьютеров . По крайней мере, это позволяло использовать основы чисел более высокого порядка, такие как шестнадцатеричные.1 В этой базе кодовый фрагмент на рис. 8.1 становится:

    Шестнадцатеричный загрузчик переведет это в двоичный код и поместит код в назначенные ячейки памяти. Этот загрузчик может быть частью программного обеспечения вашего программатора PIC-EPROM. Шестнадцатеричное кодирование мало что может похвалить, за исключением того, что количество нажатий клавиш уменьшено — но клавиш больше — и некоторые типы ошибок немного легче обнаружить.

    Как минимум, для серьезного программирования требуется символьный транслятор или ассемблер 2. Это позволяет программисту использовать мнемонику для инструкций и внутренних регистров с именами констант, переменных и адресов. Символический язык, используемый в исходном коде, известен как язык ассемблера. В отличие от языков высокого уровня, таких как C или PASCAL, язык ассемблера взаимно однозначно связан с сгенерированным машинным кодом, то есть одна строка исходного кода создает одну инструкцию. В качестве примера в программе 8.1 показана слегка измененная версия программы 6.11. Эта подпрограмма вычисляет квадратный корень из 16-разрядной переменной с именем NUM, которой в хранилище данных было выделено два байта.

    Присвоение имен адресам и константам особенно полезно для более длинных программ, которые могут легко превышать 100 строк. Вместе с использованием комментариев это упрощает отладку, разработку и сопровождение кода. Таким образом, если мы хотим изменить регистры файлов, содержащих переменную NUM, с File 20:21 h на, скажем, File 36: 37h, то нам нужно только изменить строку:

    блок 20ч

    С

    по:

    блок 36ч

    , а затем повторно перевести в машинный код.В программе, содержащей, скажем, 50 ссылок на переменную NUM, альтернатива изменения всех этих адресов вручную с 20h или 21h (старший: младший байт) на 36h или 37h соответственно трудоемка и подвержена ошибкам. В теле нашего исходного кода старший байт обозначается как NUM (то есть содержимое файла 20h), а младший байт в файле 21 h как NUM + 1, поскольку ассемблеры могут выполнять простые арифметические операции с символическими константами.

    Псевдокоманда cblock является примером директивы ассемблера. Директива — это команда программиста ассемблеру относительно ее работы или присвоения имени константе. Мы перечисляем небольшое подмножество директив ассемблера Microchip в конце темы, читатель должен обратиться к официальному руководству за подробным описанием. Вкратце директивы, используемые в программе 8.1: cblock — endc

    Скорее, как блок директив equ , дающий инкапсулированный список констант меток, начиная с указанного значения, например.20h или следующий за последним cblock, если адрес не указан. Можно считать, что помеченные объекты занимают более одного байта при использовании поля размера, разделенного двоеточиями; например, NUM: 2 для 2-байтового распределения и обычно используются для именования регистров общего назначения (GPR).

    Программа 8.1 Абсолютный код уровня сборки для нашего модуля извлечения квадратного корня.

    конец

    Сообщает ассемблеру, что это конец исходного кода. экв

    Связывает значение с символом.Например, ассемблер заменяет имя STATUS значением 3 в любом месте операнда инструкции. Обычно используется для регистров специального назначения (SPR) и битов в файловых регистрах.

    org

    Задает начальный адрес для следующего кода, в противном случае ассемблер по умолчанию использует 000h в хранилище программ. В этой программе подпрограмма SQR_ROOT запускается в 200h.

    Конечно, символьные трансляторы требуют более вычислительной мощности, чем простые шестнадцатеричные загрузчики, особенно в области памяти и резервного хранилища.До появления персональных компьютеров в конце 1970-х годов для реализации процесса сборки требовались мэйнфреймы, миникомпьютеры или специализированные системы разработки MPU / MCU. Такие реализации были неизбежно дороги и препятствовали использованию таких компьютерных средств, а ручное кодирование было относительно распространенным явлением. Таким образом, программа перевода решает две задачи:

    • Преобразование различных мнемоник команд и меток в их эквиваленты машинного кода. Тема

    • Расположение инструкций и данных в соответствующей ячейке памяти.

    Это второй из них, возможно, труднее понять.

    Программа 8.2 предназначена для обработки абсолютным ассемблером. Здесь программист использует директиву org, чтобы сообщить ассемблеру, чтобы он поместил код в указанный адрес хранилища программ. Это означает, что программисту нужно знать, где все должно быть размещено. Этот абсолютный процесс сборки показан на рис. 8.2. Абсолютная сборка подходит там, где в реальных проектах программа содержится в одном автономном файле; что характерно для большей части кода в этом тексте.часто состоят из нескольких тысяч строк кода и требуют совместной работы. Поскольку многие модули пишутся разными людьми, возможно, также поступающими из внешних источников и библиотек, необходимо найти некоторые средства, чтобы связать соответствующие модули вместе, чтобы получить один исполняемый файл с машинным кодом. Например, вам может потребоваться вызвать подпрограмму деления, которую Фред написал некоторое время назад. Вы не будете знать, где именно в памяти будет находиться эта подпрограмма, пока проект не будет завершен. Что ты можешь сделать? Итак, подпрограмма должна иметь помеченную точку входа; скажем, в данном случае DIV.Вы должны иметь возможность указать ассемблеру присвоить этой метке атрибут, что его абсолютное значение должно быть найдено позже программой компоновщика. Мы рассмотрим этот перемещаемый способ работы позже в этой теме.

    Большинство программ, работающих на PIC низкого и среднего уровня, адекватно обрабатываются абсолютным ассемблером. Чтобы прояснить этот процесс, мы возьмем подпрограмму на рис. 8.2 от создания исходного файла до окончательного файла с абсолютным машинным кодом.

    Монтаж

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

    Рис. 8.2 Абсолютная трансляция кода на уровне сборки.

    Например, нет переноса строк; если вам нужна новая строка, нажмите клавишу [ENT]. Большинство операционных систем поставляются с простым текстовым редактором; например, блокнот для Microsoft Windows. Также доступны сторонние продукты, и большинство текстовых процессоров имеют текстовый режим, который может использоваться как редактор программ.3 Имена исходных файлов уровня сборки, совместимых с микросхемой, имеют расширение .src.

    Формат типичной строки исходного кода выглядит так:

    За исключением строк, содержащих только комментарии, все строки должны содержать инструкцию (выполняемую MCU или директивой) и любой соответствующий операнд или операнды. Любая метка должна начинаться в столбце 1, в противном случае первый символ должен быть пробелом или табуляцией, чтобы указать отсутствие метки. Метка может содержать до 32 буквенно-цифровых символов, знаков подчеркивания или вопросительного знака при условии, что первым символом будет подчеркивание или буква. Ярлыки обычно чувствительны к регистру. Метка строки называет адрес хранилища программы первой следующей исполняемой инструкции.

    Необязательный комментарий обозначается точкой с запятой , комментарии до конца строки разрешены — см. Строки 11-18 программы 8.1. Комментарии игнорируются ассемблером и предназначены исключительно для удобочитаемой документации. Примечания должны быть обширными и должны объяснять, что делает программа, а не просто повторять инструкцию. Например:

    — это пустая трата энергии:

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

    Пробел должен отделять инструкцию от любого операнда. При наличии двух операндов поля источника и назначения разделяются запятой. В инструкциях, где местом назначения может быть рабочий регистр или регистр адресуемого файла, предопределенные имена w или f должны появляться в полях назначения или числах 0 или 1 соответственно.Ассемблер по умолчанию будет использовать файл назначения, если он не указан.

    Отсутствует

    Код 404 страница не найдена. К сожалению, страница отсутствует или перемещена.

    Ниже приведены основные подразделы этого сайта.


    • Главная страница General Electronics
    • Мой канал YouTube Electronics
    • Проекты микроконтроллеров Arduino
    • Raspberry Pi и Linux
    • Пересмотр регистров порта Arduino
    • Digispark ATtiny85 с MCP23016 GPIO Expander
    • Программа безопасной сборки H-моста
    • Построить управление двигателем с H-мостом без фейерверков
    • H-мост MOSFET для Arduino 2
    • Гистерезис компаратора и триггеры Шмитта
    • Учебное пособие по теории компараторов
    • Эксплуатация и использование фотодиодных схем
    • Реле постоянного тока на полевых МОП-транзисторах с оптопарой и фотоэлектрическими драйверами
    • Подключение твердотельных реле Crydom MOSFET
    • Учебное пособие по схемам фотодиодных операционных усилителей
    • Входные цепи оптопары для ПЛК
    • h21L1, 6N137A, FED8183, TLP2662 Оптопары с цифровым выходом
    • Цепи постоянного тока с LM334
    • LM334 Цепи CCS с термисторами, фотоэлементы
    • LM317 Цепи источника постоянного тока
    • TA8050P Управление двигателем с Н-мостом
    • Оптическая развязка управления двигателем с Н-мостом
    • Управление двигателем с Н-мостом на всех NPN транзисторах
    • Базовые симисторы и тиристоры
    • Твердотельные реле переменного тока с симисторами
    • Светоактивированный кремниевый управляемый выпрямитель (LASCR)
    • Базовые схемы транзисторных драйверов для микроконтроллеров
    • ULN2003A Транзисторная матрица Дарлингтона с примерами схем
    • Учебное пособие по использованию силовых транзисторов Дарлингтона TIP120 и TIP125
    • Управление силовыми транзисторами 2N3055-MJ2955 с транзисторами Дарлингтона
    • Общие сведения о биполярных транзисторных переключателях
    • Учебное пособие по переключению N-канального силового МОП-транзистора
    • Учебное пособие по переключателю P-Channel Power MOSFET
    • Построение транзисторного управления двигателем с H-мостом
    • Управление двигателем H-Bridge с силовыми МОП-транзисторами
    • Больше примеров схем Н-моста силового полевого МОП-транзистора
    • Создание мощного транзисторного управления двигателем с H-мостом
    • Теория и работа конденсаторов
    • Построить вакуумную трубку 12AV6 AM Radio
    • Катушки для высокоселективного кристаллического радио
    • Добавление двухтактного выходного каскада к аудиоусилителю Lm386
    • Исправление источника питания
    • Основные силовые трансформаторы
    • Цепи стабилизатора на транзисторе-стабилитроне
    • Уловки и подсказки для регуляторов напряжения серии LM78XX
    • Биполярные источники питания
    • Создайте регулируемый источник питания 0-34 В с Lm317
    • Использование датчиков Холла с переменным током
    • Использование переключателей и датчиков на эффекте Холла
    • Использование ратиометрических датчиков на эффекте Холла
    • Использование датчиков Холла с Arduino-ATMEGA168
    • Простой преобразователь от 12-14 В постоянного тока до 120 В переменного тока
    • Глядя на схемы оконного компаратора
    • Автоматическое открытие и закрытие окна теплицы
    • La4224 1 Вт усилитель звука
    • Управление двигателем H-Bridge с силовыми МОП-транзисторами Обновлено
    • Обновлено в сентябре 2017 г . :
    • Веб-мастер
    • Раскрытие Бристоль, Юго-Западная Вирджиния
    • Наука и технологии
    • 2017 Обновления и удаления веб-сайтов
    • Электроника для хобби
    • Конституция США
    • Христианство 101
    • Религиозные темы
    • Электронная почта

    »Главная » Электронное письмо »Пожертвовать » Преступление »Хобби Электроника
    » Защита окружающей среды »Расизм »Религия »Бристоль VA / TN

    »Архив 1 »Архив 2 »Архив 3 »Архив 4 »Архив 5
    » Архив 6 »Архив 7 »Архив 8 »Архив 9


    Веб-сайт Авторские права Льюис Лофлин, Все права защищены.

    Искусство программирования на языке ассемблера с использованием технологии PIC® [Книга]

    Описание книги

    Искусство программирования на языке ассемблера с использованием технологии PIC® полностью охватывает язык ассемблера, используемый при программировании микроконтроллера PIC® (MCU). Используя минимальный набор инструкций, характерный для большинства продуктов PIC®, автор подробно раскрывает нюансы выполнения циклов. Фундаментальные методы проектирования представлены на основе разработки структурированных систем Орра с использованием четырех логических структур управления.Эти управляющие структуры представлены в виде блок-схем, диаграмм Warnier-Orr®, диаграмм состояний, псевдокода и расширенного примера с использованием SysML®. Представлены базовые математические инструкции сложения и вычитания, а также краткое изложение сложных математических процедур, представленных в виде проверенных примечаний по применению утилиты Microchip®.

    Приложения предназначены для полноты, особенно для опытных читателей, включая несколько наборов инструкций, наборы символов ASCII, таблицы преобразования десятичных чисел в двоичные и шестнадцатеричные, а также разработку десяти «передовых методов».Две таблицы данных (одна полная таблица на серию 10F20x и одна частичная таблица на серию 16F88x) также представлены в приложениях, чтобы служить в качестве важной справочной информации, позволяющей новому встроенному программисту познакомиться с форматом таблиц и получить необходимые навыки. оценить техническое описание продукта для правильного выбора семейства микроконтроллеров для любого конкретного проекта.

    Искусство программирования на языке ассемблера с использованием PIC® Technology написана для аудитории с широким спектром навыков, начиная от абсолютного новичка, совершенно нового для встроенного управления, и заканчивая встроенным программистом C, который не знаком с языком ассемблера.

    В этой книге вы познакомитесь со следующими областями:

    • Символы и терминология, используемые программистами и инженерами в приложениях микроконтроллеров
    • Программирование с использованием языка ассемблера на примерах
    • Знакомство с практикой проектирования и разработки
    • Основы математики знания в шестнадцатеричном формате
    • Ресурсы для сложных математических функций

    Подходы к поиску ресурсов

    • Учит, как начать писать простой код, например.g., PICmicro® 10FXXX и 12FXXX
    • Предлагает уникальные и новаторские подходы к тому, как добавить свой индивидуальный подход с помощью улучшенных процессоров среднего уровня PICmicro® 16FXXX и 18FXXX
    • .
    • Показывает, как резко снизить стоимость продукта за счет достижения 100% контроля
    • Демонстрирует, как добиться оптимизации по сравнению с программированием на C, сократить пространство кода, сузить циклы синхронизации, уменьшить размер требуемых микроконтроллеров и снизить общую стоимость продукта

    Показать и спрятать еще

    Introduction to PIC — PIC Microcontroller Tutorials — PIC Tutorial Resource

    Введение

    Добро пожаловать в начало PIC Tutorial.Эти страницы познакомят вас с основной структурой устройства, вплоть до методов и приемов программирования. Также будут предложения о том, как изменить код, чтобы вы могли адаптировать PIC к вашим приложениям в Cybot. Мы не будем включать какие-либо схемы внутренней архитектуры, поскольку это может привести только к путанице. Если вы хотите ознакомиться с таблицей данных, ее можно загрузить с веб-сайта Microchips.

    Для начала давайте взглянем на ПОС.

    Микроконтроллер Microchip PIC 16F84

    Microchip производит серию микроконтроллеров под названием PIC.Посмотреть ассортимент их микроконтроллеров можно здесь. Доступно множество различных вариантов, от некоторых базовых типов с низким объемом памяти, вплоть до тех, которые имеют встроенные аналогово-цифровые преобразователи и даже ШИМ. Мы собираемся сосредоточиться на PIC 16F84. Как только вы научитесь программировать один тип PIC, выучить остальные станет легко.

    Существует несколько способов программирования PIC — с использованием BASIC, C или языка ассемблера. Мы собираемся показать вам язык ассемблера. Не пугайтесь этого.Вам нужно выучить всего 35 инструкций, и это самый дешевый способ программирования PIC, поскольку вам не нужно никакого дополнительного программного обеспечения, кроме бесплатных.

    Штифты 16F84

    Ниже представлена ​​схема, показывающая распиновку PIC 16F84. Мы рассмотрим каждый штифт, объясняя, для чего он используется.

    RA0 К RA4

    RA — двунаправленный порт. То есть его можно настроить как вход или выход. Число после RA — это номер бита (от 0 до 4).Итак, у нас есть один 5-битный направленный порт, каждый бит которого можно настроить как вход или выход.

    RB0 К RB7

    RB — второй двунаправленный порт. Он ведет себя точно так же, как RA, за исключением того, что задействованы 8 бит.

    ВСС И ВДД

    Это контакты блока питания. VDD — это положительное питание, а VSS — отрицательное напряжение, или 0 В. Максимальное напряжение питания, которое вы можете использовать, составляет 6 В, а минимальное — 2 В.

    OSC1 / CLK IN и OSC2 / CLKOUT

    К этим контактам мы подключаем внешние часы, чтобы микроконтроллер имел какое-то время.

    MCLR

    Этот вывод используется для стирания ячеек памяти внутри PIC (т.е. когда мы хотим его перепрограммировать. При нормальном использовании он подключается к положительной шине питания.

    ИНТ

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

    T0CK1

    Это еще один тактовый вход, который управляет внутренним таймером.Он работает изолированно от основных часов. Опять же, мы не будем часто использовать его.

    Как программировать PIC

    Хорошо, значит, вы пока не откладываете. Теперь вы хотите знать, как запрограммировать PIC, но, помимо изучения инструкций кода сборки, как вы на самом деле запрограммируете информацию? Что ж, есть два способа — простой и самостоятельный. Самый простой способ — купить программатор PIC (около 35), который будет подключаться к вашему ПК, и вы сможете программировать PIC с помощью прилагаемого программного обеспечения.Самостоятельный способ — создать своего собственного программатора (самый дешевый — чуть меньше 20), использовать бесплатное программное обеспечение из Интернета и запрограммировать его таким образом.

    Если вы хотите использовать метод «сделай сам», мы настоятельно рекомендуем этот сайт и щелкните «Поддерживаемые программисты», чтобы просмотреть схемы. Самый дешевый — TAIT Classic Programmer. Программное обеспечение для программирования PIC также можно скачать с этого сайта в разделе Download

    .

    Если вы хотите пойти более легким путем, посетите этот сайт. Здесь можно купить как комплект деталей, так и готовый агрегат.

    Здесь есть еще один хороший сайт для бесплатного программного обеспечения. Это программное обеспечение позволяет использовать любого программиста, так как программное обеспечение полностью настраивается.

    Подойдет любой метод, поскольку оба они приводят к одному и тому же — программированию PIC.

    Следующее, что вам понадобится, это ассемблер. Это преобразует программу, которую вы пишете, в формат, понятный PIC. Лучшая из них — от самих Microchip, она называется MPLAB. Он основан на Windows и включает в себя редактор, симулятор и ассемблер. Это де-факто программное обеспечение, как написано производителями ПОС, и, прежде всего, оно БЕСПЛАТНО!

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

    Далее мы рассмотрим, как подключить простую схему для разработки PIC.

    Нажмите здесь, чтобы начать обучение >>
    (подключение к микроконтроллеру PIC)

    embedded — лучший ресурс для изучения ассемблера для микроконтроллера PIC

    Я верю в написание дизассемблера.Начните с очень простой одно- или двухстрочной программы, которая, возможно, загружает регистр с константой (нужно прочитать руководство или что-то еще, чтобы изучить этот шаг). Собери это. Сохраните двоичный файл в формате, который вы можете или желаете написать программу для чтения (возможно, Intel hex или elf, если они это поддерживают).

    Напишите программу для чтения двоичного файла и извлечения программы, затем возьмите эти байты и напишите дизассемблер (даже если у поставщика есть дизассемблер, вы все равно должны его написать).

    Теперь начните итерацию процесса, изучите новую инструкцию или новый способ использования этой инструкции, по одной инструкции за раз.Напишите код для дизассемблирования этой инструкции или опции. Попробуйте написать ассемблер, чтобы манипулировать каждым битом в инструкции.

    К тому времени, когда вы пройдете набор инструкций, вы будете знать набор инструкций лучше, чем большинство людей, которые используют его каждый день, вы будете знать, как написать ассемблер для каждой из опций для каждого из кодов операций, вы также можете узнать, почему это инструкция может адресовать только N байтов из своего местоположения, а другие могут получить доступ ко всему, или эта инструкция может использовать только N бит сразу, а другие могут использовать любое значение.Что-то в этом роде.

    Я использовал этот процесс много раз и выучил множество наборов инструкций, ymmv. После первой пары-тройки описанный выше процесс может занять всего день.

    РЕДАКТИРОВАТЬ:

    Цель здесь — образование, а не следующий великий проект sourceforge. Вывод может быть настолько уродливым или неполным, насколько вам нравится, только вы его прочтете.

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

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

    Учебники по

    Baseline PIC — БЕСПЛАТНО

    Базовая (12-разрядная) архитектура PIC и периферийные устройства, использующие C (XC8 и CCS) и язык ассемблера.

    Эти руководства начинаются с использования языка ассемблера для ознакомления с базовой (12-битной) архитектурой PIC и периферийными устройствами.
    Вторая серия уроков демонстрирует, как программировать базовые PIC на языке C, используя компиляторы Microchip XC8 и CCS PCB (v4).

    В дополнение к этим урокам разрабатывается серия видеоуроков: