Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

3.1 Регистры PORTC и TRISC

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

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

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

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

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

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

3.2 Регистр Status

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

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

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

Номера бит                
Имена бит 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 (нулевой бит номера банка) Номер банка (десятичная система)
     
     
     
     
Примечание. RP1 и RP0 образуют разряды двоичного числа

Внимание! Символьное имя S обозначает регистр Status.

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

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

IRP RP1 RP0 -TO -PD Z DC C
            1 или 0 1 или 0

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

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

Сложение чисел 128+20 Сложение чисел 240+20
а). Десятичная система б). Двоичная система в). Десятичная система г). Двоичная система
+ 20 +00010100 + 20 +00010100 100000100 (равно 4!)

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

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

Вычитание чисел 16-4 Вычитание чисел 4-16
а) Десятичная система б) Двоичная система в) Десятичная система г) Двоичная система
- 4 - 11111100 100001100 - 16 -12 + 00010100 11110100
П р и м е ч а н и е: курсивом выделены числа в дополнительном коде.

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

3.3 Фиксированная (абсолютная) адресация.

Чтобы выполнить какие-либо действия с информацией в регистре, его имя или адрес должны быть указаны в команде. Будучи составной частью кода команды, 7-битный адрес операнда (регистра) является «фиксированным и поэтому не может быть изменен во время выполнения программы.

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

В качестве примера, иллюстрирующего эту недостаточную гибкость, предло­жим, что мы хотим очистить содержимое всех регистров данных 0-го банка, т.е. регистров h'20'…h'7F'. Очевидным решением этой задачи будет многократное (96 раз) использование команды clrf (очистка регистра), как показано в программе:

Clrf h’20’; очищаем регистр по адресу h’20’.

Clrf h’21’; очищаем регистр по адресу h’21’.

....

Clrf h’7E’; очищаем регистр по адресу h’7E’.

Clrf h’7F’; очищаем регистр по адресу h’7F’.

Несмотря на то, что этот код вполне работоспособен, он чрезвычайно неэф­фективен. Каждая из 96 команд выполняет одну и ту же операцию, хотя и для дру­гого адреса.

 




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 1924; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.