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

  • Start : 65 Щелкните еще разВыделится строка следующей команды ит дАтеперь пощелкайте последам (или понажимайте кнопкуF7

  • Pause_2 Если работа происходит впошаговом режиме, то для того чтобы "добраться " доППPause_2

  • Pause_2 в пошаговом режимеЕсли после этого необходимо перейти котладке, например, ППPause_1

  • MPLAB ,щелкните по слову, азатем, ввыпадающем списке, по строке All Points

  • MPLAB ,щёлкните по слову, азатем по строке Откроется окно Point Settings

  • Break Point Settings

  • Debug

  • Remove

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

  • MPLAB ,щёлкнуть по слову, азатем, ввыпадающем списке, по строке Stopwatch

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


    Скачать 3.49 Mb.
    НазваниеСистема команд pic16F84A 26 Что такое программа иправила ее составленияПример создания программы автоколебательного мультивибратораДирективы.
    АнкорСамоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008).pdf
    Дата30.01.2017
    Размер3.49 Mb.
    Формат файлаpdf
    Имя файлаСамоучитель по программированию PIC контроллеров для начинающих .pdf
    ТипПрограмма
    #1195
    КатегорияПромышленность. Энергетика
    страница12 из 57
    1   ...   8   9   10   11   12   13   14   15   ...   57
    "
    капитально
    " разобраться с
    последствиями выполнения тех или иных команд (или всех команд) выбранного "сектора обстрела" (участка программы
    ).
    Автоматический режим исполнения программы применяется для выхода на начало этого "сектора, с быстрым, но неконтролируемым результатом исполнения всех предшествующих команд программы, а также для определения временных характеристик программы (при помощи секундомера
    Об этом - ниже. Слово "быстрое " означает то, что команды выполняются быстро (скорость их выполнения определяется быстродействием
    Вашего компьютера, но при этом, невозможно визуально отследить текущие изменения содержимого регистров и
    порядок исполнения команд
    Эти "дела делаются " в
    пошаговом режиме, не спеша и
    основательно
    Для того чтобы задать границы, в
    пределах которых программа исполняется в "автомате " отчего и
    до чего, нужно назначить так называемые точки остановки
    Точкой остановки считается, помеченная программистом, строка текста программы, содержащая команду, название подпрограммы, метку
    Как только "дело доходит " до исполнения команды помеченной строки, автоматическое исполнение программы прекращается (остановка. Теория теорией, но лучше поближе к
    практике
    Начну с
    пошагового режима
    Орган управления - кнопка пошагового исполнения программы, с нарисованными на ней следами (третья слева) или кнопка
    F7
    клавиатуры
    . Итак, после нажатия на кнопку сброса, рабочая точка программы установилась на начало программы (
    goto Start
    ). Один раз щелкните по кнопке пошагового исполнения программы
    В
    соответствии с
    исполненной командой произойдет переход на начало
    ПП
    Start
    :

    65 Щелкните еще раз
    Выделится строка следующей команды и
    т д
    А
    теперь пощелкайте последам (или понажимайте кнопку
    F7
    клавиатуры
    , что одно и
    то же) от души ". Вы увидите порядок исполнения программы
    По ходу работы, Вы можете надолго задуматься над "вскрывшимися обстоятельствами " и
    никто
    Вас подгонять не будет
    Думайте хоть целый день
    В
    любой момент, Вы можете остановить
    /
    продолжить исполнение программы или нажать на кнопку сброса и
    снова начать пошаговое исполнение программы
    Хоть сто раз подряд
    Вы
    – "полный хозяин и
    диктуете свои условия ". Пока "
    вживитесь в
    механизм " пошагового исполнения программы, ас деталями того, что при этом будет происходить, разберемся позднее
    В
    процессе этого "вживления " (лучше "вживления ", чем "вживания "), у
    Вас
    , естественно, возникнут вопросы, ответы на которые я
    постараюсь дать
    Автоматический режим исполнения программы
    Прежде чем работать в
    автоматическом режиме (в "автомате "), необходимо назначить точку
    (
    точки
    ) остановки
    Если этого не сделать, то программа будет исполняться "вечно " (
    симулятор "зависнет ", то есть, остановки не будет.
    В
    простейшем случаев основном, таки делается, точку остановки можно назначить прямо в
    тексте программы (в текстовом редакторе. Делается это так щёлкните правой кнопкой мыши по строке подпрограммы, например, с
    командой
    decfsz Sec,F можно щёлкнуть по самой команде, можно по названию подпрограммы, а
    можно и
    по пустому месту, короче, в
    любом месте выбранной строки, до точки с
    запятой
    ). Появится окно со списком из четырех позиций Далее, левой кнопкой мыши, щёлкаете по самой верхней строке в
    этом списке (
    Break Point(s)
    – назначение точки остановки.

    66 Список "исчезнет ", и
    все что находится в
    этой строке, выделится красным цветом
    ("
    индикатор " точки остановки.
    Всё
    Точка остановки выставлена, и
    Вы с
    комфортом можете ее наблюдать в
    тексте программы
    Сбросьте программу на начало (см выше) и
    для того, чтобы запустить режим автоматического исполнения программы (берите на заметку, щёлкните по кнопке с
    зеленым светофором Запуск "автомата " можно произвести, если нажать на кнопку
    F9
    клавиатуры
    На время отработки "автомата ", самая нижняя строка окна (в ее начале стоит Ln...) окрашивается в
    желтый цвет
    В
    данном случае, исполнение программы происходит так быстро, что момент окрашивания можно и
    не заметить (быстро промелькнет. Учтите это
    Вообще же, эта желтая полоса является, как бы, индикатором рабочего процесса автоматического исполнения программы в
    симуляторе
    , и
    по ней можно судить, "зависла " ли программа (желтое выделение долго не снимается) или нет
    В
    нашем случае, "зависания " нет, и
    программа
    , в
    симуляторе
    , будет исполнена с
    ее начала и
    до назначенной точки остановки, что и
    наблюдается
    То есть, рабочая точка программы остановилась на ранее указанной команде (на точке остановки. Потренируйтесь

    67 Несколько раз сбросьте и
    запустите автоматическое исполнение программы
    Зачем этот "автомат " нужен
    В
    чем преимущества Предположим, из всей программы, на данном этапе отладки, необходимо произвести отладку подпрограммы
    Pause_2_Если_работа_происходит_впошаговом_режиме,_то_для_того_чтобы_"добраться_"_доППPause_2'>Pause_2
    Если работа происходит в
    пошаговом режиме, то для того чтобы "добраться " до
    ПП
    Pause_2
    , придется много раз щёлкать по кнопке (или нажимать на клавишу, что, согласитесь со мной, не совсем удобно
    В
    "автомате ", это делается гораздо быстрее
    Вот
    Вам и
    ответ
    Еще раз напоминаю, что в "автомате ", программист не имеет возможности контролировать содержимое регистров
    Эти "дела " делаются при пошаговом исполнении программы
    Далее
    , можно капитально "
    просканировать " работу
    ПП
    Pause_2
    в пошаговом режиме
    Если после этого необходимо перейти к
    отладке
    , например,
    ПП
    Pause_1
    , то нужно снять (или не снимать, если она потребуется в
    дальнейшем
    ) "старую " точку остановки и
    назначить "новую ". Снятие точки остановки.

    В
    главном меню
    MPLAB_,щелкните_по_слову,_азатем,_ввыпадающем_списке,_по_строке_All_Points'>MPLAB,
    щелкните по слову, а
    затем
    , в
    выпадающем списке, по строке All Points

    (снять все точки остановки Появится окно с
    вопросом
    : Вы действительно хотите удалить все точки остановки Щелкайте по
    Да
    После этого, со всех точек остановок снимается выделение красным цветом (точек остановок нет. Еще один способ установки точек остановки
    В
    главном меню
    MPLAB,
    щёлкните по слову, а
    затем по строке Откроется окно Point Settings

    В
    списке этого окна, Вы увидите содержимое первого столбца текста программы, с
    которой происходит работа
    Этот способ установки точек остановки удобен тем, что можно заранее указать, на какой из подпрограмм или меток нужно остановиться, а
    затем включать или выключать те или иные точки остановки по своему усмотрению
    Но в
    этом случаев отличие от описанного выше способа, нельзя выставить точку остановки на строке программы, не содержащей названия подпрограммы или метки
    В
    окне
    Break Point Settings
    , щёлкните по кнопке окошка
    Start
    Выпадет список
    Щелкните
    , например, по строке
    Pause_1
    Название
    Pause_1
    "ушло " в
    окошко
    То же самое проделайте и
    с окошком
    End
    Щелкните по кнопке
    Add
    В
    большом списке окна Point появится строка с
    галочкой
    Если галочка установлена, то точка остановки активна, если не установлена, то пассивна

    68 Включение и
    выключение происходит при щелчке по квадратику с
    галочкой
    При снятии точек остановки (
    Debug
    Clear All Points
    ), снимается только галочка
    Чтобы
    , после этого, снова установить точку (точки) остановки, необходимо открыть окно Point Settings
    (см выше) и
    установить в
    нем галочку (галочки. Для того чтобы удалить строку сточкой остановки из большого списка, необходимо ее выделить, а
    затем щелкнуть по кнопке
    Remove
    Большой список может содержать несколько точек остановок (вплоть до суммарного количества подпрограмм и
    меток
    ). Кнопка с
    красным светофором (или клавиша
    F5
    клавиатуры
    Она ее дублирует) необходима для ручной остановки "автомата ", и
    соответственно
    , пользоваться ей можно только в "автомате ". Если программа не работает так, как нужно, "зависнув " внутри какой- нибудь подпрограммы
    (
    желтое выделение долго не снимается, то несколько раз остановив и
    запустив "автомат ", можно достаточно точно определить, на каком именно участке программы произошло "зависание ". При работе в "автомате ", если точек остановок не назначено, тов симуляторе "зависнет " любая программа
    Можете это проверить на практике, используя программу
    Multi.asm
    Работоспособная программа (или подпрограмма) может "зависнуть " в
    симуляторе
    , если ее исполнение зависит от каких- то внешних (по отношению к
    микроконтроллеру
    ) сигналов, а
    в симуляторе
    , эти сигналы, походу исполнения программы (или подпрограммы, не сымитированы
    Такого рода имитация (и это может) - предмет отдельного разговора, а
    пока просто примите сказанное к
    сведению
    Секундомер
    . Вспомните, как подсчитывалось время отработки задержки в
    программе
    Multi.asm
    С
    учетом простоты этой программы, подобные расчеты, конечно же, можно произвести и
    на бумаге
    А
    если подпрограмма задержки имеет в
    своем составе "массивные врезки "?
    В
    этом случае, можно просто "утонуть " в
    громоздких и
    сложных расчетах
    Так как
    MPLAB
    для того и
    создана
    , чтобы облегчить труд программиста, в
    своем составе, она имеет специальную утилиту, которая называется "секундомером ". Входе исполнения программы в
    симуляторе
    (в любом режиме, секундомер считает не только количество машинных циклов, но и
    время
    В
    любой момент, программист может сбросить показания секундомера на ноль и
    начать новый отсчет времени
    Для вызова окна секундомера, нужно, в
    главном меню
    MPLAB,
    щёлкнуть по слову, а
    затем
    , в
    выпадающем списке, по строке
    Stopwatch
    Откроется окно
    Stopwatch
    Это и
    есть секундомер
    В
    нем
    Вы увидите установленную ранее частоту кварца, кнопку (сброс секундомера на ноль) и
    квадратик с
    надписью
    Clear On Reset
    , в
    котором можно либо поставить, либо не поставить галочку

    69 Если галочка установлена, то при переходе на начало программы (сбросе программы, секундомер будет автоматически сбрасываться в
    ноль
    , а
    если не установлена, то такого сброса не будет
    Лично у
    меня
    , она установлена, что советую и
    Вам
    Сбросьте программу
    Multi.asm
    на начало
    Несколько раз пощёлкайте по кнопке со следами ног (или понажимайте клавишу, и
    Вы увидите, что секундомер подсчитывает количество машинных циклов исполнения программы и
    переводит их в
    микросекунды
    Примечание
    :
    обозначение микросекунды выглядит как
    us
    потому
    , что в
    английском алфавите нет буквы "мю " (эта буква - греческая, а
    английская буква
    u
    наиболее к
    ней близка по написанию
    Секундомер "все посчитает в
    лучшем виде ", с
    учетом самых сложных "кульбитов ", которые "проделывает " рабочая точка программы
    В
    конечном итоге, он выдаст точный результат подсчета времени исполнения команд на том участке программы, на котором
    Вы работаете
    Практический вывод из этого следующий если программисту необходимо подобрать значение константы (констант) для формирования какого- то калиброванного интервала времени, то ему вовсе необязательно скрупулезно подсчитывать на бумаге количество машинных циклов исполнения команда достаточно "грубой прикидки ". Доводка до нормы " производится путем изменения, в
    небольших пределах, значения константы (константа если этого недостаточно, то и
    установкой того или иного количества
    NOP
    ов
    , с
    постоянным контролем результатов этих изменений по секундомеру, дополучения нужного результата
    Сам по себе, этот процесс довольно- таки несложен (нужно только "руку набить "). Таким немудрёным образом, можно, с
    минимальными трудозатратами
    , отстроить временные характеристики даже очень "навороченных " программ
    Если имеется "чужая " программа и
    Вам необходимо внести свои коррективы в
    ее временные характеристики, то это тоже делается при помощи секундомера
    И
    т д
    Вариаций много
    Естественно
    , что в
    таких случаях, без "автомата " не обойтись
    На практике, результат применения такого метода проб и
    ошибок
    (с использованием секундомера, часто оказывается гораздо более эффективным, чем точные вычисления на бумаге, но "сбрасывать их со счетов " ненужно Видеале, нужен комплексный подход
    "
    Самоучитель по программированию PIC контроллеров для начинающих"

    http://ikarab.narod.ru E-mail: karabea@lipetsk.ru

    70 6. Что дальше То, что
    Вы узнали (а я
    надеюсь
    , что и
    усвоили
    ), изучая предыдущие разделы, есть основа "прожиточного минимума " программиста
    ПИКов
    , необходимая для того, чтобы иметь первичное представление о
    том
    , "с какого бока подойти к
    этой корове и
    за что ее дергать, чтобы она дала молоко ".
    В
    соответствии с
    ранее сформулированной тактикой обучения, я "оставил за скобками " то, без чего, на первых порах, можно обойтись
    В
    дальнейшем это будет наверстано
    Если
    Вы хорошо потрудились, ток настоящему времени, у
    Вас должна сложиться более - менее целостная картина предмета обучения
    Хотя бы в
    общем виде
    В
    настоящее время, Ваши знания в
    области программирования
    ПИКов
    , вернее всего, технологичны и
    представляют собой набор достаточно разобщенных сведений
    Это вполне естественно и
    нормально
    Поздравляю
    Вас с
    преодолением самой нудной и
    не слишком интересной части работы
    (
    естественно
    , при условии, что
    Вы хорошо потрудились. На данный момент, имеется все необходимое для перехода к "плотной " работе с
    текстами программ, успешное завершение которой будет способствовать "превращению " разобщенного в
    единое целое
    В
    этом отношении, ничего лучшего, чем пример поэтапной разработки конкретного устройства на
    ПИКе
    , не существует
    В
    конечном итоге, я, на
    Ваших глазах, поэтапно "разложу на молекулы " весь процесс конструирования достаточно сложного и "серьезного " устройства
    Причем
    , это будет сделано нестандартно
    Обычно
    , конструкторы публикуют конечный, "отлакированный " результат своего труда, но при этом теряется информация о "кухне " конструирования
    А
    ведь именно это и
    есть самое важное в
    процессе конструирования
    !!!
    Мало того, я
    сознательно усложняю (для себя) задачу
    А
    именно
    , устройство будет создано на базе достаточно сложного, современного, электронного компонента, принцип работы которого изначально неизвестен Проще говоря, я
    поэтапно и
    с детальным объяснением всех "телодвижений ", постараюсь провести
    Вас по всей "цепочке ", от возникновения идеи и
    до ее практической реализации
    Подобного рода информация является исключительной редкостью по той причине, что существуют весьма значительные трудности, связанные с
    ее "извлечением из глубин " сознания и
    подсознания
    , и
    с "удобоваримым переносом этой информации на бумагу ". Тем не менее, на свой страхи риск, я
    проделаю эту работу в
    надежде на то, что "мой скорбный труд " реально поможет людям, для которых конструирование электронных устройств является либо любимым занятием, либо жизненноважной необходимостью, либо и
    тем
    , и
    другим
    При выборе "предметов объяснения ", передо мной встала сложная задача каким образом сделать так, чтобы "угодить " как можно большему количеству людей Ведь электроника многообразна одному нужно одно, а
    другому другое, и
    описать всё
    и вся невозможно по определению
    Я
    исхожу из того, что существуют устройства, которые совмещают в
    себе разнообразные базовые функции, и
    если на примере одного из таких устройств, подробно объяснить, как эти базовые функции реализуются на практике, тов процессе конструирования, такого рода знания могут быть использованы для решения широчайшего класса задач
    В
    качестве такого устройства я
    выбрал
    3- х
    диапазонный частотомер с
    функцией цифровой шкалы
    Может быть, кого- то из
    Вас и
    не устроит такой выбор, но суть предлагаемого состоит совсем не в
    этом конкретном выборе (можно выбрать и
    что
    - то другое, а
    в том, что походу объяснений, будут формулироваться общие принципы организации тех или иных процедур, с
    дальнейшим их "разложением на молекулы ". Все это будет "привязано " к
    последовательному и
    логически мотивированному объяснению работы конкретного устройства, которое, в
    конечном итоге, Вы самостоятельно сможете изготовить
    На мой взгляд, это самый эффективный способ достижения поставленной цели "Въезд " в
    конструирование устройств нам контроллерах представляет собой непрерывную цепочку последовательных действий, разрывать которую не рекомендуется (получите

    71 штрафные круги ", как в
    биатлоне
    ). Можете это рассматривать как мой призыв к
    Вашему здравомыслию и
    прагматизму "Лезть на
    Эверест " без специальной подготовки (прыгать через две ступеньки ") не стОит
    , так как ничего хорошего из этого не выйдет
    Сначала нужно получить "базовые " знания и
    навыки
    , а
    только после этого "выходить на "охоту в
    страну непуганых зверей ", а
    то ведь "задерут как пить дать " (звери " там серьезные и
    совсем без чувства сострадания и
    юмора
    ). Понимаю, что это и
    трудно
    , и
    хлопотно
    , и
    терпения нужен "целый вагон ", но это и
    есть самый короткий и
    эффективный путь
    Более эффективного варианта "въезда " просто не существует (Вы уж поверьте человеку, которого собственная бестолковость многократно "водила носом по батарее "). Надеюсь, что я
    Вас убедил
    Так что, давайте создавать "базу ". Начинаем "вгрызаться " в
    то
    , что имеем
    Для начала, я
    объясню
    Вам детали процесса конструирования какого- нибудь простого устройства
    Если
    Вы думаете, что далее последует что- то типа "сверления зуба ", то
    Вы ошибаетесь и
    будете приятно удивлены тем, что речь пойдет не о "страшном и
    ужасном ". Из личного опыта При "въезде " в
    м
    /
    процессорную технику, намой взгляд, существует некая, достаточно четкая, граница " (сужу по своим ощущениям. До нее "каша в
    мозгах
    , шизофрения, битье головой о
    стену " и
    прочие гадости
    После нее что- то типа "просветления "нирваны " ("
    всё
    становится на свои места ").
    В
    том смысле, что происходит "чудесный въезд " в "глобальную " стратегию конструирования устройств нам контроллерах человек начинает понимать истинный смысли предназначение того, что раньше было "темным лесом ", и
    самое главное, приобретает способность свободно манипулировать этим "оружием " в
    своих целях
    Остальное
    (тактика, как говорится, дело наживное
    Все это можно отнести к "проделкам " подсознания, но ведь "эти проделки на голом месте не рождаются и
    с неба не падают ". Чтобы подсознание преподнесло человеку такой приятный "сюрприз ", нужно хорошенько поработать со своим сознанием, и
    не примитивно, как отличник, которому нужно заработать пятерки для получения золотой медали, а
    живя этим занятием
    Лично у
    меня
    , критерий "включения " подсознания такой если снится работа над программой
    (
    не важно какая, пусть даже самая идиотская, значит все в
    полном порядке
    У
    разных людей по- разному, но так или иначе, то что я
    назвал "границей ", реально существует
    Желаю
    Вам ее "перейти ". Самоучитель по программированию PIC контроллеров для начинающих"
    1   ...   8   9   10   11   12   13   14   15   ...   57


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