Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦМПУ / Новая папка / Лаб5ЦМПУ.docx
Скачиваний:
19
Добавлен:
16.04.2015
Размер:
338.25 Кб
Скачать

Лабораторная работа №5

«Изучение логических операций»

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

Теоретическое введение

Команды группы «логические функции» выполняют логические (булевы) операции над байтами, содержащимися в регистрах. В основе построения циф­ровых схем лежит логический вентиль, а наиболее широко используются три базовые функции вентиля: "И", "ИЛИ", "Исключающее ИЛИ", а также вычисление обратного и дополнительного кодов числа. К этой группе можно отнести также команды очистки/установки регистров и команду перестановки тетрад (половина байта, состоящая из 4 бит, называется тетрада.). Все операции производятся над регистрами общего назначения, результат хранится в одном из РОН. Все логические операции выполняются за один машинный цикл.

Описание выводов

VCC - напряжение питания цифровых элементов

GND - общий

Порт A (PA7..PA0) – 8-разрядный порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта A имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта А будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта A находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт А также выполняет некоторые специальные функции ATmega128 (см. Лабораторную работу №6).

Порт В (PВ7..PВ0) – 8-разрядный порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта В имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии по9рта B будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта B находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт В также выполняет некоторые специальные функции ATmega128 (см. Лабораторную работу №6).

Порт C (PC7..PC0) – 8-разрядный порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта C имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта C будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта C находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт C также выполняет некоторые специальные функции ATmega128 (см. Лабораторную работу №6).

Порт D (PD7..PD0) – 8-разрядный порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта D имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта D будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта D находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт D также выполняет некоторые специальные функции ATmega128 (см. Лабораторную работу №6).

Порт E (PE7..PE0) – 8-разрядный порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта E имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта E будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта E находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт E также выполняет некоторые специальные функции ATmega128 (см. Лабораторную работу №6).

Порт F (PF7..PF0) – Порт F действует как аналоговый ввод аналогово-цифрового преобразователя. Порт F также может использоваться как 8-разрядный порт двунаправленного ввода-вывода, если АЦП не используется. К каждой линии порта может быть подключен встроенный подтягивающий к плюсу резистор (выбирается раздельно для каждого бита). Выходные буферы порта F имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта F будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта F находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Если активизирован интерфейс JTAG, то подтягивающие резисторы на линиях PF7(TDI), PF5(TMS) и PF4(TCK) будут подключены, даже если выполняется Сброс.

Вывод TDO находится в третьем состоянии, если не введено состояние TAP, при котором сдвигаются выводимые данные.

Порт F также выполняет функции интерфейса JTAG.

Порт G (PG4..PG0) – 5-разрядный порт двунаправленного ввода-вывода с внутренними подтягивающими к плюсу резисторами (выбираются раздельно для каждого разряда). Выходные буферы порта G имеют симметричную выходную характеристику с одинаковыми втекающим и вытекающим токами. При вводе, линии порта G будут действовать как источник тока, если внешне действует низкий уровень и включены подтягивающие резисторы. Выводы порта G находятся в третьем (высокоимпедансном) состоянии при выполнении условия сброса, даже если синхронизация не запущена. Порт G также выполняет некоторые специальные функции ATmega128 (см. Лабораторную работу №6).

RESET - вход сброса. Если на этот вход приложить низкий уровень длительностью больше минимальной необходимой длительности, будет генерирован сброс независимо от работы синхронизации. Минимальная длительность внешнего импульса сброса приведена в таблице 5.1.

AND Rd,Rr (операция "Логического И" над содержимым двух РОН) Rd=Rd • Rr. Над содержимым регистра Rd и содержимым регистра Rr выполняется операция "Логическое И". Результат помещается в регистр Rd.

ANDI Rd,K (операция "Логического И" над содержимым РОН и константой) Rd = Rd • K. Над содержимым регистра Rd и 8-разрядным числом выполняется операция "Логическое И". Результат помещается в регистр Rd. Команда применима только к 16 старшим РОН (R16…R31).

EOR Rd,Rr (операция “Исключающее ИЛИ” над содержимым двух РОН) Rd=RdRr. Над содержимым регистров Rd и Rr выполня­ется операция “Исключающее ИЛИ”. Результат помещается в регистр Rd.

OR Rd,Rr (операция "ИЛИ" над содержимым двух РОН) Rd=Rd ٧ Rr. Над содержимым регистров Rd и Rr выполняется операция логическое "ИЛИ". Результат помещается в регистр Rd.

