Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
2017-06-29 | 419 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Всегда состоят только из заглавных букв.
BANKSEL EEADR; выбрать банк для EEADR
.
.
btfss STATUS,Z; проверить флаг Z на полож. рез.
Добавочные идентификаторы
Добавочные идентификаторы были придуманы человеком по имени Чарльз Симони. Способ именовать члены программы, изобретённый им, получил название «Венгерская нотация», потому что по происхождению он был венгр, а работал в США на корпорацию Microsoft. Чарльз Симони установил определённый стандарт именования, который многие программисты ненавидят, и часто говорят «Что из-за его применения, кажется, что программа написана на чужом языке». Использовать его в полной мере на языках низкого уровня почти невозможно, но все же некоторую часть этого способа автор применил для обозначения свойств, присущей переменной.
Вся суть метода в том, что в начале, перед словом, ставится идентификатор, состоящий из одной строчной буквы. Идентификаторов может быть один либо целое множество. Ниже описаны те, которые можно будет встретить в примерах и программах в дальнейших лабораторных работах.
t; обозначает «временный» от слова temp.
f; обозначает что это «флаг» от слова flag – перем. созданная
; для контроля. Также может использоваться в начале имён
; функций, но редко.
m; обозначает что перем. принадлежит макросу. Также может
; использоваться в начале имён макросов, но редко. В языках
; высокого уровня имеет другое обозначение.
k; обозначает что это «константа»
Методические указания к выполнению лабораторной работы
Постановка и решение задачи
Разработать программу вычислений по условиям лабораторной работы № 3, оформив расчёты уравнений в виде функций для Y1, Y2, и макроопределений для Y1, Y2. Продемонстрировать работу в интегрированной среде.
|
Логические функции:
Входные данные:
X1 = 06;
X2 = 05;
X3 = 87;
Блок-схема алгоритма
Алгоритм макросов имеет идентичную структуру, поэтому не приводится.
Код программы
; Lab_4
;-------------------------------
#include<p17С756А.inc>; подключение заголовочного файла
; для МК 1886ВЕ2У 16F877
;-------------------------------
X1 EQU 0x20;
X2 EQU 0x21;
X3 EQU 0x22;
n_X1 EQU 0x23;
n_X2 EQU 0x24;
n_X3 EQU 0x25;
t_1_1 EQU 0x26;
t_1_2 EQU 0x27;
t_2_1 EQU 0x28;
t_2_2 EQU 0x29;
t_val_1 EQU 0x2A;
t_val_2 EQU 0x2B;
f_Y1 EQU 0x2C;
f_Y2 EQU 0x2D;
m_Y1 EQU 0x2E;
m_Y2 EQU 0x2F;
;-------------------------------
org 0x00; начало памяти программ (ПП)!
goto main; произвести переход на метку 'main',
; с которой начнётся выполнение
; основной программы
org 0x05; адрес начала размещения кода в ПП
;-------------------------------; фунция расчёта 1-го уравнения
;------ Функции программы ------;
;-------------------------------;
Load_Data:
L2: movlw D'06'; W = 06
movwf X1; X1 = W
L3: movlw D'05'; W = 05
movwf X2; X2 = W
L4: movlw D'87'; W = 87
movwf X3; X3 = W
return; команда возврата
;-------------------------------;
f_Call_Y1:
;-------------------; расчёт 1-ой части 1-го уравнения
B2: movfw X1; W = 06
andwf X2,W; W = X1 & X2
andwf X3,W; W = W & X3
movwf t_val_1; t_val_1 = W
B3: comf t_val_1,W; W =~ t_val_1
B4: movwf t_2_1; для 1-ой части 2-го уравнения
movwf t_val_1; t_val_1 = W
;-------------------;
B5: clrw; W = 0
;-------------------; расчёт 2-ой части 1-го уравнения
B6: comf X1,W; W =~ X1
movwf n_X1; n_X1 = W
B7: comf X2,W; W =~ X2
movwf n_X2; n_X2 = W
B8: comf X3,W; W =~ X3
movwf n_X3; n_X3 = W
B9: andwf n_X2,W; W = W & n_X2
andwf n_X1,W; W = W & n_X1
B10: movwf t_2_2; для 2-ой части 2-го уравнения
movwf t_val_2; t_val_2 = W
comf t_val_2,f; t_val_2 =~ t_val_2
;-------------------;
B11: clrw; W = 0
;-------------------; расчёт общей части уравнения
B12: movfw t_val_1; W = t_val_1
iorwf t_val_2,f; t_val_2 = t_val_1 | t_val_2
comf t_val_2,W; W =~ t_val_2
movwf f_Y1; f_Y1 = W
;-------------------;
return; команда возврата
;-------------------------------; фунция расчёта 2-го уравнения
f_Call_Y2:
;-------------------; расчёт 2-го уравнения
C2: movfw t_2_1; W = t_2_1
xorwf t_2_2,W; W = t_2_1 || t_2_2
movwf f_Y2; Y2 = W
return; команда возврата
;-------------------------------;
;------ Макросы программы ------;
;-------------------------------;
|
m_Call_Y1 MACRO m_X1,m_X2,m_X3
D2: movfw m_X1; W = 06
andwf m_X2,W; W = m_X1 & m_X2
andwf m_X3,W; W = W & m_X3
movwf t_val_1; t_val_1 = W
D3: comf t_val_1,W; W =~ t_val_1
D4: movwf t_2_1; для 1-ой части 2-го уравнения
movwf t_val_1; t_val_1 = W
;-------------------;
D5: clrw; W = 0
;-------------------; расчёт 2-ой части 1-го уравнения
D6: comf m_X1,W; W =~ m_X1
movwf n_X1; n_X1 = W
D7: comf m_X2,W; W =~ m_X2
movwf n_X2; n_X2 = W
D8: comf m_X3,W; W =~ m_X3
movwf n_X3; n_X3 = W
D9: andwf n_X2,W; W = W & n_X2
andwf n_X1,W; W = W & n_X1
D10: movwf t_2_2; для 2-ой части 2-го уравнения
movwf t_val_2; t_val_2 = W
comf t_val_2,f; t_val_2 =~ t_val_2
;-------------------;
D11: clrw; W = 0
;-------------------; расчёт общей части уравнения
D12: movfw t_val_1; W = m_t_val_1
iorwf t_val_2,f; m_t_val_2 = m_t_val_1 | m_t_val_2
comf t_val_2,W; W =~ m_t_val_2
movwf m_Y1; m_Y1 = W
;-------------------;
ENDM; директива окончания
;-------------------------------;
m_Call_Y2 MACRO m_t_2_1,m_t_2_2
;-------------------; расчёт 2-го уравнения
E2: movfw m_t_2_1; W = m_t_2_1
xorwf m_t_2_2,W; W = m_t_2_1 || m_t_2_2
movwf m_Y2; Y2 = W
ENDM; директива окончания
;-------------------------------;
main:
;------- вызовы функций --------;
A2: call Load_Data; загрузка данных
A3: clrw; W = 0
A4: call f_Call_Y1; расчёт 1-го уравнения с помощью функции
A5: clrw; W = 0
A6: call f_Call_Y2; расчёт 2-го уравнения с помощью функции
A7: clrw
;-------------------------------;
;------- работа макросов -------;
A8: m_Call_Y1 X1,X2,X3;
A9: clrw; W = 0
A10: m_Call_Y2 t_2_1,t_2_2;
A11: clrw; W = 0
;-------------------------------;
goto main
END
Контрольные вопросы!
1. Что такое функция? Из каких частей она состоит?
2. *Что такое подпрограмма? Из каких частей она состоит?
3. Что такое заголовок?
4. Что может находиться в теле функции?
5. Что такое макрос? Из каких частей он состоит?
6. Чем макрос отличается от функции? Приведите несколько примеров?
7. Чем особенны метки для макроса?
8. Для чего используют директиву LOCAL? Можно ли обойтись без её использования? Как?
9. Что такое стек? Из чего состоит? Как работает?
10. Что происходит при использовании команды call?
11. Что происходит при использовании команды return?
12. Можно ли вызвать функцию не используя команду call, а потом благополучно вернуться в программу?
13. Что лучше макрос или функция?
Лабораторная работа № 5
Тема: Принятие решений программой. Команды переходов и циклов.
Цель: Изучить команды переходов и циклов, для принятия решений программой.
Задание: Спроектировать и написать программу заполнения двухмерного массива, размерность которого – M x N. Массив должен располагаться в ОЗУ МК, начиная с адреса Adr. Данные, размерностью 1 байт, должны быть заполнены согласно следующего алгоритма: первый элемент – день рождения, второй – 1 элемент + месяц рождения, третий – второй + месяц рождения и т.д. Начальные данные представлены в таблице 1. Демонстрационную программу разместить в памяти, начиная с адреса 30h + № Варианта * 5.
|
Время: Одно занятие.
№ вар. | Таблица 5.1 | |||||
Группа № 1 | Группа № 1 | |||||
Ard(H) | M(D) | N(D) | Ard(H) | M(D) | N(D) | |
3F | ||||||
3E | ||||||
3D | ||||||
3C | ||||||
3B | ||||||
3A | ||||||
3A | ||||||
3B | ||||||
3C | ||||||
3D | ||||||
3E | ||||||
3F | ||||||
Содержание отчёта:
· Тема, цель, задание;
· Расчётные значения (в 16-тиричном виде) содержимого массива и конечного адреса массива;
· Описание команд МК, необходимых для написания программы;
· Алгоритм (нумерованный);
· Описание к алгоритму, с подробным пояснением работы регистров INDF и FSR;
· Программ с метками соответствующими номерам блоков алгоритма;
· Код программы;
· Описание особенностей программы;
· «Копии экранов» симулятора, с расположением массива в памяти;
· Вывод;
Теоретические сведения
Выполнив данную лабораторную работу – вы узнаете:
· Как «научить» программу принимать решения;
· Какая адресация называется косвенной, и для чего нужны регистры
FSR и INDF;
· Что такое циклы, и какого вида они бывают;
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!