Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЭУА_УМК_4_лаб.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
486.4 Кб
Скачать

Программа 2.1

include <p16F877.inc>

R1 EQU h’20’ ; R1 – символьное имя со значением 20h (адрес регистра).

R2 EQU h’24’ ; R2 – символьное имя со значением 24h (адрес регистра).

org 0x000

nop

nop

nop

org 05h

START ; Начало исполняемой части программы.

CLRF STATUS ; Очистка регистра, выбор банка 0.

BSF STATUS, RP0 ; Выбор банка 1.

CLRF TRISC ; Конфигурировать все биты порта C как выход.

CLRF STATUS ; Выбор банк 0.

CLRF PORTC ; Записать в порт С нули (потушить световоды).

; Ввод данных R2>R1.

MOVLW 0FAh ; Запись константы FAh в W.

MOVWF R2 ; Запись константы FAh в регистр R2.

MOVLW 02h ; Запись константы 02h в W.

MOVWF R1 ; Запись константы 02h в регистр R1.

SUBWF R2,0 ; Вычитание R2 - R1(W). Результат пересылаем в W.

MOVWF PORTC ; Загрузить содержимое W в регистр PORTС.

MOVF R2,0 ; Запись константы FAh в регистр W.

ADDWF R1,0 ; Сложение R1+R2(W). Результат записывается в W.

MOVWF PORTC ; Загрузить содержимое W в регистр PORTС

MOVF R2,0 ; Запись константы FAh в регистр W.

ANDWF R1,0 ; Логическое умножение R1 AND R2, результат в W.

MOVWF PORTC ; Загрузить содержимое W в регистр PORTС

COTO $ ; Зацикливание программы на этой строке.

END

Во фрагменте программы 2.2 показано применение операций инверсия, стирание бита, обмен полубайтами, сдвиг вправо.

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

MOVLW B'11110000' ; Запись константы в аккумулятор W.

MOVWF PORTC ; Копирование константы из W в порт С.

COMF PORTC,1 ; Инвертирование порта С. Результат - в порт С.

MOVWF PORTC ; Копирование константы из W в порт С.

BCF PORTC,7 ; Сброс седьмого бита порта С.

MOVWF PORTC ; Копирование константы из W в порт С.

SWAPF PORTC,1 ; Обмен полубайтами порта С.

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

MOVWF PORTC ; Копирование константы из W в порт С.

RRF PORTC,1 ; Сдвиг вправо порта С. Результат - в порт С.

Задания к выполнению лабораторной работы на УМК-7

Задание 1. Запустите подготовленную дома программу по заданию 2.1. Результаты работы всех команд запишите в таблицу 2.3.

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

Двоичные числа на входе

Команда

Число на выходе

в порте С

R1

R2

Форма b

Форма h

11111010

00000010

ADDWF (R1+W)

11111100

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

Задание 2. Запустите подготовленную дома программу по заданию 2.2. Результаты работы всех команд запишите в таблицу 2.4

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

Число на входе

Команда

Число на выходе

в порте С

Форма b

Форма h

Форма b

Форма h

11110000

F0

BCF (7-й бит)

01110000

70

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

  1. Какие действия выполняют команды ADDWF, SUBWF?

  2. Какие действия выполняют команды ANDWF, IORWF?

  3. Почему для записи чисел использованы адреса начиная с 20h.

  4. Приведите команды установки и сброса битов.

  5. Как происходит сдвиг вправо (влево). Какой бит регистра status меняется при операции сдвига?

  6. Расскажите об операции инверсия.

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

Лабораторная работа 3. Сравнение чисел. Маскирование. Организация переходов. Использование косвенной адресации.

Цель работы: Использование флагов регистра status для сравнения чисел. Изучение команд маскирования, Изучение, программных способов маскирования данных. Использование косвенной адресации.

Оборудование и программное обеспечение: Windows98, среда MPLAB, комплекс УМК-7.

Задания для домашней подготовки

Задание 1. Изучите операции по организации условных переходов BTFSC и BTFSS по приведенным ниже фрагментам программ.

Проверка бита CARRY

BTFSS STATUS, C ; Если в бите С установлена единица, то ; пропустить следующую команду (GOTO МЕТКА) и выполнить команду 1.

GOTO METKA

Команда 1

Проверка бита ZERO

BTFSS STATUS, Z ; Если в бите Z установлена единица, то ; пропустить следующую команду (GOTO МЕТКА) и выполнить команду 2.

GOTO METKA

Команда 2

Изучите фрагмент 3.1 для проверки бита С и вывода меньшего чиста на светодиоды. Во фрагменте уменьшаемое обозначено как UMENSH.

