Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Системой счисления называется совокупность правил для обозначения (записи)
действительных чисел с помощью цифровых знаков. Для записи чисел в
конкретных системах счисления используется некоторый конечный алфавит,
состоящий из цифр а1 , а2, а3,….,аn.
Позиционные системы счисления
Позиционная систе́ма счисле́ния система счисления, в которой один и тот же числовой знак (цифра) в записи числа имеет различные значения в зависимости от того места (разряда), где он расположен.
Любая позиционная система характеризуется своим основанием. Основание позиционной
системы счисления - это количество различных знаков или символов,
используемых для изображения цифр в данной системе. За основание можно
принять любое натуральное число - два, три, четыре, шестнадцать и т.д.
Системы счисления
Двоичная система счисления.
В этой системе всего две цифры - 0 и 1. Особую роль здесь играет число 2 и
его степени: 2, 4, 8 и т.д. Самая правая цифра числа показывает число
единиц, следующая цифра - число двоек, следующая - число четверок и т.д.
Двоичная система счисления позволяет закодировать любое натуральное число -
представить его в виде последовательности нулей и единиц.
Шестнадцатиричная система счисления.
Шестнадцатеричная система В качестве первых 10 из 16 шестнадцатеричных цифр взяты привычные цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, а вот в качестве остальных 6 цифр используют первые буквы латинского алфавита: A, B, C, D, E, F. Цифра 1, записанная в самом младшем разряде, означат просто единицу. Та же цифра 1 в следующем - 16 (десятичное), в следующем - 256 (десятичное) и т.д. Цифра F, указанная в самом младшем разряде, означает 15 (десятичное).
Те же самые команды, что и для чисел в двоичном дополнительном коде, используются в программе для работы с числами в двоично-десятичном коде BCD. Однако результат арифметических операций может оказаться неправильным для двоично-десятичного представления. Команды десятичной коррекции корректируют результат, полученный после действий двоичной арифметики.
Десятичная коррекция для сложения DAA и десятичная коррекция для вычитания DAS используются для работы только с упакованными десятичными числами. В упакованном десятичном числе каждый байт содержит две десятичные цифры. Команды DAA и DAS работают только с байтом данных, содержащимся в регистре AL. В связи с этими присущими командам ограничениями, ни у DAA, ни у DAS операндов нет.
Команда DAA правильно устанавливает регистр флагов. Если в результате сложения получилось значение в диапазоне 100 - 198, флаг переноса показывает перенос из старшей десятичной позиции. Аналогично, нулевой результат оставляет установленным в 1 флаг нуля. В случае операций с упакованными десятичными числами флаги знака и переполнения не имеют значения, хотя флаг знака устанавливается, если установлен старший бит регистра AL. Команда DAA использует флаг дополнительного переноса для определения вида коррекции, но после выполнения этой команды флаг дополнительного переноса неопределен.
Обратный код
В обратном коде для обозначения знака положительного числа используется бит, равный нулю, и знака отрицательного единица. Обратный код отрицательного двоичного числа формируется дополнением модуля исходного числа нулями до самого старшего разряда модуля, а затем поразрядной заменой всех нулей числа на единицу и всех единиц на нули. В знаковом разряде обратного кода у положительных чисел будет 0, а у отрицательных1.
В общем случае ОК является дополнением модуля исходного числа до наибольшего числа без знака, помещенного в разрядную сетку.
Дополнительный код
Дополнительный код строится следующим образом. Сначала формируется
обратный код, а затем к младшему разряду добавляют 1. При выполнении арифметических операций положительные числа представляются в прямом коде, а отрицательные числа в ДК.
Признак переполнения разрядной сетки
При алгебраическом суммировании двух чисел, помещающихся в разрядную сетку, может возникнуть переполнение, т.е. образуется сумма, требующая для своего представления на один двоичный разряд больше, чем разрядная сетка слагаемых. Предполагается, что положительные числа представляются в прямом коде, а отрицательные − в дополнительном.
Признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из знакового разряда (положительное переполнение) или
наличие переноса из знакового разряда суммы при отсутствии переноса в знаковый
разряд (отрицательное переполнение).
При положительном переполнении результат операции положительный, а при
отрицательном переполнении отрицательный.
Если и в знаковый, и из знакового разряда суммы есть переносы или этих пере-
носов нет, то переполнение отсутствует.
При кодировании информация представляется в виде дискретных данных. Декодирование является обратным к кодированию процессом.
Кодирование - переход от одной формы представления информации к другой, более удобной для хранения, передачи или обработки. Компьютер может обрабатывать только информацию, представленную в числовой форме.
Знаки или символы любой природы, из которых конструируются информационные сообщения, называют кодами. Полный набор кодов составляет алфавит кодирования. Простейшим алфавитом, достаточным для записи информации о чем-либо, является алфавит из двух символов, описывающих два его альтернативных состояния ("да" - "нет", "+" - "-", 0 или 1).
Как правило, все числа в компьютере представляются с помощью нулей и единиц (а не десяти цифр, как это привычно для людей). Иными словами, компьютеры обычно работают в двоичной системе счисления, поскольку при этом устройства для их обработки получаются значительно более простыми. Ввод чисел в компьютер и вывод их для чтения человеком может осуществляться в привычной десятичной форме, а все необходимые преобразования выполняют программы, работающие на компьютере.
Способ кодирования зависит от цели, ради которой оно осуществляется. Это может быть сокращение записи, засекречивание (шифровка) информации, или, напротив, достижение взаимопонимания. От того, как представлена информация, зависит способ ее обработки, хранения, передачи и т.д.
Устройство построенное на полупроводникового кристалла, помещенное в неразборный корпус.
Функционирование процессора заключается в последовательном выполнении рабочих циклов исполнения команд. Процедура и время исполнения команды называется рабочим или командным циклом. Командный цикл состоит из нескольких машинных циклов. Машинным циклом называют процедуру и время одного обмена процессора с внешним устройством. Машинный цикл состоит из нескольких машинных тактов. Длительность машинного такта это единица дискретного времени, которая задается тактами генератора. В асинхронных микропроцессорах длительность машинного цикла и командного цикла определяется:
задержками распространения сигналов внутри МП,
задержками распространения сигналов между МП и внешним устройством,
временем переключения электронных схем и временем, затрачиваемым на передачу запроса и получения подтверждения.
Выполнение любой команды в любом МП можно разделить на 5 основных этапов.
Командный цикл выполняется за время, равному сумме времени исполнения каждого этапа. Современные микропроцессоры используют принцип конвейерного исполнения команд. Этот принцип основан на том, что для выполнения каждого этапа МП оснащается соответствующим аппаратурным узлом. Такой подход позволяет совмещать операции во времени.
№ |
Td |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 |
t 1 |
t 2 |
t 3 |
t 4 |
t 5 |
|||||
2 |
t 1 |
t 2 |
t 3 |
t 4 |
t 5 |
|||||
3 |
t 1 |
t 2 |
t 3 |
t 4 |
t 5 |
|||||
4 |
t 1 |
t 2 |
t 3 |
t 4 |
t 5 |
|||||
5 |
t 1 |
t 2 |
t 3 |
t 4 |
t 5 |
Td дискретное время.
Р ис. 3.12
Формирование шины адреса системы
Шина адреса МС на базе микропроцессора К580 является однонаправленной 16-разрядной. Поскольку направление передачи в ША системы происходит в одном направлении, а выводы канала А шинного формирователя предпочтительно подключить к микропроцессору, то ШФ должен быть включен в режим для передачи данных из канала А в канал В, для чего на вывод Т необходимо подать сигнал высокого уровня.
Формирование шины данных системы
Шина данных системы служит для передачи 8-разрядных данных в двух направлениях: от МП к ВУ и в обратном направлении. Поэтому буфер шины данных, реализованный на одной микросхеме К580ВА86, должен иметь возможность переключения направления передачи данных. Для этой цели удобно использовать сигналы микропроцессора ПМ - прием и ВД - запись. В режиме приема высоким уровнем сигнала ПМ формирователь обеспечивает передачу данных из канала В и шины данных в микропроцессор. В режиме записи низким уровнем сигнала ПМ на входе Т формирователь изменит направление передачи данных, и данные будут передаваться от микропроцессора в шину данных системы. В режиме захвата высоким уровнем сигнала ПЗХ на входе ВК формирователя любые передачи будут блокированы.
Рис. 3.13
Формирование системной шины управления
Микропроцессорная система может содержать значительное количество внешних устройств. Для обмена данными между ними все ВУ подключаются к общей системной шине данных и системной адресной шине. Для четкого взаимодействия микропроцессора и ВУ необходимы специальные управляющие сигналы, составляющие системную шину управления. Для управления процессом обмена данными с ВУ микропроцессор имеет только два сигнала управления: ПМ - прием и ВД - запись. Этих сигналов явно недостаточно, поэтому сигналы системной шины управления формируются специальной схемой с использованием управляющих сигналов ПМ и ВД и байта «слова состояния» микропроцессора.
На рис. 3.14 изображена логическая схема формирования системной шины управления. Стробирующий сигнал СТС, формируемый тактовым генератором К580ГФ24, используется для записи байта состояния в регистр, в качестве которого можно использовать любой 8-разрядный регистр, например К580ИР82.
Рис. 3.14
Команды вызова подпрограмм
Для вызова подпрограмм в микроконтроллерах семейства Mega имеются три команды: команда относительного вызова RCALL, команда абсолютного вызова CALL, а также команда косвенного вызова ICALL.
В программах в качестве операндов этой команды, как и в случае команды RJMP, используются метки. Ассемблер сам вычисляет величину перехода и представляет это значение в слово команды.
Команда относительного вызова подпрограмм выполняется за 3 машинных цикла, два из которых затрачиваются на сохранение в стеке содержимого двухбайтного счетчика команд.
Абсолютный вызов подпрограммы команда CALL
При выполнении команды после сохранения в стеке текущего значения счетчика команд в последний загружается число, являющееся операндом команды.
Команда абсолютного вызова подпрограмм выполняется за 4 машинных цикла.
Косвенный вызов подпрограммы команда ICALL
Как и команда RCALL, команда косвенного вызова подпрограмм вы¬полняется за 3 машинных цикла.
Стек
Во всех микроконтроллерах семейства Mega стек реализован программно. Он размещается в памяти данных, и его глубина определяется только размером свободной области памяти программ. В качестве указателя стека во всех моделях используется пара регистров ввода/вывода SPH:SPL. Так как после подачи напряжения питания (или после сброса) в регистрах содержится нужное. значение, в самом начале программы указатель стека необходимо проанализировать, записав в него значение верхнего адреса памяти данных. Для работы со стеком в наборе команд имеется две команды: команда занесения в стек (PUSH) и команда извлечения из стека (POP).
Прерывания
Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием микроконтроллера. При возникновении прерывания микроконтроллер сохраняет в стеке содержимое счетчика команд PC и загружает в него адрес соответствующего вектора прерывания. По этому адресу, как правило, находится команда безусловного перехода к подпрограмме обработки прерывания. Последней командой подпрограммы обработки прерывания должна быть команда RETI, которая обеспечивает возврат в основную программу и восстановление предварительно сохраненного счетчика команд.
Для передачи данных в информационных системах наиболее часто применяется последовательная (полудуплексная) передача. Она разделяется на два метода:
а) Асинхронная передача;
б) Синхронная передача.
а) При асинхронной передаче каждый символ передаётся отдельной посылкой. Стартовые биты предупреждают о начале передачи. Затем передаётся символ. Для определения достоверности передачи используется бит чётности (бит чётности равен 1, если количество единиц в символе нечётно, и равен 0 в противном случае). Последний бит сигнализирует об окончании передачи.
Преимущества:
1) Несложная отработанная система;
2) Недорогое интерфейсное оборудование.
Недостатки:
1) Третья часть пропускной способности теряется на передачу служебных битов;
2) Невысокая скорость передачи данных по сравнению с синхронной;
3) При множественной ошибке с помощью бита чётности невозможно определить достоверность полученной информации.
б) При использовании синхронного метода данные передаются блоками. Для синхронизации работы приёмника и передатчика в начале блока передаются биты синхронизации. Затем передаются данные, код обнаружения ошибки и символ окончания передачи. Код обнаружения ошибки вычисляется по содержимому поля данных и позволяет однозначно определить достоверность принятой информации.
Преимущества:
1) Высокая эффективность передачи данных;
2) Высокая скорость передачи данных;
3) Надёжный встроенный механизм обнаружения ошибок.
Интерфейс передачи данных - интерфейс, обеспечивающий передачу двоичных данных. В зависимости от способа передачи данных различают последовательный и параллельный интерфейсы.
Параллельный интерфейс - интерфейс, обеспечивающий одновременную передачу двоичных данных по нескольким линиям.
Последовательный интерфейс - интерфейс, обеспечивающий передачу последовательности битов по единственной линии.
Важной характеристикой команды является ее формат, определяющий структурные элементы команды, каждый из которых интерпретируется определенные образом при ее выполнении. Среди таких элементов (полей) команды выделяют следующие: код операции, определяющий выполняемое действие; адрес ячейки памяти, регистра процессора, внешнего устройства; режим адресации; операнд при использовании непосредственной адресации; код анализируемых признаков для команд условного перехода.
Классификация команд по основным признакам представлена на рис. 2.4. Важнейшим структурным элементом формата любой команды является код операции (КОП), определяющей действие, которое должно быть выполнено.
Рис. 2.4. Классификация команд.
Для взаимодействия с различными модулями в ЭВМ должны быть средства идентификации ячеек внешней памяти, ячеек внутренней памяти, регистров МП и регистров устройств ввода/вывода. Поэтому каждой из запоминающих ячеек присваивается адрес, т.е. однозначная комбинация бит. Количество бит определяет число идентифицируемых ячеек. Память хранит как данные, так и команды. Поэтому для ЭВМ разработано множество способов обращения к памяти, называемых режимами адресации.
Режим адресации памяти - это процедура или схема преобразования адресной информации об операнде в его исполнительный адрес.
Все способы адресации памяти можно разделить на:
1) прямой, когда исполнительный адрес берется непосредственно из команды или вычисляется с использованием значения, указанного в команде, и содержимого какого-либо регистра (прямая адресация, регистровая, базовая, индексная и т.д.);
2) косвенный, который предполагает, что в команде содержится значение косвенного адреса, т.е. адреса ячейки памяти, в которой находится окончательный исполнительный адрес (косвенная адресация).
Архитектура однокристальных микроЭВМ отличается:
1.Не классической архитектурой (память данных и программ разделена)
2.Система команд бывает полная, бывает сокращенная
3.Узкий интерфейс
Однокристальные микроЭВМ предназначены для автоматизации периферийных устройств ЭВМ, создания локальных контролеров, интеллектуальных приборов и других задач для решения которых достаточно внутренних ресурсов МК. МК содержит:
-АЛУ
-УУ
-ТГ
-Память программ
-Память данных
-Параллельные порты
-Последовательные порты
-Таймеры- счетчики
-Блок приоритетных прерываний
-и др. узлы
Базовое ядро МК-51 содержит:
Контролеры могут содержать и другие узлы:
1.Супервизер питания
2.Сторожевой таймер Watch Dog
3.Регистры- защелки к таймерам (для удобства измерения частоты и времени)
4.Аналоговые компараторы (это устройство сравнения)
5.АЦП с аналоговым коммутатором на входе (многоканальный АЦП) 8,10,12,14 -ти разрядное АЦП
6.ШИМ контролеры
Двунаправленная шина данных (ШД) соединяет большинство внутренних узлов МП и через буфер (усилитель) соединена с внешней шиной данных. Вычислительным узлом является арифметико-логическое устройство (АЛУ), которое выполняет
арифметические операции (сложение, вычитание, инкремент, декремент, умножение, деление),
логические операции (И, ИЛИ, НЕ, исключающее ИЛИ), сдвиги (логические, циклические, арифметические).
Для хранения промежуточных результатов имеются регистры временного хранения. Сверхоперативное ЗУ представлено регистрами общего назначения (РОН) самая быстрая память, расположенная внутри кристалла МП.
Количество регистров 8, 16, и 32; чаще их число соответствует разрядности процессора. Устройство управления (УУ) в однокристальном микропроцессоре жестко запрограммировано на выполнение фиксированных команд. УУ состоит из регистра команд (PK), дешифратора (Дш. K), схемы распределения импульсов (Сх. РИ). Очередная команда поступает по шине данных в регистр команд, затем декодируется в дешифраторе команд и преобразовывается в последовательность импульсов.
Регистр адреса (РА) через РА к внешним устройствам передается адрес (либо адрес следующей команды, который формируется счетчиком команд, либо адрес данных, который формируется процессором из адресной части команд).
РОН сверхоперативная память внутри кристальная. Содержит 8, 16 или 32 регистра. Среди РОН выделяют регистр накопитель (аккумулятор). При наличии аккумулятора большинство операций выполняется с его участием.
На рис.1.2 изображен корпус и приведено назначение выводов микроконтроллера ATmega128. В скобках указана альтернативная функция вывода, если она существует.
Рис.1.2 Вид корпуса и назначение выводов микроконтроллера ATmega128
Port A (PA7..PA). 8-разрядный двунаправленный порт. К выводам порта могут быть подключены встроенные нагрузочные резисторы (отдельно к каждому разряду). Порт А при наличии внешней памяти данных используется для организации мультиплексируемой шины адреса/данных.
Port B (PB7..PB0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Порт В используется также при реализации специальных функций.
Port C (PC7..PC0). Порт С является 8-разрядным выходным портом. Порт C при наличии внешней памяти данных используется для организации шины адреса.
Port D (PD7..PD0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Порт D используется также при реализации специальных функций.
Port Е (PЕ7..PЕ0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Порт E используется также при реализации специальных функций.
Port F (PF7..PF0). 8-разрядный входной порт. Входы порта используются также как аналоговые входы аналого-цифрового преобразователя.
RESET. Вход сброса. Для выполнения сброса необходимо удерживать низкий уровень на входе более 50 нс.
XTAL1, XTAL2. Вход и выход инвертирующего усилителя генератора тактовой частоты.
TOSC1, TOSC2. Вход и выход инвертирующего усилителя генератора таймера/счетчика.
WR, RD. Стробы записи и чтения внешней памяти данных.
ALE. Строб разрешения фиксации адреса внешней памяти. Строб ALE используется для фиксации младшего байта адреса с выводов AD0-AD7 в защелке адреса в течение первого цикла обращения. В течение второго цикла обращения выводы AD0-AD7 используются для передачи данных.
AVCC. Напряжение питания аналого-цифрового преобразователя. Вывод подсоединяется к VCC через низкочастотный фильтр.
AREF. Вход опорного напряжения для аналого-цифрового преобразователя. На этот вывод подается напряжение в диапазоне между AGND и AVCC.
AGND. Это вывод должен быть подсоединен к отдельной аналоговой земле, если она есть на плате. В ином случае вывод подсоединяется к общей земле.
PEN. Вывод разрешения программирования через последовательный интерфейс. При удержании сигнала на этом выводе на низком уровне после включения питания, прибор переходит в режим программирования по последовательному каналу.
VСС, GND. Напряжение питания и земля
Микроконтроллер ATmega128 имеет четыре таймера/счетчика: два 8-разрядных Таймер 0, Таймер 2 и два 16-разрядных Таймер1, Таймер 3.
8-разрядные таймеры/счетчики Т/С0 и Т/С2.
Таймеры/счетчики T/C0 и T/C2 предназначены для отсчета и измерения временных интервалов, генерации сигналов с широтно-импульсной модуляцией (ШИМ), а также как счетчик внешних событий.
Таймеры/счетчики T/C0 и T/C2 отличаются только наличием асинхронного режима работы в таймере/счетчике T/C0.
В состав таймеров/счетчиков входят 3 регистра ввода/вывода:
Таймеры/счетчики 0 и 2 можно использовать как 8-разрядные широтно-импульсные модуляторы. В этом режиме таймер/счетчик, совместно с регистром совпадения выхода, работает как автономный ШИМ с центрированными импульсами без ложных выбросов.
Условие таймер/счетчик остановлен обеспечивает реализацию функции разрешения/запрещения таймера.
16-разрядные таймеры/счетчики T/C1 и T/C3
Как и восьмиразрядные таймеры/счетчики T/C0 и T/C2, шестнадцатиразрядные таймер/счетчики T/C1 и T/C3 используются для формирования временных интервалов, подсчета внешних событий, формирования сигналов и генерации сигналов с ШИМ, а также в отличие от восьмиразрядных могут по внешнему сигналу сохранять свое текущее состояние в отдельном регистре ввода/вывода.
В состав каждого таймера/счетчика входят следующие регистры ввода/вывода:
Каждый из 16-разрядных регистров физически размещается в двух регистрах ввода/вывода, названия которых получаются добавлением к названию регистра буквы «Н» (старший байт) и «L» (младший байт). Счетный регистр таймера счетчика TCNT1.
ATmega128 содержит 10-разр. АЦП последовательного приближения. АЦП связан с 8-канальным аналоговым мультиплексором, 8 однополярных входов которого связаны с линиями порта F.
Принцип действия.
АЦП преобразовывает входное аналоговое напряжение в 10-разр. код методом последовательных приближений.
Работа АЦП разрешается путем установки бита ADEN в ADCSRA. Выбор опорного источника и канала преобразования не возможно выполнить до установки ADEN.
АЦП генерирует 10-разрядный результат, который помещается в пару регистров данных АЦП ADCH и ADCL.
Аналоговый компаратор сравнивает уровни напряжений на неинвертирующем входе AIN0(PE2) и инвертирующем входе AIN1(PE3). Если напряжение на неинвертирующем входе AIN0 превышает напряжение на инвертирующем входе AIN1, то выход аналогового компаратора ACO принимает единичное состояние. Выход компаратора может быть настроен для использования в качестве источника входного сигнала для схемы захвата фронтов таймера-счетчика 1. Компаратор может генерировать собственный запрос на обработку прерывания.
Рисунок 7.1 Схема подключения аналогового компаратора.
Отличительные особенности:
Процесс инициализации обычно состоит из установки скорости связи, задания формата посылки и разрешения работы передатчика и приемника.
Работа передатчика USART разрешается путем установки бита разрешения передачи (TXENх) в регистре UCSRxB. После разрешения, функция вывода TxD как обычного порта заменяется на функцию выхода последовательной передачи данных.
Начало передачи инициируется записью передаваемых данных в буфер передатчика. Буферизованные данные в буфере передатчика будут перемещены в сдвиговый регистр, после того как он будет готов к отправке новой посылки.
Флаги и прерывания передатчика.
Передатчик USART имеет два флага, которые индицируют его состояние: флаг освобождения регистра данных UDREх и флаг завершения передачи TXCх в регистре UCSRхA. Оба флага могут использоваться для генерации прерываний.
Флаг освобождения регистра данных UDREх индицирует готовность буфера передатчика принять новые данные.
Флаг завершения передачи TXCх принимает единичное значение, если вся посылка в сдвиговом регистре передатчика была полностью сдвинута и в буфере передатчика отсутствуют новые данные для передачи.
Работа приемника USART разрешается, если записать лог. 1 в бит разрешения работы приемника RXENх в регистре UCSRхB. После разрешения работы приемника обычное назначение вывода RxD заменяется на вход последовательного ввода данных приемника USART.
Приемник начинает прием данных только после определения действительного старт-бита. Выборка следующих за старт-битом бит данных происходит с частотой равной скорости связи.
Флаг и прерывание по завершению приема.
Флаг завершения приема RXCх в регистре UCSRxA сигнализирует о наличии несчитанных данных в приемном буфере. Данный флаг равен 1, если имеются несчитанные данные, и равен 0, если буфер приемника свободен (т.е. не содержит каких-либо несчитанных данных).
В настоящее время исходный текст программы пишется на одном из языков программирования.
Сами языки программирования в свою очередь делятся на две группы:
К языкам программирования "низкого" уровня относятся языки программирования в которых каждому оператору соответствует не более одной машинной команды.
Языки программирования "высокого" уровня позволяют заменять один оператор несколькими машинными командами. Это позволяет увеличивать производительность труда программистов. Кроме того, языки "высокого" уровня позволяют писать программы, которые могут выполняться на различных микропроцессорах.
Языки программирования высокого уровня позволяют значительно сократить время создания программы, но при этом увеличивается размер программы, поэтому для выбора такого языка программирования для микропроцессорных систем необходимо иметь достаточно большой объём памяти программ (несколько десятков килобайт). Увеличение объёма программы связано с несколькими факторами:
Первый из этих пунктов постепенно утрачивает своё значение с появлением всё более совершенных трансляторов. Третий пункт тоже решается тем же путём при применении различных видов оптимизаторов, входящих в состав компилятора.
Микроконтроллеры ATmega128 используют 34 источника прерывания. Эти прерывания и механизм сброса располагают отдельными векторами в пространстве памяти программ. Каждому прерыванию присвоен свой бит разрешения, который должен быть установлен совместно с битом I регистра статуса SREG.
Младшие адреса пространства памяти программ автоматически определяются как векторы сброса и прерываний.
Прерывания с младшими адресами имеют больший уровень приоритета: RESET имеет наивысший уровень приоритета, следующим является запрос внешнего прерывания INT0 и т.д.
Микроконтроллеры ATmega128 содержат два специальных 8-разрядных регистра масок прерываний: регистр масок внешних прерываний EIMSK (External Interrupt Mask) и регистр масок прерываний таймеров/счетчиков TIMSK (Timer/Counter Interrupt Mask). Кроме того, в регистрах управления блоками ввода-вывода могут существовать и другие биты разрешения и биты масок.
При возникновении прерывания бит I разрешения всех прерываний (в регистре SREG) очищается и все прерывания запрещаются. Процедура прерывания может установить бит I, чтобы разрешить вложенные прерывания. Выход из процедуры обработки прерывания происходит по команде RETI, которая устанавливает бит I (=1).
Когда в счетчик команд загружен вектор процедуры обработки прерывания, соответствующий флаг, вызвавший прерывание, аппаратно очищается. Некоторые флаги прерываний можно очистить программно.
Если условия прерывания возникли, когда соответствующий бит разрешения очищен, флаг этого прерывания будет установлен и сохранен в таком состоянии, пока прерывание не будет разрешено, или флаг не будет очищен программно.
При создании программы для микроконтроллера на языке Ассемблер разработчик оперирует программно доступными ресурсами микропроцессорной системы. У микроконтроллера ATmega128 эти ресурсы включают: программно доступные регистры микроконтроллера, внутреннюю память данных, внешнюю память данных. Перечисленные ресурсы изображены на рис. В2, В3.
Каждая команда языка Ассемблер сообщает процессору выполняемую операцию и методы доступа к операндам. Командная строка Ассемблера включает метку (символический адрес), мнемонику (символическое имя) команды, поле операндов, комментарий. Имя команды однозначно связано с выполняемой ею операцией.
Методы адресации представляют собой набор механизмов доступа к операндам. Одни из них просты и поэтому приводят к компактному формату команды и быстрому доступу к операнду, но объем доступных с их помощью ресурсов ограничен. Другие методы адресации позволяют оперировать со всеми имеющимися в системе ресурсами, но команда получается длинной, на ее ввод и выполнение тратится много времени. Набор методов адресации в каждой системе команд является компромиссным сочетанием известных механизмов адресации, выбранных проектировщиками архитектуры исходя из набора решаемых задач.
Заметим, что при двух операндах и приемнике результата имеет место трехадресная команда и каждый адрес формируется с использованием собственного метода адресации. Если адрес операнда или приемника результата не указан в команде, а подразумевается, то имеет место неявная адресация.
На рис.1.1 1.12 приведены схемы методов адресации микроконтроллера ATmega128.
Рис.1.1. Регистровая адресация (один регистр общего назначения)
Рис.1.2. Регистровая адресация (два регистра общего назначения)
Рис.1.3. Регистровая адресация (регистры ввода-вывода)
Рис.1.4. Прямая адресация данных
Рис.1.5. Косвенная адресация данных со смещением
Рис.1.6. Косвенная адресация данных
Рис.1.7. Косвенная адресация данных с преддекрементом
Рис.1.8. Косвенная адресация данных с постинкрементом
Рис.1.9. Адресация константы в памяти программ в командах LPM и ELPM
Рис.1.10. Прямая адресация памяти программ в командах JMP и CALL
Рис.1.11. Косвенная адресация памяти программ в командах IJMP и ICALL
Рис.1.12. Относительная адресация памяти программ в командах RJMP и RCALL
Таблица 1.1. Команды пересылки данных
Мнемо-ника |
Операн-ды |
Описание |
Операция |
Флаги |
Кол-во циклов |
ELPM |
Расширенная загрузка из памяти программ в регистр R0 |
R0 (Z+RAMPZ) |
Нет |
3 |
|
MOV |
Rd,Rr 0d31 0r31 |
Копировать регистр |
Rd Rr |
Нет |
1 |
LDI |
Rd,K 16d31 0k255 |
Загрузить непосредственное значение |
Rd K |
Нет |
1 |
LDS |
Rd,k 0d31 0k65535 |
Загрузить из ОЗУ |
Rd (k) |
Нет |
3 |
LD |
Rd,X 0d31 |
Загрузить косвенно |
Rd (X) |
Нет |
2 |
LD |
Rd,X+ 0d31 |
Загрузить косвенно с постинкрементом |
Rd (X), X X+1 |
Нет |
2 |
LD |
Rd,-X 0d31 |
Загрузить косвенно с преддекрементом |
X X - 1, Rd (X) |
Нет |
2 |
LD |
Rd,Y 0d31 |
Загрузить косвенно |
Rd (Y), |
Нет |
2 |
LD |
Rd,Y+ 0d31 |
Загрузить косвенно с постинкрементом |
Rd (Y), Y Y+1 |
Нет |
2 |
LD |
Rd,-Y 0d31 |
Загрузить косвенно с преддекрементом |
Y Y - 1, Rd (Y) |
Нет |
2 |
LDD |
Rd,Y+q 0d31 0q63 |
Загрузить косвенно со смещением |
Rd (Y+q) |
Нет |
2 |
LD |
Rd,Z 0d31 |
Загрузить косвенно |
Rd (Z) |
Нет |
2 |
LD |
Rd,Z+ 0d31 |
Загрузить косвенно с постинкрементом |
Rd (Z), Z Z+1 |
Нет |
2 |
LD |
Rd,-Z 0d31 |
Загрузить косвенно с преддекрементом |
Z Z - 1, Rd (Z) |
Нет |
2 |
LDD |
Rd,Z+q 0d31 0q31 |
Загрузить косвенно со смещением |
Rd (Z+q) |
Нет |
2 |
STS |
k,Rr 0r31 0k65535 |
Загрузить непосредственно в ОЗУ |
(k) Rr |
Нет |
3 |
ST |
X,Rr 0r31 |
Записать косвенно |
(X) Rr |
Нет |
2 |
ST |
X+,Rr 0r31 |
Записать косвенно с постинкрементом |
(X) Rr, X X + 1 |
Нет |
2 |
ST |
-X,Rr 0r31 |
Записать косвенно с преддекрементом |
X X - 1, (X) Rr |
Нет |
2 |
ST |
Y,Rr 0r31 |
Записать косвенно |
(Y) Rr |
Нет |
2 |
ST |
Y+,Rr 0r31 |
Записать косвенно с постинкрементом |
(Y) Rr, Y Y + 1 |
Нет |
2 |
ST |
-Y,Rr 0r31 |
Записать косвенно с преддекрементом |
Y Y - 1, (Y) Rr |
Нет |
2 |
STD |
Y+q,Rr 0r31 0q63 |
Записать косвенно со смещением |
(Y+q) Rr |
Нет |
2 |
ST |
Z,Rr 0r31 |
Записать косвенно |
(Z) Rr |
Нет |
2 |
ST |
Z+,Rr 0r31 |
Записать косвенно с постинкрементом |
(Z) Rr, Z Z + 1 |
Нет |
2 |
ST |
-Z,Rr 0r31 |
Записать косвенно с преддекрементом |
Z Z - 1, (Z) Rr |
Нет |
2 |
STD |
Z+q,Rr 0r31 0q63 |
Записать косвенно со смещением |
(Z+q) Rr |
Нет |
2 |
LPM |
Загрузить байт из памяти программ |
R0 (Z) |
Нет |
3 |
|
IN |
Rd,P 0d31 0P63 |
Загрузить данные из порта I/O в регистр |
Rd P |
Нет |
1 |
OUT |
P,Rr 0r31 0P63 |
Записать данные из регистра в порт I/O |
P Rr |
Нет |
1 |
PUSH |
Rr 0r31 |
Сохранить регистр в стеке |
STACK Rr |
Нет |
2 |
POP |
Rd 0d31 |
Выгрузить регистр из стека |
Rd STACK |
Нет |
2 |
Команды ELPM и LPM выполняют загрузку памяти программ. Команда MOV копирует содержимое одного регистра общего назначения в другой. Команда LDI загружает регистр общего назначения непосредственно константой (только R16 R32), а команды LD выполняют загрузку регистра из ячейки ОЗУ при косвенной адресации, используя в качестве источника адреса регистры X, Y, Z, а также варианты с постинкрементом и преддекрементом источника. Команда LDD выполняет эту же операцию при помощи косвенной адресации со смещением. Команда LDS загружает в регистр общего назначения содержимое прямо адресуемой ячейки памяти данных.
Команда ST выполняют обратную операцию относительно LD заносит в косвенно адресуемую ячейку памяти данных содержимое регистра общего назначения, используя также варианты с постинкрементом и преддекрементом адреса. Команда STD выполняет эту же операцию при помощи косвенной адресации со смещением, а команда STS прямо адресует ячейку ОЗУ.
Команда IN заносит содержимое регистра ввода-вывода в регистр общего назначения, а команда OUT выполняет обратную операцию.
Команда PUSH сохраняет содержимое регистра в стеке, а команда POP выполняет обратную операцию. При выполнении этих команд кроме программного счетчика изменяется и значение указателя стека SP.
Обратите внимание, что метод адресации не указывается
В МПС применяют иерархическую, многоуровневую систему памяти.
Необходимой и достаточной для работы МПС является рабочая память (ОЗУ). ОЗУ- 10 наносекунд. Для ускорения исполнения программ, связи с внешними быстродействующими устройствами и для связи устройств с различным быстродействием применяются различные типы буферной памяти:
ПЗУ для хранения часто используемой информации::
1.масочное ПЗУ- память, которая программируются при изготовлении на заводе.
2.Однократно программируемые пользователем ПЗУ
3.Электрически программируемые ПЗУ с ультрофиолетовым стиранием (EPROM)
4.Электрически перепрограммируемые ПЗУ.(EEPRO)
Записываются и стираются на специальном программаторе.(FLASH)
5.Магистральная память используется редко и сегментно электрические ОЗУ
ОЗУ разделяют на 2 группы:
-статические ОЗУ. Бит информации хранится в триггере. Хранят информацию пока подключено напряжение питания, их не нужно подзаряжать.
-динамические ОЗУ. Бит информации хранится как заряд паразитной емкости МОП- транзистора (затвор исток).
Буферная память применяется для эффективной передачи информации между устройствами разного быстродействия. Для сообщения между любыми устройствами в том числе одинакового быстродействия часто применяют двухпортовую память.
Клавиатура является одним из наиболее распространенных устройств для ввода оператором в цифровую систему команд и данных. Обычно клавиши клавиатуры организованы в виде матрицы, и их состояние читается через параллельные порты.
На плате лабораторного макета смонтирована простая 12-кнопочная клавиатура, которая подключена к выводам PD0 PD6 порта PD микроконтроллера. Клавиатура имеет вид матрицы 4 х 3, кнопки обозначены А1 А3, В1 В3, С1 С3, D1 D3, где цифры 1, 2, 3 определяют номер столбца, а буквы A, B, C, D указывают позицию кнопки в столбце.
Подключение кнопок клавиатуры к выводам порта PD показано на рисунке 4.2. Для контроля состояния кнопки необходимо подать низкий потенциал (логический «0») на один из выводов микроконтроллера PD0, PD1, PD2 или PD3. В этом случае на выводе PD4, PD5 или PD6, подключенном к нажатой кнопке, установится «0».
Для определения текущего состояния клавиатуры микроконтроллер должен периодически считывать состояния выводов PD4 PD6, последовательно устанавливая на выводах PD0 PD3 состояние "0".
Для этого служит процедура опроса клавиатуры, посредством выполнения которой микроконтроллер определяет позицию нажатой кнопки. В реальных системах опрос клавиатуры производится периодически по сигналам таймера или осуществляется по запросу прерывания, формируемому клавиатурой. Основной проблемой при обслуживании клавиатуры является защита от дребезга контактов, который может привести к формированию ложной информации. Для защиты применяются как аппаратные, так и программные средства. На плате лабораторного макета аппаратных средств защиты от дребезга контактов нет, поэтому должны применяться исключительно программные методы, все варианты которых сводятся к повторному чтению состояния клавиатуры.
Нажатие клавиши должно вызывать ввод в цифровую систему определенного 8-разрядного символа. Кодировка клавиш, которая должна быть реализована при выполнении данной работы на лабораторном макете, задается преподавателем.
Многие МК-устройства требуют наличия только простейшей индикации типа ДА/НЕТ, ВКЛ/ВЫКЛ. Такая индикация реализуется на основе отдельных светодиодов.
Семисегментные индикаторы (ССИ) широко используются для отображения цифровой и буквенной информации. Семь отображающих элементов позволяют высвечивать десятичные и шестнадцатиричные цифры, некоторые буквы русского и латинского алфавитов, а также некоторые специальные знаки.
Существует два способа организации интерфейса МК с линейным дисплеем: статический и динамический.
Первый требует наличия на входах каждого индикатора специальных буферных регистров для хранения кодов выводимых символов. Естественно, что с увеличением разрядности дисплея возрастает число дополнительных микросхем, а следовательно, и стоимость МК-системы.
Второй способ (динамический) основан на том, что любой световой индикатор является инерционным прибором, а человеческому глазу отображаемая на дисплее информация, если ее обновлять с частотой примерно 20 раз в секунду, представляется неизменяемой.
Исходный текст программы на языке ассемблера имеет определенный формат. Каждая команда (и псевдокоманда) представляет собой четырехзвенной конструкции:
МЕТКА ОПЕРАЦИЯ ОПЕРАНДЫ КОММЕНТАРИЙ
Метка. В поле метки размещается символическое имя ячейки памяти, в которой хранится отмеченная команда или операнд. Метка представляет собой буквенно-цифровую комбинацию, начинающуюся с буквы. Метка всегда завершается двоеточием.
Псевдокоманды ассемблера не преобразуются в двоичные коды, а потому не могут иметь меток. Исключение составляют псевдокоманды резервирования памяти и определения данных (DS,DB,DW).
Операция. В поле операции записывается мнемоническое обозначение команды МК или псевдокоманды ассемблера, которое является сокращением (аббревиатурой) полного английского наименования выполняемого действия. Для МК51 используется строго определенный и ограниченный набор мнемонических кодов.
Операнды. В этом поле определяются операнды (или операнд), участвующие в операции. Команды ассемблера могут быть без-, одно- или двухоперандными. Операнды разделяются запятой.(,).
Операнд может быть задан непосредственно или в виде его адреса (прямого или косвенного).
Комментарий. Поле комментария может быть использовано программистом ля текстового или символического пояснения логической организации прикладной программы. Поле комментария полностью игнорируется ассемблером, а потому в нем допустимо использовать любые символы. По правилам языка ассемблера поле комментария начинается после точки с запятой (;).
Псевдокоманды ассемблера. Ассемблирующая программа транслирует исходную программу в объектные коды. При написании программы необходимо указать ей некоторые параметры: начальный адрес прикладной программы, конец ассемблируемой программы, форматы данных и т.п. Всю эту информацию программист вставляет в исходный текст своей прикладной программы в виде псевдокоманд (директив) ассемблера, которые только управляют процессом трансляции и не преобразуются в коды объектной программы.
Псевдокоманда ORG 10Н задает ассемблеру адрес ячейки памяти (10Н), в которой должна быть расположена следующая за ней команда прикладной программы.
Псевдокомандой EQU можно любому символическому имени, используемому в программе. Поставить в соответствие определенный операнд.
рийные интерфейсные контроллеры (PIC).