Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1 Mб
Скачать

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

  1. Какие информационные поля может содержать программа, написанная на языке ассемблера? Каков их порядок? Какие из них являются необязательными?

  2. В чем заключается отличие директивы от команды микроконтроллера?

  3. Можно ли осуществить установку данных в регистр памяти без использования аккумулятора?

  4. Как осуществить подключение дополнительного исходного файла к существующему, используя внутренние возможности ассемблера MPASM?

  5. Почему порты А и В называют двунаправленными?

  6. Как осуществить компиляцию всего проекта?

  7. Какой выбран банк памяти после выполнения фрагмента программы:

DAT equ 0x51

movlw DAT

movwf STATUS

3.3 Лабораторная работа № 3 «косвенная адресация в командах пересылки данных»

3.3.1 Цель работы

Изучить основные принципы косвенной адресации данных.

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

Пересылка данных предполагает передачу данных в направлении от источника к приёмнику. При этом источник не меняет своего содержимого. Адресация приёмника или источника может осуществляться:

1. Прямым способом, когда адрес операнда содержится в самом теле команды, например:

MOVWF STATUS ; (W)→(STATUS) или MOVF PORTB,W ; (PORTB)→(W);

2. Непосредственным способом, когда сам 8-ми битный операнд (константа) располагается в теле команды, например:

MOVLW A0h ; A0h→(W)

3. Косвенным способом, при котором адрес операнда располагается в специальном регистре косвенной адресации. Для выполнения косвенной адресации в микроконтроллерах PIC необходимо обратиться к физически не реализованному регистру INDF. Обращение к регистру INDF фактически вызовет действие с регистром, адрес которого указан в FSR.

Например: movlw 21h ; Обнуление содержимого

movwf FSR ; ячейки с адресом 21h

clrf INDF ;

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

В соответствии с приведённой программой реализовать заполнение константой области памяти данных.

3.3.4 Порядок проведения лабораторной работы

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’.

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

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

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