Ф рагмент 3.1.

MOVLW B’Число 1’ ; Число 1 à W

MOVWF R1 ; W à R1

MOVWF UMENSH ; W àUMENSH

MOVLW B’Число 2’ ; Число 2 àW

MOVWF R2 ; W à R2

SUBWF UMENSH,1 ; UMENSH=

; UMENSH – W=

; = R1 – R2

BTFSS STATUS,C ; C = 1?

MOVF R1,0 ; R1 à W

MOVWF PORTC ; W à PORTC

Задание 2. Подготовьте программу 3.1 по заданию 3.1 из таблицы 3.1, использующую значения флагов из таблицы 3.2 и выполняющую действия:

  • сравнение чисел, расположенных в разных регистрах. Большее число выводится на светодиоды;

  • сравнение одинаковых чисел R1 и R1.

При написании программы используйте блок-схему на рисунке 3.1.

Рекомендация. При написании программы создайте символьные переменные для хранения заданных чисел.

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

Вари- ант

Число R1

Число R2

Вари- ант

Число R1

Число R2

1

00111100

00001111

6

11100001

00110011

2

01100111

11110000

7

11001111

00111011

3

00011110

00111100

8

10010110

01101010

4

11110000

10101010

9

01110110

00101011

5

11000011

01010101

10

01100001

00111011

Таблица 3.2 – Флаги команды SUBWF UMENSH,d то, есть (UMENSH - W)

Соотношения значений в рабочем регистре (W) и регистре общего назначения (UMENSH)

Значения флагов регистра status

Z

DC

C

UMENSH>W

0

1

1

UMENSH<W

0

0

0

UMENSH=W

1

1

1

Примечание – Регистр UMENSH это уменьшаемое при вычитании

Задание 3. Изучите способы организации программ с косвенной адресацией на примере приведенных ниже фрагментов. Регистр FSR хранит адрес ячейки, к которой происходит обращение через имя формально существующего регистра INDF.

Обратите внимание на то, что в составе команд микропроцессора нет команд условного перехода, поэтому циклические структуры организуются с помощью операторов условий совместно с оператором перехода.

Изучите фрагмент программы 3.2, предназначенной для сложения массива чисел, расположенных по адресам 24h…27h:

Фрагмент 3.2. Суммирование массива.

MOVLW REG24 ; Запись адреса регистра общего назначения (РОН)

; 24h с символьным именем REG24 в регистр W.

MOVWF FSR ; Запись в регистр FSR адреса РОН.

CLRW ; Очистка рабочего регистра W перед суммированием.

NEXT

ADDWF INDF, 0 ; Сложить значение рабочего регистра W и РОН

; с сохранением результата в рабочем регистре W.

INCF FSR, 1 ; Увеличение указателя адреса FSR на единицу.

BTFSS FSR, 3 ; Проверка – все выполнено? Дошли до адреса 28h?

GOTO NEXT ; Если нет, не дошли переходим на метку NEXT,

MOVWF PORTC ; если да, дошли выводим сумму на светодиоды.

Примечание – При достижении адреса 28h, появляется ‘1’ в третьем разряде двоичной формы числа 28h=В’00101000’.

Аналогично пишется программа для очистки массива информации в оперативной памяти.

Задание 4. Используя приведенный фрагмент 3.2, подготовьте программу 3.2 по заданию 3.2 из таблицы 3.3, выполняющую сложение указанных регистров.

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

Вариант

Число

Маска

Адреса регистров массивов

Вариант

Число

Маска

Адреса регистров массивов

1

10110011

11000001

20h - 23h

6

00111001

11100110

44h - 47h

2

10011111

00110010

24h - 27h

7

11011100

01101100

50h - 53h

3

10101001

01110011

30h - 33h

8

10001110

01001111

54h - 57h

4

01110111

01010100

24h - 37h

9

00111001

00110001

60h - 63h

5

01101101

10100101

40h - 43h

10

01110101

10010111

64h - 67h

Примечание – Во все регистры массива в качестве числовых данных записать номер варианта. Для массивов использовать символьные имена.

Задание 5. Ознакомьтесь с правилами маскирования с помощью логических операций:

  • логическое умножение (AND) исходного числа и числа-маски очищает разряд числа в исходном числе, если в соответствующем разряде числа-маски записан 0, и не изменяет его, если в разряде маски записана 1. Применяется для очищения нескольких разрядов в числе;

  • логическое сложение (OR) исходного числа и числа-маски устанавливает в разряд исходного числа 1, если в таком же разряде маски будет записана 1, и не изменяет его, если в этом разряде записан 0. Применяется для установки нескольких бит в числе;

  • логическое «исключающее ИЛИ» (XOR) исходного числа и числа-маски инвертирует содержимое бита исходного числа, если в соответствующем разряде числа маски записана 1, и не изменяет его, если в этом разряде записан 0. То есть эта команда реагирует на различие между разрядами исходного числа и слова- маски. Часто применяется для определения равенства регистра какому-либо числу.

Примеры результатов маскирования приведены в таблице 3.4.

Таблица 3.4 – Результаты применения масок по фрагментам 3.3, 3.4 и 3.5

Объекты

Операция

OR

(установка бит)

AND

(очистка бит)

XOR

(проверка на равенство)

Число

10101010

10101010

10101010

Маска

11110000

11110000

10101010

Результат

11111010

10100000

00000000

Задание 6. Изучите приемы маскирования с помощью логических операций, рассмотрев фрагменты программ 3.3, 3.4, 3.5.

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

MOVLW B’10101010’ ; Загрузить константу ААh в регистр W.

MOVWF PORTC ; Переслать число в порт С.

MOVLW B’11110000’ ; Установить маску в регистр W.

IORWF PORTC, 1 ; Установить биты в порте C по маске из W.

Фрагмент 3.4. Сброс четырех бит путем логического умножения.

MOVLW B’10101010’ ; Загрузить константу ААh в регистр W.

MOVWF PORTC ; Установить единицы во все биты порта C.

MOVLW B’11110000’ ; Установить маску в регистре W.

ANDWF PORTC, 1 ; Очистить биты в порте С по маске W.

Фрагмент 3.5. Процедура определения равенства чисел.

MOVLW 0ААh ; Загрузить ААh в регистр W.

MOVWF REG1 ; Загрузить ААh W в REG1 .

XORWF REG1, 0 ; Применяем логическую операцию и ; результат записываем в W.

MOVWF PORTC ; Проверяем светодиодами результат в порте С.

Задание 7. Подготовьте программу 3.3, выполняющую маскирование для заданного варианта из таблицы 3.2.

Задание к выполнению лабораторной работы на УМК-7

Задание 1. Введите подготовленную дома программу по заданию 3.1, создайте проект, запустите проект. Запишите результат.

Внимание! Не забудьте создать окно наблюдения для всех регистров.

Задание 2. Ввести в микропроцессор подготовленную в домашнем задании программу 3.2. Записать результаты в таблицу 3.4.

Задание 2. Ввести в микропроцессор подготовленную в домашнем задании программу 3.3. Записать результаты в таблицу 3.5.

Таблица 3.5 – Результаты суммирования массива

Вариант

Адрес регистра массива

Число в регистре массива

Сумма в регистре W

11

70h

0Bh

0Bh

71h

0Bh

16h

72h

0Bh

21h

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

  1. Какие разряды регистра status меняют свои значения при логических и математических операциях?

  2. Поясните команду условного перехода BTFSC.

  3. Поясните команду условного перехода BTFSS.

  4. Какую логическую операцию надо использовать, чтобы очистить (установить) определенные разряды.

  5. Какую логическую операцию надо использовать, чтобы определить равенство чисел?

  6. Какие способы адресации вы знаете?

  7. Как при косвенной адресации устанавливается номер банка?

Лабораторная работа 4. Программирование клавиатуры. Написание подпрограмм и обращений к ним

Цель работы: обучение программированию ввода с клавиатуры. Закрепление навыков организации условных переходов и инициализации портов. Обучение написания и обращение к подпрограммам.

Оборудование и программное обеспечение: Windows98, среда MPLAB, комплекс УМК-7.

Задания для домашней подготовки

З адание 1. Изучите схему подключения клавиатуры на УМК-7, изображенную на лицевой панели стенда (рисунок 4.1). Здесь в виде контактов изображены кнопки клавиатуры. На рисунке 4.2 приведена, как пример, схема подключения кнопки с цифрой «1» к порту D. Одна клемма кнопки «1» подключена к выводу RD7, а вторая клемма кнопки «1» подключена к выводу RD3. Предположим, что бит RD7 запрограммирован на выход, а бит RD3 на вход. Когда кнопка нажата, с выходного бита RD7 проходит сигнал через кнопку «1» на клемму RD3, запрограммированную на вход. В случае появления сигнала на RD3, можно зажечь один или несколько светодиодов, подключенных к клеммам порта С. Предположим, требуется зажечь один светодиод, подключенный к клемме RC6.

Задание 2. Изучите программу 4.1, выполняющую описанные действия и демонстрирующую зажигание светодиода, подключенного к выводу RC7.