С помощью пункта меню View >Watch создайте окно просмотра и занесите в него переменные Count и Sum.
Выполните сброс микроконтроллера.
Сначала проверьте работу программы в режиме Step Into. Сделайте около 10 шагов с заходом в подпрограмму delay. По изменению содержимого регистра Count, убедитесь в правильности работы.
Затем сделайте шаг в режиме Step Out. Убедитесь, что произошел останов выполнения программы на команде goto again, а содержимое регистра-счетчика Count стало равным нулю, т.е. подпрограмма delay полностью выполнена. Дальнейшее продвижение по программе в режиме Step Out невозможно, так как он выполняется только внутри подпрограммы.
Продолжите проверку программы в режиме Step Over. До команды вызова подпрограммы call delay он выполняется аналогично режиму Step Into. Однако после выполнения команды call delay программа остановится на команде goto again, а содержимое регистра Count вновь станет равным нулю. Таким образом, произошло ускоренное выполнение подпрограммы задержки delay в течение одного шага. Продолжите проверку работы программы в режиме Step Over, сделав несколько шагов и наблюдая за изменением содержимого регистра-накопителя Sum.
Теперь протестируйте программу в режиме Animate. По содержимому регистров Sum и Count убедитесь в правильности ее работы.
И, наконец, выполните программу в автоматическом режиме Run. Убедитесь, что в этом режиме содержимое окна просмотра Watch не обновляется. Остановите выполнение программы. Зеленая стрелка укажет на точку останова работы программы, в окно Watch обновится.
Сделайте выводы об удобстве режимов Step Out и Step Over при отладке подпрограмм. Представьте себе, что подпрограмма содержала бы несколько сотен циклов!
3.13. Моделирование сигналов на входах портов микроконтроллера
Симулятор MPLAB SIM предоставляет возможность моделировать состояние портов ввода или записывать значения непосредственно в регистры. Это выполняется с помощью стимулов. Существует четыре вида стимулов:
• асинхронный стимул– непосредственное управление состоянием портов ввода;
• файл состояния порта ввода– текстовый файл, описывающий состояние порта ввода;
• файл стимула регистра– текстовый файл, содержащий 8-разрядное значение регистра;
• стимул тактового сигнала– регулярный, программируемый, периодический источник тактового сигнала.
Рассмотрим использование асинхронных стимулов на примере программы wait, которая ожидает появления на 0-м выводе порта A, настроенного на ввод, определенных уровней сигналов.
С помощью пункта меню File > Newоткройте окно редактора и запишите текст программы.
;***************************************************************
; wait – программа ожидания определенных уровней сигналов на входе
; порта RA0
;***************************************************************
list p=16f84a
#include<p16f84a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _WDTE_ON & _HS_OSC
org 0x000
begin clrw ; очистить рабочий регистр W
wait1
btfsc PORTA,0 ; проверить 0-й вывод порта А на нуль
goto wait1 ; идти на метку wait1, если RA0 ≠ 0
movlw 0xFF ; записать код FFh в регистр W
wait2
btfss POTRA,0 ; проверить 0-й вывод порта А на единицу
goto wait2 ; идти на метку wait2, если RA0 ≠ 1
goto begin ; идти на начало программы
end ; конец текста программы
С помощью пункта меню File > SaveAs... сохраните файл с именем wait.asm в вашей папке. Выполните компиляцию файла с помощью пункта меню Project > Quickbuildwait.asm и убедитесь в ее правильности. С помощью пункта меню Debugger > SelectTool > MPLABSIM выберите симулятор для проверки работы программы.
Затем создайте окно для просмотра переменных и введите в него имя порта PORTA с отображением его содержимого в двоичном формате. Введите также имя рабочего регистра W, который в MPLAB IDE именуется как WREG.
Для моделирования входного сигнала будем использовать асинхронный стимул. При этом с помощью нажатия кнопки в диалоговом окне асинхронного стимула можно менять логические уровни (0 или 1) на выводах портов микроконтроллера. Состояния выводов можно менять посредством опций:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.