list p=16f84a
#include<p16f84a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
Count equ 0x0C ; счетчик ячеек массива памяти данных
Numder equ 0x0F ; количество ячеек
Base equ 0x10 ; начальный адрес массива
Const1 equ 0x01 ; значение константы 1
Const2 equ 0x08 ; значение константы 2
Const3 equ 0x0A ; значение константы 3
org 0x000
begin
movlw Number
movwf Count ; загрузить в счетчик количество ячеек
movlw Base
movwf FSR ; загрузить в регистр FSR начальный адрес
; массива
movlw Const1 ; загрузить в регистр W константу Const1
call fill_reg ; вызов подпрограммы fill_reg
movlw Numder
movwf Count ; загрузить в счетчик количество ячеек
movlw Base
movwf FSR ; загрузить в регистр FSR начальный адрес
; массива
movlw Const2 ; загрузить в регистр W константу Const2
call fill_reg ; вызов подпрограммы fill_reg
movlw Number
movwf Count ; загрузить в счетчик количество ячеек
movlw Base
movwf FSR ; загрузить в регистр FSR начальный адрес
; массива
movlw Const3 ; загрузить в регистр W константу Const3
call fill_reg ; вызов подпрограммы fill_reg
goto begin ; идти на начало программы
fill_reg ; подпрограмма заполнения ячеек памяти
; данных константой
movwf INDF ; пересылка содержимого рабочего регистра W
; в ячейку памяти данных, адрес которой находится в регистре FSR
incf FSR,F ; инкремент регистра FSR
decfsz Count,F ; декремент регистра COUNT и проверка на нуль
goto fill_reg ; цикл, если не нуль
return ; возврат из подпрограммы
end ; конец текста программы
Задание 1. В открытом окне MPLAB IDE создайте новый файл и занесите в него текст рассмотренной программы. Сохраните файл в вашей папке под именем fill.asm. Выполните компиляцию полученного файла, затем выберите симулятор MPLAB SIM. Откройте окно File Registers. Затем произведите сброс микроконтроллера.
Отладку подобных программ удобно выполнять с использованием трех вариантов пошагового режима:
1) режим Step Into, в котором исполняется одна команда программы, в том числе и команды подпрограммы. После каждого шага все окна обновляются;
2) режим Step Out, в котором производится ускоренное завершение выполнения подпрограммы и останов на команде, следующей за командой вызова call. В окнах будут результаты выполнения подпрограммы;
3) режим Step Over, в котором исполняются только команды основной программы без захода в подпрограммы. Если очередная команда будет вызовом call, то выполняется ускоренное выполнение подпрограммы и останов на команде, следующей за call. В окнах будут результаты выполнения подпрограммы.
Сначала проверьте работу программы в режиме Step Into. Сделайте около 10 шагов с заходом в подпрограмму. По изменению содержимого ячеек, начиная с адреса 0x10, убедитесь в правильности работы.
Затем сделайте шаг в режиме Step Out. Убедитесь, что произошел останов выполнения программы на команде movlw Number, во всех ячейках с адресами 0x10 – 0x1F появились значения 0x01, т.е. подпрограмма fill_reg полностью выполнена. Дальнейшее продвижение по программе в режиме Step Out невозможно, так как он выполняется только внутри подпрограммы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.