- •3. Методические указания к лабораторным работам
- •3.1 Лабораторная работа № 1 «интегрированная среда разработки программ для микроконотроллеров piCmicro mplab ide 5.61»
- •3.1.1 Цель работы
- •3.1.2 Содержание лабораторной работы
- •3.1.3 Порядок проведения лабораторной работы
- •Графическое меню проектирования
- •3.1.4 Контрольные вопросы
- •3.2 Лабораторная работа № 2 «абсолютная адресация в командах пересылки данных»
- •3.2.1 Цель работы
- •3.2.2 Краткие сведения из теории
- •3.2.2.1 Регистры port а и trisa
- •3.2.2.2 Регистры portb и trisb
- •3.2.3 Содержание лабораторной работы
- •3.2.4 Порядок проведения лабораторной работы
- •3.2.5 Контрольные вопросы
- •3.3 Лабораторная работа № 3 «косвенная адресация в командах пересылки данных»
- •3.3.1 Цель работы
- •3.3.2 Краткие сведения
- •3.3.3 Содержание лабораторной работы
- •3.3.4 Порядок проведения лабораторной работы
- •3.3.5 Контрольные вопросы
- •3.4 Лабораторная работа № 4 «изучение команд арифметических операций»
- •3.4.1 Цель работы
- •3.4.2 Краткие сведения
- •3.4.3 Содержание лабораторной работы
- •3.4.4 Порядок проведения лабораторной работы
- •3.4.5 Контрольные вопросы
- •3.5 Лабораторная работа № 5 «изучение команд логической обработки и маскирования данных»
- •3.5.1 Цель работы
- •3.5.2 Краткие сведения
- •3.5.3 Содержание лабораторной работы
- •3.5.4 Порядок проведения лабораторной работы
- •3.5.5 Контрольные вопросы:
- •3.6 Лабораторная работа № 6 «команды передачи управления»
- •3.6.1 Цель работы
- •3.6.2 Краткие сведения
- •3.6.3 Содержание лабораторной работы
- •3.6.4 Порядок проведения лабораторной работы
- •3.6.5 Контрольные вопросы:
- •3.7 Лабораторная работа № 7 «модуль таймера tmr0»
- •3.7.1 Цель работы
- •3.7.2 Краткие сведения
- •3.7.3 Содержание лабораторной работы
- •3.7.4 Порядок проведения лабораторной работы
- •3.7.5 Контрольные вопросы:
- •3.8 Лабораторная работа № 8 «изучение способов обработки прерываний»
- •3.8.1 Цель работы
- •3.8.2 Краткие сведения
- •3.8.2.1 Прерывание по переполнению tmr0
- •3.8.2.2 Внешнее прерывание с входа rb0/int
- •3.8.2.3 Прерывание по изменению уровня сигнала на входах rb7:rb4
- •3.8.3 Содержание лабораторной работы
- •3.8.4 Порядок проведения лабораторной работы
- •3.8.5 Контрольные вопросы:
- •4. Список рекомендуемой литературы
3.2.5 Контрольные вопросы
Какие информационные поля может содержать программа, написанная на языке ассемблера? Каков их порядок? Какие из них являются необязательными?
В чем заключается отличие директивы от команды микроконтроллера?
Можно ли осуществить установку данных в регистр памяти без использования аккумулятора?
Как осуществить подключение дополнительного исходного файла к существующему, используя внутренние возможности ассемблера MPASM?
Почему порты А и В называют двунаправленными?
Как осуществить компиляцию всего проекта?
Какой выбран банк памяти после выполнения фрагмента программы:
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
Примечание:
Для предотвращения синтаксической ошибки при компиляции, все шестнадцатеричные числа в формате: FFh, ABh, DDh, и т.д необходимо дополнять впереди нулём. Корректными являются следующие записи: 4Fh и 0ABh. Для остальных форм записи ограничений не существует: 0xFF или h’FF’.
Указатель размещения результата в команде: incf FSR,1, подразумевает размещение результата в регистре FSR, а в команде: incf FSR,0 размещение результата в аккумуляторе W. Те же результаты показывают команды, использующие символические имена приёмников: incf FSR,F и incf FSR,W.
При повторном запуске программы меняйте значение константы MASKA для замены значений ячеек памяти данных с адреса 21h по адрес 41h.
Пример программы приведён: LAB-Элат \ Lab_Digital \ Mps_2\ Примеры \ zapoln.asm
