Главная страница
Навигация по странице:

  • Windows95/98

  • HEX - калькулятор файл CALC32.rar прилагается ( папка "

  • SLEEP )

  • Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008). Самоучитель по программированию PIC контроллеров для начинающих. Система команд pic16F84A 26 Что такое программа иправила ее составленияПример создания программы автоколебательного мультивибратораДирективы.


    Скачать 3.49 Mb.
    НазваниеСистема команд pic16F84A 26 Что такое программа иправила ее составленияПример создания программы автоколебательного мультивибратораДирективы.
    АнкорСамоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008).pdf
    Дата30.01.2017
    Размер3.49 Mb.
    Формат файлаpdf
    Имя файлаСамоучитель по программированию PIC контроллеров для начинающих .pdf
    ТипПрограмма
    #1195
    КатегорияПромышленность. Энергетика
    страница2 из 57
    1   2   3   4   5   6   7   8   9   ...   57
    "
    Приложении

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

    8 Это вовсе не есть факт, но такое может быть
    Самое лучшее решение - применение для этих целей компьютера с
    тактовой частотой до
    500
    мГц и
    операционной системы
    Windows95/98
    Лично я
    сделал так купил практически "за так " "древнюю старушку ", обманул BIOS, пристегнув к
    родному винчестеру, "помощником ", дополнительный винчестер на 8
    Гб
    , поставили включил "форсаж ". Получилось "дешево и
    сердито ", и
    прежде всего по той причине, что при занятии программированием, создании печатных плат, вычерчивании схем и
    прочих радиолюбительских делах, особой скорости и
    не требуется, так как все эти занятия неспешны
    , и
    особого смысла задействовать под это дело быстродействующие компьютеры нет
    В
    моей "старушке " стоит почти на 2
    Гб подобного рода программ, в
    том числе и
    довольно
    - таки "навороченных ", и
    ничего
    , прекрасно работает
    С
    тем
    , что должно быть в
    наличии обязательно, я
    надеюсь
    , понятно, а
    теперь о
    полезных "мелочах ". Скачайте эти две маленькие, но полезные и
    удобные программки
    HEX - калькулятор файл CALC32.rar прилагается (
    папка
    "
    Программы
    "
    ). Конвертер систем исчисления файл BCONV32 прилагается (
    папка
    "
    Программы
    "
    ).
    Они настолько просты, что
    Вы без труда разберетесь, зачем они нужны
    Чаще всего требуется конвертер систем исчисления
    08.07.07.
    Один из активных участников работы,
    Петр
    Высочанский
    , разработал программу конвертера систем исчисления, которая наиболее адаптирована к
    практическим нуждам Конвертер систем исчисления
    Петра
    Высочанского
    :
    файл
    Hex-Dec_Bin.exe
    прилагается
    (
    папка
    "
    Программы
    "
    )

    9 При открытии, программа конвертера устанавливает английскую раскладку клавиатуры
    (
    то
    , что нужно. Итак, все что необходимо для занятия программированием PIC контроллеров имеется
    Пока
    , это не более чем красивые и
    интригующие "штучки " не вполне понятного предназначения
    Можно их на досуге рассмотреть, на что- нибудь понажимать
    , только, во избежание дальнейших недоразумений, не трогайте настроек по умолчанию
    Переходите к
    следующему разделу
    "
    Самоучитель по программированию PIC контроллеров для начинающих"
    http://ikarab.narod.ru E-mail: karabea@lipetsk.ru

    10 2. Что такое микроконтроллер, и
    как он работает
    Прежде всего, микроконтроллер это процессор со всеми его "атрибутами ", плюс встроенная, энергонезависимая память (программ и
    данных
    ), что позволяет отказаться от внешней памяти программ и
    поместить программу в
    его энергонезависимую память
    Это позволяет создавать очень простые (в схемотехническом отношении) и
    компактные устройства, выполняющие, тем не менее, достаточно сложные функции
    Иногда даже диву даешься эта маленькая "штучка " заменяет целую "груду старого железа " Кит д. Любой микроконтроллер, по своим возможностям, конечно же, уступает процессору компьютера, но тем не менее, существует весьма обширный класс устройств, которые преимущественно реализуются именно на микроконтроллерах
    И
    в самом деле, компьютер в
    карман не положишь и
    от батареек его не запитаешь
    Поэтому
    , во многих случаях, микроконтроллерам простонет альтернативы "Сердцем " микроконтроллера является арифметико
    - логическое устройство (АЛУ. Проще всего его представить в
    виде банального калькулятора, кнопками которого управляет программа, написанная на языке ассемблер (то есть, программист. Если вдуматься, то ничего особо сложного, в
    механизме управления такого рода калькулятором, нет
    И
    в самом деле, если нужно, например, сложить числа
    А
    и
    В
    , тов тексте программы сначала задаются константы
    А
    и
    В
    , а
    затем дается команда "сложить ". Программисту вовсе необязательно знать, что происходит с
    нулями и
    единицами
    (разве только только для общего развития, ведь калькулятор он на то и
    калькулятор
    , чтобы избавить пользователя от "возни " с
    машинными кодами и
    прочими "
    неудобоваримостями ".
    Когда
    Вы работаете с
    компьютером
    , Вами ненужно детально знать, что происходит в
    дебрях операционной системы
    Если
    Вы туда "полезете ", то "сума сойдете ", а
    микроконтроллер
    , по своей сути, есть тот же самый компьютер, но только простой
    Программисту только нужно детально знать, каким именно образом "приказать железяке " сделать то, что необходимо для достижения задуманного
    Микроконтроллер можно представить себе как некий универсальный "набор " многофункциональных модулей (блоков, "рычаги управления " которыми находятся в
    руках программиста
    Этих "рычагов " достаточно большое количество, и
    естественно
    , их нужно освоить и
    точно знать, что именно произойдет, если "дернуть " (дать команду на языке ассемблер) за тот или иной "рычаг ". Вот здесь- то уже нужно знать, как "отче наше ", каждую деталь и
    не жалеть на это "узнавание " времени
    Только таким образом пустую "болванку " (
    незапрограммированый
    ПИК
    ) можно "заставить " выполнять какие- то "осмысленные " действия, результат большей части которых можно проверить в
    симуляторе
    MPLAB
    (об этом - позднее, даже не записывая программу в
    ПИК
    Итак
    , необходим переход к "модульному " мышлению
    Любой микроконтроллер можно уподобить детскому конструктору, в
    состав которого входит множество всяких предметов, манипулируя с
    которыми
    , можно получить тот или иной конечный "продукт ". Давайте сними разберемся и "разложим все по полочкам ".
    В
    качестве примера я
    буду использовать один из самых распространенных PIC контроллеров
    PIC16F84A
    Он является как бы "
    проматерью " более сложных
    ПИКов
    , содержит минимальный "набор " модулей и
    как нельзя лучше подходит для первичного "въезда в
    м
    /
    контроллеры ". Энергонезависимая память. Начнем с
    энергонезависимой памяти (память программ и
    память данных. Информация, заложенная в
    энергонезависимую память, сохраняется при выключении питания, и
    поэтому именно в
    нее записывается программа
    То
    "место" энергонезависимой памяти, куда записывается программа, называется памятью программ Объем памяти программ может быть различен
    Для
    PIC16F84A
    , он составляет 1024 слова
    Это означает, что он предназначен для работы с
    программами
    , объем которых не превышает

    11 1024 слов
    Слово памяти программ неравно одному байту (8 бита больше его (14 бит. Отдельная команда, которую
    ПИК
    будет в
    дальнейшем выполнять, занимает одно слово в
    памяти программ
    В
    зависимости от названия этой команды в
    ассемблере
    , слово принимает то или иное числовое значение в
    машинном коде
    После записи в
    ПИК
    "прошивки " программы, слова памяти программ (машинные коды) как бы "превращаются " в
    команды
    , которые располагаются, в
    памяти программ, в
    том же порядке, в
    котором они следуют в
    исходном тексте программы, написанном на языке ассемблер, ив том же порядке им присваиваются адреса, при обращении к
    которым
    , таили иная команда "извлекается " из памяти программ для ее выполнения
    Последовательность же их выполнения определяется логикой программы
    Это означает то, что выполнение команд может происходить не в
    порядке последовательного возрастания их адресов, с
    шагом в
    одну позицию (так называемый инкремента "скачком ". Дело в
    том
    , что только уж самые простейшие программы, в
    пределах одного их полного цикла, обходятся без этих "скачков ", называемых переходами, и
    выполняются строго последовательно
    В
    остальных же случаях, так называемая (мной) "рабочая точка программы " "мечется по тексту программы как угорелая " (как раз благодаря этим самым переходам.
    Термин
    "
    рабочая точка программы - моя "самодеятельность ".
    В
    свое время, я
    был очень сильно удивлен отсутствием чего- то подобного в
    информации
    , связанной с
    объяснением работы программ
    Казалось бы, чего проще, по аналогии, например, с
    рабочей точкой транзистора, сделать более комфортным "въезд в
    механику " работы программ Так нет же, как будто специально, придумываются такие "головокружительные заменители ", причем, в
    различных случаях, разные, что запутаться в
    этом очень просто
    Итак
    , рабочую точку программы можно представить себе в
    виде некоего "шарика от пинг- понга ", который "скачет " по командам текста программы в
    соответствии с
    алгоритмом
    (
    логикой
    ) исполнения программы
    На какую команду "шарик скакнул ", та команда и
    исполняется
    После этого он "перескакивает " на другую команду, она исполняется, и
    т д
    Эти "скачки " происходят непрерывно ив течение всего времени включения питания устройства (исполнения программы. Любая более- менее сложная программа разбивается на части, которые выполняют отдельные функции (своего рода программки в
    программе
    ) и
    которые называются подпрограммами Атрибут любой подпрограммы - функциональная законченность производимых в
    ней действий
    По сути своей, эта "выдумка " введена в
    программирование для удобства реализации принципа "разделяй и
    властвуй ": "врага " ведь гораздо легче "разгромить по частям, чем в
    общей массе ". Да и
    порядка больше
    Безусловные переходы (переходы без условия) между подпрограммами (если они последовательно не переходят одна в
    другую
    ), осуществляются при помощи команд безусловных переходов, в
    которых обязательно указывается адрес команды в
    памяти программ (косвенно - в
    виде названия подпрограммы или метки, на которую нужно перейти
    Существуют также переходы с
    условием
    (условные переходы, то есть, с
    задействованием так называемого стека
    Более подробно о
    переходах я
    расскажу позднее
    Адреса команд определяются счетчиком команд (он называется. То есть, каждому состоянию счетчика команд соответствует одна из команд программы
    Если команда простая, то счетчик просто инкрементируется
    (последовательно выполняется следующая команда, а
    если команда сложная (например, команда перехода или возврата, то счетчик команд изменяет свое состояние "скачком ", активируя соответствующую команду
    Примечание
    : инкремент - увеличение на единицу величины числа, с которым производится эта операция, а декремент - уменьшение на единицу (так называемые комплиментарные операции.
    В
    простейшем случае, то есть в
    случае отсутствия в
    программе переходов, счетчик команд, начиная с
    команды "старта " (нулевой адрес, многократно инкрементируется
    ,

    12 последовательно активизируя все команды в
    памяти программ
    Это означает, что в
    большинстве случаев, за каждый так называемый машинный цикл (такт работы программы для
    ПИКов он равен четырем периодам тактового генератора) работы
    ПИКа
    , происходит исполнение одной команды
    Есть и
    команды исполнение которых происходит за 2 машинных циклам ц, но их меньше
    Команд
    , которые исполняются за 3 м
    ц и
    более нет
    Таким вот образом, на большинстве участков программы (я их называю
    "
    линейными участками, последовательно и
    перебираются адреса в
    памяти программ (команды последовательно исполняются.
    В
    более сложных программах, с
    большим количеством условных и
    безусловных переходов, работу счетчика команд
    PC
    можно охарактеризовать фразой "Фигаро здесь, Фигаро там ".
    1 машинный цикл (м ц) равен 4- м
    периодам тактового генератора
    ПИКа
    Следовательно
    , при использовании кварца на 4
    Мгц
    ., 1 м
    ц
    .=1 мкс
    Выполнение программы, в рабочем режиме (кроме работы в
    режиме пониженного энергопотребления, никогда не останавливается, то есть, за каждый машинный цикл (или за 2, если команда исполняется за 2

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

    SLEEP
    ), который используется в
    работе достаточно специфических устройств
    Например
    , пультов дистанционного управления (и т
    д
    .). Отсюда следует вывод
    :
    программы
    , не использующие режима таких - большинство, для обеспечения непрерывного выполнения команд программы, обязательно должны быть циклическими, то есть, иметь так называемый полный цикл программы, причем, многократно повторяющийся в
    течение всего времени включения питания
    Проще говоря, рабочая точка программы должна непрерывно (не останавливаясь) "мотать кольца " полного цикла программы (непрерывно переходить с
    одного "кольца " на другое. Общие выводы Команды программы "лежат" в памяти программ в
    порядке расположения команд в
    тексте программы. Адреса этих команд находятся в
    счетчике команд PC и каждому адресу соответствует одна из команд программы
    .
    3.
    Команда активируется (исполняется, если в
    счетчике команд находится ее адрес
    .
    4.
    Активация команд происходит либо последовательно (на "линейном " участке программы, либо с
    переходом
    (скачком) на другую команду (при выполнении команд переходов, с
    которой может начинаться как подпрограмма (переход на исполнение подпрограммы, таки группа команд, выделенная меткой (переход на исполнение группы команд, которой не присвоен "статус " подпрограммы. Выполнение команд программы никогда не останавливается
    (
    за исключением режима SLEEP)
    , и поэтому программа должна быть циклической. Если сейчас это непонятно, то ничего страшного. "Просветление " будет позже

    13 Кроме памяти программ, имеет энергонезависимую память данных память данных. Она предназначена для сохранения данных, имеющих место быть на момент выключения питания устройства, в
    целях их использования в
    дальнейшем
    (после следующего включения питания. Также, как и
    память программ, память данных состоит из ячеек, в
    которых "лежат " слова
    Слово памяти данных равно одному байту (8 бит. В, объем памяти данных составляет 64 байта
    Байты
    , хранящиеся в
    памяти данных, предназначены для их считывания в
    стандартные
    8- битные регистры, речь о
    которых пойдет далее
    Данные из этих регистров могут быть записаны в память данных, то есть, может быть организован обмен данными между памятью данных и
    регистрами
    . Например, именно
    EEPROM
    память данных я
    использовал в
    своем частотомере для сохранения последних, перед выключением питания, настроек
    Она же используется и
    для установки значений промежуточной частоты
    Во многих программах, память данных вообще не используется, но это "вещь " исключительно полезная, и
    далее я
    расскажу о
    ней подробнее
    Регистры
    Включите своеобразное мышление
    Предположим
    , что
    Вы купили механический конструктор
    Что
    Вы делаете сначала Изучаете его составные части для того, чтобы прикинуть, куда что можно приспособить, что как можно соединить друг с
    другом
    , какие из нескольких отверстий нужно выбрать, чтобы соединить несколько деталей и
    т д
    Если
    Вы хотите собрать из него нечто, то
    Вы
    , используя результат полученных знаний, вырабатываете определенный план и
    реализуете его
    По сути, тоже самое происходит и
    при работе с
    ПИКами "План " это программа, а "составные части конструктора " есть регистры
    Производя манипуляции с
    регистрами и
    встраивая их в
    программу
    (в замысел, можно реализовать огромное количество различных устройств
    Без детального знания всех элементов этого "ПИК – конструктора ", не может быть и
    речи о
    какой
    - либо эффективной работе по составлению программ
    Уделите этому особое внимание
    В
    ПИКах существуют две группы регистров
    - регистры общего назначения (

    GRP
    )
    - и регистры специального назначения (
    SFR
    ). Эти регистры являются элементами оперативной памяти
    То есть, они сохраняют информацию только при включенном питании
    Все регистры как общего, таки специального назначения, по своему "объему ", являются однобайтными
    Это
    - общий стандарт
    Регистры общего назначения
    Это "вотчина " программиста
    Изначально
    , они похожи на "пустые болванки " и
    толка от них - никакого
    Чтобы этот толк был, необходимо "прописать " регистр в
    программе
    (ввести его в
    эксплуатацию "), ив случаях обращений к
    содержимому этого регистра, произвести, с
    этим содержимым, замысленные программистом действия (тоже самое относится и
    к регистрам специального назначения. Регистры общего назначения используются как однобайтная
    (или многобайтная
    , если для этой цели используются несколько регистров) оперативная память
    В
    основном
    , они используются для того, чтобы сохранить какие- либо числа, с
    целью использования их в
    дальнейшем
    Причем
    , походу исполнения программы, эти числа могут изменяться увеличиваться, уменьшаться, сбрасываться, снова загружаться (как в
    неизменном
    , таки в измененном виде) и
    т д
    В
    ходе выполнения программы, один и
    тот же регистр общего назначения (или группа этих регистров) может использоваться для работы не только с
    одной
    , но и
    с двумя или более функционально независимыми группами числовых данных

    14 Например, водной подпрограмме он может работать как счетчика в другой - как буферная память, нона первых порах, этим пока "не стоит забивать голову ", так как количество регистров общего назначения достаточно велико (дефицита " в
    них нет. Когда, например, говорят, что на регистрах общего назначения
    1   2   3   4   5   6   7   8   9   ...   57


    написать администратору сайта