
На сортировку / 2102172 / otchet_lab3_ZHB_right_one
.docНекоммерческое акционерное общество
«АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ»
Кафедра электроснабжения промышленных предприятий
Отчет
по лабораторной работе № 3
Дисциплина: Основы микропроцессорной техники
Тема: «Сложение, вычитание. Деление, умножение. Логика»
Специальность: 5В081200-Энергообеспечение сельского хозяйства
Выполнили: ст.группы ЭСХк-14-1
Қайролла Ә,Тұрсынбек Н
Принял: Жағыпаров Е.
______ ________________ «____»______________2017г.
Алматы, 2017
Введение
Цель работы: изучение инструкций ADDWF, ANDWF, IORWF, XORWF, SUBWF, RRF, RLF, а также изменения содержания бит в регистре STATUS от результата выполнения предыдущей инструкции. Выполнение сложения, вычитания, умножения, деления и применение логических функций.
В таблице 3.1 представлены логические функции, их таблицы истинности, условные обозначения и интерпретация на электрической схеме. Все логические операции выполняются поразрядно.
Таблица 3.1 – Логические функции Y=f(X1,X2)
Инструкция |
Таблицаистинности |
Условное обозначение |
Интерпретация на электрической схеме |
||
Х1 |
Х2 |
Y |
|||
I
|
0 0 1 1 |
0 1 0 1 |
0 1 1 1 |
Х1Y Х2 |
Х2
При замыкании любого контакта в цепи будет ток |
A |
0 0 1 1 |
0 1 0 1 |
0 0 0 1 |
Х1Y Х2 |
Ток в цепи будет только при замыкании обоих контактов |
X |
0 0 1 1 |
0 1 0 1 |
0 1 1 0 |
Х1Y Х2 |
Ток в цепи будет только тогда, когда переключатели X1 и X2 будут в разном положении |
Задание: вариант №4
Include <p16F877A.inc>;в этом файле описаны символьные имена РСН
R1 EQU h'21'; R1 - символьное имя регистра с адресом h’21’
R2 EQU h'22'; R2 - символьное имя регистра с адресом h’22’
R3 EQU h'23'; R3 - имя регистра с адресом h’23’
REZ EQU h'24'; REZ - имя регистра для записи результатов;
Инструкции для настройки МК
ORG h'00'; следующая инструкция NOP будет записана по адресу h’00’
NOP; пишется для настройки отладчика
NOP
NOP
ORG h'05'; следующая инструкция CLRF запишется по адресу h’05’
CLRF STATUS; очищаем регистр от мусора, выбираем нулевой банк; сохранить окно
BSF STATUS, 5; переходим в первый банк в нём регистр TRISC
CLRF TRISC; настраиваем все биты PORTC на вывод данных
BCF STATUS, 5; возвращаемся в нулевой банк; Рабочая часть программы. Ввод данных
MOVLW D'132'; запись константы в аккумулятор W
MOVWF R1; запись содержимого W в регистр R1
MOVLW D'69'; запись константы в аккумулятор W
MOVWF R2; запись содержимого W в регистр R2
MOVLW D'64'; запись константы в W
MOVWF R3; запись содержимого W в регистр R3
; сохранить окно; Выполнение вычислений
MOVF R1, W; запись константы из R1 в регистр W
SUBWF R2, W; вычитание W=R2-W=R2- R1
MOVWF REZ; переслать содержимое W в регистр REZ; сохранить окно
MOVF R2, W; запись константы из R2 в регистр W
ADDWF R1, W; W=R2+W=R1+R2
MOVWF REZ; сохранить окно
MOVF R2, W; копируем содержимое R2 в W
SUBWF R1, W; вычитание W=R1-W=R1-R2. Результат оставляем в W
MOVWF REZ; переслать содержимое W в регистр REZ; сохранить окно
MOVF R2, W; запись константы в регистр W из R2
ADDWF R3, W; W=R3+W=R2+R3
MOVWF REZ; сохранить окно
MOVF R2, W; запись константы в регистр W из R2
SUBWF R2, W
MOVWF REZ; сохранить окно
MOVF R2, W; запись константы в регистр W из R2
ANDWF R1, W; операция W=R1 AND W(R2), результат в W
MOVWF REZ; сохранить окно
MOVF R2, W; запись константы в регистр W из R2
IORWF R1, W; операция W=R1 OR W(R2), результат в W
MOVWF REZ; сохранить окно
MOVF R2, W; запись константы в регистр W из R2
XORWF R1, W; операция W=R1 XOR W(R2), результат в W
MOVWF REZ; сохранить окно
RRF R1,w;деление на 2 без очистки бита С регистра STATUS. После ;выполнения сдвига вправо сдвигаемый бит 0 из регистра R1 переместился в ;бит С регистра STATUS, а единица из бита С регистра STATUS добавилась ;слева к значению регистра R1 и сохранилась в аккумуляторе W. Значение ;неверно.
MOVWF REZ; сохранить окно
RLF R1,w; 24. 2=480, произошло переполнение регистра, в нем ;осталось 480-256=224, в бите С регистра STATUS появилась 1, чтобы ;операция деления выполнилась верно, надо его обнулить
MOVWF REZ; сохранить окно
BCF STATUS,C
RRF R1,w
MOVWF REZ; сохранить окно
END; конец программы.
Т а б л и ц а 3.3 - Пример записи результатов работы команд
Числа на входе |
Действие |
Результат |
Значение в Status Форма B |
||
Форма B или D |
Форма B или D |
REZ(D) |
Wreg(B) |
||
|
|
CLRF STATUS |
|
|
00011111 |
R1=D’132’ |
R2=D’69’ |
R2-R1=69-132 |
D’193’ |
- |
00011010 |
R1=D’132’ |
R2=D’69’ |
R1+R2=132+69 |
D’201’ |
- |
00011000 |
R1=D’132’ |
R2=D’69’ |
R1-R2=132-69 |
D’63’ |
- |
00011001 |
R2=D’69’ |
R3=D’64’ |
R2+R3=69+64 |
D’73’ |
- |
00011000 |
R2=D’69’ |
R2=D’69’ |
R2-R2=69-69 |
D’0’ |
- |
00011111 |
R1=b’10000100’ |
R2=b’01000101’ |
R1 AND R2 |
- |
00000100 |
00011011 |
R1=b’10000100’ |
R2=b’01000101’ |
R1 OR R2 |
- |
11000101 |
00011011 |
R1=b’10000100’ |
R2=b’01000101’ |
R1 XOR R2 |
- |
11000001 |
00011011 |
R1=b’10000100’ |
R1/2 |
RRF |
194 |
11000010 |
00011010 |
R1=b’10000100’ |
R1*2 |
RLF |
8 |
00001000 |
00011011 |
|
|
BCF STATUS,C |
|
|
00011010 |
R1=b’10000100’ |
R1/2 |
RRF |
66 |
01111000 |
00011010 |
Вывод
При выполнении данной лабораторной работы мы научились использовать команды ADDWF, ANDWF, IORWF, XORWF, SUBWF, RRF, RLF, а также изменения содержания бит в регистре STATUS от результата выполнения предыдущей инструкции. Выполнили сложения, вычитания, умножения, деления и применение логических функций.