- •1) Комбинационная логика, основные элементы (и, или, не), их схемы на кмоп транзисторах.
- •Временная диаграмма работы сдвигового регистра.
- •6) Общая структура микроконтроллерного устройства, алу, программный счётчик.
- •Общая структура микроконтроллерного устройства (из интернета)
- •Программный счётчик.
- •7. Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
- •8. Прерывания, вектор прерываний.
- •9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
- •Команды логических операций.
- •Команды операций с битами.
- •Команды пересылки данных.
- •Команды передачи управления.
- •Команды управления системой.
- •10. Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.
- •Источники тактовой частоты
- •Управляющие регистры таймера
- •Прерывания таймера
- •3. Цифро-аналоговые преобразователи. Структурная схема цап. Параллельная схема суммирования токов. Последовательная схема суммирования токов.
- •Классификация ацп
- •5. Структурная схема встроенного аналого-цифрового преобразователя, его основные параметры. Настройка ацп, управляющие регистры. Прерывания по завершению цикла преобразования.
- •17. Передача данных с использованием асинхронного последо-вательного интерфейса spi. Схема организации spi интерфейса, сдвиговые регистры. Пакетная передача данных.
- •18) Интерфейс i2c. Протокол передачи данных, режимы работы. Основные преимущества и недостатки интерфейса.
9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
Язык ассемблера – система обозначений, используемая для представления в удобно читаемой форме программ, записанных в машинном коде. Команде языка ассмеблер один к одному соответствуют командам процессора. Фактически они представляют собой более удобную для человека символьную форму записи (мнемокоды) команд и их аргументов.
Кроме того, язык ассемблера позволяет использовать символические метки вместо адресов ячекк памяти, которые при ассмеблировании заменяются на вычисляемые ассемблером асболютные и относительные адреса, а также так называемые директивы (команды ассемблера, не переводимые в машинные команды процессора, выполняемые самим ассемблером). Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макрокоманды с параметрами.
Каждая модель (или семейство) процессоров имеет свой набор команд и соответствующий ему язык ассемблера, микроконтроллеры семействаAVR не являются исключением. Теперь рассмотрим подробнее синтаксис ассемблера AVRStudio 7.
Комментарии
Общее правило – чем подробнее описаны выполняемые команды, тем лучше. Обозначаются двумя способами - с помощью символа ; или //. Для объемных комментариев, занимающих несколько строчек, целесообразно использовать такую структуру: /* текст комментария */.
Операторы
Оператор .def позволяет присвоить любому регистру микроконтроллера некоторые осмысленное символьное имя. Например, если мы используем в качестве промежуточного хранилища регистр R16, намного проще присвоить ему имя Temp и в дальнейшем использовать уже его:
.defTemp = R16
Одному и тому же регистру можно присвоить несколько имен, но обратная операция недопустима.
Оператор .equ позволяет присвоить выражению или константе некоторую символьную метку. То есть, если какое-то число встречается в программе часто и нам понадобится его изменять, мы один раз меняем присвоенную ему метку вместо изменения всех чисел в тексте программы. Также с помощью этого оператора можно присвоить выражение. Примеры:
.equXTAL = 4000000 // определяем тактовую частоту контроллера в МГц
.equbaudrate = 9600 // задаемскорость передачи данных Бит/с
.equbauddriver = XTAL/(16*baudrate)-1 // вычисляемзначениеделителя
Оператор .include позволяет подключать в тело программы часть кода из другого текстового файла. Если необходимо подключить не весь файл, а только его часть, то нужно воспользоваться директивой .exit, дойдя до которой компилятор попросту выйдет из файла, забрав с собой только необходимый участок кода.
.macro – оператор макроподстановки. В языках ассемблера макрос – символьное имя, заменяемое при обработке препроцессором на последовательность программных инструкций. Он представляет собой последовательность команд, которые подставляются в нашу программу при вызове этого самого макроса.
Операнды
Программа для любого МК представляет собой последовательность команд, записанных в памяти программ. Большинство команд при выполнении изменяют содержимое одного или нескольких регистров общего назначения, регистров ввода/вывода или ячеек ОЗУ. Для обращения к различным областям адресного пространства памяти данных используются различные команды, реализующие, в свою очередь, различные способы адресации. Доступ к регистрам ввода/вывода осуществляется по их адресам, являющимися операндами команды.
Мнемоническая запись команды выглядит следующим образом: сначала идет непосредственно сама команда, затем пробел, затем следуют операнды. Некоторые команды не имеют (RETI,NOP) или имеют только один операнд (INC/DEC). Если же команда имеет два операнда, сначала указывают приёмник, затем источник, причем между ними должна стоять запятая.
SUBR16, R17 // из содержимого R16 нужно вычесть содержимое R17, результат окажется в R16
Практически каждая команда занимает одну ячейку программы;
AVR-ассемблер не различает буквенный регистр;
Каждая команда должна занимать отдельную строку;
Числе по умолчанию считаются десятеричными, двоичные числа как в языке Си: 0b00010101;
Типы ассемблерных команд
Команды логических операций;
Команды арифметических операций и команды сдвига;
Команды операций с битами;
Команды пересылки данных;
Команды передачи управления;
Команды управления системой.