Порядок проведения лабораторной работы. 1. Создайте новый проект и введите программу, листинг которой представлен на рисунке 3.13

1. Создайте новый проект и введите программу, листинг которой представлен на рисунке 3.13.

2. Проанализируйте комментарии к программе.

3. Откомпилируйте проект и перейдите к режиму симуляции.

4. Откройте окна регистров специальных функций и ОЗУ данных.

5. Выполняя в пошаговом режиме (F7) проанализируйте содержимое регистров STATUS, FSR и ячеек памяти с 20h по 31h.

6. Дополните программу таким образом, чтобы после заполнения константой, программа очищала заполненную область.
#include P16F877.inc

 

;******************* Программа ZAPOLN *********************************

; Заполнение константой (0FFh) 32-х ячеек памяти данных с адреса 21h

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

TMP equ 20h ; Адрес временного регистра

; с символическим именем TMP

MASKA equ 0ffh ; значение константы

 

org 0x00 ; адрес начала программы

goto START ; переход на метку START

org 0x06 ; адрес размещения основной программы

 

START:

bcf STATUS,RP0 ; установить 0-й банк ОЗУ

bcf STATUS,RP1 ;

movlw 21h ; w = 21h, начальный адрес массива

movwf FSR ; FSR = w, содержмое регистра косвенной адресации

movlw 20h ; w = 20h

movwf TMP ; TMP = w, количество ячеек ОЗУ подлежащих очистке

NEXT:

movlw MASKA ; w = 0FFh(MASKA)

movwf INDF ; @FSR = w = FFh,

incf FSR,F ; FSR = FSR+1

decfsz TMP,F ; TMP = TMP-1

goto NEXT ; переход на метку NEXT, если TMP>0

; выход из цикла при TMP=0

end

Рисунок 3.13

Примечание:

1. Для предотвращения синтаксической ошибки при компиляции, все шестнадцатеричные числа в формате: FFh, ABh, DDh, и т.д необходимо дополнять впереди нулём. Корректными являются следующие записи: 4Fh и 0ABh. Для остальных форм записи ограничений не существует: 0xFF или h’FF’.

 

2. Указатель размещения результата в команде: incf FSR,1, подразумевает размещение результата в регистре FSR, а в команде: incf FSR,0 размещение результата в аккумуляторе W. Те же результаты показывают команды, использующие символические имена приёмников: incf FSR,F и incf FSR,W.

 

3. При повторном запуске программы меняйте значение константы MASKA для замены значений ячеек памяти данных с адреса 21h по адрес 41h.

 

4. Пример программы приведён: LAB-Элат \ Lab_Digital \ Mps_2\ Примеры \ zapoln.asm


Контрольные вопросы

 

1. Какой командой можно проверить содержимое аккумулятора W на предмет равенства его нулю?

 

2. Какие выводы и какого порта направлены на вход, а какие на выход после выполнения фрагмента программы:

DAT equ 0x78

bsf STATUS, 5

bcf STATUS, RP1

movlw DAT

movwf TRISB

 

3. Оцените содержимое аккумулятора:

clrw

movwf TMP

comf TMP,W

 

4. Оцените конечный адрес и содержимое массива данных после выполнения программы:

START: movlw 21h

movwf FSR

movlw 5fh

movwf TMP

clrf INDF

incf FSR,F

decfsz TMP,F

goto $-3

end


3.4 Лабораторная работа № 4
«ИЗУЧЕНИЕ КОМАНД АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ»

 

 

Цель работы

Изучить команды арифметических операций, используемых в микроконтроллере, работу с банками данных, назначение регистров специального назначения, процесс создания окон с переменными.

Краткие сведения

Данная группа команд состоит из 6 команд, позволяющих производить операции сложения и вычитания над целыми 8-ми битными числами. Местом назначения результата арифметической операции может служить как аккумулятор с регистром, так и только аккумулятор, в случае операций с константой.

 

Таблица 3.6 Группа командарифметических операций

 

Мнемокод Описание Флаги
ADDWF f, d Сложение W и f C,DC,Z
ADDWF f, W (f) + (W) ® (W)  
ADDWF f, F (f) + (W) ® (f)  
ADDLW k Сложить константу с W C,DC,Z
    (W) + (k) ® (W)  
DECF f, d Вычесть 1 из f Z
DECF f, W (f) - 1 ® (W)  
DECF f, F (f) – 1 ® (f)  
INCF f, d Прибавить 1 к f Z
INCF f, W (f) + 1 ® (W)  
INCF f, F (f) + 1 ® (f)  
SUBWF f, d Вычесть W из f C,DC,Z
SUBWF f, W (f) - (W) ® (W)  
SUBWF f, F (f) - (W) ® (f)  
SUBLW k Вычесть W из константы C,DC,Z
    k - (W) ® (W)  


Принципиально важно, что команды сложения и вычитания воздействуют на флаг переноса «С»(STATUS<0>),акоманды инкремента и декремента не воздействуют на флаг переноса «С».

Содержание лабораторной работы

Составить программу, в которой присутствует 4 переменные: a1, a2, a3, itog1. В соответствии, со своим вариантом, по данным таблицы 3.7, составить программу. Переменные заданы в десятичных числах, перед составлением программы переведите их в шестнадцатеричную систему. Итоговые значения сохранять в переменной itog1.