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

Теперь проверим правильность выхода из цикла  loop. Для этого поставим точку останова на строке  goto  start,  а точку останова на строке  incfsz  Count,F  удалим. Проверим работу программы в режиме  Animate. По изменению содержимого регистра  Count в окне просмотра убеждаемся в корректности работы программы. Для ускорения проверки переключимся в режим прогона  Run. Выполнение программы остановится на строке  goto  start. Значение переменной  Count будет равно нулю, что подтверждает правильность выполнения условия выхода из цикла  loop. Содержимое регистра  STATUS  при этом не изменилось, т.е. флаг  Z – признак нулевого результата остался сброшенным. Это тоже правильно, так как команда  incfsz  не влияет на флаги микроконтроллера.

3.11. Окно секундомера

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

Допустим, что нас интересует время выполнения программы из  рассматриваемого примера от момента сброса микроконтроллера до момента окончания цикла  loop. С этой целью произведите сброс МК и установите точку останова на строке  goto  start. Используя пункт меню  Debugger > StopWatch, откройте окно секундомера. Затем запустите программу в режиме Run. После останова программы окно секундомера примет вид, приведенный на рис. 8.    

Рис. 8. Окно секундомера после останова программы

При тактовой частоте работы МК, установленной 20 МГц по умолчанию, время выполнения данного участка программы будет равно  148,8  мкс, а количество машинных циклов - 744. Изменить тактовую частоту МК можно с помощью пункта меню Debugger > Settings, выбрав вкладку Osc/Trace.

Задание. Установите тактовую частоту работы МК равной 4 МГц и определите время выполнения программы.

3.12. Отладка подпрограмм

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

1)  режим Step Into, в котором исполняется одна команда программы, в том числе и команды подпрограммы. После каждого шага все окна обновляются;

2)  режим Step Out, в котором производится ускоренное завершение выполнения подпрограммы и останов на команде, следующей за командой вызова  call. В окнах будут результаты выполнения подпрограммы;

3)  режим Step Over, в котором исполняются только команды основной программы без захода в подпрограммы. Если очередная команда будет вызовом  call, то выполняется ускоренное выполнение подпрограммы и останов на команде, следующей за  call. В окнах будут результаты выполнения подпрограммы.

      Задание 1. В открытом окне MPLAB IDE создайте новый файл и занесите в него текст программы incr, которая выполняет бесконечный цикл увеличения на 1 (инкремента) содержимого регистра Sum. Инкремент производится через определенное время, задаваемое подпрограммой задержки delay.

;****************************************************************

; incr – программа инкрементирования содержимого регистра Sum

;******************************************************************

list p=16f84a

#include<p16f84a.inc>

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

Count  equ  0x0C        ; регистр-счетчик циклов

Sum     equ  0x10        ; регистр-накопитель суммы

org  0x000

begin    clrf  Sum         ; очистить регистр Sum

again    incf  Sum,F     ; инкремент содержимого регистра Sum

call   delay       ; вызов подпрограммы delay

goto  again       ; бесконечный цикл инкремента регистра Sum

delay                            ; подпрограмма временной задержки

movlw  .100

movwf  Count    ; загрузить в регистр Count число повторений 100

loop     decfsz   Count,F ; декремент Count и проверка его на нуль

goto   loop          ; переход на метку loop, если не нуль

return                 ; возврат из подпрограммы

end                     ; конец текста программы

Сохраните файл в вашей папке под именем incr.asm. Выполните компиляцию полученного файла с помощью пункта меню Project > Quickbuildincr.asm и убедитесь в ее правильности. Затем подключите симулятор MPLAB SIM с помощью пункта меню Debugger > SelectTool > MPLABSIM .