КАТЕГОРИИ: Архитектура-(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, хотя часто обозначают и наоборот.
управляющие технологическим процессом, или кнопки и датчики для ввода информации в МК. С их помощью можно подключить, например, вентилятор, конвейер, насос подачи реагента и т.д. Если на соответствующем выводе порта будет напряжение (обозначаемое цифрой 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
В таблице 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)
Внимание! Символьное имя S обозначает регистр Status. После рассмотрения назначения бит регистра Status понятно почему его очистка приводит к результату, показанному в таблице 3.3. Т а б л и ц а 3.3 – Значения регистра Status после команды CLRF STATUS
Рассмотрим влияние арифметических операций на биты регистра Status. Т а б л и ц а 3.4 – Математические примеры на сложение
В примерах а) и б) таблицы 3.4 все нормально, результаты реальны, т.к. 14810=100101002. В примерах в) и г) также результаты совпадают, поскольку 26010=1000001002. Однако поскольку в регистре всего 8 бит, то самая старшая единица уйдет в перенос в бит Carry, и в результате формально получим, что 240+20=4 поскольку регистр переполнился. В примере а) бит С=0, в примере б) бит С=1. Таким образом, если в регистре Status бит С=1 при сложении, то было переполнение регистра и результат неверен. Т а б л и ц а 3.5 – Математические примеры на вычитание
В окне наблюдения (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; Просмотров: 1967; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |