Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ ЦТ и МК для стенда 2013.doc
Скачиваний:
24
Добавлен:
01.05.2015
Размер:
3 Мб
Скачать
☆

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

  1. Что происходит с регистром Status при логических и математических операциях?

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

  1. Поясните инструкцию условного перехода BTFSC STATUS, Z.

  2. Поясните инструкцию условного перехода BTFSS STATUS, Z.

  3. Какой операцией можно определить равенство чисел?

  4. В каких случаях флаг Z равен единице при вычитании?

  5. В каких случаях флаг С равен единице при вычитании?

  6. Когда флаги Z и С регистра Status одновременно равны нулю?

  7. Как определить более мощную установку из двух потребителей?

  8. Расскажите назначение АЦП.

  9. Расскажите об аналоговых и цифровых сигналах.

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

  11. В каких банках находятся, регистры применяемые в программе?

  12. Как переключается нагрев и охлаждение установки.

6 Маскирование

Цель работы: изучение способов маскирования и практическая форма их применения.

6.1 Краткие теоретические сведения

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

Правила маскирования с помощью логических операций:

  • логическая операция AND исходного числа и числа-маски очищает разряд в исходном числе, если в соответствующем разряде числа-маски записан 0, и не изменяет его, если в разряде маски записана единица;

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

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

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

Объекты

Операция

OR (установка с 4 по 7 бит)

AND (очистка с 0 по 3 бит)

XOR (инверсия с 4 по 7 бит)

XOR (проверка чисел на равенство)

Число

10101010

10101010

10101010

00001101

Маска

11110000

11110000

11110000

00001101

Результат

11111010

10100000

01011010

00000000

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

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

Фрагмент 6.1. Установка четырех бит с помощью функции OR.

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

MOVWF PORTC; переслать константу в PORTC.

MOVLW B’11110000’; установить маску.

IORWF PORTC, F; подаем энергию в PORTC с 4 по 7 разряды.

Фрагмент 6.2. Сброс четырех бит с помощью функции AND.

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

MOVWF PORTC; переслать константу в PORTC.

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

ANDWF PORTC, F; выключаем энергию в PORTC с 0 по 3 разряды.

Фрагмент 6.3. Процедура инвертирования бит.

MOVLW b’10101010’; загрузить h’АА’ в регистр W.

MOVWF R1; загрузить h’АА’ из W в R1 .

MOVLW b’11110000’; маска для инверсии с 4 по 7 бит.

XORWF R1, W; применяем логическую функцию.

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

Фрагмент 6.4. Определение равенства чисел и его применение.

Пусть к битам регистра PORTD, настроенного на ввод информации в ЦПУ, подключены: конечный выключатель ограждения окрасочной камеры (бит 3), датчик наличия заготовок (бит 2), датчик наличия заданной температуры в камере (бит 0). В этом случае предварительная звуковая сигнализация S1, присоединенная к нулевому биту PORTC, должна включиться при значении «1» в этих битах информации, что определяется фрагментом программы описанным ниже.

Clrf PORTC

Movlw b’11011101’; информация пересланная в PORTD.

Movwf R1; регистр хранящий информацию из PORTD.

Movlw b’00001101’; жирным выделены интересующие нас биты 0, 2, 3.

Movwf Maska; число для маски, примененной в операции XOR.

Movlw b’00001101’; маска для операции AND.

Andwf R1, W; все биты кроме 0, 2, 3 обнуляем.

Xorwf Maska, w; проверяем записаны ли в этих битах единицы.

Movlw b’10000001’; предполагаем что да, тогда надо включить сирену.

Btfss STATUS, Z; равно ли преобразованное число из PORTD маске?

Movlw b’10000000’; если Z=0 (число равно маске) не включать сирену.

Movwf PORTC

Подготовьте программу, выполняющую маскирование на основе приведенных фрагментов для варианта из таблицы 6.2. Запишите результаты в таблицу 6.1.

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

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

Вариант

Маска для AND и OR

Число из PORTD

Биты проверяемые на наличие 1

Вариант

Число из PORTD

Число из PORTD

Биты проверяемые на наличие 1

1

11000001

10110011

1, 2, 3

6

11100110

00111001

6, 7, 0

2

00110010

10011111

2, 3, 4

7

01101100

11011100

7, 0, 1

3

01110011

10101001

3, 4, 5

8

01001111

10001110

0, 2, 3

4

01010100

01110111

4, 5, 6

9

00110001

00111001

1, 3, 4

5

10100101

01101101

5, 6, 7

10

10010111

01110101

2, 5, 6