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

3 Регистры общего и специального назначения

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

Краткое содержание лекции. Регистры специального назначения (РСН) и регистры общего назначения (РОН). Представление подключения технологического оборудования как двоичного числа. Контроль операций с помощью регистра Status. Фиксированная адресация.

3.1 Регистры portc и trisc

Информация в микроконтроллере хранится в регистрах (file), состоящих из 8 разрядов (бит). Они делятся на регистры общего назначения (РОН), которые может использовать программист для хранения переменных, и регистры специального назначения (РСН), выполняющие определенные функции управления работой микроконтроллера.

У микроконтроллеров имеются выводы для подключения внешних устройств. Информация с этих выводов сохраняется в специализированной области памяти. Выводы объединены в функциональные группы-регистры РСН, например: PORTA, PORTB, PORTC, PORTD. В результате выполнения программы на выводы порта либо будет подаваться напряжение, либо нет. Содержание регистра порта, а также нумерация разрядов порта показана на рисунке 3.1. Наличие напряжения будем обозначать цифрой 1, отсутствие - цифрой 0, хотя часто обозначают и наоборот.

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

Рисунок 3.1- Схема регистра

управляющие технологическим процессом, или кнопки и датчики для ввода информации в МК. С их помощью можно подключить, например, вентилятор, конвейер, насос подачи реагента и т.д. Если на соответствующем выводе порта будет напряжение (обозначаемое цифрой 1), то устройство будет включено. Представленные на рисунке 3.1 набор нулей и единиц формально считают числом в двоичной системе счисления. Положение цифры в числе называют разрядом. Это же число в 16-й системе будет A3h.

Рисунок 3.2 – Схема подключения оборудования

РСН TRISC поразрядно определяет направление потока информации через регистр PORTC. Если в каком-то разряде регистра TRISC записана “1”, то информация от периферийного устройства через регистр PORTC поступает в ЦПУ. Например, на рисунке 3.2 от кнопки Кн, конечного выключателя Кв. Если в каком-то разряде регистра TRISC записан “0”, то информация от ЦПУ через регистр PORTC поступает на периферийное устройство, например, на пускатели К1 и К2, сирену S1, лампочку L2.

3.2 Регистр Status

Регистр специального назначения Status играет большую роль при выполнении математических и логических операций. Он контролирует результаты операций: был ли перенос, получился ли нулевой результат и другие операции. На основе этого контроля выполняется ветвление алгоритма и контроль правильности полученных результатов. Его биты RP0, RP1 определяют, с адресами какого банка работает программа (банков четыре).

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

Т а б л и ц а 3.1 – Биты регистра Status

Номера бит

7

6

5

4

3

2

1

0

Имена бит

IRP

RP1

RP0

-TO

-PD

Z

DC

C

В таблице 3.1 приняты следующие обозначения:

  1. IRP - бит выбора банка при косвенной адресации (IRP=1 - выбор банка 2 или банка 3, IRP=0 - выбор банка 0 или 1);

  2. RP1, RP0 - биты выбора банка при непосредственной адресации (т.е. разряды 5 и 6). Их значения для выбора банков показаны в таблице 3.2;

  3. TO - флаг переполнения сторожевого таймера;

  4. PD - флаг включения питания;

  5. Z (zero)- флаг нулевого результата. Записывается “1” при нулевом результате арифметической или логической операции;

  6. DC - флаг десятичного переноса или заема. Записывается “1”, если был перенос из младшего полубайта регистра в старший полубайт, актуально при выполнении команд сложения и вычитания в двоично-десятичной системе;

  7. C (carry) - флаг переноса или заема. Записывается “1”, если был перенос из старшего бита регистра для команд сложения и вычитания. Вычитание, как известно, выполняется с помощью сложения уменьшаемого и вычитаемого, которое представлено в дополнительном коде.

К отдельным битам регистра можно обращаться по имени или по номеру. Запись BTFSC STATUS, Z эквивалентна записи BTFSC STATUS, 2.

Т а б л и ц а 3.2 – Выбор номера банка 5 и 6 битами (RP1 и RP0)

RP1(первый бит номера банка)

RP0 (нулевой бит номера банка)

Номер банка (десятичная система)

0

0

0

0

1

1

1

0

2

1

1

3

Примечание. RP1 и RP0 образуют разряды двоичного числа

После рассмотрения назначения бит регистра Status понятно, почему его очистка приводит к результату, показанному в таблице 3.3.

Т а б л и ц а 3.3 – Значения регистра Status после команды CLRF

IRP

RP1

RP0

-TO

-PD

Z

DC

C

0

0

0

1

1

1

1 или 0

1 или 0

Рассмотрим влияние арифметических операций на биты регистра Status.

Т а б л и ц а 3.4 – Математические примеры на сложение

Сложение чисел 128+20

Сложение чисел 240+20

а) Десятичная система

б) Двоичная система

в) Десятичная система

г) Двоичная система

128

+ 20

148

10000000

+00010100

10010100

240

+ 20

260

11110000

+00010100

100000100 (равно 4!)

В примерах а) и б) таблицы 3.4 все нормально, результаты реальны, т.к. 14810=100101002. В примерах в) и г) также результаты совпадают, поскольку 26010=1000001002. Однако поскольку в регистре всего 8 бит, то самая старшая единица уйдет в перенос в бит Carry, и в результате формально получим, что 240+20=4 поскольку регистр переполнился. В примере б) бит С=0, в примере г) бит С=1. Таким образом, если в регистре Status бит С=1 при сложении, то было переполнение регистра и результат неверен.

Т а б л и ц а 3.5 – Математические примеры на вычитание

Вычитание чисел 16-4

Вычитание чисел 4-16

а) Десятичная система

б) Двоичная система

в) Десятичная система

г) Двоичная система

16

- 4

12

10010000

+ 11111100

100001100

4

- 16

-12

00000100

+ 11110000

11110100

П р и м е ч а н и е: курсивом выделены числа в дополнительном коде.

В окне наблюдения (watch) в первом случае мы увидим, что результат равен 12, при этом бит переноса передается в Carry. Во втором случае в окне наблюдения увидим, что результат равен 244, при этом бит Carry равен нулю. Таким образом, если в регистре Status бит С=0, то результат вычитания неверно отражается в окне наблюдения, поскольку, в действительности, он находится в дополнительном коде. Если в регистре Status бит С=1, то результат вычитания верно отражается в окне наблюдения.