ORI Rd,K (операция "ИЛИ" над содержимым РОН и константой) Rd=Rd ٧ K. Над содержимым регистра Rd и 8-разрядным числом выполняется операция логическое "ИЛИ". Результат помещается в регистр Rd. Команда применима только к 16 старшим РОН (R16…R31).

СOМ Rd (перевод в обратный код) Rd = $FF-Rd. Вычисление обратного кода числа, находящегося в регистре Rd. Результат помещается в регистр Rd.

NEG Rd (вычисление дополнительного кода числа) Rd = $00-Rd. Вычисление дополнительного кода числа, находящегося в регистре Rd. Результат помещается в регистр Rd.

CLR Rd (очистка РОН) Rd=RdRd. Сбрасывает все разряды регистра общего назначения путем выполнения операции “Исключающее ИЛИ” регистра с самим собой.

SER Rd (установка РОН) Rd = $FF. Устанавливает все разряды регистра общего назначения в «1». Команда применима только к 16 старшим РОН (R16…R31).

TST Rd (проверка РОН на нулевое или отрицательное значение) Rd• Rd. Q Проверяет содержимое регистра на нулевое или отрицательное значение путем выполнения операции "Логическое И" регистра с самим собой. Содержимое регистра Rd не изменяется.

SWAP Rd (перестановка тетрад РОН) Rd(3-0)<Rd(7-4), Rd(7-4)<Rd(3-0). Команда производит перестановку старшего и младшего полубайта содержимого регистра Rd.

ASR Rd (арифметический сдвиг вправо) Rd(n)<Rd(n+1), n=0..6. Сдвигает содержимое регистра Rd на 1 разряд вправо. Состояние 7-го разряда не изменяется. Значение 0-го разряда помещается в флаг С регистра SREG. Часто используется для деления чисел со знаком на два.

LSL Rd (логический сдвиг влево) Rd(n+1)<Rd(n), Rd(0)<0. Сдвигает все разряды регистра Rd влево. Нулевой разряд сбрасывается в «0», а седьмой разряд загружается в флаг С регистра SREG. Эквивалентна команде ADD Rd,Rd.

LSR Rd (логический сдвиг вправо) Rd(n)<Rd(n+1), Rd(7)<0. Сдвигает все разряды регистра Rd вправо. Седьмой разряд сбрасывается в «0», а нулевой разряд загружается в флаг С регистра SREG.

ROL Rd (сдвиг влево через перенос) Rd(0)<C, Rd(n+1)<Rd(n), C<Rd(7). Сдвигает содержимое регистра Rd влево на один разряд. В нулевой разряд заносится содержимое флага С регистра SREG, а седьмой разряд загружается в флаг С. В комбинации с командой LSL данная команда может использоваться для умножения многобайтных чисел (как знаковых, так и беззнаковых) на два. Эквивалентна команде ADD Rd,Rd. Значение флага V равно "ИСКЛЮЧАЮЩЕМУ ИЛИ" флагов N и С после сдвига.

ROR Rd (сдвиг вправо через перенос) Rd(7)<C, Rd(n)<Rd(n+1), C<Rd(0). Сдвигает содержимое регистра Rd вправо на один разряд. В седьмой разряд заносится содержимое флага С регистра SREG, а нулевой разряд загружается в флаг С. В комбинации с командой ASR данная команда может использоваться для деления многобайтных знаковых чисел на два. А в комбинации с командой LSL – для деления многобайтных беззнаковых чисел на два. Значение флага V равно "ИСКЛЮЧАЮЩЕМУ ИЛИ" флагов N и С после сдвига.

BSET s (установка разряда регистра SREG) SREG.s=1. Устанавливает заданный разряд регистра SREG. Остальные разряды регистра SREG остаются без изменения.

BCLR s (сброс разряда регистра SREG) SREG.s=0. Сбрасывает заданный разряд регистра SREG. Остальные разряды регистра SREG остаются без изменения.

SEC (установка флага переноса) С = 1. Устанавливает в «1» флаг переноса С регистра SREG. Эквивалентна команде BSET 0.

CLC (сброс флага переноса) С = 0. Сбрасывает в «0» флаг переноса С регистра SREG. Эквивалентна команде BCLS 0.

Здесь были приведены некоторые команды установки флагов. Установка остальных флагов регистра SREG происходит аналогично при помощи соответствующих команд, приведенных в списке команд. Также аналогично происходит установка и сброс разрядов регистра ввода/вывода, РОН, загрузка и запись разряда РОН из и флаг Т регистра SREG.

Соседние файлы в папке Новая папка