Типичный вариант реализации микросхемы ППЗУ. Интегрированная среда MPLABIDE разработи программ для PIC-микроконтроллеров, страница 5

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

3.9.  Использование окон просмотра переменных

Чтобы создать окно, выберите пункт меню View > Watch. На экране появится пустое диалоговое окно просмотра переменных, показанное на рис. 6.

Рис. 6. Окно просмотра переменных

С помощью кнопки AddSymbolи расположенного справа от нее раскрывающегося списка можно добавить в окно просмотра символы (имена переменных), используемые в программе. Для помещения в окно переменной Count щелкните по стрелке в правой части этого поля и в раскрывшемся списке выберите переменную Count. Затем щелкните мышью по кнопке AddSymbol.

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

Для удаления переменной из окна просмотра надо ее выделить мышью и нажать клавишу <Delete> или же воспользоваться командой Delete  контекстного меню.

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

Рис.7. Окончательный вид окна просмотра

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

3.10. Точки останова

Симулятор MPLAB SIM имеет возможность останавливать выполнение программы в любом месте. Это делается с помощью точек останова (breakpoints).

Допустим, нас интересует процесс выполнения программы от ее начала (сброса МК) до команды  incfsz  Count,F. Чтобы установить точку останова, подведите стрелку курсора на строку программы

incfsz   Count,F

и щелкните левой кнопкой мыши. Появится мигающая линия, означающая, что данная строка выбрана. Затем щелкните правой кнопкой мыши. В появившемся контексном меню выберите пункт Set Breakpoint (Установить точку останова) и щелкните левой кнопкой мыши. С левой стороны строки программы появится красный кружок с буквой “B”, означающий на установку точки останова.

Примечание. Можно также для установки точки останова просто дважды щелкнуть левой кнопкой мыши на нужной строке программы.

Для отмены точки останова следует выделить нужную строку программы и щелкнуть правой кнопкой мыши. В появившемся контексном меню следует выбрать пункт Remove Breakpoint (Убрать точку останова) и щелкнуть левой кнопкой мыши.

Можно также для установки или удаления точки останова просто дважды щелкнуть левой кнопкой мыши на выбранной строке текста программы.

Задание 1. Установите, а затем удалите точки останова в произвольных местах программы с использованием обоих способов. Оставьте точку останова только на строке  incfsz  Count,F.

Для проверки работы программы сделайте сброс микроконтроллера, а затем выполните прогон программы в автоматическом режиме. Выполнение программы остановится на строке   incfsz    Count,F.

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

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