Главная » Просмотр файлов » Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012)

Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221), страница 7

Файл №1264221 Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012)) 7 страницаКочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221) страница 72021-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 7)

Для инструкций LD, ST, LDD, STD, LDS, STS, PUSH и POP необходимодобавить один цикл плюс по одному циклу для каждого ожидания.POPRdИнструкции работы с битамиМнемоника ОперандыLSLRdLSRRdROLRdRORRdASRRdSWAPRdBSETsBCLRsSBIP,bCBIP,bBSTRr,bBLDRd,bSECНетОписаниеОперацияФлагиRd(n+1)=Rd(n),Z,C,N,V,H,SRd(0)=0,C=Rd(7)Rd(n)=Rd(n+1),Логический сдвигZ,C,N,V,SRd(7)=0,вправоC=Rd(0)Rd(0)=C,Циклический сдвигRd(n+1)=Rd(n), Z,C,N,V,H,Sвлево через CC=Rd(7)Rd(7)=C,Циклический сдвигRd(n)=Rd(n+1), Z,C,N,V,Sвправо через CC=Rd(0)Арифметический Rd(n)=Rd(n+1),Z,C,N,V,Sсдвиг вправоn=0,...,6Rd(3..0) =NoneПерестановка тетрад Rd(7..4), Rd(7..4)= Rd(3..0)SREG(s)Установка флагаSREG(s) = 1Логический сдвигвлевоОчистка флагаУстановить битв портуОчистить битв портуСохранить битиз регистра в TЗагрузить битиз T в регистрУстановить флагпереноса37Циклы1111111SREG(s) = 0SREG(s)1I/O(P,b) = 1None2I/O(P,b) = 0None2T = Rr(b)T1Rd(b) = TNone1C =1C1Мнемоника ОперандыОписаниеОперацияФлагиЦиклыНетОчистить флагпереносаC=0C1НетУстановить флаготрицательногочислаN=1N1CLNНетОчистить флаготрицательногочислаN=0N1SEZНетУстановить флагнуляZ=1Z1CLZНетОчистить флаг нуляZ=0Z1SEIНетУстановить флагпрерыванийI=1I1CLIНетОчистить флагпрерыванийI=0I1SESНетУстановить флагчисла со знакомS=1S1CLNНетОчистить флаг числасо знакомS=0S1SEVНетУстановить флагпереполненияV=1V1CLVНетОчистить флагпереполненияV=0V1SETНетУстановить флаг TT=1T1CLTНетОчистить флаг TT=0T1SEHНетУстановить флагвнутреннегопереносаH=1H1CLHНетОчистить флаг внутреннего переносаH=0H1NOPНетНет операцииНетNone1НетСпать (уменьшитьэнергопотребление)СмотритеописаниеинструкцииNone1НетСброс сторожевоготаймераСмотритеописаниеинструкцииNone1CLCSENSLEEPWDRАссемблер не различает регистр символов.38Операнды могут быть следующих видов:Rd: Результирующий (и исходный) регистр в регистровом файлеRr: Исходный регистр в регистровом файлеb: Константа (3 бита), может быть константное выражениеs: Константа (3 бита), может быть константное выражениеP: Константа (56 бит), может быть константное выражениеK6; Константа (6 бит), может быть константное выражениеK8: Константа (8 бит), может быть константное выражениеk: Константа (размер зависит от инструкции), может быть константное выражениеq: Константа (6 бит), может быть константное выражениеRdl: R24, R26, R28, R30.

Для инструкций ADIW и SBIWX,Y,Z: Регистры косвенной адресации (X=R27:R26, Y=R29:R28,Z=R31:R30)Директивы ассемблераКомпилятор поддерживает ряд директив. Директивы не транслируются непосредственно в код. Вместо этого они используются дляуказания положения в программной памяти, определения макросов,инициализации памяти и т.д. Список директив приведен в табл. 1.Таблица 1ДирективаОписаниеBYTEЗарезервировать байты в ОЗУCSEGПрограммный сегментDBОпределить байты во флэш или EEPROMDEFНазначить регистру символическое имяDEVICEОпределить устройство для которого компилируется программаDSEGСегмент данныхDWОпределить слова во флэш или EEPROMENDM,Конец макросаENDMACROEQUУстановить постоянное выражениеESEGСегмент EEPROMEXITВыйти из файлаINCLUDEВложить другой файлLISTВключить генерацию листинга39Окончание табл. 1ДирективаОписаниеLISTMACВключить разворачивание макросов в листингеMACROНачало макросаNOLISTВыключить генерацию листингаORGУстановить положение в сегментеSETУстановить переменный символический эквивалент выраженияВсе директивы предваряются точкой.BYTE – Зарезервировать байты в ОЗУДиректива BYTE резервирует байты в ОЗУ.

Если вы хотитеиметь возможность ссылаться на выделенную область памяти, то директива BYTE должна быть предварена меткой. Директива принимает один обязательный параметр, который указывает количество выделяемых байт. Эта директива может использоваться только в сегменте данных (смотреть директивы CSEG и DSEG). Выделенныебайты не инициализируются.Синтаксис:МЕТКА: .BYTE выражениеПример:.DSEGvar1: .BYTE 1; резервирует 1 байт для var1table: .BYTE tab_size; резервирует tab_size байт.CSEGldi r30,low(var1); Загружает младший байт регистра Zldi r31,high(var1); Загружает старший байт регистра Zld r1,Z; Загружает VAR1 в регистр 1CSEG – Программный сегментДиректива CSEG определяет начало программного сегмента.Исходный файл может состоять из нескольких программных сегментов, которые объединяются в один программный сегмент при компиляции.

