Исследование принципов построения алгоритмов с ветвлениями в микроконтроллерах среднего семейства серии PIC

  • doc
  • 08.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 12. Исследование принципов построения алгоритмов.doc

ЛАБОРАТОРНАЯ РАБОТА № 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