- •Алматы 2011
- •1 Лабораторная работа №1. Байтовые и битовые команды. Логика
- •2 Лабораторная работа № 2.Маскирование. Суммирование массива
- •3 Лабораторная работа №3. Подпрограммы
- •4 Лабораторная работа №4. Умножение на дробное число
- •5 Лабораторная работа №5. Регулирование расхода газа
- •6. Лабораторная работа №6. Программирование клавиатуры
- •Фрагменты программы.
- •8 Лабораторная работа №8. Перевод чисел из 2-й в 2_10 систему.
- •9 Лабораторная работа №9. Таймер tmr1
- •10 Лабораторная работа №10. Прерывания
- •11 Лабораторная работа №11. Сложение двухбайтных чисел
- •Конец алгоритма
- •Конец алгоритма
- •Приложение а Регистр Status
- •Приложение б Описание инструкций мк pic
- •Приложение в Модуль таймера tmr1
- •Приложение г Карта памяти мк pic16877
- •Список литературы
- •0 50013, Алматы, Байтурсынова, 1
1 Лабораторная работа №1. Байтовые и битовые команды. Логика
Цель работы: изучение инструкций BSF, BCF, ADDWF, ANDWF, IORWF, XORWF, SUBWF. Выполнение сложения, вычитания, применение логических функций.
Регистры, применяемые в программе, могут находиться в разных банках. Номер банка, с которым работает программа, определяется регистром специального назначения (РСН) Status, см. приложение А. Кроме того этот регистр контролирует результат выполнении операций, фиксируя переполнение и обнуление регистров. На основе этого контроля создается изменение порядка выполнения алгоритма, т.е. его ветвление.
Изучите формат и назначение инструкций BSF, BCF, ADDWF, SUBWF, ANDWF, IORWF, XORWFпо приложению Б.
Операции сложения и вычитания выполняются в двоичном коде, причем вычитание выполняется с помощью прибавления к уменьшаемому вычитаемого, представленного в дополнительном коде.
Пример. Выполняем приведенные действия, используя при вычитании числа, сложение в дополнительном коде.
240 11110000 240 11110000
+ 2+ 00000100 -128+ 01111111 - инверсия 128
242 11110100 112 101101111- перенос в битCarry+ 1- дополнительный код
01110000 - результат.
Как видно при вычитании было переполнение регистра, поэтому в регистре Statusбит С=1. Был также перенос из 3 разряда единицы в 4-й разряд, т.е. из младшего в старший полубайт, поэтому битDC=1.
В таблице 1.1 представлены логические функции, их таблицы истинности, условные обозначения и интерпретация на электрической схеме. Все логические операции выполняются поразрядно.
Логическая функция ‘ИЛИ’ (‘OR’) может применяться для включения оборудования любой из двух кнопок, расположенными в разных местах.
Логическая функция ‘И’ (‘AND’) применяется в том случае, если оборудование должно включаться, при срабатывании (включении) двух контактов одновременно. Например, освещение в помещении автоматически включается при низкой освещенности и наличия в нем людей.
Логическая функция ‘Исключительно ИЛИ’ (‘XOR’) применяется, например, для управления освещением длинного тоннеля. С любого конца тоннеля можно включить или выключить освещение.
Изучите программу 1, которая выполняет различные действия с двумя константами и выводит результаты работы в регистр REZ. В программе инструкцияORGh’00’ – это указатель для ассемблера, что код, следующий за этим выражением, будет записан начиная с нулевого адреса электрически программируемого постоянного запоминающего устройства (ЭППЗУ).
Таблица 1.1 –Логические функции Y=f(X1,X2)
Инструкция |
Таблица истинности |
Условное обозначение |
Интерпретация на электрической схеме | ||
Х1 |
Х2 |
Y | |||
IORWF Функция OR (ИЛИ)
|
0 0 1 1 |
0 1 0 1 |
0 1 1 1 |
Х1 Y Х2 |
Х1
Х2
При замыкании любого контакта в цепи будет ток |
ANDWF Функция AND (И)
|
0 0 1 1 |
0 1 0 1 |
0 0 0 1 |
Х1 Y Х2 |
X1 X2
Ток в цепи будет только при замыкании обоих контактов |
XORWF Функция XOR (Исключи- тельно ИЛИ)
|
0 0 1 1 |
0 1 0 1 |
0 1 1 0 |
Х1 Y Х2 |
X1 X2
X2 X1
Ток в цепи будет только тогда, когда переключатели X1 и X2 будут в разном положении |
Программа 1.
include<p16F877.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; переходим в первый банк.
CLRF TRISC; настроить биты PORTC на выход.
BCF STATUS, 5; возвращаемся в нулевой банк.
Рабочая часть программы.
CLRF REZ; записать в регистр REZ нули.
CLRF R2; очистить регистр R2.
MOVLW D'240'; запись константы в аккумулятор W.
MOVWF R1; запись содержимого W в регистр R1.
SUBWF R2, W; вычитание W=R2-W=R2-R1=0-240.
MOVLW D'130'; запись константы в аккумулятор W.
MOVWF R2; запись содержимого W в регистр R2.
MOVLW D'5'; запись константы в W.
MOVWF R3; запись содержимого W в регистр R3.
MOVWF REZ; загрузить содержимое W в регистр REZ.
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.
ANDWF R1, W; операция W=R1 AND W(R2), результат в W.
MOVWF REZ
END; конец программы.
Самостоятельно продолжите программу командами для выполнения операций R2-R2,R2+R3,R1ORR2,R1XORR2.
Т а б л и ц а 1.2 – Варианты задания
Вариант |
Числа R1, R2, R3 |
Вариант |
Числа R1, R2, R3 |
1 |
81h, 12h, 1h |
6 |
86h, 67h, 6h |
2 |
82h, 23h, 2h |
7 |
87h, 68h, 7h |
3 |
83h, 34h, 3h |
8 |
88h, 69h, 8h |
4 |
84h, 45h, 4h |
9 |
89h, 6Ah, 9h |
5 |
85h, 56h, 5h |
10 |
8Ah, 6Bh, Ah |
Т а б л и ц а 1.3 - Пример записи результатов работы команд
Числа на входе |
Действие |
Результат в REZ |
Значение в Status | ||
Форма B или D |
Форма B или D |
Форма B |
Форма D |
Форма B | |
R1=D’240’ |
R2=D’0’ |
R2-R1 |
- |
D’16’ |
00011010 |
R1=D’240’ |
R2=D’130’ |
R1+R2 |
- |
D’114’ |
00011001 |
R1=D’240’ |
R2=D’130’ |
R1-R2 |
- |
D’110’ |
00011001 |
R1=D’240’ |
R2=D’130’ |
R2-R1 |
- |
D’146’ |
00011010 |
R2=D’130’ |
R2=D’130’ |
R2-R2 |
- |
D’0’ |
00011111 |
R2=D’130’ |
R3=D’5’ |
R2+R3 |
- |
D’135’ |
00011000 |
R1=b’11110000’ |
R2=b’10000010’ |
R1 AND R2 |
10000000 |
- |
00011011 |
R1=b’11110000’ |
R2=b’10000010’ |
R1 OR R2 |
11110010 |
- |
00011011 |
R1=b’11110000’ |
R2=b’10000010’ |
R1 XOR R2 |
01110010 |
- |
00011011 |
Создайте окно наблюдения для всех применяемых в программе регистров в необходимом формате чисел. Результаты работы всех операций с числами запишите в таблицу 1.3. В отчете приведите ручной расчет операций сложения и вычитания и их влияние на Status.
Контрольные вопросы
Как определить с каким банком работает программа?
Что выполняет инструкция ADDWFR1,F?
Что выполнят инструкция SUBWFR2,F?
Что выполняет инструкция ANDWFR1,F?
Что выполняет инструкция IORWFR1,W?
Что выполняет инструкция XORWFR2,W?
Приведите инструкции установки и сброса бита.
Назначение директивы ORG h’05’.
Приведите таблицы истинности логических операций.
Преимущества МК по сравнению с релейной аппаратурой.
Нарисуйте локальную схему управления с МК.
На какие части делится программа?
В каком банке находятся регистры R1,R2 иREZ.
Какой результат мы увидим при сложении 230+60 в МК?
Какой результат мы увидим при вычитании 130-135 в МК?
Назначение РСН TRISCи его местонахождение.