Программный сегмент является сегментом по умолчанию.Программные сегменты имеют свои собственные счетчики положения, которые считают не побайтно, а пословно. Директива ORG может быть использована для размещения кода и констант в необходимом месте сегмента. Директива CSEG не имеет параметров.40Синтаксис:.CSEGПример:.DSEG; Начало сегмента данныхvartab: .BYTE 4 ; Резервирует 4 байта в ОЗУ.CSEG; Начало кодового сегментаconst: .DW 2; Разместить константу 0x0002 в памяти программmov r1,r0 ; Выполнить действияDB – Определить байты во флэш или EEPROMДиректива DB резервирует необходимое количество байт в памяти программ или в EEPROM. Если вы хотите иметь возможностьссылаться на выделенную область памяти, то директива DB должнабыть предварена меткой.

Директива DB должна иметь хотя бы одинпараметр. Данная директива может быть размещена только в сегменте программ (CSEG) или в сегменте EEPROM (ESEG).Параметры, передаваемые директиве, – это последовательностьвыражений, разделенных запятыми. Каждое выражение должно бытьили числом в диапазоне (128...255), или в результате вычислениядолжно давать результат в этом же диапазоне, в противном случаечисло усекается до байта, причем БЕЗ выдачи предупреждений.Если директива получает более одного параметра и текущимявляется программный сегмент, то параметры упаковываются в слова(первый параметр – младший байт), и если число параметров нечетно, то последнее выражение будет усечено до байта и записано какслово со старшим байтом, равным нулю, даже если далее идет ещеодна директива DB.Синтаксис:МЕТКА: .DB список_выраженийПример:.CSEGconsts: .DB 0, 255, 0b01010101, -128, 0xaa.ESEGconst2: .DB 1,2,3DEF – Назначить регистру символическое имяДиректива DEF позволяет ссылаться на регистр через некотороесимволическое имя.

Назначенное имя может использоваться во всей41нижеследующей части программы для обращений к данному регистру. Регистр может иметь несколько различных имен. Символическоеимя может быть переназначено позднее в программе.Синтаксис:.DEF Символическое_имя = РегистрПример:.DEF temp=R16.DEF ior=R0.CSEGldi temp,0xf0 ; Загрузить 0xf0 в регистр temp (R16)in ior,0x3f ; Прочитать SREG в регистр ior (R0)eor temp,ior ; Регистры temp и ior складываются по искл. илиDEVICE – Определить устройство, для которого компилируется программаДиректива DEVICE позволяет указать, для какого устройствакомпилируется программа.

При использовании данной директивыкомпилятор выдаст предупреждение, если будет найдена инструкция,которую не поддерживает данный микроконтроллер. Также будет выдано предупреждение, если программный сегмент, либо сегментEEPROM превысят размер, допускаемый устройством. Если же директива не используется, то все инструкции считаются допустимыми,и отсутствуют ограничения на размер сегментов.Синтаксис:.DEVICE AT90S1200 |AT90S2313 | AT90S2323 | AT90S2333 |AT90S2343 | AT90S4414 | AT90S4433 | AT90S4434 | AT90S8515| AT90S8534 | AT90S8535 | ATtiny11 | ATtiny12 | ATtiny22 | ATmega603 | ATmega103 | .

. .Полный список поддерживаемых кристаллов в последней версии ассемблера доступен на сайте производителя[1]Пример:.DEVICE AT90S1200 ; Используется AT90S1200.CSEGpush r30 ; Эта инструкция вызовет предупреждение; поскольку AT90S1200 ее не имеетDSEG – Сегмент данныхДиректива DSEG определяет начало сегмента данных. Исходный файл может состоять из нескольких сегментов данных, которыеобъединяются в один сегмент при компиляции. Сегмент данных42обычно состоит только из директив BYTE и меток. Сегменты данныхимеют свои собственные побайтные счетчики положения. Директива ORG может быть использована для размещения переменных в необходимом месте ОЗУ.

Директива не имеет параметров.Синтаксис:.DSEGПример:.DSEG; Начало сегмента данныхvar1: .BYTE 1; зарезервировать 1 байт для var1table: .BYTE tab_size ; зарезервировать tab_size байт..CSEGldi r30,low(var1) ; Загрузить младший байт регистра Zldi r31,high(var1); Загрузить старший байт регистра Zld r1,Z; Загрузить var1 в регистр r1DW – Определить слова во флэш или EEPROMДиректива DW резервирует необходимое количество слов в памяти программ или в EEPROM.

Если вы хотите иметь возможностьссылаться на выделенную область памяти, то директива DW должнабыть предварена меткой. Директива DW должна иметь хотя бы одинпараметр. Данная директива может быть размещена только в сегменте программ (CSEG) или в сегменте EEPROM (ESEG).Параметры, передаваемые директиве, – это последовательностьвыражений, разделенных запятыми. Каждое выражение должно бытьили числом в диапазоне (32768…65535), или в результате вычисления должно давать результат в этом же диапазоне, в противном случае число усекается до слова, причем БЕЗ выдачи предупреждений.Синтаксис:МЕТКА: .DW expressionlistПример:.CSEGvarlist: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535.ESEGeevarlst: .DW 0,0xffff,10ENDMACRO – Конец макросаДиректива определяет конец макроопределения, и не принимает никаких параметров.

Для информации по определению макросовсмотрите директиву MACRO.43Синтаксис:.ENDMACROПример:.MACRO SUBI16; Начало определения макросаsubi r16,low(@0) ; Вычесть младший байт первогопараметраsbci r17,high(@0) ; Вычесть старший байт первогопараметра.ENDMACROEQU – Установить постоянное выражениеДиректива EQU присваивает метке значение. Эта метка можетпозднее использоваться в выражениях.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее