Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Исходные данные и выполнение программы. Изучите формат инструкций addwf, subwf, andwf, iorwf, xorwf по приложению Д.




 

Изучите формат инструкций ADDWF, SUBWF, ANDWF, IORWF, XORWF по приложению Д.

Изучите программу 3.1, которая выполняет различные действия с двумя константами и выводит результаты работы в регистр REZ. Программа легче читается, если в инструкциях вместо адреса регистра писать его символьное имя. В лабораторной работе №2 мы уже писали в инструкциях вместо адресов РСН их имена: Portc, Trisc, Status, W. Пользователь также может присваивать символьные имена РОН, например R1 EQU h’21’. Указатель EQU от equal (англ.) – одинаковый, равносильный.

ORG h’хх’ – это указатель для ассемблера, что код следующий за этим выражением, будет записан начиная с адреса h’хх’ электрически программируемого постоянного запоминающего устройства (ЭППЗУ).

Программа 3.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; переходим в первый банк в нём регистр TRISC.

CLRF TRISC; настраиваем все биты PORTC на вывод данных.

BCF STATUS, 5; возвращаемся в нулевой банк.

; Рабочая часть программы. Ввод данных

MOVLW D'240'; запись константы в аккумулятор W.

MOVWF R1; запись содержимого W в регистр R1.

MOVLW D'130'; запись константы в аккумулятор W.

MOVWF R2; запись содержимого W в регистр R2.

MOVLW D'5'; запись константы в 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

END; конец программы.

Самостоятельно продолжите программу командами для выполнения операций R2+R3, R1 OR R2, R1 XOR R2.

Данные для варианта возьмите из таблицы 3.1.

 

Т а б л и ц а 3.1 – Варианты задания

Вариант Числа R1, R2, R3 Вариант Числа R1, R2, R3
  81h, 12h, 1h   86h, 67h, 6h
  82h, 23h, 2h   87h, 68h, 7h
  83h, 34h, 3h   88h, 69h, 8h
  84h, 45h, 4h   89h, 6Ah, 9h
  85h, 56h, 5h   8Ah, 6Bh, Ah

 

Т а б л и ц а 3.2 - Пример записи результатов работы команд

Числа на входе Действие Результат в REZ Значение в Status Форма B
Форма B или D Форма B или D Форма D Форма B
R1=D’240’ R2=D’130’ R1-R2=240-130 D’110’ -  
R1=D’240’ R2=D’130’ R1+R2=240+130 D’114’ -  
R1=D’240’ R2=D’130’ R2-R1=130-240 D’146’ -  
R2=D’130’ R3=D’5’ R2+R3=130+5 D’135’ -  
R2=D’130’ R2=D’130’ R2-R2130-130 D’0’ -  
R1=D’240’ R2=D’0’ R2-R1=0-240 D’16’ -  
R1=b’11110000’ R2=b’10000010’ R1 AND R2 -    
R1=b’11110000’ R2=b’10000010’ R1 OR R2 -    
R1=b’11110000’ R2=b’10000010’ R1 XOR R2 -    

Создайте окно наблюдения для всех применяемых в программе регистров в необходимом формате чисел. Результаты работы всех операций с числами запишите в таблицу 3.2.

 

3.4 Контрольные вопросы

 

1. Как определить с регистрами какого банка работает программа?

2. Что выполняет инструкция ADDWF R1, F?

3. Что выполнят инструкция SUBWF R2, F?

4. Что выполняет инструкция ANDWF R1, F?

5. Что выполняет инструкция IORWF R1, W?

6. Что выполняет инструкция XORWF R2, W?

7. Приведите инструкции установки и сброса бита.

8. Назначение директивы ORG h’05’.

9. Приведите таблицы истинности логических операций.

10. Преимущества МК по сравнению с релейной аппаратурой.

11. Назовите знакомые вам устройства, в которых применяются МК.

12. Нарисуйте локальную схему управления с МК.

13. На какие части делится программа?

14. В каком банке находятся регистры R1, R2 и REZ.

15. Какой результат мы увидим при сложении 230+60 в МК?

16. Какой результат мы увидим при вычитании 130-135 в МК?

 

Операции преобразования информации

Цель работы: изучение операций преобразования информации с помощью инструкций COMF, SWAPF, RRF, RLF.

 

Теоретические сведения

 

Побитная операция инверсии COMF может применяться для одновременного изменения управляющих сигналов всего подключённого оборудования через определенные промежутки времени.

Операция обмена полубайтами SWAP может применяться для изменения параметров пары однотипного оборудования по очереди.

При сдвиге по инструкциям RRF и RLF во всех случаях бит, сдвигаемый из регистра, записывается в бит CARRY регистра STATUS, а бит, который был в CARRY, записывается в другой конец регистра.

Инструкции сдвига (RRF, RLF) используются при выполнении операций умножения и целочисленного деления на два, при условии, что в бите Carry записан ноль. Они могут также применяться при управлении протяженным оборудованием. Например, при окрашивании, охлаждении или нагреве деталей во время их движения на конвейере [4].

 

Исходные данные и задание

 

Во фрагменте программы 4.1 показано применение операций инверсии, очистки бита, обмена полубайтами и сдвига вправо. Предполагается, что регистр PORTC настроен на вывод. Начало программы напишите самостоятельно по аналогии с программой 3.1.

Фрагмент программы 4.1.

NACH; метка повтора цикла программы.

MOVLW B'11110011'; это число D’243’.

MOVWF PORTC; записываем W в PORTC.

COMF PORTC, F; инвертируем PORTC.

MOVWF PORTC; восстанавливаем PORTC из W.

BCF PORTC, 7; очищаем седьмой бит.

MOVWF PORTC; восстанавливаем PORTC из W.

SWAPF PORTC, F; обмен полубайтами регистра PORTC.

MOVWF PORTC; восстанавливаем PORTC из W.

BCF STATUS, 0; запись нуля в бит С регистра status.

RRF PORTC, F; делим на 2. Результат записываем в PORTC.

BCF STATUS, 0

RRF PORTC, F; делим на 2 содержимое PORTC.

BCF STATUS, 0

RLF PORTC, F; умножаем на 2 содержимое PORTC.

BCF STATUS, 0

RLF PORTC, F; умножаем на 2 содержимое PORTC.

GOTO NACH

END

 

Оформите фрагмент 4.1 как программу и введите программу в микроконтроллер. Сравните полученные результаты с данными в таблице 4.1.

Создайте окно наблюдения для всех регистров программы в необходимом формате чисел.

 

Таблица 4.1- Результаты работы инструкций

Числа на входе Инструкция Числа на выходе PORTC
Форма b Форма h или D Форма b Форма h или D
  - COMF   -
  - BCF (7-й бит)   -
  - BSF (3-й бит)   -
  H’F3’ SWAPF   H’3F’
  D’243’ D’121’ D’60’ D’120’ RRF RRF RLF RLF   D’121’ D’60’ D’120’ D’240’

 

Запустите подготовленную по заданию таблицы 4.2 программу. Результаты работы всех операций с числами запишите в таблицу 4.1.

 

Т а б л и ц а 4.2 – Варианты заданий

Вариант Заданное входное число Номер очищаемого бита Номер устанавливаемого бита Вариант Заданное входное число Номер очищаемого бита Номер устанавливаемого бита
  h ‘D1’       h ‘B6’    
  h ‘E2’       h ‘F7’    
  h ‘B3’       h ‘C8’    
  h ‘C4’       h ‘99’    
  h ‘D5’       h ‘АA’    

 

4.3 Контрольные вопросы

 

1. Расскажите, какую реальную задачу решает ваша программа.

2. Какие адреса используются для РОН?

3. Приведите инструкцию установки бита. Когда она применяется?

4. Приведите инструкцию сброса бита. Когда она применяется?

5. Как происходит сдвиг вправо (влево).

6. Как регистр Status участвует ввыполнении операций сдвига?

7. Расскажите о применении операции сдвига.

8. Расскажите об операции «инверсия» и ее применении.

9. Расскажите об операции «обмен полубайтами» и ее применении.

10. Что должно быть записано в бите Carry для правильного выполнения умножения или деления.

11. Как настроить PORTC на выход?

12. Как определить с каким банком работает программа?

13. Почему после деления 243 на 4 и умножения частного на 4 не было получено исходное число?

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...