MOVWF 11h ;перенести из W в 11h




Лабораторная работа № 1

Исследование архитектуры однокристального RISC-микроконтроллера PIC16C58A

Цель работы: Знакомство с организацией, программно-доступными элементами и системой команд однокристального микроконтроллера (ОМК) PIC16C58A, построенного с использованием RISC-архитектуры.

Программа работы:

1. Загрузить интегрированную среду MPLAB и настроить на режим эмуляции однокристальных микроконтроллеров PIC16C58A. Создать проект, реализующий приведенные ниже задания.

2. Освоить основные приемы написания программы для PIC-контроллера, а также ее ввода и отладки с использованием пакета MPLAB, на примере тестовой программы.

3. Задания варианта 2:

 

· Переслать значение таймера в ячейку 34Н без потери содержимого регистра W.

· Вычесть число, находящееся в ячейки 10Н, из числа, находящегося в ячейке 11Н, результат поместить ячейку 12Н.

· Инвертировать 4 младших бита порта А (В).

· Если бит 0 (1,2,3,4,5,6,7) порта В установлен, то инвертировать значение ячейки 35Н.

Ход выполнения работы.

Настройка MPLAB.

Создаём новый проект: Project->New, задаем имя проекта. Создаем новый файл, в котором пишем код программы, сохраняем его под своим именем под расширением asm, добавляем в проект во вкладку Source. В Header добавляем файл с константами определёнными под данный тип микропроцессора, для нашего микроконтроллера это будет P16C5X.INC.

Определим для данного проекта микроконтроллер, для этого зайдем в пункт меню Configure->Select Dives укажем наш тип микроконтроллера PIC16C58A. Также необходимо включить среду эмулирования работы МК для этого выберем MPLAB SIM в меню Debugger->Select Tool.

Для просмотра состояния регистров и памяти выберем в меню View окна File Registers и Special Function Registers

Рисунок 1. Главное окно MPLAB с настроенным проектом.

Освоение базовых принципов написания и отладки программы в MPLAB.

Прокомментировать каждую строчку программы для полного понимания работы программы.

; Тестовая программа для ОМК PIC16C58A. Располагается в памяти,

; начиная с адреса 50H.

; Цикл Loop выполняется 7 раз, после этого программа

; запускается с начала. В каждом цикле выполняются вложенные

; процедуры ReduceA и DoubleB.

;Задание типа PIC-;контроллера и формата

;выходного файла ассемблера(НЕХ-формат)

list p=16c58a, f=inhx8m

ScratchPadRam equ 0x10; Нач. адрес размещения переменных в ОЗУ

AA equ ScratchPadRam+0; Переменная AA размещается в 0x10

BB equ ScratchPadRam+1; Переменная BB размещается в 0x11

CC equ ScratchPadRam+2; Переменная BB размещается в 0x12

W equ 0; w присваивается 0

Org 0;Начальный адрес 0

Goto start; безусловный переход к процедуре start

Org 0x50;Начальный адрес 50Н

Start; процедура start

Movlw.255;Пересылка числа 255 в регистр W

movwf AA;AA=255

Movlw.1;Пересылка числа 1 в регистр W

movwf BB;BB=1

Movlw.7;Пересылка числа 7 в регистр W

movwf CC;CC=7

Loop; процедура loop

Call ReduceA; Выполнять 7 циклов

decfsz CC;CC=CC-1

Goto loop; переход в начало подпрограммы

Goto start; переход на начало программы

ReduceA; процедура ReduceA

Swapf BB; обмен местами полу-байт регистра BB сохранение в BB

Swapf BB,w; обмен местами полу-байт регистра BB результат сохранён в W

Swapf BB; обмен местами полу-байт регистра BB сохранение в BB

subwf AA; AA=AA-BB

Call DoubleB; вызов процедуры DoubleB

Retlw 0;возврат из процедуры с записью литерой в W

DoubleB; процедура DoubleB

Swapf BB; обмен местами полу-байт регистра BB сохранение в BB

Swapf BB,w; обмен местами полу-байт регистра BB результат сохранён в W

Swapf BB; обмен местами полу-байт регистра BB сохранение в BB

addwf BB;BB=BB+BB

Retlw 0;возврат из процедуры с записью литерой в W

End; конец программы

 

Выполнение задания.

Задание 1. Переслать значение таймера в ячейку 34Н без потери содержимого регистра W.

include <P16C5X.INC>; подключаем константы

Org 0; начальный адрес программы

MOVLW 20h;записать число 20h в регистр W

MOVWF FSR;перенести из W в FSR

;6-5 бит 01 позволяет использовать второй банк памяти

MOVF TMR0, 0; перемещаем значение счётчика в W

MOVWF 34h; перенос из W в адрес памяти 34h

End; конец программы

Задание 2. Вычесть число, находящееся в ячейки 10Н, из числа, находящегося в ячейке 11Н, результат поместить ячейку 12Н.

Org 0; начальный адрес программы

MOVLW.9;записать число 9 в регистр W

MOVWF 10h;перенести из W в 10h

MOVLW.12;записать число 12 в регистр W

MOVWF 11h;перенести из W в 11h



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: