ЛАБОРАТОРНАЯ РАБОТА № 3
Тема: Исследование принципов построения алгоритмов с ветвлениями в микроконтроллерах среднего семейства серии PIC
Цель: Изучение принципов и получение навыков организации ветвлений
1 Сведения из теории
Алгоритмами с ветвлениями называются алгоритмы, в которых, в зависимости от выполнения или не выполнения некоторого условия выполняется одна или другая группа команд. Для организации ветвлений в контроллерах PIC используются команды:
BTFSS f, b – проверяет состояние бита с номеров b в регистре с адресом f и пропускает следующую команду, если бит равен 1.
BTFSC f, b – проверяет состояние бита с номеров b в регистре с адресом f и пропускает следующую команду, если бит равен 0.
В качестве следующей за этими командами, как правило, используется команда GOTO <метка>, где метка соответствует началу группы команд, которая должна выполняться в случае равенства бита нулю для первой команды и равенства единице – для второй.
Условием ветвления часто является результат сравнения двух чисел. Сравнение чисел между собой производится путем вычитания одного из другого и проверки состояния битов в регистре спецназначения STATUS, имеющего адрес 0х03.
Результат операции вычитания проверяется по состоянию 0-го(С) и 2-го (Z) битов этого регистра.
Бит Z устанавливается в 1, если в результате предыдущей операции получился нулевой результат, и в 0 – в противном случае.
Бит С устанавливается в 1 в случае получения неотрицательного результата операции и сбрасывается в 0 в противном случае.
Пример 1.
Записать в аккумулятор наименьшее из содержимого ячеек 0х0c и 0x0d.
MOVF 0X0C,0 ; (w)=(0x0c)
SUBWF 0X0D,0 ; (w)=(0x0d) – (0x0c)
MOVF 0X0D,0 ; (w)=(0x0d)
BTFSC 0X03,0 ; пропустим следующую команду, если флаг С = 0
MOVF 0X0C,0 ; (w)=(0x0c), если флаг С = 1
NOP
END
Пример 2.
Пусть значение х хранится в регистре 0х0с, а значение а – в регистре 0x0d. Значение y поместить в регистр 0x0e.
MOVF 0X0D,0 ; (w)=(0x0d)=a
SUBWF 0X0C,0 ; (w)=(0x0c)–(0x0d)=x–a
MOVF 0X0C,0 ; (w)=(0x0c)=x
BTFSС 0X03,0 ; пропустим следующую команду, если флаг С=0
GOTO L1 ; перейдем на метку L1, если флаг С=1
MOVWF 0X0E ; перешли сюда, если флаг С=0 : (0x0e)=(0x0c), y=x
GOTO L2 ; переходим на конец программы
L1 CLRF 0X0E ; сюда попали, если флаг С=0, обнуляем (0х0Е)
L3 ADDWF 0X0E,1
DECFSZ 0X0D,1
GOTO L3 ; (0x0e)=(0x0e)*(0x0d), y=ax
L2 NOP
END
2 Порядок выполнения работы
1 Считая, что значение х хранится в регистре 0х0С, а значение a в регистре 0х0D, вычислить значение y и сохранить его в регистре 0x0F, наберите каждую из программ, соответствующую заданию, в MPLAB.
2 Проверьте правильность работы программы, задав регистрам значения.
3 Оформите отчет так, как это показано в примерах.
Варианты заданий находятся в табл. 2 приложения.
3 Содержание отчета
Отчет должен содержать общие принципы организации ветвлений, решения задач с комментариями для каждой строки.
Таблица 3
Варианты заданий к лабораторной работе № 3
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.